<?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>221779</bug_id>
          
          <creation_ts>2021-02-11 14:06:44 -0800</creation_ts>
          <short_desc>Review usage of adoptNS()</short_desc>
          <delta_ts>2021-02-11 16:49:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly 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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1728291</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-11 14:06:44 -0800</bug_when>
    <thetext>Review usage of adoptNS():
1. Make sure we call adoptNS() as soon as we allocate the object instead of doing it later on, as this is less error-prone
2. Fix cases where we called adoptNS() but really should have retained instead of adopting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728292</commentid>
    <comment_count>1</comment_count>
      <attachid>420042</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-11 14:08:14 -0800</bug_when>
    <thetext>Created attachment 420042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728294</commentid>
    <comment_count>2</comment_count>
      <attachid>420042</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-11 14:14:14 -0800</bug_when>
    <thetext>Comment on attachment 420042
Patch

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

&gt; Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:510
&gt;          [webAnimationDelegate setOwner:this];

If you use [m_delegate setOwner:this] instead, this can only be two lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728296</commentid>
    <comment_count>3</comment_count>
      <attachid>420042</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-11 14:16:37 -0800</bug_when>
    <thetext>Comment on attachment 420042
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:510
&gt;&gt;          [webAnimationDelegate setOwner:this];
&gt; 
&gt; If you use [m_delegate setOwner:this] instead, this can only be two lines.

The issue is that the type of m_delegate is NSObject, not WebAnimationDelegate. Maybe that still works in ObjC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728298</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-11 14:20:55 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Comment on attachment 420042 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420042&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:510
&gt; &gt;&gt;          [webAnimationDelegate setOwner:this];
&gt; &gt; 
&gt; &gt; If you use [m_delegate setOwner:this] instead, this can only be two lines.
&gt; 
&gt; The issue is that the type of m_delegate is NSObject, not
&gt; WebAnimationDelegate. Maybe that still works in ObjC?

As I thought, this does not work:
./platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:510:21: error: &apos;NSObject&apos; may not respond to &apos;setOwner:&apos; [-Werror]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728360</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-11 16:48:52 -0800</bug_when>
    <thetext>Committed r272760: &lt;https://commits.webkit.org/r272760&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420042.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728361</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-11 16:49:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/74256841&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420042</attachid>
            <date>2021-02-11 14:08:14 -0800</date>
            <delta_ts>2021-02-11 16:48:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221779-20210211140814.patch</filename>
            <type>text/plain</type>
            <size>21270</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMxMmNkOTRjMTYzZDc0
