<?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>99080</bug_id>
          
          <creation_ts>2012-10-11 09:10:41 -0700</creation_ts>
          <short_desc>MediaStream API: Implement RTCDataChannel</short_desc>
          <delta_ts>2012-10-16 01:05: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>WebCore Misc.</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>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>56459</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>ojan</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>740027</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-11 09:10:41 -0700</bug_when>
    <thetext>Introduce the WebCore implementation of RTCDataChannel according to &lt;http://dev.w3.org/2011/webrtc/editor/archives/20120920/webrtc.html#idl-def-DataChannel&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740054</commentid>
    <comment_count>1</comment_count>
      <attachid>168241</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-11 09:35:13 -0700</bug_when>
    <thetext>Created attachment 168241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740058</commentid>
    <comment_count>2</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-11 09:36:54 -0700</bug_when>
    <thetext>If the patch is on the large side I can split it, but I wanted to give the full picture first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740070</commentid>
    <comment_count>3</comment_count>
      <attachid>168244</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-11 09:48:43 -0700</bug_when>
    <thetext>Created attachment 168244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740141</commentid>
    <comment_count>4</comment_count>
      <attachid>168244</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-11 10:59:20 -0700</bug_when>
    <thetext>Comment on attachment 168244
Patch

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

This patch could use another iteration, but my comments are mostly just naming nits.

&gt; Source/WebCore/Modules/mediastream/RTCDataChannel.cpp:42
&gt; +PassRefPtr&lt;RTCDataChannel&gt; RTCDataChannel::create(ScriptExecutionContext* context, RTCPeerConnectionHandler* handler, String label, bool reliable, ExceptionCode&amp; ec)

String -&gt; const String&amp;

&gt; Source/WebCore/Modules/mediastream/RTCDataChannelEvent.idl:30
&gt; +       readonly attribute RTCDataChannel channel;

Bad indent

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:413
&gt; +PassRefPtr&lt;RTCDataChannel&gt; RTCPeerConnection::createDataChannel(String label, const Dictionary&amp; dataChannelDict, ExceptionCode&amp; ec)

dataChannelDict -&gt; options?

