<?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>185958</bug_id>
          
          <creation_ts>2018-05-24 13:06:48 -0700</creation_ts>
          <short_desc>NavigationAction does not need to hold initiating DOM Event</short_desc>
          <delta_ts>2018-05-30 16:30:21 -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>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aestes</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1427032</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-24 13:06:48 -0700</bug_when>
    <thetext>Simon Fraser mentioned in bug 185712, comment 4 that NavigationAction retains a DOM Event, which ultimately keeps the document associated with the DOM Event alive. It is sufficient for NavigationAction to own details of the initiating DOM Event as opposed to the DOM Event itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427033</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-24 13:07:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/40531539&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427040</commentid>
    <comment_count>2</comment_count>
      <attachid>341221</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-24 13:22:29 -0700</bug_when>
    <thetext>Created attachment 341221
Patch

This patch depends on the patch for bug #185712.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427575</commentid>
    <comment_count>3</comment_count>
      <attachid>341356</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-25 16:52:14 -0700</bug_when>
    <thetext>Created attachment 341356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427589</commentid>
    <comment_count>4</comment_count>
      <attachid>341356</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-05-25 17:08:39 -0700</bug_when>
    <thetext>Comment on attachment 341356
Patch

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

&gt; Source/WebCore/loader/NavigationAction.cpp:96
&gt;  NavigationAction::NavigationAction(Document&amp; requester, const ResourceRequest&amp; resourceRequest, InitiatedByMainFrame initiatedByMainFrame, NavigationType type, ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy, Event* event, const AtomicString&amp; downloadAttribute)

Maybe add a comment in the header file to say that this class shouldn&apos;t hold on to any objects from the originating document.

&gt; Source/WebCore/loader/NavigationAction.h:93
&gt; +        bool buttonDown;
&gt; +        unsigned short button;
&gt; +        unsigned short syntheticClickType;
&gt; +        LayoutPoint absoluteLocation;
&gt; +        FloatPoint locationInRootViewCoordinates;

This would pack better with the larger types first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428651</commentid>
    <comment_count>5</comment_count>
      <attachid>341356</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-30 16:23:50 -0700</bug_when>
    <thetext>Comment on attachment 341356
Patch

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

&gt;&gt; Source/WebCore/loader/NavigationAction.cpp:96
&gt;&gt;  NavigationAction::NavigationAction(Document&amp; requester, const ResourceRequest&amp; resourceRequest, InitiatedByMainFrame initiatedByMainFrame, NavigationType type, ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy, Event* event, const AtomicString&amp; downloadAttribute)
&gt; 
&gt; Maybe add a comment in the header file to say that this class shouldn&apos;t hold on to any objects from the originating document.

Will add the following comment above the class definition in the header before landing as formatted:

// NavigationAction should never hold a strong reference to the originating document either directly
// or indirectly as doing so prevents its destruction even after navigating away from it because
// DocumentLoader keeps around the NavigationAction for the last navigation.

Will also add the following comment below the &quot;private&quot; section in the header before landing as formatted:

// Do not add a strong reference to the originating document or a subobject that holds the
// originating document. See comment above the class for more details.

&gt;&gt; Source/WebCore/loader/NavigationAction.h:93
&gt;&gt; +        FloatPoint locationInRootViewCoordinates;
&gt; 
&gt; This would pack better with the larger types first.

Will order these fields as follows: locationInRootViewCoordinates, absoluteLocation, button, syntheticClickType, buttonDown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428658</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-30 16:30:21 -0700</bug_when>
    <thetext>Committed r232316: &lt;https://trac.webkit.org/changeset/232316&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341221</attachid>
            <date>2018-05-24 13:22:29 -0700</date>
            <delta_ts>2018-05-25 16:52:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185958-20180524132228.patch</filename>
            <type>text/plain</type>
            <size>21316</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE0ZDcyMDBlNDlhYWMz
