<?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>165778</bug_id>
          
          <creation_ts>2016-12-12 15:03:53 -0800</creation_ts>
          <short_desc>Drop unnecessary null check in removeDetachedChildrenInContainer()</short_desc>
          <delta_ts>2016-12-13 20:56:24 -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>DOM</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></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>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1259225</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-12-12 15:03:53 -0800</bug_when>
    <thetext>Drop unnecessary null check in removeDetachedChildrenInContainer(). Node cannot be null but we do an implicit null check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259227</commentid>
    <comment_count>1</comment_count>
      <attachid>296955</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-12-12 15:04:59 -0800</bug_when>
    <thetext>Created attachment 296955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259304</commentid>
    <comment_count>2</comment_count>
      <attachid>296955</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-12 18:21:31 -0800</bug_when>
    <thetext>Comment on attachment 296955
Patch

Clearing flags on attachment: 296955

Committed r209751: &lt;http://trac.webkit.org/changeset/209751&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259305</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-12 18:21:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259632</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-12-13 20:55:03 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259633</commentid>
    <comment_count>5</comment_count>
      <attachid>297063</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-12-13 20:55:06 -0800</bug_when>
    <thetext>Created attachment 297063
Attempt to fix OpenSource iOS builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259634</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-12-13 20:55:59 -0800</bug_when>
    <thetext>My bad, accidentally reopened this when uploading a patch :/ Closing again.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296955</attachid>
            <date>2016-12-12 15:04:59 -0800</date>
            <delta_ts>2016-12-13 20:54:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165778-20161212150425.patch</filename>
            <type>text/plain</type>
            <size>1565</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU5ZWJlN2MxMWMxYTE1
N2VjMTE3ZjM5MWNkMGRjMWFjNmU1YmU3MS4uY2U3MGNlZmI3ZjRhOWI0Y2E1N2EzNDQyN2E5NjFj
MWU2OGVmMGIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE2LTEyLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCB1bm5lY2Vzc2FyeSBu
dWxsIGNoZWNrIGluIHJlbW92ZURldGFjaGVkQ2hpbGRyZW5JbkNvbnRhaW5lcigpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU3NzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEcm9wIHVubmVjZXNzYXJ5
IG51bGwgY2hlY2sgaW4gcmVtb3ZlRGV0YWNoZWRDaGlsZHJlbkluQ29udGFpbmVyKCkuCisgICAg
ICAgIE5vZGUgY2Fubm90IGJlIG51bGwgYnV0IHdlIGRvIGFuIGltcGxpY2l0IG51bGwgY2hlY2su
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBXZWItZXhwb3NlZCBiZWhhdmlvciBjaGFuZ2Uu
CisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cmVtb3ZlRGV0YWNoZWRDaGlsZHJlbkluQ29udGFpbmVyKToKKwogMjAxNi0xMi0x
MiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRoZSBDU1MgJ2Nv
bHVtbnMnIHByb3BlcnR5IHdoZW4gc2V0IG9uIHRoZSA8Ym9keT4gZWxlbWVudCBtYWtlcyBzaG9y
dCBjb2x1bW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFs
Z29yaXRobXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1z
LmNwcAppbmRleCBlZDUzNzkzMjE5ZjRhYzY0ZGVhZjU1MTIwZWM5NjEwZjE2MGQ3ZjY3Li43ZjNm
ZWE2NTU4Mjk3ZDc1NDIzZTUwMGMwNzk1OGEwMGM4YTljYTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2
b2lkIHJlbW92ZURldGFjaGVkQ2hpbGRyZW5JbkNvbnRhaW5lcihDb250YWluZXJOb2RlJiBjb250
YWluZXIpCiAgICAgICAgIGlmICghbmV4dCkKICAgICAgICAgICAgIHRhaWwgPSBudWxscHRyOwog
Ci0gICAgICAgIGlmIChpczxDb250YWluZXJOb2RlPihub2RlKSkKKyAgICAgICAgaWYgKGlzPENv
bnRhaW5lck5vZGU+KCpub2RlKSkKICAgICAgICAgICAgIGFkZENoaWxkTm9kZXNUb0RlbGV0aW9u
UXVldWUoaGVhZCwgdGFpbCwgZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4oKm5vZGUpKTsKICAgICAg
ICAgCiAgICAgICAgIGRlbGV0ZSBub2RlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>297063</attachid>
            <date>2016-12-13 20:55:06 -0800</date>
            <delta_ts>2016-12-13 20:56:24 -0800</delta_ts>
            <desc>Attempt to fix OpenSource iOS builds</desc>
            <filename>bug-165778-20161213205417.patch</filename>
            <type>text/plain</type>
            <size>64639</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI1ZTQzZWU3YzNjZmFi