&gt; Source/WebCore/platform/mediastream/RTCDataChannelDescriptor.h:38
&gt; +    class Owner {

Typically we&apos;d call this a client rather than an owner.

Also, we&apos;d usually declare it as a top-level class &quot;RTCDataChannelClient&quot;

It&apos;s confusing for a RefCounted object to have an &quot;owner&quot;, which is why we tend not to use that term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740751</commentid>
    <comment_count>5</comment_count>
      <attachid>168244</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-12 02:32:24 -0700</bug_when>
    <thetext>Comment on attachment 168244
Patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/RTCDataChannel.cpp:42
&gt;&gt; +PassRefPtr&lt;RTCDataChannel&gt; RTCDataChannel::create(ScriptExecutionContext* context, RTCPeerConnectionHandler* handler, String label, bool reliable, ExceptionCode&amp; ec)
&gt; 
&gt; String -&gt; const String&amp;

Fixed.

&gt;&gt; Source/WebCore/Modules/mediastream/RTCDataChannelEvent.idl:30
&gt;&gt; +       readonly attribute RTCDataChannel channel;
&gt; 
&gt; Bad indent

Fixed.

&gt;&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:413
&gt;&gt; +PassRefPtr&lt;RTCDataChannel&gt; RTCPeerConnection::createDataChannel(String label, const Dictionary&amp; dataChannelDict, ExceptionCode&amp; ec)
&gt; 
&gt; dataChannelDict -&gt; options?

Fixed. dataChannelDict is used in the specification but options is much better.

&gt;&gt; Source/WebCore/platform/mediastream/RTCDataChannelDescriptor.h:38
&gt;&gt; +    class Owner {
&gt; 
&gt; Typically we&apos;d call this a client rather than an owner.
&gt; 
&gt; Also, we&apos;d usually declare it as a top-level class &quot;RTCDataChannelClient&quot;
&gt; 
&gt; It&apos;s confusing for a RefCounted object to have an &quot;owner&quot;, which is why we tend not to use that term.

Agree with that, I just reused the name from MediaStreamDescriptor. Do you want me to rename owner to client there as well in an followup patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740772</commentid>
    <comment_count>6</comment_count>
      <attachid>168386</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-12 03:04:27 -0700</bug_when>
    <thetext>Created attachment 168386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741053</commentid>
    <comment_count>7</comment_count>
      <attachid>168386</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-12 11:28:26 -0700</bug_when>
    <thetext>Comment on attachment 168386
Patch

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

This looks great.  We just need to make sure it still compiles w.r.t. the IDL parser change last night.

&gt; Source/WebCore/Modules/mediastream/RTCDataChannel.idl:28
&gt; +interface [
&gt; +    Conditional=MEDIA_STREAM,
&gt; +    EventTarget
&gt; +] RTCDataChannel {

We&apos;re working on making WebKitIDL more like WebIDL, so we might need to move these attributes before the keyword &quot;interface&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741054</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-12 11:29:39 -0700</bug_when>
    <thetext>&gt; I just reused the name from MediaStreamDescriptor. Do you want me to rename owner to client there as well in an followup patch?

Yeah, that&apos;s a good idea.  Sorry for missing that earlier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741816</commentid>
    <comment_count>9</comment_count>
      <attachid>168639</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-15 00:39:31 -0700</bug_when>
    <thetext>Created attachment 168639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741819</commentid>
    <comment_count>10</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-15 00:40:52 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 168386 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=168386&amp;action=review
&gt; 
&gt; This looks great.  We just need to make sure it still compiles w.r.t. the IDL parser change last night.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCDataChannel.idl:28
&gt; &gt; +interface [
&gt; &gt; +    Conditional=MEDIA_STREAM,
&gt; &gt; +    EventTarget
&gt; &gt; +] RTCDataChannel {
&gt; 
&gt; We&apos;re working on making WebKitIDL more like WebIDL, so we might need to move these attributes before the keyword &quot;interface&quot;

Fixed this, and only this, in the latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741827</commentid>
    <comment_count>11</comment_count>
      <attachid>168639</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-15 00:51:54 -0700</bug_when>
    <thetext>Comment on attachment 168639
Patch

Great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741830</commentid>
    <comment_count>12</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-15 00:56:49 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 168639 [details])
&gt; Great.

Thanks :)
I tend to worry that something else have sneaked into the patch and therefore wait for the buildbots before flipping the CQ+ flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742248</commentid>
    <comment_count>13</comment_count>
      <attachid>168639</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-15 11:56:37 -0700</bug_when>
    <thetext>Comment on attachment 168639
Patch

Rejecting attachment 168639 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/14292799</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742507</commentid>
    <comment_count>14</comment_count>
      <attachid>168639</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-15 15:21:10 -0700</bug_when>
    <thetext>Comment on attachment 168639
Patch

Clearing flags on attachment: 168639

Committed r131372: &lt;http://trac.webkit.org/changeset/131372&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168241</attachid>
            <date>2012-10-11 09:35:13 -0700</date>
            <delta_ts>2012-10-11 09:48:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99080-20121011183409.patch</filename>
            <type>text/plain</type>
            <size>55975</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGFjNzViYTA5MmM1OWI4
MTFlNjRmNGZiMzgzN2JiZDI1ZTBlNmU3NS4uZTJmY2E4YmIzYzNjNzVlYjY2ZjNlNTgxMDZlNzU4
NWM2MTEwYWQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxMi0xMC0xMSAgVG9t
bXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVh
bSBBUEk6IEltcGxlbWVudCBSVENEYXRhQ2hhbm5lbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkwODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgUlRDRGF0YUNoYW5u
ZWwgd2hpY2ggaXMgYSBwaXBlIGZvciBzZW5kaW5nIGRhdGEgYmV0d2VlbiB0d28gUlRDUGVlckNv
bm5lY3Rpb25zLgorICAgICAgICBTaW5jZSB0aGUgZGF0YSBjaGFubmVsIGJlbG9uZ3MgdG8gYSBw
ZWVyIGNvbm5lY3Rpb24gb2JqZWN0IEkgaGF2ZSByZXVzZWQgcGFydCBvZiBpdHMgaW5mcmFzdHJ1
Y3R1cmUuCisKKyAgICAgICAgTm90IGN1cnJlbnRseSB0ZXN0YWJsZS4gTXkgbmV4dCBwYXRjaCB3
aWxsIGFkZCB0aGUgY2hyb21pdW0gV2ViS2l0IGZ1bmN0aW9uYWxpdHksIHRvZ2V0aGVyIHdpdGgg
bW9ja3MgYW5kIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWw6OlJUQ0RhdGFDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
Ojp+UlRDRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6Omxh
YmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpyZWxpYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSVENEYXRhQ2hhbm5lbDo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWw6OmJpbmFyeVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWw6OnNldEJpbmFyeVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6
OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmNsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpyZWFkeVN0YXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGF0YUFycml2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWw6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsOjpkZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjppbnRl
cmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpldmVudFRhcmdldERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWw6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEV2ZW50OjpSVENEYXRhQ2hhbm5lbEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRXZlbnQ6On5SVENEYXRhQ2hhbm5l
bEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxFdmVudDo6aW50ZXJmYWNlTmFtZSk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENEYXRhQ2hhbm5lbEV2ZW50KToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVEYXRhQ2hhbm5l
bCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0
aW9uOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6ZGlkQWRk
UmVtb3RlRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246
OnN0b3ApOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb24pOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaW46CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjp+UlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxEZXNjcmlwdG9yOjpkYXRhQXJyaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I6OmVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcik6CisgICAgICAgIChPd25lcik6
CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6Ok93bmVyOjp+T3du
ZXIpOgorICAgICAgICAoRXh0cmFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsRGVzY3JpcHRvcjo6RXh0cmFEYXRhOjp+RXh0cmFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6b3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpzZXRPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I6OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsRGVzY3JpcHRvcjo6cmVsaWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxEZXNjcmlwdG9yOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsRGVzY3JpcHRvcjo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpzZXRCdWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OmV4dHJhRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OnNldEV4dHJhRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNs
aWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06Om9wZW5EYXRhQ2hhbm5lbCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
OjpzZW5kU3RyaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDaHJvbWl1bTo6c2VuZFJhd0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmNsb3NlRGF0YUNoYW5uZWwpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9t
aXVtLmg6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bSk6CisKIDIw
MTItMTAtMDggIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPgogCiAg
ICAgICAgIFtRdF0gTWFrZSBSZW5kZXJUaGVtZVFTdHlsZS9TY3JvbGxiYXJUaGVtZVFTdHlsZSBj
b21waWxlIHdpdGhvdXQgUVN0eWxlL1F0V2lkZ2V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAx
NWQxOGY3ZWUzNTI4NmU0NTA1MTJhOGQ2Y2IyNmZjODNhNDMyYTlmLi44NGViZjY5N2VmZjdmNGQw
ZDY1MDlkNzEzOTYzOWUyOTEwZmIxZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjI0LDYg
KzIyNCw4IEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwKICAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5pZGwKICAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
RXZlbnQuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFcnJvckNhbGxiYWNrLmlkbAog
ICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmlkbAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRXZlbnQuaWRsCkBAIC04NjIsNiArODY0LDggQEAg
U0VUKFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFja0xpc3QuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVh
bS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuY3BwCisgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKKyAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENJY2VDYW5kaWRhdGUuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRh
dGVFdmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cApAQCAtMTk1OCw2ICsxOTYyLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uMDBIYW5kbGVyLmNwcAorICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsRGVzY3JpcHRvci5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5k
aWRhdGVEZXNjcmlwdG9yLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVz
Y3JpcHRpb25EZXNjcmlwdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
MGI1NDBiYjQxMzcwNTgwNDU0MTg0NzA2NmU3OTVhNTkyOWYzNzRmNC4uZGEzYjhmY2M4OWY0ODgw
NjdhNmFjYWQzMTJkNTNhZWY4YWRiMjk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC02MjcsNiArNjI3LDEwIEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSR0JDb2xvci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNSR0JDb2xvci5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDRGF0YUNo
YW5uZWwuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDRGF0YUNoYW5uZWwuaCBc
CisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwIFwKKwlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDRGF0YUNoYW5uZWxFdmVudC5oIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTUlRDRXJyb3JDYWxsYmFjay5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNSVENFcnJvckNhbGxiYWNrLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNSVENJY2VDYW5kaWRhdGUuY3BwIFwKQEAgLTEyMzYsNiArMTI0MCw4IEBAIGRvbV9iaW5kaW5n
X2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvckNhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFt
L05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5pZGwgXAogCSQoV2ViQ29yZSkvTW9k
dWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRXJyb3JDYWxsYmFjay5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRXZlbnQuaWRsIFwKQEAgLTE5MzQsNiArMTk0MCwx
MCBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmggXAor
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmggXAor
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxF
dmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Vycm9yQ2Fs
bGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5k
aWRhdGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNh
bmRpZGF0ZS5oIFwKQEAgLTQ2MDcsOSArNDYxNywxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDBIYW5k
bGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uMDBIYW5kbGVyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVE
ZXNjcmlwdG9yLmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Nlc3Np
b25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNs
aWVudC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM1YTU5NThkNmI2YzIwMmJmMGY0OGM1MDli
MjM0NDZjYjQ2NGRmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCkBAIC0wLDAgKzEsMjY3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWwuaCIKKworI2luY2x1ZGUgIkJsb2IuaCIKKyNpbmNs
dWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJNZXNz
YWdlRXZlbnQuaCIKKyNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKKyNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVy
Lmg+CisjaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1Bhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
KiBoYW5kbGVyLCBTdHJpbmcgbGFiZWwsIGJvb2wgcmVsaWFibGUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIEFTU0VSVChoYW5kbGVyKTsKKyAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGRh
dGFDaGFubmVsID0gY3JlYXRlKGNvbnRleHQsIGhhbmRsZXIsIFJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvcjo6Y3JlYXRlKGxhYmVsLCByZWxpYWJsZSkpOworICAgIGlmICghaGFuZGxlci0+b3BlbkRh
dGFDaGFubmVsKGRhdGFDaGFubmVsLT5kZXNjcmlwdG9yKCkpKSB7CisgICAgICAgIGVjID0gTk9U
X1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gZGF0
YUNoYW5uZWwucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBSVENE
YXRhQ2hhbm5lbDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlciogaGFuZGxlciwgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3I+IGRlc2NyaXB0b3IpCit7CisgICAgQVNTRVJUKGhhbmRsZXIpOworICAgIEFTU0VS
VChkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0RhdGFDaGFubmVsKGNv
bnRleHQsIGhhbmRsZXIsIGRlc2NyaXB0b3IpKTsKK30KKworUlRDRGF0YUNoYW5uZWw6OlJUQ0Rh
dGFDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlciogaGFuZGxlciwgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+
IGRlc2NyaXB0b3IpCisgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKKyAg
ICAsIG1fc3RvcHBlZChmYWxzZSkKKyAgICAsIG1fZGVzY3JpcHRvcihkZXNjcmlwdG9yKQorICAg
ICwgbV9iaW5hcnlUeXBlKEJpbmFyeVR5cGVBcnJheUJ1ZmZlcikKKyAgICAsIG1faGFuZGxlciho
YW5kbGVyKQoreworICAgIG1fZGVzY3JpcHRvci0+c2V0T3duZXIodGhpcyk7Cit9CisKK1JUQ0Rh
dGFDaGFubmVsOjp+UlRDRGF0YUNoYW5uZWwoKQoreworICAgIG1fZGVzY3JpcHRvci0+c2V0T3du
ZXIoMCk7Cit9CisKK1N0cmluZyBSVENEYXRhQ2hhbm5lbDo6bGFiZWwoKSBjb25zdAoreworICAg
IHJldHVybiBtX2Rlc2NyaXB0b3ItPmxhYmVsKCk7Cit9CisKK2Jvb2wgUlRDRGF0YUNoYW5uZWw6
OnJlbGlhYmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kZXNjcmlwdG9yLT5yZWxpYWJsZSgp
OworfQorCitTdHJpbmcgUlRDRGF0YUNoYW5uZWw6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAg
IHN3aXRjaCAobV9kZXNjcmlwdG9yLT5yZWFkeVN0YXRlKCkpIHsKKyAgICBjYXNlIFJUQ0RhdGFD
aGFubmVsRGVzY3JpcHRvcjo6UmVhZHlTdGF0ZUNvbm5lY3Rpbmc6CisgICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoImNvbm5lY3RpbmciKTsKKyAgICBjYXNlIFJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvcjo6UmVhZHlTdGF0ZU9wZW46CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm9wZW4i
KTsKKyAgICBjYXNlIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6UmVhZHlTdGF0ZUNsb3Npbmc6
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImNsb3NpbmciKTsKKyAgICBjYXNlIFJUQ0Rh
dGFDaGFubmVsRGVzY3JpcHRvcjo6UmVhZHlTdGF0ZUNsb3NlZDoKKyAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgiY2xvc2VkIik7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuICIiOworfQorCit1bnNpZ25lZCBsb25nIFJUQ0RhdGFDaGFubmVsOjpidWZm
ZXJlZEFtb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGVzY3JpcHRvci0+YnVmZmVyZWRB
bW91bnQoKTsKK30KKworU3RyaW5nIFJUQ0RhdGFDaGFubmVsOjpiaW5hcnlUeXBlKCkgY29uc3QK
K3sKKyAgICBzd2l0Y2ggKG1fYmluYXJ5VHlwZSkgeworICAgIGNhc2UgQmluYXJ5VHlwZUJsb2I6
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImJsb2IiKTsKKyAgICBjYXNlIEJpbmFyeVR5
cGVBcnJheUJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYXJyYXlidWZmZXIi
KTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0cmluZygp
OworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpzZXRCaW5hcnlUeXBlKGNvbnN0IFN0cmluZyYg
YmluYXJ5VHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKGJpbmFyeVR5cGUgPT0g
ImJsb2IiKQorICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgIGVsc2UgaWYgKGJp
bmFyeVR5cGUgPT0gImFycmF5YnVmZmVyIikKKyAgICAgICAgbV9iaW5hcnlUeXBlID0gQmluYXJ5
VHlwZUFycmF5QnVmZmVyOworICAgIGVsc2UKKyAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VS
UjsKK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIGRhdGEsIEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX2Rlc2NyaXB0b3ItPnJlYWR5U3RhdGUoKSAh
PSBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVPcGVuKSB7CisgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFt
X2hhbmRsZXItPnNlbmRTdHJpbmdEYXRhKGRlc2NyaXB0b3IoKSwgZGF0YSkpIHsKKyAgICAgICAg
Ly8gRklYTUU6IERlY2lkZSB3aGF0IHRoZSByaWdodCBleGNlcHRpb24gaGVyZSBpcy4KKyAgICAg
ICAgZWMgPSBTWU5UQVhfRVJSOworICAgIH0KK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbDo6c2Vu
ZChQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBwcnBEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBpZiAobV9kZXNjcmlwdG9yLT5yZWFkeVN0YXRlKCkgIT0gUlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yOjpSZWFkeVN0YXRlT3BlbikgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJS
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRh
ID0gcHJwRGF0YTsKKworICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gZGF0YS0+Ynl0ZUxlbmd0aCgp
OworICAgIGlmICghZGF0YUxlbmd0aCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgY2hh
ciogZGF0YVBvaW50ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS0+ZGF0YSgpKTsK
KworICAgIGlmICghbV9oYW5kbGVyLT5zZW5kUmF3RGF0YShkZXNjcmlwdG9yKCksIGRhdGFQb2lu
dGVyLCBkYXRhTGVuZ3RoKSkgeworICAgICAgICAvLyBGSVhNRTogRGVjaWRlIHdoYXQgdGhlIHJp
Z2h0IGV4Y2VwdGlvbiBoZXJlIGlzLgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgfQor
fQorCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpzZW5kKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3
PiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFy
cmF5QnVmZmVyKGRhdGEtPmJ1ZmZlcigpKTsKKyAgICBzZW5kKGFycmF5QnVmZmVyLnJlbGVhc2Uo
KSwgZWMpOworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpzZW5kKFBhc3NSZWZQdHI8QmxvYj4g
ZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAg
IGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWw6OmNsb3Nl
KCkKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hhbmRs
ZXItPmNsb3NlRGF0YUNoYW5uZWwoZGVzY3JpcHRvcigpKTsKK30KKwordm9pZCBSVENEYXRhQ2hh
bm5lbDo6cmVhZHlTdGF0ZUNoYW5nZWQoKQoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIHN3aXRjaCAobV9kZXNjcmlwdG9yLT5yZWFkeVN0YXRlKCkpIHsKKyAg
ICBjYXNlIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6UmVhZHlTdGF0ZU9wZW46CisgICAgICAg
IGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkub3BlbkV2ZW50LCBmYWxz
ZSwgZmFsc2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3I6OlJlYWR5U3RhdGVDbG9zZWQ6CisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBSVENE
YXRhQ2hhbm5lbDo6ZGF0YUFycml2ZWQoY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIGlmICht
X3N0b3BwZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2
ZW50OjpjcmVhdGUodGV4dCkpOworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpkYXRhQXJyaXZl
ZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3sKKyAgICBpZiAobV9zdG9w
cGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9iaW5hcnlUeXBlID09IEJpbmFyeVR5
cGVCbG9iKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaWYgKG1fYmluYXJ5VHlwZSA9PSBCaW5hcnlUeXBlQXJyYXlCdWZmZXIpIHsK
KyAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGRhdGEsIGRhdGFMZW5ndGgpOworICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6
Y3JlYXRlKGJ1ZmZlci5yZWxlYXNlKCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbDo6ZXJyb3IoKQor
eworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7
Cit9CisKK1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvciogUlRDRGF0YUNoYW5uZWw6OmRlc2NyaXB0
b3IoKQoreworICAgIHJldHVybiBtX2Rlc2NyaXB0b3IuZ2V0KCk7Cit9CisKK2NvbnN0IEF0b21p
Y1N0cmluZyYgUlRDRGF0YUNoYW5uZWw6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yUlRDRGF0YUNoYW5uZWw7Cit9CisKK1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIFJUQ0RhdGFDaGFubmVsOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworfQorCit2
b2lkIFJUQ0RhdGFDaGFubmVsOjpzdG9wKCkKK3sKKyAgICBtX3N0b3BwZWQgPSB0cnVlOworICAg
IG1faGFuZGxlciA9IDA7CisgICAgbV9kZXNjcmlwdG9yLT5zZXRPd25lcigwKTsKKyAgICBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgPSAwOworfQorCitFdmVudFRhcmdldERhdGEqIFJUQ0RhdGFD
aGFubmVsOjpldmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERh
dGE7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogUlRDRGF0YUNoYW5uZWw6OmVuc3VyZUV2ZW50VGFy
Z2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MTAzOTFjOGUzMzA3NTQxZmM5N2EwM2I0YmI3YjNhMzcwMmRjZTIxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbC5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ0Rh
dGFDaGFubmVsX2gKKyNkZWZpbmUgUlRDRGF0YUNoYW5uZWxfaAorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQmxvYjsK
K2NsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKKworY2xhc3MgUlRDRGF0YUNoYW5uZWwg
OiBwdWJsaWMgUmVmQ291bnRlZDxSVENEYXRhQ2hhbm5lbD4sIHB1YmxpYyBFdmVudFRhcmdldCwg
cHVibGljIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6T3duZXIgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciosIFN0cmluZyBsYWJlbCwgYm9vbCByZWxp
YWJsZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFu
bmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlciosIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPik7CisgICAgflJUQ0Rh
dGFDaGFubmVsKCk7CisKKyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKKworICAgIGJvb2wgcmVs
aWFibGUoKSBjb25zdDsKKworICAgIFN0cmluZyByZWFkeVN0YXRlKCkgY29uc3Q7CisKKyAgICB1
bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CisKKyAgICBTdHJpbmcgYmluYXJ5
VHlwZSgpIGNvbnN0OworICAgIHZvaWQgc2V0QmluYXJ5VHlwZShjb25zdCBTdHJpbmcmLCBFeGNl
cHRpb25Db2RlJik7CisKKyAgICB2b2lkIHNlbmQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZvaWQgc2VuZChQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZvaWQgc2VuZChQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4sIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2b2lkIHNlbmQoUGFzc1JlZlB0cjxCbG9iPiwgRXhjZXB0aW9uQ29kZSYp
OworCisgICAgdm9pZCBjbG9zZSgpOworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihvcGVuKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsK
KyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsb3NlKTsKKyAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG1lc3NhZ2UpOworCisgICAgUlRDRGF0YUNoYW5uZWxE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yKCk7CisgICAgdm9pZCBzdG9wKCk7CisKKyAgICAvLyBFdmVu
dFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB1c2luZyBSZWZDb3Vu
dGVkPFJUQ0RhdGFDaGFubmVsPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8UlRDRGF0YUNo
YW5uZWw+OjpkZXJlZjsKKworcHJpdmF0ZToKKyAgICBSVENEYXRhQ2hhbm5lbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiwgUGFzc1JlZlB0cjxSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I+KTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVh
bCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOworICAgIHZpcnR1YWwgRXZlbnRU
YXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVm
RXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJn
ZXQoKSB7IGRlcmVmKCk7IH0KKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Owor
CisgICAgLy8gUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpPd25lcgorICAgIHZpcnR1YWwgdm9p
ZCByZWFkeVN0YXRlQ2hhbmdlZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkYXRhQXJy
aXZlZChjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YUFycml2
ZWQoY29uc3QgY2hhciosIHNpemVfdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGVycm9y
KCkgT1ZFUlJJREU7CisKKyAgICBib29sIG1fc3RvcHBlZDsKKyAgICBSZWZQdHI8UlRDRGF0YUNo
YW5uZWxEZXNjcmlwdG9yPiBtX2Rlc2NyaXB0b3I7CisKKyAgICBlbnVtIEJpbmFyeVR5cGUgewor
ICAgICAgICBCaW5hcnlUeXBlQmxvYiwKKyAgICAgICAgQmluYXJ5VHlwZUFycmF5QnVmZmVyCisg
ICAgfTsKKyAgICBCaW5hcnlUeXBlIG1fYmluYXJ5VHlwZTsKKworICAgIC8vIE5vdCBvd25lZCBi
eSB0aGlzIGNsYXNzLgorICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogbV9oYW5kbGVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2VuZGlmIC8vIFJUQ0RhdGFDaGFubmVsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWZlNzQwNjM5MmMwZWQ1OGM1MThlMDc1MGE1ZTM0ZjcyOWNkMTFjZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaWRs
CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBtZWRpYXN0cmVhbSB7CisK
KyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAg
ICAgIEV2ZW50VGFyZ2V0CisgICAgXSBSVENEYXRhQ2hhbm5lbCB7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIHJlbGlhYmxlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJl
YWR5U3RhdGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGJ1ZmZl
cmVkQW1vdW50OworCisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgYmluYXJ5VHlwZQorICAg
ICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgICAgIHZvaWQgc2Vu
ZChpbiBBcnJheUJ1ZmZlciBkYXRhKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CisgICAgICAgIHZvaWQgc2VuZChpbiBBcnJheUJ1ZmZlclZpZXcgZGF0YSkKKyAgICAgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHNlbmQoaW4gQmxvYiBkYXRhKQor
ICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgc2VuZChpbiBE
T01TdHJpbmcgZGF0YSkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAg
ICAgIHZvaWQgY2xvc2UoKTsKKworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm9w
ZW47CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7CisgICAgICAgIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2xvc2U7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9ubWVzc2FnZTsKKworICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAg
ICAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsK
KyAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1
c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2ZW50
KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9OworCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjI3MTM1Yjc0ZDFiODA3MWM2MjhhMzFhMWIwOTgz
NjBhM2ZiOWNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxFdmVu
dC5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Bhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxFdmVudD4gUlRDRGF0YUNoYW5uZWxFdmVudDo6Y3Jl
YXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0RhdGFDaGFubmVsRXZlbnQpOwor
fQorCitQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRXZlbnQ+IFJUQ0RhdGFDaGFubmVsRXZlbnQ6
OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNoYW5uZWwpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBSVENEYXRhQ2hhbm5lbEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgY2hhbm5lbCkpOworfQorCisKK1JUQ0RhdGFDaGFubmVsRXZlbnQ6OlJUQ0RhdGFD
aGFubmVsRXZlbnQoKQoreworfQorCitSVENEYXRhQ2hhbm5lbEV2ZW50OjpSVENEYXRhQ2hhbm5l
bEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4gY2hhbm5lbCkKKyAgICA6IEV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSkKKyAgICAsIG1fY2hhbm5lbChjaGFubmVsKQor
eworfQorCitSVENEYXRhQ2hhbm5lbEV2ZW50Ojp+UlRDRGF0YUNoYW5uZWxFdmVudCgpCit7Cit9
CisKK1JUQ0RhdGFDaGFubmVsKiBSVENEYXRhQ2hhbm5lbEV2ZW50OjpjaGFubmVsKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jaGFubmVsLmdldCgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVy
biBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yUlRDRGF0YUNoYW5uZWxFdmVudDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjA4Y2I3OTkyZWE3ODg2ZDE0OTg0MzE0MTI0YjVj
ZWE5YWUxNzRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBSVENEYXRhQ2hhbm5lbEV2ZW50X2gKKyNkZWZpbmUgUlRDRGF0YUNoYW5u
ZWxFdmVudF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRXZlbnQu
aCIKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJUQ0RhdGFDaGFubmVs
RXZlbnQgOiBwdWJsaWMgRXZlbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflJUQ0RhdGFDaGFu
bmVsRXZlbnQoKTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRXZlbnQ+
IGNyZWF0ZSgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+KTsKKworICAgIFJUQ0RhdGFDaGFubmVs
KiBjaGFubmVsKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50
ZXJmYWNlTmFtZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFJUQ0RhdGFDaGFubmVsRXZlbnQo
KTsKKyAgICBSVENEYXRhQ2hhbm5lbEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4p
OworCisgICAgUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBtX2NoYW5uZWw7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5k
aWYgLy8gUlRDRGF0YUNoYW5uZWxFdmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYTc2NWE3MjY5YTEzNGVmMDY2N2RmZDcwZjEwYTQ0YWJlYTYyNGJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2
ZW50LmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgZXZlbnRzIHsK
KworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAg
ICBdIFJUQ0RhdGFDaGFubmVsRXZlbnQgOiBFdmVudCB7CisgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFJUQ0RhdGFDaGFubmVsIGNoYW5uZWw7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApp
bmRleCBiOTgxMWFkZDgwMjM0MmY4ZjkzMmQyNDM0MjAyMmI4NTZmNjcwNzQzLi4wZTZiNjUwOTkw
OTBhODI0NTU5NTg0YjMwMDA3NWM3ODYwZWU0OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApAQCAtNDMs
NiArNDMsOCBAQAogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHNJbXBsLmgiCiAjaW5jbHVkZSAi
TWVkaWFTdHJlYW1FdmVudC5oIgogI2luY2x1ZGUgIlJUQ0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNs
dWRlICJSVENEYXRhQ2hhbm5lbC5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsRXZlbnQuaCIK
ICNpbmNsdWRlICJSVENFcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRl
LmgiCiAjaW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oIgpAQCAtNDA4LDYgKzQx
MCwyMiBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpnZXRTdGF0cyhQYXNzUmVmUHRyPFJUQ1N0
YXRzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUAogICAgIG1fcGVlckhhbmRsZXItPmdldFN0
YXRzKHN0YXRzUmVxdWVzdC5yZWxlYXNlKCkpOwogfQogCitQYXNzUmVmUHRyPFJUQ0RhdGFDaGFu
bmVsPiBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlRGF0YUNoYW5uZWwoU3RyaW5nIGxhYmVsLCBj
b25zdCBEaWN0aW9uYXJ5JiBkYXRhQ2hhbm5lbERpY3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gUmVhZHlTdGF0ZUNsb3NlZCkgeworICAgICAgICBlYyA9
IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBib29s
IHJlbGlhYmxlID0gdHJ1ZTsKKyAgICBkYXRhQ2hhbm5lbERpY3QuZ2V0KEFTQ0lJTGl0ZXJhbCgi
cmVsaWFibGUiKSwgcmVsaWFibGUpOworICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbD4gY2hhbm5l
bCA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3Bl
ZXJIYW5kbGVyLmdldCgpLCBsYWJlbCwgcmVsaWFibGUsIGVjKTsKKyAgICBpZiAoZWMpCisgICAg
ICAgIHJldHVybiAwOworICAgIG1fZGF0YUNoYW5uZWxzLmFwcGVuZChjaGFubmVsKTsKKyAgICBy
ZXR1cm4gY2hhbm5lbC5yZWxlYXNlKCk7Cit9CisKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmNs
b3NlKEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gUmVhZHlT
dGF0ZUNsb3NpbmcgfHwgbV9yZWFkeVN0YXRlID09IFJlYWR5U3RhdGVDbG9zZWQpIHsKQEAgLTQx
NSw5ICs0MzMsMTAgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6Y2xvc2UoRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBtX3BlZXJIYW5kbGVyLT5zdG9w
KCk7CisKICAgICBjaGFuZ2VJY2VTdGF0ZShJY2VTdGF0ZUNsb3NlZCk7CiAgICAgY2hhbmdlUmVh
ZHlTdGF0ZShSZWFkeVN0YXRlQ2xvc2VkKTsKLSAgICBzdG9wKCk7CiB9CiAKIHZvaWQgUlRDUGVl
ckNvbm5lY3Rpb246Om5lZ290aWF0aW9uTmVlZGVkKCkKQEAgLTQ3OCw2ICs0OTcsMTkgQEAgdm9p
ZCBSVENQZWVyQ29ubmVjdGlvbjo6ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFtRGVz
Y3JpcHRvciogc3RyZWFtRGVzY3IKICAgICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3Zlc3RyZWFtRXZlbnQsIGZhbHNlLCBmYWxzZSwgc3Ry
ZWFtLnJlbGVhc2UoKSkpOwogfQogCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpkaWRBZGRSZW1v
dGVEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gY2hhbm5l
bERlc2NyaXB0b3IpCit7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXND
b250ZXh0VGhyZWFkKCkpOworCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBSZWFkeVN0YXRlQ2xv
c2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNoYW5u
ZWwgPSBSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9w
ZWVySGFuZGxlci5nZXQoKSwgY2hhbm5lbERlc2NyaXB0b3IpOworICAgIG1fZGF0YUNoYW5uZWxz
LmFwcGVuZChjaGFubmVsKTsKKworICAgIGRpc3BhdGNoRXZlbnQoUlRDRGF0YUNoYW5uZWxFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhY2hhbm5lbEV2ZW50LCBmYWxzZSwgZmFsc2UsIGNo
YW5uZWwucmVsZWFzZSgpKSk7Cit9CisKIGNvbnN0IEF0b21pY1N0cmluZyYgUlRDUGVlckNvbm5l
Y3Rpb246OmludGVyZmFjZU5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBldmVudE5hbWVzKCku
aW50ZXJmYWNlRm9yUlRDUGVlckNvbm5lY3Rpb247CkBAIC00OTAsMTMgKzUyMiwxNyBAQCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBSVENQZWVyQ29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0CiAKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnN0b3AoKQogeworICAgIGlm
IChtX3JlYWR5U3RhdGUgIT0gUmVhZHlTdGF0ZUNsb3NlZCkKKyAgICAgICAgbV9wZWVySGFuZGxl
ci0+c3RvcCgpOworCisgICAgbV9wZWVySGFuZGxlci5jbGVhcigpOworCiAgICAgbV9pY2VTdGF0
ZSA9IEljZVN0YXRlQ2xvc2VkOwogICAgIG1fcmVhZHlTdGF0ZSA9IFJlYWR5U3RhdGVDbG9zZWQ7
CiAKLSAgICBpZiAobV9wZWVySGFuZGxlcikgewotICAgICAgICBtX3BlZXJIYW5kbGVyLT5zdG9w
KCk7Ci0gICAgICAgIG1fcGVlckhhbmRsZXIuY2xlYXIoKTsKLSAgICB9CisgICAgVmVjdG9yPFJl
ZlB0cjxSVENEYXRhQ2hhbm5lbD4gPjo6aXRlcmF0b3IgaSA9IG1fZGF0YUNoYW5uZWxzLmJlZ2lu
KCk7CisgICAgZm9yICg7IGkgIT0gbV9kYXRhQ2hhbm5lbHMuZW5kKCk7ICsraSkKKyAgICAgICAg
KCppKS0+c3RvcCgpOwogfQogCiBFdmVudFRhcmdldERhdGEqIFJUQ1BlZXJDb25uZWN0aW9uOjpl
dmVudFRhcmdldERhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IGE3N2FlZjI2ZGIwMjljZTk4ZTQ5MWQ1
MzQyNDFhZjk2M2IxN2FlYmUuLmM3ZjliOTEwZjgyMTc0YmI0ZGNkYmU4Y2MwNTNjZjkxNWExYzk5
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgTWVkaWFDb25zdHJhaW50czsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2s7CiBjbGFzcyBS
VENDb25maWd1cmF0aW9uOworY2xhc3MgUlRDRGF0YUNoYW5uZWw7CiBjbGFzcyBSVENFcnJvckNh
bGxiYWNrOwogY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOwogY2xhc3MgUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uQ2FsbGJhY2s7CkBAIC04OCw2ICs4OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Z2V0U3RhdHMoUGFzc1JlZlB0cjxSVENTdGF0c0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gc2VsZWN0b3IpOwogCisgICAgUGFzc1JlZlB0cjxS
VENEYXRhQ2hhbm5lbD4gY3JlYXRlRGF0YUNoYW5uZWwoU3RyaW5nIGxhYmVsLCBjb25zdCBEaWN0
aW9uYXJ5JiBkYXRhQ2hhbm5lbERpY3QsIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgIHZvaWQgY2xv
c2UoRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
UihuZWdvdGlhdGlvbm5lZWRlZCk7CkBAIC05Nyw2ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgREVG
SU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhZGRzdHJlYW0pOwogICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIocmVtb3Zlc3RyZWFtKTsKICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKGljZWNoYW5nZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihkYXRhY2hhbm5lbCk7CiAKICAgICAvLyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
bGllbnQKICAgICB2aXJ0dWFsIHZvaWQgbmVnb3RpYXRpb25OZWVkZWQoKSBPVkVSUklERTsKQEAg
LTEwNSw2ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljZVN0
YXRlKEljZVN0YXRlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlU3Ry
ZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlbW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoUGFzc1Jl
ZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KSBPVkVSUklERTsKIAogICAgIC8vIEV2ZW50
VGFyZ2V0CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBj
b25zdCBPVkVSUklERTsKQEAgLTEzNyw2ICsxNDIsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxN
ZWRpYVN0cmVhbUxpc3Q+IG1fbG9jYWxTdHJlYW1zOwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbUxp
c3Q+IG1fcmVtb3RlU3RyZWFtczsKIAorICAgIFZlY3RvcjxSZWZQdHI8UlRDRGF0YUNoYW5uZWw+
ID4gbV9kYXRhQ2hhbm5lbHM7CisKICAgICBPd25QdHI8UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
PiBtX3BlZXJIYW5kbGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAppbmRleCA1NmRmNDdhYzUyMWYz
ZGEwYTk5NzljNTlhZGE5M2RkMjYxNDZkYmRmLi4wNzk4MDczMzZlMzAyZGNjMmMxMjNiMDg2ODc3
MjUxMWFjNWNkYjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbApAQCAtNzQsNiArNzQsOSBAQCBtb2R1bGUg
bWVkaWFzdHJlYW0gewogCiAgICAgICAgIHZvaWQgZ2V0U3RhdHMoaW4gW0NhbGxiYWNrXSBSVENT
dGF0c0NhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVm
aW5lZF0gTWVkaWFTdHJlYW1UcmFjayBzZWxlY3Rvcik7CiAKKyAgICAgICAgUlRDRGF0YUNoYW5u
ZWwgY3JlYXRlRGF0YUNoYW5uZWwoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5k
ZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIGxhYmVsLCBpbiBbT3B0aW9uYWw9RGVmYXVs
dElzVW5kZWZpbmVkXSBEaWN0aW9uYXJ5IGRhdGFDaGFubmVsRGljdCkKKyAgICAgICAgICAgIHJh
aXNlcyhET01FeGNlcHRpb24pOworCiAgICAgICAgIHZvaWQgY2xvc2UoKQogICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKQEAgLTg0LDYgKzg3LDcgQEAgbW9kdWxlIG1lZGlhc3Ry
ZWFtIHsKICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hZGRzdHJlYW07CiAgICAg
ICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucmVtb3Zlc3RyZWFtOwogICAgICAgICBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmljZWNoYW5nZTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb25kYXRhY2hhbm5lbDsKIAogICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZh
Y2UKICAgICAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDIyNWFkMjI4MWZjOGRmM2U4Y2Y3M2NhMzEwYzgzM2EyZGVjZjExZTUu
LjcwZDEzZDM5YmZhMzEzZWZlZDcxZmMwMmNiNDFjZjI0MmMxMmQwYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTQ1Niw2ICs0NTYsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uMDBIYW5kbGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0
b3IuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRh
dGVEZXNjcmlwdG9yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlci5oJywKQEAgLTg2Niw2ICs4NjgsOCBAQAogICAgICAgICAgICAg
J01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwn
LAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3Vj
Y2Vzc0NhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbjAwLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbC5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxFdmVudC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RXJyb3JDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
SWNlQ2FuZGlkYXRlLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJ
Y2VDYW5kaWRhdGVFdmVudC5pZGwnLApAQCAtMTYxMSw2ICsxNjE1LDEwIEBACiAgICAgICAgICAg
ICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2su
aCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmNw
cCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmgn
LAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaCcsCisg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAnLAorICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5oJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwJywK
ICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Vycm9yQ2FsbGJhY2suaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwJywKICAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnROYW1lcy5oCmluZGV4IDY2OWJmNjQ4YzVjMjE4NzM0N2RlOGViMjQ1ODA4NGMxYTMx
ODk2MWUuLjdhMDU1MmE0YTcwZGE5M2Q0MjAxMTdmZDIwMmU5MjA5YzNiNDcyMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaApAQCAtMjI4LDYgKzIyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBtYWNybyhpY2VjaGFuZ2UpIFwKICAgICBtYWNybyhpY2VjYW5kaWRhdGUpIFwKICAgICBt
YWNybyhuZWdvdGlhdGlvbm5lZWRlZCkgXAorICAgIG1hY3JvKGRhdGFjaGFubmVsKSBcCiAgICAg
XAogICAgIG1hY3JvKHNob3cpIFwKICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnROYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCmluZGV4
IDllOWUwYzg2MzA3YWQwMGVjODY3YThiYTY3NjQwZTBmYTA1MDBlNWUuLjM0NzFjMDcxMGFiNGNh
NTUyZGNmNTI0MjIxYmY3ZDc4NjYwZWMxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCkBA
IC0zMiw2ICszMiw3IEBAIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudCBjb25kaXRpb25hbD1X
RUJfQVVESU8KIE1lZGlhU3RyZWFtRXZlbnQgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZWRp
YVN0cmVhbVRyYWNrRXZlbnQgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBSVENJY2VDYW5kaWRh
dGVFdmVudCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KK1JUQ0RhdGFDaGFubmVsRXZlbnQgY29u
ZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBTcGVlY2hJbnB1dEV2ZW50IGNvbmRpdGlvbmFsPUlOUFVU
X1NQRUVDSAogU3BlZWNoUmVjb2duaXRpb25FcnJvciBjb25kaXRpb25hbD1TQ1JJUFRFRF9TUEVF
Q0gKIFNwZWVjaFJlY29nbml0aW9uRXZlbnQgY29uZGl0aW9uYWw9U0NSSVBURURfU1BFRUNICmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCA3OTFiZDRlZGE1Y2Ez
N2FmNDU3ODM2MzQ5Nzc5NTEzMDc0YzJkMmY0Li43YzM5YmQzZjQzNmU0MWZmMDg2Y2NmMGQ1MTA4
ZTdlNWI0ZWRiMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRG
YWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4K
QEAgLTI2LDYgKzI2LDcgQEAgTm9kZQogTm90aWZpY2F0aW9uIGNvbmRpdGlvbmFsPU5PVElGSUNB
VElPTlN8TEVHQUNZX05PVElGSUNBVElPTlMKIFBlZXJDb25uZWN0aW9uMDAgY29uZGl0aW9uYWw9
TUVESUFfU1RSRUFNCiBQZXJmb3JtYW5jZSBjb25kaXRpb25hbD1XRUJfVElNSU5HCitSVENEYXRh
Q2hhbm5lbCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFJUQ1BlZXJDb25uZWN0aW9uIGNvbmRp
dGlvbmFsPU1FRElBX1NUUkVBTQogU2hhcmVkV29ya2VyIGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JL
RVJTCiBTaGFyZWRXb3JrZXJDb250ZXh0IGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDY4MTAwZWJhYzhiZDY5ZGQ2
MTViNTA1YzYxOTM1ZDk0NmZhYzAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcApAQCAtMCww
ICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3I+IFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGJvb2wgcmVsaWFibGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3IobGFiZWwsIHJlbGlhYmxlKSk7Cit9CisKK1JUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvcjo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgbGFiZWwsIGJv
b2wgcmVsaWFibGUpCisgICAgOiBtX2xhYmVsKGxhYmVsKQorICAgICwgbV9yZWxpYWJsZShyZWxp
YWJsZSkKKyAgICAsIG1fcmVhZHlTdGF0ZShSZWFkeVN0YXRlQ29ubmVjdGluZykKKyAgICAsIG1f
YnVmZmVyZWRBbW91bnQoMCkKK3sKK30KKworUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjp+UlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yKCkKK3sKK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3I6OnJlYWR5U3RhdGVDaGFuZ2VkKFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKK3sKKyAgICBB
U1NFUlQobV9yZWFkeVN0YXRlICE9IFJlYWR5U3RhdGVDbG9zZWQpOworICAgIGlmIChtX3JlYWR5
U3RhdGUgIT0gcmVhZHlTdGF0ZSAmJiBtX293bmVyKSB7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9
IHJlYWR5U3RhdGU7CisgICAgICAgIG1fb3duZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CisgICAg
fQorfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6ZGF0YUFycml2ZWQoY29uc3Qg
U3RyaW5nJiBkYXRhKQoreworICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgIT0gUmVhZHlTdGF0ZUNs
b3NlZCk7CisgICAgaWYgKG1fb3duZXIpCisgICAgICAgIG1fb3duZXItPmRhdGFBcnJpdmVkKGRh
dGEpOworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6ZGF0YUFycml2ZWQoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCit7CisgICAgQVNTRVJUKG1fcmVhZHlT
dGF0ZSAhPSBSZWFkeVN0YXRlQ2xvc2VkKTsKKyAgICBpZiAobV9vd25lcikKKyAgICAgICAgbV9v
d25lci0+ZGF0YUFycml2ZWQoZGF0YSwgZGF0YUxlbmd0aCk7Cit9CisKK3ZvaWQgUlRDRGF0YUNo
YW5uZWxEZXNjcmlwdG9yOjplcnJvcigpCit7CisgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSAhPSBS
ZWFkeVN0YXRlQ2xvc2VkKTsKKyAgICBpZiAobV9vd25lcikKKyAgICAgICAgbV9vd25lci0+ZXJy
b3IoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjljMmM4
OTI2ODBkYzkwNzBhODEwMGVlMGU5YTcxY2IzOGJiY2JiNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRv
ci5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDRGF0YUNoYW5u
ZWxEZXNjcmlwdG9yX2gKKyNkZWZpbmUgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yX2gKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IgOiBw
dWJsaWMgUmVmQ291bnRlZDxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IHsKK3B1YmxpYzoKKyAg
ICBjbGFzcyBPd25lciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5Pd25lcigpIHsg
fQorCisgICAgICAgIHZpcnR1YWwgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZCgpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGVycm9yKCkgPSAwOworICAgIH07CisKKyAgICBjbGFzcyBFeHRyYURh
dGEgOiBwdWJsaWMgUmVmQ291bnRlZDxFeHRyYURhdGE+IHsKKyAgICBwdWJsaWM6CisgICAgICAg
IHZpcnR1YWwgfkV4dHJhRGF0YSgpIHsgfQorICAgIH07CisKKyAgICBlbnVtIFJlYWR5U3RhdGUg
eworICAgICAgICBSZWFkeVN0YXRlQ29ubmVjdGluZyA9IDAsCisgICAgICAgIFJlYWR5U3RhdGVP
cGVuID0gMSwKKyAgICAgICAgUmVhZHlTdGF0ZUNsb3NpbmcgPSAyLAorICAgICAgICBSZWFkeVN0
YXRlQ2xvc2VkID0gMywKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDRGF0YUNo
YW5uZWxEZXNjcmlwdG9yPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJs
ZSk7CisgICAgdmlydHVhbCB+UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKCk7CisKKyAgICBSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I6Ok93bmVyKiBvd25lcigpIGNvbnN0IHsgcmV0dXJuIG1fb3du
ZXI7IH0KKyAgICB2b2lkIHNldE93bmVyKE93bmVyKiBvd25lcikgeyBtX293bmVyID0gb3duZXI7
IH0KKworICAgIGNvbnN0IFN0cmluZyYgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9
CisgICAgYm9vbCByZWxpYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVsaWFibGU7IH0KKworICAg
IFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQor
CisgICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyZWRBbW91bnQ7IH0KKyAgICB2b2lkIHNldEJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGxvbmcg
YnVmZmVyZWRBbW91bnQpIHsgbV9idWZmZXJlZEFtb3VudCA9IGJ1ZmZlcmVkQW1vdW50OyB9CisK
KyAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKFJlYWR5U3RhdGUpOworICAgIHZvaWQgZGF0YUFy
cml2ZWQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBjaGFyKiwg
c2l6ZV90KTsKKyAgICB2b2lkIGVycm9yKCk7CisKKyAgICBQYXNzUmVmUHRyPEV4dHJhRGF0YT4g
ZXh0cmFEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9leHRyYURhdGE7IH0KKyAgICB2b2lkIHNldEV4
dHJhRGF0YShQYXNzUmVmUHRyPEV4dHJhRGF0YT4gZXh0cmFEYXRhKSB7IG1fZXh0cmFEYXRhID0g
ZXh0cmFEYXRhOyB9CisKK3ByaXZhdGU6CisgICAgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKGNv
bnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpOworCisgICAgT3duZXIqIG1fb3duZXI7
CisgICAgU3RyaW5nIG1fbGFiZWw7CisgICAgYm9vbCBtX3JlbGlhYmxlOworICAgIFJlYWR5U3Rh
dGUgbV9yZWFkeVN0YXRlOworICAgIHVuc2lnbmVkIGxvbmcgbV9idWZmZXJlZEFtb3VudDsKKyAg
ICBSZWZQdHI8RXh0cmFEYXRhPiBtX2V4dHJhRGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKaW5k
ZXggNjYzZmJjOGQ1Njk5ZDE3ZmRkMTRkM2JmMjE2YjU5NjNhMzE3YzgyYS4uODUwOWYyZTk0Mjc1
NjhiYTYyNzk5ODBkYTM2MGM2MWYxYTQ1YzQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIuY3BwCkBAIC02Miw2ICs2MiwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFN0
YXRzKFBhc3NSZWZQdHI8UlRDU3RhdHNSZXF1ZXN0PikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHN0b3AoKSBPVkVSUklERTsKIAorICAgIC8vIFJUQ0RhdGFDaGFubmVsLgorICAgIHZpcnR1
YWwgYm9vbCBvcGVuRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0
b3I+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEoUGFzc1JlZlB0
cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3I+LCBjb25zdCBjaGFyKiwgc2l6ZV90KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4pIE9W
RVJSSURFOworCiBwcml2YXRlOgogICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCog
bV9jbGllbnQ7CiB9OwpAQCAtMTM5LDYgKzE0NSwyNSBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckR1bW15OjpzdG9wKCkKIHsKIH0KIAorYm9vbCBSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJEdW1teTo6b3BlbkRhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlw
dG9yPikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyRHVtbXk6OnNlbmRTdHJpbmdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yPiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OnNlbmRSYXdEYXRhKFBhc3NSZWZQdHI8UlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgY2hhciosIHNpemVfdCkKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OmNsb3Nl
RGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KQoreworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCBlNjkwNzA1YmU3YTRhMmU2ZTU5ZDA0
MTdkNDNiYWRiZGE0NzEyMDk5Li5mYmE0NTg4N2U2Nzk5NjU2ZjI2NjM3ZTRlZmRlYTRlOTY1NjYw
MzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBSVENDb25m
aWd1cmF0aW9uOworY2xhc3MgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOwogY2xhc3MgUlRDSWNl
Q2FuZGlkYXRlRGVzY3JpcHRvcjsKIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dDsKIGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I7CkBAIC02OCw2ICs2OSwx
MiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKFBhc3NSZWZQdHI8UlRDU3Rh
dHNSZXF1ZXN0PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwogCisgICAgLy8g
UlRDRGF0YUNoYW5uZWwuCisgICAgdmlydHVhbCBib29sIG9wZW5EYXRhQ2hhbm5lbChQYXNzUmVm
UHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2Vu
ZFN0cmluZ0RhdGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBT
dHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKFBhc3NSZWZQdHI8UlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgY2hhciosIHNpemVfdCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjbG9zZURhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yPikgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaAppbmRleCAz
M2I5MDQyNjBiN2Y4NDY0OWFlNDllNmRmZDYxM2EwYjI4ODMwODMwLi4zODljODY3MWI5NGJlNzM4
M2U1NWQ0YjZjN2QwNDIzZGZlMWY0NjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7CitjbGFzcyBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I7
CiBjbGFzcyBSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOwogCiBjbGFzcyBSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQgewpAQCAtNjksNiArNzAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZUljZVN0YXRlKEljZVN0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEFkZFJlbW90ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4pID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFtRGVz
Y3JpcHRvciopID0gMDsKKworICAgIC8vIFJUQ0RhdGFDaGFubmVsLgorICAgIHZpcnR1YWwgdm9p
ZCBkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvcj4pID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcAppbmRleCA0
ZTRlMTMxNzU5MzMxNDE2ODVjZTFkYzJiMTAzYzBhZTI4ZTg3ZTQyLi4wN2MxY2NkMTVhYWM1NWI2
MWRhZGMwZTRhYmMwYzYwNTg5OWVhYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0v
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwCkBAIC0zNiw2ICszNiw3IEBACiAK
ICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAiUlRDQ29uZmlndXJhdGlv
bi5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlJU
Q0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDbGllbnQuaCIKICNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9y
LmgiCkBAIC0yMTIsNiArMjEzLDI5IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hy
b21pdW06OmRpZFJlbW92ZVJlbW90ZVN0cmVhbShjb25zdCBXZWJLaXQ6OldlYk1lCiAgICAgbV9j
bGllbnQtPmRpZFJlbW92ZVJlbW90ZVN0cmVhbSh3ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpOwog
fQogCitib29sIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpvcGVuRGF0YUNoYW5u
ZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IGRhdGFDaGFubmVsKQorewor
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgd2hlbiBXZWJLaXQgY2hhbmdlcyBoYXZlIGxhbmRlZC4K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hy
b21pdW06OnNlbmRTdHJpbmdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9y
PiBkYXRhQ2hhbm5lbCwgY29uc3QgU3RyaW5nJiBkYXRhKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgd2hlbiBXZWJLaXQgY2hhbmdlcyBoYXZlIGxhbmRlZC4KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OnNlbmRSYXdEYXRh
KFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBkYXRhQ2hhbm5lbCwgY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB3aGVuIFdlYktpdCBjaGFuZ2VzIGhhdmUgbGFuZGVkLgorICAgIHJldHVybiBmYWxzZTsKK30K
Kwordm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6Y2xvc2VEYXRhQ2hhbm5l
bChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gZGF0YUNoYW5uZWwpCit7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFdlYktpdCBjaGFuZ2VzIGhhdmUgbGFuZGVkLgor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hy
b21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNo
cm9taXVtLmgKaW5kZXggYjY2OWIyNTZhZWE0MDEwZGNjY2E1OGIwZjE4NmViMTFhNjY4NDI2Mi4u
NmRhMTE5NTdhN2M1Zjg2ZmI1YmJlN2Q2ZGRmN2FkNmY4YTM3OGUwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oCkBAIC02Nyw2
ICs2NywxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKFBhc3NSZWZQdHI8
UlRDU3RhdHNSZXF1ZXN0PikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVS
UklERTsKIAorICAgIHZpcnR1YWwgYm9vbCBvcGVuRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0
cmluZ0RhdGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBTdHJp
bmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoUGFzc1JlZlB0cjxS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBjaGFyKiwgc2l6ZV90KSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFu
bmVsRGVzY3JpcHRvcj4pIE9WRVJSSURFOworCiAgICAgLy8gV2ViS2l0OjpXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIG5l
Z290aWF0aW9uTmVlZGVkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEdlbmVyYXRl
SUNFQ2FuZGlkYXRlKGNvbnN0IFdlYktpdDo6V2ViUlRDSUNFQ2FuZGlkYXRlJikgT1ZFUlJJREU7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168244</attachid>
            <date>2012-10-11 09:48:43 -0700</date>
            <delta_ts>2012-10-12 03:04:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99080-20121011184740.patch</filename>
            <type>text/plain</type>
            <size>55920</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI5M2M1NTJhZTMyODYx
YzA5MThiYzFmN2Q5MThkMzVhYzAzYTQ0YS4uNmUwYmIyMjdmYzFiNzU1ZDhkYjM1NWNlZTdjNTU3
NWI1NDM4NjMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxMi0xMC0xMSAgVG9t
bXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVh
bSBBUEk6IEltcGxlbWVudCBSVENEYXRhQ2hhbm5lbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkwODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgUlRDRGF0YUNoYW5u
ZWwgd2hpY2ggaXMgYSBwaXBlIGZvciBzZW5kaW5nIGRhdGEgYmV0d2VlbiB0d28gUlRDUGVlckNv
bm5lY3Rpb25zLgorICAgICAgICBTaW5jZSB0aGUgZGF0YSBjaGFubmVsIGJlbG9uZ3MgdG8gYSBw
ZWVyIGNvbm5lY3Rpb24gb2JqZWN0IEkgaGF2ZSByZXVzZWQgcGFydCBvZiBpdHMgaW5mcmFzdHJ1
Y3R1cmUuCisKKyAgICAgICAgTm90IGN1cnJlbnRseSB0ZXN0YWJsZS4gTXkgbmV4dCBwYXRjaCB3
aWxsIGFkZCB0aGUgY2hyb21pdW0gV2ViS2l0IGZ1bmN0aW9uYWxpdHksIHRvZ2V0aGVyIHdpdGgg
bW9ja3MgYW5kIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWw6OlJUQ0RhdGFDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
Ojp+UlRDRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6Omxh
YmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpyZWxpYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSVENEYXRhQ2hhbm5lbDo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWw6OmJpbmFyeVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWw6OnNldEJpbmFyeVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6
OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmNsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpyZWFkeVN0YXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGF0YUFycml2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWw6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsOjpkZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjppbnRl
cmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpldmVudFRhcmdldERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWw6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEV2ZW50OjpSVENEYXRhQ2hhbm5lbEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRXZlbnQ6On5SVENEYXRhQ2hhbm5l
bEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxFdmVudDo6aW50ZXJmYWNlTmFtZSk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENEYXRhQ2hhbm5lbEV2ZW50KToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVEYXRhQ2hhbm5l
bCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0
aW9uOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6ZGlkQWRk
UmVtb3RlRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246
OnN0b3ApOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb24pOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaW46CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjp+UlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxEZXNjcmlwdG9yOjpkYXRhQXJyaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I6OmVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcik6CisgICAgICAgIChPd25lcik6
CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6Ok93bmVyOjp+T3du
ZXIpOgorICAgICAgICAoRXh0cmFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsRGVzY3JpcHRvcjo6RXh0cmFEYXRhOjp+RXh0cmFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6b3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpzZXRPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I6OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsRGVzY3JpcHRvcjo6cmVsaWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxEZXNjcmlwdG9yOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsRGVzY3JpcHRvcjo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpzZXRCdWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OmV4dHJhRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OnNldEV4dHJhRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNs
aWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06Om9wZW5EYXRhQ2hhbm5lbCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
OjpzZW5kU3RyaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDaHJvbWl1bTo6c2VuZFJhd0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmNsb3NlRGF0YUNoYW5uZWwpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9t
aXVtLmg6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bSk6CisKIDIw
MTItMTAtMTEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4K
IAogICAgICAgICBSZWdyZXNzaW9uKHIxMzEwNTgpOiBCcm9rZSBFRkwgYnVpbGQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggNWUwMzMzZTQ4ZWRkNjQ0ODZjNDMwNWEwMmMyZGY1NWI0ZWVkYzcyNC4u
ZTU0ZGQ1M2FmNjg1OGZlZjViMTI4MWJiZmYyMDcwZjNkNjdmMDMwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyNCw2ICsyMjQsOCBAQCBTRVQoV2ViQ29yZV9JRExfRklMRVMKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRs
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmlkbAorICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRXJy
b3JDYWxsYmFjay5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5p
ZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUV2ZW50LmlkbApAQCAt
ODYyLDYgKzg2NCw4IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2
aWdhdG9yTWVkaWFTdHJlYW0uY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVj
dGlvbjAwLmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCisg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDSWNlQ2FuZGlkYXRlRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTE5NjAsNiArMTk2NCw3IEBAIFNFVChXZWJDb3JlX1NPVVJD
RVMKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwSGFuZGxlci5jcHAKKyAgICBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCmluZGV4IGQ1YWYzNmMzNGQzZjRhZTc5YWI2NmFmMDE2NTJmNDE5ZWFmN2JkZTYu
LjY3MTVkMTIzZmE2MTAzNDkxNjA4MjRiNGQ3N2Y0NTFjMmY1OGMzNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtNjI3LDYgKzYyNywxMCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJj
ZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVD
YWxsYmFjay5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUkdCQ29sb3IuY3BwIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUkdCQ29sb3IuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1JUQ0RhdGFDaGFubmVsLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JU
Q0RhdGFDaGFubmVsLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEYXRhQ2hhbm5l
bEV2ZW50LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0RhdGFDaGFubmVsRXZl
bnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0Vycm9yQ2FsbGJhY2suY3BwIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDRXJyb3JDYWxsYmFjay5oIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTUlRDSWNlQ2FuZGlkYXRlLmNwcCBcCkBAIC0xMjM2LDYgKzEyNDAs
OCBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJl
YW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwgXAogCSQoV2ViQ29yZSkvTW9k
dWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsIFwK
IAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5pZGwgXAor
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwgXAorCSQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbCBcCiAJ
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Vycm9yQ2FsbGJhY2suaWRsIFwKIAkk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmlkbCBcCiAJJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUV2ZW50LmlkbCBcCkBA
IC0xOTM0LDYgKzE5NDAsMTAgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0Nh
bGxiYWNrLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb24wMC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb24wMC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsRXZlbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsRXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENFcnJvckNhbGxiYWNrLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaCBcCkBAIC00NjEzLDkgKzQ2MjMsMTAgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbjAwSGFuZGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmggXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRv
ci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRh
dGVEZXNjcmlwdG9yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzNWE1OTU4ZDZi
NmMyMDJiZjBmNDhjNTA5YjIzNDQ2Y2I0NjRkZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApAQCAtMCwwICsx
LDI2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsLmgiCisKKyNpbmNsdWRl
ICJCbG9iLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
PHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBSVENEYXRh
Q2hhbm5lbDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlciogaGFuZGxlciwgU3RyaW5nIGxhYmVsLCBib29sIHJlbGlhYmxlLCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBBU1NFUlQoaGFuZGxlcik7CisgICAgUmVmUHRyPFJU
Q0RhdGFDaGFubmVsPiBkYXRhQ2hhbm5lbCA9IGNyZWF0ZShjb250ZXh0LCBoYW5kbGVyLCBSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I6OmNyZWF0ZShsYWJlbCwgcmVsaWFibGUpKTsKKyAgICBpZiAo
IWhhbmRsZXItPm9wZW5EYXRhQ2hhbm5lbChkYXRhQ2hhbm5lbC0+ZGVzY3JpcHRvcigpKSkgewor
ICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisgICAgcmV0dXJuIGRhdGFDaGFubmVsLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxSVENE
YXRhQ2hhbm5lbD4gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIGhhbmRsZXIsIFBhc3NSZWZQdHI8
UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBkZXNjcmlwdG9yKQoreworICAgIEFTU0VSVChoYW5k
bGVyKTsKKyAgICBBU1NFUlQoZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBS
VENEYXRhQ2hhbm5lbChjb250ZXh0LCBoYW5kbGVyLCBkZXNjcmlwdG9yKSk7Cit9CisKK1JUQ0Rh
dGFDaGFubmVsOjpSVENEYXRhQ2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIGhhbmRsZXIsIFBhc3NSZWZQdHI8UlRDRGF0YUNo
YW5uZWxEZXNjcmlwdG9yPiBkZXNjcmlwdG9yKQorICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KGNvbnRleHQpCisgICAgLCBtX3N0b3BwZWQoZmFsc2UpCisgICAgLCBtX2Rlc2NyaXB0b3Io
ZGVzY3JpcHRvcikKKyAgICAsIG1fYmluYXJ5VHlwZShCaW5hcnlUeXBlQXJyYXlCdWZmZXIpCisg
ICAgLCBtX2hhbmRsZXIoaGFuZGxlcikKK3sKKyAgICBtX2Rlc2NyaXB0b3ItPnNldE93bmVyKHRo
aXMpOworfQorCitSVENEYXRhQ2hhbm5lbDo6flJUQ0RhdGFDaGFubmVsKCkKK3sKKyAgICBtX2Rl
c2NyaXB0b3ItPnNldE93bmVyKDApOworfQorCitTdHJpbmcgUlRDRGF0YUNoYW5uZWw6OmxhYmVs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kZXNjcmlwdG9yLT5sYWJlbCgpOworfQorCitib29s
IFJUQ0RhdGFDaGFubmVsOjpyZWxpYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGVzY3Jp
cHRvci0+cmVsaWFibGUoKTsKK30KKworU3RyaW5nIFJUQ0RhdGFDaGFubmVsOjpyZWFkeVN0YXRl
KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fZGVzY3JpcHRvci0+cmVhZHlTdGF0ZSgpKSB7Cisg
ICAgY2FzZSBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVDb25uZWN0aW5nOgor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJjb25uZWN0aW5nIik7CisgICAgY2FzZSBSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVPcGVuOgorICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJvcGVuIik7CisgICAgY2FzZSBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJl
YWR5U3RhdGVDbG9zaW5nOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJjbG9zaW5nIik7
CisgICAgY2FzZSBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVDbG9zZWQ6Cisg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImNsb3NlZCIpOworICAgIH0KKworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAiIjsKK30KKwordW5zaWduZWQgbG9uZyBSVENE
YXRhQ2hhbm5lbDo6YnVmZmVyZWRBbW91bnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2Rlc2Ny
aXB0b3ItPmJ1ZmZlcmVkQW1vdW50KCk7Cit9CisKK1N0cmluZyBSVENEYXRhQ2hhbm5lbDo6Ymlu
YXJ5VHlwZSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsKKyAgICBjYXNl
IEJpbmFyeVR5cGVCbG9iOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJibG9iIik7Cisg
ICAgY2FzZSBCaW5hcnlUeXBlQXJyYXlCdWZmZXI6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoImFycmF5YnVmZmVyIik7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbDo6c2V0QmluYXJ5VHlw
ZShjb25zdCBTdHJpbmcmIGJpbmFyeVR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
IChiaW5hcnlUeXBlID09ICJibG9iIikKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsK
KyAgICBlbHNlIGlmIChiaW5hcnlUeXBlID09ICJhcnJheWJ1ZmZlciIpCisgICAgICAgIG1fYmlu
YXJ5VHlwZSA9IEJpbmFyeVR5cGVBcnJheUJ1ZmZlcjsKKyAgICBlbHNlCisgICAgICAgIGVjID0g
VFlQRV9NSVNNQVRDSF9FUlI7Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWw6OnNlbmQoY29uc3Qg
U3RyaW5nJiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9kZXNjcmlwdG9y
LT5yZWFkeVN0YXRlKCkgIT0gUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSZWFkeVN0YXRlT3Bl
bikgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlmICghbV9oYW5kbGVyLT5zZW5kU3RyaW5nRGF0YShkZXNjcmlwdG9yKCksIGRh
dGEpKSB7CisgICAgICAgIC8vIEZJWE1FOiBEZWNpZGUgd2hhdCB0aGUgcmlnaHQgZXhjZXB0aW9u
IGhlcmUgaXMuCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICB9Cit9CisKK3ZvaWQgUlRD
RGF0YUNoYW5uZWw6OnNlbmQoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gcHJwRGF0YSwgRXhjZXB0
aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1fZGVzY3JpcHRvci0+cmVhZHlTdGF0ZSgpICE9IFJU
Q0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6UmVhZHlTdGF0ZU9wZW4pIHsKKyAgICAgICAgZWMgPSBJ
TlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gZGF0YSA9IHBycERhdGE7CisKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGRh
dGEtPmJ5dGVMZW5ndGgoKTsKKyAgICBpZiAoIWRhdGFMZW5ndGgpCisgICAgICAgIHJldHVybjsK
KworICAgIGNvbnN0IGNoYXIqIGRhdGFQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEtPmRhdGEoKSk7CisKKyAgICBpZiAoIW1faGFuZGxlci0+c2VuZFJhd0RhdGEoZGVzY3Jp
cHRvcigpLCBkYXRhUG9pbnRlciwgZGF0YUxlbmd0aCkpIHsKKyAgICAgICAgLy8gRklYTUU6IERl
Y2lkZSB3aGF0IHRoZSByaWdodCBleGNlcHRpb24gaGVyZSBpcy4KKyAgICAgICAgZWMgPSBTWU5U
QVhfRVJSOworICAgIH0KK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbDo6c2VuZChQYXNzUmVmUHRy
PEFycmF5QnVmZmVyVmlldz4gZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlcihkYXRhLT5idWZmZXIoKSk7CisgICAgc2VuZChhcnJh
eUJ1ZmZlci5yZWxlYXNlKCksIGVjKTsKK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbDo6c2VuZChQ
YXNzUmVmUHRyPEJsb2I+IGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKKyAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworfQorCit2b2lkIFJUQ0Rh
dGFDaGFubmVsOjpjbG9zZSgpCit7CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9oYW5kbGVyLT5jbG9zZURhdGFDaGFubmVsKGRlc2NyaXB0b3IoKSk7Cit9CisK
K3ZvaWQgUlRDRGF0YUNoYW5uZWw6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9z
dG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBzd2l0Y2ggKG1fZGVzY3JpcHRvci0+cmVh
ZHlTdGF0ZSgpKSB7CisgICAgY2FzZSBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3Rh
dGVPcGVuOgorICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
Lm9wZW5FdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSZWFkeVN0YXRlQ2xvc2VkOgorICAgICAgICBkaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxz
ZSkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9
Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWw6OmRhdGFBcnJpdmVkKGNvbnN0IFN0cmluZyYgdGV4
dCkKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBkaXNwYXRj
aEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHRleHQpKTsKK30KKwordm9pZCBSVENEYXRhQ2hh
bm5lbDo6ZGF0YUFycml2ZWQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCit7
CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fYmluYXJ5
VHlwZSA9PSBCaW5hcnlUeXBlQmxvYikgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50Lgor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX2JpbmFyeVR5cGUgPT0gQmluYXJ5VHlw
ZUFycmF5QnVmZmVyKSB7CisgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVu
dChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShidWZmZXIucmVsZWFzZSgpKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUlRDRGF0YUNo
YW5uZWw6OmVycm9yKCkKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm47CisK
KyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQs
IGZhbHNlLCBmYWxzZSkpOworfQorCitSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IqIFJUQ0RhdGFD
aGFubmVsOjpkZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gbV9kZXNjcmlwdG9yLmdldCgpOwor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIFJUQ0RhdGFDaGFubmVsOjppbnRlcmZhY2VOYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclJUQ0RhdGFDaGFu
bmVsOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBSVENEYXRhQ2hhbm5lbDo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbDo6c3RvcCgpCit7CisgICAgbV9zdG9w
cGVkID0gdHJ1ZTsKKyAgICBtX2hhbmRsZXIgPSAwOworICAgIG1fZGVzY3JpcHRvci0+c2V0T3du
ZXIoMCk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gMDsKK30KKworRXZlbnRUYXJn
ZXREYXRhKiBSVENEYXRhQ2hhbm5lbDo6ZXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4g
Jm1fZXZlbnRUYXJnZXREYXRhOworfQorCitFdmVudFRhcmdldERhdGEqIFJUQ0RhdGFDaGFubmVs
OjplbnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERh
dGE7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTEwMzkxYzhlMzMwNzU0MWZjOTdhMDNiNGJiN2Iz
YTM3MDJkY2UyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBSVENEYXRhQ2hhbm5lbF9oCisjZGVmaW5lIFJUQ0RhdGFDaGFubmVsX2gKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
KyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIEJsb2I7CitjbGFzcyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CisKK2NsYXNz
IFJUQ0RhdGFDaGFubmVsIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDRGF0YUNoYW5uZWw+LCBwdWJs
aWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6Ok93bmVyIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqLCBTdHJpbmcg
bGFiZWwsIGJvb2wgcmVsaWFibGUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxSVENEYXRhQ2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIqLCBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRv
cj4pOworICAgIH5SVENEYXRhQ2hhbm5lbCgpOworCisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7
CisKKyAgICBib29sIHJlbGlhYmxlKCkgY29uc3Q7CisKKyAgICBTdHJpbmcgcmVhZHlTdGF0ZSgp
IGNvbnN0OworCisgICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0OworCisg
ICAgU3RyaW5nIGJpbmFyeVR5cGUoKSBjb25zdDsKKyAgICB2b2lkIHNldEJpbmFyeVR5cGUoY29u
c3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNlbmQoUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNlbmQoUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
clZpZXc+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZW5kKFBhc3NSZWZQdHI8QmxvYj4s
IEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIHZvaWQgY2xvc2UoKTsKKworICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIob3Blbik7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihlcnJvcik7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjbG9z
ZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihtZXNzYWdlKTsKKworICAg
IFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvciogZGVzY3JpcHRvcigpOworICAgIHZvaWQgc3RvcCgp
OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFOworCisg
ICAgdXNpbmcgUmVmQ291bnRlZDxSVENEYXRhQ2hhbm5lbD46OnJlZjsKKyAgICB1c2luZyBSZWZD
b3VudGVkPFJUQ0RhdGFDaGFubmVsPjo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgUlRDRGF0YUNo
YW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcios
IFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPik7CisKKyAgICAvLyBFdmVudFRh
cmdldAorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisgICAg
dmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXREYXRhIG1f
ZXZlbnRUYXJnZXREYXRhOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKKworICAgIC8vIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6T3duZXIK
KyAgICB2aXJ0dWFsIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGF0YUFycml2ZWQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0IGNoYXIqLCBzaXplX3QpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBlcnJvcigpIE9WRVJSSURFOworCisgICAgYm9vbCBtX3N0b3BwZWQ7CisgICAg
UmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gbV9kZXNjcmlwdG9yOworCisgICAgZW51
bSBCaW5hcnlUeXBlIHsKKyAgICAgICAgQmluYXJ5VHlwZUJsb2IsCisgICAgICAgIEJpbmFyeVR5
cGVBcnJheUJ1ZmZlcgorICAgIH07CisgICAgQmluYXJ5VHlwZSBtX2JpbmFyeVR5cGU7CisKKyAg
ICAvLyBOb3Qgb3duZWQgYnkgdGhpcyBjbGFzcy4KKyAgICBSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIqIG1faGFuZGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENEYXRhQ2hhbm5lbF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
aWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFmZTc0MDYzOTJjMGVkNThjNTE4ZTA3NTBhNWUzNGY3MjljZDExY2UK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmlkbApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUg
bWVkaWFzdHJlYW0geworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9TUVE
SUFfU1RSRUFNLAorICAgICAgICBFdmVudFRhcmdldAorICAgIF0gUlRDRGF0YUNoYW5uZWwgewor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiByZWxpYWJsZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyByZWFkeVN0YXRlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBidWZmZXJlZEFtb3VudDsKKworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGJpbmFyeVR5cGUKKyAgICAgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKwor
ICAgICAgICB2b2lkIHNlbmQoaW4gQXJyYXlCdWZmZXIgZGF0YSkKKyAgICAgICAgICAgIHJhaXNl
cyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHNlbmQoaW4gQXJyYXlCdWZmZXJWaWV3IGRh
dGEpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBzZW5k
KGluIEJsb2IgZGF0YSkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAg
ICB2b2lkIHNlbmQoaW4gRE9NU3RyaW5nIGRhdGEpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKKworICAgICAgICB2b2lkIGNsb3NlKCk7CisKKyAgICAgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25vcGVuOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVy
cm9yOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsb3NlOworICAgICAgICBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1lc3NhZ2U7CisKKyAgICAgICAgLy8gRXZlbnRUYXJn
ZXQgaW50ZXJmYWNlCisgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcg
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlz
dGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xl
YW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01T
dHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlz
dGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0
aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVu
dChpbiBFdmVudCBldmVudCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7Cisg
ICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjIyNzEzNWI3NGQxYjgw
NzFjNjI4YTMxYTFiMDk4MzYwYTNmYjljZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAKQEAgLTAsMCAr
MSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJU
Q0RhdGFDaGFubmVsRXZlbnQuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWwuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRXZlbnQ+IFJUQ0RhdGFD
aGFubmVsRXZlbnQ6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSVENEYXRh
Q2hhbm5lbEV2ZW50KTsKK30KKworUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbEV2ZW50PiBSVENE
YXRhQ2hhbm5lbEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjaGFu
bmVsKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUlRDRGF0YUNoYW5uZWxFdmVudCh0eXBl
LCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGNoYW5uZWwpKTsKK30KKworCitSVENEYXRhQ2hhbm5l
bEV2ZW50OjpSVENEYXRhQ2hhbm5lbEV2ZW50KCkKK3sKK30KKworUlRDRGF0YUNoYW5uZWxFdmVu
dDo6UlRDRGF0YUNoYW5uZWxFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNoYW5u
ZWwpCisgICAgOiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCisgICAgLCBtX2No
YW5uZWwoY2hhbm5lbCkKK3sKK30KKworUlRDRGF0YUNoYW5uZWxFdmVudDo6flJUQ0RhdGFDaGFu
bmVsRXZlbnQoKQoreworfQorCitSVENEYXRhQ2hhbm5lbCogUlRDRGF0YUNoYW5uZWxFdmVudDo6
Y2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2hhbm5lbC5nZXQoKTsKK30KKworY29u
c3QgQXRvbWljU3RyaW5nJiBSVENEYXRhQ2hhbm5lbEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclJUQ0RhdGFDaGFubmVs
RXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGIwOGNiNzk5MmVhNzg4
NmQxNDk4NDMxNDEyNGI1Y2VhOWFlMTc0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5oCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDRGF0YUNoYW5uZWxFdmVudF9oCisjZGVm
aW5lIFJUQ0RhdGFDaGFubmVsRXZlbnRfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWwuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBSVENEYXRhQ2hhbm5lbEV2ZW50IDogcHVibGljIEV2ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5SVENEYXRhQ2hhbm5lbEV2ZW50KCk7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENE
YXRhQ2hhbm5lbEV2ZW50PiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEYXRh
Q2hhbm5lbEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPik7CisKKyAg
ICBSVENEYXRhQ2hhbm5lbCogY2hhbm5lbCgpIGNvbnN0OworCisgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSVENE
YXRhQ2hhbm5lbEV2ZW50KCk7CisgICAgUlRDRGF0YUNoYW5uZWxFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8
UlRDRGF0YUNoYW5uZWw+KTsKKworICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbD4gbV9jaGFubmVs
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2VuZGlmIC8vIFJUQ0RhdGFDaGFubmVsRXZlbnRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVu
dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2E3NjVhNzI2OWExMzRlZjA2NjdkZmQ3MGYxMGE0NGFiZWE2MjRi
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxFdmVudC5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
bW9kdWxlIGV2ZW50cyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1N
RURJQV9TVFJFQU0sCisgICAgXSBSVENEYXRhQ2hhbm5lbEV2ZW50IDogRXZlbnQgeworICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBSVENEYXRhQ2hhbm5lbCBjaGFubmVsOworICAgIH07CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi5jcHAKaW5kZXggYjk4MTFhZGQ4MDIzNDJmOGY5MzJkMjQzNDIwMjJiODU2ZjY3
MDc0My4uMTE2NWEwM2RhZjRhOTNjM2FjYTg0ZjgwZTUzMDY3ZTQwMjhjMTgxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi5jcHAKQEAgLTQzLDYgKzQzLDggQEAKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzSW1w
bC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtRXZlbnQuaCIKICNpbmNsdWRlICJSVENDb25maWd1
cmF0aW9uLmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWwuaCIKKyNpbmNsdWRlICJSVENEYXRh
Q2hhbm5lbEV2ZW50LmgiCiAjaW5jbHVkZSAiUlRDRXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUg
IlJUQ0ljZUNhbmRpZGF0ZS5oIgogI2luY2x1ZGUgIlJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3Iu
aCIKQEAgLTQwOCw2ICs0MTAsMjIgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6Z2V0U3RhdHMo
UGFzc1JlZlB0cjxSVENTdGF0c0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFAKICAgICBtX3Bl
ZXJIYW5kbGVyLT5nZXRTdGF0cyhzdGF0c1JlcXVlc3QucmVsZWFzZSgpKTsKIH0KIAorUGFzc1Jl
ZlB0cjxSVENEYXRhQ2hhbm5lbD4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZURhdGFDaGFubmVs
KFN0cmluZyBsYWJlbCwgY29uc3QgRGljdGlvbmFyeSYgZGF0YUNoYW5uZWxEaWN0LCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IFJlYWR5U3RhdGVDbG9zZWQp
IHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgYm9vbCByZWxpYWJsZSA9IHRydWU7CisgICAgZGF0YUNoYW5uZWxEaWN0Lmdl
dCgicmVsaWFibGUiLCByZWxpYWJsZSk7CisgICAgUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjaGFu
bmVsID0gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1f
cGVlckhhbmRsZXIuZ2V0KCksIGxhYmVsLCByZWxpYWJsZSwgZWMpOworICAgIGlmIChlYykKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgbV9kYXRhQ2hhbm5lbHMuYXBwZW5kKGNoYW5uZWwpOworICAg
IHJldHVybiBjaGFubmVsLnJlbGVhc2UoKTsKK30KKwogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6
Y2xvc2UoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBSZWFk
eVN0YXRlQ2xvc2luZyB8fCBtX3JlYWR5U3RhdGUgPT0gUmVhZHlTdGF0ZUNsb3NlZCkgewpAQCAt
NDE1LDkgKzQzMywxMCBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpjbG9zZShFeGNlcHRpb25D
b2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIG1fcGVlckhhbmRsZXItPnN0
b3AoKTsKKwogICAgIGNoYW5nZUljZVN0YXRlKEljZVN0YXRlQ2xvc2VkKTsKICAgICBjaGFuZ2VS
ZWFkeVN0YXRlKFJlYWR5U3RhdGVDbG9zZWQpOwotICAgIHN0b3AoKTsKIH0KIAogdm9pZCBSVENQ
ZWVyQ29ubmVjdGlvbjo6bmVnb3RpYXRpb25OZWVkZWQoKQpAQCAtNDc4LDYgKzQ5NywxOSBAQCB2
b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpkaWRSZW1vdmVSZW1vdGVTdHJlYW0oTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKiBzdHJlYW1EZXNjcgogICAgIGRpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1FdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmVzdHJlYW1FdmVudCwgZmFsc2UsIGZhbHNlLCBz
dHJlYW0ucmVsZWFzZSgpKSk7CiB9CiAKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmRpZEFkZFJl
bW90ZURhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBjaGFu
bmVsRGVzY3JpcHRvcikKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5p
c0NvbnRleHRUaHJlYWQoKSk7CisKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IFJlYWR5U3RhdGVD
bG9zZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbD4gY2hh
bm5lbCA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBt
X3BlZXJIYW5kbGVyLmdldCgpLCBjaGFubmVsRGVzY3JpcHRvcik7CisgICAgbV9kYXRhQ2hhbm5l
bHMuYXBwZW5kKGNoYW5uZWwpOworCisgICAgZGlzcGF0Y2hFdmVudChSVENEYXRhQ2hhbm5lbEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRhdGFjaGFubmVsRXZlbnQsIGZhbHNlLCBmYWxzZSwg
Y2hhbm5lbC5yZWxlYXNlKCkpKTsKK30KKwogY29uc3QgQXRvbWljU3RyaW5nJiBSVENQZWVyQ29u
bmVjdGlvbjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMo
KS5pbnRlcmZhY2VGb3JSVENQZWVyQ29ubmVjdGlvbjsKQEAgLTQ5MCwxMyArNTIyLDE3IEBAIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIFJUQ1BlZXJDb25uZWN0aW9uOjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QKIAogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6c3RvcCgpCiB7CisgICAg
aWYgKG1fcmVhZHlTdGF0ZSAhPSBSZWFkeVN0YXRlQ2xvc2VkKQorICAgICAgICBtX3BlZXJIYW5k
bGVyLT5zdG9wKCk7CisKKyAgICBtX3BlZXJIYW5kbGVyLmNsZWFyKCk7CisKICAgICBtX2ljZVN0
YXRlID0gSWNlU3RhdGVDbG9zZWQ7CiAgICAgbV9yZWFkeVN0YXRlID0gUmVhZHlTdGF0ZUNsb3Nl
ZDsKIAotICAgIGlmIChtX3BlZXJIYW5kbGVyKSB7Ci0gICAgICAgIG1fcGVlckhhbmRsZXItPnN0
b3AoKTsKLSAgICAgICAgbV9wZWVySGFuZGxlci5jbGVhcigpOwotICAgIH0KKyAgICBWZWN0b3I8
UmVmUHRyPFJUQ0RhdGFDaGFubmVsPiA+OjppdGVyYXRvciBpID0gbV9kYXRhQ2hhbm5lbHMuYmVn
aW4oKTsKKyAgICBmb3IgKDsgaSAhPSBtX2RhdGFDaGFubmVscy5lbmQoKTsgKytpKQorICAgICAg
ICAoKmkpLT5zdG9wKCk7CiB9CiAKIEV2ZW50VGFyZ2V0RGF0YSogUlRDUGVlckNvbm5lY3Rpb246
OmV2ZW50VGFyZ2V0RGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggYTc3YWVmMjZkYjAyOWNlOThlNDkx
ZDUzNDI0MWFmOTYzYjE3YWViZS4uYzdmOWI5MTBmODIxNzRiYjRkY2RiZThjYzA1M2NmOTE1YTFj
OTk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKIGNsYXNz
IFJUQ0NvbmZpZ3VyYXRpb247CitjbGFzcyBSVENEYXRhQ2hhbm5lbDsKIGNsYXNzIFJUQ0Vycm9y
Q2FsbGJhY2s7CiBjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb247CiBjbGFzcyBSVENTZXNzaW9u
RGVzY3JpcHRpb25DYWxsYmFjazsKQEAgLTg4LDYgKzg5LDggQEAgcHVibGljOgogCiAgICAgdm9p
ZCBnZXRTdGF0cyhQYXNzUmVmUHRyPFJUQ1N0YXRzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBzZWxlY3Rvcik7CiAKKyAgICBQYXNzUmVmUHRy
PFJUQ0RhdGFDaGFubmVsPiBjcmVhdGVEYXRhQ2hhbm5lbChTdHJpbmcgbGFiZWwsIGNvbnN0IERp
Y3Rpb25hcnkmIGRhdGFDaGFubmVsRGljdCwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgdm9pZCBj
bG9zZShFeGNlcHRpb25Db2RlJik7CiAKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKG5lZ290aWF0aW9ubmVlZGVkKTsKQEAgLTk3LDYgKzEwMCw3IEBAIHB1YmxpYzoKICAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFkZHN0cmVhbSk7CiAgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihyZW1vdmVzdHJlYW0pOwogICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIoaWNlY2hhbmdlKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKGRhdGFjaGFubmVsKTsKIAogICAgIC8vIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBuZWdvdGlhdGlvbk5lZWRlZCgpIE9WRVJSSURFOwpA
QCAtMTA1LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNl
U3RhdGUoSWNlU3RhdGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVT
dHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChQYXNz
UmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4pIE9WRVJSSURFOwogCiAgICAgLy8gRXZl
bnRUYXJnZXQKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgp
IGNvbnN0IE9WRVJSSURFOwpAQCAtMTM3LDYgKzE0Miw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PE1lZGlhU3RyZWFtTGlzdD4gbV9sb2NhbFN0cmVhbXM7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFt
TGlzdD4gbV9yZW1vdGVTdHJlYW1zOwogCisgICAgVmVjdG9yPFJlZlB0cjxSVENEYXRhQ2hhbm5l
bD4gPiBtX2RhdGFDaGFubmVsczsKKwogICAgIE93blB0cjxSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXI+IG1fcGVlckhhbmRsZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCmluZGV4IDU2ZGY0N2FjNTIx
ZjNkYTBhOTk3OWM1OWFkYTkzZGQyNjE0NmRiZGYuLjA3OTgwNzMzNmUzMDJkY2MyYzEyM2IwODY4
NzcyNTExYWM1Y2RiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCkBAIC03NCw2ICs3NCw5IEBAIG1vZHVs
ZSBtZWRpYXN0cmVhbSB7CiAKICAgICAgICAgdm9pZCBnZXRTdGF0cyhpbiBbQ2FsbGJhY2tdIFJU
Q1N0YXRzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5k
ZWZpbmVkXSBNZWRpYVN0cmVhbVRyYWNrIHNlbGVjdG9yKTsKIAorICAgICAgICBSVENEYXRhQ2hh
bm5lbCBjcmVhdGVEYXRhQ2hhbm5lbChpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRV
bmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgbGFiZWwsIGluIFtPcHRpb25hbD1EZWZh
dWx0SXNVbmRlZmluZWRdIERpY3Rpb25hcnkgZGF0YUNoYW5uZWxEaWN0KQorICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisKICAgICAgICAgdm9pZCBjbG9zZSgpCiAgICAgICAgICAg
ICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIApAQCAtODQsNiArODcsNyBAQCBtb2R1bGUgbWVkaWFz
dHJlYW0gewogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFkZHN0cmVhbTsKICAg
ICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmVzdHJlYW07CiAgICAgICAgIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uaWNlY2hhbmdlOworICAgICAgICBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbmRhdGFjaGFubmVsOwogCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVy
ZmFjZQogICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggZGYxOTI4NTFiNjMwM2EwMTQ4YjZmMTU4ZmJlY2RjOWE1ZTI5MDMw
OC4uYWFmODU0OWRlMTViYzZlNDNkNDliMDcwYTQwMWY0YzI1MTkxNTQyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtNDU3LDYgKzQ1Nyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwJywKKyAgICAg
ICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3Jp
cHRvci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRp
ZGF0ZURlc2NyaXB0b3IuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyLmgnLApAQCAtODY3LDYgKzg2OSw4IEBACiAgICAgICAgICAg
ICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlk
bCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFT
dWNjZXNzQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1Bl
ZXJDb25uZWN0aW9uMDAuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbEV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENFcnJvckNhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENJY2VDYW5kaWRhdGUuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0ljZUNhbmRpZGF0ZUV2ZW50LmlkbCcsCkBAIC0xNjEyLDYgKzE2MTYsMTAgQEAKICAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFj
ay5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAu
Y3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAu
aCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oJywK
KyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCcsCisg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmgnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAn
LAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRXJyb3JDYWxsYmFjay5oJywK
ICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmgnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKaW5kZXggNjY5YmY2NDhjNWMyMTg3MzQ3ZGU4ZWIyNDU4MDg0YzFh
MzE4OTYxZS4uN2EwNTUyYTRhNzBkYTkzZDQyMDExN2ZkMjAyZTkyMDljM2I0NzIxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oCkBAIC0yMjgsNiArMjI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIG1hY3JvKGljZWNoYW5nZSkgXAogICAgIG1hY3JvKGljZWNhbmRpZGF0ZSkgXAogICAg
IG1hY3JvKG5lZ290aWF0aW9ubmVlZGVkKSBcCisgICAgbWFjcm8oZGF0YWNoYW5uZWwpIFwKICAg
ICBcCiAgICAgbWFjcm8oc2hvdykgXAogICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KaW5k
ZXggOWU5ZTBjODYzMDdhZDAwZWM4NjdhOGJhNjc2NDBlMGZhMDUwMGU1ZS4uMzQ3MWMwNzEwYWI0
Y2E1NTJkY2Y1MjQyMjFiZjdkNzg2NjBlYzExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4K
QEAgLTMyLDYgKzMyLDcgQEAgT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50IGNvbmRpdGlvbmFs
PVdFQl9BVURJTwogTWVkaWFTdHJlYW1FdmVudCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1l
ZGlhU3RyZWFtVHJhY2tFdmVudCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFJUQ0ljZUNhbmRp
ZGF0ZUV2ZW50IGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorUlRDRGF0YUNoYW5uZWxFdmVudCBj
b25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFNwZWVjaElucHV0RXZlbnQgY29uZGl0aW9uYWw9SU5Q
VVRfU1BFRUNICiBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIGNvbmRpdGlvbmFsPVNDUklQVEVEX1NQ
RUVDSAogU3BlZWNoUmVjb2duaXRpb25FdmVudCBjb25kaXRpb25hbD1TQ1JJUFRFRF9TUEVFQ0gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IDc5MWJkNGVkYTVj
YTM3YWY0NTc4MzYzNDk3Nzk1MTMwNzRjMmQyZjQuLjdjMzliZDNmNDM2ZTQxZmYwODZjY2YwZDUx
MDhlN2U1YjRlZGIyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
bgpAQCAtMjYsNiArMjYsNyBAQCBOb2RlCiBOb3RpZmljYXRpb24gY29uZGl0aW9uYWw9Tk9USUZJ
Q0FUSU9OU3xMRUdBQ1lfTk9USUZJQ0FUSU9OUwogUGVlckNvbm5lY3Rpb24wMCBjb25kaXRpb25h
bD1NRURJQV9TVFJFQU0KIFBlcmZvcm1hbmNlIGNvbmRpdGlvbmFsPVdFQl9USU1JTkcKK1JUQ0Rh
dGFDaGFubmVsIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogUlRDUGVlckNvbm5lY3Rpb24gY29u
ZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBTaGFyZWRXb3JrZXIgY29uZGl0aW9uYWw9U0hBUkVEX1dP
UktFUlMKIFNoYXJlZFdvcmtlckNvbnRleHQgY29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwNjgxMDBlYmFjOGJkNjlk
ZDYxNWI1MDVjNjE5MzVkOTQ2ZmFjMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwCkBAIC0w
LDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3Iu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvcj4gUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBs
YWJlbCwgYm9vbCByZWxpYWJsZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0RhdGFD
aGFubmVsRGVzY3JpcHRvcihsYWJlbCwgcmVsaWFibGUpKTsKK30KKworUlRDRGF0YUNoYW5uZWxE
ZXNjcmlwdG9yOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBsYWJlbCwg
Ym9vbCByZWxpYWJsZSkKKyAgICA6IG1fbGFiZWwobGFiZWwpCisgICAgLCBtX3JlbGlhYmxlKHJl
bGlhYmxlKQorICAgICwgbV9yZWFkeVN0YXRlKFJlYWR5U3RhdGVDb25uZWN0aW5nKQorICAgICwg
bV9idWZmZXJlZEFtb3VudCgwKQoreworfQorCitSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6On5S
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3IoKQoreworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQoUmVhZHlTdGF0ZSByZWFkeVN0YXRlKQoreworICAg
IEFTU0VSVChtX3JlYWR5U3RhdGUgIT0gUmVhZHlTdGF0ZUNsb3NlZCk7CisgICAgaWYgKG1fcmVh
ZHlTdGF0ZSAhPSByZWFkeVN0YXRlICYmIG1fb3duZXIpIHsKKyAgICAgICAgbV9yZWFkeVN0YXRl
ID0gcmVhZHlTdGF0ZTsKKyAgICAgICAgbV9vd25lci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKKyAg
ICB9Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpkYXRhQXJyaXZlZChjb25z
dCBTdHJpbmcmIGRhdGEpCit7CisgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSAhPSBSZWFkeVN0YXRl
Q2xvc2VkKTsKKyAgICBpZiAobV9vd25lcikKKyAgICAgICAgbV9vd25lci0+ZGF0YUFycml2ZWQo
ZGF0YSk7Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpkYXRhQXJyaXZlZChj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3sKKyAgICBBU1NFUlQobV9yZWFk
eVN0YXRlICE9IFJlYWR5U3RhdGVDbG9zZWQpOworICAgIGlmIChtX293bmVyKQorICAgICAgICBt
X293bmVyLT5kYXRhQXJyaXZlZChkYXRhLCBkYXRhTGVuZ3RoKTsKK30KKwordm9pZCBSVENEYXRh
Q2hhbm5lbERlc2NyaXB0b3I6OmVycm9yKCkKK3sKKyAgICBBU1NFUlQobV9yZWFkeVN0YXRlICE9
IFJlYWR5U3RhdGVDbG9zZWQpOworICAgIGlmIChtX293bmVyKQorICAgICAgICBtX293bmVyLT5l
cnJvcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWMy
Yzg5MjY4MGRjOTA3MGE4MTAwZWUwZTlhNzFjYjM4YmJjYmI2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlw
dG9yLmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3JfaAorI2RlZmluZSBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3JfaAorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvciA6
IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4geworcHVibGljOgor
ICAgIGNsYXNzIE93bmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfk93bmVyKCkg
eyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKCkgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGF0YUFycml2ZWQoY29uc3QgU3RyaW5nJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGF0YUFycml2ZWQoY29uc3QgY2hhciosIHNpemVfdCkgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoKSA9IDA7CisgICAgfTsKKworICAgIGNsYXNzIEV4dHJh
RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEV4dHJhRGF0YT4geworICAgIHB1YmxpYzoKKyAgICAg
ICAgdmlydHVhbCB+RXh0cmFEYXRhKCkgeyB9CisgICAgfTsKKworICAgIGVudW0gUmVhZHlTdGF0
ZSB7CisgICAgICAgIFJlYWR5U3RhdGVDb25uZWN0aW5nID0gMCwKKyAgICAgICAgUmVhZHlTdGF0
ZU9wZW4gPSAxLAorICAgICAgICBSZWFkeVN0YXRlQ2xvc2luZyA9IDIsCisgICAgICAgIFJlYWR5
U3RhdGVDbG9zZWQgPSAzLAorICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEYXRh
Q2hhbm5lbERlc2NyaXB0b3I+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlh
YmxlKTsKKyAgICB2aXJ0dWFsIH5SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IoKTsKKworICAgIFJU
Q0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6T3duZXIqIG93bmVyKCkgY29uc3QgeyByZXR1cm4gbV9v
d25lcjsgfQorICAgIHZvaWQgc2V0T3duZXIoT3duZXIqIG93bmVyKSB7IG1fb3duZXIgPSBvd25l
cjsgfQorCisgICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7
IH0KKyAgICBib29sIHJlbGlhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9yZWxpYWJsZTsgfQorCisg
ICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9
CisKKyAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXJlZEFtb3VudDsgfQorICAgIHZvaWQgc2V0QnVmZmVyZWRBbW91bnQodW5zaWduZWQgbG9u
ZyBidWZmZXJlZEFtb3VudCkgeyBtX2J1ZmZlcmVkQW1vdW50ID0gYnVmZmVyZWRBbW91bnQ7IH0K
KworICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoUmVhZHlTdGF0ZSk7CisgICAgdm9pZCBkYXRh
QXJyaXZlZChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0IGNoYXIq
LCBzaXplX3QpOworICAgIHZvaWQgZXJyb3IoKTsKKworICAgIFBhc3NSZWZQdHI8RXh0cmFEYXRh
PiBleHRyYURhdGEoKSBjb25zdCB7IHJldHVybiBtX2V4dHJhRGF0YTsgfQorICAgIHZvaWQgc2V0
RXh0cmFEYXRhKFBhc3NSZWZQdHI8RXh0cmFEYXRhPiBleHRyYURhdGEpIHsgbV9leHRyYURhdGEg
PSBleHRyYURhdGE7IH0KKworcHJpdmF0ZToKKyAgICBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3Io
Y29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSk7CisKKyAgICBPd25lciogbV9vd25l
cjsKKyAgICBTdHJpbmcgbV9sYWJlbDsKKyAgICBib29sIG1fcmVsaWFibGU7CisgICAgUmVhZHlT
dGF0ZSBtX3JlYWR5U3RhdGU7CisgICAgdW5zaWduZWQgbG9uZyBtX2J1ZmZlcmVkQW1vdW50Owor
ICAgIFJlZlB0cjxFeHRyYURhdGE+IG1fZXh0cmFEYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFJU
Q0RhdGFDaGFubmVsRGVzY3JpcHRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcApp
bmRleCA2NjNmYmM4ZDU2OTlkMTdmZGQxNGQzYmYyMTZiNTk2M2EzMTdjODJhLi44NTA5ZjJlOTQy
NzU2OGJhNjI3OTk4MGRhMzYwYzYxZjFhNDVjNDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5jcHAKQEAgLTYyLDYgKzYyLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
U3RhdHMoUGFzc1JlZlB0cjxSVENTdGF0c1JlcXVlc3Q+KSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCisgICAgLy8gUlRDRGF0YUNoYW5uZWwuCisgICAgdmly
dHVhbCBib29sIG9wZW5EYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvcj4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzZW5kU3RyaW5nRGF0YShQYXNzUmVm
UHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4sIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvcj4sIGNvbnN0IGNoYXIqLCBzaXplX3QpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZURhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPikg
T1ZFUlJJREU7CisKIHByaXZhdGU6CiAgICAgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
KiBtX2NsaWVudDsKIH07CkBAIC0xMzksNiArMTQ1LDI1IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyRHVtbXk6OnN0b3AoKQogewogfQogCitib29sIFJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckR1bW15OjpvcGVuRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3I+KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJEdW1teTo6c2VuZFN0cmluZ0RhdGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3I+LCBjb25zdCBTdHJpbmcmKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6c2VuZFJhd0RhdGEoUGFzc1JlZlB0cjxS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBjaGFyKiwgc2l6ZV90KQoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6Y2xv
c2VEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4pCit7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCmluZGV4IGU2OTA3MDViZTdhNGEyZTZlNTlk
MDQxN2Q0M2JhZGJkYTQ3MTIwOTkuLmZiYTQ1ODg3ZTY3OTk2NTZmMjY2MzdlNGVmZGVhNGU5NjU2
NjAzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCkBAIC00MSw2ICs0MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFDb25zdHJhaW50czsKIGNsYXNzIFJUQ0Nv
bmZpZ3VyYXRpb247CitjbGFzcyBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I7CiBjbGFzcyBSVENJ
Y2VDYW5kaWRhdGVEZXNjcmlwdG9yOwogY2xhc3MgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xp
ZW50OwogY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjsKQEAgLTY4LDYgKzY5
LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoUGFzc1JlZlB0cjxSVENT
dGF0c1JlcXVlc3Q+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7CiAKKyAgICAv
LyBSVENEYXRhQ2hhbm5lbC4KKyAgICB2aXJ0dWFsIGJvb2wgb3BlbkRhdGFDaGFubmVsKFBhc3NS
ZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBz
ZW5kU3RyaW5nRGF0YShQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4sIGNvbnN0
IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoUGFzc1JlZlB0cjxS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGNsb3NlRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3I+KSA9IDA7CisKIHByb3RlY3RlZDoKICAgICBSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oCmluZGV4
IDMzYjkwNDI2MGI3Zjg0NjQ5YWU0OWU2ZGZkNjEzYTBiMjg4MzA4MzAuLjM4OWM4NjcxYjk0YmU3
MzgzZTU1ZDRiNmM3ZDA0MjNkZmUxZjQ2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKK2NsYXNzIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRv
cjsKIGNsYXNzIFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I7CiAKIGNsYXNzIFJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlckNsaWVudCB7CkBAIC02OSw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlSWNlU3RhdGUoSWNlU3RhdGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQWRkUmVtb3RlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVSZW1vdGVTdHJlYW0oTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKikgPSAwOworCisgICAgLy8gUlRDRGF0YUNoYW5uZWwuCisgICAgdmlydHVhbCB2
b2lkIGRpZEFkZFJlbW90ZURhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yPikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwCmluZGV4
IDRlNGUxMzE3NTkzMzE0MTY4NWNlMWRjMmIxMDNjMGFlMjhlODdlNDIuLjA3YzFjY2QxNWFhYzU1
YjYxZGFkYzBlNGFiYzBjNjA1ODk5ZWFjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1
bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAK
IAogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKICNpbmNsdWRlICJSVENDb25maWd1cmF0
aW9uLmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAi
UlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckNsaWVudC5oIgogI2luY2x1ZGUgIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0
b3IuaCIKQEAgLTIxMiw2ICsyMTMsMjkgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
aHJvbWl1bTo6ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWUKICAgICBt
X2NsaWVudC0+ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKHdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcik7
CiB9CiAKK2Jvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06Om9wZW5EYXRhQ2hh
bm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gZGF0YUNoYW5uZWwpCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFdlYktpdCBjaGFuZ2VzIGhhdmUgbGFuZGVk
LgorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
aHJvbWl1bTo6c2VuZFN0cmluZ0RhdGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0
b3I+IGRhdGFDaGFubmVsLCBjb25zdCBTdHJpbmcmIGRhdGEpCit7CisgICAgLy8gRklYTUU6IElt
cGxlbWVudCB3aGVuIFdlYktpdCBjaGFuZ2VzIGhhdmUgbGFuZGVkLgorICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6c2VuZFJhd0Rh
dGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IGRhdGFDaGFubmVsLCBjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHdoZW4gV2ViS2l0IGNoYW5nZXMgaGF2ZSBsYW5kZWQuCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpjbG9zZURhdGFDaGFu
bmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBkYXRhQ2hhbm5lbCkKK3sK
KyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdoZW4gV2ViS2l0IGNoYW5nZXMgaGF2ZSBsYW5kZWQu
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9j
aHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
Q2hyb21pdW0uaAppbmRleCBiNjY5YjI1NmFlYTQwMTBkY2NjYTU4YjBmMTg2ZWIxMWE2Njg0MjYy
Li42ZGExMTk1N2E3YzVmODZmYjViYmU3ZDZkZGY3YWQ2ZjhhMzc4ZTBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmgKQEAgLTY3
LDYgKzY3LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoUGFzc1JlZlB0
cjxSVENTdGF0c1JlcXVlc3Q+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9W
RVJSSURFOwogCisgICAgdmlydHVhbCBib29sIG9wZW5EYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJU
Q0RhdGFDaGFubmVsRGVzY3JpcHRvcj4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzZW5k
U3RyaW5nRGF0YShQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4sIGNvbnN0IFN0
cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShQYXNzUmVmUHRy
PFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4sIGNvbnN0IGNoYXIqLCBzaXplX3QpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBjbG9zZURhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNo
YW5uZWxEZXNjcmlwdG9yPikgT1ZFUlJJREU7CisKICAgICAvLyBXZWJLaXQ6OldlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQg
bmVnb3RpYXRpb25OZWVkZWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkR2VuZXJh
dGVJQ0VDYW5kaWRhdGUoY29uc3QgV2ViS2l0OjpXZWJSVENJQ0VDYW5kaWRhdGUmKSBPVkVSUklE
RTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168386</attachid>
            <date>2012-10-12 03:04:27 -0700</date>
            <delta_ts>2012-10-12 11:28:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99080-20121012120322.patch</filename>
            <type>text/plain</type>
            <size>56164</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBmNDMyYjYxYzhmNDI0
NzhmMmM0M2E3MzkyZmE0NzY0ZjA3YjdlNy4uMDJiYTNhMDY5ZGIxNWFiODdiNGU4N2I4MjBhZWJh
NDM5ODY1NzYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxMi0xMC0xMiAgVG9t
bXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVh
bSBBUEk6IEltcGxlbWVudCBSVENEYXRhQ2hhbm5lbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkwODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgUlRDRGF0YUNoYW5u
ZWwgd2hpY2ggaXMgYSBwaXBlIGZvciBzZW5kaW5nIGRhdGEgYmV0d2VlbiB0d28gUlRDUGVlckNv
bm5lY3Rpb25zLgorICAgICAgICBTaW5jZSB0aGUgZGF0YSBjaGFubmVsIGJlbG9uZ3MgdG8gYSBw
ZWVyIGNvbm5lY3Rpb24gb2JqZWN0IEkgaGF2ZSByZXVzZWQgcGFydCBvZiBpdHMgaW5mcmFzdHJ1
Y3R1cmUuCisKKyAgICAgICAgTm90IGN1cnJlbnRseSB0ZXN0YWJsZS4gTXkgbmV4dCBwYXRjaCB3
aWxsIGFkZCB0aGUgY2hyb21pdW0gV2ViS2l0IGZ1bmN0aW9uYWxpdHksIHRvZ2V0aGVyIHdpdGgg
bW9ja3MgYW5kIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWw6OlJUQ0RhdGFDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
Ojp+UlRDRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6Omxh
YmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpyZWxpYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSVENEYXRhQ2hhbm5lbDo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWw6OmJpbmFyeVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWw6OnNldEJpbmFyeVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6
OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmNsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpyZWFkeVN0YXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGF0YUFycml2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWw6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsOjpkZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjppbnRl
cmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpldmVudFRhcmdldERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWw6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEV2ZW50OjpSVENEYXRhQ2hhbm5lbEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRXZlbnQ6On5SVENEYXRhQ2hhbm5l
bEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxFdmVudDo6aW50ZXJmYWNlTmFtZSk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENEYXRhQ2hhbm5lbEV2ZW50KToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVEYXRhQ2hhbm5l
bCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0
aW9uOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6ZGlkQWRk
UmVtb3RlRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246
OnN0b3ApOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb24pOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaW46CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjp+UlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxEZXNjcmlwdG9yOjpkYXRhQXJyaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I6OmVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvckNsaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3JDbGllbnQ6On5SVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3JDbGllbnQpOgorICAgICAgICAoUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKToKKyAg
ICAgICAgKEV4dHJhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3I6OkV4dHJhRGF0YTo6fkV4dHJhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRh
Q2hhbm5lbERlc2NyaXB0b3I6OmNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3I6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3I6OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcjo6cmVsaWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxE
ZXNjcmlwdG9yOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcjo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxEZXNjcmlwdG9yOjpzZXRCdWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OmV4dHJhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OnNldEV4dHJhRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKFJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckR1bW15OjpvcGVuRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6c2Vu
ZFN0cmluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
RHVtbXk6OnNlbmRSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckR1bW15OjpjbG9zZURhdGFDaGFubmVsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDaHJvbWl1bTo6b3BlbkRhdGFDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OnNlbmRTdHJpbmdE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
OjpzZW5kUmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDaHJvbWl1bTo6Y2xvc2VEYXRhQ2hhbm5lbCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtKToKKwogMjAxMi0xMC0xMiAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjEzMDM4OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTg2MWQ4MDc0OGNl
NTk1NjRmYjI2YzY2MGIxZTA5NTcyZGQyZjA4ZC4uYWZmNGY5ZDlkNDY0Yjg2NjU0M2IxZGZiYjBj
NzQ3NDY4ZDVjODk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyNCw2ICsyMjQsOCBAQCBT
RVQoV2ViQ29yZV9JRExfRklMRVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVz
ZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0
b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbjAwLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbAog
ICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRXJyb3JDYWxsYmFjay5pZGwKICAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0ljZUNhbmRpZGF0ZUV2ZW50LmlkbApAQCAtODYyLDYgKzg2NCw4IEBAIFNFVChXZWJDb3Jl
X1NPVVJDRVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmNw
cAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmNwcAorICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbEV2ZW50LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlk
YXRlLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRXZlbnQuY3Bw
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTE5NTks
NiArMTk2Myw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAw
SGFuZGxlci5jcHAKKyAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3IuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3Jp
cHRvci5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVz
Y3JpcHRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGYwZWI3N2U5M2Zk
Y2QxYzAwOThkOGY2NTRkZWRhZjUwOTJhZDc3NTUuLmM0NWY1YzY4YWJkZGY0ZGE5YjZhYmI3NzFk
NTQ4MjQxNGQwYzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjI3LDYg
KzYyNywxMCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTUkdCQ29sb3IuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUkdC
Q29sb3IuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0RhdGFDaGFubmVsLmNwcCBc
CisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0RhdGFDaGFubmVsLmggXAorCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNSVENEYXRhQ2hhbm5lbEV2ZW50LmNwcCBcCisJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ0RhdGFDaGFubmVsRXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1JUQ0Vycm9yQ2FsbGJhY2suY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
UlRDRXJyb3JDYWxsYmFjay5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDSWNlQ2Fu
ZGlkYXRlLmNwcCBcCkBAIC0xMjM2LDYgKzEyNDAsOCBAQCBkb21fYmluZGluZ19pZGxzICs9IFwK
IAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JD
YWxsYmFjay5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JV
c2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb24wMC5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0Vycm9yQ2FsbGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDSWNlQ2FuZGlkYXRlLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0ljZUNhbmRpZGF0ZUV2ZW50LmlkbCBcCkBAIC0xOTM0LDYgKzE5NDAsMTAgQEAgd2ViY29y
ZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFcnJvckNhbGxiYWNrLmggXAog
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaCBc
CkBAIC00NjEyLDkgKzQ2MjIsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwSGFuZGxlci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwSGFuZGxl
ckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENDb25m
aWd1cmF0aW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsRGVzY3JpcHRvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5o
IFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRp
b25EZXNjcmlwdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY2NWI5OTBjMTVlMjcwNzhhNThjM2IxZmEzMmJjMWI0ZDFjY2Ex
MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsLmNwcApAQCAtMCwwICsxLDI2NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUg
IlJUQ0RhdGFDaGFubmVsLmgiCisKKyNpbmNsdWRlICJCbG9iLmgiCisjaW5jbHVkZSAiRXZlbnQu
aCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50Lmgi
CisjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1
ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNz
UmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogaGFuZGxlciwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgQVNTRVJUKGhhbmRsZXIpOworICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbD4gZGF0YUNo
YW5uZWwgPSBjcmVhdGUoY29udGV4dCwgaGFuZGxlciwgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9y
OjpjcmVhdGUobGFiZWwsIHJlbGlhYmxlKSk7CisgICAgaWYgKCFoYW5kbGVyLT5vcGVuRGF0YUNo
YW5uZWwoZGF0YUNoYW5uZWwtPmRlc2NyaXB0b3IoKSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQ
UE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBkYXRhQ2hh
bm5lbC5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IFJUQ0RhdGFD
aGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyKiBoYW5kbGVyLCBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvcj4gZGVzY3JpcHRvcikKK3sKKyAgICBBU1NFUlQoaGFuZGxlcik7CisgICAgQVNTRVJUKGRl
c2NyaXB0b3IpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUlRDRGF0YUNoYW5uZWwoY29udGV4
dCwgaGFuZGxlciwgZGVzY3JpcHRvcikpOworfQorCitSVENEYXRhQ2hhbm5lbDo6UlRDRGF0YUNo
YW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyKiBoYW5kbGVyLCBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gZGVz
Y3JpcHRvcikKKyAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQorICAgICwg
bV9zdG9wcGVkKGZhbHNlKQorICAgICwgbV9kZXNjcmlwdG9yKGRlc2NyaXB0b3IpCisgICAgLCBt
X2JpbmFyeVR5cGUoQmluYXJ5VHlwZUFycmF5QnVmZmVyKQorICAgICwgbV9oYW5kbGVyKGhhbmRs
ZXIpCit7CisgICAgbV9kZXNjcmlwdG9yLT5zZXRDbGllbnQodGhpcyk7Cit9CisKK1JUQ0RhdGFD
aGFubmVsOjp+UlRDRGF0YUNoYW5uZWwoKQoreworICAgIG1fZGVzY3JpcHRvci0+c2V0Q2xpZW50
KDApOworfQorCitTdHJpbmcgUlRDRGF0YUNoYW5uZWw6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9kZXNjcmlwdG9yLT5sYWJlbCgpOworfQorCitib29sIFJUQ0RhdGFDaGFubmVsOjpy
ZWxpYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGVzY3JpcHRvci0+cmVsaWFibGUoKTsK
K30KKworU3RyaW5nIFJUQ0RhdGFDaGFubmVsOjpyZWFkeVN0YXRlKCkgY29uc3QKK3sKKyAgICBz
d2l0Y2ggKG1fZGVzY3JpcHRvci0+cmVhZHlTdGF0ZSgpKSB7CisgICAgY2FzZSBSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVDb25uZWN0aW5nOgorICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJjb25uZWN0aW5nIik7CisgICAgY2FzZSBSVENEYXRhQ2hhbm5lbERlc2NyaXB0
b3I6OlJlYWR5U3RhdGVPcGVuOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvcGVuIik7
CisgICAgY2FzZSBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVDbG9zaW5nOgor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJjbG9zaW5nIik7CisgICAgY2FzZSBSVENEYXRh
Q2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVDbG9zZWQ6CisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoImNsb3NlZCIpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwordW5zaWduZWQgbG9uZyBSVENEYXRhQ2hhbm5lbDo6
YnVmZmVyZWRBbW91bnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2Rlc2NyaXB0b3ItPmJ1ZmZl
cmVkQW1vdW50KCk7Cit9CisKK1N0cmluZyBSVENEYXRhQ2hhbm5lbDo6YmluYXJ5VHlwZSgpIGNv
bnN0Cit7CisgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsKKyAgICBjYXNlIEJpbmFyeVR5cGVC
bG9iOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJibG9iIik7CisgICAgY2FzZSBCaW5h
cnlUeXBlQXJyYXlCdWZmZXI6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImFycmF5YnVm
ZmVyIik7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbDo6c2V0QmluYXJ5VHlwZShjb25zdCBTdHJp
bmcmIGJpbmFyeVR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChiaW5hcnlUeXBl
ID09ICJibG9iIikKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICBlbHNlIGlm
IChiaW5hcnlUeXBlID09ICJhcnJheWJ1ZmZlciIpCisgICAgICAgIG1fYmluYXJ5VHlwZSA9IEJp
bmFyeVR5cGVBcnJheUJ1ZmZlcjsKKyAgICBlbHNlCisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRD
SF9FUlI7Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBkYXRh
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9kZXNjcmlwdG9yLT5yZWFkeVN0YXRl
KCkgIT0gUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSZWFkeVN0YXRlT3BlbikgeworICAgICAg
ICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
ICghbV9oYW5kbGVyLT5zZW5kU3RyaW5nRGF0YShkZXNjcmlwdG9yKCksIGRhdGEpKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBEZWNpZGUgd2hhdCB0aGUgcmlnaHQgZXhjZXB0aW9uIGhlcmUgaXMuCisg
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICB9Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWw6
OnNlbmQoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gcHJwRGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgaWYgKG1fZGVzY3JpcHRvci0+cmVhZHlTdGF0ZSgpICE9IFJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcjo6UmVhZHlTdGF0ZU9wZW4pIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
ZGF0YSA9IHBycERhdGE7CisKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGRhdGEtPmJ5dGVMZW5n
dGgoKTsKKyAgICBpZiAoIWRhdGFMZW5ndGgpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0
IGNoYXIqIGRhdGFQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEtPmRhdGEo
KSk7CisKKyAgICBpZiAoIW1faGFuZGxlci0+c2VuZFJhd0RhdGEoZGVzY3JpcHRvcigpLCBkYXRh
UG9pbnRlciwgZGF0YUxlbmd0aCkpIHsKKyAgICAgICAgLy8gRklYTUU6IERlY2lkZSB3aGF0IHRo
ZSByaWdodCBleGNlcHRpb24gaGVyZSBpcy4KKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAg
IH0KK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbDo6c2VuZChQYXNzUmVmUHRyPEFycmF5QnVmZmVy
Vmlldz4gZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBhcnJheUJ1ZmZlcihkYXRhLT5idWZmZXIoKSk7CisgICAgc2VuZChhcnJheUJ1ZmZlci5yZWxl
YXNlKCksIGVjKTsKK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbDo6c2VuZChQYXNzUmVmUHRyPEJs
b2I+IGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
KyAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpj
bG9zZSgpCit7CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9o
YW5kbGVyLT5jbG9zZURhdGFDaGFubmVsKGRlc2NyaXB0b3IoKSk7Cit9CisKK3ZvaWQgUlRDRGF0
YUNoYW5uZWw6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzd2l0Y2ggKG1fZGVzY3JpcHRvci0+cmVhZHlTdGF0ZSgpKSB7
CisgICAgY2FzZSBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVPcGVuOgorICAg
ICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm9wZW5FdmVudCwg
ZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUlRDRGF0YUNoYW5uZWxE
ZXNjcmlwdG9yOjpSZWFkeVN0YXRlQ2xvc2VkOgorICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQg
UlRDRGF0YUNoYW5uZWw6OmRhdGFBcnJpdmVkKGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBp
ZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBkaXNwYXRjaEV2ZW50KE1lc3Nh
Z2VFdmVudDo6Y3JlYXRlKHRleHQpKTsKK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbDo6ZGF0YUFy
cml2ZWQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCit7CisgICAgaWYgKG1f
c3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fYmluYXJ5VHlwZSA9PSBCaW5h
cnlUeXBlQmxvYikgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChtX2JpbmFyeVR5cGUgPT0gQmluYXJ5VHlwZUFycmF5QnVmZmVy
KSB7CisgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShidWZmZXIucmVsZWFzZSgpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWw6OmVycm9y
KCkKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBkaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxz
ZSkpOworfQorCitSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IqIFJUQ0RhdGFDaGFubmVsOjpkZXNj
cmlwdG9yKCkKK3sKKyAgICByZXR1cm4gbV9kZXNjcmlwdG9yLmdldCgpOworfQorCitjb25zdCBB
dG9taWNTdHJpbmcmIFJUQ0RhdGFDaGFubmVsOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclJUQ0RhdGFDaGFubmVsOworfQorCitT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBSVENEYXRhQ2hhbm5lbDo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK30K
Kwordm9pZCBSVENEYXRhQ2hhbm5lbDo6c3RvcCgpCit7CisgICAgbV9zdG9wcGVkID0gdHJ1ZTsK
KyAgICBtX2hhbmRsZXIgPSAwOworICAgIG1fZGVzY3JpcHRvci0+c2V0Q2xpZW50KDApOworICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IDA7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogUlRD
RGF0YUNoYW5uZWw6OmV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFy
Z2V0RGF0YTsKK30KKworRXZlbnRUYXJnZXREYXRhKiBSVENEYXRhQ2hhbm5lbDo6ZW5zdXJlRXZl
bnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU0NDM5OGM2MjUxYjMyNzlhOTVkZDMxMTJjNjY4N2Y4NDZhMWM2ODUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmgKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
UlRDRGF0YUNoYW5uZWxfaAorI2RlZmluZSBSVENEYXRhQ2hhbm5lbF9oCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaCIKKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBC
bG9iOworY2xhc3MgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOworCitjbGFzcyBSVENEYXRhQ2hh
bm5lbCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0RhdGFDaGFubmVsPiwgcHVibGljIEV2ZW50VGFy
Z2V0LCBwdWJsaWMgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqLCBjb25zdCBTdHJpbmcmIGxhYmVs
LCBib29sIHJlbGlhYmxlLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
UlRDRGF0YUNoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyKiwgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KTsK
KyAgICB+UlRDRGF0YUNoYW5uZWwoKTsKKworICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OworCisg
ICAgYm9vbCByZWxpYWJsZSgpIGNvbnN0OworCisgICAgU3RyaW5nIHJlYWR5U3RhdGUoKSBjb25z
dDsKKworICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKKworICAgIFN0
cmluZyBiaW5hcnlUeXBlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRCaW5hcnlUeXBlKGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIHZvaWQgc2VuZChjb25zdCBTdHJpbmcmLCBF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZW5kKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCBF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZW5kKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3
PiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2VuZChQYXNzUmVmUHRyPEJsb2I+LCBFeGNl
cHRpb25Db2RlJik7CisKKyAgICB2b2lkIGNsb3NlKCk7CisKKyAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKG9wZW4pOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIoZXJyb3IpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2xvc2UpOwor
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIobWVzc2FnZSk7CisKKyAgICBSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3IqIGRlc2NyaXB0b3IoKTsKKyAgICB2b2lkIHN0b3AoKTsKKwor
ICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVy
ZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKKworICAgIHVz
aW5nIFJlZkNvdW50ZWQ8UlRDRGF0YUNoYW5uZWw+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRl
ZDxSVENEYXRhQ2hhbm5lbD46OmRlcmVmOworCitwcml2YXRlOgorICAgIFJUQ0RhdGFDaGFubmVs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqLCBQYXNz
UmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4pOworCisgICAgLy8gRXZlbnRUYXJnZXQK
KyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmly
dHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOworICAgIHZpcnR1
YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50
VGFyZ2V0RGF0YTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CisKKyAgICAvLyBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6Ok93bmVyCisgICAg
dmlydHVhbCB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRhdGFBcnJpdmVkKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkYXRhQXJyaXZlZChjb25zdCBjaGFyKiwgc2l6ZV90KSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZXJyb3IoKSBPVkVSUklERTsKKworICAgIGJvb2wgbV9zdG9wcGVkOworICAgIFJlZlB0
cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IG1fZGVzY3JpcHRvcjsKKworICAgIGVudW0gQmlu
YXJ5VHlwZSB7CisgICAgICAgIEJpbmFyeVR5cGVCbG9iLAorICAgICAgICBCaW5hcnlUeXBlQXJy
YXlCdWZmZXIKKyAgICB9OworICAgIEJpbmFyeVR5cGUgbV9iaW5hcnlUeXBlOworCisgICAgLy8g
Tm90IG93bmVkIGJ5IHRoaXMgY2xhc3MuCisgICAgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBt
X2hhbmRsZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUlRDRGF0YUNoYW5uZWxfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40NTQ1MmNmMDM5ZDlkYjJlZjdmZjZlMDAwYzYzOGJmMjI2Y2E4MWVlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbC5pZGwKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworaW50ZXJmYWNlIFsK
KyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAgRXZlbnRUYXJnZXQKK10gUlRDRGF0
YUNoYW5uZWwgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gcmVsaWFibGU7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyByZWFkeVN0YXRlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIGJ1ZmZlcmVkQW1vdW50OworCisgICAgYXR0cmlidXRlIERPTVN0cmluZyBiaW5hcnlU
eXBlCisgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgIHZvaWQgc2Vu
ZChpbiBBcnJheUJ1ZmZlciBkYXRhKQorICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAg
ICB2b2lkIHNlbmQoaW4gQXJyYXlCdWZmZXJWaWV3IGRhdGEpCisgICAgICAgIHJhaXNlcyhET01F
eGNlcHRpb24pOworICAgIHZvaWQgc2VuZChpbiBCbG9iIGRhdGEpCisgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOworICAgIHZvaWQgc2VuZChpbiBET01TdHJpbmcgZGF0YSkKKyAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICB2b2lkIGNsb3NlKCk7CisKKyAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbm9wZW47CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25l
cnJvcjsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsb3NlOworICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9ubWVzc2FnZTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFj
ZQorICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIHZv
aWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIGJv
b2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldmVudCkKKyAgICAgICAgcmFpc2VzKEV2ZW50
RXhjZXB0aW9uKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjI3MTM1Yjc0
ZDFiODA3MWM2MjhhMzFhMWIwOTgzNjBhM2ZiOWNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcApAQCAt
MCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUlRDRGF0YUNoYW5uZWxFdmVudC5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxFdmVudD4gUlRD
RGF0YUNoYW5uZWxFdmVudDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJU
Q0RhdGFDaGFubmVsRXZlbnQpOworfQorCitQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRXZlbnQ+
IFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+
IGNoYW5uZWwpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSVENEYXRhQ2hhbm5lbEV2ZW50
KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgY2hhbm5lbCkpOworfQorCisKK1JUQ0RhdGFD
aGFubmVsRXZlbnQ6OlJUQ0RhdGFDaGFubmVsRXZlbnQoKQoreworfQorCitSVENEYXRhQ2hhbm5l
bEV2ZW50OjpSVENEYXRhQ2hhbm5lbEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4g
Y2hhbm5lbCkKKyAgICA6IEV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSkKKyAgICAs
IG1fY2hhbm5lbChjaGFubmVsKQoreworfQorCitSVENEYXRhQ2hhbm5lbEV2ZW50Ojp+UlRDRGF0
YUNoYW5uZWxFdmVudCgpCit7Cit9CisKK1JUQ0RhdGFDaGFubmVsKiBSVENEYXRhQ2hhbm5lbEV2
ZW50OjpjaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jaGFubmVsLmdldCgpOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmludGVyZmFjZU5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yUlRDRGF0YUNo
YW5uZWxFdmVudDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjA4Y2I3OTky
ZWE3ODg2ZDE0OTg0MzE0MTI0YjVjZWE5YWUxNzRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmgKQEAgLTAs
MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSVENEYXRhQ2hhbm5lbEV2ZW50X2gK
KyNkZWZpbmUgUlRDRGF0YUNoYW5uZWxFdmVudF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbC5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJUQ0RhdGFDaGFubmVsRXZlbnQgOiBwdWJsaWMgRXZlbnQgeworcHVibGljOgorICAg
IHZpcnR1YWwgflJUQ0RhdGFDaGFubmVsRXZlbnQoKTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFJUQ0RhdGFDaGFubmVsRXZlbnQ+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJU
Q0RhdGFDaGFubmVsRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+KTsK
KworICAgIFJUQ0RhdGFDaGFubmVsKiBjaGFubmVsKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCitwcml2YXRlOgorICAg
IFJUQ0RhdGFDaGFubmVsRXZlbnQoKTsKKyAgICBSVENEYXRhQ2hhbm5lbEV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1Jl
ZlB0cjxSVENEYXRhQ2hhbm5lbD4pOworCisgICAgUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBtX2No
YW5uZWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUlRDRGF0YUNoYW5uZWxFdmVudF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZl
bnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEV2ZW50LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDQ0M2FhOGJiMDcxOTU2YjY4ZDUyNTYzODY1YjYyM2Q3
YjAyNzU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitpbnRlcmZhY2UgWworICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKK10gUlRDRGF0
YUNoYW5uZWxFdmVudCA6IEV2ZW50IHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgUlRDRGF0YUNo
YW5uZWwgY2hhbm5lbDsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGI5ODExYWRkODAyMzQyZjhm
OTMyZDI0MzQyMDIyYjg1NmY2NzA3NDMuLmJhZWVkZDIyYmYzZmNhNTM5MGE3NzIyZWZhZTYzMWI3
ZWFlYzI2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC00Myw2ICs0Myw4IEBACiAjaW5jbHVkZSAi
TWVkaWFDb25zdHJhaW50c0ltcGwuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbUV2ZW50LmgiCiAj
aW5jbHVkZSAiUlRDQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsLmgi
CisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxFdmVudC5oIgogI2luY2x1ZGUgIlJUQ0Vycm9yQ2Fs
bGJhY2suaCIKICNpbmNsdWRlICJSVENJY2VDYW5kaWRhdGUuaCIKICNpbmNsdWRlICJSVENJY2VD
YW5kaWRhdGVEZXNjcmlwdG9yLmgiCkBAIC00MDgsNiArNDEwLDIyIEBAIHZvaWQgUlRDUGVlckNv
bm5lY3Rpb246OmdldFN0YXRzKFBhc3NSZWZQdHI8UlRDU3RhdHNDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLCBQCiAgICAgbV9wZWVySGFuZGxlci0+Z2V0U3RhdHMoc3RhdHNSZXF1ZXN0LnJlbGVh
c2UoKSk7CiB9CiAKK1Bhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IFJUQ1BlZXJDb25uZWN0aW9u
OjpjcmVhdGVEYXRhQ2hhbm5lbChTdHJpbmcgbGFiZWwsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlv
bnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gUmVhZHlT
dGF0ZUNsb3NlZCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKKyAgICBib29sIHJlbGlhYmxlID0gdHJ1ZTsKKyAgICBvcHRpb25z
LmdldCgicmVsaWFibGUiLCByZWxpYWJsZSk7CisgICAgUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBj
aGFubmVsID0gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IG1fcGVlckhhbmRsZXIuZ2V0KCksIGxhYmVsLCByZWxpYWJsZSwgZWMpOworICAgIGlmIChlYykK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgbV9kYXRhQ2hhbm5lbHMuYXBwZW5kKGNoYW5uZWwpOwor
ICAgIHJldHVybiBjaGFubmVsLnJlbGVhc2UoKTsKK30KKwogdm9pZCBSVENQZWVyQ29ubmVjdGlv
bjo6Y2xvc2UoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBS
ZWFkeVN0YXRlQ2xvc2luZyB8fCBtX3JlYWR5U3RhdGUgPT0gUmVhZHlTdGF0ZUNsb3NlZCkgewpA
QCAtNDE1LDkgKzQzMywxMCBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpjbG9zZShFeGNlcHRp
b25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIG1fcGVlckhhbmRsZXIt
PnN0b3AoKTsKKwogICAgIGNoYW5nZUljZVN0YXRlKEljZVN0YXRlQ2xvc2VkKTsKICAgICBjaGFu
Z2VSZWFkeVN0YXRlKFJlYWR5U3RhdGVDbG9zZWQpOwotICAgIHN0b3AoKTsKIH0KIAogdm9pZCBS
VENQZWVyQ29ubmVjdGlvbjo6bmVnb3RpYXRpb25OZWVkZWQoKQpAQCAtNDc4LDYgKzQ5NywxOSBA
QCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpkaWRSZW1vdmVSZW1vdGVTdHJlYW0oTWVkaWFTdHJl
YW1EZXNjcmlwdG9yKiBzdHJlYW1EZXNjcgogICAgIGRpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1F
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmVzdHJlYW1FdmVudCwgZmFsc2UsIGZhbHNl
LCBzdHJlYW0ucmVsZWFzZSgpKSk7CiB9CiAKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmRpZEFk
ZFJlbW90ZURhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBj
aGFubmVsRGVzY3JpcHRvcikKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc0NvbnRleHRUaHJlYWQoKSk7CisKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IFJlYWR5U3Rh
dGVDbG9zZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbD4g
Y2hhbm5lbCA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBtX3BlZXJIYW5kbGVyLmdldCgpLCBjaGFubmVsRGVzY3JpcHRvcik7CisgICAgbV9kYXRhQ2hh
bm5lbHMuYXBwZW5kKGNoYW5uZWwpOworCisgICAgZGlzcGF0Y2hFdmVudChSVENEYXRhQ2hhbm5l
bEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRhdGFjaGFubmVsRXZlbnQsIGZhbHNlLCBmYWxz
ZSwgY2hhbm5lbC5yZWxlYXNlKCkpKTsKK30KKwogY29uc3QgQXRvbWljU3RyaW5nJiBSVENQZWVy
Q29ubmVjdGlvbjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGV2ZW50TmFt
ZXMoKS5pbnRlcmZhY2VGb3JSVENQZWVyQ29ubmVjdGlvbjsKQEAgLTQ5MCwxMyArNTIyLDE3IEBA
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFJUQ1BlZXJDb25uZWN0aW9uOjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QKIAogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6c3RvcCgpCiB7Cisg
ICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBSZWFkeVN0YXRlQ2xvc2VkKQorICAgICAgICBtX3BlZXJI
YW5kbGVyLT5zdG9wKCk7CisKKyAgICBtX3BlZXJIYW5kbGVyLmNsZWFyKCk7CisKICAgICBtX2lj
ZVN0YXRlID0gSWNlU3RhdGVDbG9zZWQ7CiAgICAgbV9yZWFkeVN0YXRlID0gUmVhZHlTdGF0ZUNs
b3NlZDsKIAotICAgIGlmIChtX3BlZXJIYW5kbGVyKSB7Ci0gICAgICAgIG1fcGVlckhhbmRsZXIt
PnN0b3AoKTsKLSAgICAgICAgbV9wZWVySGFuZGxlci5jbGVhcigpOwotICAgIH0KKyAgICBWZWN0
b3I8UmVmUHRyPFJUQ0RhdGFDaGFubmVsPiA+OjppdGVyYXRvciBpID0gbV9kYXRhQ2hhbm5lbHMu
YmVnaW4oKTsKKyAgICBmb3IgKDsgaSAhPSBtX2RhdGFDaGFubmVscy5lbmQoKTsgKytpKQorICAg
ICAgICAoKmkpLT5zdG9wKCk7CiB9CiAKIEV2ZW50VGFyZ2V0RGF0YSogUlRDUGVlckNvbm5lY3Rp
b246OmV2ZW50VGFyZ2V0RGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggYTc3YWVmMjZkYjAyOWNlOThl
NDkxZDUzNDI0MWFmOTYzYjE3YWViZS4uYzdmOWI5MTBmODIxNzRiYjRkY2RiZThjYzA1M2NmOTE1
YTFjOTk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKIGNs
YXNzIFJUQ0NvbmZpZ3VyYXRpb247CitjbGFzcyBSVENEYXRhQ2hhbm5lbDsKIGNsYXNzIFJUQ0Vy
cm9yQ2FsbGJhY2s7CiBjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb247CiBjbGFzcyBSVENTZXNz
aW9uRGVzY3JpcHRpb25DYWxsYmFjazsKQEAgLTg4LDYgKzg5LDggQEAgcHVibGljOgogCiAgICAg
dm9pZCBnZXRTdGF0cyhQYXNzUmVmUHRyPFJUQ1N0YXRzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
aywgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBzZWxlY3Rvcik7CiAKKyAgICBQYXNzUmVm
UHRyPFJUQ0RhdGFDaGFubmVsPiBjcmVhdGVEYXRhQ2hhbm5lbChTdHJpbmcgbGFiZWwsIGNvbnN0
IERpY3Rpb25hcnkmIGRhdGFDaGFubmVsRGljdCwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgdm9p
ZCBjbG9zZShFeGNlcHRpb25Db2RlJik7CiAKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKG5lZ290aWF0aW9ubmVlZGVkKTsKQEAgLTk3LDYgKzEwMCw3IEBAIHB1YmxpYzoKICAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFkZHN0cmVhbSk7CiAgICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihyZW1vdmVzdHJlYW0pOwogICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIoaWNlY2hhbmdlKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKGRhdGFjaGFubmVsKTsKIAogICAgIC8vIFJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBuZWdvdGlhdGlvbk5lZWRlZCgpIE9WRVJSSURF
OwpAQCAtMTA1LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
SWNlU3RhdGUoSWNlU3RhdGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRSZW1v
dGVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRv
ciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChQ
YXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4pIE9WRVJSSURFOwogCiAgICAgLy8g
RXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFt
ZSgpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTM3LDYgKzE0Miw4IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPE1lZGlhU3RyZWFtTGlzdD4gbV9sb2NhbFN0cmVhbXM7CiAgICAgUmVmUHRyPE1lZGlhU3Ry
ZWFtTGlzdD4gbV9yZW1vdGVTdHJlYW1zOwogCisgICAgVmVjdG9yPFJlZlB0cjxSVENEYXRhQ2hh
bm5lbD4gPiBtX2RhdGFDaGFubmVsczsKKwogICAgIE93blB0cjxSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXI+IG1fcGVlckhhbmRsZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCmluZGV4IDMxMjY5ZGQ1
ZTM4ODc5NDE4ZWNhMTE5Yzc3YjQ2NDQwZDYyMWIyYWYuLjY3YjMwMTEyNWExN2MzNzdhNTliODdi
OWVmMzA1ZDNkOGZlODU4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCkBAIC03Miw2ICs3Miw5IEBAIGlu
dGVyZmFjZSBbCiAKICAgICB2b2lkIGdldFN0YXRzKGluIFtDYWxsYmFja10gUlRDU3RhdHNDYWxs
YmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIE1l
ZGlhU3RyZWFtVHJhY2sgc2VsZWN0b3IpOwogCisgICAgUlRDRGF0YUNoYW5uZWwgY3JlYXRlRGF0
YUNoYW5uZWwoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVs
bFN0cmluZ10gRE9NU3RyaW5nIGxhYmVsLCBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVk
XSBEaWN0aW9uYXJ5IG9wdGlvbnMpCisgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKwog
ICAgIHZvaWQgY2xvc2UoKQogICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIApAQCAtODIs
NiArODUsNyBAQCBpbnRlcmZhY2UgWwogICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRk
c3RyZWFtOwogICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucmVtb3Zlc3RyZWFtOwogICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uaWNlY2hhbmdlOworICAgIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9uZGF0YWNoYW5uZWw7CiAKICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UK
ICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggMjE0YWMyN2U4MzA5ZmNkNmJhNzFiMDJkNjI0M2ZmZWIyODRjZDk5Ni4uMWVjN2Rk
OGNkZmExNDY0Njk1NWQ2MjQ0MGE2YmM3NjY3NjdjZjQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
NDU3LDYgKzQ1Nyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb24wMEhhbmRsZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZURlc2Ny
aXB0b3IuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyLmgnLApAQCAtODY3LDYgKzg2OSw4IEBACiAgICAgICAgICAgICAnTW9kdWxl
cy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2Fs
bGJhY2suaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uMDAuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFcnJvckNh
bGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5k
aWRhdGUuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRp
ZGF0ZUV2ZW50LmlkbCcsCkBAIC0xNjEyLDYgKzE2MTYsMTAgQEAKICAgICAgICAgICAgICdNb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oJywKICAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuY3BwJywKICAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oJywKKyAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCcsCisgICAgICAgICAg
ICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmgnLAorICAgICAgICAg
ICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRXJyb3JDYWxsYmFjay5oJywKICAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmgKaW5kZXggNjY5YmY2NDhjNWMyMTg3MzQ3ZGU4ZWIyNDU4MDg0YzFhMzE4OTYxZS4u
N2EwNTUyYTRhNzBkYTkzZDQyMDExN2ZkMjAyZTkyMDljM2I0NzIxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5oCkBAIC0yMjgsNiArMjI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1h
Y3JvKGljZWNoYW5nZSkgXAogICAgIG1hY3JvKGljZWNhbmRpZGF0ZSkgXAogICAgIG1hY3JvKG5l
Z290aWF0aW9ubmVlZGVkKSBcCisgICAgbWFjcm8oZGF0YWNoYW5uZWwpIFwKICAgICBcCiAgICAg
bWFjcm8oc2hvdykgXAogICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KaW5kZXggOWU5ZTBj
ODYzMDdhZDAwZWM4NjdhOGJhNjc2NDBlMGZhMDUwMGU1ZS4uMzQ3MWMwNzEwYWI0Y2E1NTJkY2Y1
MjQyMjFiZjdkNzg2NjBlYzExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KQEAgLTMyLDYg
KzMyLDcgQEAgT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50IGNvbmRpdGlvbmFsPVdFQl9BVURJ
TwogTWVkaWFTdHJlYW1FdmVudCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lZGlhU3RyZWFt
VHJhY2tFdmVudCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFJUQ0ljZUNhbmRpZGF0ZUV2ZW50
IGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorUlRDRGF0YUNoYW5uZWxFdmVudCBjb25kaXRpb25h
bD1NRURJQV9TVFJFQU0KIFNwZWVjaElucHV0RXZlbnQgY29uZGl0aW9uYWw9SU5QVVRfU1BFRUNI
CiBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIGNvbmRpdGlvbmFsPVNDUklQVEVEX1NQRUVDSAogU3Bl
ZWNoUmVjb2duaXRpb25FdmVudCBjb25kaXRpb25hbD1TQ1JJUFRFRF9TUEVFQ0gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IDc5MWJkNGVkYTVjYTM3YWY0NTc4
MzYzNDk3Nzk1MTMwNzRjMmQyZjQuLjdjMzliZDNmNDM2ZTQxZmYwODZjY2YwZDUxMDhlN2U1YjRl
ZGIyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rvcnku
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMjYs
NiArMjYsNyBAQCBOb2RlCiBOb3RpZmljYXRpb24gY29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OU3xM
RUdBQ1lfTk9USUZJQ0FUSU9OUwogUGVlckNvbm5lY3Rpb24wMCBjb25kaXRpb25hbD1NRURJQV9T
VFJFQU0KIFBlcmZvcm1hbmNlIGNvbmRpdGlvbmFsPVdFQl9USU1JTkcKK1JUQ0RhdGFDaGFubmVs
IGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogUlRDUGVlckNvbm5lY3Rpb24gY29uZGl0aW9uYWw9
TUVESUFfU1RSRUFNCiBTaGFyZWRXb3JrZXIgY29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNo
YXJlZFdvcmtlckNvbnRleHQgY29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyNjk1YjM0NTk0ZWE1NzcwNWQ5NDE4ZTMx
OTkwOWQ5OGFkYWE2ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsODIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4g
UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9v
bCByZWxpYWJsZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0RhdGFDaGFubmVsRGVz
Y3JpcHRvcihsYWJlbCwgcmVsaWFibGUpKTsKK30KKworUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9y
OjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxp
YWJsZSkKKyAgICA6IG1fbGFiZWwobGFiZWwpCisgICAgLCBtX3JlbGlhYmxlKHJlbGlhYmxlKQor
ICAgICwgbV9yZWFkeVN0YXRlKFJlYWR5U3RhdGVDb25uZWN0aW5nKQorICAgICwgbV9idWZmZXJl
ZEFtb3VudCgwKQoreworfQorCitSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6On5SVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3IoKQoreworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6
cmVhZHlTdGF0ZUNoYW5nZWQoUmVhZHlTdGF0ZSByZWFkeVN0YXRlKQoreworICAgIEFTU0VSVCht
X3JlYWR5U3RhdGUgIT0gUmVhZHlTdGF0ZUNsb3NlZCk7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSAh
PSByZWFkeVN0YXRlICYmIG1fY2xpZW50KSB7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IHJlYWR5
U3RhdGU7CisgICAgICAgIG1fY2xpZW50LT5yZWFkeVN0YXRlQ2hhbmdlZCgpOworICAgIH0KK30K
Kwordm9pZCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OmRhdGFBcnJpdmVkKGNvbnN0IFN0cmlu
ZyYgZGF0YSkKK3sKKyAgICBBU1NFUlQobV9yZWFkeVN0YXRlICE9IFJlYWR5U3RhdGVDbG9zZWQp
OworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRhdGFBcnJpdmVkKGRhdGEp
OworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6ZGF0YUFycml2ZWQoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCit7CisgICAgQVNTRVJUKG1fcmVhZHlTdGF0
ZSAhPSBSZWFkeVN0YXRlQ2xvc2VkKTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5kYXRhQXJyaXZlZChkYXRhLCBkYXRhTGVuZ3RoKTsKK30KKwordm9pZCBSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3I6OmVycm9yKCkKK3sKKyAgICBBU1NFUlQobV9yZWFkeVN0YXRlICE9IFJl
YWR5U3RhdGVDbG9zZWQpOworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmVy
cm9yKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhY2I0
YWMzYmNlOWU2NWY1MWQ4MGQyNzc5ZmQwMmRjMjk4OTYwM2UKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0
b3IuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ0RhdGFDaGFu
bmVsRGVzY3JpcHRvcl9oCisjZGVmaW5lIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcl9oCisKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3JDbGll
bnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZCgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGF0YUFycml2ZWQoY29uc3QgU3RyaW5nJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGVycm9yKCkgPSAwOworfTsKKworY2xhc3MgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9y
IDogcHVibGljIFJlZkNvdW50ZWQ8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiB7CitwdWJsaWM6
CisgICAgY2xhc3MgRXh0cmFEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8RXh0cmFEYXRhPiB7Cisg
ICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5FeHRyYURhdGEoKSB7IH0KKyAgICB9OworCisg
ICAgZW51bSBSZWFkeVN0YXRlIHsKKyAgICAgICAgUmVhZHlTdGF0ZUNvbm5lY3RpbmcgPSAwLAor
ICAgICAgICBSZWFkeVN0YXRlT3BlbiA9IDEsCisgICAgICAgIFJlYWR5U3RhdGVDbG9zaW5nID0g
MiwKKyAgICAgICAgUmVhZHlTdGF0ZUNsb3NlZCA9IDMsCisgICAgfTsKKworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
bGFiZWwsIGJvb2wgcmVsaWFibGUpOworICAgIHZpcnR1YWwgflJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvcigpOworCisgICAgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yQ2xpZW50KiBjbGllbnQoKSBj
b25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorICAgIHZvaWQgc2V0Q2xpZW50KFJUQ0RhdGFDaGFu
bmVsRGVzY3JpcHRvckNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisKKyAg
ICBjb25zdCBTdHJpbmcmIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIGJv
b2wgcmVsaWFibGUoKSBjb25zdCB7IHJldHVybiBtX3JlbGlhYmxlOyB9CisKKyAgICBSZWFkeVN0
YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH0KKworICAgIHVu
c2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcmVkQW1v
dW50OyB9CisgICAgdm9pZCBzZXRCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVk
QW1vdW50KSB7IG1fYnVmZmVyZWRBbW91bnQgPSBidWZmZXJlZEFtb3VudDsgfQorCisgICAgdm9p
ZCByZWFkeVN0YXRlQ2hhbmdlZChSZWFkeVN0YXRlKTsKKyAgICB2b2lkIGRhdGFBcnJpdmVkKGNv
bnN0IFN0cmluZyYpOworICAgIHZvaWQgZGF0YUFycml2ZWQoY29uc3QgY2hhciosIHNpemVfdCk7
CisgICAgdm9pZCBlcnJvcigpOworCisgICAgUGFzc1JlZlB0cjxFeHRyYURhdGE+IGV4dHJhRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZXh0cmFEYXRhOyB9CisgICAgdm9pZCBzZXRFeHRyYURhdGEo
UGFzc1JlZlB0cjxFeHRyYURhdGE+IGV4dHJhRGF0YSkgeyBtX2V4dHJhRGF0YSA9IGV4dHJhRGF0
YTsgfQorCitwcml2YXRlOgorICAgIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcihjb25zdCBTdHJp
bmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKTsKKworICAgIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRv
ckNsaWVudCogbV9jbGllbnQ7CisgICAgU3RyaW5nIG1fbGFiZWw7CisgICAgYm9vbCBtX3JlbGlh
YmxlOworICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOworICAgIHVuc2lnbmVkIGxvbmcgbV9i
dWZmZXJlZEFtb3VudDsKKyAgICBSZWZQdHI8RXh0cmFEYXRhPiBtX2V4dHJhRGF0YTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNlbmRpZiAvLyBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3JfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlci5jcHAKaW5kZXggNjYzZmJjOGQ1Njk5ZDE3ZmRkMTRkM2JmMjE2YjU5NjNhMzE3
YzgyYS4uODUwOWYyZTk0Mjc1NjhiYTYyNzk5ODBkYTM2MGM2MWYxYTQ1YzQ1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCkBAIC02Miw2ICs2MiwxMiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGdldFN0YXRzKFBhc3NSZWZQdHI8UlRDU3RhdHNSZXF1ZXN0PikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKIAorICAgIC8vIFJUQ0RhdGFD
aGFubmVsLgorICAgIHZpcnR1YWwgYm9vbCBvcGVuRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0
cmluZ0RhdGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBTdHJp
bmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZFJhd0RhdGEoUGFzc1JlZlB0cjxS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBjaGFyKiwgc2l6ZV90KSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFu
bmVsRGVzY3JpcHRvcj4pIE9WRVJSSURFOworCiBwcml2YXRlOgogICAgIFJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlckNsaWVudCogbV9jbGllbnQ7CiB9OwpAQCAtMTM5LDYgKzE0NSwyNSBAQCB2b2lk
IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15OjpzdG9wKCkKIHsKIH0KIAorYm9vbCBSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6b3BlbkRhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yPikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OnNlbmRTdHJpbmdEYXRhKFBhc3NSZWZQdHI8
UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OnNlbmRSYXdE
YXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgY2hhciosIHNp
emVfdCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyRHVtbXk6OmNsb3NlRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3I+KQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCBlNjkw
NzA1YmU3YTRhMmU2ZTU5ZDA0MTdkNDNiYWRiZGE0NzEyMDk5Li5mYmE0NTg4N2U2Nzk5NjU2ZjI2
NjM3ZTRlZmRlYTRlOTY1NjYwMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAt
NDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhQ29uc3RyYWlu
dHM7CiBjbGFzcyBSVENDb25maWd1cmF0aW9uOworY2xhc3MgUlRDRGF0YUNoYW5uZWxEZXNjcmlw
dG9yOwogY2xhc3MgUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjsKIGNsYXNzIFJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlckNsaWVudDsKIGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0
b3I7CkBAIC02OCw2ICs2OSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRz
KFBhc3NSZWZQdHI8UlRDU3RhdHNSZXF1ZXN0PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9w
KCkgPSAwOwogCisgICAgLy8gUlRDRGF0YUNoYW5uZWwuCisgICAgdmlydHVhbCBib29sIG9wZW5E
YXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4pID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3I+LCBjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNlbmRSYXdE
YXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgY2hhciosIHNp
emVfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZURhdGFDaGFubmVsKFBhc3NSZWZQdHI8
UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPikgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAgUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyKCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDbGllbnQuaAppbmRleCAzM2I5MDQyNjBiN2Y4NDY0OWFlNDllNmRmZDYxM2EwYjI4ODMwODMw
Li4zODljODY3MWI5NGJlNzM4M2U1NWQ0YjZjN2QwNDIzZGZlMWY0NjYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7CitjbGFzcyBSVENEYXRh
Q2hhbm5lbERlc2NyaXB0b3I7CiBjbGFzcyBSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOwogCiBj
bGFzcyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQgewpAQCAtNjksNiArNzAsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljZVN0YXRlKEljZVN0YXRlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcj4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3Ry
ZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopID0gMDsKKworICAgIC8vIFJUQ0RhdGFDaGFubmVs
LgorICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJU
Q0RhdGFDaGFubmVsRGVzY3JpcHRvcj4pID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9t
aXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNo
cm9taXVtLmNwcAppbmRleCA0ZTRlMTMxNzU5MzMxNDE2ODVjZTFkYzJiMTAzYzBhZTI4ZTg3ZTQy
Li4wN2MxY2NkMTVhYWM1NWI2MWRhZGMwZTRhYmMwYzYwNTg5OWVhYzYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwCkBA
IC0zNiw2ICszNiw3IEBACiAKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAjaW5jbHVk
ZSAiUlRDQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRv
ci5oIgogI2luY2x1ZGUgIlJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCIKICNpbmNsdWRlICJSVENTZXNzaW9uRGVz
Y3JpcHRpb25EZXNjcmlwdG9yLmgiCkBAIC0yMTIsNiArMjEzLDI5IEBAIHZvaWQgUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmRpZFJlbW92ZVJlbW90ZVN0cmVhbShjb25zdCBXZWJL
aXQ6OldlYk1lCiAgICAgbV9jbGllbnQtPmRpZFJlbW92ZVJlbW90ZVN0cmVhbSh3ZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3IpOwogfQogCitib29sIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9t
aXVtOjpvcGVuRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+
IGRhdGFDaGFubmVsKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgd2hlbiBXZWJLaXQgY2hh
bmdlcyBoYXZlIGxhbmRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OnNlbmRTdHJpbmdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0
YUNoYW5uZWxEZXNjcmlwdG9yPiBkYXRhQ2hhbm5lbCwgY29uc3QgU3RyaW5nJiBkYXRhKQorewor
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgd2hlbiBXZWJLaXQgY2hhbmdlcyBoYXZlIGxhbmRlZC4K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hy
b21pdW06OnNlbmRSYXdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBk
YXRhQ2hhbm5lbCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCit7CisgICAg
Ly8gRklYTUU6IEltcGxlbWVudCB3aGVuIFdlYktpdCBjaGFuZ2VzIGhhdmUgbGFuZGVkLgorICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1
bTo6Y2xvc2VEYXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4g
ZGF0YUNoYW5uZWwpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFdlYktpdCBjaGFu
Z2VzIGhhdmUgbGFuZGVkLgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNocm9taXVtLmgKaW5kZXggYjY2OWIyNTZhZWE0MDEwZGNjY2E1OGIw
ZjE4NmViMTFhNjY4NDI2Mi4uNmRhMTE5NTdhN2M1Zjg2ZmI1YmJlN2Q2ZGRmN2FkNmY4YTM3OGUw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21p
dW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
aHJvbWl1bS5oCkBAIC02Nyw2ICs2NywxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdl
dFN0YXRzKFBhc3NSZWZQdHI8UlRDU3RhdHNSZXF1ZXN0PikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHN0b3AoKSBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgYm9vbCBvcGVuRGF0YUNoYW5u
ZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3I+LCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZFJh
d0RhdGEoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+LCBjb25zdCBjaGFyKiwg
c2l6ZV90KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhQ2hhbm5lbChQYXNz
UmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4pIE9WRVJSSURFOworCiAgICAgLy8gV2Vi
S2l0OjpXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCiAg
ICAgdmlydHVhbCB2b2lkIG5lZ290aWF0aW9uTmVlZGVkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEdlbmVyYXRlSUNFQ2FuZGlkYXRlKGNvbnN0IFdlYktpdDo6V2ViUlRDSUNFQ2Fu
ZGlkYXRlJikgT1ZFUlJJREU7Cg==
</data>
<flag name="review"
          id="181343"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168639</attachid>
            <date>2012-10-15 00:39:31 -0700</date>
            <delta_ts>2012-10-15 15:21:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99080-20121015093817.patch</filename>
            <type>text/plain</type>
            <size>56186</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjEyN2MzNWI4NTgxYTlh
MWFkZmFhOGRmOTU1YTE4ZDc1YWRkY2QzYS4uOTM1MjNjOGU0YTQ2YWU3MTNiMjUxMTk0ZTQ4ZjFm
YTAxZjNlYmI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxMi0xMC0xMiAgVG9t
bXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVh
bSBBUEk6IEltcGxlbWVudCBSVENEYXRhQ2hhbm5lbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkwODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgUlRDRGF0YUNoYW5u
ZWwgd2hpY2ggaXMgYSBwaXBlIGZvciBzZW5kaW5nIGRhdGEgYmV0d2VlbiB0d28gUlRDUGVlckNv
bm5lY3Rpb25zLgorICAgICAgICBTaW5jZSB0aGUgZGF0YSBjaGFubmVsIGJlbG9uZ3MgdG8gYSBw
ZWVyIGNvbm5lY3Rpb24gb2JqZWN0IEkgaGF2ZSByZXVzZWQgcGFydCBvZiBpdHMgaW5mcmFzdHJ1
Y3R1cmUuCisKKyAgICAgICAgTm90IGN1cnJlbnRseSB0ZXN0YWJsZS4gTXkgbmV4dCBwYXRjaCB3
aWxsIGFkZCB0aGUgY2hyb21pdW0gV2ViS2l0IGZ1bmN0aW9uYWxpdHksIHRvZ2V0aGVyIHdpdGgg
bW9ja3MgYW5kIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWw6OlJUQ0RhdGFDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
Ojp+UlRDRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6Omxh
YmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpyZWxpYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSVENEYXRhQ2hhbm5lbDo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDRGF0YUNoYW5uZWw6OmJpbmFyeVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWw6OnNldEJpbmFyeVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6
OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmNsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpyZWFkeVN0YXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGF0YUFycml2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWw6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFu
bmVsOjpkZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjppbnRl
cmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpldmVudFRhcmdldERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWw6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbEV2ZW50OjpSVENEYXRhQ2hhbm5lbEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRXZlbnQ6On5SVENEYXRhQ2hhbm5l
bEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxFdmVudDo6aW50ZXJmYWNlTmFtZSk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENEYXRhQ2hhbm5lbEV2ZW50KToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVEYXRhQ2hhbm5l
bCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0
aW9uOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6ZGlkQWRk
UmVtb3RlRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246
OnN0b3ApOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb24pOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaW46CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjp+UlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcjo6cmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxEZXNjcmlwdG9yOjpkYXRhQXJyaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I6OmVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvckNsaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3JDbGllbnQ6On5SVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3JDbGllbnQpOgorICAgICAgICAoUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKToKKyAg
ICAgICAgKEV4dHJhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERlc2Ny
aXB0b3I6OkV4dHJhRGF0YTo6fkV4dHJhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRh
Q2hhbm5lbERlc2NyaXB0b3I6OmNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3I6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3I6OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcjo6cmVsaWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxE
ZXNjcmlwdG9yOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcjo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxEZXNjcmlwdG9yOjpzZXRCdWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OmV4dHJhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OnNldEV4dHJhRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKFJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckR1bW15OjpvcGVuRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6c2Vu
ZFN0cmluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
RHVtbXk6OnNlbmRSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckR1bW15OjpjbG9zZURhdGFDaGFubmVsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDaHJvbWl1bTo6b3BlbkRhdGFDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OnNlbmRTdHJpbmdE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
OjpzZW5kUmF3RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDaHJvbWl1bTo6Y2xvc2VEYXRhQ2hhbm5lbCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtKToKKwogMjAxMi0xMC0xMiAgSWx5
YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogTk1JIHJlbW92ZSBoYW5kIG1hZGUgb2JqZWN0IGJ1aWxkZXJzIHdpdGggYXV0b21hdGlj
IGJ1aWxkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGU4NjFkODA3NDhjZTU5NTY0ZmIyNmM2
NjBiMWUwOTU3MmRkMmYwOGQuLmFmZjRmOWQ5ZDQ2NGI4NjY1NDNiMWRmYmIwYzc0NzQ2OGQ1Yzg5
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjQsNiArMjI0LDggQEAgU0VUKFdlYkNvcmVf
SURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
ckNhbGxiYWNrLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlh
U3VjY2Vzc0NhbGxiYWNrLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b24wMC5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlkbAorICAg
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5pZGwKICAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0Vycm9yQ2FsbGJhY2suaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENJY2VDYW5kaWRhdGUuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5k
aWRhdGVFdmVudC5pZGwKQEAgLTg2Miw2ICs4NjQsOCBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcAogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMC5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxF
dmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUV2ZW50LmNwcAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xOTU5LDYgKzE5NjMsNyBA
QCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1DZW50ZXIuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2Uu
Y3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIuY3Bw
CisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcAog
ICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcAogICAg
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBmMGViNzdlOTNmZGNkMWMwMDk4ZDhm
NjU0ZGVkYWY1MDkyYWQ3NzU1Li5jNDVmNWM2OGFiZGRmNGRhOWI2YWJiNzcxZDU0ODI0MTRkMGM2
NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTYyNyw2ICs2MjcsMTAgQEAg
d2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmVx
dWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JHQkNvbG9yLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JHQkNvbG9yLmggXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEYXRhQ2hhbm5lbC5jcHAgXAorCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNSVENEYXRhQ2hhbm5lbC5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNSVENEYXRhQ2hhbm5lbEV2ZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENF
cnJvckNhbGxiYWNrLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0Vycm9yQ2Fs
bGJhY2suaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0ljZUNhbmRpZGF0ZS5jcHAg
XApAQCAtMTIzNiw2ICsxMjQwLDggQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRs
IFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3Vj
Y2Vzc0NhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uMDAuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWxFdmVudC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFcnJv
ckNhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNh
bmRpZGF0ZS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5k
aWRhdGVFdmVudC5pZGwgXApAQCAtMTkzNCw2ICsxOTQwLDEwIEBAIHdlYmNvcmVfbW9kdWxlc19z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
clVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDAuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcCBcCisJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmggXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRXJyb3JDYWxsYmFjay5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmggXApAQCAtNDYxMiw5
ICs0NjIyLDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDQ29uZmlndXJhdGlvbi5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERl
c2NyaXB0b3IuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuaCBcCi0JU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRv
ci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42NjViOTkwYzE1ZTI3MDc4YTU4YzNiMWZhMzJiYzFiNGQxY2NhMTIwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5jcHAKQEAgLTAsMCArMSwyNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJSVENEYXRhQ2hh
bm5lbC5oIgorCisjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUg
IlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvQXJy
YXlCdWZmZXJWaWV3Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxSVENE
YXRhQ2hhbm5lbD4gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIGhhbmRsZXIsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEFTU0VS
VChoYW5kbGVyKTsKKyAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGRhdGFDaGFubmVsID0gY3Jl
YXRlKGNvbnRleHQsIGhhbmRsZXIsIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6Y3JlYXRlKGxh
YmVsLCByZWxpYWJsZSkpOworICAgIGlmICghaGFuZGxlci0+b3BlbkRhdGFDaGFubmVsKGRhdGFD
aGFubmVsLT5kZXNjcmlwdG9yKCkpKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gZGF0YUNoYW5uZWwucmVsZWFz
ZSgpOworfQorCitQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBSVENEYXRhQ2hhbm5lbDo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlciogaGFuZGxlciwgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IGRlc2Ny
aXB0b3IpCit7CisgICAgQVNTRVJUKGhhbmRsZXIpOworICAgIEFTU0VSVChkZXNjcmlwdG9yKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIGhhbmRsZXIs
IGRlc2NyaXB0b3IpKTsKK30KKworUlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFDaGFubmVsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogaGFu
ZGxlciwgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IGRlc2NyaXB0b3IpCisg
ICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKKyAgICAsIG1fc3RvcHBlZChm
YWxzZSkKKyAgICAsIG1fZGVzY3JpcHRvcihkZXNjcmlwdG9yKQorICAgICwgbV9iaW5hcnlUeXBl
KEJpbmFyeVR5cGVBcnJheUJ1ZmZlcikKKyAgICAsIG1faGFuZGxlcihoYW5kbGVyKQoreworICAg
IG1fZGVzY3JpcHRvci0+c2V0Q2xpZW50KHRoaXMpOworfQorCitSVENEYXRhQ2hhbm5lbDo6flJU
Q0RhdGFDaGFubmVsKCkKK3sKKyAgICBtX2Rlc2NyaXB0b3ItPnNldENsaWVudCgwKTsKK30KKwor
U3RyaW5nIFJUQ0RhdGFDaGFubmVsOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGVz
Y3JpcHRvci0+bGFiZWwoKTsKK30KKworYm9vbCBSVENEYXRhQ2hhbm5lbDo6cmVsaWFibGUoKSBj
b25zdAoreworICAgIHJldHVybiBtX2Rlc2NyaXB0b3ItPnJlbGlhYmxlKCk7Cit9CisKK1N0cmlu
ZyBSVENEYXRhQ2hhbm5lbDo6cmVhZHlTdGF0ZSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX2Rl
c2NyaXB0b3ItPnJlYWR5U3RhdGUoKSkgeworICAgIGNhc2UgUlRDRGF0YUNoYW5uZWxEZXNjcmlw
dG9yOjpSZWFkeVN0YXRlQ29ubmVjdGluZzoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
Y29ubmVjdGluZyIpOworICAgIGNhc2UgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSZWFkeVN0
YXRlT3BlbjoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgib3BlbiIpOworICAgIGNhc2Ug
UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSZWFkeVN0YXRlQ2xvc2luZzoKKyAgICAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgiY2xvc2luZyIpOworICAgIGNhc2UgUlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yOjpSZWFkeVN0YXRlQ2xvc2VkOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJj
bG9zZWQiKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgUlRDRGF0YUNoYW5uZWw6OmJ1ZmZlcmVkQW1v
dW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kZXNjcmlwdG9yLT5idWZmZXJlZEFtb3VudCgp
OworfQorCitTdHJpbmcgUlRDRGF0YUNoYW5uZWw6OmJpbmFyeVR5cGUoKSBjb25zdAoreworICAg
IHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CisgICAgY2FzZSBCaW5hcnlUeXBlQmxvYjoKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYmxvYiIpOworICAgIGNhc2UgQmluYXJ5VHlwZUFycmF5
QnVmZmVyOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJhcnJheWJ1ZmZlciIpOworICAg
IH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
K3ZvaWQgUlRDRGF0YUNoYW5uZWw6OnNldEJpbmFyeVR5cGUoY29uc3QgU3RyaW5nJiBiaW5hcnlU
eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoYmluYXJ5VHlwZSA9PSAiYmxvYiIp
CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgZWxzZSBpZiAoYmluYXJ5VHlw
ZSA9PSAiYXJyYXlidWZmZXIiKQorICAgICAgICBtX2JpbmFyeVR5cGUgPSBCaW5hcnlUeXBlQXJy
YXlCdWZmZXI7CisgICAgZWxzZQorICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworfQor
Cit2b2lkIFJUQ0RhdGFDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgZGF0YSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgaWYgKG1fZGVzY3JpcHRvci0+cmVhZHlTdGF0ZSgpICE9IFJUQ0Rh
dGFDaGFubmVsRGVzY3JpcHRvcjo6UmVhZHlTdGF0ZU9wZW4pIHsKKyAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIW1faGFuZGxl
ci0+c2VuZFN0cmluZ0RhdGEoZGVzY3JpcHRvcigpLCBkYXRhKSkgeworICAgICAgICAvLyBGSVhN
RTogRGVjaWRlIHdoYXQgdGhlIHJpZ2h0IGV4Y2VwdGlvbiBoZXJlIGlzLgorICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CisgICAgfQorfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpzZW5kKFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IHBycERhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
IChtX2Rlc2NyaXB0b3ItPnJlYWR5U3RhdGUoKSAhPSBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6
OlJlYWR5U3RhdGVPcGVuKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEgPSBwcnBE
YXRhOworCisgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBkYXRhLT5ieXRlTGVuZ3RoKCk7CisgICAg
aWYgKCFkYXRhTGVuZ3RoKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBjaGFyKiBkYXRh
UG9pbnRlciA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhLT5kYXRhKCkpOworCisgICAg
aWYgKCFtX2hhbmRsZXItPnNlbmRSYXdEYXRhKGRlc2NyaXB0b3IoKSwgZGF0YVBvaW50ZXIsIGRh
dGFMZW5ndGgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBEZWNpZGUgd2hhdCB0aGUgcmlnaHQgZXhj
ZXB0aW9uIGhlcmUgaXMuCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICB9Cit9CisKK3Zv
aWQgUlRDRGF0YUNoYW5uZWw6OnNlbmQoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGRhdGEs
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZm
ZXIoZGF0YS0+YnVmZmVyKCkpOworICAgIHNlbmQoYXJyYXlCdWZmZXIucmVsZWFzZSgpLCBlYyk7
Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWw6OnNlbmQoUGFzc1JlZlB0cjxCbG9iPiBkYXRhLCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgZWMgPSBO
T1RfU1VQUE9SVEVEX0VSUjsKK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbDo6Y2xvc2UoKQorewor
ICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faGFuZGxlci0+Y2xv
c2VEYXRhQ2hhbm5lbChkZXNjcmlwdG9yKCkpOworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsOjpy
ZWFkeVN0YXRlQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgc3dpdGNoIChtX2Rlc2NyaXB0b3ItPnJlYWR5U3RhdGUoKSkgeworICAgIGNhc2Ug
UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpSZWFkeVN0YXRlT3BlbjoKKyAgICAgICAgZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5vcGVuRXZlbnQsIGZhbHNlLCBmYWxz
ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6
UmVhZHlTdGF0ZUNsb3NlZDoKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIFJUQ0RhdGFDaGFu
bmVsOjpkYXRhQXJyaXZlZChjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgaWYgKG1fc3RvcHBl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNy
ZWF0ZSh0ZXh0KSk7Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWw6OmRhdGFBcnJpdmVkKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQoreworICAgIGlmIChtX3N0b3BwZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2JpbmFyeVR5cGUgPT0gQmluYXJ5VHlwZUJsb2Ip
IHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAobV9iaW5hcnlUeXBlID09IEJpbmFyeVR5cGVBcnJheUJ1ZmZlcikgeworICAgICAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YSwg
ZGF0YUxlbmd0aCk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUo
YnVmZmVyLnJlbGVhc2UoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFJUQ0RhdGFDaGFubmVsOjplcnJvcigpCit7CisgICAg
aWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKwor
UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKiBSVENEYXRhQ2hhbm5lbDo6ZGVzY3JpcHRvcigpCit7
CisgICAgcmV0dXJuIG1fZGVzY3JpcHRvci5nZXQoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBSVENEYXRhQ2hhbm5lbDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2
ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JSVENEYXRhQ2hhbm5lbDsKK30KKworU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogUlRDRGF0YUNoYW5uZWw6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Cit9CisKK3ZvaWQgUlRD
RGF0YUNoYW5uZWw6OnN0b3AoKQoreworICAgIG1fc3RvcHBlZCA9IHRydWU7CisgICAgbV9oYW5k
bGVyID0gMDsKKyAgICBtX2Rlc2NyaXB0b3ItPnNldENsaWVudCgwKTsKKyAgICBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgPSAwOworfQorCitFdmVudFRhcmdldERhdGEqIFJUQ0RhdGFDaGFubmVs
OjpldmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Cit9
CisKK0V2ZW50VGFyZ2V0RGF0YSogUlRDRGF0YUNoYW5uZWw6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0
YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNDQzOThjNjI1MWIzMjc5YTk1ZGQzMTEyYzY2ODdmODQ2YTFjNjg1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bC5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ0RhdGFDaGFu
bmVsX2gKKyNkZWZpbmUgUlRDRGF0YUNoYW5uZWxfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0
LmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQmxvYjsKK2NsYXNz
IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKKworY2xhc3MgUlRDRGF0YUNoYW5uZWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxSVENEYXRhQ2hhbm5lbD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGlj
IFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvckNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxp
YWJsZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFu
bmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlciosIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPik7CisgICAgflJUQ0Rh
dGFDaGFubmVsKCk7CisKKyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKKworICAgIGJvb2wgcmVs
aWFibGUoKSBjb25zdDsKKworICAgIFN0cmluZyByZWFkeVN0YXRlKCkgY29uc3Q7CisKKyAgICB1
bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CisKKyAgICBTdHJpbmcgYmluYXJ5
VHlwZSgpIGNvbnN0OworICAgIHZvaWQgc2V0QmluYXJ5VHlwZShjb25zdCBTdHJpbmcmLCBFeGNl
cHRpb25Db2RlJik7CisKKyAgICB2b2lkIHNlbmQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZvaWQgc2VuZChQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZvaWQgc2VuZChQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4sIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2b2lkIHNlbmQoUGFzc1JlZlB0cjxCbG9iPiwgRXhjZXB0aW9uQ29kZSYp
OworCisgICAgdm9pZCBjbG9zZSgpOworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihvcGVuKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsK
KyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsb3NlKTsKKyAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG1lc3NhZ2UpOworCisgICAgUlRDRGF0YUNoYW5uZWxE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yKCk7CisgICAgdm9pZCBzdG9wKCk7CisKKyAgICAvLyBFdmVu
dFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB1c2luZyBSZWZDb3Vu
dGVkPFJUQ0RhdGFDaGFubmVsPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8UlRDRGF0YUNo
YW5uZWw+OjpkZXJlZjsKKworcHJpdmF0ZToKKyAgICBSVENEYXRhQ2hhbm5lbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiwgUGFzc1JlZlB0cjxSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I+KTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVh
bCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOworICAgIHZpcnR1YWwgRXZlbnRU
YXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVm
RXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJn
ZXQoKSB7IGRlcmVmKCk7IH0KKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Owor
CisgICAgLy8gUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpPd25lcgorICAgIHZpcnR1YWwgdm9p
ZCByZWFkeVN0YXRlQ2hhbmdlZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkYXRhQXJy
aXZlZChjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YUFycml2
ZWQoY29uc3QgY2hhciosIHNpemVfdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGVycm9y
KCkgT1ZFUlJJREU7CisKKyAgICBib29sIG1fc3RvcHBlZDsKKyAgICBSZWZQdHI8UlRDRGF0YUNo
YW5uZWxEZXNjcmlwdG9yPiBtX2Rlc2NyaXB0b3I7CisKKyAgICBlbnVtIEJpbmFyeVR5cGUgewor
ICAgICAgICBCaW5hcnlUeXBlQmxvYiwKKyAgICAgICAgQmluYXJ5VHlwZUFycmF5QnVmZmVyCisg
ICAgfTsKKyAgICBCaW5hcnlUeXBlIG1fYmluYXJ5VHlwZTsKKworICAgIC8vIE5vdCBvd25lZCBi
eSB0aGlzIGNsYXNzLgorICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogbV9oYW5kbGVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2VuZGlmIC8vIFJUQ0RhdGFDaGFubmVsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MThhYjQ4YmExZDg5YTk0NWIyMzNkODk3ZTI5Nzk1OWIxMGJkYTdhYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaWRs
CkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1NRURJ
QV9TVFJFQU0sCisgICAgRXZlbnRUYXJnZXQKK10gaW50ZXJmYWNlIFJUQ0RhdGFDaGFubmVsIHsK
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBib29sZWFuIHJlbGlhYmxlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgcmVhZHlTdGF0ZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBidWZm
ZXJlZEFtb3VudDsKKworICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgYmluYXJ5VHlwZQorICAgICAg
ICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICB2b2lkIHNlbmQoaW4gQXJyYXlC
dWZmZXIgZGF0YSkKKyAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgdm9pZCBzZW5k
KGluIEFycmF5QnVmZmVyVmlldyBkYXRhKQorICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
KyAgICB2b2lkIHNlbmQoaW4gQmxvYiBkYXRhKQorICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKKyAgICB2b2lkIHNlbmQoaW4gRE9NU3RyaW5nIGRhdGEpCisgICAgICAgIHJhaXNlcyhET01F
eGNlcHRpb24pOworCisgICAgdm9pZCBjbG9zZSgpOworCisgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25vcGVuOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7CisgICAg
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jbG9zZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbm1lc3NhZ2U7CisKKyAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICB2b2lk
IGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICB2b2lkIHJlbW92ZUV2
ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICBib29sZWFuIGRpc3Bh
dGNoRXZlbnQoaW4gRXZlbnQgZXZlbnQpCisgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxFdmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjIyNzEzNWI3NGQxYjgwNzFjNjI4
YTMxYTFiMDk4MzYwYTNmYjljZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAKQEAgLTAsMCArMSw3MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ0RhdGFD
aGFubmVsRXZlbnQuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWwuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRXZlbnQ+IFJUQ0RhdGFDaGFubmVs
RXZlbnQ6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSVENEYXRhQ2hhbm5l
bEV2ZW50KTsKK30KKworUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbEV2ZW50PiBSVENEYXRhQ2hh
bm5lbEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjaGFubmVsKQor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUlRDRGF0YUNoYW5uZWxFdmVudCh0eXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIGNoYW5uZWwpKTsKK30KKworCitSVENEYXRhQ2hhbm5lbEV2ZW50
OjpSVENEYXRhQ2hhbm5lbEV2ZW50KCkKK3sKK30KKworUlRDRGF0YUNoYW5uZWxFdmVudDo6UlRD
RGF0YUNoYW5uZWxFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNoYW5uZWwpCisg
ICAgOiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpCisgICAgLCBtX2NoYW5uZWwo
Y2hhbm5lbCkKK3sKK30KKworUlRDRGF0YUNoYW5uZWxFdmVudDo6flJUQ0RhdGFDaGFubmVsRXZl
bnQoKQoreworfQorCitSVENEYXRhQ2hhbm5lbCogUlRDRGF0YUNoYW5uZWxFdmVudDo6Y2hhbm5l
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2hhbm5lbC5nZXQoKTsKK30KKworY29uc3QgQXRv
bWljU3RyaW5nJiBSVENEYXRhQ2hhbm5lbEV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclJUQ0RhdGFDaGFubmVsRXZlbnQ7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbEV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGIwOGNiNzk5MmVhNzg4NmQxNDk4
NDMxNDEyNGI1Y2VhOWFlMTc0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5oCkBAIC0wLDAgKzEsNTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDRGF0YUNoYW5uZWxFdmVudF9oCisjZGVmaW5lIFJU
Q0RhdGFDaGFubmVsRXZlbnRfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1
ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWwuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENE
YXRhQ2hhbm5lbEV2ZW50IDogcHVibGljIEV2ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5S
VENEYXRhQ2hhbm5lbEV2ZW50KCk7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEYXRhQ2hh
bm5lbEV2ZW50PiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5l
bEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPik7CisKKyAgICBSVENE
YXRhQ2hhbm5lbCogY2hhbm5lbCgpIGNvbnN0OworCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSVENEYXRhQ2hh
bm5lbEV2ZW50KCk7CisgICAgUlRDRGF0YUNoYW5uZWxFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8UlRDRGF0
YUNoYW5uZWw+KTsKKworICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbD4gbV9jaGFubmVsOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworI2VuZGlmIC8vIFJUQ0RhdGFDaGFubmVsRXZlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2ZkN2VjOWEwZTBhNGU1MjkyNzc2YjFiZWY3MGNlZmJlZmU5MDBjYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxFdmVudC5pZGwKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAg
IENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKK10gaW50ZXJmYWNlIFJUQ0RhdGFDaGFubmVsRXZl
bnQgOiBFdmVudCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFJUQ0RhdGFDaGFubmVsIGNoYW5u
ZWw7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmNwcAppbmRleCBiOTgxMWFkZDgwMjM0MmY4ZjkzMmQyNDM0MjAy
MmI4NTZmNjcwNzQzLi5iYWVlZGQyMmJmM2ZjYTUzOTBhNzcyMmVmYWU2MzFiN2VhZWMyNmFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmNwcApAQCAtNDMsNiArNDMsOCBAQAogI2luY2x1ZGUgIk1lZGlhQ29uc3Ry
YWludHNJbXBsLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1FdmVudC5oIgogI2luY2x1ZGUgIlJU
Q0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbC5oIgorI2luY2x1ZGUg
IlJUQ0RhdGFDaGFubmVsRXZlbnQuaCIKICNpbmNsdWRlICJSVENFcnJvckNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRlLmgiCiAjaW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRlRGVz
Y3JpcHRvci5oIgpAQCAtNDA4LDYgKzQxMCwyMiBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpn
ZXRTdGF0cyhQYXNzUmVmUHRyPFJUQ1N0YXRzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUAog
ICAgIG1fcGVlckhhbmRsZXItPmdldFN0YXRzKHN0YXRzUmVxdWVzdC5yZWxlYXNlKCkpOwogfQog
CitQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlRGF0
YUNoYW5uZWwoU3RyaW5nIGxhYmVsLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IFJlYWR5U3RhdGVDbG9zZWQp
IHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgYm9vbCByZWxpYWJsZSA9IHRydWU7CisgICAgb3B0aW9ucy5nZXQoInJlbGlh
YmxlIiwgcmVsaWFibGUpOworICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5lbD4gY2hhbm5lbCA9IFJU
Q0RhdGFDaGFubmVsOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3BlZXJIYW5k
bGVyLmdldCgpLCBsYWJlbCwgcmVsaWFibGUsIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJl
dHVybiAwOworICAgIG1fZGF0YUNoYW5uZWxzLmFwcGVuZChjaGFubmVsKTsKKyAgICByZXR1cm4g
Y2hhbm5lbC5yZWxlYXNlKCk7Cit9CisKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmNsb3NlKEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gUmVhZHlTdGF0ZUNs
b3NpbmcgfHwgbV9yZWFkeVN0YXRlID09IFJlYWR5U3RhdGVDbG9zZWQpIHsKQEAgLTQxNSw5ICs0
MzMsMTAgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6Y2xvc2UoRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBtX3BlZXJIYW5kbGVyLT5zdG9wKCk7CisK
ICAgICBjaGFuZ2VJY2VTdGF0ZShJY2VTdGF0ZUNsb3NlZCk7CiAgICAgY2hhbmdlUmVhZHlTdGF0
ZShSZWFkeVN0YXRlQ2xvc2VkKTsKLSAgICBzdG9wKCk7CiB9CiAKIHZvaWQgUlRDUGVlckNvbm5l
Y3Rpb246Om5lZ290aWF0aW9uTmVlZGVkKCkKQEAgLTQ3OCw2ICs0OTcsMTkgQEAgdm9pZCBSVENQ
ZWVyQ29ubmVjdGlvbjo6ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRv
ciogc3RyZWFtRGVzY3IKICAgICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkucmVtb3Zlc3RyZWFtRXZlbnQsIGZhbHNlLCBmYWxzZSwgc3RyZWFtLnJl
bGVhc2UoKSkpOwogfQogCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpkaWRBZGRSZW1vdGVEYXRh
Q2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gY2hhbm5lbERlc2Ny
aXB0b3IpCit7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0
VGhyZWFkKCkpOworCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBSZWFkeVN0YXRlQ2xvc2VkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNoYW5uZWwgPSBS
VENEYXRhQ2hhbm5lbDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9wZWVySGFu
ZGxlci5nZXQoKSwgY2hhbm5lbERlc2NyaXB0b3IpOworICAgIG1fZGF0YUNoYW5uZWxzLmFwcGVu
ZChjaGFubmVsKTsKKworICAgIGRpc3BhdGNoRXZlbnQoUlRDRGF0YUNoYW5uZWxFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5kYXRhY2hhbm5lbEV2ZW50LCBmYWxzZSwgZmFsc2UsIGNoYW5uZWwu
cmVsZWFzZSgpKSk7Cit9CisKIGNvbnN0IEF0b21pY1N0cmluZyYgUlRDUGVlckNvbm5lY3Rpb246
OmludGVyZmFjZU5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJm
YWNlRm9yUlRDUGVlckNvbm5lY3Rpb247CkBAIC00OTAsMTMgKzUyMiwxNyBAQCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBSVENQZWVyQ29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0CiAKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnN0b3AoKQogeworICAgIGlmIChtX3Jl
YWR5U3RhdGUgIT0gUmVhZHlTdGF0ZUNsb3NlZCkKKyAgICAgICAgbV9wZWVySGFuZGxlci0+c3Rv
cCgpOworCisgICAgbV9wZWVySGFuZGxlci5jbGVhcigpOworCiAgICAgbV9pY2VTdGF0ZSA9IElj
ZVN0YXRlQ2xvc2VkOwogICAgIG1fcmVhZHlTdGF0ZSA9IFJlYWR5U3RhdGVDbG9zZWQ7CiAKLSAg
ICBpZiAobV9wZWVySGFuZGxlcikgewotICAgICAgICBtX3BlZXJIYW5kbGVyLT5zdG9wKCk7Ci0g
ICAgICAgIG1fcGVlckhhbmRsZXIuY2xlYXIoKTsKLSAgICB9CisgICAgVmVjdG9yPFJlZlB0cjxS
VENEYXRhQ2hhbm5lbD4gPjo6aXRlcmF0b3IgaSA9IG1fZGF0YUNoYW5uZWxzLmJlZ2luKCk7Cisg
ICAgZm9yICg7IGkgIT0gbV9kYXRhQ2hhbm5lbHMuZW5kKCk7ICsraSkKKyAgICAgICAgKCppKS0+
c3RvcCgpOwogfQogCiBFdmVudFRhcmdldERhdGEqIFJUQ1BlZXJDb25uZWN0aW9uOjpldmVudFRh
cmdldERhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IGE3N2FlZjI2ZGIwMjljZTk4ZTQ5MWQ1MzQyNDFh
Zjk2M2IxN2FlYmUuLmM3ZjliOTEwZjgyMTc0YmI0ZGNkYmU4Y2MwNTNjZjkxNWExYzk5OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
TWVkaWFDb25zdHJhaW50czsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2s7CiBjbGFzcyBSVENDb25m
aWd1cmF0aW9uOworY2xhc3MgUlRDRGF0YUNoYW5uZWw7CiBjbGFzcyBSVENFcnJvckNhbGxiYWNr
OwogY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOwogY2xhc3MgUlRDU2Vzc2lvbkRlc2NyaXB0
aW9uQ2FsbGJhY2s7CkBAIC04OCw2ICs4OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0U3Rh
dHMoUGFzc1JlZlB0cjxSVENTdGF0c0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFjaz4gc2VsZWN0b3IpOwogCisgICAgUGFzc1JlZlB0cjxSVENEYXRh
Q2hhbm5lbD4gY3JlYXRlRGF0YUNoYW5uZWwoU3RyaW5nIGxhYmVsLCBjb25zdCBEaWN0aW9uYXJ5
JiBkYXRhQ2hhbm5lbERpY3QsIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgIHZvaWQgY2xvc2UoRXhj
ZXB0aW9uQ29kZSYpOwogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihuZWdv
dGlhdGlvbm5lZWRlZCk7CkBAIC05Nyw2ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihhZGRzdHJlYW0pOwogICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIocmVtb3Zlc3RyZWFtKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKGljZWNoYW5nZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
UihkYXRhY2hhbm5lbCk7CiAKICAgICAvLyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQK
ICAgICB2aXJ0dWFsIHZvaWQgbmVnb3RpYXRpb25OZWVkZWQoKSBPVkVSUklERTsKQEAgLTEwNSw2
ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljZVN0YXRlKElj
ZVN0YXRlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlU3RyZWFtKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlbW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KSBPVkVSUklERTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0
CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBP
VkVSUklERTsKQEAgLTEzNyw2ICsxNDIsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxNZWRpYVN0
cmVhbUxpc3Q+IG1fbG9jYWxTdHJlYW1zOwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbUxpc3Q+IG1f
cmVtb3RlU3RyZWFtczsKIAorICAgIFZlY3RvcjxSZWZQdHI8UlRDRGF0YUNoYW5uZWw+ID4gbV9k
YXRhQ2hhbm5lbHM7CisKICAgICBPd25QdHI8UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiBtX3Bl
ZXJIYW5kbGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAppbmRleCBkMGI1NjMzMzYzMWI5NGY0YWQ3
M2U3YTlkOWRhNGNkMWIyNGUwZjE3Li40MjE4MjQzZTRlZjE5YmYwNDMzN2E3YjgwYTU3ZWUzMzcy
MzQzNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbApAQCAtNzIsNiArNzIsOSBAQAogCiAgICAgdm9pZCBn
ZXRTdGF0cyhpbiBbQ2FsbGJhY2tdIFJUQ1N0YXRzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBp
biBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBNZWRpYVN0cmVhbVRyYWNrIHNlbGVjdG9y
KTsKIAorICAgIFJUQ0RhdGFDaGFubmVsIGNyZWF0ZURhdGFDaGFubmVsKGluIFtUcmVhdE51bGxB
cz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBsYWJl
bCwgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRGljdGlvbmFyeSBvcHRpb25zKQor
ICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKICAgICB2b2lkIGNsb3NlKCkKICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKQEAgLTgyLDYgKzg1LDcgQEAKICAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbmFkZHN0cmVhbTsKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbnJlbW92ZXN0cmVhbTsKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmljZWNoYW5n
ZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRhdGFjaGFubmVsOwogCiAgICAgLy8g
RXZlbnRUYXJnZXQgaW50ZXJmYWNlCiAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0
cmluZyB0eXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDIxNGFjMjdlODMwOWZjZDZiYTcxYjAyZDYy
NDNmZmViMjg0Y2Q5OTYuLjFlYzdkZDhjZGZhMTQ2NDY5NTVkNjI0NDBhNmJjNzY2NzY3Y2Y0ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ1Nyw2ICs0NTcsOCBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDBIYW5kbGVyLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xpZW50LmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9y
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxE
ZXNjcmlwdG9yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNh
bmRpZGF0ZURlc2NyaXB0b3IuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oJywKQEAgLTg2Nyw2ICs4NjksOCBA
QAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJy
b3JDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdh
dG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRXJyb3JDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVFdmVudC5pZGwnLApAQCAtMTYxMiw2ICsxNjE2LDEw
IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFT
dWNjZXNzQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbjAwLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbjAwLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWwuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWxFdmVudC5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsRXZlbnQuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Vycm9y
Q2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5k
aWRhdGUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRp
ZGF0ZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IDY2OWJmNjQ4YzVjMjE4NzM0N2Rl
OGViMjQ1ODA4NGMxYTMxODk2MWUuLjdhMDU1MmE0YTcwZGE5M2Q0MjAxMTdmZDIwMmU5MjA5YzNi
NDcyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMjI4LDYgKzIyOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhpY2VjaGFuZ2UpIFwKICAgICBtYWNybyhpY2VjYW5k
aWRhdGUpIFwKICAgICBtYWNybyhuZWdvdGlhdGlvbm5lZWRlZCkgXAorICAgIG1hY3JvKGRhdGFj
aGFubmVsKSBcCiAgICAgXAogICAgIG1hY3JvKHNob3cpIFwKICAgICBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmluCmluZGV4IDllOWUwYzg2MzA3YWQwMGVjODY3YThiYTY3NjQwZTBmYTA1MDBlNWUu
LjM0NzFjMDcxMGFiNGNhNTUyZGNmNTI0MjIxYmY3ZDc4NjYwZWMxMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmluCkBAIC0zMiw2ICszMiw3IEBAIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVu
dCBjb25kaXRpb25hbD1XRUJfQVVESU8KIE1lZGlhU3RyZWFtRXZlbnQgY29uZGl0aW9uYWw9TUVE
SUFfU1RSRUFNCiBNZWRpYVN0cmVhbVRyYWNrRXZlbnQgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
CiBSVENJY2VDYW5kaWRhdGVFdmVudCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KK1JUQ0RhdGFD
aGFubmVsRXZlbnQgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBTcGVlY2hJbnB1dEV2ZW50IGNv
bmRpdGlvbmFsPUlOUFVUX1NQRUVDSAogU3BlZWNoUmVjb2duaXRpb25FcnJvciBjb25kaXRpb25h
bD1TQ1JJUFRFRF9TUEVFQ0gKIFNwZWVjaFJlY29nbml0aW9uRXZlbnQgY29uZGl0aW9uYWw9U0NS
SVBURURfU1BFRUNICmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRG
YWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRl
eCA3OTFiZDRlZGE1Y2EzN2FmNDU3ODM2MzQ5Nzc5NTEzMDc0YzJkMmY0Li43YzM5YmQzZjQzNmU0
MWZmMDg2Y2NmMGQ1MTA4ZTdlNWI0ZWRiMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW4KQEAgLTI2LDYgKzI2LDcgQEAgTm9kZQogTm90aWZpY2F0aW9uIGNvbmRp
dGlvbmFsPU5PVElGSUNBVElPTlN8TEVHQUNZX05PVElGSUNBVElPTlMKIFBlZXJDb25uZWN0aW9u
MDAgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBQZXJmb3JtYW5jZSBjb25kaXRpb25hbD1XRUJf
VElNSU5HCitSVENEYXRhQ2hhbm5lbCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFJUQ1BlZXJD
b25uZWN0aW9uIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogU2hhcmVkV29ya2VyIGNvbmRpdGlv
bmFsPVNIQVJFRF9XT1JLRVJTCiBTaGFyZWRXb3JrZXJDb250ZXh0IGNvbmRpdGlvbmFsPVNIQVJF
RF9XT1JLRVJTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjY5
NWIzNDU5NGVhNTc3MDVkOTQxOGUzMTk5MDlkOThhZGFhNjg0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlw
dG9yLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiUlRDRGF0YUNoYW5u
ZWxEZXNjcmlwdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I+IFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IobGFiZWwsIHJlbGlhYmxlKSk7Cit9CisKK1JU
Q0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKGNvbnN0IFN0
cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpCisgICAgOiBtX2xhYmVsKGxhYmVsKQorICAgICwg
bV9yZWxpYWJsZShyZWxpYWJsZSkKKyAgICAsIG1fcmVhZHlTdGF0ZShSZWFkeVN0YXRlQ29ubmVj
dGluZykKKyAgICAsIG1fYnVmZmVyZWRBbW91bnQoMCkKK3sKK30KKworUlRDRGF0YUNoYW5uZWxE
ZXNjcmlwdG9yOjp+UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKCkKK3sKK30KKwordm9pZCBSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I6OnJlYWR5U3RhdGVDaGFuZ2VkKFJlYWR5U3RhdGUgcmVhZHlT
dGF0ZSkKK3sKKyAgICBBU1NFUlQobV9yZWFkeVN0YXRlICE9IFJlYWR5U3RhdGVDbG9zZWQpOwor
ICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gcmVhZHlTdGF0ZSAmJiBtX2NsaWVudCkgeworICAgICAg
ICBtX3JlYWR5U3RhdGUgPSByZWFkeVN0YXRlOworICAgICAgICBtX2NsaWVudC0+cmVhZHlTdGF0
ZUNoYW5nZWQoKTsKKyAgICB9Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpk
YXRhQXJyaXZlZChjb25zdCBTdHJpbmcmIGRhdGEpCit7CisgICAgQVNTRVJUKG1fcmVhZHlTdGF0
ZSAhPSBSZWFkeVN0YXRlQ2xvc2VkKTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5kYXRhQXJyaXZlZChkYXRhKTsKK30KKwordm9pZCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0
b3I6OmRhdGFBcnJpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQorewor
ICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgIT0gUmVhZHlTdGF0ZUNsb3NlZCk7CisgICAgaWYgKG1f
Y2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGF0YUFycml2ZWQoZGF0YSwgZGF0YUxlbmd0aCk7
Cit9CisKK3ZvaWQgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOjplcnJvcigpCit7CisgICAgQVNT
RVJUKG1fcmVhZHlTdGF0ZSAhPSBSZWFkeVN0YXRlQ2xvc2VkKTsKKyAgICBpZiAobV9jbGllbnQp
CisgICAgICAgIG1fY2xpZW50LT5lcnJvcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbERlc2NyaXB0
b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lYWNiNGFjM2JjZTllNjVmNTFkODBkMjc3OWZkMDJkYzI5ODk2MDNl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3JfaAorI2RlZmluZSBSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3JfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJUQ0Rh
dGFDaGFubmVsRGVzY3JpcHRvckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UlRDRGF0
YUNoYW5uZWxEZXNjcmlwdG9yQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZHlT
dGF0ZUNoYW5nZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRhdGFBcnJpdmVkKGNvbnN0IFN0
cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YUFycml2ZWQoY29uc3QgY2hhciosIHNp
emVfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlcnJvcigpID0gMDsKK307CisKK2NsYXNzIFJU
Q0RhdGFDaGFubmVsRGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvcj4geworcHVibGljOgorICAgIGNsYXNzIEV4dHJhRGF0YSA6IHB1YmxpYyBSZWZD
b3VudGVkPEV4dHJhRGF0YT4geworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+RXh0cmFE
YXRhKCkgeyB9CisgICAgfTsKKworICAgIGVudW0gUmVhZHlTdGF0ZSB7CisgICAgICAgIFJlYWR5
U3RhdGVDb25uZWN0aW5nID0gMCwKKyAgICAgICAgUmVhZHlTdGF0ZU9wZW4gPSAxLAorICAgICAg
ICBSZWFkeVN0YXRlQ2xvc2luZyA9IDIsCisgICAgICAgIFJlYWR5U3RhdGVDbG9zZWQgPSAzLAor
ICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKTsKKyAgICB2aXJ0dWFs
IH5SVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IoKTsKKworICAgIFJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvckNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKyAgICB2b2lk
IHNldENsaWVudChSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3JDbGllbnQqIGNsaWVudCkgeyBtX2Ns
aWVudCA9IGNsaWVudDsgfQorCisgICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFiZWw7IH0KKyAgICBib29sIHJlbGlhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9yZWxp
YWJsZTsgfQorCisgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWFkeVN0YXRlOyB9CisKKyAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXJlZEFtb3VudDsgfQorICAgIHZvaWQgc2V0QnVmZmVyZWRBbW91bnQo
dW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCkgeyBtX2J1ZmZlcmVkQW1vdW50ID0gYnVmZmVy
ZWRBbW91bnQ7IH0KKworICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoUmVhZHlTdGF0ZSk7Cisg
ICAgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGRhdGFBcnJpdmVk
KGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIHZvaWQgZXJyb3IoKTsKKworICAgIFBhc3NSZWZQ
dHI8RXh0cmFEYXRhPiBleHRyYURhdGEoKSBjb25zdCB7IHJldHVybiBtX2V4dHJhRGF0YTsgfQor
ICAgIHZvaWQgc2V0RXh0cmFEYXRhKFBhc3NSZWZQdHI8RXh0cmFEYXRhPiBleHRyYURhdGEpIHsg
bV9leHRyYURhdGEgPSBleHRyYURhdGE7IH0KKworcHJpdmF0ZToKKyAgICBSVENEYXRhQ2hhbm5l
bERlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSk7CisKKyAgICBS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3JDbGllbnQqIG1fY2xpZW50OworICAgIFN0cmluZyBtX2xh
YmVsOworICAgIGJvb2wgbV9yZWxpYWJsZTsKKyAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsK
KyAgICB1bnNpZ25lZCBsb25nIG1fYnVmZmVyZWRBbW91bnQ7CisgICAgUmVmUHRyPEV4dHJhRGF0
YT4gbV9leHRyYURhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUlRDRGF0YUNoYW5uZWxEZXNjcmlw
dG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCmluZGV4IDY2M2ZiYzhkNTY5OWQx
N2ZkZDE0ZDNiZjIxNmI1OTYzYTMxN2M4MmEuLjg1MDlmMmU5NDI3NTY4YmE2Mjc5OTgwZGEzNjBj
NjFmMWE0NWM0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcApAQCAtNjIsNiAr
NjIsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhQYXNzUmVmUHRyPFJU
Q1N0YXRzUmVxdWVzdD4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJ
REU7CiAKKyAgICAvLyBSVENEYXRhQ2hhbm5lbC4KKyAgICB2aXJ0dWFsIGJvb2wgb3BlbkRhdGFD
aGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxE
ZXNjcmlwdG9yPiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNl
bmRSYXdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgY2hh
ciosIHNpemVfdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YUNoYW5uZWwo
UGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KSBPVkVSUklERTsKKwogcHJpdmF0
ZToKICAgICBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIG1fY2xpZW50OwogfTsKQEAg
LTEzOSw2ICsxNDUsMjUgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6c3Rv
cCgpCiB7CiB9CiAKK2Jvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6Om9wZW5EYXRh
Q2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4pCit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15OjpzZW5k
U3RyaW5nRGF0YShQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4sIGNvbnN0IFN0
cmluZyYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckR1bW15OjpzZW5kUmF3RGF0YShQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvcj4sIGNvbnN0IGNoYXIqLCBzaXplX3QpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15OjpjbG9zZURhdGFDaGFubmVsKFBhc3NS
ZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPikKK3sKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyLmgKaW5kZXggZTY5MDcwNWJlN2E0YTJlNmU1OWQwNDE3ZDQzYmFkYmRhNDcxMjA5
OS4uZmJhNDU4ODdlNjc5OTY1NmYyNjYzN2U0ZWZkZWE0ZTk2NTY2MDMyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOwogY2xhc3MgUlRDQ29uZmlndXJhdGlvbjsKK2NsYXNz
IFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjsKIGNsYXNzIFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0
b3I7CiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7CiBjbGFzcyBSVENTZXNz
aW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOwpAQCAtNjgsNiArNjksMTIgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhQYXNzUmVmUHRyPFJUQ1N0YXRzUmVxdWVzdD4pID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKIAorICAgIC8vIFJUQ0RhdGFDaGFubmVsLgor
ICAgIHZpcnR1YWwgYm9vbCBvcGVuRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5l
bERlc2NyaXB0b3I+KSA9IDA7CisgICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRhKFBhc3NS
ZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgU3RyaW5nJikgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3Jp
cHRvcj4sIGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VE
YXRhQ2hhbm5lbChQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4pID0gMDsKKwog
cHJvdGVjdGVkOgogICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcigpIHsgfQogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgKaW5kZXggMzNiOTA0MjYwYjdmODQ2NDlh
ZTQ5ZTZkZmQ2MTNhMGIyODgzMDgzMC4uMzg5Yzg2NzFiOTRiZTczODNlNTVkNGI2YzdkMDQyM2Rm
ZTFmNDY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgKQEAgLTM4
LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTdHJlYW1EZXNj
cmlwdG9yOworY2xhc3MgUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOwogY2xhc3MgUlRDSWNlQ2Fu
ZGlkYXRlRGVzY3JpcHRvcjsKIAogY2xhc3MgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
IHsKQEAgLTY5LDYgKzcwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJ
Y2VTdGF0ZShJY2VTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVTdHJl
YW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlbW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSA9IDA7CisK
KyAgICAvLyBSVENEYXRhQ2hhbm5lbC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlRGF0
YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KSA9IDA7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5jcHAKaW5kZXggNGU0ZTEzMTc1OTMzMTQxNjg1
Y2UxZGMyYjEwM2MwYWUyOGU4N2U0Mi4uMDdjMWNjZDE1YWFjNTViNjFkYWRjMGU0YWJjMGM2MDU4
OTllYWM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckNocm9taXVtLmNwcApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiTWVkaWFD
b25zdHJhaW50cy5oIgogI2luY2x1ZGUgIlJUQ0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJS
VENEYXRhQ2hhbm5lbERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJSVENJY2VDYW5kaWRhdGVEZXNj
cmlwdG9yLmgiCiAjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiUlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5oIgpAQCAtMjEyLDYgKzIx
MywyOSBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpkaWRSZW1vdmVS
ZW1vdGVTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZQogICAgIG1fY2xpZW50LT5kaWRSZW1vdmVS
ZW1vdGVTdHJlYW0od2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKTsKIH0KIAorYm9vbCBSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6b3BlbkRhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBkYXRhQ2hhbm5lbCkKK3sKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHdoZW4gV2ViS2l0IGNoYW5nZXMgaGF2ZSBsYW5kZWQuCisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpzZW5kU3RyaW5n
RGF0YShQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gZGF0YUNoYW5uZWwsIGNv
bnN0IFN0cmluZyYgZGF0YSkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdoZW4gV2ViS2l0
IGNoYW5nZXMgaGF2ZSBsYW5kZWQuCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpzZW5kUmF3RGF0YShQYXNzUmVmUHRyPFJUQ0Rh
dGFDaGFubmVsRGVzY3JpcHRvcj4gZGF0YUNoYW5uZWwsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgd2hlbiBXZWJLaXQgY2hh
bmdlcyBoYXZlIGxhbmRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmNsb3NlRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENE
YXRhQ2hhbm5lbERlc2NyaXB0b3I+IGRhdGFDaGFubmVsKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgd2hlbiBXZWJLaXQgY2hhbmdlcyBoYXZlIGxhbmRlZC4KK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oCmluZGV4IGI2
NjliMjU2YWVhNDAxMGRjY2NhNThiMGYxODZlYjExYTY2ODQyNjIuLjZkYTExOTU3YTdjNWY4NmZi
NWJiZTdkNmRkZjdhZDZmOGEzNzhlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaApAQCAtNjcsNiArNjcsMTEgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhQYXNzUmVmUHRyPFJUQ1N0YXRzUmVxdWVzdD4p
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAKKyAgICB2aXJ0
dWFsIGJvb2wgb3BlbkRhdGFDaGFubmVsKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlw
dG9yPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRhKFBhc3NSZWZQ
dHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNj
cmlwdG9yPiwgY29uc3QgY2hhciosIHNpemVfdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGNsb3NlRGF0YUNoYW5uZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+KSBP
VkVSUklERTsKKwogICAgIC8vIFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xp
ZW50IGltcGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBuZWdvdGlhdGlvbk5lZWRlZCgp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRHZW5lcmF0ZUlDRUNhbmRpZGF0ZShjb25z
dCBXZWJLaXQ6OldlYlJUQ0lDRUNhbmRpZGF0ZSYpIE9WRVJSSURFOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>