M2JhZTdiMTk0NTAyZDI1ZGRjMzVkYTU2YS4uMTE2OGM1YzMxMDBiMDAxYzJlNmY3NjI4MGYxNzY2
NTQ3MjM0NjJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTA1LTIzICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9u
IGRvZXMgbm90IG5lZWQgdG8gaG9sZCBpbml0aWF0aW5nIERPTSBFdmVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1OTU4CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80MDUzMTUzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUYWtlIGEgc2ltaWxhciBhcHByb2FjaCBhcyB3YXMgZG9uZSBpbiA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTcxMj4KKyAgICAgICAgYW5k
IGhhdmUgTmF2aWdhdGlvbkFjdGlvbiBob2xkIG9ubHkgYXMgbWFueSBkZXRhaWxzIG9mIHRoZSBp
bml0aWF0aW5nIERPTSBFdmVudCBhcworICAgICAgICBuZWNlc3NhcnkgdG8gc3VwcG9ydCBXZWJL
aXQgZnVuY3Rpb25hbGl0eS4gUmV0YWluaW5nIGEgRE9NIEV2ZW50IGVmZmVjdGl2ZWx5IHJldGFp
bnMKKyAgICAgICAgdGhlIGRvY3VtZW50IHRoYXQgYXNzb2NpYXRlZCB3aXRoIHRoZSBldmVudC4g
QW5kIERvY3VtZW50TG9hZGVyIGFsd2F5cyBrZWVwcyBhcm91bmQKKyAgICAgICAgdGhlIE5hdmln
YXRpb25BY3Rpb24gb2YgdGhlIGxhc3QgbmF2aWdhdGlvbiBmb3IgdGhlICJiZW5lZml0IG9mIHRo
ZSB2YXJpb3VzIHBvbGljeSBoYW5kbGVycyIuCisgICAgICAgIFRoZXJlZm9yZSwgaGF2aW5nIE5h
dmlnYXRpb25BY3Rpb24gaG9sZCBvbmx5IHRoZSByZWxldmFudCBkZXRhaWxzIG9mIHRoZSBET00g
RXZlbnQKKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgRE9NIEV2ZW50IGl0c2VsZiB3ZSBhdm9pZCBr
ZWVwaW5nIHRoZSBkb2N1bWVudCB3ZSBuYXZpZ2F0ZWQgZnJvbSBhbGl2ZQorICAgICAgICBsb25n
ZXIgdGhhbiBuZWNlc3NhcnkuIAorCisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50Lmg6
CisgICAgICAgICogZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaDoKKyAgICAgICAgKiBsb2FkZXIv
TmF2aWdhdGlvbkFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9u
OjpVSUV2ZW50V2l0aEtleVN0YXRlRGF0YTo6VUlFdmVudFdpdGhLZXlTdGF0ZURhdGEpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnREYXRhOjpN
b3VzZUV2ZW50RGF0YSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6a2V5U3RhdGVEYXRhRm9y
Rmlyc3RFdmVudFdpdGhLZXlTdGF0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6bW91c2VF
dmVudERhdGFGb3JGaXJzdE1vdXNlRXZlbnQpOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbjo6a2V5
U3RhdGVFdmVudERhdGEgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRp
b25BY3Rpb246Om1vdXNlRXZlbnREYXRhIGNvbnN0KTogQWRkZWQKKyAgICAgICAgKFdlYkNvcmU6
Ok5hdmlnYXRpb25BY3Rpb246OmV2ZW50IGNvbnN0KTogRGVsZXRlZC4KKwogMjAxOC0wNS0yMyAg
RGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgTmF2aWdhdGlvbkFj
dGlvbiBzaG91bGQgbm90IGhvbGQgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIGEgRG9jdW1lbnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggYWEzYTRjNmM0OWMwZmNjNWM2M2JlZGUyODBjMmRkNDMwMDkxMjdkMC4uOWQyZDE4
YzYxODk0YjU1YmQxNWM2NzRkMDM2OGI0NWY0YTllZDg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAxOC0wNS0yMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgTmF2aWdhdGlvbkFjdGlvbiBkb2VzIG5vdCBuZWVkIHRvIGhvbGQgaW5pdGlhdGluZyBE
T00gRXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NTk1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDA1MzE1Mzk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV3JpdGUgaW4gdGVybXMgb2YgTmF2
aWdhdGlvbkFjdGlvbjo6e2tleVN0YXRlRXZlbnREYXRhLCBtb3VzZUV2ZW50RGF0YUZvckZpcnN0
TW91c2VFdmVudH0oKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bW91c2VC
dXR0b25Gb3JNb3VzZUV2ZW50RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OnN5bnRoZXRpY0NsaWNr
VHlwZUZvck1vdXNlRXZlbnREYXRhKToKKyAgICAgICAgKFdlYktpdDo6Y2xpY2tMb2NhdGlvbklu
Um9vdFZpZXdDb29yZGluYXRlc0Zvck1vdXNlRXZlbnREYXRhKToKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjptb2RpZmllcnNGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpt
b3VzZUJ1dHRvbkZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OnN5bnRoZXRpY0NsaWNrVHlwZUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246
OmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXNGb3JOYXZpZ2F0aW9uQWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0Ojptb3VzZUV2ZW50Rm9y
TmF2aWdhdGlvbkFjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Om1vdXNlQnV0dG9u
Rm9yTW91c2VFdmVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnN5bnRoZXRpY0NsaWNr
VHlwZUZvck1vdXNlRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpjbGlja0xvY2F0
aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTW91c2VFdmVudCk6IERlbGV0ZWQuCisKIDIwMTgt
MDUtMjMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIE5hdmln
YXRpb25BY3Rpb24gc2hvdWxkIG5vdCBob2xkIGEgc3Ryb25nIHJlZmVyZW5jZSB0byBhIERvY3Vt
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYzNkNjNmM2I1ODA4ZjZkMDJiZTNi
ZTQ4MDE5Y2ZjNzZkZjdmNzY1MC4uMGM4ZDYwNTMxMTk0NTE3NmVkODJmNDYxZWIxY2M0NDlhMTEz
NjczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4
LTA1LTIzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBOYXZp
Z2F0aW9uQWN0aW9uIGRvZXMgbm90IG5lZWQgdG8gaG9sZCBpbml0aWF0aW5nIERPTSBFdmVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1OTU4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDUzMTUzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXcml0ZSBpbiB0ZXJtcyBvZiBOYXZpZ2F0aW9uQWN0
aW9uOjp7a2V5U3RhdGVFdmVudERhdGEsIG1vdXNlRXZlbnREYXRhRm9yRmlyc3RNb3VzZUV2ZW50
fSgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9uRGljdGlvbmFyeSBjb25zdCk6
CisgICAgICAgIChmaW5kTW91c2VFdmVudCk6IERlbGV0ZWQuCisKIDIwMTgtMDUtMjEgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgQ29tcGxldGUgZml4IGZvciBl
bmFibGluZyBtb2Rlcm4gRU1FIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRl
ZEV2ZW50LmgKaW5kZXggYWQ0ZTVkMGMzNTZmNTQxZTA4MmUxMWEyNmEyZDBjYzExNWZkNTljNy4u
MmU4ZTI3YjgwZmNiMTMxOWJjNmMwYjYyMWRjYzNjN2JhOGMzNjlmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0SXNTaW11bGF0ZWQoYm9vbCB2YWx1ZSkgeyBtX2lzU2ltdWxhdGVkID0gdmFsdWU7IH0K
ICAgICBpbnQgcGFnZVgoKSBjb25zdCBmaW5hbDsKICAgICBpbnQgcGFnZVkoKSBjb25zdCBmaW5h
bDsKLSAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFBvaW50IGxvY2F0aW9uSW5Sb290Vmlld0Nvb3Jk
aW5hdGVzKCkgY29uc3Q7CisgICAgRmxvYXRQb2ludCBsb2NhdGlvbkluUm9vdFZpZXdDb29yZGlu
YXRlcygpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgTGF5b3V0UG9pbnQmIHBhZ2VMb2NhdGlv
bigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCB4KCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgaW50IHkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9V
SUV2ZW50V2l0aEtleVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudFdpdGhLZXlT
dGF0ZS5oCmluZGV4IDA4NWEwMzE3ZWM4ZGNlM2E2MGZlMjZhZmE1YTE2MmVhMmE5YTA1MWMuLjI5
NWMxNWI1MjE3ZTRmOTBlYjYyMDEyNDI4NGFkMjE4OGE0YmNlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaApAQCAtODEsNiArODEsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgYm9vbCBtX2NhcHNMb2NrS2V5IHsgZmFsc2UgfTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIFVJ
RXZlbnRXaXRoS2V5U3RhdGUqIGZpbmRFdmVudFdpdGhLZXlTdGF0ZShFdmVudCopOworVUlFdmVu
dFdpdGhLZXlTdGF0ZSogZmluZEV2ZW50V2l0aEtleVN0YXRlKEV2ZW50Kik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNw
cAppbmRleCBmZGM2M2Q3NDQ5YzZkNWE1ZWIwNTA2NWViMWNlZWZjNmQxYTFjMjI4Li45NGFkNWQ3
MzYyOWNkNDYzYmFhZjU0Zjc0MDE1MTI0NmMwOWFmOWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCkBAIC0zMCwxMCArMzAsMTAgQEAKICNpbmNsdWRlICJO
YXZpZ2F0aW9uQWN0aW9uLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkV2
ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNs
aWVudC5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiTW91c2VFdmVudC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDYgKzQzLDI1IEBAIE5hdmlnYXRpb25B
Y3Rpb246OlJlcXVlc3Rlcjo6UmVxdWVzdGVyKERvY3VtZW50JiBkb2N1bWVudCkKIHsKIH0KIAor
TmF2aWdhdGlvbkFjdGlvbjo6VUlFdmVudFdpdGhLZXlTdGF0ZURhdGE6OlVJRXZlbnRXaXRoS2V5
U3RhdGVEYXRhKGNvbnN0IFVJRXZlbnRXaXRoS2V5U3RhdGUmIHVpRXZlbnQpCisgICAgOiBpc1Ry
dXN0ZWQgeyB1aUV2ZW50LmlzVHJ1c3RlZCgpIH0KKyAgICAsIHNoaWZ0S2V5IHsgdWlFdmVudC5z
aGlmdEtleSgpIH0KKyAgICAsIGN0cmxLZXkgeyB1aUV2ZW50LmN0cmxLZXkoKSB9CisgICAgLCBh
bHRLZXkgeyB1aUV2ZW50LmFsdEtleSgpIH0KKyAgICAsIG1ldGFLZXkgeyB1aUV2ZW50Lm1ldGFL
ZXkoKSB9Cit7Cit9CisKK05hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnREYXRhOjpNb3VzZUV2
ZW50RGF0YShjb25zdCBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQorICAgIDogVUlFdmVudFdpdGhL
ZXlTdGF0ZURhdGEgeyBtb3VzZUV2ZW50IH0KKyAgICAsIGJ1dHRvbkRvd24geyBtb3VzZUV2ZW50
LmJ1dHRvbkRvd24oKSB9CisgICAgLCBidXR0b24geyBtb3VzZUV2ZW50LmJ1dHRvbigpIH0KKyAg
ICAsIHN5bnRoZXRpY0NsaWNrVHlwZSB7IG1vdXNlRXZlbnQuc3ludGhldGljQ2xpY2tUeXBlKCkg
fQorICAgICwgYWJzb2x1dGVMb2NhdGlvbiB7IG1vdXNlRXZlbnQuYWJzb2x1dGVMb2NhdGlvbigp
IH0KKyAgICAsIGxvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzIHsgbW91c2VFdmVudC5sb2Nh
dGlvbkluUm9vdFZpZXdDb29yZGluYXRlcygpIH0KK3sKK30KKwogTmF2aWdhdGlvbkFjdGlvbjo6
TmF2aWdhdGlvbkFjdGlvbigpID0gZGVmYXVsdDsKIE5hdmlnYXRpb25BY3Rpb246On5OYXZpZ2F0
aW9uQWN0aW9uKCkgPSBkZWZhdWx0OwogCkBAIC01NywxMyArNzYsMzAgQEAgc3RhdGljIGJvb2wg
c2hvdWxkVHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwKICAgICByZXR1cm4gdXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwucHJvdG9jb2xJ
c0RhdGEoKSB8fCAodXJsLnByb3RvY29sSXNCbG9iKCkgJiYgZG9jdW1lbnQuc2VjdXJpdHlPcmln
aW4oKS5jYW5SZXF1ZXN0KHVybCkpOwogfQogCitzdGF0aWMgc3RkOjpvcHRpb25hbDxOYXZpZ2F0
aW9uQWN0aW9uOjpVSUV2ZW50V2l0aEtleVN0YXRlRGF0YT4ga2V5U3RhdGVEYXRhRm9yRmlyc3RF
dmVudFdpdGhLZXlTdGF0ZShFdmVudCogZXZlbnQpCit7CisgICAgaWYgKFVJRXZlbnRXaXRoS2V5
U3RhdGUqIHVpRXZlbnQgPSBmaW5kRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnQpKQorICAgICAgICBy
ZXR1cm4gTmF2aWdhdGlvbkFjdGlvbjo6VUlFdmVudFdpdGhLZXlTdGF0ZURhdGEgeyAqdWlFdmVu
dCB9OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnREYXRhPiBtb3VzZUV2ZW50RGF0YUZvckZpcnN0
TW91c2VFdmVudChFdmVudCogZXZlbnQpCit7CisgICAgZm9yIChFdmVudCogZSA9IGV2ZW50OyBl
OyBlID0gZS0+dW5kZXJseWluZ0V2ZW50KCkpIHsKKyAgICAgICAgaWYgKGUtPmlzTW91c2VFdmVu
dCgpKQorICAgICAgICAgICAgcmV0dXJuIE5hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnREYXRh
IHsgc3RhdGljX2Nhc3Q8Y29uc3QgTW91c2VFdmVudCY+KCplKSB9OworICAgIH0KKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworfQorCiBOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9u
KERvY3VtZW50JiByZXF1ZXN0ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1
ZXN0LCBJbml0aWF0ZWRCeU1haW5GcmFtZSBpbml0aWF0ZWRCeU1haW5GcmFtZSwgTmF2aWdhdGlv
blR5cGUgdHlwZSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5LCBFdmVudCogZXZlbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRB
dHRyaWJ1dGUpCiAgICAgOiBtX3JlcXVlc3RlciB7IHJlcXVlc3RlciB9CiAgICAgLCBtX3Jlc291
cmNlUmVxdWVzdCB7IHJlc291cmNlUmVxdWVzdCB9CiAgICAgLCBtX3R5cGUgeyB0eXBlIH0KICAg
ICAsIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgfQogICAgICwgbV9pbml0aWF0ZWRCeU1haW5GcmFtZSB7IGluaXRpYXRlZEJ5TWFp
bkZyYW1lIH0KLSAgICAsIG1fZXZlbnQgeyBldmVudCB9CisgICAgLCBtX2tleVN0YXRlRXZlbnRE
YXRhIHsga2V5U3RhdGVEYXRhRm9yRmlyc3RFdmVudFdpdGhLZXlTdGF0ZShldmVudCkgfQorICAg
ICwgbV9tb3VzZUV2ZW50RGF0YSB7IG1vdXNlRXZlbnREYXRhRm9yRmlyc3RNb3VzZUV2ZW50KGV2
ZW50KSB9CiAgICAgLCBtX2Rvd25sb2FkQXR0cmlidXRlIHsgZG93bmxvYWRBdHRyaWJ1dGUgfQog
ICAgICwgbV90cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb24geyBzaG91bGRUcmVhdEFzU2FtZU9y
aWdpbk5hdmlnYXRpb24ocmVxdWVzdGVyLCByZXNvdXJjZVJlcXVlc3QudXJsKCkpIH0KIHsKQEAg
LTg4LDcgKzEyNCw4IEBAIE5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oRG9jdW1l
bnQmIHJlcXVlc3RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByCiAgICAgLCBtX3R5cGUgeyBu
YXZpZ2F0aW9uVHlwZShmcmFtZUxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCAhIWV2ZW50KSB9
CiAgICAgLCBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgeyBzaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5IH0KICAgICAsIG1faW5pdGlhdGVkQnlNYWluRnJhbWUgeyBpbml0aWF0ZWRC
eU1haW5GcmFtZSB9Ci0gICAgLCBtX2V2ZW50IHsgZXZlbnQgfQorICAgICwgbV9rZXlTdGF0ZUV2
ZW50RGF0YSB7IGtleVN0YXRlRGF0YUZvckZpcnN0RXZlbnRXaXRoS2V5U3RhdGUoZXZlbnQpIH0K
KyAgICAsIG1fbW91c2VFdmVudERhdGEgeyBtb3VzZUV2ZW50RGF0YUZvckZpcnN0TW91c2VFdmVu
dChldmVudCkgfQogICAgICwgbV9kb3dubG9hZEF0dHJpYnV0ZSB7IGRvd25sb2FkQXR0cmlidXRl
IH0KICAgICAsIG1fdHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uIHsgc2hvdWxkVHJlYXRBc1Nh
bWVPcmlnaW5OYXZpZ2F0aW9uKHJlcXVlc3RlciwgcmVzb3VyY2VSZXF1ZXN0LnVybCgpKSB9CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAppbmRleCAxMzdkZjBkNzll
Y2M1MDdjOGMwMTBkYTRhYTVlNGExYjlhZDRkZDc3Li5jM2ZhYjdkMGZhOWI0NzI5NjRhMzE4Y2Q0
YWIzNzAxNjg2NzczN2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvbkFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9u
LmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCisjaW5jbHVkZSAiTGF5b3V0UG9p
bnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVy
ZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0zOSw2ICs0MCw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRXZlbnQ7CiBjbGFz
cyBIaXN0b3J5SXRlbTsKK2NsYXNzIE1vdXNlRXZlbnQ7CitjbGFzcyBVSUV2ZW50V2l0aEtleVN0
YXRlOwogCiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIHsKIHB1YmxpYzoKQEAgLTY3LDYgKzcwLDI3
IEBAIHB1YmxpYzoKICAgICB9OwogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UmVxdWVzdGVyPiYg
cmVxdWVzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZXI7IH0KIAorICAgIHN0cnVjdCBV
SUV2ZW50V2l0aEtleVN0YXRlRGF0YSB7CisgICAgICAgIFVJRXZlbnRXaXRoS2V5U3RhdGVEYXRh
KGNvbnN0IFVJRXZlbnRXaXRoS2V5U3RhdGUmKTsKKworICAgICAgICBib29sIGlzVHJ1c3RlZDsK
KyAgICAgICAgYm9vbCBzaGlmdEtleTsKKyAgICAgICAgYm9vbCBjdHJsS2V5OworICAgICAgICBi
b29sIGFsdEtleTsKKyAgICAgICAgYm9vbCBtZXRhS2V5OworICAgIH07CisgICAgc3RydWN0IE1v
dXNlRXZlbnREYXRhIDogVUlFdmVudFdpdGhLZXlTdGF0ZURhdGEgeworICAgICAgICBNb3VzZUV2
ZW50RGF0YShjb25zdCBNb3VzZUV2ZW50Jik7CisKKyAgICAgICAgYm9vbCBidXR0b25Eb3duOwor
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBidXR0b247CisgICAgICAgIHVuc2lnbmVkIHNob3J0IHN5
bnRoZXRpY0NsaWNrVHlwZTsKKyAgICAgICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVMb2NhdGlvbjsK
KyAgICAgICAgRmxvYXRQb2ludCBsb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlczsKKyAgICB9
OworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VUlFdmVudFdpdGhLZXlTdGF0ZURhdGE+JiBrZXlT
dGF0ZUV2ZW50RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3RhdGVFdmVudERhdGE7IH0KKyAg
ICBjb25zdCBzdGQ6Om9wdGlvbmFsPE1vdXNlRXZlbnREYXRhPiYgbW91c2VFdmVudERhdGEoKSBj
b25zdCB7IHJldHVybiBtX21vdXNlRXZlbnREYXRhOyB9CisKICAgICBOYXZpZ2F0aW9uQWN0aW9u
IGNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KSBjb25zdDsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFt
X3JlcXVlc3RlciB8fCBtX3JlcXVlc3Rlci0+dXJsKCkuaXNFbXB0eSgpIHx8IG1fcmVzb3VyY2VS
ZXF1ZXN0LnVybCgpLmlzRW1wdHkoKTsgfQpAQCAtNzUsNyArOTksNiBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBt
X3Jlc291cmNlUmVxdWVzdDsgfQogCiAgICAgTmF2aWdhdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQotICAgIGNvbnN0IEV2ZW50KiBldmVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fZXZlbnQuZ2V0KCk7IH0KIAogICAgIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV91c2VyR2VzdHVyZVRva2VuID8gbV91c2VyR2VzdHVyZVRva2VuLT5wcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKSA6IGZhbHNlOyB9CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9r
ZW4+IHVzZXJHZXN0dXJlVG9rZW4oKSBjb25zdCB7IHJldHVybiBtX3VzZXJHZXN0dXJlVG9rZW47
IH0KQEAgLTEwMiw3ICsxMjUsOCBAQCBwcml2YXRlOgogICAgIE5hdmlnYXRpb25UeXBlIG1fdHlw
ZTsKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IG1fc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTsKICAgICBJbml0aWF0ZWRCeU1haW5GcmFtZSBtX2luaXRpYXRlZEJ5TWFpbkZy
YW1lOwotICAgIFJlZlB0cjxFdmVudD4gbV9ldmVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVJRXZl
bnRXaXRoS2V5U3RhdGVEYXRhPiBtX2tleVN0YXRlRXZlbnREYXRhOworICAgIHN0ZDo6b3B0aW9u
YWw8TW91c2VFdmVudERhdGE+IG1fbW91c2VFdmVudERhdGE7CiAgICAgUmVmUHRyPFVzZXJHZXN0
dXJlVG9rZW4+IG1fdXNlckdlc3R1cmVUb2tlbiB7IFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpjdXJy
ZW50VXNlckdlc3R1cmUoKSB9OwogICAgIEF0b21pY1N0cmluZyBtX2Rvd25sb2FkQXR0cmlidXRl
OwogICAgIGJvb2wgbV90cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb247CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCmluZGV4IDkwYjNjZGUwNzk3YWJk
MTFjMmFjZjY0MWQyZTMyN2IxODBiNzJkZDYuLjAwMDQ3MWM1MTc2MjJkYWUyMzZmNmJiNDBlZjhm
NjI3ZGZkYzY2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25B
Y3Rpb24uY3BwCkBAIC0zOCw3OSArMzgsNTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgY29uc3QgTW91c2VFdmVudCogbW91c2VFdmVu
dEZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFj
dGlvbikKK3N0YXRpYyBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b25Gb3JNb3VzZUV2
ZW50RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnRE
YXRhPiYgbW91c2VFdmVudERhdGEpCiB7Ci0gICAgZm9yIChjb25zdCBFdmVudCogZSA9IG5hdmln
YXRpb25BY3Rpb24uZXZlbnQoKTsgZTsgZSA9IGUtPnVuZGVybHlpbmdFdmVudCgpKSB7Ci0gICAg
ICAgIGlmIChlLT5pc01vdXNlRXZlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBNb3VzZUV2ZW50Kj4oZSk7Ci0gICAgfQotICAgIHJldHVybiAwOworICAgIGlmICht
b3VzZUV2ZW50RGF0YSAmJiBtb3VzZUV2ZW50RGF0YS0+YnV0dG9uRG93biAmJiBtb3VzZUV2ZW50
RGF0YS0+aXNUcnVzdGVkKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViTW91c2VFdmVu
dDo6QnV0dG9uPihtb3VzZUV2ZW50RGF0YS0+YnV0dG9uKTsKKyAgICByZXR1cm4gV2ViTW91c2VF
dmVudDo6Tm9CdXR0b247CiB9CiAKLXN0YXRpYyBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VC
dXR0b25Gb3JNb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQpCitzdGF0aWMg
V2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBlIHN5bnRoZXRpY0NsaWNrVHlwZUZvck1v
dXNlRXZlbnREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbjo6TW91c2VF
dmVudERhdGE+JiBtb3VzZUV2ZW50RGF0YSkKIHsKLSAgICBpZiAoIW1vdXNlRXZlbnQpCi0gICAg
ICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjsKLQotICAgIGlmICghbW91c2VFdmVu
dC0+YnV0dG9uRG93bigpIHx8ICFtb3VzZUV2ZW50LT5pc1RydXN0ZWQoKSkKLSAgICAgICAgcmV0
dXJuIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uOwotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdl
Yk1vdXNlRXZlbnQ6OkJ1dHRvbj4obW91c2VFdmVudC0+YnV0dG9uKCkpOworICAgIGlmIChtb3Vz
ZUV2ZW50RGF0YSAmJiBtb3VzZUV2ZW50RGF0YS0+YnV0dG9uRG93biAmJiBtb3VzZUV2ZW50RGF0
YS0+aXNUcnVzdGVkKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViTW91c2VFdmVudDo6
U3ludGhldGljQ2xpY2tUeXBlPihtb3VzZUV2ZW50RGF0YS0+c3ludGhldGljQ2xpY2tUeXBlKTsK
KyAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6Tm9UYXA7CiB9Ci0KLXN0YXRpYyBXZWJNb3VzZUV2
ZW50OjpTeW50aGV0aWNDbGlja1R5cGUgc3ludGhldGljQ2xpY2tUeXBlRm9yTW91c2VFdmVudChj
b25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50KQotewotICAgIGlmICghbW91c2VFdmVudCkKLSAg
ICAgICAgcmV0dXJuIFdlYk1vdXNlRXZlbnQ6Ok5vVGFwOwotICAgIAotICAgIGlmICghbW91c2VF
dmVudC0+YnV0dG9uRG93bigpIHx8ICFtb3VzZUV2ZW50LT5pc1RydXN0ZWQoKSkKLSAgICAgICAg
cmV0dXJuIFdlYk1vdXNlRXZlbnQ6Ok5vVGFwOwogICAgIAotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGU+KG1vdXNlRXZlbnQtPnN5bnRoZXRp
Y0NsaWNrVHlwZSgpKTsKLX0KLSAgICAKLXN0YXRpYyBGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25J
blJvb3RWaWV3Q29vcmRpbmF0ZXNGb3JNb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnQqIG1vdXNl
RXZlbnQpCitzdGF0aWMgRmxvYXRQb2ludCBjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5h
dGVzRm9yTW91c2VFdmVudERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9u
OjpNb3VzZUV2ZW50RGF0YT4mIG1vdXNlRXZlbnREYXRhKQogewotICAgIGlmICghbW91c2VFdmVu
dCkKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAKLSAgICBpZiAoIW1vdXNlRXZlbnQtPmJ1dHRv
bkRvd24oKSB8fCAhbW91c2VFdmVudC0+aXNUcnVzdGVkKCkpCi0gICAgICAgIHJldHVybiB7IH07
Ci0gICAgCi0gICAgcmV0dXJuIG1vdXNlRXZlbnQtPmxvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5h
dGVzKCk7CisgICAgaWYgKG1vdXNlRXZlbnREYXRhICYmIG1vdXNlRXZlbnREYXRhLT5idXR0b25E
b3duICYmIG1vdXNlRXZlbnREYXRhLT5pc1RydXN0ZWQpCisgICAgICAgIHJldHVybiBtb3VzZUV2
ZW50RGF0YS0+bG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXM7CisgICAgcmV0dXJuIHsgfTsK
IH0KIAogV2ViRXZlbnQ6Ok1vZGlmaWVycyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246
Om1vZGlmaWVyc0Zvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2
aWdhdGlvbkFjdGlvbikKIHsKICAgICB1aW50MzJfdCBtb2RpZmllcnMgPSAwOwotICAgIGNvbnN0
IFVJRXZlbnRXaXRoS2V5U3RhdGUqIGtleVN0YXRlRXZlbnQgPSBmaW5kRXZlbnRXaXRoS2V5U3Rh
dGUoY29uc3RfY2FzdDxFdmVudCo+KG5hdmlnYXRpb25BY3Rpb24uZXZlbnQoKSkpOwotICAgIGlm
IChrZXlTdGF0ZUV2ZW50ICYmIGtleVN0YXRlRXZlbnQtPmlzVHJ1c3RlZCgpKSB7Ci0gICAgICAg
IGlmIChrZXlTdGF0ZUV2ZW50LT5zaGlmdEtleSgpKQorICAgIGF1dG8ga2V5U3RhdGVFdmVudERh
dGEgPSBuYXZpZ2F0aW9uQWN0aW9uLmtleVN0YXRlRXZlbnREYXRhKCk7CisgICAgaWYgKGtleVN0
YXRlRXZlbnREYXRhICYmIGtleVN0YXRlRXZlbnREYXRhLT5pc1RydXN0ZWQpIHsKKyAgICAgICAg
aWYgKGtleVN0YXRlRXZlbnREYXRhLT5zaGlmdEtleSkKICAgICAgICAgICAgIG1vZGlmaWVycyB8
PSBXZWJFdmVudDo6U2hpZnRLZXk7Ci0gICAgICAgIGlmIChrZXlTdGF0ZUV2ZW50LT5jdHJsS2V5
KCkpCisgICAgICAgIGlmIChrZXlTdGF0ZUV2ZW50RGF0YS0+Y3RybEtleSkKICAgICAgICAgICAg
IG1vZGlmaWVycyB8PSBXZWJFdmVudDo6Q29udHJvbEtleTsKLSAgICAgICAgaWYgKGtleVN0YXRl
RXZlbnQtPmFsdEtleSgpKQorICAgICAgICBpZiAoa2V5U3RhdGVFdmVudERhdGEtPmFsdEtleSkK
ICAgICAgICAgICAgIG1vZGlmaWVycyB8PSBXZWJFdmVudDo6QWx0S2V5OwotICAgICAgICBpZiAo
a2V5U3RhdGVFdmVudC0+bWV0YUtleSgpKQorICAgICAgICBpZiAoa2V5U3RhdGVFdmVudERhdGEt
Pm1ldGFLZXkpCiAgICAgICAgICAgICBtb2RpZmllcnMgfD0gV2ViRXZlbnQ6Ok1ldGFLZXk7CiAg
ICAgfQotCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkV2ZW50OjpNb2RpZmllcnM+KG1vZGlm
aWVycyk7CiB9CiAKIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb246Om1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQogewotICAgIHJldHVybiBtb3VzZUJ1dHRvbkZvck1v
dXNlRXZlbnQobW91c2VFdmVudEZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbikp
OworICAgIHJldHVybiBtb3VzZUJ1dHRvbkZvck1vdXNlRXZlbnREYXRhKG5hdmlnYXRpb25BY3Rp
b24ubW91c2VFdmVudERhdGEoKSk7CiB9CiAKIFdlYk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNr
VHlwZSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OnN5bnRoZXRpY0NsaWNrVHlwZUZv
ck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlv
bikKIHsKLSAgICByZXR1cm4gc3ludGhldGljQ2xpY2tUeXBlRm9yTW91c2VFdmVudChtb3VzZUV2
ZW50Rm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKSk7CisgICAgcmV0dXJuIHN5
bnRoZXRpY0NsaWNrVHlwZUZvck1vdXNlRXZlbnREYXRhKG5hdmlnYXRpb25BY3Rpb24ubW91c2VF
dmVudERhdGEoKSk7CiB9CiAgICAgCiBGbG9hdFBvaW50IEluamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbjo6Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck5hdmlnYXRpb25B
Y3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbikKIHsKLSAgICBy
ZXR1cm4gY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck1vdXNlRXZlbnQobW91
c2VFdmVudEZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbikpOworICAgIHJldHVy
biBjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTW91c2VFdmVudERhdGEobmF2
aWdhdGlvbkFjdGlvbi5tb3VzZUV2ZW50RGF0YSgpKTsKIH0KIAogUmVmPEluamVjdGVkQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbj4gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUo
V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFJlZlB0cjxG
b3JtU3RhdGU+JiYgZm9ybVN0YXRlKQpAQCAtMTI2LDkgKzEwNCw5IEBAIEluamVjdGVkQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbjo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKFdlYkZyYW1l
KiBmcmFtZSwKICAgICAsIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMcyhuYXZpZ2F0aW9uQWN0aW9u
LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSA9PSBTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGRBbGxvdyB8fCBuYXZpZ2F0aW9uQWN0aW9uLnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koKSA9PSBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxv
d0V4dGVybmFsU2NoZW1lcykKICAgICAsIG1fc2hvdWxkVHJ5QXBwTGlua3MobmF2aWdhdGlvbkFj
dGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgPT0gU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkQWxsb3cpCiB7Ci0gICAgaWYgKGNvbnN0IE1vdXNlRXZlbnQqIG1v
dXNlRXZlbnQgPSBtb3VzZUV2ZW50Rm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9u
KSkgewotICAgICAgICBtX2hpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQ6OmNyZWF0ZShmcmFtZS0+Y29yZUZyYW1lKCktPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1
bHRBdFBvaW50KG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSkpOwotICAgICAgICBtX21v
dXNlQnV0dG9uICAgPSBtb3VzZUJ1dHRvbkZvck1vdXNlRXZlbnQobW91c2VFdmVudCk7CisgICAg
aWYgKGF1dG8gbW91c2VFdmVudERhdGEgPSBuYXZpZ2F0aW9uQWN0aW9uLm1vdXNlRXZlbnREYXRh
KCkpIHsKKyAgICAgICAgbV9oaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0OjpjcmVhdGUoZnJhbWUtPmNvcmVGcmFtZSgpLT5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVz
dWx0QXRQb2ludChtb3VzZUV2ZW50RGF0YS0+YWJzb2x1dGVMb2NhdGlvbikpOworICAgICAgICBt
X21vdXNlQnV0dG9uID0gbW91c2VCdXR0b25Gb3JNb3VzZUV2ZW50RGF0YShtb3VzZUV2ZW50RGF0
YSk7CiAgICAgICAgIG1fc3ludGhldGljQ2xpY2tUeXBlID0gc3ludGhldGljQ2xpY2tUeXBlRm9y
TmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKICAgICAgICAgbV9jbGlja0xvY2F0
aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGlu
YXRlc0Zvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQppbmRleCAxYTQxMTM0OGE4ZWI2Yzc3ZDg3ZWRhZmNkYzQ5ZWQx
ODU5YjVmNjE2Li5kNDZlNDdmZDMxYzdjOWFjMjVkZGExMjBjNDEwODliMGNjNzI1YjFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTU0OSwyOCArMTU0OSwxOSBAQCBTdHJpbmcg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkKICAgICByZXR1
cm4gW3dlYlZpZXcgX3VzZXJBZ2VudFN0cmluZ107CiB9CiAKLXN0YXRpYyBjb25zdCBNb3VzZUV2
ZW50KiBmaW5kTW91c2VFdmVudChjb25zdCBFdmVudCogZXZlbnQpCi17Ci0gICAgZm9yIChjb25z
dCBFdmVudCogZSA9IGV2ZW50OyBlOyBlID0gZS0+dW5kZXJseWluZ0V2ZW50KCkpCi0gICAgICAg
IGlmIChlLT5pc01vdXNlRXZlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBNb3VzZUV2ZW50Kj4oZSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIE5TRGljdGlvbmFyeSAq
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rpb25hcnkoY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYgYWN0aW9uLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSkgY29uc3QKIHsKICAgICB1bnNpZ25l
ZCBtb2RpZmllckZsYWdzID0gMDsKLSAgICBjb25zdCBFdmVudCogZXZlbnQgPSBhY3Rpb24uZXZl
bnQoKTsKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIGNvbnN0IFVJRXZlbnRXaXRoS2V5U3RhdGUq
IGtleVN0YXRlRXZlbnQgPSBmaW5kRXZlbnRXaXRoS2V5U3RhdGUoY29uc3RfY2FzdDxFdmVudCo+
KGV2ZW50KSk7Ci0gICAgaWYgKGtleVN0YXRlRXZlbnQgJiYga2V5U3RhdGVFdmVudC0+aXNUcnVz
dGVkKCkpIHsKLSAgICAgICAgaWYgKGtleVN0YXRlRXZlbnQtPmN0cmxLZXkoKSkKKyAgICBhdXRv
IGtleVN0YXRlRXZlbnREYXRhID0gYWN0aW9uLmtleVN0YXRlRXZlbnREYXRhKCk7CisgICAgaWYg
KGtleVN0YXRlRXZlbnREYXRhICYmIGtleVN0YXRlRXZlbnREYXRhLT5pc1RydXN0ZWQpIHsKKyAg
ICAgICAgaWYgKGtleVN0YXRlRXZlbnREYXRhLT5jdHJsS2V5KQogICAgICAgICAgICAgbW9kaWZp
ZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnQ29udHJvbDsKLSAgICAgICAgaWYgKGtleVN0
YXRlRXZlbnQtPmFsdEtleSgpKQorICAgICAgICBpZiAoa2V5U3RhdGVFdmVudERhdGEtPmFsdEtl
eSkKICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ09wdGlv
bjsKLSAgICAgICAgaWYgKGtleVN0YXRlRXZlbnQtPnNoaWZ0S2V5KCkpCisgICAgICAgIGlmIChr
ZXlTdGF0ZUV2ZW50RGF0YS0+c2hpZnRLZXkpCiAgICAgICAgICAgICBtb2RpZmllckZsYWdzIHw9
IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKLSAgICAgICAgaWYgKGtleVN0YXRlRXZlbnQtPm1l
dGFLZXkoKSkKKyAgICAgICAgaWYgKGtleVN0YXRlRXZlbnREYXRhLT5tZXRhS2V5KQogICAgICAg
ICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnQ29tbWFuZDsKICAgICB9
CiAjZWxzZQpAQCAtMTU4NiwxNCArMTU3NywxNCBAQCBOU0RpY3Rpb25hcnkgKldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjphY3Rpb25EaWN0aW9uYXJ5KGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdAog
ICAgICAgICBvcmlnaW5hbFVSTCwgV2ViQWN0aW9uT3JpZ2luYWxVUkxLZXksCiAgICAgICAgIG5p
bF07CiAKLSAgICBpZiAoY29uc3QgTW91c2VFdmVudCogbW91c2VFdmVudCA9IGZpbmRNb3VzZUV2
ZW50KGV2ZW50KSkgeworICAgIGlmIChhdXRvIG1vdXNlRXZlbnREYXRhID0gYWN0aW9uLm1vdXNl
RXZlbnREYXRhKCkpIHsKICAgICAgICAgV2ViRWxlbWVudERpY3Rpb25hcnkgKmVsZW1lbnQgPSBb
W1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXQotICAgICAgICAgICAgaW5pdFdpdGhIaXRUZXN0
UmVzdWx0OmNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1
bHRBdFBvaW50KG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSldOworICAgICAgICAgICAg
aW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmV2ZW50SGFuZGxl
cigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnREYXRhLT5hYnNvbHV0ZUxvY2F0aW9u
KV07CiAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OmVsZW1lbnQgZm9yS2V5OldlYkFjdGlvbkVs
ZW1lbnRLZXldOwogICAgICAgICBbZWxlbWVudCByZWxlYXNlXTsKIAotICAgICAgICBpZiAobW91
c2VFdmVudC0+aXNUcnVzdGVkKCkpCi0gICAgICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpbTlNO
dW1iZXIgbnVtYmVyV2l0aEludDptb3VzZUV2ZW50LT5idXR0b24oKV0gZm9yS2V5OldlYkFjdGlv
bkJ1dHRvbktleV07CisgICAgICAgIGlmIChtb3VzZUV2ZW50RGF0YS0+aXNUcnVzdGVkKQorICAg
ICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bW91c2VF
dmVudERhdGEtPmJ1dHRvbl0gZm9yS2V5OldlYkFjdGlvbkJ1dHRvbktleV07CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50
OldlYkNvcmU6Ok5vQnV0dG9uXSBmb3JLZXk6V2ViQWN0aW9uQnV0dG9uS2V5XTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341356</attachid>
            <date>2018-05-25 16:52:14 -0700</date>
            <delta_ts>2018-05-25 17:08:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185958-20180525165213.patch</filename>
            <type>text/plain</type>
            <size>21316</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWE5MDcxZWM5MDRkNGFl