OTZhMjM4ZjIzMDk5ODcyYmNhZDI1ZWM1Mi4uMGViZTVjNjk1MThmYmFiMWE1NzVmOGYyMzI5YzFh
MDg1MjE4OTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDE2LTEyLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgRHJvcCB1bm5lY2Vzc2FyeSBu
dWxsIGNoZWNrIGluIHJlbW92ZURldGFjaGVkQ2hpbGRyZW5JbkNvbnRhaW5lcigpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU3NzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIERyb3AgdW5uZWNlc3Nh
cnkgbnVsbCBjaGVjayBpbiByZW1vdmVEZXRhY2hlZENoaWxkcmVuSW5Db250YWluZXIoKS4KKyAg
ICAgICAgTm9kZSBjYW5ub3QgYmUgbnVsbCBidXQgd2UgZG8gYW4gaW1wbGljaXQgbnVsbCBjaGVj
ay4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIFdlYi1leHBvc2VkIGJlaGF2aW9yIGNoYW5n
ZS4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZW1vdmVEZXRhY2hlZENoaWxkcmVuSW5Db250YWluZXIpOgorCisyMDE2LTEy
LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgQWRkIERvY3Vt
ZW50Lm9udmlzaWJpbGl0eWNoYW5nZSBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZQogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1Nzg0CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBkNzUwMDU0NWE0N2I0MDZkYWI1MWY5YTFlMjI5MGRkMzYyOTA2MWJmLi4wYzE0ZGU1OTY3
MjZmMjFiZTI3MzYyMWJmYjJhOTA2ZTFiOWUzMDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEz
IEBACisyMDE2LTEyLTEzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFZpc3VhbCB2aWV3cG9ydHM6IGNhcmV0cyBhbmQgc2VsZWN0aW9uIFVJIGFyZSBp
bmNvcnJlY3RseSBwb3NpdGlvbmVkIHdoZW4gZWRpdGluZyBmaXhlZCBlbGVtZW50cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NzY3CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yOTYwMjM4Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGVuIGZvY3VzaW5nIGFuIGlucHV0LCB0aGUgcG9zaXRpb24g
b2YgdGhlIGNhcmV0IG9uIGlPUyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvdmVycmlkZGVuIGxheW91
dCB2aWV3cG9ydCByZWN0IGluCisgICAgICAgIHRoZSB3ZWIgcHJvY2Vzcy4gSG93ZXZlciwgdGhp
cyByZWN0IGlzIG5vdCB1cGRhdGVkIHVudGlsIHRoZSBlbmQgdGhlIHNjcm9sbCBnZXN0dXJlLiBX
aGVyZWFzIHRoaXMgaXMgZmluZSBmb3IKKyAgICAgICAgbm9uLWZpeGVkIGlucHV0cyBzaW5jZSB0
aGVpciBkb2N1bWVudCBsb2NhdGlvbiBkb2VzIG5vdCBjaGFuZ2UsIGZpeGVkIGlucHV0cyBlZmZl
Y3RpdmVseSBjaGFuZ2UgdGhlaXIgcG9zaXRpb24KKyAgICAgICAgaW4gdGhlIGRvY3VtZW50IGFz
IHRoZSB1c2VyIHNjcm9sbHMuIFRoaXMgY2F1c2VzIHRoZSBjYXJldCB0byBiZSAnbGVmdCBiZWhp
bmQnIGluIHRoZSBkb2N1bWVudCBwb3NpdGlvbiBpdCB3YXMKKyAgICAgICAgaW4gYXQgdGhlIHN0
YXJ0IG9mIHRoZSBzY3JvbGwuIFRvIGZpeCB0aGlzLCB3ZSBkZWFjdGl2YXRlIHRoZSBzZWxlY3Rp
b24gd2hlbiBleGl0aW5nIHN0YWJsZSBzdGF0ZSBpZiB0aGUKKyAgICAgICAgYXNzaXN0ZWQgbm9k
ZSBpcyBpbiBhIGZpeGVkIHBvc2l0aW9uIGNvbnRhaW5lciwgYW5kIHJlZW5hYmxlIGl0IHVwb24g
cmVjZWl2aW5nIHRoZSBuZXh0IHN0YWJsZSBzdGF0ZSBFZGl0b3JTdGF0ZQorICAgICAgICB1cGRh
dGUgKGFzIGluZGljYXRlZCBieSBwb3N0TGF5b3V0RGF0YSgpLmlzU3RhYmxlU3RhdGVVcGRhdGUp
LiBBZGRpdGlvbmFsbHksIHdlIGFwcGx5IHNpbWlsYXIgdHJlYXRtZW50IHRvIHRoZQorICAgICAg
ICB3ZWIgc2VsZWN0aW9uIGFzc2lzdGFudCAtLSB0aGlzIHRpbWUsIHdlIG5lZWQgdG8gZm9yY2Ug
dGhlIHNlbGVjdGlvbiB2aWV3IHRvIGhpZGUgKGFuYWxhZ291cyB0byBkZWFjdGl2YXRpbmcKKyAg
ICAgICAgdGhlIHRleHQgc2VsZWN0aW9uIGFzc2lzdGFudCkgYW5kIHNob3cgaXQgYWdhaW4gdXBv
biByZWNlaXZpbmcgdGhlIG5leHQgc2VsZWN0aW9uIGNoYW5nZSB1cGRhdGUgd2hlbiB0aGUgV2Vi
UGFnZQorICAgICAgICAoaW4gdGhlIHdlYiBwcm9jZXNzKSBpcyBzdGFibGUuCisKKyAgICAgICAg
RnVydGhlcm1vcmUsIGFkZHMgdGVzdCBzdXBwb3J0IGZvciBxdWVyeWluZyB0ZXh0IGNhcmV0IGFu
ZCBzZWxlY3Rpb24gcmVjdHMsIGFzIHdlbGwgYXMgcGVyZm9ybSBhIGNhbGxiYWNrIGFmdGVyCisg
ICAgICAgIHRoZSBXZWJQYWdlIGhhcyBpbmRpY2F0ZWQgdGhhdCBpdCBpcyBzdGFibGUsIGJvdGgg
YXMgU1BJIG9uIHRoZSBXS1dlYlZpZXcuCisKKyAgICAgICAgQ292ZXJlZCBieSA0IG5ldyBsYXlv
dXQgdGVzdHMgaW4gZmFzdC92aXN1YWwtdmlld3BvcnQvaW9zLy4KKworICAgICAgICAqIFNoYXJl
ZC9FZGl0b3JTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpQb3N0TGF5
b3V0RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlv
dXREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5oOgorCisgICAg
ICAgIEludHJvZHVjZSBpc1N0YWJsZVN0YXRlVXBkYXRlLCB3aGljaCBpcyB0cnVlIHdoZW4gdGhl
IFdlYlBhZ2UgaXMga25vd24gdG8gYmUgaW4gc3RhYmxlIHN0YXRlLCBhcyB3ZWxsIGFzCisgICAg
ICAgIGluc2lkZUZpeGVkUG9zaXRpb24sIHdoaWNoIGlzIHRydWUgd2hlbiB0aGUgY3VycmVudCBz
ZWxlY3Rpb24gaXMgaW5zaWRlIGEgZml4ZWQgcG9zaXRpb24gY29udGFpbmVyLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBfaGFuZGxlV2ViUGFnZVN0YWJsZVN0YXRlUmVzcG9uc2U6XSk6CisKKyAgICAgICAgVXNlZCB0
byBoYW5kbGUgYSByZXNwb25zZSBmcm9tIHRoZSB3ZWIgcHJvY2VzcyAoV2ViUGFnZSkgaW5kaWNh
dGluZyB3aGV0aGVyIGl0IGlzIGluIHN0YWJsZSBzdGF0ZS4gSWYgdGhlcmUgaXMKKyAgICAgICAg
YSBkb0FmdGVyV2ViUGFnZUlzSW5TdGFibGVTdGF0ZSBjYWxsYmFjayBzYXZlZCBhbmQgdGhlIHdl
YiBwYWdlIGlzIGluIHN0YWJsZSBzdGF0ZSwgd2UgZmlyZSB0aGUgY2FsbGJhY2sgYW5kCisgICAg
ICAgIGRpc2NhcmQgaXQ7IG90aGVyd2lzZSwgd2UgY29udGludWUgdG8gc2VuZCBhbm90aGVyIHN0
YWJsZSBzdGF0ZSByZXF1ZXN0IHRvIHRoZSB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAoLVtXS1dl
YlZpZXcgX3VpVGV4dENhcmV0UmVjdF0pOgorCisgICAgICAgIEludHJvZHVjZWQgYSBuZXcgU1BJ
IG1ldGhvZCBmb3IgZmV0Y2hpbmcgdGhlIGN1cnJlbnQgcmVjdCBvZiB0aGUgdGV4dCBhc3Npc3Rh
bnQncyBjYXJldCB2aWV3LCBhdCBrZXlQYXRoCisgICAgICAgICJzZWxlY3Rpb25WaWV3LnNlbGVj
dGlvbi5jYXJldFJlY3QiLgorCisgICAgICAgICgtW1dLV2ViVmlldyBfdWlUZXh0U2VsZWN0aW9u
UmVjdHNdKToKKworICAgICAgICBSZW5hbWVkIChhbmQgcmVmYWN0b3JlZCkgZnJvbSBfdWlUZXh0
U2VsZWN0aW9uUmVjdFZpZXdzLCB3aGljaCB3YXMgcHJldmlvdXNseSBmZXRjaGluZyBhbiBhcnJh
eSBvZiBVSVZpZXdzLiBJCisgICAgICAgIGZvdW5kIHRoaXMgdG8gY2F1c2UgY2hhcmFjdGVyLWdy
YW51bGFyaXR5LXJlY3QuaHRtbCB0byBmYWlsIGR1ZSB0byB0aGUgYXJyYXkgb2YgVUlWaWV3cyBo
ZXJlIGJlaW5nIGVtcHR5LCBzbyBJCisgICAgICAgIHJlZmFjdG9yZWQgdGhpcyB0byBzaW1wbHkg
cmV0dXJuIGFuIGFycmF5IG9mIHJlY3RzIGZyb20gdGhlIGtleVBhdGggInNlbGVjdGlvblZpZXcu
c2VsZWN0aW9uLnNlbGVjdGlvblJlY3RzIiBmb3IKKyAgICAgICAgdGhlIHRleHQgc2VsZWN0aW9u
IGFzc2lzdGFudCBhbmQgQCJzZWxlY3Rpb25WaWV3LnNlbGVjdGlvblJlY3RzIiBmb3IgdGhlIHdl
YiBzZWxlY3Rpb24gYXNzaXN0YW50LgorCisgICAgICAgICgtW1dLV2ViVmlldyBfZG9BZnRlcldl
YlBhZ2VJc0luU3RhYmxlU3RhdGU6XSk6CisKKyAgICAgICAgUnVucyB0aGUgZ2l2ZW4gYmxvY2sg
YWZ0ZXIgdGhlIHdlYiBwcm9jZXNzIGhhcyBpbmRpY2F0ZWQgdGhhdCBpdHMgV2ViUGFnZSBpcyBz
dGFibGUuIFRvIGRvIHRoaXMsIHdlIHNlbmQgWFBDCisgICAgICAgIHF1ZXJpZXMgZm9yIHRoZSB3
ZWIgcHJvY2VzcycgInN0YWJsZSBzdGF0ZSIgc3RhdHVzIHVudGlsIGl0IHJlc3BvbmRzIHdpdGgg
dHJ1ZS4gVGhpcyBpcyB1c2VkIHNvbGVseSBmb3IgdGVzdGluZworICAgICAgICBwdXJwb3Nlcy4K
KworICAgICAgICAoLVtXS1dlYlZpZXcgX3VpVGV4dFNlbGVjdGlvblJlY3RWaWV3c10pOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6aGFuZGxlV2ViUGFnZVN0YWJsZVN0YXRlUmVzcG9uc2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjpdKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkRXhpdFN0YWJsZVN0YXRlXSk6CisKKyAgICAg
ICAgRGVhY3RpdmF0ZSB0aGUgdGV4dCBzZWxlY3Rpb24gaWYgdGhlIGFzc2lzdGVkIG5vZGUgaXMg
aW5zaWRlIGEgZml4ZWQgY29udGFpbmVyLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZGlk
VXBkYXRlVmlzaWJsZVJlY3Q6dW5vYnNjdXJlZFJlY3Q6dW5vYnNjdXJlZFJlY3RJblNjcm9sbFZp
ZXdDb29yZGluYXRlczpvYnNjdXJlZEluc2V0OnNjYWxlOm1pbmltdW1TY2FsZTppblN0YWJsZVN0
YXRlOmlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHk6ZW5jbG9zZWRJblNjcm9s
bGFibGVBbmNlc3RvclZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXR1cEludGVyYWN0aW9u
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2xlYW51cEludGVyYWN0aW9uXSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgc2hvdWxkSGlkZVNlbGVjdGlvbldoZW5TY3JvbGxpbmddKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfdWlUZXh0U2VsZWN0aW9uUmVjdHNdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfZGlkRW5kU2Nyb2xsaW5nT3Jab29taW5nXSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX3VwZGF0ZUNoYW5nZWRTZWxlY3Rpb246XSk6CisKKyAgICAgICAg
SWYgdGhlIEVkaXRvclN0YXRlIHdhcyBjcmVhdGVkIGFmdGVyIGEgc3RhYmxlIHN0YXRlIHVwZGF0
ZSwgcmVhY3RpdmF0ZSB0aGUgdGV4dCBzZWxlY3Rpb24gYXNzaXN0YW50IGlmIGl0IGV4aXN0cy4K
KyAgICAgICAgQWRkaXRpb25hbGx5LCBpZiB3ZSBhcmUgZGVmZXJyaW5nIHRoZSBlbmQgc2Nyb2xs
aW5nIHNlbGVjdGlvbiB1cGRhdGUgdW50aWwgYWZ0ZXIgdGhlIGZpcnN0IHN0YWJsZSBlZGl0b3Ig
c3RhdGUKKyAgICAgICAgdXBkYXRlIGFycml2ZXMgZnJvbSB0aGUgd2ViIHByb2Nlc3MsIHdlIG5l
ZWQgdG8gYWxzbyBjYWxsIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBkaWRFbmRTY3JvbGxpbmdP
dmVyZmxvd10KKyAgICAgICAgYW5kIFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IGRpZEVuZFNjcm9s
bGluZ09yWm9vbWluZ1BhZ2VdIGhlcmUgaW5zdGVhZCBvZiBkb2luZyBzbyBpbW1lZGlhdGVseSBh
ZnRlciBzY3JvbGxpbmcKKyAgICAgICAgZmluaXNoZXMuIFRoaXMgZW5zdXJlcyB0aGF0IHNlbGVj
dGlvbiBVSSAodGhlIGNhbGxvdXQgYW5kIHNlbGVjdGlvbiBoaWdobGlnaHRzKSBkbyBub3QgZmxp
Y2tlciBmcm9tIHRoZWlyIG9sZAorICAgICAgICBwb3NpdGlvbiB0byB0aGUgbmV3IHBvc2l0aW9u
IHdoZW4gc2Nyb2xsaW5nIGZpbmlzaGVzLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZUN1
c3RvbUZpeGVkUG9zaXRpb25SZWN0KToKKworICAgICAgICBFbmFibGUgZml4ZWQgbGF5b3V0IHZp
ZXdwb3J0cyB3aGlsZSB0aGUga2V5Ym9hcmQgaXMgdXAuCisKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpyZXF1ZXN0V2ViUGFnZUlzSW5TdGFibGVTdGF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlSXNJblN0YWJsZVN0YXRlUmVzcG9uc2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpzZWxlY3Rpb25Jc0luc2lkZUZp
eGVkUG9zaXRpb24pOgorCisgICAgICAgIFN0YXRpYyBoZWxwZXIgZm9yIGRldGVybWluaW5nIHdo
ZXRoZXIgYSBWaXNpYmxlU2VsZWN0aW9uIGlzIGNvbnRhaW5lZCB3aXRoaW4gYSBmaXhlZCBwb3Np
dGlvbiBub2RlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0SXNJblN0YWJsZVN0YXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyk6CisK
KyAgICAgICAgV2hlbiB1cGRhdGluZyB0aGUgbGF5b3V0IHZpZXdwb3J0IG92ZXJyaWRlIHJlY3Qs
IGFsc28gcmVjb21wdXRlIHRoZSBjYXJldCBpZiBuZWVkZWQgYW5kIHNlbmQgYW4gdXBkYXRlZAor
ICAgICAgICBFZGl0b3JTdGF0ZSBvdmVyIHRvIHRoZSBVSSBwcm9jZXNzLgorCiAyMDE2LTEyLTEy
ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBNZWRpYURv
Y3VtZW50ICJEb25lIiBidXR0b24gc2hvdWxkIG5hdmlnYXRlIHRoZSBwYWdlIGJhY2sKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCmluZGV4IGVkNTM3
OTMyMTlmNGFjNjRkZWFmNTUxMjBlYzk2MTBmMTYwZDdmNjcuLjdmM2ZlYTY1NTgyOTdkNzU0MjNl
NTAwYzA3OTU4YTAwYzhhOWNhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGVBbGdvcml0aG1zLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgcmVtb3ZlRGV0YWNo
ZWRDaGlsZHJlbkluQ29udGFpbmVyKENvbnRhaW5lck5vZGUmIGNvbnRhaW5lcikKICAgICAgICAg
aWYgKCFuZXh0KQogICAgICAgICAgICAgdGFpbCA9IG51bGxwdHI7CiAKLSAgICAgICAgaWYgKGlz
PENvbnRhaW5lck5vZGU+KG5vZGUpKQorICAgICAgICBpZiAoaXM8Q29udGFpbmVyTm9kZT4oKm5v
ZGUpKQogICAgICAgICAgICAgYWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShoZWFkLCB0YWls
LCBkb3duY2FzdDxDb250YWluZXJOb2RlPigqbm9kZSkpOwogICAgICAgICAKICAgICAgICAgZGVs
ZXRlIG5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJ
S2l0U1BJLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKaW5k
ZXggNTNiMjc0MDAzZDY2MDAwNzdhNjlkMzg5ODI5NWMyODg3YjRjMmQzOS4uMjYwMTRkMTVjOGRj
YjBjYmI0MTRjNjQ3N2U2NGI1Nzk2ZjAxZDVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L3NwaS9pb3MvVUlLaXRTUEkuaApAQCAtNDUwLDYgKzQ1MCw5IEBAIHR5cGVkZWYgTlNfRU5VTSAo
TlNJbnRlZ2VyLCBfVUlCYWNrZHJvcE1hc2tWaWV3RmxhZ3MpIHsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBhc3NpZ24sIHNldHRlcj1fc2V0QmFja2Ryb3BNYXNrVmlld0ZsYWdzOikgTlNJbnRlZ2Vy
IF9iYWNrZHJvcE1hc2tWaWV3RmxhZ3M7CiBAZW5kCiAKK0BpbnRlcmZhY2UgVUlXZWJTZWxlY3Rp
b25WaWV3IDogVUlWaWV3CitAZW5kCisKIEBpbnRlcmZhY2UgVUlXZWJTZWxlY3Rpb25Bc3Npc3Rh
bnQgOiBOU09iamVjdCA8VUlHZXN0dXJlUmVjb2duaXplckRlbGVnYXRlPgogQGVuZAogCkBAIC00
NjQsNiArNDY3LDcgQEAgdHlwZWRlZiBOU19FTlVNIChOU0ludGVnZXIsIF9VSUJhY2tkcm9wTWFz
a1ZpZXdGbGFncykgewogLSAodm9pZClzZXRHZXN0dXJlUmVjb2duaXplcnM7CiAtICh2b2lkKXdp
bGxTdGFydFNjcm9sbGluZ09yWm9vbWluZ1BhZ2U7CiAtICh2b2lkKXdpbGxTdGFydFNjcm9sbGlu
Z092ZXJmbG93OworQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgVUlXZWJTZWxlY3Rpb25W
aWV3ICpzZWxlY3Rpb25WaWV3OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDR1Jl
Y3Qgc2VsZWN0aW9uRnJhbWU7CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9FZGl0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUu
Y3BwCmluZGV4IGUxODQ1NjBlN2ZkMDJkZjJmMmFkYmNkNzZiYjAwYjEzNGFlMzYzZTYuLmFlN2Vk
ZTkwNWVhNGJjZDEyMzgzYmZkNmZlZDc5N2M1NDQ3MDQ0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0VkaXRvclN0YXRlLmNwcApAQCAtMTI1LDYgKzEyNSw4IEBAIHZvaWQgRWRpdG9yU3RhdGU6OlBv
c3RMYXlvdXREYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVu
Y29kZXIgPDwgdHdvQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uOwogICAgIGVuY29kZXIgPDwgaXNS
ZXBsYWNlQWxsb3dlZDsKICAgICBlbmNvZGVyIDw8IGhhc0NvbnRlbnQ7CisgICAgZW5jb2RlciA8
PCBpc1N0YWJsZVN0YXRlVXBkYXRlOworICAgIGVuY29kZXIgPDwgaW5zaWRlRml4ZWRQb3NpdGlv
bjsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBlbmNvZGVyIDw8IGNhbmRpZGF0ZVJl
cXVlc3RTdGFydFBvc2l0aW9uOwpAQCAtMTcwLDYgKzE3MiwxMCBAQCBib29sIEVkaXRvclN0YXRl
OjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUG9zdExheW91
dERhdGEmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5oYXNDb250ZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmlzU3RhYmxlU3RhdGVVcGRhdGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaW5zaWRlRml4ZWRQb3NpdGlvbikp
CisgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYW5kaWRhdGVSZXF1ZXN0U3RhcnRQb3NpdGlvbikp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5oCmluZGV4IGRkZDAyNDM0OGRlMmFiZjZhMGYw
OWYyZGRjYzg1OGI1Njg3MDQ5ZTEuLjNkZDAzOWFkODQ3ZTRlYzlmMGRhY2ZmYzU5NDI2Nzg1ZTMx
ZDg2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5oCkBAIC05OSw2ICs5OSw4IEBA
IHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAgICAgICAgIFVDaGFyMzIgdHdvQ2hhcmFjdGVyQmVmb3Jl
U2VsZWN0aW9uIHsgMCB9OwogICAgICAgICBib29sIGlzUmVwbGFjZUFsbG93ZWQgeyBmYWxzZSB9
OwogICAgICAgICBib29sIGhhc0NvbnRlbnQgeyBmYWxzZSB9OworICAgICAgICBib29sIGlzU3Rh
YmxlU3RhdGVVcGRhdGUgeyBmYWxzZSB9OworICAgICAgICBib29sIGluc2lkZUZpeGVkUG9zaXRp
b24geyBmYWxzZSB9OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICB1aW50NjRf
dCBjYW5kaWRhdGVSZXF1ZXN0U3RhcnRQb3NpdGlvbiB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMTIxNTUyZDZkZGZhZTQ4
OWQzOWQ3ZDQ1NDlhMjlhMjFlZDg0ODk4Ny4uMjI2NDc5NDA3ZGI3MzFkNWM3MDMyYjAyMGQxZjUw
OWIxMWI1YWYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KQEAgLTI3Nyw2ICsyNzcsOCBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3
IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpXZWJWaWV3SW1wbD4gX2ltcGw7CiAgICAg
UmV0YWluUHRyPFdLVGV4dEZpbmRlckNsaWVudD4gX3RleHRGaW5kZXJDbGllbnQ7CiAjZW5kaWYK
KworICAgIGRpc3BhdGNoX2Jsb2NrX3QgX2RvQWZ0ZXJXZWJQYWdlSXNJblN0YWJsZVN0YXRlQ2Fs
bGJhY2s7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUK
QEAgLTIzMDcsNiArMjMwOSwyMSBAQCAtICh2b2lkKV9uYXZpZ2F0aW9uR2VzdHVyZURpZEVuZAog
ICAgIF9mcm96ZW5Vbm9ic2N1cmVkQ29udGVudFJlY3QgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKKy0g
KHZvaWQpX2hhbmRsZVdlYlBhZ2VTdGFibGVTdGF0ZVJlc3BvbnNlOihCT09MKWluU3RhYmxlU3Rh
dGUKK3sKKyAgICBpZiAoIV9kb0FmdGVyV2ViUGFnZUlzSW5TdGFibGVTdGF0ZUNhbGxiYWNrKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWluU3RhYmxlU3RhdGUpIHsKKyAgICAgICAgLy8g
Q29udGludWUgdG8gYXNrIHRoZSB3ZWIgcHJvY2VzcyB3aGV0aGVyIGl0IGlzIGluIHN0YWJsZSBz
dGF0ZSB1bnRpbCBpdCBhbnN3ZXJzIHdpdGggWUVTLgorICAgICAgICBfcGFnZS0+cmVxdWVzdFdl
YlBhZ2VJc0luU3RhYmxlU3RhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9k
b0FmdGVyV2ViUGFnZUlzSW5TdGFibGVTdGF0ZUNhbGxiYWNrKCk7CisgICAgX2RvQWZ0ZXJXZWJQ
YWdlSXNJblN0YWJsZVN0YXRlQ2FsbGJhY2sgPSBuaWw7Cit9CisKICNlbmRpZiAvLyBQTEFURk9S
TShJT1MpCiAKICNwcmFnbWEgbWFyayBPUyBYLXNwZWNpZmljIG1ldGhvZHMKQEAgLTQ3MjcsOSAr
NDc0NCwyMCBAQCAtICh2b2lkKV9kaWREaXNtaXNzRm9yY2VQcmVzc1ByZXZpZXcKICAgICAvLyBG
b3Igc3ViY2xhc3NlcyB0byBvdmVycmlkZS4KIH0KIAotLSAoTlNBcnJheTxVSVZpZXcgKj4gKilf
dWlUZXh0U2VsZWN0aW9uUmVjdFZpZXdzCistIChDR1JlY3QpX3VpVGV4dENhcmV0UmVjdAogewot
ICAgIHJldHVybiBbX2NvbnRlbnRWaWV3IHZhbHVlRm9yS2V5UGF0aDpAImludGVyYWN0aW9uQXNz
aXN0YW50LnNlbGVjdGlvblZpZXcucmFuZ2VWaWV3Lm1fcmVjdFZpZXdzIl07CisgICAgLy8gRm9y
Y2UgdGhlIHNlbGVjdGlvbiB2aWV3IHRvIHVwZGF0ZSBpZiBuZWVkZWQuCisgICAgW19jb250ZW50
VmlldyBfdXBkYXRlQ2hhbmdlZFNlbGVjdGlvbl07CisKKyAgICByZXR1cm4gW1tfY29udGVudFZp
ZXcgdmFsdWVGb3JLZXlQYXRoOkAiaW50ZXJhY3Rpb25Bc3Npc3RhbnQuc2VsZWN0aW9uVmlldy5z
ZWxlY3Rpb24uY2FyZXRSZWN0Il0gQ0dSZWN0VmFsdWVdOworfQorCistIChOU0FycmF5PE5TVmFs
dWUgKj4gKilfdWlUZXh0U2VsZWN0aW9uUmVjdHMKK3sKKyAgICAvLyBGb3JjZSB0aGUgc2VsZWN0
aW9uIHZpZXcgdG8gdXBkYXRlIGlmIG5lZWRlZC4KKyAgICBbX2NvbnRlbnRWaWV3IF91cGRhdGVD
aGFuZ2VkU2VsZWN0aW9uXTsKKworICAgIHJldHVybiBbX2NvbnRlbnRWaWV3IF91aVRleHRTZWxl
Y3Rpb25SZWN0c107CiB9CiAKIC0gKE5TU3RyaW5nICopX3Njcm9sbGluZ1RyZWVBc1RleHQKQEAg
LTQ3NDcsNiArNDc3NSwxMiBAQCAtIChOU051bWJlciAqKV9zdGFibGVTdGF0ZU92ZXJyaWRlCiAg
ICAgcmV0dXJuIG5pbDsKIH0KIAorLSAodm9pZClfZG9BZnRlcldlYlBhZ2VJc0luU3RhYmxlU3Rh
dGU6KGRpc3BhdGNoX2Jsb2NrX3QpdXBkYXRlQmxvY2sKK3sKKyAgICBfZG9BZnRlcldlYlBhZ2VJ
c0luU3RhYmxlU3RhdGVDYWxsYmFjayA9IFt1cGRhdGVCbG9jayBjb3B5XTsKKyAgICBfcGFnZS0+
cmVxdWVzdFdlYlBhZ2VJc0luU3RhYmxlU3RhdGUoKTsKK30KKwogI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCA0NGQ2NWIyYzg4YjM3
OTU3Y2U2OGZlOWM0Y2ZkNGNhYjYwNWJhNWZiLi5lMDk0YmRkYWY4ZmVlOTUwOGJlYzkyZDA1ZmFk
NGI0OThjM2QxMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0xMTUsNiArMTE1LDggQEAgc3RydWN0IFBy
aW50SW5mbzsKIC0gKHZvaWQpX25hdmlnYXRpb25HZXN0dXJlRGlkQmVnaW47CiAtICh2b2lkKV9u
YXZpZ2F0aW9uR2VzdHVyZURpZEVuZDsKIAorLSAodm9pZClfaGFuZGxlV2ViUGFnZVN0YWJsZVN0
YXRlUmVzcG9uc2U6KEJPT0wpaW5TdGFibGVTdGF0ZTsKKwogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBCT09MIF9pc0JhY2tncm91bmQ7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkgKl9jb250ZW50UHJvdmlk
ZXJSZWdpc3RyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggZmQ5ZWY5ZjkwNzA2ZmU0NGNlMzYzZjk2NmUyODE2
YjQ2NDBjYTNhYS4uNDFhODhlMTljNmQwYzNiZWI1MzMyNDc0ZTc0ZmUyMzcxODc5NzZhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTI4Nyw4ICsyODcsMTAgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
X1dLSW1tZWRpYXRlQWN0aW9uVHlwZSkgewogCiAtICh2b2lkKV9kaWRTaG93Rm9yY2VQcmVzc1By
ZXZpZXcgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfZGlkRGlz
bWlzc0ZvcmNlUHJlc3NQcmV2aWV3IFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsK
Ky0gKHZvaWQpX2RvQWZ0ZXJXZWJQYWdlSXNJblN0YWJsZVN0YXRlOihkaXNwYXRjaF9ibG9ja190
KXVwZGF0ZUJsb2NrIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIAotQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PFVJVmlldyAqPiAqX3VpVGV4dFNlbGVj
dGlvblJlY3RWaWV3cyBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8TlNWYWx1ZSAqPiAqX3VpVGV4dFNlbGVj
dGlvblJlY3RzIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgQ0dSZWN0IF91aVRleHRDYXJldFJlY3QgV0tfQVBJX0FWQUlM
QUJMRShpb3MoV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IE5TU3RyaW5nICpfc2Nyb2xsaW5nVHJlZUFzVGV4dCBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19J
T1NfVEJBKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDU3MDA0
N2M0ZTJkNjhkODQ3NTcwYTA1NzYzNzEyZWM4ZDFiMmE5YjYuLjQ2MjQyY2U5MmUxZjI2YmMxMzM1
ZmNjOTI2MzY3Yzg3NmNkNjA3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aApAQCAtMzIyLDYgKzMyMiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJ
bnNwZWN0b3JOb2RlU2VhcmNoKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlSW5zcGVj
dG9yTm9kZVNlYXJjaCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2ViUGFnZVN0YWJs
ZVN0YXRlUmVzcG9uc2UoYm9vbCkgPSAwOwogI2VuZGlmCiAKICAgICAvLyBBdXhpbGlhcnkgQ2xp
ZW50IENyZWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
OWY3MDc0ZGFiNmJkYjk2YTE0ZDJiMDkxOTZjODIzOTM0OTA4OTZiNS4uNjg0MDlhMzliYjI2YTBi
ZGRmYTg0MDgzNDA1Yzc0MjI2MWFkNmJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtNTM4LDYgKzUzOCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGhhbmRsZVR3
b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50NjRfdCByZXF1
ZXN0SUQpOwogICAgIHZvaWQgc2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoYm9vbCk7CiAgICAg
dm9pZCBzZXRJc1Njcm9sbGluZ09yWm9vbWluZyhib29sKTsKKyAgICB2b2lkIHJlcXVlc3RXZWJQ
YWdlSXNJblN0YWJsZVN0YXRlKCk7CisgICAgdm9pZCBoYW5kbGVJc0luU3RhYmxlU3RhdGVSZXNw
b25zZShib29sIGluU3RhYmxlU3RhdGUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFfREVURUNU
SU9OKQogICAgIHZvaWQgc2V0RGF0YURldGVjdGlvblJlc3VsdChjb25zdCBEYXRhRGV0ZWN0aW9u
UmVzdWx0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCAxOTM2ODJlOGJkNGFlOWE1NGU4OGQ4NGJjY2YyNjlkZjk5OGNhM2U4
Li5lMjU0OWQ1N2NjZWU0MGVlNzI2M2UwMTQ3ZjBlODFjYzJkY2RmMjQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE5NSw2
ICsxOTUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZE5vdEhhbmRsZVRh
cEFzQ2xpY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCiAgICAgRGlzYWJsZURvdWJsZVRhcEdl
c3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElEKQogICAgIERyYXdU
b1BERkNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQorICAgIEhhbmRsZUlzSW5TdGFibGVTdGF0ZVJlc3BvbnNlKGJvb2wgaW5TdGFibGVTdGF0
ZSkKICNlbmRpZgogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICAgICBTZXREYXRhRGV0ZWN0
aW9uUmVzdWx0KHN0cnVjdCBXZWJLaXQ6OkRhdGFEZXRlY3Rpb25SZXN1bHQgZGF0YURldGVjdGlv
blJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaAppbmRleCA2OWI2MTM1YWY5ZTI2Y2IxZDMzNTYwZjg0Yzk0NTA4MmJjMDg2MzhhLi41
M2QzOTY4YTBjYjZkZDE3MTdlZGFiN2EyMjY1OGYzMjYwZTNiNjZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xNDYsNiArMTQ2
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZW5hYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKSBvdmVycmlkZTsK
KyAgICB2b2lkIGhhbmRsZVdlYlBhZ2VTdGFibGVTdGF0ZVJlc3BvbnNlKGJvb2wpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCB6b29tVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwgZG91YmxlIG1pbmlt
dW1TY2FsZSwgZG91YmxlIG1heGltdW1TY2FsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBvdmVyZmxv
d1Njcm9sbFZpZXdXaWxsU3RhcnRQYW5HZXN0dXJlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBjZTM2NDA1
NTU4NWVkNDllZWU2YzVmODczYWJjZGQzZDA4ODkzOTY4Li40NzUyN2MzMjUzZjI5YjUzYjdlN2Zi
MjNjMGFkZmY5MmUyMGE5ZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTczNyw2ICs3MzcsMTEgQEAgdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6ZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIHsKIH0KIAordm9pZCBQYWdlQ2xp
ZW50SW1wbDo6aGFuZGxlV2ViUGFnZVN0YWJsZVN0YXRlUmVzcG9uc2UoYm9vbCBpc0luU3RhYmxl
U3RhdGUpCit7CisgICAgW21fd2ViVmlldyBfaGFuZGxlV2ViUGFnZVN0YWJsZVN0YXRlUmVzcG9u
c2U6aXNJblN0YWJsZVN0YXRlXTsKK30KKwogV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbiBQYWdlQ2xpZW50SW1wbDo6dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpCiB7
CiAgICAgaWYgKCFtX3dlYlZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcubW0KaW5kZXggMTIzOGU2MmYyZGViNDRkZDI1NjY1OWY1ZjMzMTU2ZWQxNWU0
ZjQwMi4uZGRkNzY1MTZmYzk2MWZiZjM1ODA1MGRiZTlhMjFkMzg1ZDc0NWM4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtMTk0LDYgKzE5
NCw4IEBAIC0gKGluc3RhbmNldHlwZSlfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bv
b2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByCiB7CiAgICAgQVNTRVJUKF9wYWdlQ2xpZW50
KTsKIAorICAgIF9pc0luU3RhYmxlU3RhdGUgPSBZRVM7CisKICAgICBfcGFnZSA9IHByb2Nlc3NQ
b29sLmNyZWF0ZVdlYlBhZ2UoKl9wYWdlQ2xpZW50LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsK
ICAgICBfcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKICAgICBfcGFnZS0+c2V0SW50cmluc2lj
RGV2aWNlU2NhbGVGYWN0b3Ioc2NyZWVuU2NhbGVGYWN0b3IoW1VJU2NyZWVuIG1haW5TY3JlZW5d
KSk7CkBAIC0zNjIsNiArMzY0LDE2IEBAIC0gKHZvaWQpdXBkYXRlRml4ZWRDbGlwcGluZ1ZpZXc6
KEZsb2F0UmVjdClmaXhlZFBvc2l0aW9uUmVjdEZvclVJCiAgICAgW19maXhlZENsaXBwaW5nVmll
dyBzZXRCb3VuZHM6Y2xpcHBpbmdCb3VuZHNdOwogfQogCistICh2b2lkKV9kaWRFeGl0U3RhYmxl
U3RhdGUKK3sKKyAgICBfbmVlZHNEZWZlcnJlZEVuZFNjcm9sbGluZ1NlbGVjdGlvblVwZGF0ZSA9
IHNlbGYuc2hvdWxkSGlkZVNlbGVjdGlvbldoZW5TY3JvbGxpbmc7CisgICAgaWYgKCFfbmVlZHNE
ZWZlcnJlZEVuZFNjcm9sbGluZ1NlbGVjdGlvblVwZGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IGRlYWN0aXZhdGVTZWxlY3Rpb25dOworICAgIFtb
X3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzZWxlY3Rpb25WaWV3XSBzZXRIaWRkZW46WUVTXTsKK30K
KwogLSAodm9pZClkaWRVcGRhdGVWaXNpYmxlUmVjdDooQ0dSZWN0KXZpc2libGVDb250ZW50UmVj
dAogICAgIHVub2JzY3VyZWRSZWN0OihDR1JlY3QpdW5vYnNjdXJlZENvbnRlbnRSZWN0CiAgICAg
dW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlczooQ0dSZWN0KXVub2JzY3VyZWRS
ZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMKQEAgLTM3Miw4ICszODQsMTAgQEAgLSAodm9pZClk
aWRVcGRhdGVWaXNpYmxlUmVjdDooQ0dSZWN0KXZpc2libGVDb250ZW50UmVjdAogICAgIGVuY2xv
c2VkSW5TY3JvbGxhYmxlQW5jZXN0b3JWaWV3OihCT09MKWVuY2xvc2VkSW5TY3JvbGxhYmxlQW5j
ZXN0b3JWaWV3CiB7CiAgICAgYXV0byBkcmF3aW5nQXJlYSA9IF9wYWdlLT5kcmF3aW5nQXJlYSgp
OwotICAgIGlmICghZHJhd2luZ0FyZWEpCisgICAgaWYgKCFkcmF3aW5nQXJlYSkgeworICAgICAg
ICBfaXNJblN0YWJsZVN0YXRlID0gaXNTdGFibGVTdGF0ZTsKICAgICAgICAgcmV0dXJuOworICAg
IH0KIAogICAgIE1vbm90b25pY1RpbWUgdGltZXN0YW1wID0gTW9ub3RvbmljVGltZTo6bm93KCk7
CiAgICAgSGlzdG9yaWNhbFZlbG9jaXR5RGF0YTo6VmVsb2NpdHlEYXRhIHZlbG9jaXR5RGF0YTsK
QEAgLTQxMiw2ICs0MjYsMTEgQEAgLSAodm9pZClkaWRVcGRhdGVWaXNpYmxlUmVjdDooQ0dSZWN0
KXZpc2libGVDb250ZW50UmVjdAogICAgIGRyYXdpbmdBcmVhLT51cGRhdGVEZWJ1Z0luZGljYXRv
cigpOwogICAgIAogICAgIFtzZWxmIHVwZGF0ZUZpeGVkQ2xpcHBpbmdWaWV3OmZpeGVkUG9zaXRp
b25SZWN0XTsKKworICAgIGlmIChfaXNJblN0YWJsZVN0YXRlICYmICFpc1N0YWJsZVN0YXRlKQor
ICAgICAgICBbc2VsZiBfZGlkRXhpdFN0YWJsZVN0YXRlXTsKKworICAgIF9pc0luU3RhYmxlU3Rh
dGUgPSBpc1N0YWJsZVN0YXRlOwogfQogCiAtICh2b2lkKWRpZEZpbmlzaFNjcm9sbGluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgKaW5kZXggMjUwNjIxZDM2OGYxNWIwYmU3ZGM3M2JiNzk5OGVhYjg3Njc4Yzk5OS4u
MGI3Mjg1ZmZmZTZlNjhjNTU2NGMzYzUzNWI4OGYwOTYxNGYwMTU1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5o
CkBAIC0xNzgsNiArMTc4LDggQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBC
T09MIF9zaG93RGVidWdUYXBIaWdobGlnaHRzRm9yRmFzdENsaWNraW5nOwogCiAgICAgQk9PTCBf
cmVzaWduaW5nRmlyc3RSZXNwb25kZXI7CisgICAgQk9PTCBfbmVlZHNEZWZlcnJlZEVuZFNjcm9s
bGluZ1NlbGVjdGlvblVwZGF0ZTsKKyAgICBCT09MIF9pc0luU3RhYmxlU3RhdGU7CiB9CiAKIEBl
bmQKQEAgLTE4Niw2ICsxODgsNyBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENHUG9pbnQgbGFzdEludGVyYWN0aW9uTG9j
YXRpb247CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgaXNFZGl0YWJsZTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBzaG91bGRIaWRlU2VsZWN0aW9u
V2hlblNjcm9sbGluZzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgY29uc3QgV2Vi
S2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYgcG9zaXRpb25JbmZvcm1hdGlv
bjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgY29uc3QgV2ViS2l0OjpXS0F1dG9D
b3JyZWN0aW9uRGF0YSYgYXV0b2NvcnJlY3Rpb25EYXRhOwogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBjb25zdCBXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJiBhc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbjsKQEAgLTIyOCw2ICsyMzEsNyBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVj
dGlvbkRhdGEgewogLSAodm9pZClfYmVjb21lRmlyc3RSZXNwb25kZXJXaXRoU2VsZWN0aW9uTW92
aW5nRm9yd2FyZDooQk9PTClzZWxlY3RpbmdGb3J3YXJkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShCT09MIGRpZEJlY29tZUZpcnN0UmVzcG9uZGVyKSljb21wbGV0aW9uSGFuZGxlcjsKIC0g
KHZvaWQpX3NldERvdWJsZVRhcEdlc3R1cmVzRW5hYmxlZDooQk9PTCllbmFibGVkOwogLSAoTlNB
cnJheSAqKV9kYXRhRGV0ZWN0aW9uUmVzdWx0czsKKy0gKE5TQXJyYXk8TlNWYWx1ZSAqPiAqKV91
aVRleHRTZWxlY3Rpb25SZWN0czsKIEBlbmQKIAogQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3IChX
S1Rlc3RpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGNkY2E4NTE2N2FjNjIwZGQ0YzllY2ZlZTUy
NGFmZjZkZWZmNDkxY2MuLjY3Yzc5NzQ0NmMyMjE1NmYzMjgxYTZmZWNmMDliNGZkYjkwNmE2ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCkBAIC01ODksNiArNTg5LDcgQEAgLSAodm9pZClzZXR1cEludGVy
YWN0aW9uCiAgICAgX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MgPSBOTzsKICAgICBfaXNEb3VibGVU
YXBQZW5kaW5nID0gTk87CiAgICAgX3Nob3dEZWJ1Z1RhcEhpZ2hsaWdodHNGb3JGYXN0Q2xpY2tp
bmcgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAi
V2ViS2l0U2hvd0Zhc3RDbGlja0RlYnVnVGFwSGlnaGxpZ2h0cyJdOworICAgIF9uZWVkc0RlZmVy
cmVkRW5kU2Nyb2xsaW5nU2VsZWN0aW9uVXBkYXRlID0gTk87CiB9CiAKIC0gKHZvaWQpY2xlYW51
cEludGVyYWN0aW9uCkBAIC01OTksNiArNjAwLDcgQEAgLSAodm9pZCljbGVhbnVwSW50ZXJhY3Rp
b24KICAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciA9IG5pbDsKICAgICBfZGlkQWNj
ZXNzb3J5VGFiSW5pdGlhdGVGb2N1cyA9IE5POwogICAgIF9pc0V4cGVjdGluZ0Zhc3RTaW5nbGVU
YXBDb21taXQgPSBOTzsKKyAgICBfbmVlZHNEZWZlcnJlZEVuZFNjcm9sbGluZ1NlbGVjdGlvblVw
ZGF0ZSA9IE5POwogICAgIFtfZm9ybUlucHV0U2Vzc2lvbiBpbnZhbGlkYXRlXTsKICAgICBfZm9y
bUlucHV0U2Vzc2lvbiA9IG5pbDsKICAgICBbX2hpZ2hsaWdodFZpZXcgcmVtb3ZlRnJvbVN1cGVy
dmlld107CkBAIC03NjUsNiArNzY3LDE1IEBAIC0gKENHUG9pbnQpbGFzdEludGVyYWN0aW9uTG9j
YXRpb24KICAgICByZXR1cm4gX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uOwogfQogCistIChCT09M
KXNob3VsZEhpZGVTZWxlY3Rpb25XaGVuU2Nyb2xsaW5nCit7CisgICAgaWYgKF9pc0VkaXRhYmxl
KQorICAgICAgICByZXR1cm4gX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmluc2lkZUZpeGVkUG9z
aXRpb247CisKKyAgICBhdXRvJiBlZGl0b3JTdGF0ZSA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpOwor
ICAgIHJldHVybiAhZWRpdG9yU3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEgJiYgZWRpdG9y
U3RhdGUucG9zdExheW91dERhdGEoKS5pbnNpZGVGaXhlZFBvc2l0aW9uOworfQorCiAtIChCT09M
KWlzRWRpdGFibGUKIHsKICAgICByZXR1cm4gX2lzRWRpdGFibGU7CkBAIC0xMjYwLDYgKzEyNzEs
MjEgQEAgLSAoTlNBcnJheSAqKV9kYXRhRGV0ZWN0aW9uUmVzdWx0cwogfQogI2VuZGlmCiAKKy0g
KE5TQXJyYXk8TlNWYWx1ZSAqPiAqKV91aVRleHRTZWxlY3Rpb25SZWN0cworeworICAgIE5TTXV0
YWJsZUFycmF5ICp0ZXh0U2VsZWN0aW9uUmVjdHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwor
CisgICAgaWYgKF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50KSB7CisgICAgICAgIGZvciAoV0tUZXh0
U2VsZWN0aW9uUmVjdCAqc2VsZWN0aW9uUmVjdCBpbiBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQg
dmFsdWVGb3JLZXlQYXRoOkAic2VsZWN0aW9uVmlldy5zZWxlY3Rpb24uc2VsZWN0aW9uUmVjdHMi
XSkKKyAgICAgICAgICAgIFt0ZXh0U2VsZWN0aW9uUmVjdHMgYWRkT2JqZWN0OltOU1ZhbHVlIHZh
bHVlV2l0aENHUmVjdDpzZWxlY3Rpb25SZWN0LndlYlJlY3QucmVjdF1dOworICAgIH0gZWxzZSBp
ZiAoX3dlYlNlbGVjdGlvbkFzc2lzdGFudCkgeworICAgICAgICBmb3IgKFdlYlNlbGVjdGlvblJl
Y3QgKnNlbGVjdGlvblJlY3QgaW4gW193ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgdmFsdWVGb3JLZXlQ
YXRoOkAic2VsZWN0aW9uVmlldy5zZWxlY3Rpb25SZWN0cyJdKQorICAgICAgICAgICAgW3RleHRT
ZWxlY3Rpb25SZWN0cyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0dSZWN0OnNlbGVjdGlv
blJlY3QucmVjdF1dOworICAgIH0KKworICAgIHJldHVybiB0ZXh0U2VsZWN0aW9uUmVjdHM7Cit9
CisKIC0gKEJPT0wpZ2VzdHVyZVJlY29nbml6ZXJTaG91bGRCZWdpbjooVUlHZXN0dXJlUmVjb2du
aXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CiAgICAgQ0dQb2ludCBwb2ludCA9IFtnZXN0dXJl
UmVjb2duaXplciBsb2NhdGlvbkluVmlldzpzZWxmXTsKQEAgLTE2NDEsOCArMTY2NywxMCBAQCAt
ICh2b2lkKXNjcm9sbFZpZXdXaWxsU3RhcnRQYW5PclBpbmNoR2VzdHVyZQogCiAtICh2b2lkKV9k
aWRFbmRTY3JvbGxpbmdPclpvb21pbmcKIHsKLSAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBk
aWRFbmRTY3JvbGxpbmdPclpvb21pbmdQYWdlXTsKLSAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3Rh
bnQgZGlkRW5kU2Nyb2xsaW5nT3ZlcmZsb3ddOworICAgIGlmICghX25lZWRzRGVmZXJyZWRFbmRT
Y3JvbGxpbmdTZWxlY3Rpb25VcGRhdGUpIHsKKyAgICAgICAgW193ZWJTZWxlY3Rpb25Bc3Npc3Rh
bnQgZGlkRW5kU2Nyb2xsaW5nT3Jab29taW5nUGFnZV07CisgICAgICAgIFtfdGV4dFNlbGVjdGlv
bkFzc2lzdGFudCBkaWRFbmRTY3JvbGxpbmdPdmVyZmxvd107CisgICAgfQogICAgIF9wYWdlLT5z
ZXRJc1Njcm9sbGluZ09yWm9vbWluZyhmYWxzZSk7CiB9CiAKQEAgLTM3MzQsMjUgKzM3NjIsMzcg
QEAgLSAodm9pZClfdXBkYXRlQ2hhbmdlZFNlbGVjdGlvbjooQk9PTClmb3JjZQogICAgICAgICBy
ZXR1cm47CiAKICAgICBXS1NlbGVjdGlvbkRyYXdpbmdJbmZvIHNlbGVjdGlvbkRyYXdpbmdJbmZv
KF9wYWdlLT5lZGl0b3JTdGF0ZSgpKTsKLSAgICBpZiAoIWZvcmNlICYmIHNlbGVjdGlvbkRyYXdp
bmdJbmZvID09IF9sYXN0U2VsZWN0aW9uRHJhd2luZ0luZm8pCi0gICAgICAgIHJldHVybjsKKyAg
ICBpZiAoZm9yY2UgfHwgc2VsZWN0aW9uRHJhd2luZ0luZm8gIT0gX2xhc3RTZWxlY3Rpb25EcmF3
aW5nSW5mbykgeworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2VsZWN0aW9uLCBzdHJlYW0gPDwg
Il91cGRhdGVDaGFuZ2VkU2VsZWN0aW9uICIgPDwgc2VsZWN0aW9uRHJhd2luZ0luZm8pOwogCi0g
ICAgTE9HX1dJVEhfU1RSRUFNKFNlbGVjdGlvbiwgc3RyZWFtIDw8ICJfdXBkYXRlQ2hhbmdlZFNl
bGVjdGlvbiAiIDw8IHNlbGVjdGlvbkRyYXdpbmdJbmZvKTsKKyAgICAgICAgX2xhc3RTZWxlY3Rp
b25EcmF3aW5nSW5mbyA9IHNlbGVjdGlvbkRyYXdpbmdJbmZvOwogCi0gICAgX2xhc3RTZWxlY3Rp
b25EcmF3aW5nSW5mbyA9IHNlbGVjdGlvbkRyYXdpbmdJbmZvOworICAgICAgICAvLyBGSVhNRTog
V2UgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdG8gZG8gaWYgdGhlIHNlbGVjdGlvbiBpcyBjaGFu
Z2VkIGJ5IEphdmFzY3JpcHQuCisgICAgICAgIGlmIChfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCkg
eworICAgICAgICAgICAgX21hcmtlZFRleHQgPSAoX3BhZ2UtPmVkaXRvclN0YXRlKCkuaGFzQ29t
cG9zaXRpb24pID8gX3BhZ2UtPmVkaXRvclN0YXRlKCkubWFya2VkVGV4dCA6IFN0cmluZygpOwor
ICAgICAgICAgICAgaWYgKCFfc2hvd2luZ1RleHRTdHlsZU9wdGlvbnMpCisgICAgICAgICAgICAg
ICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNlbGVjdGlvbkNoYW5nZWRdOworICAgICAgICB9
IGVsc2UgaWYgKCFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRFZGl0YWJsZSkKKyAgICAg
ICAgICAgIFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IHNlbGVjdGlvbkNoYW5nZWRdOworCisgICAg
ICAgIF9zZWxlY3Rpb25OZWVkc1VwZGF0ZSA9IE5POworICAgICAgICBpZiAoX3Nob3VsZFJlc3Rv
cmVTZWxlY3Rpb24pIHsKKyAgICAgICAgICAgIFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IGRpZEVu
ZFNjcm9sbGluZ092ZXJmbG93XTsKKyAgICAgICAgICAgIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFu
dCBkaWRFbmRTY3JvbGxpbmdPdmVyZmxvd107CisgICAgICAgICAgICBfc2hvdWxkUmVzdG9yZVNl
bGVjdGlvbiA9IE5POworICAgICAgICB9CisgICAgfQogCi0gICAgLy8gRklYTUU6IFdlIG5lZWQg
dG8gZmlndXJlIG91dCB3aGF0IHRvIGRvIGlmIHRoZSBzZWxlY3Rpb24gaXMgY2hhbmdlZCBieSBK
YXZhc2NyaXB0LgotICAgIGlmIChfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCkgewotICAgICAgICBf
bWFya2VkVGV4dCA9IChfcGFnZS0+ZWRpdG9yU3RhdGUoKS5oYXNDb21wb3NpdGlvbikgPyBfcGFn
ZS0+ZWRpdG9yU3RhdGUoKS5tYXJrZWRUZXh0IDogU3RyaW5nKCk7Ci0gICAgICAgIGlmICghX3No
b3dpbmdUZXh0U3R5bGVPcHRpb25zKQotICAgICAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0
YW50IHNlbGVjdGlvbkNoYW5nZWRdOwotICAgIH0gZWxzZSBpZiAoIV9wYWdlLT5lZGl0b3JTdGF0
ZSgpLmlzQ29udGVudEVkaXRhYmxlKQotICAgICAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBz
ZWxlY3Rpb25DaGFuZ2VkXTsKLSAgICBfc2VsZWN0aW9uTmVlZHNVcGRhdGUgPSBOTzsKLSAgICBp
ZiAoX3Nob3VsZFJlc3RvcmVTZWxlY3Rpb24pIHsKLSAgICAgICAgW193ZWJTZWxlY3Rpb25Bc3Np
c3RhbnQgZGlkRW5kU2Nyb2xsaW5nT3ZlcmZsb3ddOworICAgIGF1dG8mIHN0YXRlID0gX3BhZ2Ut
PmVkaXRvclN0YXRlKCk7CisgICAgaWYgKCFzdGF0ZS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSAm
JiBzdGF0ZS5wb3N0TGF5b3V0RGF0YSgpLmlzU3RhYmxlU3RhdGVVcGRhdGUgJiYgX25lZWRzRGVm
ZXJyZWRFbmRTY3JvbGxpbmdTZWxlY3Rpb25VcGRhdGUgJiYgX2lzSW5TdGFibGVTdGF0ZSkgewor
ICAgICAgICBbW3NlbGYgc2VsZWN0aW9uSW50ZXJhY3Rpb25Bc3Npc3RhbnRdIHNob3dTZWxlY3Rp
b25Db21tYW5kc107CisgICAgICAgIFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IGRpZEVuZFNjcm9s
bGluZ09yWm9vbWluZ1BhZ2VdOworICAgICAgICBbW193ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgc2Vs
ZWN0aW9uVmlld10gc2V0SGlkZGVuOk5PXTsKKworICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Np
c3RhbnQgYWN0aXZhdGVTZWxlY3Rpb25dOwogICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3Rh
bnQgZGlkRW5kU2Nyb2xsaW5nT3ZlcmZsb3ddOwotICAgICAgICBfc2hvdWxkUmVzdG9yZVNlbGVj
dGlvbiA9IE5POworCisgICAgICAgIF9uZWVkc0RlZmVycmVkRW5kU2Nyb2xsaW5nU2VsZWN0aW9u
VXBkYXRlID0gTk87CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDY5YTUxZDIwMTY3NTM0ZmE4NDlhN2M3YjM4Nzhk
MzMxMmFjMTNhMGIuLjBiYzg3YjhlNmUxNWE4NDQ3MTdhMmZiOTAyNTc1YTFmM2IzMDgyM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBA
IC0yMjUsOSArMjI1LDYgQEAgV2ViQ29yZTo6RmxvYXRSZWN0IFdlYlBhZ2VQcm94eTo6Y29tcHV0
ZUN1c3RvbUZpeGVkUG9zaXRpb25SZWN0KGNvbnN0IEZsb2F0UmVjdCYKICAgICBGbG9hdFJlY3Qg
Y29uc3RyYWluZWRVbm9ic2N1cmVkUmVjdCA9IHVub2JzY3VyZWRDb250ZW50UmVjdDsKICAgICBG
bG9hdFJlY3QgZG9jdW1lbnRSZWN0ID0gbV9wYWdlQ2xpZW50LmRvY3VtZW50UmVjdCgpOwogCi0g
ICAgaWYgKG1fcGFnZUNsaWVudC5pc0Fzc2lzdGluZ05vZGUoKSkKLSAgICAgICAgcmV0dXJuIGRv
Y3VtZW50UmVjdDsKLQogICAgIGlmIChjb25zdHJhaW50ID09IFVub2JzY3VyZWRSZWN0Q29uc3Ry
YWludDo6Q29uc3RyYWluZWRUb0RvY3VtZW50UmVjdCkKICAgICAgICAgY29uc3RyYWluZWRVbm9i
c2N1cmVkUmVjdC5pbnRlcnNlY3QoZG9jdW1lbnRSZWN0KTsKIApAQCAtMTA2Niw2ICsxMDYzLDE2
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJc1Njcm9sbGluZ09yWm9vbWluZyhib29sIGlzU2Ny
b2xsaW5nT3Jab29taW5nKQogICAgICAgICBtX3ZhbGlkYXRpb25CdWJibGUtPnNob3coKTsKIH0K
IAordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RXZWJQYWdlSXNJblN0YWJsZVN0YXRlKCkKK3sK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RJc0luU3RhYmxl
U3RhdGUoKSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlSXNJblN0
YWJsZVN0YXRlUmVzcG9uc2UoYm9vbCBpblN0YWJsZVN0YXRlKQoreworICAgIG1fcGFnZUNsaWVu
dC5oYW5kbGVXZWJQYWdlU3RhYmxlU3RhdGVSZXNwb25zZShpblN0YWJsZVN0YXRlKTsKK30KKwog
I2lmIFVTRShRVUlDS19MT09LKQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0TG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgU3RyaW5nJiB1dGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCBjNTk1ZGUzYTAyZDk1YzAyNzM2NmNjODM4ZmUzNDBhZjg5ZjQyYjExLi44
MzRjZjMzYjYyOWNkNGVkYWFjMGFkMzk5OWM2NmYyY2EwZTQ1NmI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTU3NSw2ICs1NzUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25BcHBlYXJhbmNlKCk7CiAgICAgdm9pZCBnZXRT
ZWxlY3Rpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgaGFuZGxlVHdv
RmluZ2VyVGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQ2NF90IHJlcXVl
c3RJRCk7CisgICAgdm9pZCByZXF1ZXN0SXNJblN0YWJsZVN0YXRlKCk7CiAjaWYgRU5BQkxFKElP
U19UT1VDSF9FVkVOVFMpCiAgICAgdm9pZCBkaXNwYXRjaEFzeW5jaHJvbm91c1RvdWNoRXZlbnRz
KGNvbnN0IFZlY3RvcjxXZWJUb3VjaEV2ZW50LCAxPiYgcXVldWUpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CmluZGV4IDQzMzE3YjQxZjAxZTNkYmQ1MmIwZTY1NzUzYTY0MDg0ZTBhMzMyODcuLjE0YjRkY2Uw
MGVhNDJhYzJhZTNkYmE4ZjRiYWJkZTgyMDhiMGJhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC05Niw2ICs5
Niw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEFsbG93
c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhib29sIGFsbG93cykKICAgICBIYW5kbGVUd29G
aW5nZXJUYXBBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50NjRfdCByZXF1ZXN0
SUQpCiAgICAgU2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoYm9vbCB1c2VyU2NhbGFibGUpCisg
ICAgUmVxdWVzdElzSW5TdGFibGVTdGF0ZSgpCiAjZW5kaWYKIAogICAgIFNldENvbnRyb2xsZWRC
eUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDlhMDQxYWZlNmU2YmMxYTgx
ZGMwZTdlMmM5NjY1MjhkMTM4ODYwOGIuLmJiYTA3ZmQ4ODU4NDQ4YjY3ZTg3MmU3NzFkMzA2ODc3
NGYyOTVlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KQEAgLTEzNyw2ICsxMzcsMjYgQEAgdm9pZCBXZWJQYWdlOjpwbGF0
Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKQogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3N0YXRpYyBib29sIHNlbGVjdGlvbklzSW5zaWRlRml4
ZWRQb3NpdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7CisgICAgYm9v
bCBpbnNpZGVGaXhlZFBvc2l0aW9uOworICAgIGlmIChhdXRvKiBzdGFydE5vZGUgPSBzZWxlY3Rp
b24uc3RhcnQoKS5jb250YWluZXJOb2RlKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVy
ID0gc3RhcnROb2RlLT5yZW5kZXJlcigpKSB7CisgICAgICAgICAgICByZW5kZXJlci0+bG9jYWxU
b0NvbnRhaW5lclBvaW50KHsgfSwgbnVsbHB0ciwgVXNlVHJhbnNmb3JtcywgJmluc2lkZUZpeGVk
UG9zaXRpb24pOworICAgICAgICAgICAgaWYgKGluc2lkZUZpeGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGF1dG8qIGVu
ZE5vZGUgPSBzZWxlY3Rpb24uZW5kKCkuY29udGFpbmVyTm9kZSgpKSB7CisgICAgICAgIGlmIChh
dXRvKiByZW5kZXJlciA9IGVuZE5vZGUtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgIHJlbmRl
cmVyLT5sb2NhbFRvQ29udGFpbmVyUG9pbnQoeyB9LCBudWxscHRyLCBVc2VUcmFuc2Zvcm1zLCAm
aW5zaWRlRml4ZWRQb3NpdGlvbik7CisgICAgICAgICAgICBpZiAoaW5zaWRlRml4ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFt
ZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQg
c2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKSBjb25zdAogewogICAgIGlmIChmcmFtZS5lZGl0
b3IoKS5oYXNDb21wb3NpdGlvbigpKSB7CkBAIC0xNjYsNiArMTg2LDggQEAgdm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwg
SW5jbHVkZVBvc3QKICAgICBhdXRvJiBwb3N0TGF5b3V0RGF0YSA9IHJlc3VsdC5wb3N0TGF5b3V0
RGF0YSgpOwogICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lLnZpZXcoKTsKICAgICBjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KTsKKyAgICBwb3N0TGF5b3V0RGF0YS5pc1N0YWJsZVN0YXRlVXBkYXRlID0gbV9pc0luU3RhYmxl
U3RhdGU7CisgICAgcG9zdExheW91dERhdGEuaW5zaWRlRml4ZWRQb3NpdGlvbiA9IHNlbGVjdGlv
bklzSW5zaWRlRml4ZWRQb3NpdGlvbihzZWxlY3Rpb24pOwogICAgIGlmIChzZWxlY3Rpb24uaXND
YXJldCgpKSB7CiAgICAgICAgIHBvc3RMYXlvdXREYXRhLmNhcmV0UmVjdEF0U3RhcnQgPSB2aWV3
LT5jb250ZW50c1RvUm9vdFZpZXcoZnJhbWUuc2VsZWN0aW9uKCkuYWJzb2x1dGVDYXJldEJvdW5k
cygpKTsKICAgICAgICAgcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRFbmQgPSBwb3N0TGF5b3V0
RGF0YS5jYXJldFJlY3RBdFN0YXJ0OwpAQCAtNjY2LDYgKzY4OCwxMSBAQCB2b2lkIFdlYlBhZ2U6
OmhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50
LCB1aW50NjRfdAogICAgICAgICBjb21wbGV0ZVN5bnRoZXRpY0NsaWNrKG5vZGVSZXNwb25kaW5n
VG9DbGljaywgYWRqdXN0ZWRQb2ludCwgV2ViQ29yZTo6VHdvRmluZ2VyVGFwKTsKIH0KIAordm9p
ZCBXZWJQYWdlOjpyZXF1ZXN0SXNJblN0YWJsZVN0YXRlKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkhhbmRsZUlzSW5TdGFibGVTdGF0ZVJlc3BvbnNlKG1faXNJblN0YWJs
ZVN0YXRlKSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6cG90ZW50aWFsVGFwQXRQb3NpdGlvbih1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKQogewog
ICAgIG1fcG90ZW50aWFsVGFwTm9kZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCkubm9kZVJlc3BvbmRp
bmdUb0NsaWNrRXZlbnRzKHBvc2l0aW9uLCBtX3BvdGVudGlhbFRhcExvY2F0aW9uKTsKQEAgLTMw
ODEsOSArMzEwOCwxMSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMo
Y29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgdmlzaQogICAgIGZyYW1lVmlldy5z
ZXRTY3JvbGxWZWxvY2l0eShob3Jpem9udGFsVmVsb2NpdHksIHZlcnRpY2FsVmVsb2NpdHksIHNj
YWxlQ2hhbmdlUmF0ZSwgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby50aW1lc3RhbXAoKSk7
CiAKICAgICBpZiAobV9pc0luU3RhYmxlU3RhdGUpIHsKLSAgICAgICAgaWYgKGZyYW1lVmlldy5m
cmFtZSgpLnNldHRpbmdzKCkudmlzdWFsVmlld3BvcnRFbmFibGVkKCkpCisgICAgICAgIGlmIChm
cmFtZVZpZXcuZnJhbWUoKS5zZXR0aW5ncygpLnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKSB7CiAg
ICAgICAgICAgICBmcmFtZVZpZXcuc2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QoTGF5b3V0
UmVjdCh2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmN1c3RvbUZpeGVkUG9zaXRpb25SZWN0
KCkpKTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgZnJhbWVWaWV3LmZyYW1lKCkuc2VsZWN0
aW9uKCkuc2V0Q2FyZXRSZWN0TmVlZHNVcGRhdGUoKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKGVkaXRvclN0YXRlKCkpKTsKKyAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBmcmFtZVZpZXcuc2V0Q3VzdG9tRml4ZWRQb3NpdGlv
bkxheW91dFJlY3QoZW5jbG9zaW5nSW50UmVjdCh2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZv
LmN1c3RvbUZpeGVkUG9zaXRpb25SZWN0KCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYTI2MGI0MzBhOThkYmJmMTkyMzM5
ZTg5ZDI4OGQzZDhkMTI0MWMzLi5jMDAyYzNlNjkxNDk3MWFjYmI1MjcyNzkwMWNiZjE3YzRlMzQ0
ZjY0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTYtMTItMTMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CisKKyAgICAgICAgVmlzdWFsIHZpZXdwb3J0czogY2FyZXRzIGFuZCBzZWxlY3Rp
b24gVUkgYXJlIGluY29ycmVjdGx5IHBvc2l0aW9uZWQgd2hlbiBlZGl0aW5nIGZpeGVkIGVsZW1l
bnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU3
NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5NjAyMzgyPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZXMgdHdvIG5ldyBVSVNjcmlw
dENvbnRyb2xsZXIgbWV0aG9kczogZG9BZnRlcldlYlBhZ2VJc0luU3RhYmxlU3RhdGUgYW5kIHRl
eHRTZWxlY3Rpb25DYXJldFJlY3QuIFNlZQorICAgICAgICBXZWJDb3JlIENoYW5nZUxvZyBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29u
dHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpkb0FmdGVy
V2ViUGFnZUlzSW5TdGFibGVTdGF0ZSk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxl
cjo6dGV4dFNlbGVjdGlvbkNhcmV0UmVjdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9s
bGVyOjpkb0FmdGVyV2ViUGFnZUlzSW5TdGFibGVTdGF0ZSk6CisgICAgICAgICogVGVzdFJ1bm5l
clNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbDoK
KyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmRvQWZ0ZXJXZWJQ
YWdlSXNJblN0YWJsZVN0YXRlKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjp0
ZXh0U2VsZWN0aW9uQ2FyZXRSZWN0KToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RSdW5uZXJX
S1dlYlZpZXcgX3NldFN0YWJsZVN0YXRlT3ZlcnJpZGU6XSk6CisKKyAgICAgICAgRm9yY2UgdGhl
IFdLV2ViVmlldyB0byB1cGRhdGUgaXRzIHZpc2libGUgY29udGVudCByZWN0cyB3aGVuIGNoYW5n
aW5nIHRoZSBzdGFibGUgc3RhdGUgb3ZlcnJpZGUuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OnRvTlNEaWN0
aW9uYXJ5KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpkb0FmdGVyV2ViUGFn
ZUlzSW5TdGFibGVTdGF0ZSk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6c2Vs
ZWN0aW9uUmFuZ2VWaWV3UmVjdHMpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6
OnRleHRTZWxlY3Rpb25DYXJldFJlY3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFj
L1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9s
bGVyOjpkb0FmdGVyV2ViUGFnZUlzSW5TdGFibGVTdGF0ZSk6CisKIDIwMTYtMTItMDggIEFudHRp
IEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBuZXR3b3JrIGNh
Y2hlIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbiBpbiBNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggZmY5ZDU3
YTU4Yjg5MGQ5Nzc1NjdhY2VlYTBiODJmMDc4NTA2NjAyMi4uMmVmZGMyZDViMzc5Yzg2NDNmZjRj
ZGZkOTJmMGZlNWQ0ZmEyM2I3ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9z
L1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3Mv
VUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC01NCw2ICs1NCwxMSBAQCB2b2lkIFVJU2NyaXB0
Q29udHJvbGxlcjo6ZG9BZnRlclByZXNlbnRhdGlvblVwZGF0ZShKU1ZhbHVlUmVmIGNhbGxiYWNr
KQogICAgIHJldHVybiBkb0FzeW5jVGFzayhjYWxsYmFjayk7CiB9CiAKK3ZvaWQgVUlTY3JpcHRD
b250cm9sbGVyOjpkb0FmdGVyV2ViUGFnZUlzSW5TdGFibGVTdGF0ZShKU1ZhbHVlUmVmIGNhbGxi
YWNrKQoreworICAgIGRvQXN5bmNUYXNrKGNhbGxiYWNrKTsKK30KKwogdm9pZCBVSVNjcmlwdENv
bnRyb2xsZXI6Onpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykK
IHsKICAgICBSZWZQdHI8VUlTY3JpcHRDb250cm9sbGVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwpA
QCAtMjYxLDYgKzI2NiwxMSBAQCBKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVj
dGlvblJhbmdlVmlld1JlY3RzKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorSlNP
YmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjp0ZXh0U2VsZWN0aW9uQ2FyZXRSZWN0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6
OnJlbW92ZUFsbER5bmFtaWNEaWN0aW9uYXJpZXMoKQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KaW5kZXggYWNmZjRhODAyMGZk
NjI0YzRiNTQzMjg0NTk1NmUyZDkwNTMwOWFmOS4uNzZiZDJiMWM2NmRkMzk5MGM5MjgzMDkzODdh
YmQ4N2E5MzE5MmE4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2Ny
aXB0Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3Jp
cHRDb250cm9sbGVyTWFjLm1tCkBAIC01NCw2ICs1NCwxMSBAQCB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcjo6ZG9BZnRlclByZXNlbnRhdGlvblVwZGF0ZShKU1ZhbHVlUmVmIGNhbGxiYWNrKQogICAg
IHJldHVybiBkb0FzeW5jVGFzayhjYWxsYmFjayk7CiB9CiAKK3ZvaWQgVUlTY3JpcHRDb250cm9s
bGVyOjpkb0FmdGVyV2ViUGFnZUlzSW5TdGFibGVTdGF0ZShKU1ZhbHVlUmVmIGNhbGxiYWNrKQor
eworICAgIGRvQXN5bmNUYXNrKGNhbGxiYWNrKTsKK30KKwogdm9pZCBVSVNjcmlwdENvbnRyb2xs
ZXI6Omluc2VydFRleHQoSlNTdHJpbmdSZWYsIGludCwgaW50KQogewogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRD
b250cm9sbGVyLmlkbCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0Jp
bmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKaW5kZXggMjZhMjVmYWI3MzUxYzQzYzZkOTg3
ZjA4OWYyZTAyYjBiOGMwN2E3ZS4uYzQ1ZjliYThkOWE5ODYxMmQwM2I3M2JlOTJjMTUzYjkyYjU0
ZTljYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
QmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hh
cmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCkBAIC0y
Nyw2ICsyNyw3IEBAIGludGVyZmFjZSBVSVNjcmlwdENvbnRyb2xsZXIgewogCiAgICAgdm9pZCBk
b0FzeW5jVGFzayhvYmplY3QgY2FsbGJhY2spOyAvLyBVc2VkIHRvIHRlc3QgdGhlIGhhcm5lc3Mu
CiAgICAgdm9pZCBkb0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlKG9iamVjdCBjYWxsYmFjayk7IC8v
IENhbGwgdGhlIGNhbGxiYWNrIGFmdGVyIHNlbmRpbmcgYSBtZXNzYWdlIHRvIHRoZSBXZWJQcm9j
ZXNzIGFuZCByZWNlaXZpbmcgYSBzdWJzZXF1ZW50IHVwZGF0ZS4KKyAgICB2b2lkIGRvQWZ0ZXJX
ZWJQYWdlSXNJblN0YWJsZVN0YXRlKG9iamVjdCBjYWxsYmFjayk7CiAKICAgICB2b2lkIHNpbXVs
YXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlTm90aWZpY2F0aW9uKG9iamVjdCBjYWxsYmFj
ayk7CiAKQEAgLTE2NSw2ICsxNjYsNyBAQCBpbnRlcmZhY2UgVUlTY3JpcHRDb250cm9sbGVyIHsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgb2JqZWN0IGNvbnRlbnRWaXNpYmxlUmVjdDsgLy8gUmV0
dXJuZWQgb2JqZWN0IGhhcyAnbGVmdCcsICd0b3AnLCAnd2lkdGgnLCAnaGVpZ2h0JyBwcm9wZXJ0
aWVzLgogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIG9iamVjdCBzZWxlY3Rpb25SYW5nZVZpZXdS
ZWN0czsgLy8gQW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICdsZWZ0JywgJ3RvcCcsICd3aWR0aCcs
IGFuZCAnaGVpZ2h0JyBwcm9wZXJ0aWVzLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBvYmplY3Qg
dGV4dFNlbGVjdGlvbkNhcmV0UmVjdDsgLy8gQW4gb2JqZWN0IHdpdGggJ2xlZnQnLCAndG9wJywg
J3dpZHRoJywgJ2hlaWdodCcgcHJvcGVydGllcy4KIAogICAgIHZvaWQgaW5zZXJ0VGV4dChET01T
dHJpbmcgdGV4dCwgbG9uZyBsb2NhdGlvbiwgbG9uZyBsZW5ndGgpOwogICAgIHZvaWQgcmVtb3Zl
QWxsRHluYW1pY0RpY3Rpb25hcmllcygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXgg
MTY5MTE0NWFjOWMzOGY1ZWNjODZjMDA0YmVkNjRiYTE3YTFlM2FlMC4uMTI0OTk5M2JlNDE3Yzlh
NGRkMmUwNGFiMmViZDIzNzM1NGM5ZDNiNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCkBA
IC02NCw2ICs2NCwxMCBAQCB2b2lkIHNpbXVsYXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdl
Tm90aWZpY2F0aW9uKEpTVmFsdWVSZWYpCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6ZG9BZnRl
clByZXNlbnRhdGlvblVwZGF0ZShKU1ZhbHVlUmVmKQogewogfQorCit2b2lkIFVJU2NyaXB0Q29u
dHJvbGxlcjo6ZG9BZnRlcldlYlBhZ2VJc0luU3RhYmxlU3RhdGUoSlNWYWx1ZVJlZikKK3sKK30K
ICNlbmRpZgogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2V0RGlkU3RhcnRGb3JtQ29udHJv
bEludGVyYWN0aW9uQ2FsbGJhY2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKQEAgLTMwNyw2ICszMTEs
MTEgQEAgSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3Rpb25SYW5nZVZpZXdS
ZWN0cygpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK0pTT2JqZWN0UmVmIFVJU2Ny
aXB0Q29udHJvbGxlcjo6dGV4dFNlbGVjdGlvbkNhcmV0UmVjdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpyZW1vdmVBbGxEeW5h
bWljRGljdGlvbmFyaWVzKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMDQ5MzI2
OTZlOWU1YjA3ODhiZGFiNzk0NmU1MDViOTM1NDAxMmE2MS4uMzBjMGEzZGQ4ZGFjOGJlNDhkOTIx
OTA0MzJkZjIzOTJmZTkxN2VhOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9V
SVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKQEAgLTUyLDYgKzUy
LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgZG9Bc3luY1Rhc2soSlNWYWx1ZVJlZiBjYWxs
YmFjayk7CiAgICAgdm9pZCBkb0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlKEpTVmFsdWVSZWYgY2Fs
bGJhY2spOworICAgIHZvaWQgZG9BZnRlcldlYlBhZ2VJc0luU3RhYmxlU3RhdGUoSlNWYWx1ZVJl
ZiBjYWxsYmFjayk7CiAKICAgICB2b2lkIHpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSwgSlNWYWx1
ZVJlZiBjYWxsYmFjayk7CiAKQEAgLTEyOCw2ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgSlNPYmpl
Y3RSZWYgY29udGVudFZpc2libGVSZWN0KCkgY29uc3Q7CiAgICAgCiAgICAgSlNPYmplY3RSZWYg
c2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHMoKSBjb25zdDsKKyAgICBKU09iamVjdFJlZiB0ZXh0U2Vs
ZWN0aW9uQ2FyZXRSZWN0KCkgY29uc3Q7CiAKICAgICB2b2lkIGluc2VydFRleHQoSlNTdHJpbmdS
ZWYsIGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCk7CiAgICAgdm9pZCByZW1vdmVBbGxEeW5hbWlj
RGljdGlvbmFyaWVzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29h
L1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rl
c3RSdW5uZXJXS1dlYlZpZXcubW0KaW5kZXggMWIwOWVmODhiNGMzNDFjOWYwOGM5MmJiNjFkYTNl
OTBhNDQ0MWFhOC4uNWQ2ZDMwODM4Zjc4ZWQ4MzBhZjMwMTViYmU1YzQ2ZmQ1YmNlZTgzYyAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3
Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmll
dy5tbQpAQCAtMzcsNiArMzcsNyBAQCBAaW50ZXJmYWNlIFdLV2ViVmlldyAoKQogLSAodm9pZClz
Y3JvbGxWaWV3V2lsbEJlZ2luWm9vbWluZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyB3aXRo
VmlldzooVUlWaWV3ICopdmlldzsKIC0gKHZvaWQpc2Nyb2xsVmlld0RpZEVuZFpvb21pbmc6KFVJ
U2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZpZXc6KFVJVmlldyAqKXZpZXcgYXRTY2FsZToo
Q0dGbG9hdClzY2FsZTsKIC0gKHZvaWQpX2RpZEZpbmlzaFNjcm9sbGluZzsKKy0gKHZvaWQpX3Vw
ZGF0ZVZpc2libGVDb250ZW50UmVjdHM7CiAKIEBlbmQKICNlbmRpZgpAQCAtMTgzLDYgKzE4NCw3
IEBAIC0gKE5TTnVtYmVyICopX3N0YWJsZVN0YXRlT3ZlcnJpZGUKIC0gKHZvaWQpX3NldFN0YWJs
ZVN0YXRlT3ZlcnJpZGU6KE5TTnVtYmVyICopb3ZlcnJpZGVCb29sZWFuCiB7CiAgICAgbV9zdGFi
bGVTdGF0ZU92ZXJyaWRlID0gb3ZlcnJpZGVCb29sZWFuOworICAgIFtzZWxmIF91cGRhdGVWaXNp
YmxlQ29udGVudFJlY3RzXTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggY2Q2ODdhMzgyYTYwNWFl
MWNkNDk4YjhlYjk5MjEwMzUyZTI2NGQyNi4uOGQ3MGIwZTRjOWUxZmFhYjllNGY1NGRmYjFlMjdk
OWQyNzViYTY5MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3Jp
cHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2Ny
aXB0Q29udHJvbGxlcklPUy5tbQpAQCAtNDQsNiArNDQsMTYgQEAKIAogbmFtZXNwYWNlIFdUUiB7
CiAKK3N0YXRpYyBOU0RpY3Rpb25hcnkgKnRvTlNEaWN0aW9uYXJ5KENHUmVjdCByZWN0KQorewor
ICAgIHJldHVybiBAeworICAgICAgICBAImxlZnQiOiBAKHJlY3Qub3JpZ2luLngpLAorICAgICAg
ICBAInRvcCI6IEAocmVjdC5vcmlnaW4ueSksCisgICAgICAgIEAid2lkdGgiOiBAKHJlY3Quc2l6
ZS53aWR0aCksCisgICAgICAgIEAiaGVpZ2h0IjogQChyZWN0LnNpemUuaGVpZ2h0KQorICAgIH07
Cit9CisKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpkb0FzeW5jVGFzayhKU1ZhbHVlUmVmIGNh
bGxiYWNrKQogewogICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVG
b3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOwpAQCAtNjcs
NiArNzcsMTcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvQWZ0ZXJQcmVzZW50YXRpb25V
cGRhdGUoSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAgICB9XTsKIH0KIAordm9pZCBVSVNjcmlwdENv
bnRyb2xsZXI6OmRvQWZ0ZXJXZWJQYWdlSXNJblN0YWJsZVN0YXRlKEpTVmFsdWVSZWYgY2FsbGJh
Y2spCit7CisgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVy
OjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKKworICAgIHVuc2ln
bmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ss
IENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOworICAgIFt3ZWJWaWV3IF9kb0FmdGVyV2ViUGFn
ZUlzSW5TdGFibGVTdGF0ZTpeKCkgeworICAgICAgICBpZiAobV9jb250ZXh0KQorICAgICAgICAg
ICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKKyAgICB9XTsKK30K
Kwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Onpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSwgSlNW
YWx1ZVJlZiBjYWxsYmFjaykKIHsKICAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0g
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygp
OwpAQCAtNDM2LDIxICs0NTcsMTggQEAgSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjpj
b250ZW50VmlzaWJsZVJlY3QoKSBjb25zdAogSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVy
OjpzZWxlY3Rpb25SYW5nZVZpZXdSZWN0cygpIGNvbnN0CiB7CiAgICAgTlNNdXRhYmxlQXJyYXkg
KnNlbGVjdGlvblJlY3RzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0gICAgZm9y
IChVSVZpZXcgKnJlY3RWaWV3IGluIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2Vi
VmlldygpLT5wbGF0Zm9ybVZpZXcoKS5fdWlUZXh0U2VsZWN0aW9uUmVjdFZpZXdzKSB7Ci0gICAg
ICAgIGlmIChyZWN0Vmlldy5oaWRkZW4pCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICBDR1JlY3QgZnJhbWUgPSByZWN0Vmlldy5mcmFtZTsKLSAgICAgICAgW3NlbGVjdGlvblJlY3Rz
IGFkZE9iamVjdDpAewotICAgICAgICAgICAgQCJsZWZ0IjogQChmcmFtZS5vcmlnaW4ueCksCi0g
ICAgICAgICAgICBAInRvcCI6IEAoZnJhbWUub3JpZ2luLnkpLAotICAgICAgICAgICAgQCJ3aWR0
aCI6IEAoZnJhbWUuc2l6ZS53aWR0aCksCi0gICAgICAgICAgICBAImhlaWdodCI6IEAoZnJhbWUu
c2l6ZS5oZWlnaHQpLAotICAgICAgICB9XTsKLSAgICB9CisgICAgTlNBcnJheSAqcmVjdHMgPSBU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCku
X3VpVGV4dFNlbGVjdGlvblJlY3RzOworICAgIGZvciAoTlNWYWx1ZSAqcmVjdCBpbiByZWN0cykK
KyAgICAgICAgW3NlbGVjdGlvblJlY3RzIGFkZE9iamVjdDp0b05TRGljdGlvbmFyeShbcmVjdCBD
R1JlY3RWYWx1ZV0pXTsKKwogICAgIHJldHVybiBKU1ZhbHVlVG9PYmplY3QobV9jb250ZXh0LT5q
c0NvbnRleHQoKSwgW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OnNlbGVjdGlvblJlY3RzIGluQ29u
dGV4dDpbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOm1fY29udGV4dC0+
anNDb250ZXh0KCldXS5KU1ZhbHVlUmVmLCBudWxscHRyKTsKIH0KIAorSlNPYmplY3RSZWYgVUlT
Y3JpcHRDb250cm9sbGVyOjp0ZXh0U2VsZWN0aW9uQ2FyZXRSZWN0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gSlNWYWx1ZVRvT2JqZWN0KG1fY29udGV4dC0+anNDb250ZXh0KCksIFtKU1ZhbHVlIHZh
bHVlV2l0aE9iamVjdDp0b05TRGljdGlvbmFyeShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkuX3VpVGV4dENhcmV0UmVjdCkgaW5Db250ZXh0
OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6bV9jb250ZXh0LT5qc0Nv
bnRleHQoKV1dLkpTVmFsdWVSZWYsIG51bGxwdHIpOworfQorCiB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcjo6cmVtb3ZlQWxsRHluYW1pY0RpY3Rpb25hcmllcygpCiB7CiAgICAgW1VJS2V5Ym9hcmQg
cmVtb3ZlQWxsRHluYW1pY0RpY3Rpb25hcmllc107CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KaW5kZXggZDUwM2I0YWY1MWE1NzNi
NjNiYmI3OWZmNTQ0MWM2NjQ0Zjg0OWIxMi4uODVkN2FiYTZjMGZmNzQ5ZGZhMzAzMGI4ODM2ZDAy
ZWJlZTg3ZDEyYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3Jp
cHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2Ny
aXB0Q29udHJvbGxlck1hYy5tbQpAQCAtNjEsNiArNjEsMTEgQEAgdm9pZCBVSVNjcmlwdENvbnRy
b2xsZXI6OmRvQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUoSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAg
ICByZXR1cm4gZG9Bc3luY1Rhc2soY2FsbGJhY2spOwogfQogCit2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcjo6ZG9BZnRlcldlYlBhZ2VJc0luU3RhYmxlU3RhdGUoSlNWYWx1ZVJlZiBjYWxsYmFjaykK
K3sKKyAgICBkb0FzeW5jVGFzayhjYWxsYmFjayk7Cit9CisKIHZvaWQgVUlTY3JpcHRDb250cm9s
bGVyOjppbnNlcnRUZXh0KEpTU3RyaW5nUmVmIHRleHQsIGludCBsb2NhdGlvbiwgaW50IGxlbmd0
aCkKIHsKICNpZiBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdkMzYwMDdhMzIzYzU2NmRjOTRhYjEy
NzQ5ODEwMGU3YjlhNDc0MDMuLjVhOTk3YTI4MGRhZjQxZWI3ZWJiNjM5MGE0Y2RlNjBmNTljNzAy
NzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxNi0xMi0xMyAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBWaXN1YWwgdmlld3BvcnRzOiBjYXJldHMg
YW5kIHNlbGVjdGlvbiBVSSBhcmUgaW5jb3JyZWN0bHkgcG9zaXRpb25lZCB3aGVuIGVkaXRpbmcg
Zml4ZWQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NTc2NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk2MDIzODI+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBuZXcgbGF5b3V0
IHRlc3RzIHZlcmlmeWluZyB0aGF0IHNjcm9sbGluZyBzZWxlY3RlZCB0ZXh0IChub24tZWRpdGFi
bGUpIGFuZCBhIHRleHQgY2FyZXQgKGluIGVkaXRhYmxlCisgICAgICAgIGNvbnRlbnQpIHJlc3Vs
dHMgaW4gdGhlIHNlbGVjdGlvbi9jYXJldCByZWN0cyBoYXZpbmcgdGhlIGNvcnJlY3QgbG9jYXRp
b24gcmVsYXRpdmUgdG8gdGhlIGRvY3VtZW50LCBpbiBib3RoCisgICAgICAgIGNhc2VzIHdoZXJl
IHRoZSBzZWxlY3RlZC9mb2N1c2VkIGVsZW1lbnQgaGFzIGZpeGVkIHBvc2l0aW9uIG9yIGFic29s
dXRlIHBvc2l0aW9uLiBGb3IgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMsCisgICAgICAgIHRoaXMg
bWVhbnMgdGhhdCB0aGUgcmVjdHMgbXVzdCAibW92ZSIgZG93biBpbiB0aGUgZG9jdW1lbnQgYXMg
dGhlIGRvY3VtZW50IGlzIHNjcm9sbGVkLCBidXQgZm9yIGFic29sdXRlCisgICAgICAgIGVsZW1l
bnRzLCB0aGVzZSByZWN0cyBtdXN0IHJlbWFpbiBpbiBwbGFjZS4KKworICAgICAgICAqIFRlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC92aXN1YWwtdmlld3BvcnQvaW9zL2Fic29sdXRl
LWNhcmV0LWFmdGVyLXNjcm9sbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
dmlzdWFsLXZpZXdwb3J0L2lvcy9hYnNvbHV0ZS1jYXJldC1hZnRlci1zY3JvbGwuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC92aXN1YWwtdmlld3BvcnQvaW9zL2Fic29sdXRlLXNlbGVjdGlv
bi1hZnRlci1zY3JvbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Zpc3Vh
bC12aWV3cG9ydC9pb3MvYWJzb2x1dGUtc2VsZWN0aW9uLWFmdGVyLXNjcm9sbC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3Zpc3VhbC12aWV3cG9ydC9pb3MvZml4ZWQtY2FyZXQtcG9zaXRp
b24tYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC92aXN1
YWwtdmlld3BvcnQvaW9zL2ZpeGVkLWNhcmV0LXBvc2l0aW9uLWFmdGVyLXNjcm9sbC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3Zpc3VhbC12aWV3cG9ydC9pb3MvZml4ZWQtc2VsZWN0aW9u
LWFmdGVyLXNjcm9sbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdmlzdWFs
LXZpZXdwb3J0L2lvcy9maXhlZC1zZWxlY3Rpb24tYWZ0ZXItc2Nyb2xsLmh0bWw6IEFkZGVkLgor
CiAyMDE2LTEyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIERvY3VtZW50Lm9udmlzaWJpbGl0eWNoYW5nZSBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggMWUyNDA5MDhhNzA3Mjg2NDZjNTI0MWEzODZmOWFkZjYxZTU1
ZDBiNi4uODA2MTU4NjdjNTliYzBlMTAyOWU4ZDNmZjhmYjg5YWJiNjhkYjBkMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0yMCw2ICsyMCw3IEBAIHN3aXBlIFsgU2tpcCBdCiBmYXN0L3pvb21pbmcv
aW9zIFsgU2tpcCBdCiBmYXN0L2Zvcm1zL2lvcyBbIFNraXAgXQogZmFzdC92aWV3cG9ydC9pb3Mg
WyBTa2lwIF0KK2Zhc3QvdmlzdWFsLXZpZXdwb3J0L2lvcyBbIFNraXAgXQogZmFzdC9ldmVudHMv
aW9zIFsgU2tpcCBdCiBmYXN0L2V2ZW50cy90b3VjaC9pb3MgWyBTa2lwIF0KIGZhc3Qvc2Nyb2xs
aW5nL2lvcyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmll
d3BvcnQvaW9zL2Fic29sdXRlLWNhcmV0LWFmdGVyLXNjcm9sbC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC9pb3MvYWJzb2x1dGUtY2FyZXQtYWZ0ZXItc2Ny
b2xsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzk5OWY4MmI3MDI0Nzk0ZDNlOTg0NDQyNjIx
N2VmYTBjNjdhZGJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwt
dmlld3BvcnQvaW9zL2Fic29sdXRlLWNhcmV0LWFmdGVyLXNjcm9sbC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCitUaGUgaW5pdGlhbCBjYXJldCByZWN0IGlzOiBbNiAxNyA7IDMgMTVdCitUaGUgY2Fy
ZXQgcmVjdCBhZnRlciBzY3JvbGxpbmcgMTAwMHB4IGRvd24gaXM6IFs2IDE3IDsgMyAxNV0KK1BB
U1MgZmluYWxDYXJldFJlY3QudG9wIGlzIGluaXRpYWxDYXJldFJlY3QudG9wCitQQVNTIGZpbmFs
Q2FyZXRSZWN0LmxlZnQgaXMgaW5pdGlhbENhcmV0UmVjdC5sZWZ0CitQQVNTIGZpbmFsQ2FyZXRS
ZWN0LndpZHRoIGlzIGluaXRpYWxDYXJldFJlY3Qud2lkdGgKK1BBU1MgZmluYWxDYXJldFJlY3Qu
aGVpZ2h0IGlzIGluaXRpYWxDYXJldFJlY3QuaGVpZ2h0CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L2lvcy9hYnNvbHV0ZS1jYXJldC1hZnRlci1zY3JvbGwu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L2lvcy9hYnNvbHV0ZS1jYXJl
dC1hZnRlci1zY3JvbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzc0ODkyMzZiOWNmYmNjOTJmZTgyNzUw
NzQ3OTI1ODEyMzAxY2FiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1
YWwtdmlld3BvcnQvaW9zL2Fic29sdXRlLWNhcmV0LWFmdGVyLXNjcm9sbC5odG1sCkBAIC0wLDAg
KzEsODggQEAKKzxodG1sPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRl
dmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KKzxoZWFkPgor
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAgYm9keSB7CisgICAgICAgICAgICBtYXJnaW46IDA7
CisgICAgICAgIH0KKworICAgICAgICBpbnB1dCB7CisgICAgICAgICAgICB3aWR0aDogMTAwJTsK
KyAgICAgICAgICAgIGhlaWdodDogNTBweDsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICAgICAgICAgIGxlZnQ6IDA7CisgICAgICAgICAgICB0b3A6IDA7CisgICAgICAgIH0K
KworICAgICAgICBkaXYgeworICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1n
cmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwLCAjODg4
ODg4KSwgY29sb3Itc3RvcCgxLCAjRkZGRkZGKSk7CisgICAgICAgICAgICBoZWlnaHQ6IDQwMDBw
eDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRhcElu
SW5wdXRTY3JpcHQodGFwWCwgdGFwWSkKKyAgICB7CisgICAgICAgIHJldHVybiBgKGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgdWlDb250cm9sbGVyLmRpZFNob3dLZXlib2FyZENhbGxiYWNrID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmRvQWZ0ZXJXZWJQYWdl
SXNJblN0YWJsZVN0YXRlKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB1aUNvbnRy
b2xsZXIuc3RhYmxlU3RhdGVPdmVycmlkZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB1
aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZShKU09OLnN0cmluZ2lmeSh1aUNvbnRyb2xsZXIu
dGV4dFNlbGVjdGlvbkNhcmV0UmVjdCkpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgIHVpQ29udHJvbGxlci5zaW5nbGVUYXBBdFBvaW50KCR7dGFwWH0s
ICR7dGFwWX0sIGZ1bmN0aW9uKCkgeyB9KTsKKyAgICAgICAgfSkoKWA7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gc2ltdWxhdGVTY3JvbGxpbmdTY3JpcHQoZGlzdGFuY2UpCisgICAgeworICAgICAg
ICByZXR1cm4gYChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHVpQ29udHJvbGxlci5pbW1lZGlh
dGVTY3JvbGxUb09mZnNldCgwLCAke2Rpc3RhbmNlfSk7CisgICAgICAgICAgICB1aUNvbnRyb2xs
ZXIuc3RhYmxlU3RhdGVPdmVycmlkZSA9IHRydWU7CisgICAgICAgICAgICB1aUNvbnRyb2xsZXIu
ZG9BZnRlcldlYlBhZ2VJc0luU3RhYmxlU3RhdGUoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoSlNPTi5zdHJpbmdpZnkodWlDb250cm9s
bGVyLnRleHRTZWxlY3Rpb25DYXJldFJlY3QpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KSgpYDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0b1N0cmluZyhyZWN0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGBbJHtyZWN0LmxlZnR9ICR7cmVjdC50b3B9IDsgJHtyZWN0LndpZHRofSAke3Jl
Y3QuaGVpZ2h0fV1gOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1bigpCisgICAgeworICAgICAg
ICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KSB7Cisg
ICAgICAgICAgICBkZXNjcmlwdGlvbigiVG8gbWFudWFsbHkgdGVzdCwgdGFwIHRoaXMgaW5wdXQg
ZmllbGQgYW5kIHNjcm9sbCB1cC4gVGhlIHRleHQgY2FyZXQgc2hvdWxkIG5vdCBlbmQgdXAgb3V0
c2lkZSBvZiB0aGUgaW5wdXQuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KHRhcEluSW5wdXRTY3JpcHQod2luZG93Lmlu
bmVyV2lkdGggLyAyLCAzMCksIGluaXRpYWxDYXJldFJlY3QgPT4geworICAgICAgICAgICAgaW5p
dGlhbENhcmV0UmVjdCA9IEpTT04ucGFyc2UoaW5pdGlhbENhcmV0UmVjdCk7CisgICAgICAgICAg
ICB3aW5kb3cuaW5pdGlhbENhcmV0UmVjdCA9IGluaXRpYWxDYXJldFJlY3Q7CisgICAgICAgICAg
ICBkZWJ1ZyhgVGhlIGluaXRpYWwgY2FyZXQgcmVjdCBpczogJHt0b1N0cmluZyhpbml0aWFsQ2Fy
ZXRSZWN0KX1gKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoc2ltdWxhdGVT
Y3JvbGxpbmdTY3JpcHQoMTAwMCksIGZpbmFsQ2FyZXRSZWN0ID0+IHsKKyAgICAgICAgICAgICAg
ICBmaW5hbENhcmV0UmVjdCA9IEpTT04ucGFyc2UoZmluYWxDYXJldFJlY3QpOworICAgICAgICAg
ICAgICAgIHdpbmRvdy5maW5hbENhcmV0UmVjdCA9IGZpbmFsQ2FyZXRSZWN0OworICAgICAgICAg
ICAgICAgIGRlYnVnKGBUaGUgY2FyZXQgcmVjdCBhZnRlciBzY3JvbGxpbmcgMTAwMHB4IGRvd24g
aXM6ICR7dG9TdHJpbmcoZmluYWxDYXJldFJlY3QpfWApOworICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCJmaW5hbENhcmV0UmVjdC50b3AiLCAiaW5pdGlhbENhcmV0UmVjdC50b3AiKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZSgiZmluYWxDYXJldFJlY3QubGVmdCIsICJpbml0aWFsQ2FyZXRS
ZWN0LmxlZnQiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiZmluYWxDYXJldFJlY3Qud2lk
dGgiLCAiaW5pdGlhbENhcmV0UmVjdC53aWR0aCIpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJmaW5hbENhcmV0UmVjdC5oZWlnaHQiLCAiaW5pdGlhbENhcmV0UmVjdC5oZWlnaHQiKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKyAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
cnVuKCk+CisgICAgPGlucHV0PjwvaW5wdXQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorCis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC9pb3MvYWJzb2x1dGUt
c2VsZWN0aW9uLWFmdGVyLXNjcm9sbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Zp
c3VhbC12aWV3cG9ydC9pb3MvYWJzb2x1dGUtc2VsZWN0aW9uLWFmdGVyLXNjcm9sbC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTA3NjFkYmMxN2MyMDQ4Nzg0YTJhMjljMTZkMTcwMGZmZmMwNThh
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L2lv
cy9hYnNvbHV0ZS1zZWxlY3Rpb24tYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDExIEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
K0FmdGVyIGxvbmcgcHJlc3NpbmcsIHRoZSBzZWxlY3Rpb24gcmVjdHMgYXJlOiBbMCAwIDsgMzA5
IDExNF0KK0FmdGVyIHNjcm9sbGluZyAxMDAwcHggZG93biwgdGhlIHNlbGVjdGlvbiByZWN0cyBh
cmU6IFswIDAgOyAzMDkgMTE0XQorUEFTUyBmaW5hbFNlbGVjdGlvblJlY3RzWzBdLnRvcCBpcyBp
bml0aWFsU2VsZWN0aW9uUmVjdHNbMF0udG9wCitQQVNTIGZpbmFsU2VsZWN0aW9uUmVjdHNbMF0u
bGVmdCBpcyBpbml0aWFsU2VsZWN0aW9uUmVjdHNbMF0ubGVmdAorUEFTUyBmaW5hbFNlbGVjdGlv
blJlY3RzWzBdLndpZHRoIGlzIGluaXRpYWxTZWxlY3Rpb25SZWN0c1swXS53aWR0aAorUEFTUyBm
aW5hbFNlbGVjdGlvblJlY3RzWzBdLmhlaWdodCBpcyBpbml0aWFsU2VsZWN0aW9uUmVjdHNbMF0u
aGVpZ2h0CitXZWJLaXQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmll
d3BvcnQvaW9zL2Fic29sdXRlLXNlbGVjdGlvbi1hZnRlci1zY3JvbGwuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L2lvcy9hYnNvbHV0ZS1zZWxlY3Rpb24tYWZ0ZXItc2Ny
b2xsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODNmOTNiM2Q5YzBjNmQyMzMzMDRhN2ZmMDk3OWExOTg3NjA0
ZDYxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0
L2lvcy9hYnNvbHV0ZS1zZWxlY3Rpb24tYWZ0ZXItc2Nyb2xsLmh0bWwKQEAgLTAsMCArMSw5NCBA
QAorPGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdp
ZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgorPGhlYWQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHN0eWxlPgorICAgICAgICBib2R5IHsKKyAgICAgICAgICAgIG1hcmdpbjogMDsKKyAgICAg
ICAgfQorCisgICAgICAgICNmaXhlZCB7CisgICAgICAgICAgICB3aWR0aDogMTAwdnc7CisgICAg
ICAgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cisg
ICAgICAgICAgICBsZWZ0OiAwOworICAgICAgICAgICAgdG9wOiAwOworICAgICAgICAgICAgZm9u
dC1zaXplOiAxMDBweDsKKyAgICAgICAgfQorCisgICAgICAgICNjb250ZW50IHsKKyAgICAgICAg
ICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwg
bGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMCwgIzg4ODg4OCksIGNvbG9yLXN0b3AoMSwgI0ZGRkZG
RikpOworICAgICAgICAgICAgaGVpZ2h0OiA0MDAwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxl
PgorICAgIDxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0b1N0cmluZyhyZWN0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGBbJHtyZWN0LmxlZnR9ICR7cmVjdC50b3B9IDsgJHtyZWN0LndpZHRofSAke3JlY3Qu
aGVpZ2h0fV1gOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNlbGVjdEZpeGVkVGV4dFNjcmlwdCh0
YXBYLCB0YXBZKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGAKKyAgICAgICAgKGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgdWlDb250cm9sbGVyLmxvbmdQcmVzc0F0UG9pbnQoJHt0YXBYfSwgJHt0
YXBZfSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmRvQWZ0ZXJX
ZWJQYWdlSXNJblN0YWJsZVN0YXRlKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB1
aUNvbnRyb2xsZXIuc3RhYmxlU3RhdGVPdmVycmlkZSA9IGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZShKU09OLnN0cmluZ2lmeSh1aUNvbnRy
b2xsZXIuc2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHMpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KSgpO2A7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2lt
dWxhdGVTY3JvbGxpbmdTY3JpcHQoZGlzdGFuY2UpCisgICAgeworICAgICAgICByZXR1cm4gYChm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIHVpQ29udHJvbGxlci5pbW1lZGlhdGVTY3JvbGxUb09m
ZnNldCgwLCAke2Rpc3RhbmNlfSk7CisgICAgICAgICAgICB1aUNvbnRyb2xsZXIuc3RhYmxlU3Rh
dGVPdmVycmlkZSA9IHRydWU7CisgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZG9BZnRlcldlYlBh
Z2VJc0luU3RhYmxlU3RhdGUoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9s
bGVyLnVpU2NyaXB0Q29tcGxldGUoSlNPTi5zdHJpbmdpZnkodWlDb250cm9sbGVyLnNlbGVjdGlv
blJhbmdlVmlld1JlY3RzKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSkoKWA7CisgICAg
fQorCisgICAgZnVuY3Rpb24gdG9TdHJpbmcocmVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBg
WyR7cmVjdC5sZWZ0fSAke3JlY3QudG9wfSA7ICR7cmVjdC53aWR0aH0gJHtyZWN0LmhlaWdodH1d
YDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW4oKQorICAgIHsKKyAgICAgICAgaWYgKCF3aW5k
b3cudGVzdFJ1bm5lciB8fCAhdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkgeworICAgICAgICAgICAg
ZGVzY3JpcHRpb24oIlRvIG1hbnVhbGx5IHRlc3QsIGxvbmcgcHJlc3MgdGhpcyB0ZXh0IGFuZCBz
Y3JvbGwgdXAuIFRoZSBzZWxlY3Rpb24gcmVjdCBzaG91bGQgYmUgaW4gdGhlIGV4cGVjdGVkIHBs
YWNlIChhdCB0aGUgdmVyeSB0b3Agb2YgdGhlIHBhZ2UpIGFmdGVyIHNjcm9sbGluZy4iKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRlc3RSdW5uZXIucnVuVUlT
Y3JpcHQoc2VsZWN0Rml4ZWRUZXh0U2NyaXB0KDUwLCA1MCksIGluaXRpYWxTZWxlY3Rpb25SZWN0
cyA9PiB7CisgICAgICAgICAgICBpbml0aWFsU2VsZWN0aW9uUmVjdHMgPSBKU09OLnBhcnNlKGlu
aXRpYWxTZWxlY3Rpb25SZWN0cyk7CisgICAgICAgICAgICB3aW5kb3cuaW5pdGlhbFNlbGVjdGlv
blJlY3RzID0gaW5pdGlhbFNlbGVjdGlvblJlY3RzOworICAgICAgICAgICAgZGVidWcoYEFmdGVy
IGxvbmcgcHJlc3NpbmcsIHRoZSBzZWxlY3Rpb24gcmVjdHMgYXJlOiAke2luaXRpYWxTZWxlY3Rp
b25SZWN0cy5tYXAodG9TdHJpbmcpfWApOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNj
cmlwdChzaW11bGF0ZVNjcm9sbGluZ1NjcmlwdCgxMDAwKSwgZmluYWxTZWxlY3Rpb25SZWN0cyA9
PiB7CisgICAgICAgICAgICAgICAgZmluYWxTZWxlY3Rpb25SZWN0cyA9IEpTT04ucGFyc2UoZmlu
YWxTZWxlY3Rpb25SZWN0cyk7CisgICAgICAgICAgICAgICAgd2luZG93LmZpbmFsU2VsZWN0aW9u
UmVjdHMgPSBmaW5hbFNlbGVjdGlvblJlY3RzOworICAgICAgICAgICAgICAgIGRlYnVnKGBBZnRl
ciBzY3JvbGxpbmcgMTAwMHB4IGRvd24sIHRoZSBzZWxlY3Rpb24gcmVjdHMgYXJlOiAke2ZpbmFs
U2VsZWN0aW9uUmVjdHMubWFwKHRvU3RyaW5nKX1gKTsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZSgiZmluYWxTZWxlY3Rpb25SZWN0c1swXS50b3AiLCAiaW5pdGlhbFNlbGVjdGlvblJlY3RzWzBd
LnRvcCIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJmaW5hbFNlbGVjdGlvblJlY3RzWzBd
LmxlZnQiLCAiaW5pdGlhbFNlbGVjdGlvblJlY3RzWzBdLmxlZnQiKTsKKyAgICAgICAgICAgICAg
ICBzaG91bGRCZSgiZmluYWxTZWxlY3Rpb25SZWN0c1swXS53aWR0aCIsICJpbml0aWFsU2VsZWN0
aW9uUmVjdHNbMF0ud2lkdGgiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiZmluYWxTZWxl
Y3Rpb25SZWN0c1swXS5oZWlnaHQiLCAiaW5pdGlhbFNlbGVjdGlvblJlY3RzWzBdLmhlaWdodCIp
OworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0pOworICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD1ydW4oKT4KKyAgICA8ZGl2IGlkPSJmaXhlZCI+V2ViS2l0PC9kaXY+CisgICAgPGRpdiBp
ZD0iY29udGVudCI+PC9kaXY+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZpZXdw
b3J0L2lvcy9maXhlZC1jYXJldC1wb3NpdGlvbi1hZnRlci1zY3JvbGwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmlld3BvcnQvaW9zL2ZpeGVkLWNhcmV0LXBvc2l0aW9u
LWFmdGVyLXNjcm9sbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNThmNTY1NDNjOTMxMTI3OWJl
ZTYyYTIzMWZlOTQ0YmUzOTEzYWE3OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvdmlzdWFsLXZpZXdwb3J0L2lvcy9maXhlZC1jYXJldC1wb3NpdGlvbi1hZnRlci1zY3JvbGwt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCitUaGUgaW5pdGlhbCBjYXJldCByZWN0IGlzOiBbNiAxNyA7
IDMgMTVdCitUaGUgY2FyZXQgcmVjdCBhZnRlciBzY3JvbGxpbmcgMTAwMHB4IGRvd24gaXM6IFs2
IDEwMTcgOyAzIDE1XQorUEFTUyBmaW5hbENhcmV0UmVjdC50b3AgLSBpbml0aWFsQ2FyZXRSZWN0
LnRvcCBpcyAxMDAwCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZpZXdw
b3J0L2lvcy9maXhlZC1jYXJldC1wb3NpdGlvbi1hZnRlci1zY3JvbGwuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L2lvcy9maXhlZC1jYXJldC1wb3NpdGlvbi1hZnRlci1z
Y3JvbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjgyY2ZhZDVhMzE4NDZmYTU0Yzk5MTg0YTkwYWM3NjEy
NDIzZjNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmlld3Bv
cnQvaW9zL2ZpeGVkLWNhcmV0LXBvc2l0aW9uLWFmdGVyLXNjcm9sbC5odG1sCkBAIC0wLDAgKzEs
ODUgQEAKKzxodG1sPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmlj
ZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KKzxoZWFkPgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorICAgIDxzdHlsZT4KKyAgICAgICAgYm9keSB7CisgICAgICAgICAgICBtYXJnaW46IDA7Cisg
ICAgICAgIH0KKworICAgICAgICBpbnB1dCB7CisgICAgICAgICAgICB3aWR0aDogMTAwJTsKKyAg
ICAgICAgICAgIGhlaWdodDogNTBweDsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAg
ICAgICAgICAgIGxlZnQ6IDA7CisgICAgICAgICAgICB0b3A6IDA7CisgICAgICAgIH0KKworICAg
ICAgICBkaXYgeworICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVu
dChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwLCAjODg4ODg4KSwg
Y29sb3Itc3RvcCgxLCAjRkZGRkZGKSk7CisgICAgICAgICAgICBoZWlnaHQ6IDQwMDBweDsKKyAg
ICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRhcEluSW5wdXRT
Y3JpcHQodGFwWCwgdGFwWSkKKyAgICB7CisgICAgICAgIHJldHVybiBgKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgdWlDb250cm9sbGVyLmRpZFNob3dLZXlib2FyZENhbGxiYWNrID0gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmRvQWZ0ZXJXZWJQYWdlSXNJblN0
YWJsZVN0YXRlKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIu
c3RhYmxlU3RhdGVPdmVycmlkZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB1aUNvbnRy
b2xsZXIudWlTY3JpcHRDb21wbGV0ZShKU09OLnN0cmluZ2lmeSh1aUNvbnRyb2xsZXIudGV4dFNl
bGVjdGlvbkNhcmV0UmVjdCkpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIHVpQ29udHJvbGxlci5zaW5nbGVUYXBBdFBvaW50KCR7dGFwWH0sICR7dGFw
WX0sIGZ1bmN0aW9uKCkgeyB9KTsKKyAgICAgICAgfSkoKWA7CisgICAgfQorCisgICAgZnVuY3Rp
b24gc2ltdWxhdGVTY3JvbGxpbmdTY3JpcHQoZGlzdGFuY2UpCisgICAgeworICAgICAgICByZXR1
cm4gYChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHVpQ29udHJvbGxlci5pbW1lZGlhdGVTY3Jv
bGxUb09mZnNldCgwLCAke2Rpc3RhbmNlfSk7CisgICAgICAgICAgICB1aUNvbnRyb2xsZXIuc3Rh
YmxlU3RhdGVPdmVycmlkZSA9IHRydWU7CisgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZG9BZnRl
cldlYlBhZ2VJc0luU3RhYmxlU3RhdGUoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdWlD
b250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoSlNPTi5zdHJpbmdpZnkodWlDb250cm9sbGVyLnRl
eHRTZWxlY3Rpb25DYXJldFJlY3QpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KSgpYDsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiB0b1N0cmluZyhyZWN0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGBbJHtyZWN0LmxlZnR9ICR7cmVjdC50b3B9IDsgJHtyZWN0LndpZHRofSAke3JlY3QuaGVp
Z2h0fV1gOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1bigpCisgICAgeworICAgICAgICBpZiAo
IXdpbmRvdy50ZXN0UnVubmVyIHx8ICF0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KSB7CisgICAgICAg
ICAgICBkZXNjcmlwdGlvbigiVG8gbWFudWFsbHkgdGVzdCwgdGFwIHRoaXMgaW5wdXQgZmllbGQg
YW5kIHNjcm9sbCB1cC4gVGhlIHRleHQgY2FyZXQgc2hvdWxkIG5vdCBlbmQgdXAgb3V0c2lkZSBv
ZiB0aGUgaW5wdXQuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KHRhcEluSW5wdXRTY3JpcHQod2luZG93LmlubmVyV2lk
dGggLyAyLCAzMCksIGluaXRpYWxDYXJldFJlY3QgPT4geworICAgICAgICAgICAgaW5pdGlhbENh
cmV0UmVjdCA9IEpTT04ucGFyc2UoaW5pdGlhbENhcmV0UmVjdCk7CisgICAgICAgICAgICB3aW5k
b3cuaW5pdGlhbENhcmV0UmVjdCA9IGluaXRpYWxDYXJldFJlY3Q7CisgICAgICAgICAgICBkZWJ1
ZyhgVGhlIGluaXRpYWwgY2FyZXQgcmVjdCBpczogJHt0b1N0cmluZyhpbml0aWFsQ2FyZXRSZWN0
KX1gKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoc2ltdWxhdGVTY3JvbGxp
bmdTY3JpcHQoMTAwMCksIGZpbmFsQ2FyZXRSZWN0ID0+IHsKKyAgICAgICAgICAgICAgICBmaW5h
bENhcmV0UmVjdCA9IEpTT04ucGFyc2UoZmluYWxDYXJldFJlY3QpOworICAgICAgICAgICAgICAg
IHdpbmRvdy5maW5hbENhcmV0UmVjdCA9IGZpbmFsQ2FyZXRSZWN0OworICAgICAgICAgICAgICAg
IGRlYnVnKGBUaGUgY2FyZXQgcmVjdCBhZnRlciBzY3JvbGxpbmcgMTAwMHB4IGRvd24gaXM6ICR7
dG9TdHJpbmcoZmluYWxDYXJldFJlY3QpfWApOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJm
aW5hbENhcmV0UmVjdC50b3AgLSBpbml0aWFsQ2FyZXRSZWN0LnRvcCIsICIxMDAwIik7CisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPXJ1
bigpPgorICAgIDxpbnB1dD48L2lucHV0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKworPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmlld3BvcnQvaW9zL2ZpeGVkLXNlbGVj
dGlvbi1hZnRlci1zY3JvbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwt
dmlld3BvcnQvaW9zL2ZpeGVkLXNlbGVjdGlvbi1hZnRlci1zY3JvbGwtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIzZTAyMzE5YjM4ODAwYThkNGNlZTlhNDQ2Y2QxNDgxMjNlZDNhOTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC9pb3MvZml4ZWQt
c2VsZWN0aW9uLWFmdGVyLXNjcm9sbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitBZnRlciBsb25n
IHByZXNzaW5nLCB0aGUgc2VsZWN0aW9uIHJlY3RzIGFyZTogWzAgMCA7IDMwOSAxMTRdCitBZnRl
ciBzY3JvbGxpbmcgMTAwMHB4IGRvd24sIHRoZSBzZWxlY3Rpb24gcmVjdHMgYXJlOiBbMCAxMDAw
IDsgMzA5IDExNF0KK1BBU1MgaW5pdGlhbFNlbGVjdGlvblJlY3RzLmxlbmd0aCBpcyAxCitQQVNT
IGZpbmFsU2VsZWN0aW9uUmVjdHMubGVuZ3RoIGlzIDEKK1BBU1MgZmluYWxTZWxlY3Rpb25SZWN0
c1swXS50b3AgLSBpbml0aWFsU2VsZWN0aW9uUmVjdHNbMF0udG9wIGlzIDEwMDAKK1dlYktpdAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC9pb3MvZml4ZWQt
c2VsZWN0aW9uLWFmdGVyLXNjcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmll
d3BvcnQvaW9zL2ZpeGVkLXNlbGVjdGlvbi1hZnRlci1zY3JvbGwuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTUyMDhmZTgwMzEwM2ZkNTk5NzVlNGRjOWM0MzdkOTkxNWQ4OTljCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmlld3BvcnQvaW9zL2ZpeGVkLXNlbGVjdGlvbi1h
ZnRlci1zY3JvbGwuaHRtbApAQCAtMCwwICsxLDkzIEBACis8aHRtbD4KKzxtZXRhIG5hbWU9InZp
ZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdXNl
ci1zY2FsYWJsZT1ubyI+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAgICAgIGJvZHkg
eworICAgICAgICAgICAgbWFyZ2luOiAwOworICAgICAgICB9CisKKyAgICAgICAgI2ZpeGVkIHsK
KyAgICAgICAgICAgIHdpZHRoOiAxMDB2dzsKKyAgICAgICAgICAgIGhlaWdodDogNTBweDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICAgICAgICAgIGxlZnQ6IDA7CisgICAgICAg
ICAgICB0b3A6IDA7CisgICAgICAgICAgICBmb250LXNpemU6IDEwMHB4OworICAgICAgICB9CisK
KyAgICAgICAgI2NvbnRlbnQgeworICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtp
dC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwLCAj
ODg4ODg4KSwgY29sb3Itc3RvcCgxLCAjRkZGRkZGKSk7CisgICAgICAgICAgICBoZWlnaHQ6IDQw
MDBweDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRv
U3RyaW5nKHJlY3QpCisgICAgeworICAgICAgICByZXR1cm4gYFske3JlY3QubGVmdH0gJHtyZWN0
LnRvcH0gOyAke3JlY3Qud2lkdGh9ICR7cmVjdC5oZWlnaHR9XWA7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gc2VsZWN0Rml4ZWRUZXh0U2NyaXB0KHRhcFgsIHRhcFkpCisgICAgeworICAgICAgICBy
ZXR1cm4gYAorICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB1aUNvbnRyb2xsZXIu
bG9uZ1ByZXNzQXRQb2ludCgke3RhcFh9LCAke3RhcFl9LCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICB1aUNvbnRyb2xsZXIuZG9BZnRlcldlYlBhZ2VJc0luU3RhYmxlU3RhdGUoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5zdGFibGVTdGF0ZU92ZXJy
aWRlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENv
bXBsZXRlKEpTT04uc3RyaW5naWZ5KHVpQ29udHJvbGxlci5zZWxlY3Rpb25SYW5nZVZpZXdSZWN0
cykpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pKCk7
YDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzaW11bGF0ZVNjcm9sbGluZ1NjcmlwdChkaXN0YW5j
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdWlD
b250cm9sbGVyLmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KDAsICR7ZGlzdGFuY2V9KTsKKyAgICAg
ICAgICAgIHVpQ29udHJvbGxlci5zdGFibGVTdGF0ZU92ZXJyaWRlID0gdHJ1ZTsKKyAgICAgICAg
ICAgIHVpQ29udHJvbGxlci5kb0FmdGVyV2ViUGFnZUlzSW5TdGFibGVTdGF0ZShmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZShKU09OLnN0
cmluZ2lmeSh1aUNvbnRyb2xsZXIuc2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHMpKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KSgpYDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0b1N0cmluZyhy
ZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGBbJHtyZWN0LmxlZnR9ICR7cmVjdC50b3B9IDsg
JHtyZWN0LndpZHRofSAke3JlY3QuaGVpZ2h0fV1gOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1
bigpCisgICAgeworICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF0ZXN0UnVubmVy
LnJ1blVJU2NyaXB0KSB7CisgICAgICAgICAgICBkZXNjcmlwdGlvbigiVG8gbWFudWFsbHkgdGVz
dCwgbG9uZyBwcmVzcyB0aGlzIHRleHQgYW5kIHNjcm9sbCB1cC4gVGhlIHNlbGVjdGlvbiByZWN0
IHNob3VsZCBiZSBpbiB0aGUgZXhwZWN0ZWQgcGxhY2UgKGluIHRoZSBmaXhlZCBkaXYpIGFmdGVy
IHNjcm9sbGluZy4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoc2VsZWN0Rml4ZWRUZXh0U2NyaXB0KDUwLCA1MCksIGlu
aXRpYWxTZWxlY3Rpb25SZWN0cyA9PiB7CisgICAgICAgICAgICBpbml0aWFsU2VsZWN0aW9uUmVj
dHMgPSBKU09OLnBhcnNlKGluaXRpYWxTZWxlY3Rpb25SZWN0cyk7CisgICAgICAgICAgICB3aW5k
b3cuaW5pdGlhbFNlbGVjdGlvblJlY3RzID0gaW5pdGlhbFNlbGVjdGlvblJlY3RzOworICAgICAg
ICAgICAgZGVidWcoYEFmdGVyIGxvbmcgcHJlc3NpbmcsIHRoZSBzZWxlY3Rpb24gcmVjdHMgYXJl
OiAke2luaXRpYWxTZWxlY3Rpb25SZWN0cy5tYXAodG9TdHJpbmcpfWApOworICAgICAgICAgICAg
dGVzdFJ1bm5lci5ydW5VSVNjcmlwdChzaW11bGF0ZVNjcm9sbGluZ1NjcmlwdCgxMDAwKSwgZmlu
YWxTZWxlY3Rpb25SZWN0cyA9PiB7CisgICAgICAgICAgICAgICAgZmluYWxTZWxlY3Rpb25SZWN0
cyA9IEpTT04ucGFyc2UoZmluYWxTZWxlY3Rpb25SZWN0cyk7CisgICAgICAgICAgICAgICAgd2lu
ZG93LmZpbmFsU2VsZWN0aW9uUmVjdHMgPSBmaW5hbFNlbGVjdGlvblJlY3RzOworICAgICAgICAg
ICAgICAgIGRlYnVnKGBBZnRlciBzY3JvbGxpbmcgMTAwMHB4IGRvd24sIHRoZSBzZWxlY3Rpb24g
cmVjdHMgYXJlOiAke2ZpbmFsU2VsZWN0aW9uUmVjdHMubWFwKHRvU3RyaW5nKX1gKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZSgiaW5pdGlhbFNlbGVjdGlvblJlY3RzLmxlbmd0aCIsICIxIik7
CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImZpbmFsU2VsZWN0aW9uUmVjdHMubGVuZ3RoIiwg
IjEiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiZmluYWxTZWxlY3Rpb25SZWN0c1swXS50
b3AgLSBpbml0aWFsU2VsZWN0aW9uUmVjdHNbMF0udG9wIiwgIjEwMDAiKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9cnVuKCk+Cisg
ICAgPGRpdiBpZD0iZml4ZWQiPldlYktpdDwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnRlbnQiPjwv
ZGl2PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>