Yjc2ZWU1ZGRjY2MzZTIwM2IxOGRlN2I3OC4uYjg3ZTJkODBmODNkZmY0MjI3ZGU1OGUyODNkMjJi
NDU0NTJhOWY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAyLTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3IHVzYWdlIG9mIGFk
b3B0TlMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIxNzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmV2aWV3IHVzYWdlIG9mIGFkb3B0TlMoKToKKyAgICAgICAgMS4gTWFrZSBzdXJlIHdlIGNhbGwg
YWRvcHROUygpIGFzIHNvb24gYXMgd2UgYWxsb2NhdGUgdGhlIG9iamVjdCBpbnN0ZWFkIG9mIGRv
aW5nIGl0IGxhdGVyIG9uLCBhcyB0aGlzIGlzIGxlc3MgZXJyb3ItcHJvbmUKKyAgICAgICAgMi4g
Rml4IGNhc2VzIHdoZXJlIHdlIGNhbGxlZCBhZG9wdE5TKCkgYnV0IHJlYWxseSBzaG91bGQgaGF2
ZSByZXRhaW5lZCBpbnN0ZWFkIG9mIGFkb3B0aW5nCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBRmlsdGVyc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjphZGRBbmltYXRpb25Gb3JLZXkp
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpncmFkdWFsRGVjb2RlclJlZnJlc2hDb3VudCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxlQ29jb2EubW06CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVEYXRlVGltZUZvcm1hdHRlcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
bW06CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmVuY29kZWRQcmVmZXJlbmNlVmFsdWUp
OgorCiAyMDIxLTAyLTExICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbaU9TXVtGQ1JdIFJhbmdlIGlucHV0cyBoYXZlIGFuIGluY29ycmVjdCBSVEwgYXBw
ZWFyYW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBhMzA2MGZjNGVkN2UyM2ZjODIyMGU5YjY4ZjI3NjQ4ZTJmN2Zk
NjhiLi5iZWE2NmUzYTEwOWFjZDM0ZWRlYTlmYWU4MTE3NWQzZDAyYmYyMGQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDIxLTAyLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3IHVzYWdlIG9mIGFkb3B0TlMoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNzc5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV2aWV3IHVzYWdlIG9mIGFkb3B0TlMo
KToKKyAgICAgICAgMS4gTWFrZSBzdXJlIHdlIGNhbGwgYWRvcHROUygpIGFzIHNvb24gYXMgd2Ug
YWxsb2NhdGUgdGhlIG9iamVjdCBpbnN0ZWFkIG9mIGRvaW5nIGl0IGxhdGVyIG9uLCBhcyB0aGlz
IGlzIGxlc3MgZXJyb3ItcHJvbmUKKyAgICAgICAgMi4gRml4IGNhc2VzIHdoZXJlIHdlIGNhbGxl
ZCBhZG9wdE5TKCkgYnV0IHJlYWxseSBzaG91bGQgaGF2ZSByZXRhaW5lZCBpbnN0ZWFkIG9mIGFk
b3B0aW5nCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VO
b2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXll
clRyZWVIb3N0SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0Ojpt
YWtlTm9kZSk6CisKIDIwMjEtMDItMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtDb2NvYV0gSVBDIGRlY29kZXIgaXMgdXNpbmcgZGVjb2RlZCBzaXplIHRvIGFs
bG9jYXRlIG1lbW9yeSBmb3IgYW4gYXJyYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBRmlsdGVyc0Nv
Y29hLm1tCmluZGV4IDAxYzVlMmRhNmQ4YjQ1ODg5ZWE1YWUzMWFmNTMyNjM1OTBkYWU2NjMuLmNi
Yzg0ZmY1NDhkOTYzN2Y1NjI5MTkyODc5ZTE0MDgzZWRiZTNmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUZpbHRlcnNDb2NvYS5tbQpAQCAtMzIwLDIyICszMjAsMjIgQEAgUmV0YWluUHRyPE5T
VmFsdWU+IFBsYXRmb3JtQ0FGaWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlvbihjb25zdCBG
aWx0ZXJPcGVyYXQKICAgICAgICAgaWYgKG9wZXJhdGlvbikKICAgICAgICAgICAgIGFtb3VudCA9
IGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pLmFt
b3VudCgpOwogCi0gICAgICAgIENJVmVjdG9yKiByb3dWZWN0b3IgPSBudWxscHRyOworICAgICAg
ICBSZXRhaW5QdHI8Q0lWZWN0b3I+IHJvd1ZlY3RvcjsKICAgICAgICAgc3dpdGNoIChpbnRlcm5h
bEZpbHRlclByb3BlcnR5SW5kZXgpIHsKLSAgICAgICAgY2FzZSAwOiByb3dWZWN0b3IgPSBbW0NJ
VmVjdG9yIGFsbG9jXSBpbml0V2l0aFg6V2ViQ29yZTo6YmxlbmQoc2VwaWFOb25lQ29uc3RhbnRz
WzBdWzBdLCBzZXBpYUZ1bGxDb25zdGFudHNbMF1bMF0sIGFtb3VudCkKKyAgICAgICAgY2FzZSAw
OiByb3dWZWN0b3IgPSBhZG9wdE5TKFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRoWDpXZWJDb3Jl
OjpibGVuZChzZXBpYU5vbmVDb25zdGFudHNbMF1bMF0sIHNlcGlhRnVsbENvbnN0YW50c1swXVsw
XSwgYW1vdW50KQogICAgICAgICAgICAgWTpXZWJDb3JlOjpibGVuZChzZXBpYU5vbmVDb25zdGFu
dHNbMF1bMV0sIHNlcGlhRnVsbENvbnN0YW50c1swXVsxXSwgYW1vdW50KQotICAgICAgICAgICAg
WjpXZWJDb3JlOjpibGVuZChzZXBpYU5vbmVDb25zdGFudHNbMF1bMl0sIHNlcGlhRnVsbENvbnN0
YW50c1swXVsyXSwgYW1vdW50KSBXOjBdOworICAgICAgICAgICAgWjpXZWJDb3JlOjpibGVuZChz
ZXBpYU5vbmVDb25zdGFudHNbMF1bMl0sIHNlcGlhRnVsbENvbnN0YW50c1swXVsyXSwgYW1vdW50
KSBXOjBdKTsKICAgICAgICAgICAgIGJyZWFrOyAvLyBpbnB1dFJWZWN0b3IKLSAgICAgICAgY2Fz
ZSAxOiByb3dWZWN0b3IgPSBbW0NJVmVjdG9yIGFsbG9jXSBpbml0V2l0aFg6V2ViQ29yZTo6Ymxl
bmQoc2VwaWFOb25lQ29uc3RhbnRzWzFdWzBdLCBzZXBpYUZ1bGxDb25zdGFudHNbMV1bMF0sIGFt
b3VudCkKKyAgICAgICAgY2FzZSAxOiByb3dWZWN0b3IgPSBhZG9wdE5TKFtbQ0lWZWN0b3IgYWxs
b2NdIGluaXRXaXRoWDpXZWJDb3JlOjpibGVuZChzZXBpYU5vbmVDb25zdGFudHNbMV1bMF0sIHNl
cGlhRnVsbENvbnN0YW50c1sxXVswXSwgYW1vdW50KQogICAgICAgICAgICAgWTpXZWJDb3JlOjpi
bGVuZChzZXBpYU5vbmVDb25zdGFudHNbMV1bMV0sIHNlcGlhRnVsbENvbnN0YW50c1sxXVsxXSwg
YW1vdW50KQotICAgICAgICAgICAgWjpXZWJDb3JlOjpibGVuZChzZXBpYU5vbmVDb25zdGFudHNb
MV1bMl0sIHNlcGlhRnVsbENvbnN0YW50c1sxXVsyXSwgYW1vdW50KSBXOjBdOworICAgICAgICAg
ICAgWjpXZWJDb3JlOjpibGVuZChzZXBpYU5vbmVDb25zdGFudHNbMV1bMl0sIHNlcGlhRnVsbENv
bnN0YW50c1sxXVsyXSwgYW1vdW50KSBXOjBdKTsKICAgICAgICAgICAgIGJyZWFrOyAvLyBpbnB1
dEdWZWN0b3IKLSAgICAgICAgY2FzZSAyOiByb3dWZWN0b3IgPSBbW0NJVmVjdG9yIGFsbG9jXSBp
bml0V2l0aFg6V2ViQ29yZTo6YmxlbmQoc2VwaWFOb25lQ29uc3RhbnRzWzJdWzBdLCBzZXBpYUZ1
bGxDb25zdGFudHNbMl1bMF0sIGFtb3VudCkKKyAgICAgICAgY2FzZSAyOiByb3dWZWN0b3IgPSBh
ZG9wdE5TKFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRoWDpXZWJDb3JlOjpibGVuZChzZXBpYU5v
bmVDb25zdGFudHNbMl1bMF0sIHNlcGlhRnVsbENvbnN0YW50c1syXVswXSwgYW1vdW50KQogICAg
ICAgICAgICAgWTpXZWJDb3JlOjpibGVuZChzZXBpYU5vbmVDb25zdGFudHNbMl1bMV0sIHNlcGlh
RnVsbENvbnN0YW50c1syXVsxXSwgYW1vdW50KQotICAgICAgICAgICAgWjpXZWJDb3JlOjpibGVu
ZChzZXBpYU5vbmVDb25zdGFudHNbMl1bMl0sIHNlcGlhRnVsbENvbnN0YW50c1syXVsyXSwgYW1v
dW50KSBXOjBdOworICAgICAgICAgICAgWjpXZWJDb3JlOjpibGVuZChzZXBpYU5vbmVDb25zdGFu
dHNbMl1bMl0sIHNlcGlhRnVsbENvbnN0YW50c1syXVsyXSwgYW1vdW50KSBXOjBdKTsKICAgICAg
ICAgICAgIGJyZWFrOyAvLyBpbnB1dEJWZWN0b3IKICAgICAgICAgfQotICAgICAgICB2YWx1ZSA9
IGFkb3B0TlMocm93VmVjdG9yKTsKKyAgICAgICAgdmFsdWUgPSBXVEZNb3ZlKHJvd1ZlY3Rvcik7
CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzc1LDE0ICszNzUsMTQgQEAgUmV0
YWluUHRyPE5TVmFsdWU+IFBsYXRmb3JtQ0FGaWx0ZXJzOjpmaWx0ZXJWYWx1ZUZvck9wZXJhdGlv
bihjb25zdCBGaWx0ZXJPcGVyYXQKICAgICAgICAgLy8gVGhlIGNvbG9yIG1hdHJpeCBhbmltYXRp
b24gZm9yIGludmVydCBkb2VzIGEgc2NhbGUgb2YgZWFjaCBjb2xvciBjb21wb25lbnQgYnkgYSB2
YWx1ZSB0aGF0IGdvZXMgZnJvbSAKICAgICAgICAgLy8gMSAod2hlbiBhbW91bnQgaXMgMCkgdG8g
LTEgKHdoZW4gYW1vdW50IGlzIDEpLiBUaGVuIHRoZSBjb2xvciB2YWx1ZXMgYXJlIG9mZnNldCBi
eSBhbW91bnQuIFRoaXMgaGFzIHRoZQogICAgICAgICAvLyBlZmZlY3Qgb2YgcGVyZm9ybWluZyB0
aGUgb3BlcmF0aW9uOiBjJyA9IGMgKiAtMSArIDEsIHdoaWNoIGludmVydHMgdGhlIGNvbG9yLgot
ICAgICAgICBDSVZlY3Rvciogcm93VmVjdG9yID0gMDsKKyAgICAgICAgUmV0YWluUHRyPENJVmVj
dG9yPiByb3dWZWN0b3I7CiAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUlu
ZGV4KSB7Ci0gICAgICAgIGNhc2UgMDogcm93VmVjdG9yID0gW1tDSVZlY3RvciBhbGxvY10gaW5p
dFdpdGhYOm11bHRpcGxpZXIgWTowIFo6MCBXOjBdOyBicmVhazsgLy8gaW5wdXRSVmVjdG9yCi0g
ICAgICAgIGNhc2UgMTogcm93VmVjdG9yID0gW1tDSVZlY3RvciBhbGxvY10gaW5pdFdpdGhYOjAg
WTptdWx0aXBsaWVyIFo6MCBXOjBdOyBicmVhazsgLy8gaW5wdXRHVmVjdG9yCi0gICAgICAgIGNh
c2UgMjogcm93VmVjdG9yID0gW1tDSVZlY3RvciBhbGxvY10gaW5pdFdpdGhYOjAgWTowIFo6bXVs
dGlwbGllciBXOjBdOyBicmVhazsgLy8gaW5wdXRCVmVjdG9yCi0gICAgICAgIGNhc2UgMzogcm93
VmVjdG9yID0gW1tDSVZlY3RvciBhbGxvY10gaW5pdFdpdGhYOmFtb3VudCBZOmFtb3VudCBaOmFt
b3VudCBXOjBdOyBicmVhazsgLy8gaW5wdXRCaWFzVmVjdG9yCisgICAgICAgIGNhc2UgMDogcm93
VmVjdG9yID0gYWRvcHROUyhbW0NJVmVjdG9yIGFsbG9jXSBpbml0V2l0aFg6bXVsdGlwbGllciBZ
OjAgWjowIFc6MF0pOyBicmVhazsgLy8gaW5wdXRSVmVjdG9yCisgICAgICAgIGNhc2UgMTogcm93
VmVjdG9yID0gYWRvcHROUyhbW0NJVmVjdG9yIGFsbG9jXSBpbml0V2l0aFg6MCBZOm11bHRpcGxp
ZXIgWjowIFc6MF0pOyBicmVhazsgLy8gaW5wdXRHVmVjdG9yCisgICAgICAgIGNhc2UgMjogcm93
VmVjdG9yID0gYWRvcHROUyhbW0NJVmVjdG9yIGFsbG9jXSBpbml0V2l0aFg6MCBZOjAgWjptdWx0
aXBsaWVyIFc6MF0pOyBicmVhazsgLy8gaW5wdXRCVmVjdG9yCisgICAgICAgIGNhc2UgMzogcm93
VmVjdG9yID0gYWRvcHROUyhbW0NJVmVjdG9yIGFsbG9jXSBpbml0V2l0aFg6YW1vdW50IFk6YW1v
dW50IFo6YW1vdW50IFc6MF0pOyBicmVhazsgLy8gaW5wdXRCaWFzVmVjdG9yCiAgICAgICAgIH0K
LSAgICAgICAgdmFsdWUgPSBhZG9wdE5TKHJvd1ZlY3Rvcik7CisgICAgICAgIHZhbHVlID0gV1RG
TW92ZShyb3dWZWN0b3IpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQxNCwx
MyArNDE0LDEzIEBAIFJldGFpblB0cjxOU1ZhbHVlPiBQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVy
VmFsdWVGb3JPcGVyYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0CiAgICAgICAgIGlmIChvcGVyYXRp
b24pCiAgICAgICAgICAgICBhbW91bnQgPSBkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVy
RmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKS5hbW91bnQoKTsKICAgICAgICAgCi0gICAgICAg
IENJVmVjdG9yKiByb3dWZWN0b3IgPSBudWxscHRyOworICAgICAgICBSZXRhaW5QdHI8Q0lWZWN0
b3I+IHJvd1ZlY3RvcjsKICAgICAgICAgc3dpdGNoIChpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5k
ZXgpIHsKLSAgICAgICAgY2FzZSAwOiByb3dWZWN0b3IgPSBbW0NJVmVjdG9yIGFsbG9jXSBpbml0
V2l0aFg6YW1vdW50IFk6MCBaOjAgVzowXTsgYnJlYWs7IC8vIGlucHV0UlZlY3RvcgotICAgICAg
ICBjYXNlIDE6IHJvd1ZlY3RvciA9IFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRoWDowIFk6YW1v
dW50IFo6MCBXOjBdOyBicmVhazsgLy8gaW5wdXRHVmVjdG9yCi0gICAgICAgIGNhc2UgMjogcm93
VmVjdG9yID0gW1tDSVZlY3RvciBhbGxvY10gaW5pdFdpdGhYOjAgWTowIFo6YW1vdW50IFc6MF07
IGJyZWFrOyAvLyBpbnB1dEJWZWN0b3IKKyAgICAgICAgY2FzZSAwOiByb3dWZWN0b3IgPSBhZG9w
dE5TKFtbQ0lWZWN0b3IgYWxsb2NdIGluaXRXaXRoWDphbW91bnQgWTowIFo6MCBXOjBdKTsgYnJl
YWs7IC8vIGlucHV0UlZlY3RvcgorICAgICAgICBjYXNlIDE6IHJvd1ZlY3RvciA9IGFkb3B0TlMo
W1tDSVZlY3RvciBhbGxvY10gaW5pdFdpdGhYOjAgWTphbW91bnQgWjowIFc6MF0pOyBicmVhazsg
Ly8gaW5wdXRHVmVjdG9yCisgICAgICAgIGNhc2UgMjogcm93VmVjdG9yID0gYWRvcHROUyhbW0NJ
VmVjdG9yIGFsbG9jXSBpbml0V2l0aFg6MCBZOjAgWjphbW91bnQgVzowXSk7IGJyZWFrOyAvLyBp
bnB1dEJWZWN0b3IKICAgICAgICAgfQotICAgICAgICB2YWx1ZSA9IGFkb3B0TlMocm93VmVjdG9y
KTsKKyAgICAgICAgdmFsdWUgPSBXVEZNb3ZlKHJvd1ZlY3Rvcik7CiAjZW5kaWYKICAgICAgICAg
YnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCAyNGI5
ZWRlNGFiNmY2ZGJhNzAxZjZjM2E0OWFjZmY3NDE0Y2NhNDJmLi4wMjcyNTRjOWRiZWVlN2UyYzA2
ZjUwYjRlMWY3YmE2MzBhNWU2NWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5t
bQpAQCAtNTA2LDkgKzUwNiw5IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmFkZEFuaW1h
dGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSwgUGxhdGZvcm1DQUFuaW1hCiB7CiAgICAgLy8g
QWRkIHRoZSBkZWxlZ2F0ZQogICAgIGlmICghbV9kZWxlZ2F0ZSkgewotICAgICAgICBXZWJBbmlt
YXRpb25EZWxlZ2F0ZSogd2ViQW5pbWF0aW9uRGVsZWdhdGUgPSBbW1dlYkFuaW1hdGlvbkRlbGVn
YXRlIGFsbG9jXSBpbml0XTsKLSAgICAgICAgbV9kZWxlZ2F0ZSA9IGFkb3B0TlMod2ViQW5pbWF0
aW9uRGVsZWdhdGUpOworICAgICAgICBhdXRvIHdlYkFuaW1hdGlvbkRlbGVnYXRlID0gYWRvcHRO
UyhbW1dlYkFuaW1hdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIFt3ZWJBbmlt
YXRpb25EZWxlZ2F0ZSBzZXRPd25lcjp0aGlzXTsKKyAgICAgICAgbV9kZWxlZ2F0ZSA9IFdURk1v
dmUod2ViQW5pbWF0aW9uRGVsZWdhdGUpOwogICAgIH0KICAgICAKICAgICBDQUFuaW1hdGlvbiAq
cHJvcGVydHlBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQUFuaW1hdGlvbiAqPihkb3duY2FzdDxQ
bGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E+KGFuaW1hdGlvbikucGxhdGZvcm1BbmltYXRpb24oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCmluZGV4
IGJhYzVhZjVkZTFlY2ZlZjk4OGViMDNmMjA5ZGE1ZGZkYzY2Mjg0ZTEuLjdlMmY2YWE1MmRjZGUz
MjE0NzAxNTkxNjZlNTQ4YTBjYzlhZjRmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0yNjAsNyArMjYwLDcgQEAgUmV0YWluUHRyPE5T
TnVtYmVyPiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVz
aENvdW50KCkKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3Igc2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5RGVsYXlNb2Rl
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KLSAg
ICByZXR1cm4gYWRvcHROUyhbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoocHJpbWVJbmZvLmxlYWRp
bmdGcmFtZXMgLyBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQpXSk7CisgICAg
cmV0dXJuIHJldGFpblB0cihbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoocHJpbWVJbmZvLmxlYWRp
bmdGcmFtZXMgLyBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQpXSk7CiB9CiAK
IENNU2FtcGxlQnVmZmVyUmVmIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6c2FtcGxlQnVm
ZmVyV2l0aE51bVBhY2tldHMoVUludDMyIG51bVBhY2tldHMsIEF1ZGlvQnVmZmVyTGlzdCBmaWxs
QnVmZmVyTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmluZGV4IDU2NTU1NDg3YTc4YjBh
MDRkYjcxMjhkYjQwYThmNTdlMmI5ZWRiYjQuLmQ4NmY0YzkwNWViZmUyN2M3M2IyNWE3ZjYzYjYz
MDViOWZlYmY2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMTU2LDEyICsxNTYs
MTIgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5zUmVxdWVz
dCA9IFttX25zUmVxdWVzdC5nZXQoKSBtdXRhYmxlQ29weV07CisgICAgYXV0byBuc1JlcXVlc3Qg
PSBhZG9wdE5TKFttX25zUmVxdWVzdC5nZXQoKSBtdXRhYmxlQ29weV0pOwogCiAgICAgaWYgKG5z
UmVxdWVzdCkKICAgICAgICAgW25zUmVxdWVzdCBzZXRVUkw6dXJsKCldOwogICAgIGVsc2UKLSAg
ICAgICAgbnNSZXF1ZXN0ID0gW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVS
TDp1cmwoKV07CisgICAgICAgIG5zUmVxdWVzdCA9IGFkb3B0TlMoW1tOU011dGFibGVVUkxSZXF1
ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDp1cmwoKV0pOwogCiAgICAgaWYgKFJlc291cmNlUmVxdWVz
dDo6aHR0cFBpcGVsaW5pbmdFbmFibGVkKCkpCiAgICAgICAgIENGVVJMUmVxdWVzdFNldFNob3Vs
ZFBpcGVsaW5lSFRUUChbbnNSZXF1ZXN0IF9DRlVSTFJlcXVlc3RdLCB0cnVlLCB0cnVlKTsKQEAg
LTE4Nyw3ICsxODcsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJl
cXVlc3QoKQogICAgICAgICBbbnNSZXF1ZXN0IHNldEhUVFBNZXRob2Q6aHR0cE1ldGhvZCgpXTsK
ICAgICBbbnNSZXF1ZXN0IHNldEhUVFBTaG91bGRIYW5kbGVDb29raWVzOmFsbG93Q29va2llcygp
XTsKIAotICAgIFtuc1JlcXVlc3QgX3NldFByb3BlcnR5OnNpdGVGb3JDb29raWVzKG1fc2FtZVNp
dGVEaXNwb3NpdGlvbiwgbnNSZXF1ZXN0LlVSTCkgZm9yS2V5OkAiX2tDRkhUVFBDb29raWVQb2xp
Y3lQcm9wZXJ0eVNpdGVGb3JDb29raWVzIl07CisgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6
c2l0ZUZvckNvb2tpZXMobV9zYW1lU2l0ZURpc3Bvc2l0aW9uLCBbbnNSZXF1ZXN0IFVSTF0pIGZv
cktleTpAIl9rQ0ZIVFRQQ29va2llUG9saWN5UHJvcGVydHlTaXRlRm9yQ29va2llcyJdOwogICAg
IFtuc1JlcXVlc3QgX3NldFByb3BlcnR5Om1faXNUb3BTaXRlID8gQFlFUyA6IEBOTyBmb3JLZXk6
QCJfa0NGSFRUUENvb2tpZVBvbGljeVByb3BlcnR5SXNUb3BMZXZlbE5hdmlnYXRpb24iXTsKIAog
ICAgIC8vIENhbm5vdCBqdXN0IHVzZSBzZXRBbGxIVFRQSGVhZGVyRmllbGRzIGhlcmUsIGJlY2F1
c2UgaXQgZG9lcyBub3QgcmVtb3ZlIGhlYWRlcnMuCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICBTdHJpbmcgcGFy
dGl0aW9uID0gY2FjaGVQYXJ0aXRpb24oKTsKICAgICBpZiAoIXBhcnRpdGlvbi5pc051bGwoKSAm
JiAhcGFydGl0aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBOU1N0cmluZyAqcGFydGl0aW9uVmFs
dWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6cGFydGl0aW9uLnV0ZjgoKS5kYXRh
KCldOwotICAgICAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpwYXJ0aXRpb25WYWx1ZSBm
b3JLZXk6KE5TU3RyaW5nICopX2tDRlVSTENhY2hlUGFydGl0aW9uS2V5IGluUmVxdWVzdDpuc1Jl
cXVlc3RdOworICAgICAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpwYXJ0aXRpb25WYWx1
ZSBmb3JLZXk6KE5TU3RyaW5nICopX2tDRlVSTENhY2hlUGFydGl0aW9uS2V5IGluUmVxdWVzdDpu
c1JlcXVlc3QuZ2V0KCldOwogICAgIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTIyMiw3ICsy
MjIsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQog
ICAgIH0KICNlbmRpZgogCi0gICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKG5zUmVxdWVzdCk7Cisg
ICAgbV9uc1JlcXVlc3QgPSBXVEZNb3ZlKG5zUmVxdWVzdCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VS
ZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQpAQCAtMjMyLDE2ICsyMzIsMTYgQEAg
dm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpuc1JlcXVlc3QgPSBb
bV9uc1JlcXVlc3QuZ2V0KCkgbXV0YWJsZUNvcHldOworICAgIGF1dG8gbnNSZXF1ZXN0ID0gYWRv
cHROUyhbbV9uc1JlcXVlc3QuZ2V0KCkgbXV0YWJsZUNvcHldKTsKIAogICAgIGlmIChuc1JlcXVl
c3QpCiAgICAgICAgIFtuc1JlcXVlc3Qgc2V0VVJMOnVybCgpXTsKICAgICBlbHNlCi0gICAgICAg
IG5zUmVxdWVzdCA9IFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6dXJs
KCldOworICAgICAgICBuc1JlcXVlc3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBh
bGxvY10gaW5pdFdpdGhVUkw6dXJsKCldKTsKIAogICAgIEZvcm1EYXRhKiBmb3JtRGF0YSA9IGh0
dHBCb2R5KCk7CiAgICAgaWYgKGZvcm1EYXRhICYmICFmb3JtRGF0YS0+aXNFbXB0eSgpKQotICAg
ICAgICBXZWJDb3JlOjpzZXRIVFRQQm9keShuc1JlcXVlc3QsIGZvcm1EYXRhKTsKKyAgICAgICAg
V2ViQ29yZTo6c2V0SFRUUEJvZHkobnNSZXF1ZXN0LmdldCgpLCBmb3JtRGF0YSk7CiAKICAgICBp
ZiAoTlNJbnB1dFN0cmVhbSAqYm9keVN0cmVhbSA9IFtuc1JlcXVlc3QgSFRUUEJvZHlTdHJlYW1d
KSB7CiAgICAgICAgIC8vIEZvciBzdHJlYW1zLCBwcm92aWRlIGEgQ29udGVudC1MZW5ndGggdG8g
YXZvaWQgdXNpbmcgY2h1bmtlZCBlbmNvZGluZywgYW5kIHRvIGdldCBhY2N1cmF0ZSB0b3RhbCBs
ZW5ndGggaW4gY2FsbGJhY2tzLgpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1
ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQogICAgICAgICB9CiAgICAgfQogCi0gICAg
bV9uc1JlcXVlc3QgPSBhZG9wdE5TKG5zUmVxdWVzdCk7CisgICAgbV9uc1JlcXVlc3QgPSBXVEZN
b3ZlKG5zUmVxdWVzdCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vz
c2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGVDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxlQ29jb2EubW0KaW5kZXggZjc2OTA5
M2RjMmM4OTdmMmQ3ODFhNmY0ODIxNDFhZGUzZGFjNGE5OS4uMDg0NGU5MGQ2YzA0OGQ0ZTk3ZWQ0
OWU2ZmI3ZTRmNDljYjQ5ZTliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9jb2NvYS9Mb2NhbGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2NvY29hL0xvY2FsZUNvY29hLm1tCkBAIC01MSwxMyArNTEsMTMgQEAgc3RkOjp1bmlxdWVf
cHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogCiBz
dGF0aWMgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gY3JlYXRlRGF0ZVRpbWVGb3JtYXR0ZXIo
TlNMb2NhbGUqIGxvY2FsZSwgTlNDYWxlbmRhciogY2FsZW5kYXIsIE5TRGF0ZUZvcm1hdHRlclN0
eWxlIGRhdGVTdHlsZSwgTlNEYXRlRm9ybWF0dGVyU3R5bGUgdGltZVN0eWxlKQogewotICAgIE5T
RGF0ZUZvcm1hdHRlciAqZm9ybWF0dGVyID0gW1tOU0RhdGVGb3JtYXR0ZXIgYWxsb2NdIGluaXRd
OworICAgIGF1dG8gZm9ybWF0dGVyID0gYWRvcHROUyhbW05TRGF0ZUZvcm1hdHRlciBhbGxvY10g
aW5pdF0pOwogICAgIFtmb3JtYXR0ZXIgc2V0TG9jYWxlOmxvY2FsZV07CiAgICAgW2Zvcm1hdHRl
ciBzZXREYXRlU3R5bGU6ZGF0ZVN0eWxlXTsKICAgICBbZm9ybWF0dGVyIHNldFRpbWVTdHlsZTp0
aW1lU3R5bGVdOwogICAgIFtmb3JtYXR0ZXIgc2V0VGltZVpvbmU6W05TVGltZVpvbmUgdGltZVpv
bmVXaXRoQWJicmV2aWF0aW9uOkAiVVRDIl1dOwogICAgIFtmb3JtYXR0ZXIgc2V0Q2FsZW5kYXI6
Y2FsZW5kYXJdOwotICAgIHJldHVybiBhZG9wdE5TKGZvcm1hdHRlcik7CisgICAgcmV0dXJuIGZv
cm1hdHRlcjsKIH0KIAogTG9jYWxlQ29jb2E6OkxvY2FsZUNvY29hKGNvbnN0IEF0b21TdHJpbmcm
IGxvY2FsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1t
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KaW5kZXggNjNhOWY5YmQxZWQx
ZDc1MmM0Zjg0OWVlNjE4NzA2N2E5ZjU2MjQ0YS4uMjUxNTQ2OTA1NjNjNWFlOGY2ZDE4YmMxNDg0
OGY1NjJiOWE3Y2QzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KQEAgLTEwOSw3
ICsxMDksNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjplbmNvZGVkUHJlZmVyZW5jZVZhbHVlKGNvbnN0
IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleQogewogICAgIGF1dG8gdXNlckRlZmF1
bHRzID0gYWRvcHROUyhbW05TVXNlckRlZmF1bHRzIGFsbG9jXSBpbml0V2l0aFN1aXRlTmFtZTpk
b21haW5dKTsKICAgICBpZCB2YWx1ZSA9IFt1c2VyRGVmYXVsdHMgb2JqZWN0Rm9yS2V5OmtleV07
Ci0gICAgYXV0byBkYXRhID0gYWRvcHROUyhbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdp
dGhSb290T2JqZWN0OnZhbHVlIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0
cl0pOworICAgIGF1dG8gZGF0YSA9IHJldGFpblB0cihbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVk
RGF0YVdpdGhSb290T2JqZWN0OnZhbHVlIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6
bnVsbHB0cl0pOwogICAgIHJldHVybiBbZGF0YSBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlv
bnM6MF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggOTFmMjRlYWQxNzQ0
MTJhNDU2ZDdjNjJiY2Q0YzdiZTg2YjMxNGEzMS4uMTMyYjRlOTI5NTY5YTU3YmIwMzczODZjYjcy
Yjk2YmM1NGExZWQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTI1OCwxMiAr
MjU4LDkgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVIb3N0OjpjcmVhdGVMYXllcihjb25zdCBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmUKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVI
b3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVh
dGlvblByb3BlcnRpZXMmIHByb3BlcnRpZXMpCiB7Ci0gICAgYXV0byBtYWtlV2l0aExheWVyID0g
WyZdIChSZXRhaW5QdHI8Q0FMYXllcj4gbGF5ZXIpIHsKKyAgICBhdXRvIG1ha2VXaXRoTGF5ZXIg
PSBbJl0gKFJldGFpblB0cjxDQUxheWVyPiYmIGxheWVyKSB7CiAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RGTW92ZShs
YXllcikpOwogICAgIH07Ci0gICAgYXV0byBtYWtlQWRvcHRpbmdMYXllciA9IFsmXSAoQ0FMYXll
ciogbGF5ZXIpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VXaXRoTGF5ZXIoYWRvcHROUyhsYXllcikp
OwotICAgIH07CiAKICAgICBzd2l0Y2ggKHByb3BlcnRpZXMudHlwZSkgewogICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllcjoKQEAgLTI3NywxMyArMjc0LDEzIEBAIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtl
Tm9kZShjb25zdCBSZW1vdGVMCiAgICAgICAgIHJldHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpj
cmVhdGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwogCiAgICAgY2FzZSBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyOgotICAgICAgICByZXR1cm4gbWFr
ZUFkb3B0aW5nTGF5ZXIoW1tDQVRyYW5zZm9ybUxheWVyIGFsbG9jXSBpbml0XSk7CisgICAgICAg
IHJldHVybiBtYWtlV2l0aExheWVyKGFkb3B0TlMoW1tDQVRyYW5zZm9ybUxheWVyIGFsbG9jXSBp
bml0XSkpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUJhY2tkcm9wTGF5
ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ry
b3BMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRGFya1N5c3RlbUJh
Y2tkcm9wTGF5ZXI6CiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKLSAgICAgICAgcmV0dXJu
IG1ha2VBZG9wdGluZ0xheWVyKFtbQ0FCYWNrZHJvcExheWVyIGFsbG9jXSBpbml0XSk7CisgICAg
ICAgIHJldHVybiBtYWtlV2l0aExheWVyKGFkb3B0TlMoW1tDQUJhY2tkcm9wTGF5ZXIgYWxsb2Nd
IGluaXRdKSk7CiAjZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuIFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRp
ZXMubGF5ZXJJRCk7CkBAIC0yOTYsNyArMjkzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxh
eWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwK
ICAgICAgICAgcmV0dXJuIG1ha2VXaXRoTGF5ZXIoW0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXllcldp
dGhDb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0aW5nQ29udGV4dElEXSk7CiAKICAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2hhcGVMYXllcjoKLSAgICAgICAgcmV0dXJuIG1ha2VB
ZG9wdGluZ0xheWVyKFtbQ0FTaGFwZUxheWVyIGFsbG9jXSBpbml0XSk7CisgICAgICAgIHJldHVy
biBtYWtlV2l0aExheWVyKGFkb3B0TlMoW1tDQVNoYXBlTGF5ZXIgYWxsb2NdIGluaXRdKSk7CiAg
ICAgICAgICAgICAKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
UmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQppbmRleCBlNDgwODVkMjI1
ZDIyOTlkNTJiNzQ5ZGJlN2FmMzYwMzUzZGUwNWE3Li41MWUzOTY3NzQ0NWY5YWI0YmFhNWY5ZjMw
NjczOTUzNmM2OTMyNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9T
Lm1tCkBAIC00MCwxMiArNDAsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VO
b2RlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVy
dGllcyYgcHJvcGVydGllcykKIHsKLSAgICBhdXRvIG1ha2VXaXRoVmlldyA9IFsmXSAoUmV0YWlu
UHRyPFVJVmlldz4gdmlldykgeworICAgIGF1dG8gbWFrZVdpdGhWaWV3ID0gWyZdIChSZXRhaW5Q
dHI8VUlWaWV3PiYmIHZpZXcpIHsKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5
ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKHZpZXcpKTsKICAgICB9Owot
ICAgIGF1dG8gbWFrZUFkb3B0aW5nVmlldyA9IFsmXSAoVUlWaWV3KiB2aWV3KSB7Ci0gICAgICAg
IHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyh2aWV3KSk7Ci0gICAgfTsKIAogICAgIHN3aXRj
aCAocHJvcGVydGllcy50eXBlKSB7CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZUxheWVyOgpAQCAtNTQsMjIgKzUxLDIyIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRy
ZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxheWVyOgogICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdMYXllcjoKICAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlUGFnZVRpbGVkQmFja2luZ0xheWVyOgotICAgICAgICByZXR1
cm4gbWFrZUFkb3B0aW5nVmlldyhbW1dLQ29tcG9zaXRpbmdWaWV3IGFsbG9jXSBpbml0XSk7Cisg
ICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyhbW1dLQ29tcG9zaXRpbmdWaWV3IGFs
bG9jXSBpbml0XSkpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVk
QmFja2luZ1RpbGVMYXllcjoKICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJlZU5vZGU6OmNy
ZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAKICAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlQmFja2Ryb3BMYXllcjoKLSAgICAgICAgcmV0dXJuIG1ha2VB
ZG9wdGluZ1ZpZXcoW1tXS1NpbXBsZUJhY2tkcm9wVmlldyBhbGxvY10gaW5pdF0pOworICAgICAg
ICByZXR1cm4gbWFrZVdpdGhWaWV3KGFkb3B0TlMoW1tXS1NpbXBsZUJhY2tkcm9wVmlldyBhbGxv
Y10gaW5pdF0pKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMaWdodFN5
c3RlbUJhY2tkcm9wTGF5ZXI6Ci0gICAgICAgIHJldHVybiBtYWtlQWRvcHRpbmdWaWV3KFtbV0tC
YWNrZHJvcFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBwcml2YXRlU3R5bGU6
X1VJQmFja2Ryb3BWaWV3U3R5bGVfTGlnaHRdKTsKKyAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmll
dyhhZG9wdE5TKFtbV0tCYWNrZHJvcFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVy
byBwcml2YXRlU3R5bGU6X1VJQmFja2Ryb3BWaWV3U3R5bGVfTGlnaHRdKSk7CiAKICAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRGFya1N5c3RlbUJhY2tkcm9wTGF5ZXI6Ci0gICAg
ICAgIHJldHVybiBtYWtlQWRvcHRpbmdWaWV3KFtbV0tCYWNrZHJvcFZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0WmVybyBwcml2YXRlU3R5bGU6X1VJQmFja2Ryb3BWaWV3U3R5bGVfRGFy
a10pOworICAgICAgICByZXR1cm4gbWFrZVdpdGhWaWV3KGFkb3B0TlMoW1tXS0JhY2tkcm9wVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIHByaXZhdGVTdHlsZTpfVUlCYWNrZHJv
cFZpZXdTdHlsZV9EYXJrXSkpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZVRyYW5zZm9ybUxheWVyOgotICAgICAgICByZXR1cm4gbWFrZUFkb3B0aW5nVmlldyhbW1dLVHJh
bnNmb3JtVmlldyBhbGxvY10gaW5pdF0pOworICAgICAgICByZXR1cm4gbWFrZVdpdGhWaWV3KGFk
b3B0TlMoW1tXS1RyYW5zZm9ybVZpZXcgYWxsb2NdIGluaXRdKSk7CiAKICAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVBVlBsYXllckxheWVyOgpAQCAtODQsMTYgKzgxLDE2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25z
dCBSZW1vdGVMCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbWFrZVdpdGhWaWV3
KFdURk1vdmUodmlldykpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtYWtlQWRvcHRpbmdW
aWV3KFtbV0tDb21wb3NpdGluZ1ZpZXcgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VXaXRoVmlldyhhZG9wdE5TKFtbV0tDb21wb3NpdGluZ1ZpZXcgYWxsb2NdIGluaXRdKSk7CiAK
ICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2hhcGVMYXllcjoKLSAgICAgICAg
cmV0dXJuIG1ha2VBZG9wdGluZ1ZpZXcoW1tXS1NoYXBlVmlldyBhbGxvY10gaW5pdF0pOworICAg
ICAgICByZXR1cm4gbWFrZVdpdGhWaWV3KGFkb3B0TlMoW1tXS1NoYXBlVmlldyBhbGxvY10gaW5p
dF0pKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTY3JvbGxDb250YWlu
ZXJMYXllcjoKICAgICAgICAgaWYgKCFtX2lzRGVidWdMYXllclRyZWVIb3N0KQotICAgICAgICAg
ICAgcmV0dXJuIG1ha2VBZG9wdGluZ1ZpZXcoW1tXS0NoaWxkU2Nyb2xsVmlldyBhbGxvY10gaW5p
dF0pOworICAgICAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5TKFtbV0tDaGlsZFNj
cm9sbFZpZXcgYWxsb2NdIGluaXRdKSk7CiAgICAgICAgIC8vIFRoZSBkZWJ1ZyBpbmRpY2F0b3Ig
cGFyZW50cyB2aWV3cyB1bmRlciBsYXllcnMsIHdoaWNoIGNhbiBjYXVzZSBjcmFzaGVzIHdpdGgg
VUlTY3JvbGxWaWV3LgotICAgICAgICByZXR1cm4gbWFrZUFkb3B0aW5nVmlldyhbW1VJVmlldyBh
bGxvY10gaW5pdF0pOworICAgICAgICByZXR1cm4gbWFrZVdpdGhWaWV3KGFkb3B0TlMoW1tVSVZp
ZXcgYWxsb2NdIGluaXRdKSk7CiAKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>