MGJmMTAxNDI3NTcxZTc1MTMzNmY2YWZhYi4uZjkzNDk1ZWNlZjQ2ZjZjYTk4ZDMyNGVlYmQwNDgw
MDYzNmMzMDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTA1LTI1ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9u
IGRvZXMgbm90IG5lZWQgdG8gaG9sZCBpbml0aWF0aW5nIERPTSBFdmVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1OTU4CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80MDUzMTUzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUYWtlIGEgc2ltaWxhciBhcHByb2FjaCBhcyB3YXMgZG9uZSBpbiA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTcxMj4KKyAgICAgICAgYW5k
IGhhdmUgTmF2aWdhdGlvbkFjdGlvbiBob2xkIG9ubHkgYXMgbWFueSBkZXRhaWxzIG9mIHRoZSBp
bml0aWF0aW5nIERPTSBFdmVudCBhcworICAgICAgICBuZWNlc3NhcnkgdG8gc3VwcG9ydCBXZWJL
aXQgZnVuY3Rpb25hbGl0eS4gUmV0YWluaW5nIGEgRE9NIEV2ZW50IGVmZmVjdGl2ZWx5IHJldGFp
bnMKKyAgICAgICAgdGhlIGRvY3VtZW50IHRoYXQgYXNzb2NpYXRlZCB3aXRoIHRoZSBldmVudC4g
QW5kIERvY3VtZW50TG9hZGVyIGFsd2F5cyBrZWVwcyBhcm91bmQKKyAgICAgICAgdGhlIE5hdmln
YXRpb25BY3Rpb24gb2YgdGhlIGxhc3QgbmF2aWdhdGlvbiBmb3IgdGhlICJiZW5lZml0IG9mIHRo
ZSB2YXJpb3VzIHBvbGljeSBoYW5kbGVycyIuCisgICAgICAgIFRoZXJlZm9yZSwgaGF2aW5nIE5h
dmlnYXRpb25BY3Rpb24gaG9sZCBvbmx5IHRoZSByZWxldmFudCBkZXRhaWxzIG9mIHRoZSBET00g
RXZlbnQKKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgRE9NIEV2ZW50IGl0c2VsZiB3ZSBhdm9pZCBr
ZWVwaW5nIHRoZSBkb2N1bWVudCB3ZSBuYXZpZ2F0ZWQgZnJvbSBhbGl2ZQorICAgICAgICBsb25n
ZXIgdGhhbiBuZWNlc3NhcnkuIAorCisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50Lmg6
CisgICAgICAgICogZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaDoKKyAgICAgICAgKiBsb2FkZXIv
TmF2aWdhdGlvbkFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9u
OjpVSUV2ZW50V2l0aEtleVN0YXRlRGF0YTo6VUlFdmVudFdpdGhLZXlTdGF0ZURhdGEpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnREYXRhOjpN
b3VzZUV2ZW50RGF0YSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6a2V5U3RhdGVEYXRhRm9y
Rmlyc3RFdmVudFdpdGhLZXlTdGF0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6bW91c2VF
dmVudERhdGFGb3JGaXJzdE1vdXNlRXZlbnQpOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbjo6a2V5
U3RhdGVFdmVudERhdGEgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRp
b25BY3Rpb246Om1vdXNlRXZlbnREYXRhIGNvbnN0KTogQWRkZWQKKyAgICAgICAgKFdlYkNvcmU6
Ok5hdmlnYXRpb25BY3Rpb246OmV2ZW50IGNvbnN0KTogRGVsZXRlZC4KKwogMjAxOC0wNS0yNSAg
RGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgTmF2aWdhdGlvbkFj
dGlvbiBzaG91bGQgbm90IGhvbGQgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIGEgRG9jdW1lbnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggMmVlYjIwNWEwMjQ1MGJhMjkzMjRiZTRiMjNlNjljZGYzMmQ5MjMyOC4uOWM5ODQ4
ODkxZDE1ZTg5MWZmOWY5ZGYyNzgyNzhkMGVhNWI0OTMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAxOC0wNS0yNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgTmF2aWdhdGlvbkFjdGlvbiBkb2VzIG5vdCBuZWVkIHRvIGhvbGQgaW5pdGlhdGluZyBE
T00gRXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NTk1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDA1MzE1Mzk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV3JpdGUgaW4gdGVybXMgb2YgTmF2
aWdhdGlvbkFjdGlvbjo6e2tleVN0YXRlRXZlbnREYXRhLCBtb3VzZUV2ZW50RGF0YUZvckZpcnN0
TW91c2VFdmVudH0oKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bW91c2VC
dXR0b25Gb3JNb3VzZUV2ZW50RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OnN5bnRoZXRpY0NsaWNr
VHlwZUZvck1vdXNlRXZlbnREYXRhKToKKyAgICAgICAgKFdlYktpdDo6Y2xpY2tMb2NhdGlvbklu
Um9vdFZpZXdDb29yZGluYXRlc0Zvck1vdXNlRXZlbnREYXRhKToKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjptb2RpZmllcnNGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpt
b3VzZUJ1dHRvbkZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OnN5bnRoZXRpY0NsaWNrVHlwZUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246
OmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXNGb3JOYXZpZ2F0aW9uQWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0Ojptb3VzZUV2ZW50Rm9y
TmF2aWdhdGlvbkFjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Om1vdXNlQnV0dG9u
Rm9yTW91c2VFdmVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnN5bnRoZXRpY0NsaWNr
VHlwZUZvck1vdXNlRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpjbGlja0xvY2F0
aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTW91c2VFdmVudCk6IERlbGV0ZWQuCisKIDIwMTgt
MDUtMjUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIE5hdmln
YXRpb25BY3Rpb24gc2hvdWxkIG5vdCBob2xkIGEgc3Ryb25nIHJlZmVyZW5jZSB0byBhIERvY3Vt
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZTAxYjQ1M2RlZDA5YmVmMjViZmI3
N2FjNTFkYTUyOGNiZmMzMGVkMy4uYTVjZTk2MTBlNTIwYjUyZDFlYzc1NDU4OWNjMDAyYmE4ZDUx
ZjVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4
LTA1LTI1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBOYXZp
Z2F0aW9uQWN0aW9uIGRvZXMgbm90IG5lZWQgdG8gaG9sZCBpbml0aWF0aW5nIERPTSBFdmVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1OTU4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDUzMTUzOT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXcml0ZSBpbiB0ZXJtcyBvZiBOYXZpZ2F0aW9uQWN0
aW9uOjp7a2V5U3RhdGVFdmVudERhdGEsIG1vdXNlRXZlbnREYXRhRm9yRmlyc3RNb3VzZUV2ZW50
fSgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9uRGljdGlvbmFyeSBjb25zdCk6
CisgICAgICAgIChmaW5kTW91c2VFdmVudCk6IERlbGV0ZWQuCisKIDIwMTgtMDUtMjUgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNaW5vciBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZSBjbGVhbiB1cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNl
UmVsYXRlZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaApp
bmRleCBhZDRlNWQwYzM1NmY1NDFlMDgyZTExYTI2YTJkMGNjMTE1ZmQ1OWM3Li4yZThlMjdiODBm
Y2IxMzE5YmM2YzBiNjIxZGNjM2M3YmE4YzM2OWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VS
ZWxhdGVkRXZlbnQuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc1Np
bXVsYXRlZChib29sIHZhbHVlKSB7IG1faXNTaW11bGF0ZWQgPSB2YWx1ZTsgfQogICAgIGludCBw
YWdlWCgpIGNvbnN0IGZpbmFsOwogICAgIGludCBwYWdlWSgpIGNvbnN0IGZpbmFsOwotICAgIFdF
QkNPUkVfRVhQT1JUIEZsb2F0UG9pbnQgbG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSBj
b25zdDsKKyAgICBGbG9hdFBvaW50IGxvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBjb25zdCBMYXlvdXRQb2ludCYgcGFnZUxvY2F0aW9uKCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHgoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBp
bnQgeSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnRXaXRo
S2V5U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmgKaW5k
ZXggMDg1YTAzMTdlYzhkY2UzYTYwZmUyNmFmYTVhMTYyZWEyYTlhMDUxYy4uMjk1YzE1YjUyMTdl
NGY5MGViNjIwMTI0Mjg0YWQyMTg4YTRiY2U3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1VJRXZlbnRXaXRoS2V5U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVu
dFdpdGhLZXlTdGF0ZS5oCkBAIC04MSw2ICs4MSw2IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1f
Y2Fwc0xvY2tLZXkgeyBmYWxzZSB9OwogfTsKIAotV0VCQ09SRV9FWFBPUlQgVUlFdmVudFdpdGhL
ZXlTdGF0ZSogZmluZEV2ZW50V2l0aEtleVN0YXRlKEV2ZW50Kik7CitVSUV2ZW50V2l0aEtleVN0
YXRlKiBmaW5kRXZlbnRXaXRoS2V5U3RhdGUoRXZlbnQqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCmluZGV4IDU0
ZmY3N2ZlZDRlNzllYzIwNGJkMmM2NjhmYTc2ZDY4MDg2ZWMwOWEuLjBhNjZiYmM0ZjdiZGQ3YzA1
YzRjMzJmN2RhMzFiZjQyMjk2N2NjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvbkFjdGlvbi5jcHAKQEAgLTMwLDEwICszMCwxMCBAQAogI2luY2x1ZGUgIk5hdmlnYXRpb25B
Y3Rpb24uaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKKyNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDQsNiArNDQsMjUgQEAgTmF2aWdhdGlvbkFjdGlvbjo6UmVx
dWVzdGVyOjpSZXF1ZXN0ZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewogfQogCitOYXZp
Z2F0aW9uQWN0aW9uOjpVSUV2ZW50V2l0aEtleVN0YXRlRGF0YTo6VUlFdmVudFdpdGhLZXlTdGF0
ZURhdGEoY29uc3QgVUlFdmVudFdpdGhLZXlTdGF0ZSYgdWlFdmVudCkKKyAgICA6IGlzVHJ1c3Rl
ZCB7IHVpRXZlbnQuaXNUcnVzdGVkKCkgfQorICAgICwgc2hpZnRLZXkgeyB1aUV2ZW50LnNoaWZ0
S2V5KCkgfQorICAgICwgY3RybEtleSB7IHVpRXZlbnQuY3RybEtleSgpIH0KKyAgICAsIGFsdEtl
eSB7IHVpRXZlbnQuYWx0S2V5KCkgfQorICAgICwgbWV0YUtleSB7IHVpRXZlbnQubWV0YUtleSgp
IH0KK3sKK30KKworTmF2aWdhdGlvbkFjdGlvbjo6TW91c2VFdmVudERhdGE6Ok1vdXNlRXZlbnRE
YXRhKGNvbnN0IE1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCisgICAgOiBVSUV2ZW50V2l0aEtleVN0
YXRlRGF0YSB7IG1vdXNlRXZlbnQgfQorICAgICwgYnV0dG9uRG93biB7IG1vdXNlRXZlbnQuYnV0
dG9uRG93bigpIH0KKyAgICAsIGJ1dHRvbiB7IG1vdXNlRXZlbnQuYnV0dG9uKCkgfQorICAgICwg
c3ludGhldGljQ2xpY2tUeXBlIHsgbW91c2VFdmVudC5zeW50aGV0aWNDbGlja1R5cGUoKSB9Cisg
ICAgLCBhYnNvbHV0ZUxvY2F0aW9uIHsgbW91c2VFdmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkgfQor
ICAgICwgbG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMgeyBtb3VzZUV2ZW50LmxvY2F0aW9u
SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgfQoreworfQorCiBOYXZpZ2F0aW9uQWN0aW9uOjpOYXZp
Z2F0aW9uQWN0aW9uKCkgPSBkZWZhdWx0OwogTmF2aWdhdGlvbkFjdGlvbjo6fk5hdmlnYXRpb25B
Y3Rpb24oKSA9IGRlZmF1bHQ7CiAKQEAgLTU4LDEzICs3NywzMCBAQCBzdGF0aWMgYm9vbCBzaG91
bGRUcmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb24oY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBVUgogICAgIHJldHVybiB1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5wcm90b2NvbElzRGF0
YSgpIHx8ICh1cmwucHJvdG9jb2xJc0Jsb2IoKSAmJiBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigp
LmNhblJlcXVlc3QodXJsKSk7CiB9CiAKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25B
Y3Rpb246OlVJRXZlbnRXaXRoS2V5U3RhdGVEYXRhPiBrZXlTdGF0ZURhdGFGb3JGaXJzdEV2ZW50
V2l0aEtleVN0YXRlKEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoVUlFdmVudFdpdGhLZXlTdGF0
ZSogdWlFdmVudCA9IGZpbmRFdmVudFdpdGhLZXlTdGF0ZShldmVudCkpCisgICAgICAgIHJldHVy
biBOYXZpZ2F0aW9uQWN0aW9uOjpVSUV2ZW50V2l0aEtleVN0YXRlRGF0YSB7ICp1aUV2ZW50IH07
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGlvbkFjdGlvbjo6TW91c2VFdmVudERhdGE+IG1vdXNlRXZlbnREYXRhRm9yRmlyc3RNb3Vz
ZUV2ZW50KEV2ZW50KiBldmVudCkKK3sKKyAgICBmb3IgKEV2ZW50KiBlID0gZXZlbnQ7IGU7IGUg
PSBlLT51bmRlcmx5aW5nRXZlbnQoKSkgeworICAgICAgICBpZiAoZS0+aXNNb3VzZUV2ZW50KCkp
CisgICAgICAgICAgICByZXR1cm4gTmF2aWdhdGlvbkFjdGlvbjo6TW91c2VFdmVudERhdGEgeyBz
dGF0aWNfY2FzdDxjb25zdCBNb3VzZUV2ZW50Jj4oKmUpIH07CisgICAgfQorICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Cit9CisKIE5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oRG9j
dW1lbnQmIHJlcXVlc3RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3Qs
IEluaXRpYXRlZEJ5TWFpbkZyYW1lIGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBOYXZpZ2F0aW9uVHlw
ZSB0eXBlLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3ksIEV2ZW50KiBldmVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJp
YnV0ZSkKICAgICA6IG1fcmVxdWVzdGVyIHsgcmVxdWVzdGVyIH0KICAgICAsIG1fcmVzb3VyY2VS
ZXF1ZXN0IHsgcmVzb3VyY2VSZXF1ZXN0IH0KICAgICAsIG1fdHlwZSB7IHR5cGUgfQogICAgICwg
bV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHsgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSB9CiAgICAgLCBtX2luaXRpYXRlZEJ5TWFpbkZyYW1lIHsgaW5pdGlhdGVkQnlNYWluRnJh
bWUgfQotICAgICwgbV9ldmVudCB7IGV2ZW50IH0KKyAgICAsIG1fa2V5U3RhdGVFdmVudERhdGEg
eyBrZXlTdGF0ZURhdGFGb3JGaXJzdEV2ZW50V2l0aEtleVN0YXRlKGV2ZW50KSB9CisgICAgLCBt
X21vdXNlRXZlbnREYXRhIHsgbW91c2VFdmVudERhdGFGb3JGaXJzdE1vdXNlRXZlbnQoZXZlbnQp
IH0KICAgICAsIG1fZG93bmxvYWRBdHRyaWJ1dGUgeyBkb3dubG9hZEF0dHJpYnV0ZSB9CiAgICAg
LCBtX3RyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbiB7IHNob3VsZFRyZWF0QXNTYW1lT3JpZ2lu
TmF2aWdhdGlvbihyZXF1ZXN0ZXIsIHJlc291cmNlUmVxdWVzdC51cmwoKSkgfQogewpAQCAtODks
NyArMTI1LDggQEAgTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihEb2N1bWVudCYg
cmVxdWVzdGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHIKICAgICAsIG1fdHlwZSB7IG5hdmln
YXRpb25UeXBlKGZyYW1lTG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sICEhZXZlbnQpIH0KICAg
ICAsIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgfQogICAgICwgbV9pbml0aWF0ZWRCeU1haW5GcmFtZSB7IGluaXRpYXRlZEJ5TWFp
bkZyYW1lIH0KLSAgICAsIG1fZXZlbnQgeyBldmVudCB9CisgICAgLCBtX2tleVN0YXRlRXZlbnRE
YXRhIHsga2V5U3RhdGVEYXRhRm9yRmlyc3RFdmVudFdpdGhLZXlTdGF0ZShldmVudCkgfQorICAg
ICwgbV9tb3VzZUV2ZW50RGF0YSB7IG1vdXNlRXZlbnREYXRhRm9yRmlyc3RNb3VzZUV2ZW50KGV2
ZW50KSB9CiAgICAgLCBtX2Rvd25sb2FkQXR0cmlidXRlIHsgZG93bmxvYWRBdHRyaWJ1dGUgfQog
ICAgICwgbV90cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb24geyBzaG91bGRUcmVhdEFzU2FtZU9y
aWdpbk5hdmlnYXRpb24ocmVxdWVzdGVyLCByZXNvdXJjZVJlcXVlc3QudXJsKCkpIH0KIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IDllODY4ZjM3ZGRmZjAy
NDI5YjM2ZDdhMzU4NmI1ZDlhYjMyODBjN2MuLmEyNGNmODhhZTkwNzNjZjgxYzJiMDM5OTE1Nzhm
YzY2OTQ0NmQxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
QWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaApA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKKyNpbmNsdWRlICJMYXlvdXRQb2ludC5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTQwLDYgKzQxLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFdmVudDsKIGNsYXNz
IEhpc3RvcnlJdGVtOworY2xhc3MgTW91c2VFdmVudDsKK2NsYXNzIFVJRXZlbnRXaXRoS2V5U3Rh
dGU7CiAKIGNsYXNzIE5hdmlnYXRpb25BY3Rpb24gewogcHVibGljOgpAQCAtNzEsNiArNzQsMjcg
QEAgcHVibGljOgogICAgIH07CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxSZXF1ZXN0ZXI+JiBy
ZXF1ZXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlcjsgfQogCisgICAgc3RydWN0IFVJ
RXZlbnRXaXRoS2V5U3RhdGVEYXRhIHsKKyAgICAgICAgVUlFdmVudFdpdGhLZXlTdGF0ZURhdGEo
Y29uc3QgVUlFdmVudFdpdGhLZXlTdGF0ZSYpOworCisgICAgICAgIGJvb2wgaXNUcnVzdGVkOwor
ICAgICAgICBib29sIHNoaWZ0S2V5OworICAgICAgICBib29sIGN0cmxLZXk7CisgICAgICAgIGJv
b2wgYWx0S2V5OworICAgICAgICBib29sIG1ldGFLZXk7CisgICAgfTsKKyAgICBzdHJ1Y3QgTW91
c2VFdmVudERhdGEgOiBVSUV2ZW50V2l0aEtleVN0YXRlRGF0YSB7CisgICAgICAgIE1vdXNlRXZl
bnREYXRhKGNvbnN0IE1vdXNlRXZlbnQmKTsKKworICAgICAgICBib29sIGJ1dHRvbkRvd247Cisg
ICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbjsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgc3lu
dGhldGljQ2xpY2tUeXBlOworICAgICAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZUxvY2F0aW9uOwor
ICAgICAgICBGbG9hdFBvaW50IGxvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzOworICAgIH07
CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxVSUV2ZW50V2l0aEtleVN0YXRlRGF0YT4mIGtleVN0
YXRlRXZlbnREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTdGF0ZUV2ZW50RGF0YTsgfQorICAg
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8TW91c2VFdmVudERhdGE+JiBtb3VzZUV2ZW50RGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fbW91c2VFdmVudERhdGE7IH0KKwogICAgIE5hdmlnYXRpb25BY3Rpb24g
Y29weVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kpIGNvbnN0OwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1f
cmVxdWVzdGVyIHx8IG1fcmVxdWVzdGVyLT51cmwoKS5pc0VtcHR5KCkgfHwgbV9yZXNvdXJjZVJl
cXVlc3QudXJsKCkuaXNFbXB0eSgpOyB9CkBAIC03OSw3ICsxMDMsNiBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBt
X3Jlc291cmNlUmVxdWVzdDsgfQogCiAgICAgTmF2aWdhdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQotICAgIGNvbnN0IEV2ZW50KiBldmVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fZXZlbnQuZ2V0KCk7IH0KIAogICAgIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV91c2VyR2VzdHVyZVRva2VuID8gbV91c2VyR2VzdHVyZVRva2VuLT5wcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKSA6IGZhbHNlOyB9CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9r
ZW4+IHVzZXJHZXN0dXJlVG9rZW4oKSBjb25zdCB7IHJldHVybiBtX3VzZXJHZXN0dXJlVG9rZW47
IH0KQEAgLTEwNiw3ICsxMjksOCBAQCBwcml2YXRlOgogICAgIE5hdmlnYXRpb25UeXBlIG1fdHlw
ZTsKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IG1fc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTsKICAgICBJbml0aWF0ZWRCeU1haW5GcmFtZSBtX2luaXRpYXRlZEJ5TWFpbkZy
YW1lOwotICAgIFJlZlB0cjxFdmVudD4gbV9ldmVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVJRXZl
bnRXaXRoS2V5U3RhdGVEYXRhPiBtX2tleVN0YXRlRXZlbnREYXRhOworICAgIHN0ZDo6b3B0aW9u
YWw8TW91c2VFdmVudERhdGE+IG1fbW91c2VFdmVudERhdGE7CiAgICAgUmVmUHRyPFVzZXJHZXN0
dXJlVG9rZW4+IG1fdXNlckdlc3R1cmVUb2tlbiB7IFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpjdXJy
ZW50VXNlckdlc3R1cmUoKSB9OwogICAgIEF0b21pY1N0cmluZyBtX2Rvd25sb2FkQXR0cmlidXRl
OwogICAgIGJvb2wgbV90cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb247CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCmluZGV4IDkwYjNjZGUwNzk3YWJk
MTFjMmFjZjY0MWQyZTMyN2IxODBiNzJkZDYuLjAwMDQ3MWM1MTc2MjJkYWUyMzZmNmJiNDBlZjhm
NjI3ZGZkYzY2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25B
Y3Rpb24uY3BwCkBAIC0zOCw3OSArMzgsNTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgY29uc3QgTW91c2VFdmVudCogbW91c2VFdmVu
dEZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFj
dGlvbikKK3N0YXRpYyBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b25Gb3JNb3VzZUV2
ZW50RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnRE
YXRhPiYgbW91c2VFdmVudERhdGEpCiB7Ci0gICAgZm9yIChjb25zdCBFdmVudCogZSA9IG5hdmln
YXRpb25BY3Rpb24uZXZlbnQoKTsgZTsgZSA9IGUtPnVuZGVybHlpbmdFdmVudCgpKSB7Ci0gICAg
ICAgIGlmIChlLT5pc01vdXNlRXZlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBNb3VzZUV2ZW50Kj4oZSk7Ci0gICAgfQotICAgIHJldHVybiAwOworICAgIGlmICht
b3VzZUV2ZW50RGF0YSAmJiBtb3VzZUV2ZW50RGF0YS0+YnV0dG9uRG93biAmJiBtb3VzZUV2ZW50
RGF0YS0+aXNUcnVzdGVkKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViTW91c2VFdmVu
dDo6QnV0dG9uPihtb3VzZUV2ZW50RGF0YS0+YnV0dG9uKTsKKyAgICByZXR1cm4gV2ViTW91c2VF
dmVudDo6Tm9CdXR0b247CiB9CiAKLXN0YXRpYyBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VC
dXR0b25Gb3JNb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQpCitzdGF0aWMg
V2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBlIHN5bnRoZXRpY0NsaWNrVHlwZUZvck1v
dXNlRXZlbnREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbjo6TW91c2VF
dmVudERhdGE+JiBtb3VzZUV2ZW50RGF0YSkKIHsKLSAgICBpZiAoIW1vdXNlRXZlbnQpCi0gICAg
ICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjsKLQotICAgIGlmICghbW91c2VFdmVu
dC0+YnV0dG9uRG93bigpIHx8ICFtb3VzZUV2ZW50LT5pc1RydXN0ZWQoKSkKLSAgICAgICAgcmV0
dXJuIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uOwotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdl
Yk1vdXNlRXZlbnQ6OkJ1dHRvbj4obW91c2VFdmVudC0+YnV0dG9uKCkpOworICAgIGlmIChtb3Vz
ZUV2ZW50RGF0YSAmJiBtb3VzZUV2ZW50RGF0YS0+YnV0dG9uRG93biAmJiBtb3VzZUV2ZW50RGF0
YS0+aXNUcnVzdGVkKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViTW91c2VFdmVudDo6
U3ludGhldGljQ2xpY2tUeXBlPihtb3VzZUV2ZW50RGF0YS0+c3ludGhldGljQ2xpY2tUeXBlKTsK
KyAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6Tm9UYXA7CiB9Ci0KLXN0YXRpYyBXZWJNb3VzZUV2
ZW50OjpTeW50aGV0aWNDbGlja1R5cGUgc3ludGhldGljQ2xpY2tUeXBlRm9yTW91c2VFdmVudChj
b25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50KQotewotICAgIGlmICghbW91c2VFdmVudCkKLSAg
ICAgICAgcmV0dXJuIFdlYk1vdXNlRXZlbnQ6Ok5vVGFwOwotICAgIAotICAgIGlmICghbW91c2VF
dmVudC0+YnV0dG9uRG93bigpIHx8ICFtb3VzZUV2ZW50LT5pc1RydXN0ZWQoKSkKLSAgICAgICAg
cmV0dXJuIFdlYk1vdXNlRXZlbnQ6Ok5vVGFwOwogICAgIAotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGU+KG1vdXNlRXZlbnQtPnN5bnRoZXRp
Y0NsaWNrVHlwZSgpKTsKLX0KLSAgICAKLXN0YXRpYyBGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25J
blJvb3RWaWV3Q29vcmRpbmF0ZXNGb3JNb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnQqIG1vdXNl
RXZlbnQpCitzdGF0aWMgRmxvYXRQb2ludCBjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5h
dGVzRm9yTW91c2VFdmVudERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9u
OjpNb3VzZUV2ZW50RGF0YT4mIG1vdXNlRXZlbnREYXRhKQogewotICAgIGlmICghbW91c2VFdmVu
dCkKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAKLSAgICBpZiAoIW1vdXNlRXZlbnQtPmJ1dHRv
bkRvd24oKSB8fCAhbW91c2VFdmVudC0+aXNUcnVzdGVkKCkpCi0gICAgICAgIHJldHVybiB7IH07
Ci0gICAgCi0gICAgcmV0dXJuIG1vdXNlRXZlbnQtPmxvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5h
dGVzKCk7CisgICAgaWYgKG1vdXNlRXZlbnREYXRhICYmIG1vdXNlRXZlbnREYXRhLT5idXR0b25E
b3duICYmIG1vdXNlRXZlbnREYXRhLT5pc1RydXN0ZWQpCisgICAgICAgIHJldHVybiBtb3VzZUV2
ZW50RGF0YS0+bG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXM7CisgICAgcmV0dXJuIHsgfTsK
IH0KIAogV2ViRXZlbnQ6Ok1vZGlmaWVycyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246
Om1vZGlmaWVyc0Zvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2
aWdhdGlvbkFjdGlvbikKIHsKICAgICB1aW50MzJfdCBtb2RpZmllcnMgPSAwOwotICAgIGNvbnN0
IFVJRXZlbnRXaXRoS2V5U3RhdGUqIGtleVN0YXRlRXZlbnQgPSBmaW5kRXZlbnRXaXRoS2V5U3Rh
dGUoY29uc3RfY2FzdDxFdmVudCo+KG5hdmlnYXRpb25BY3Rpb24uZXZlbnQoKSkpOwotICAgIGlm
IChrZXlTdGF0ZUV2ZW50ICYmIGtleVN0YXRlRXZlbnQtPmlzVHJ1c3RlZCgpKSB7Ci0gICAgICAg
IGlmIChrZXlTdGF0ZUV2ZW50LT5zaGlmdEtleSgpKQorICAgIGF1dG8ga2V5U3RhdGVFdmVudERh
dGEgPSBuYXZpZ2F0aW9uQWN0aW9uLmtleVN0YXRlRXZlbnREYXRhKCk7CisgICAgaWYgKGtleVN0
YXRlRXZlbnREYXRhICYmIGtleVN0YXRlRXZlbnREYXRhLT5pc1RydXN0ZWQpIHsKKyAgICAgICAg
aWYgKGtleVN0YXRlRXZlbnREYXRhLT5zaGlmdEtleSkKICAgICAgICAgICAgIG1vZGlmaWVycyB8
PSBXZWJFdmVudDo6U2hpZnRLZXk7Ci0gICAgICAgIGlmIChrZXlTdGF0ZUV2ZW50LT5jdHJsS2V5
KCkpCisgICAgICAgIGlmIChrZXlTdGF0ZUV2ZW50RGF0YS0+Y3RybEtleSkKICAgICAgICAgICAg
IG1vZGlmaWVycyB8PSBXZWJFdmVudDo6Q29udHJvbEtleTsKLSAgICAgICAgaWYgKGtleVN0YXRl
RXZlbnQtPmFsdEtleSgpKQorICAgICAgICBpZiAoa2V5U3RhdGVFdmVudERhdGEtPmFsdEtleSkK
ICAgICAgICAgICAgIG1vZGlmaWVycyB8PSBXZWJFdmVudDo6QWx0S2V5OwotICAgICAgICBpZiAo
a2V5U3RhdGVFdmVudC0+bWV0YUtleSgpKQorICAgICAgICBpZiAoa2V5U3RhdGVFdmVudERhdGEt
Pm1ldGFLZXkpCiAgICAgICAgICAgICBtb2RpZmllcnMgfD0gV2ViRXZlbnQ6Ok1ldGFLZXk7CiAg
ICAgfQotCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkV2ZW50OjpNb2RpZmllcnM+KG1vZGlm
aWVycyk7CiB9CiAKIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb246Om1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQogewotICAgIHJldHVybiBtb3VzZUJ1dHRvbkZvck1v
dXNlRXZlbnQobW91c2VFdmVudEZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbikp
OworICAgIHJldHVybiBtb3VzZUJ1dHRvbkZvck1vdXNlRXZlbnREYXRhKG5hdmlnYXRpb25BY3Rp
b24ubW91c2VFdmVudERhdGEoKSk7CiB9CiAKIFdlYk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNr
VHlwZSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OnN5bnRoZXRpY0NsaWNrVHlwZUZv
ck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlv
bikKIHsKLSAgICByZXR1cm4gc3ludGhldGljQ2xpY2tUeXBlRm9yTW91c2VFdmVudChtb3VzZUV2
ZW50Rm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKSk7CisgICAgcmV0dXJuIHN5
bnRoZXRpY0NsaWNrVHlwZUZvck1vdXNlRXZlbnREYXRhKG5hdmlnYXRpb25BY3Rpb24ubW91c2VF
dmVudERhdGEoKSk7CiB9CiAgICAgCiBGbG9hdFBvaW50IEluamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbjo6Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck5hdmlnYXRpb25B
Y3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbikKIHsKLSAgICBy
ZXR1cm4gY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck1vdXNlRXZlbnQobW91
c2VFdmVudEZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbikpOworICAgIHJldHVy
biBjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTW91c2VFdmVudERhdGEobmF2
aWdhdGlvbkFjdGlvbi5tb3VzZUV2ZW50RGF0YSgpKTsKIH0KIAogUmVmPEluamVjdGVkQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbj4gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUo
V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFJlZlB0cjxG
b3JtU3RhdGU+JiYgZm9ybVN0YXRlKQpAQCAtMTI2LDkgKzEwNCw5IEBAIEluamVjdGVkQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbjo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKFdlYkZyYW1l
KiBmcmFtZSwKICAgICAsIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMcyhuYXZpZ2F0aW9uQWN0aW9u
LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSA9PSBTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGRBbGxvdyB8fCBuYXZpZ2F0aW9uQWN0aW9uLnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koKSA9PSBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxv
d0V4dGVybmFsU2NoZW1lcykKICAgICAsIG1fc2hvdWxkVHJ5QXBwTGlua3MobmF2aWdhdGlvbkFj
dGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgPT0gU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkQWxsb3cpCiB7Ci0gICAgaWYgKGNvbnN0IE1vdXNlRXZlbnQqIG1v
dXNlRXZlbnQgPSBtb3VzZUV2ZW50Rm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9u
KSkgewotICAgICAgICBtX2hpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQ6OmNyZWF0ZShmcmFtZS0+Y29yZUZyYW1lKCktPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1
bHRBdFBvaW50KG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSkpOwotICAgICAgICBtX21v
dXNlQnV0dG9uICAgPSBtb3VzZUJ1dHRvbkZvck1vdXNlRXZlbnQobW91c2VFdmVudCk7CisgICAg
aWYgKGF1dG8gbW91c2VFdmVudERhdGEgPSBuYXZpZ2F0aW9uQWN0aW9uLm1vdXNlRXZlbnREYXRh
KCkpIHsKKyAgICAgICAgbV9oaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0OjpjcmVhdGUoZnJhbWUtPmNvcmVGcmFtZSgpLT5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVz
dWx0QXRQb2ludChtb3VzZUV2ZW50RGF0YS0+YWJzb2x1dGVMb2NhdGlvbikpOworICAgICAgICBt
X21vdXNlQnV0dG9uID0gbW91c2VCdXR0b25Gb3JNb3VzZUV2ZW50RGF0YShtb3VzZUV2ZW50RGF0
YSk7CiAgICAgICAgIG1fc3ludGhldGljQ2xpY2tUeXBlID0gc3ludGhldGljQ2xpY2tUeXBlRm9y
TmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKICAgICAgICAgbV9jbGlja0xvY2F0
aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGlu
YXRlc0Zvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA1ZTQ2NWQ3YWY1MzI2YTZjMjQ2MGZkZjg5MDUxZDI5
NjA4ZmY3ZDdmLi5iZGI4ODM5OTRjNGFjYWEzNDdjZmE1ZDQ1OTZlNjFhY2ExMDNiZTFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTU1NSwyOCArMTU1NSwxOSBAQCBTdHJpbmcg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkKICAgICByZXR1
cm4gW3dlYlZpZXcgX3VzZXJBZ2VudFN0cmluZ107CiB9CiAKLXN0YXRpYyBjb25zdCBNb3VzZUV2
ZW50KiBmaW5kTW91c2VFdmVudChjb25zdCBFdmVudCogZXZlbnQpCi17Ci0gICAgZm9yIChjb25z
dCBFdmVudCogZSA9IGV2ZW50OyBlOyBlID0gZS0+dW5kZXJseWluZ0V2ZW50KCkpCi0gICAgICAg
IGlmIChlLT5pc01vdXNlRXZlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBNb3VzZUV2ZW50Kj4oZSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIE5TRGljdGlvbmFyeSAq
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rpb25hcnkoY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYgYWN0aW9uLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSkgY29uc3QKIHsKICAgICB1bnNpZ25l
ZCBtb2RpZmllckZsYWdzID0gMDsKLSAgICBjb25zdCBFdmVudCogZXZlbnQgPSBhY3Rpb24uZXZl
bnQoKTsKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIGNvbnN0IFVJRXZlbnRXaXRoS2V5U3RhdGUq
IGtleVN0YXRlRXZlbnQgPSBmaW5kRXZlbnRXaXRoS2V5U3RhdGUoY29uc3RfY2FzdDxFdmVudCo+
KGV2ZW50KSk7Ci0gICAgaWYgKGtleVN0YXRlRXZlbnQgJiYga2V5U3RhdGVFdmVudC0+aXNUcnVz
dGVkKCkpIHsKLSAgICAgICAgaWYgKGtleVN0YXRlRXZlbnQtPmN0cmxLZXkoKSkKKyAgICBhdXRv
IGtleVN0YXRlRXZlbnREYXRhID0gYWN0aW9uLmtleVN0YXRlRXZlbnREYXRhKCk7CisgICAgaWYg
KGtleVN0YXRlRXZlbnREYXRhICYmIGtleVN0YXRlRXZlbnREYXRhLT5pc1RydXN0ZWQpIHsKKyAg
ICAgICAgaWYgKGtleVN0YXRlRXZlbnREYXRhLT5jdHJsS2V5KQogICAgICAgICAgICAgbW9kaWZp
ZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnQ29udHJvbDsKLSAgICAgICAgaWYgKGtleVN0
YXRlRXZlbnQtPmFsdEtleSgpKQorICAgICAgICBpZiAoa2V5U3RhdGVFdmVudERhdGEtPmFsdEtl
eSkKICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ09wdGlv
bjsKLSAgICAgICAgaWYgKGtleVN0YXRlRXZlbnQtPnNoaWZ0S2V5KCkpCisgICAgICAgIGlmIChr
ZXlTdGF0ZUV2ZW50RGF0YS0+c2hpZnRLZXkpCiAgICAgICAgICAgICBtb2RpZmllckZsYWdzIHw9
IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKLSAgICAgICAgaWYgKGtleVN0YXRlRXZlbnQtPm1l
dGFLZXkoKSkKKyAgICAgICAgaWYgKGtleVN0YXRlRXZlbnREYXRhLT5tZXRhS2V5KQogICAgICAg
ICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnQ29tbWFuZDsKICAgICB9
CiAjZWxzZQpAQCAtMTU5MiwxNCArMTU4MywxNCBAQCBOU0RpY3Rpb25hcnkgKldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjphY3Rpb25EaWN0aW9uYXJ5KGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdAog
ICAgICAgICBvcmlnaW5hbFVSTCwgV2ViQWN0aW9uT3JpZ2luYWxVUkxLZXksCiAgICAgICAgIG5p
bF07CiAKLSAgICBpZiAoY29uc3QgTW91c2VFdmVudCogbW91c2VFdmVudCA9IGZpbmRNb3VzZUV2
ZW50KGV2ZW50KSkgeworICAgIGlmIChhdXRvIG1vdXNlRXZlbnREYXRhID0gYWN0aW9uLm1vdXNl
RXZlbnREYXRhKCkpIHsKICAgICAgICAgV2ViRWxlbWVudERpY3Rpb25hcnkgKmVsZW1lbnQgPSBb
W1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXQotICAgICAgICAgICAgaW5pdFdpdGhIaXRUZXN0
UmVzdWx0OmNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1
bHRBdFBvaW50KG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSldOworICAgICAgICAgICAg
aW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmV2ZW50SGFuZGxl
cigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnREYXRhLT5hYnNvbHV0ZUxvY2F0aW9u
KV07CiAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OmVsZW1lbnQgZm9yS2V5OldlYkFjdGlvbkVs
ZW1lbnRLZXldOwogICAgICAgICBbZWxlbWVudCByZWxlYXNlXTsKIAotICAgICAgICBpZiAobW91
c2VFdmVudC0+aXNUcnVzdGVkKCkpCi0gICAgICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpbTlNO
dW1iZXIgbnVtYmVyV2l0aEludDptb3VzZUV2ZW50LT5idXR0b24oKV0gZm9yS2V5OldlYkFjdGlv
bkJ1dHRvbktleV07CisgICAgICAgIGlmIChtb3VzZUV2ZW50RGF0YS0+aXNUcnVzdGVkKQorICAg
ICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bW91c2VF
dmVudERhdGEtPmJ1dHRvbl0gZm9yS2V5OldlYkFjdGlvbkJ1dHRvbktleV07CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50
OldlYkNvcmU6Ok5vQnV0dG9uXSBmb3JLZXk6V2ViQWN0aW9uQnV0dG9uS2V5XTsKICAgICB9Cg==
</data>
<flag name="review"
          id="359548"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>