<?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>165403</bug_id>
          
          <creation_ts>2016-12-05 12:54:43 -0800</creation_ts>
          <short_desc>Almost half-second stall scrolling apple.com because of synchronous getPositionInformation</short_desc>
          <delta_ts>2016-12-06 10:25:13 -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>WebKit2</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="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>bdakin</cc>
    
    <cc>enrica</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1256446</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-05 12:54:43 -0800</bug_when>
    <thetext>getPositionInformation often does a lot of work that it doesn&apos;t need to, and is called synchronously from the UI process.

We should try to minimize the work it does to only what is needed, especially when it comes to snapshotting Web content, which is very expensive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256500</commentid>
    <comment_count>1</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-05 14:37:23 -0800</bug_when>
    <thetext>rdar://problem/29493285</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256501</commentid>
    <comment_count>2</comment_count>
      <attachid>296191</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-05 14:37:43 -0800</bug_when>
    <thetext>Created attachment 296191
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256593</commentid>
    <comment_count>3</comment_count>
      <attachid>296217</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-05 16:43:11 -0800</bug_when>
    <thetext>Created attachment 296217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256612</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-05 17:02:59 -0800</bug_when>
    <thetext>ios-sim is not mine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256827</commentid>
    <comment_count>5</comment_count>
      <attachid>296217</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-06 09:25:46 -0800</bug_when>
    <thetext>Comment on attachment 296217
Patch

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

&gt; Source/WebKit2/Shared/AssistedNodeInformation.h:122
&gt; -#endif // InteractionInformationAtPosition_h
&gt; +#endif // AssistedNodeInformation_h

As long as we&apos;re changing this, why not pragma once?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256834</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-06 09:34:51 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 296217 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=296217&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/AssistedNodeInformation.h:122
&gt; &gt; -#endif // InteractionInformationAtPosition_h
&gt; &gt; +#endif // AssistedNodeInformation_h
&gt; 
&gt; As long as we&apos;re changing this, why not pragma once?

Heh, I did it in the other files but not this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256855</commentid>
    <comment_count>7</comment_count>
      <attachid>296217</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-12-06 10:09:21 -0800</bug_when>
    <thetext>Comment on attachment 296217
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256858</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-06 10:25:13 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/209405</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296191</attachid>
            <date>2016-12-05 14:37:43 -0800</date>
            <delta_ts>2016-12-05 16:43:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165403-20161205143708.patch</filename>
            <type>text/plain</type>
            <size>50820</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTQ5MDk4YTBkMmQ1MGY0
YmRjZjE1NjgzMTEwYmM2N2UzYTgwYjhkOS4uYjk5NTA2ZDU2ODA2Zjc1N2JjNjU4OWM1NWVmZmE2
YjkxYThmOGFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE2LTEyLTA1ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFsbW9zdCBoYWxm
LXNlY29uZCBzdGFsbCBzY3JvbGxpbmcgYXBwbGUuY29tIGJlY2F1c2Ugb2Ygc3luY2hyb25vdXMg
Z2V0UG9zaXRpb25JbmZvcm1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY1NDAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTQ5MzI4NT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJl
ZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9pb3MvSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6SW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6
OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpjb3B5Rm9yd2FyZFZhbGlkQXVnbWVu
dGF0aW9ucyk6CisgICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVx
dWVzdC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9pb3MvSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaC4KKyAgICAgICAgKFdlYktpdDo6SW50ZXJhY3Rpb25J
bmZvcm1hdGlvblJlcXVlc3Q6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkludGVyYWN0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlv
bkluZm9ybWF0aW9uUmVxdWVzdDo6aXNWYWxpZEZvclJlcXVlc3QpOgorICAgICAgICAqIFNoYXJl
ZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdDIvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oLgor
ICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdDo6SW50ZXJhY3Rp
b25JbmZvcm1hdGlvblJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW06Cisg
ICAgICAgICgtW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgaW5pdGlhbFByZXNlbnRhdGlvblJlY3RJ
bkhvc3RWaWV3Rm9yU2hlZXRdKToKKyAgICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCBw
cmVzZW50YXRpb25SZWN0SW5Ib3N0Vmlld0ZvclNoZWV0XSk6CisgICAgICAgICgtW1dLQWN0aW9u
U2hlZXRBc3Npc3RhbnQgc2hvd0ltYWdlU2hlZXRdKToKKyAgICAgICAgKC1bV0tBY3Rpb25TaGVl
dEFzc2lzdGFudCBzaG93TGlua1NoZWV0XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2hvd0F0dGFj
aG1lbnRTaGVldF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGVuc3VyZVBvc2l0aW9uSW5m
b3JtYXRpb25Jc1VwVG9EYXRlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlcXVlc3RB
c3luY2hyb25vdXNQb3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlOl0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGdlc3R1cmVSZWNvZ25pemVyU2hvdWxkQmVnaW46XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgaGFzU2VsZWN0YWJsZVBvc2l0aW9uQXRQb2ludDpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBwb2ludElzTmVhck1hcmtlZFRleHQ6XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgcG9pbnRJc0luQXNzaXN0ZWROb2RlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9kaWROb3RIYW5kbGVUYXBBc0NsaWNrOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IHVwZGF0ZVBvc2l0aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDpdKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDp3aWxsU3RhcnRJ
bnRlcmFjdGlvbldpdGhFbGVtZW50Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9pbnRl
cmFjdGlvblNob3VsZEJlZ2luRnJvbVByZXZpZXdJdGVtQ29udHJvbGxlcjpmb3JQb3NpdGlvbjpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGF0YUZvclByZXZpZXdJdGVtQ29udHJvbGxl
cjphdFBvc2l0aW9uOnR5cGU6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3ByZXNlbnRl
ZFZpZXdDb250cm9sbGVyRm9yUHJldmlld0l0ZW1Db250cm9sbGVyOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tOgorICAgICAgICAoLVtXS1BERlZpZXcgYW5ub3RhdGlv
bjppc0JlaW5nUHJlc3NlZEF0UG9pbnQ6Y29udHJvbGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVUYXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpo
YW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29t
bWl0UG90ZW50aWFsVGFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UG9zaXRpb25J
bmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RQb3NpdGlvbklu
Zm9ybWF0aW9uKToKKwogMjAxNi0xMi0wNSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgY21ha2UgYnVpbGRmaXggYWZ0ZXIgcjIwOTMw
Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgK
aW5kZXggYTI0NjE4ZGFmN2VlMTViYjk2YjAzMWY0YTA0ZjdmYTA4NDk1MjM5Yi4uMTEwZjlhYWFk
YzU1NmM5ZTRmOGVmZjVhNTRmYzg0YzgzYTQ0NTVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgKQEAgLTExOSw0ICsxMTksNCBAQCBzdHJ1
Y3QgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24gewogCiB9CiAKLSNlbmRpZiAvLyBJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbl9oCisjZW5kaWYgLy8gQXNzaXN0ZWROb2RlSW5mb3JtYXRp
b25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9JbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCmluZGV4IDE3ODJiMjVhZTVjYjgwMzYwMWJjZTc4
ODY0M2VmMzkzNjIxYTkzOGYuLmRhZDhjYzBhZjA0YmY3NjkyOGFlNzZjNDM0NDkwYTliNjhmNzkz
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL0ludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgKQEAgLTIzLDEyICsyMywxMiBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb25faAotI2RlZmluZSBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIFBMQVRGT1JNKElPUykKIAogI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
c3QuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lu
dFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWxlY3Rpb25SZWN0Lmg+CkBAIC0zOCw3ICsz
OCw4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uIHsKLSAgICBXZWJDb3JlOjpJbnRQb2ludCBwb2ludDsKKyAgICBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0OworCiAgICAgYm9vbCBub2RlQXRQb3NpdGlv
bklzQXNzaXN0ZWROb2RlIHsgZmFsc2UgfTsKICAgICBib29sIGlzU2VsZWN0YWJsZSB7IGZhbHNl
IH07CiAgICAgYm9vbCBpc05lYXJNYXJrZWRUZXh0IHsgZmFsc2UgfTsKQEAgLTY2LDYgKzY3LDgg
QEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIHsKICAgICBSZXRhaW5Q
dHI8TlNBcnJheT4gZGF0YURldGVjdG9yUmVzdWx0czsKICNlbmRpZgogCisgICAgdm9pZCBjb3B5
Rm9yd2FyZFZhbGlkQXVnbWVudGF0aW9ucyhjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbiYgb2xkSW5mb3JtYXRpb24pOworCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJik7CiB9OwpAQCAtNzMsNSArNzYsMyBAQCBzdHJ1Y3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gewogfQogCiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQotCi0jZW5kaWYgLy8gSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb25faApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KaW5kZXggM2EzZDViYjQ2YTJmYTM2YWQ4NjAwMjRiMDQy
ZDVhOGNhYTNlYmI3Zi4uYTBiNGQ1OWU2MWQyMzVmMTZjM2QzZWM1YmIxNmM5ODhkYjQ2NDMwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL0ludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCkBAIC00MCw3ICs0MCw4IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiB2b2lkIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgcG9pbnQ7Cisg
ICAgZW5jb2RlciA8PCByZXF1ZXN0OworCiAgICAgZW5jb2RlciA8PCBub2RlQXRQb3NpdGlvbklz
QXNzaXN0ZWROb2RlOwogICAgIGVuY29kZXIgPDwgaXNTZWxlY3RhYmxlOwogICAgIGVuY29kZXIg
PDwgaXNOZWFyTWFya2VkVGV4dDsKQEAgLTgwLDcgKzgxLDcgQEAgdm9pZCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IAogYm9vbCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mIHJlc3VsdCkK
IHsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wb2ludCkpCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQucmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm5vZGVBdFBvc2l0aW9uSXNBc3Npc3RlZE5vZGUp
KQpAQCAtMTY3LDYgKzE2OCwxOSBAQCBib29sIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBJbnRlcmFjdGlvbgogCiAgICAgcmV0
dXJuIHRydWU7CiB9Ci0jZW5kaWYKKwordm9pZCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbjo6Y29weUZvcndhcmRWYWxpZEF1Z21lbnRhdGlvbnMoY29uc3QgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24mIG9sZEluZm9ybWF0aW9uKQoreworICAgIGlmIChvbGRJbmZvcm1h
dGlvbi5yZXF1ZXN0LnBvaW50ICE9IHJlcXVlc3QucG9pbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChvbGRJbmZvcm1hdGlvbi5yZXF1ZXN0LmluY2x1ZGVTbmFwc2hvdCAmJiAhcmVxdWVz
dC5pbmNsdWRlU25hcHNob3QpCisgICAgICAgIGltYWdlID0gb2xkSW5mb3JtYXRpb24uaW1hZ2U7
CisKKyAgICBpZiAob2xkSW5mb3JtYXRpb24ucmVxdWVzdC5pbmNsdWRlTGlua0luZGljYXRvciAm
JiAhcmVxdWVzdC5pbmNsdWRlTGlua0luZGljYXRvcikKKyAgICAgICAgbGlua0luZGljYXRvciA9
IG9sZEluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3I7Cit9CisKKyNlbmRpZiAvLyBQTEFURk9STShJ
T1MpCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9pb3MvSW50ZXJhY3Rp
b25JbmZvcm1hdGlvblJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9JbnRl
cmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjUwMDE4YjMxZTA2MTNh
MjljNGQ2OTQwNzhhMWMyNDEwZTY0MmI1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuY3BwCkBAIC0wLDAg
KzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkludGVy
YWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmgiCisKKyNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0Yu
aCIKKyNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworI2lmIFBMQVRGT1JNKElPUykKKwordm9pZCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVx
dWVzdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IHBvaW50OworICAgIGVuY29kZXIgPDwgaW5jbHVkZVNuYXBzaG90OworICAgIGVuY29kZXIg
PDwgaW5jbHVkZUxpbmtJbmRpY2F0b3I7Cit9CisKK2Jvb2wgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
blJlcXVlc3Q6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEludGVyYWN0aW9uSW5mb3Jt
YXRpb25SZXF1ZXN0JiByZXN1bHQpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
cG9pbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5pbmNsdWRlU25hcHNob3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pbmNsdWRlTGlua0luZGljYXRvcikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEludGVyYWN0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0Ojppc1ZhbGlkRm9yUmVxdWVzdChjb25zdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdCYgb3RoZXIpCit7CisgICAgaWYgKG90aGVyLnBvaW50ICE9IHBvaW50
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAob3RoZXIuaW5jbHVkZVNuYXBzaG90
ICYmICFpbmNsdWRlU25hcHNob3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChv
dGhlci5pbmNsdWRlTGlua0luZGljYXRvciAmJiAhaW5jbHVkZUxpbmtJbmRpY2F0b3IpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL0lu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9z
L0ludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEzOWVjOGU2YmY5
NGQ0ZDFhMmUxNTQ1YTZjMGIxMzhmM2ZjZTczNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaApAQCAtMCww
ICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShJT1Mp
CisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1h
cC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nl
bGVjdGlvblJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVj
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCB7CisgICAgV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQ7CisKKyAgICBib29sIGluY2x1ZGVTbmFwc2hvdCB7IGZhbHNlIH07CisgICAgYm9vbCBp
bmNsdWRlTGlua0luZGljYXRvciB7IGZhbHNlIH07CisKKyAgICBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uUmVxdWVzdCgpIHsgfQorICAgIGV4cGxpY2l0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1
ZXN0KFdlYkNvcmU6OkludFBvaW50IHBvaW50KQorICAgIHsKKyAgICAgICAgdGhpcy0+cG9pbnQg
PSBwb2ludDsKKyAgICB9CisKKyAgICBib29sIGlzVmFsaWRGb3JSZXF1ZXN0KGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Jik7CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29k
ZXImKSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmKTsKK307CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2YTE0ZDY0
YmYwNjFkY2I4M2ExN2UxMDI4NGEyNTA2NDI1ZDMzMTQ1Li44NjE4MDFlOTJiYzFiY2IwMmQ4Nzc4
MmY3ODgwZDhkNTU5MmQzYjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC0yMTAsNiArMjEwLDcgQEAgc3RydWN0IENvbG9yU3BhY2VEYXRhOwogc3RydWN0IEVk
aXRpbmdSYW5nZTsKIHN0cnVjdCBFZGl0b3JTdGF0ZTsKIGNsYXNzIEdhbWVwYWREYXRhOworc3Ry
dWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Owogc3RydWN0IExvYWRQYXJhbWV0ZXJz
Owogc3RydWN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YTsKIHN0cnVjdCBQcmludEluZm87CkBAIC01
MTEsOCArNTEyLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVwbGFjZURpY3RhdGVkVGV4dChjb25z
dCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CiAgICAgdm9pZCByZXBs
YWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdU
ZXh0KTsKICAgICB2b2lkIGRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJik7Ci0gICAgdm9pZCBnZXRQb3NpdGlvbkluZm9y
bWF0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24mKTsKLSAgICB2b2lkIHJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50Jik7CisgICAgdm9pZCBnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0
IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiwgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24mKTsKKyAgICB2b2lkIHJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBzdGFydEludGVyYWN0aW9u
V2l0aEVsZW1lbnRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9p
ZCBzdG9wSW50ZXJhY3Rpb24oKTsKICAgICB2b2lkIHBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWlu
dDMyX3QgYWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQppbmRleCA5Y2FjMDYxN2VlM2JlODBmZDY4ZTY2OTEz
OTNhYTJjNjI1NzdiYzllLi5iNWExYTIwMGNlY2FlMGFmMDgxYzk1YTFkMzA2OTgwZTIyYjk5ZDBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRB
c3Npc3RhbnQubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNo
ZWV0QXNzaXN0YW50Lm1tCkBAIC0xNTksNyArMTU5LDcgQEAgc3RhdGljIExTQXBwTGluayAqYXBw
TGlua0ZvclVSTChOU1VSTCAqdXJsKQogICAgIGlmICghdmlldyB8fCAhZGVsZWdhdGUpCiAgICAg
ICAgIHJldHVybiBDR1JlY3RaZXJvOwogCi0gICAgcmV0dXJuIFtzZWxmIF9wcmVzZW50YXRpb25S
ZWN0Rm9yU2hlZXRHaXZlblBvaW50OltkZWxlZ2F0ZSBwb3NpdGlvbkluZm9ybWF0aW9uRm9yQWN0
aW9uU2hlZXRBc3Npc3RhbnQ6c2VsZl0ucG9pbnQgaW5Ib3N0Vmlldzp2aWV3XTsKKyAgICByZXR1
cm4gW3NlbGYgX3ByZXNlbnRhdGlvblJlY3RGb3JTaGVldEdpdmVuUG9pbnQ6W2RlbGVnYXRlIHBv
c2l0aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDpzZWxmXS5yZXF1ZXN0LnBv
aW50IGluSG9zdFZpZXc6dmlld107CiB9CiAKIC0gKENHUmVjdClwcmVzZW50YXRpb25SZWN0SW5I
b3N0Vmlld0ZvclNoZWV0CkBAIC0xNzIsNyArMTcyLDcgQEAgc3RhdGljIExTQXBwTGluayAqYXBw
TGlua0ZvclVSTChOU1VSTCAqdXJsKQogICAgIGNvbnN0IGF1dG8mIHBvc2l0aW9uSW5mb3JtYXRp
b24gPSBbZGVsZWdhdGUgcG9zaXRpb25JbmZvcm1hdGlvbkZvckFjdGlvblNoZWV0QXNzaXN0YW50
OnNlbGZdOwogCiAgICAgQ0dSZWN0IGJvdW5kaW5nUmVjdCA9IHBvc2l0aW9uSW5mb3JtYXRpb24u
Ym91bmRzOwotICAgIENHUG9pbnQgZnJvbVBvaW50ID0gcG9zaXRpb25JbmZvcm1hdGlvbi5wb2lu
dDsKKyAgICBDR1BvaW50IGZyb21Qb2ludCA9IHBvc2l0aW9uSW5mb3JtYXRpb24ucmVxdWVzdC5w
b2ludDsKIAogICAgIC8vIEZJWE1FOiBXZSBtdXN0IGFkanVzdCBvdXIgcHJlc2VudGF0aW9uIHBv
aW50IHRvIHRha2UgaW50byBhY2NvdW50IGEgY2hhbmdlIGluIGRvY3VtZW50IHNjYWxlLgogCkBA
IC0yOTMsNyArMjkzLDcgQEAgc3RhdGljIExTQXBwTGluayAqYXBwTGlua0ZvclVSTChOU1VSTCAq
dXJsKQogICAgIGNvbnN0IGF1dG8mIHBvc2l0aW9uSW5mb3JtYXRpb24gPSBbZGVsZWdhdGUgcG9z
aXRpb25JbmZvcm1hdGlvbkZvckFjdGlvblNoZWV0QXNzaXN0YW50OnNlbGZdOwogCiAgICAgTlNV
UkwgKnRhcmdldFVSTCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6cG9zaXRpb25JbmZv
cm1hdGlvbi51cmxdOwotICAgIGF1dG8gZWxlbWVudEluZm8gPSBhZG9wdE5TKFtbX1dLQWN0aXZh
dGVkRWxlbWVudEluZm8gYWxsb2NdIF9pbml0V2l0aFR5cGU6X1dLQWN0aXZhdGVkRWxlbWVudFR5
cGVJbWFnZSBVUkw6dGFyZ2V0VVJMIGxvY2F0aW9uOnBvc2l0aW9uSW5mb3JtYXRpb24ucG9pbnQg
dGl0bGU6cG9zaXRpb25JbmZvcm1hdGlvbi50aXRsZSBJRDpwb3NpdGlvbkluZm9ybWF0aW9uLmlk
QXR0cmlidXRlIHJlY3Q6cG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMgaW1hZ2U6cG9zaXRpb25J
bmZvcm1hdGlvbi5pbWFnZS5nZXQoKV0pOworICAgIGF1dG8gZWxlbWVudEluZm8gPSBhZG9wdE5T
KFtbX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gYWxsb2NdIF9pbml0V2l0aFR5cGU6X1dLQWN0aXZh
dGVkRWxlbWVudFR5cGVJbWFnZSBVUkw6dGFyZ2V0VVJMIGxvY2F0aW9uOnBvc2l0aW9uSW5mb3Jt
YXRpb24ucmVxdWVzdC5wb2ludCB0aXRsZTpwb3NpdGlvbkluZm9ybWF0aW9uLnRpdGxlIElEOnBv
c2l0aW9uSW5mb3JtYXRpb24uaWRBdHRyaWJ1dGUgcmVjdDpwb3NpdGlvbkluZm9ybWF0aW9uLmJv
dW5kcyBpbWFnZTpwb3NpdGlvbkluZm9ybWF0aW9uLmltYWdlLmdldCgpXSk7CiAgICAgaWYgKFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFjdGlvblNoZWV0QXNzaXN0YW50
OnNob3dDdXN0b21TaGVldEZvckVsZW1lbnQ6KV0gJiYgW2RlbGVnYXRlIGFjdGlvblNoZWV0QXNz
aXN0YW50OnNlbGYgc2hvd0N1c3RvbVNoZWV0Rm9yRWxlbWVudDplbGVtZW50SW5mby5nZXQoKV0p
CiAgICAgICAgIHJldHVybjsKICAgICBhdXRvIGRlZmF1bHRBY3Rpb25zID0gW3NlbGYgZGVmYXVs
dEFjdGlvbnNGb3JJbWFnZVNoZWV0OmVsZW1lbnRJbmZvLmdldCgpXTsKQEAgLTQxMSw3ICs0MTEs
NyBAQCBzdGF0aWMgTFNBcHBMaW5rICphcHBMaW5rRm9yVVJMKE5TVVJMICp1cmwpCiAgICAgaWYg
KCF0YXJnZXRVUkwpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZWxlbWVudEluZm8gPSBh
ZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gYWxsb2NdIF9pbml0V2l0aFR5cGU6X1dL
QWN0aXZhdGVkRWxlbWVudFR5cGVMaW5rIFVSTDp0YXJnZXRVUkwgbG9jYXRpb246cG9zaXRpb25J
bmZvcm1hdGlvbi5wb2ludCB0aXRsZTpwb3NpdGlvbkluZm9ybWF0aW9uLnRpdGxlIElEOnBvc2l0
aW9uSW5mb3JtYXRpb24uaWRBdHRyaWJ1dGUgcmVjdDpwb3NpdGlvbkluZm9ybWF0aW9uLmJvdW5k
cyBpbWFnZTpwb3NpdGlvbkluZm9ybWF0aW9uLmltYWdlLmdldCgpXSk7CisgICAgYXV0byBlbGVt
ZW50SW5mbyA9IGFkb3B0TlMoW1tfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyBhbGxvY10gX2luaXRX
aXRoVHlwZTpfV0tBY3RpdmF0ZWRFbGVtZW50VHlwZUxpbmsgVVJMOnRhcmdldFVSTCBsb2NhdGlv
bjpwb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9pbnQgdGl0bGU6cG9zaXRpb25JbmZvcm1h
dGlvbi50aXRsZSBJRDpwb3NpdGlvbkluZm9ybWF0aW9uLmlkQXR0cmlidXRlIHJlY3Q6cG9zaXRp
b25JbmZvcm1hdGlvbi5ib3VuZHMgaW1hZ2U6cG9zaXRpb25JbmZvcm1hdGlvbi5pbWFnZS5nZXQo
KV0pOwogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY3Rp
b25TaGVldEFzc2lzdGFudDpzaG93Q3VzdG9tU2hlZXRGb3JFbGVtZW50OildICYmIFtkZWxlZ2F0
ZSBhY3Rpb25TaGVldEFzc2lzdGFudDpzZWxmIHNob3dDdXN0b21TaGVldEZvckVsZW1lbnQ6ZWxl
bWVudEluZm8uZ2V0KCldKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDJl
ZjE0MmM3YmFmOTZjZDlmMzJkYmM5ZTVkNGRiMDFkZDJjYWVlZmQuLjI1MDYyMWQzNjhmMTViMGJl
N2RjNzNiYjc5OThlYWI4NzY3OGM5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMTU5LDYgKzE1OSw4
IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAKICAgICBXZWJLaXQ6OldLU2VsZWN0
aW9uRHJhd2luZ0luZm8gX2xhc3RTZWxlY3Rpb25EcmF3aW5nSW5mbzsKIAorICAgIHN0ZDo6b3B0
aW9uYWw8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdD4gX291dHN0YW5kaW5n
UG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3Q7CisKICAgICBCT09MIF9pc0VkaXRhYmxlOwogICAg
IEJPT0wgX3Nob3dpbmdUZXh0U3R5bGVPcHRpb25zOwogICAgIEJPT0wgX2hhc1ZhbGlkUG9zaXRp
b25JbmZvcm1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZjJkYThlMTE1ZTEzYTZlMTY5YzQ5
MzFkNTE4Njg3ZGVkMzA2MGNhMi4uZDNjYjRlOTNjMGIzNzg4ZGEwNTk4ODU5NzFkZGVhNTc0NDk3
OWRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTExOTIsNyArMTE5Miw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29n
bml6ZXIgKmIsIFVJCiAgICAgaWYgKCFbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OnNob3dDdXN0b21TaGVldEZvckVsZW1lbnQ6KV0pCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gZWxlbWVudCA9IGFkb3B0TlMoW1tfV0tBY3RpdmF0ZWRFbGVtZW50
SW5mbyBhbGxvY10gX2luaXRXaXRoVHlwZTpfV0tBY3RpdmF0ZWRFbGVtZW50VHlwZUF0dGFjaG1l
bnQgVVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6X3Bvc2l0aW9uSW5mb3JtYXRpb24u
dXJsXSBsb2NhdGlvbjpfcG9zaXRpb25JbmZvcm1hdGlvbi5wb2ludCB0aXRsZTpfcG9zaXRpb25J
bmZvcm1hdGlvbi50aXRsZSBJRDpfcG9zaXRpb25JbmZvcm1hdGlvbi5pZEF0dHJpYnV0ZSByZWN0
Ol9wb3NpdGlvbkluZm9ybWF0aW9uLmJvdW5kcyBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIGVsZW1l
bnQgPSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gYWxsb2NdIF9pbml0V2l0aFR5
cGU6X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVBdHRhY2htZW50IFVSTDpbTlNVUkwgX3dlYl9VUkxX
aXRoV1RGU3RyaW5nOl9wb3NpdGlvbkluZm9ybWF0aW9uLnVybF0gbG9jYXRpb246X3Bvc2l0aW9u
SW5mb3JtYXRpb24ucmVxdWVzdC5wb2ludCB0aXRsZTpfcG9zaXRpb25JbmZvcm1hdGlvbi50aXRs
ZSBJRDpfcG9zaXRpb25JbmZvcm1hdGlvbi5pZEF0dHJpYnV0ZSByZWN0Ol9wb3NpdGlvbkluZm9y
bWF0aW9uLmJvdW5kcyBpbWFnZTpuaWxdKTsKICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2Vi
VmlldyBzaG93Q3VzdG9tU2hlZXRGb3JFbGVtZW50OmVsZW1lbnQuZ2V0KCldOwogfQogCkBAIC0x
MjI3LDEyICsxMjI3LDMyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVy
ZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAgICAgcmV0dXJuIG5p
bDsKIH0KIAotLSAodm9pZCllbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTooQ0dQ
b2ludClwb2ludAorLy8gRklYTUU6IFNob3VsZCBwcm9iYWJseSBtb3ZlIGFsbCBvZiB0aGlzIGxv
Z2ljIChhbmQgdGhlIHN0b3JhZ2UpIGludG8gV2ViUGFnZS4KKy0gKHZvaWQpZW5zdXJlUG9zaXRp
b25JbmZvcm1hdGlvbklzVXBUb0RhdGU6KFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJl
cXVlc3QpcmVxdWVzdAogewotICAgIGlmICghX2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbiB8
fCByb3VuZGVkSW50UG9pbnQocG9pbnQpICE9IF9wb3NpdGlvbkluZm9ybWF0aW9uLnBvaW50KSB7
Ci0gICAgICAgIF9wYWdlLT5nZXRQb3NpdGlvbkluZm9ybWF0aW9uKHJvdW5kZWRJbnRQb2ludChw
b2ludCksIF9wb3NpdGlvbkluZm9ybWF0aW9uKTsKLSAgICAgICAgX2hhc1ZhbGlkUG9zaXRpb25J
bmZvcm1hdGlvbiA9IFlFUzsKKyAgICBpZiAoX2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbiAm
JiBfcG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LmlzVmFsaWRGb3JSZXF1ZXN0KHJlcXVlc3Qp
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoX291dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1h
dGlvblJlcXVlc3QgJiYgX291dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3QtPmlz
VmFsaWRGb3JSZXF1ZXN0KHJlcXVlc3QpKSB7CisgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9u
ID0gX3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCkpIHsKKyAgICAgICAgICAgIGJvb2wgcmVj
ZWl2ZWRSZXBseSA9IGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uPihfcGFn
ZS0+cGFnZUlEKCksIFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoNTAwMCkpOyAvLyBob3cgbG9u
Zz8KKyAgICAgICAgICAgIGlmIChyZWNlaXZlZFJlcGx5KQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogICAgIH0KKworICAgIF9wYWdlLT5nZXRQb3NpdGlvbkluZm9ybWF0aW9u
KHJlcXVlc3QsIF9wb3NpdGlvbkluZm9ybWF0aW9uKTsKKyAgICBfaGFzVmFsaWRQb3NpdGlvbklu
Zm9ybWF0aW9uID0gWUVTOworfQorCistICh2b2lkKXJlcXVlc3RBc3luY2hyb25vdXNQb3NpdGlv
bkluZm9ybWF0aW9uVXBkYXRlOihXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
KXJlcXVlc3QKK3sKKyAgICBpZiAoX2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbiAmJiBfcG9z
aXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LmlzVmFsaWRGb3JSZXF1ZXN0KHJlcXVlc3QpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBfb3V0c3RhbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVz
dCA9IHJlcXVlc3Q7CisKKyAgICBfcGFnZS0+cmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24ocmVx
dWVzdCk7CiB9CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCkBAIC0xMjU1LDcgKzEyNzUs
OCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICph
LCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogICAgICAgICBpZiAoX3RleHRTZWxlY3Rpb25B
c3Npc3RhbnQpIHsKICAgICAgICAgICAgIC8vIFJlcXVlc3QgaW5mb3JtYXRpb24gYWJvdXQgdGhl
IHBvc2l0aW9uIHdpdGggc3luYyBtZXNzYWdlLgogICAgICAgICAgICAgLy8gSWYgdGhlIGFzc2lz
dGVkIG5vZGUgaXMgdGhlIHNhbWUsIHByZXZlbnQgdGhlIGdlc3R1cmUuCi0gICAgICAgICAgICBf
cGFnZS0+Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihyb3VuZGVkSW50UG9pbnQocG9pbnQpLCBfcG9z
aXRpb25JbmZvcm1hdGlvbik7CisgICAgICAgICAgICBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVx
dWVzdCByZXF1ZXN0KHJvdW5kZWRJbnRQb2ludChwb2ludCkpOworICAgICAgICAgICAgX3BhZ2Ut
PmdldFBvc2l0aW9uSW5mb3JtYXRpb24ocmVxdWVzdCwgX3Bvc2l0aW9uSW5mb3JtYXRpb24pOwog
ICAgICAgICAgICAgX2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbiA9IFlFUzsKICAgICAgICAg
ICAgIGlmIChfcG9zaXRpb25JbmZvcm1hdGlvbi5ub2RlQXRQb3NpdGlvbklzQXNzaXN0ZWROb2Rl
KQogICAgICAgICAgICAgICAgIHJldHVybiBOTzsKQEAgLTEyNzQsNyArMTI5NSwxNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdlc3R1
cmVSZWNvZ25pemVyICpiLCBVSQogICAgICAgICAgICAgLy8gV2Ugc3RpbGwgaGF2ZSBubyBpZGVh
IGFib3V0IHdoYXQgaXMgYXQgdGhlIGxvY2F0aW9uLgogICAgICAgICAgICAgLy8gU2VuZCBhbmQg
YXN5bmMgbWVzc2FnZSB0byBmaW5kIG91dC4KICAgICAgICAgICAgIF9oYXNWYWxpZFBvc2l0aW9u
SW5mb3JtYXRpb24gPSBOTzsKLSAgICAgICAgICAgIF9wYWdlLT5yZXF1ZXN0UG9zaXRpb25JbmZv
cm1hdGlvbihyb3VuZGVkSW50UG9pbnQocG9pbnQpKTsKKyAgICAgICAgICAgIEludGVyYWN0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3Qocm91bmRlZEludFBvaW50KHBvaW50KSk7CisKKyAg
ICAgICAgICAgIC8vIElmIDNEIFRvdWNoIGlzIGVuYWJsZWQsIGFzeW5jaHJvbm91c2x5IGNvbGxl
Y3Qgc25hcHNob3RzIGluIHRoZSBob3BlcyB0aGF0CisgICAgICAgICAgICAvLyB0aGV5J2xsIGFy
cml2ZSBiZWZvcmUgd2UgaGF2ZSB0byBzeW5jaHJvbm91c2x5IHJlcXVlc3QgdGhlbSBpbgorICAg
ICAgICAgICAgLy8gX2ludGVyYWN0aW9uU2hvdWxkQmVnaW5Gcm9tUHJldmlld0l0ZW1Db250cm9s
bGVyLgorICAgICAgICAgICAgaWYgKHNlbGYudHJhaXRDb2xsZWN0aW9uLmZvcmNlVG91Y2hDYXBh
YmlsaXR5ID09IFVJRm9yY2VUb3VjaENhcGFiaWxpdHlBdmFpbGFibGUpIHsKKyAgICAgICAgICAg
ICAgICByZXF1ZXN0LmluY2x1ZGVTbmFwc2hvdCA9IHRydWU7CisgICAgICAgICAgICAgICAgcmVx
dWVzdC5pbmNsdWRlTGlua0luZGljYXRvciA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIFtzZWxmIHJlcXVlc3RBc3luY2hyb25vdXNQb3NpdGlvbkluZm9ybWF0aW9uVXBkYXRl
OnJlcXVlc3RdOwogICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAgfQogICAgIH0KQEAg
LTEyODMsNyArMTMxNCw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVy
ZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAgICAgICAgIC8vIFVz
ZSB0aGUgaW5mb3JtYXRpb24gcmV0cmlldmVkIHdpdGggb25lIG9mIHRoZSBwcmV2aW91cyBjYWxs
cwogICAgICAgICAvLyB0byBnZXN0dXJlUmVjb2duaXplclNob3VsZEJlZ2luLgogICAgICAgICAv
LyBGb3JjZSBhIHN5bmMgY2FsbCBpZiBub3QgcmVhZHkgeWV0LgotICAgICAgICBbc2VsZiBlbnN1
cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTpwb2ludF07CisgICAgICAgIEludGVyYWN0
aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3Qocm91bmRlZEludFBvaW50KHBvaW50KSk7Cisg
ICAgICAgIFtzZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOnJlcXVlc3Rd
OwogCiAgICAgICAgIGlmIChfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCkgewogICAgICAgICAgICAg
Ly8gUHJldmVudCB0aGUgZ2VzdHVyZSBpZiBpdCBpcyB0aGUgc2FtZSBub2RlLgpAQCAtMTMyMywx
OSArMTM1NSwyMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNv
Z25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogICAgIGlmIChfaW5zcGVjdG9y
Tm9kZVNlYXJjaEVuYWJsZWQpCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIFtzZWxmIGVuc3Vy
ZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOnBvaW50XTsKKyAgICBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KHJvdW5kZWRJbnRQb2ludChwb2ludCkpOworICAgIFtz
ZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOnJlcXVlc3RdOwogICAgIHJl
dHVybiBfcG9zaXRpb25JbmZvcm1hdGlvbi5pc1NlbGVjdGFibGU7CiB9CiAKIC0gKEJPT0wpcG9p
bnRJc05lYXJNYXJrZWRUZXh0OihDR1BvaW50KXBvaW50CiB7Ci0gICAgW3NlbGYgZW5zdXJlUG9z
aXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cG9pbnRdOworICAgIEludGVyYWN0aW9uSW5mb3Jt
YXRpb25SZXF1ZXN0IHJlcXVlc3Qocm91bmRlZEludFBvaW50KHBvaW50KSk7CisgICAgW3NlbGYg
ZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cmVxdWVzdF07CiAgICAgcmV0dXJu
IF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzTmVhck1hcmtlZFRleHQ7CiB9CiAKIC0gKEJPT0wpcG9p
bnRJc0luQXNzaXN0ZWROb2RlOihDR1BvaW50KXBvaW50CiB7Ci0gICAgW3NlbGYgZW5zdXJlUG9z
aXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cG9pbnRdOworICAgIEludGVyYWN0aW9uSW5mb3Jt
YXRpb25SZXF1ZXN0IHJlcXVlc3Qocm91bmRlZEludFBvaW50KHBvaW50KSk7CisgICAgW3NlbGYg
ZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cmVxdWVzdF07CiAgICAgcmV0dXJu
IF9wb3NpdGlvbkluZm9ybWF0aW9uLm5vZGVBdFBvc2l0aW9uSXNBc3Npc3RlZE5vZGU7CiB9CiAK
QEAgLTE0NjUsNyArMTUwMCw3IEBAIHN0YXRpYyB2b2lkIGNhbmNlbFBvdGVudGlhbFRhcElmTmVj
ZXNzYXJ5KFdLQ29udGVudFZpZXcqIGNvbnRlbnRWaWV3KQogewogICAgIC8vIEZJWE1FOiB3ZSBz
aG91bGQgYWxzbyB0YWtlIGludG8gYWNjb3VudCB3aGV0aGVyIG9yIG5vdCB0aGUgVUkgZGVsZWdh
dGUKICAgICAvLyBoYXMgaGFuZGxlZCB0aGlzIG5vdGlmaWNhdGlvbi4KLSAgICBpZiAoX2hhc1Zh
bGlkUG9zaXRpb25JbmZvcm1hdGlvbiAmJiBwb2ludCA9PSBfcG9zaXRpb25JbmZvcm1hdGlvbi5w
b2ludCAmJiBfcG9zaXRpb25JbmZvcm1hdGlvbi5pc0RhdGFEZXRlY3RvckxpbmspIHsKKyAgICBp
ZiAoX2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbiAmJiBwb2ludCA9PSBfcG9zaXRpb25JbmZv
cm1hdGlvbi5yZXF1ZXN0LnBvaW50ICYmIF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzRGF0YURldGVj
dG9yTGluaykgewogICAgICAgICBbc2VsZiBfc2hvd0RhdGFEZXRlY3RvcnNTaGVldF07CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xNTgxLDcgKzE2MTYsMTIgQEAgc3RhdGljIHZvaWQgY2Fu
Y2VsUG90ZW50aWFsVGFwSWZOZWNlc3NhcnkoV0tDb250ZW50VmlldyogY29udGVudFZpZXcpCiAK
IC0gKHZvaWQpX3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6KGNvbnN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uJilpbmZvCiB7Ci0gICAgX3Bvc2l0aW9uSW5mb3JtYXRpb24g
PSBpbmZvOworICAgIF9vdXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0ID0gc3Rk
OjpudWxsb3B0OworCisgICAgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gbmV3SW5m
byA9IGluZm87CisgICAgbmV3SW5mby5jb3B5Rm9yd2FyZFZhbGlkQXVnbWVudGF0aW9ucyhfcG9z
aXRpb25JbmZvcm1hdGlvbik7CisKKyAgICBfcG9zaXRpb25JbmZvcm1hdGlvbiA9IG5ld0luZm87
CiAgICAgX2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbiA9IFlFUzsKICAgICBpZiAoX2FjdGlv
blNoZWV0QXNzaXN0YW50KQogICAgICAgICBbX2FjdGlvblNoZWV0QXNzaXN0YW50IHVwZGF0ZVNo
ZWV0UG9zaXRpb25dOwpAQCAtMzc2Niw3ICszODA2LDEwIEBAIHN0YXRpYyBib29sIGlzQXNzaXN0
YWJsZUlucHV0VHlwZShJbnB1dFR5cGUgdHlwZSkKIC0gKHZvaWQpdXBkYXRlUG9zaXRpb25JbmZv
cm1hdGlvbkZvckFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICop
YXNzaXN0YW50CiB7CiAgICAgX2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbiA9IE5POwotICAg
IF9wYWdlLT5yZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihfcG9zaXRpb25JbmZvcm1hdGlvbi5w
b2ludCk7CisgICAgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdChfcG9zaXRp
b25JbmZvcm1hdGlvbi5yZXF1ZXN0LnBvaW50KTsKKyAgICByZXF1ZXN0LmluY2x1ZGVTbmFwc2hv
dCA9IFlFUzsKKworICAgIFtzZWxmIHJlcXVlc3RBc3luY2hyb25vdXNQb3NpdGlvbkluZm9ybWF0
aW9uVXBkYXRlOnJlcXVlc3RdOwogfQogCiAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihX
S0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHBlcmZvcm1BY3Rpb246KFdlYktpdDo6
U2hlZXRBY3Rpb24pYWN0aW9uCkBAIC0zODE2LDcgKzM4NTksNyBAQCBzdGF0aWMgYm9vbCBpc0Fz
c2lzdGFibGVJbnB1dFR5cGUoSW5wdXRUeXBlIHR5cGUpCiAKIC0gKHZvaWQpYWN0aW9uU2hlZXRB
c3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgd2lsbFN0YXJ0SW50
ZXJhY3Rpb25XaXRoRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50CiB7
Ci0gICAgX3BhZ2UtPnN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24oX3Bvc2l0
aW9uSW5mb3JtYXRpb24ucG9pbnQpOworICAgIF9wYWdlLT5zdGFydEludGVyYWN0aW9uV2l0aEVs
ZW1lbnRBdFBvc2l0aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9pbnQpOwogfQog
CiAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50RGlkU3RvcEludGVyYWN0aW9uOihXS0FjdGlv
blNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50CkBAIC0zODk0LDEwICszOTM3LDEzIEBAIHN0YXRp
YyBib29sIGlzQXNzaXN0YWJsZUlucHV0VHlwZShJbnB1dFR5cGUgdHlwZSkKICAgICBpZiAoIV9o
aWdobGlnaHRMb25nUHJlc3NDYW5DbGljaykKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgW3Nl
bGYgZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cG9zaXRpb25dOworICAgIElu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3Qocm91bmRlZEludFBvaW50KHBvc2l0
aW9uKSk7CisgICAgcmVxdWVzdC5pbmNsdWRlU25hcHNob3QgPSB0cnVlOworICAgIHJlcXVlc3Qu
aW5jbHVkZUxpbmtJbmRpY2F0b3IgPSB0cnVlOworICAgIFtzZWxmIGVuc3VyZVBvc2l0aW9uSW5m
b3JtYXRpb25Jc1VwVG9EYXRlOnJlcXVlc3RdOwogICAgIGlmICghX3Bvc2l0aW9uSW5mb3JtYXRp
b24uaXNMaW5rICYmICFfcG9zaXRpb25JbmZvcm1hdGlvbi5pc0ltYWdlICYmICFfcG9zaXRpb25J
bmZvcm1hdGlvbi5pc0F0dGFjaG1lbnQpCiAgICAgICAgIHJldHVybiBOTzsKLSAgICAKKwogICAg
IFN0cmluZyBhYnNvbHV0ZUxpbmtVUkwgPSBfcG9zaXRpb25JbmZvcm1hdGlvbi51cmw7CiAgICAg
aWYgKF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzTGluaykgewogICAgICAgICBOU1VSTCAqdGFyZ2V0
VVJMID0gW05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpfcG9zaXRpb25JbmZvcm1hdGlvbi51
cmxdOwpAQCAtMzk4Niw3ICs0MDMyLDcgQEAgc3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRU
eXBlKElucHV0VHlwZSB0eXBlKQogICAgIH0gZWxzZSBpZiAoY2FuU2hvd0F0dGFjaG1lbnRQcmV2
aWV3KSB7CiAjaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAwMDAwCiAg
ICAgICAgICp0eXBlID0gVUlQcmV2aWV3SXRlbVR5cGVBdHRhY2htZW50OwotICAgICAgICBhdXRv
IGVsZW1lbnQgPSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gYWxsb2NdIF9pbml0
V2l0aFR5cGU6X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVBdHRhY2htZW50IFVSTDpbTlNVUkwgX3dl
Yl9VUkxXaXRoV1RGU3RyaW5nOl9wb3NpdGlvbkluZm9ybWF0aW9uLnVybF0gbG9jYXRpb246X3Bv
c2l0aW9uSW5mb3JtYXRpb24ucG9pbnQgdGl0bGU6X3Bvc2l0aW9uSW5mb3JtYXRpb24udGl0bGUg
SUQ6X3Bvc2l0aW9uSW5mb3JtYXRpb24uaWRBdHRyaWJ1dGUgcmVjdDpfcG9zaXRpb25JbmZvcm1h
dGlvbi5ib3VuZHMgaW1hZ2U6bmlsXSk7CisgICAgICAgIGF1dG8gZWxlbWVudCA9IGFkb3B0TlMo
W1tfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyBhbGxvY10gX2luaXRXaXRoVHlwZTpfV0tBY3RpdmF0
ZWRFbGVtZW50VHlwZUF0dGFjaG1lbnQgVVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6
X3Bvc2l0aW9uSW5mb3JtYXRpb24udXJsXSBsb2NhdGlvbjpfcG9zaXRpb25JbmZvcm1hdGlvbi5y
ZXF1ZXN0LnBvaW50IHRpdGxlOl9wb3NpdGlvbkluZm9ybWF0aW9uLnRpdGxlIElEOl9wb3NpdGlv
bkluZm9ybWF0aW9uLmlkQXR0cmlidXRlIHJlY3Q6X3Bvc2l0aW9uSW5mb3JtYXRpb24uYm91bmRz
IGltYWdlOm5pbF0pOwogICAgICAgICBOU1VJbnRlZ2VyIGluZGV4ID0gW3VpRGVsZWdhdGUgX3dl
YlZpZXc6X3dlYlZpZXcgaW5kZXhJbnRvQXR0YWNobWVudExpc3RGb3JFbGVtZW50OmVsZW1lbnQu
Z2V0KCldOwogICAgICAgICBpZiAoaW5kZXggIT0gTlNOb3RGb3VuZCkgewogICAgICAgICAgICAg
Qk9PTCBzb3VyY2VJc01hbmFnZWQgPSBOTzsKQEAgLTQwNDIsMTEgKzQwODgsMTEgQEAgc3RhdGlj
IE5TU3RyaW5nICpwcmV2aWV3SWRlbnRpZmllckZvckVsZW1lbnRBY3Rpb24oX1dLRWxlbWVudEFj
dGlvbiAqYWN0aW9uKQogCiAgICAgaWYgKFtfcHJldmlld0l0ZW1Db250cm9sbGVyIHR5cGVdID09
IFVJUHJldmlld0l0ZW1UeXBlTGluaykgewogICAgICAgICBfaGlnaGxpZ2h0TG9uZ1ByZXNzQ2Fu
Q2xpY2sgPSBOTzsKLSAgICAgICAgX3BhZ2UtPnN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0
UG9zaXRpb24oX3Bvc2l0aW9uSW5mb3JtYXRpb24ucG9pbnQpOworICAgICAgICBfcGFnZS0+c3Rh
cnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihfcG9zaXRpb25JbmZvcm1hdGlvbi5y
ZXF1ZXN0LnBvaW50KTsKIAogICAgICAgICAvLyBUcmVhdCBhbmltYXRlZCBpbWFnZXMgbGlrZSBh
IGxpbmsgcHJldmlldwogICAgICAgICBpZiAoaXNWYWxpZFVSTEZvckltYWdlUHJldmlldyAmJiBf
cG9zaXRpb25JbmZvcm1hdGlvbi5pc0FuaW1hdGVkSW1hZ2UpIHsKLSAgICAgICAgICAgIFJldGFp
blB0cjxfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbz4gYW5pbWF0ZWRJbWFnZUVsZW1lbnRJbmZvID0g
YWRvcHROUyhbW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIGFsbG9jXSBfaW5pdFdpdGhUeXBlOl9X
S0FjdGl2YXRlZEVsZW1lbnRUeXBlSW1hZ2UgVVJMOnRhcmdldFVSTCBsb2NhdGlvbjpfcG9zaXRp
b25JbmZvcm1hdGlvbi5wb2ludCB0aXRsZTpfcG9zaXRpb25JbmZvcm1hdGlvbi50aXRsZSBJRDpf
cG9zaXRpb25JbmZvcm1hdGlvbi5pZEF0dHJpYnV0ZSByZWN0Ol9wb3NpdGlvbkluZm9ybWF0aW9u
LmJvdW5kcyBpbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi5pbWFnZS5nZXQoKV0pOworICAgICAg
ICAgICAgUmV0YWluUHRyPF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvPiBhbmltYXRlZEltYWdlRWxl
bWVudEluZm8gPSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gYWxsb2NdIF9pbml0
V2l0aFR5cGU6X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVJbWFnZSBVUkw6dGFyZ2V0VVJMIGxvY2F0
aW9uOl9wb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9pbnQgdGl0bGU6X3Bvc2l0aW9uSW5m
b3JtYXRpb24udGl0bGUgSUQ6X3Bvc2l0aW9uSW5mb3JtYXRpb24uaWRBdHRyaWJ1dGUgcmVjdDpf
cG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMgaW1hZ2U6X3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1h
Z2UuZ2V0KCldKTsKIAogICAgICAgICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cHJldmlld1ZpZXdDb250cm9sbGVyRm9yQW5pbWF0ZWRJ
bWFnZUF0VVJMOmRlZmF1bHRBY3Rpb25zOmVsZW1lbnRJbmZvOmltYWdlU2l6ZTopXSkgewogICAg
ICAgICAgICAgICAgIFJldGFpblB0cjxOU0FycmF5PiBhY3Rpb25zID0gW19hY3Rpb25TaGVldEFz
c2lzdGFudCBkZWZhdWx0QWN0aW9uc0ZvckltYWdlU2hlZXQ6YW5pbWF0ZWRJbWFnZUVsZW1lbnRJ
bmZvLmdldCgpXTsKQEAgLTQwNTQsNyArNDEwMCw3IEBAIHN0YXRpYyBOU1N0cmluZyAqcHJldmll
d0lkZW50aWZpZXJGb3JFbGVtZW50QWN0aW9uKF9XS0VsZW1lbnRBY3Rpb24gKmFjdGlvbikKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxfV0tBY3RpdmF0ZWRF
bGVtZW50SW5mbz4gZWxlbWVudEluZm8gPSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVudElu
Zm8gYWxsb2NdIF9pbml0V2l0aFR5cGU6X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVMaW5rIFVSTDp0
YXJnZXRVUkwgbG9jYXRpb246X3Bvc2l0aW9uSW5mb3JtYXRpb24ucG9pbnQgdGl0bGU6X3Bvc2l0
aW9uSW5mb3JtYXRpb24udGl0bGUgSUQ6X3Bvc2l0aW9uSW5mb3JtYXRpb24uaWRBdHRyaWJ1dGUg
cmVjdDpfcG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMgaW1hZ2U6X3Bvc2l0aW9uSW5mb3JtYXRp
b24uaW1hZ2UuZ2V0KCldKTsKKyAgICAgICAgUmV0YWluUHRyPF9XS0FjdGl2YXRlZEVsZW1lbnRJ
bmZvPiBlbGVtZW50SW5mbyA9IGFkb3B0TlMoW1tfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyBhbGxv
Y10gX2luaXRXaXRoVHlwZTpfV0tBY3RpdmF0ZWRFbGVtZW50VHlwZUxpbmsgVVJMOnRhcmdldFVS
TCBsb2NhdGlvbjpfcG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LnBvaW50IHRpdGxlOl9wb3Np
dGlvbkluZm9ybWF0aW9uLnRpdGxlIElEOl9wb3NpdGlvbkluZm9ybWF0aW9uLmlkQXR0cmlidXRl
IHJlY3Q6X3Bvc2l0aW9uSW5mb3JtYXRpb24uYm91bmRzIGltYWdlOl9wb3NpdGlvbkluZm9ybWF0
aW9uLmltYWdlLmdldCgpXSk7CiAKICAgICAgICAgYXV0byBhY3Rpb25zID0gW19hY3Rpb25TaGVl
dEFzc2lzdGFudCBkZWZhdWx0QWN0aW9uc0ZvckxpbmtTaGVldDplbGVtZW50SW5mby5nZXQoKV07
CiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdl
YlZpZXc6cHJldmlld2luZ1ZpZXdDb250cm9sbGVyRm9yRWxlbWVudDpkZWZhdWx0QWN0aW9uczop
XSkgewpAQCAtNDA4Miw4ICs0MTI4LDggQEAgc3RhdGljIE5TU3RyaW5nICpwcmV2aWV3SWRlbnRp
ZmllckZvckVsZW1lbnRBY3Rpb24oX1dLRWxlbWVudEFjdGlvbiAqYWN0aW9uKQogICAgICAgICBp
ZiAoIWlzVmFsaWRVUkxGb3JJbWFnZVByZXZpZXcpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgICAgIFJldGFpblB0cjxfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbz4gZWxlbWVudEluZm8g
PSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gYWxsb2NdIF9pbml0V2l0aFR5cGU6
X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVJbWFnZSBVUkw6dGFyZ2V0VVJMIGxvY2F0aW9uOl9wb3Np
dGlvbkluZm9ybWF0aW9uLnBvaW50IHRpdGxlOl9wb3NpdGlvbkluZm9ybWF0aW9uLnRpdGxlIElE
Ol9wb3NpdGlvbkluZm9ybWF0aW9uLmlkQXR0cmlidXRlIHJlY3Q6X3Bvc2l0aW9uSW5mb3JtYXRp
b24uYm91bmRzIGltYWdlOl9wb3NpdGlvbkluZm9ybWF0aW9uLmltYWdlLmdldCgpXSk7Ci0gICAg
ICAgIF9wYWdlLT5zdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKF9wb3NpdGlv
bkluZm9ybWF0aW9uLnBvaW50KTsKKyAgICAgICAgUmV0YWluUHRyPF9XS0FjdGl2YXRlZEVsZW1l
bnRJbmZvPiBlbGVtZW50SW5mbyA9IGFkb3B0TlMoW1tfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyBh
bGxvY10gX2luaXRXaXRoVHlwZTpfV0tBY3RpdmF0ZWRFbGVtZW50VHlwZUltYWdlIFVSTDp0YXJn
ZXRVUkwgbG9jYXRpb246X3Bvc2l0aW9uSW5mb3JtYXRpb24ucmVxdWVzdC5wb2ludCB0aXRsZTpf
cG9zaXRpb25JbmZvcm1hdGlvbi50aXRsZSBJRDpfcG9zaXRpb25JbmZvcm1hdGlvbi5pZEF0dHJp
YnV0ZSByZWN0Ol9wb3NpdGlvbkluZm9ybWF0aW9uLmJvdW5kcyBpbWFnZTpfcG9zaXRpb25JbmZv
cm1hdGlvbi5pbWFnZS5nZXQoKV0pOworICAgICAgICBfcGFnZS0+c3RhcnRJbnRlcmFjdGlvbldp
dGhFbGVtZW50QXRQb3NpdGlvbihfcG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LnBvaW50KTsK
IAogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViVmlldzp3aWxsUHJldmlld0ltYWdlV2l0aFVSTDopXSkKICAgICAgICAgICAgIFt1aURlbGVn
YXRlIF93ZWJWaWV3Ol93ZWJWaWV3IHdpbGxQcmV2aWV3SW1hZ2VXaXRoVVJMOnRhcmdldFVSTF07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCmluZGV4IGRjYWM2OWYy
OTNhNTNjNGNhYjFjMWY2OTM4OGNlOWZjZTQxZDgxOWIuLmUwMzZjZjIxZjgwNzhmZjBmMzQ5YmYx
ZDcyNGNhNTQzNWNlMzRjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZW
aWV3Lm1tCkBAIC02OTAsOCArNjkwLDkgQEAgc3RhdGljIE5TU3RyaW5nQ29tcGFyZU9wdGlvbnMg
c3RyaW5nQ29tcGFyZU9wdGlvbnMoX1dLRmluZE9wdGlvbnMgb3B0aW9ucykKICAgICBpZiAoIXVy
bCkKICAgICAgICAgcmV0dXJuOwogCisgICAgX3Bvc2l0aW9uSW5mb3JtYXRpb24ucmVxdWVzdC5w
b2ludCA9IHJvdW5kZWRJbnRQb2ludChbY29udHJvbGxlci5wYWdlVmlldyBjb252ZXJ0UG9pbnQ6
cG9pbnQgdG9WaWV3OnNlbGZdKTsKKwogICAgIF9wb3NpdGlvbkluZm9ybWF0aW9uLnVybCA9IHVy
bC5hYnNvbHV0ZVN0cmluZzsKLSAgICBfcG9zaXRpb25JbmZvcm1hdGlvbi5wb2ludCA9IHJvdW5k
ZWRJbnRQb2ludChbY29udHJvbGxlci5wYWdlVmlldyBjb252ZXJ0UG9pbnQ6cG9pbnQgdG9WaWV3
OnNlbGZdKTsKICAgICBfcG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMgPSByb3VuZGVkSW50UmVj
dChbc2VsZiBjb252ZXJ0UmVjdDpbY29udHJvbGxlci5wYWdlVmlldyBjb252ZXJ0UmVjdEZyb21Q
REZQYWdlU3BhY2U6YW5ub3RhdGlvbi5SZWN0XSBmcm9tVmlldzpjb250cm9sbGVyLnBhZ2VWaWV3
XSk7CiAKICAgICBbc2VsZiBfaGlnaGxpZ2h0TGlua0Fubm90YXRpb246bGlua0Fubm90YXRpb24g
Zm9yRHVyYXRpb246Ljc1IGNvbXBsZXRpb25IYW5kbGVyOl57CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDdiN2JkNDhjZDBkNTY5ODU4
ZTQ3NTQ0YTk4NzhmMDVjZDQwMzYyMDIuLjg5NzNkMDIxNjE5NzNhZTNjMzBkZmMzMzFhNDg5NTcz
MGNhY2M4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCkBAIC02MjgsMTQgKzYyOCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVj
ZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UAog
ICAgIG1fcGFnZUNsaWVudC5wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGluZm8pOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9pbnQsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiBpbmZv
KQordm9pZCBXZWJQYWdlUHJveHk6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlc3QsIEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uJiBpbmZvKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldFBvc2l0aW9uSW5mb3JtYXRpb24ocG9pbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UG9zaXRpb25JbmZvcm1hdGlvbjo6UmVwbHkoaW5mbyksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQb3NpdGlvbkluZm9ybWF0aW9u
KHJlcXVlc3QpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UG9zaXRpb25JbmZvcm1hdGlvbjo6UmVw
bHkoaW5mbyksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb3Np
dGlvbkluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpyZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKHBvaW50KSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdFBvc2l0aW9u
SW5mb3JtYXRpb24ocmVxdWVzdCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDdlZTJmOTQwNDIxMDgwODg4YjEwY2I2ZWNlODAzNDlkMThlYTA1
ZTYuLjZjYjM4ODM3NWZiYTU0ZjAyNjViMzYyOTc0YzEwN2EyMDE3YmNkNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYyOCw2
ICs2MjgsOCBAQAogCQkyRDQyOUJGRDE3MjFFMkM3MDBFQzY4MUYgLyogUERGUGx1Z2luUGFzc3dv
cmRGaWVsZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJENDI5QkZCMTcyMUUyQkEwMEVDNjgxRiAvKiBQREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tICov
OyB9OwogCQkyRDQ3QjU2QzE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDQ3
QjU2QTE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gKi87IH07
CiAJCTJENDdCNTZEMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ0N0I1NkIx
ODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggKi87IH07CisJCTJE
NEQyQzgxMURGNjBCRjMwMDJFQjEwQyAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ0RDJDN0Yx
REY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmggKi87IH07
CisJCTJENEQyQzgyMURGNjBCRjMwMDJFQjEwQyAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVx
dWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RDREMkM4MDFERjYwQkYzMDAyRUIxMEMgLyogSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Qu
Y3BwICovOyB9OwogCQkyRDUwMzY1RTFCQ0M3OTNGMDBFMjBCQjMgLyogTmF0aXZlV2ViR2VzdHVy
ZUV2ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQ1MDM2NUQxQkNDNzkzRjAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudE1hYy5t
bSAqLzsgfTsKIAkJMkQ1MDM2NkIxQkNERTE3OTAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVF
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1
MDM2NkExQkNERTE3OTAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oICovOyB9Owog
CQkyRDUwMzY3NTFCQ0VEMTlGMDBFMjBCQjMgLyogV2ViR2VzdHVyZUV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENTAzNjczMUJDRUQxOUYw
MEUyMEJCMyAvKiBXZWJHZXN0dXJlRXZlbnQuY3BwICovOyB9OwpAQCAtMjY5Nyw2ICsyNjk5LDgg
QEAKIAkJMkQ0MjlCRkIxNzIxRTJCQTAwRUM2ODFGIC8qIFBERlBsdWdpblBhc3N3b3JkRmllbGQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBQREZQbHVnaW5QYXNz
d29yZEZpZWxkLm1tOyBwYXRoID0gUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENDdCNTZBMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRDQ3QjU2QjE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ0RDJDN0YxREY2MEJGMzAw
MkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Lmg7IHBhdGgg
PSBpb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMkQ0RDJDODAxREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3Jt
YXRpb25SZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmNwcDsgcGF0aCA9IGlvcy9JbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENTAz
NjVEMUJDQzc5M0YwMEUyMEJCMyAvKiBOYXRpdmVXZWJHZXN0dXJlRXZlbnRNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOYXRpdmVXZWJHZXN0dXJlRXZlbnRN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENTAzNjZBMUJDREUxNzkwMEUy
MEJCMyAvKiBOYXRpdmVXZWJHZXN0dXJlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTmF0aXZlV2ViR2VzdHVyZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJENTAzNjczMUJDRUQxOUYwMEUyMEJCMyAvKiBXZWJHZXN0dXJlRXZlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR2VzdHVyZUV2ZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMzgsNiArNTA0Miw4IEBACiAJCQkJMkRB
OTQ0OUQxODg0RTRGMDAwRUQ4NkRCIC8qIEdlc3R1cmVUeXBlcy5oICovLAogCQkJCUM1QkNFNURB
MUM1MDc2MUQwMENERTNGQSAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oICov
LAogCQkJCUM1QkNFNURCMUM1MDc2MUQwMENERTNGQSAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbi5tbSAqLywKKwkJCQkyRDREMkM3RjFERjYwQkYzMDAyRUIxMEMgLyogSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaCAqLywKKwkJCQkyRDREMkM4MDFERjYwQkYzMDAyRUIx
MEMgLyogSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuY3BwICovLAogCQkJCTJEQTk0NDk3
MTg4NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tICovLAogCQkJ
CTJEQTk0NDk4MTg4NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJUb3VjaEV2ZW50SU9TLm1tICov
LAogCQkJCUExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEu
Y3BwICovLApAQCAtNzkzNCw2ICs3OTQwLDcgQEAKIAkJCQkyREFGMDZENjE4QkQxQTQ3MDA4MUNF
QjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkRFNjk0M0UxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI3MkIyOEIxNDA2OTg1RDAwOTZBNUQwIC8q
IFN0YXRpc3RpY3NEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDREMkM4MTFERjYwQkYzMDAy
RUIxMEMgLyogSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxNEJERUQzMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFEMzMwNkYxNkIxRDk5MTAwNEY2MEU3IC8qIFN0b3JhZ2VBcmVhSW1w
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDRUNEMjUxNzE2MkRCMTAwMUZDOUVGIC8qIFN0b3Jh
Z2VBcmVhTWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTkxODYsNiArOTE5Myw3IEBACiAJCQkJNTFF
MzUyMDkxODBGNUQ2QjAwRTUzQkU5IC8qIERhdGFiYXNlU2VydmljZUVudHJ5UG9pbnQubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1MUUzNTIwMDE4MEY1RDBGMDBFNTNCRTkgLyogRGF0YWJhc2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDMyRjFEMTgwRjc5
MTcwMDk2MUJCNyAvKiBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkQ0RDJDODIxREY2MEJGMzAwMkVCMTBDIC8qIElu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1NUY5
MTcwMUM1OTVGNjMwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFDNzUzN0YxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkMwMzJEQTUxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCA5MDlkMmY5MTI2NmNkOGZkNTE5NjE4ZWQwZDFjNTdlMDkyZmZjNTk4Li5jMWU4
Y2ZkYWEwYjgzY2U5NzA4Y2Q2YmRjYjUyYjc4NTIwMWMwMjNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE5Nyw2ICsxOTcsNyBAQCBzdHJ1Y3Qg
RWRpdGluZ1JhbmdlOwogc3RydWN0IEVkaXRvclN0YXRlOwogY2xhc3MgR2FtZXBhZERhdGE7CiBz
dHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb247CitzdHJ1Y3QgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvblJlcXVlc3Q7CiBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUHJp
bnRJbmZvOwogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CkBAIC01NjEsOCArNTYy
LDggQEAgcHVibGljOgogICAgIHZvaWQgc3luY0FwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3Ry
aW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgYm9vbCYgY29ycmVj
dGlvbkFwcGxpZWQpOwogICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCh1aW50
NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGdldEF1dG9jb3JyZWN0aW9uQ29udGV4dChTdHJp
bmcmIGJlZm9yZVRleHQsIFN0cmluZyYgbWFya2VkVGV4dCwgU3RyaW5nJiBzZWxlY3RlZFRleHQs
IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgp
OwotICAgIHZvaWQgZ2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJik7Ci0gICAgdm9pZCByZXF1ZXN0
UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZvaWQg
Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dCYsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJik7CisgICAgdm9pZCByZXF1ZXN0
UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYp
OwogICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgc3RvcEludGVyYWN0aW9uKCk7CiAgICAgdm9p
ZCBwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4
IDIxN2JhZWM1ZmIyMDk3OGVlODQyYWNhZTU4OTJiOWMwMmI5OTAyZjkuLjgxZTZjM2FmOWE1Yzky
N2ZhYzkzZTM0ZDBlNDIxZGZmNjIzMzg3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC03Niw4ICs3Niw4IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN5bmNBcHBseUF1dG9j
b3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0aW9uLCBTdHJpbmcgb3JpZ2luYWxUZXh0KSAtPiAoYm9v
bCBhdXRvY29ycmVjdGlvbkFwcGxpZWQpCiAgICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dCh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIEdldEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpIC0+
IChTdHJpbmcgYmVmb3JlQ29udGV4dCwgU3RyaW5nIG1hcmtlZFRleHQsIFN0cmluZyBzZWxlY3Rl
ZFRleHQsIFN0cmluZyBhZnRlckNvbnRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBs
ZW5ndGgpIAotICAgIEdldFBvc2l0aW9uSW5mb3JtYXRpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9p
bnQpIC0+IChzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBp
bmZvcm1hdGlvbikKLSAgICBSZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCkKKyAgICBHZXRQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6Oklu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QpIC0+IChzdHJ1Y3QgV2ViS2l0OjpJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBpbmZvcm1hdGlvbikKKyAgICBSZXF1ZXN0
UG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9u
UmVxdWVzdCByZXF1ZXN0KQogICAgIFN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRp
b24oV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCiAgICAgU3RvcEludGVyYWN0aW9uKCkKICAgICBQ
ZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBiMTUyNzdm
MTNkY2YxNjE3NmRkZWZmMTIwY2YyZDc2NDZlZjM5MDU1Li5lNWFkMTdkYWM3ZmVmMjM5MzM4YjEy
MjIyYmQ5NmIxNjhmYmI1OGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC01OTgsNyArNTk4LDggQEAgdm9pZCBXZWJQ
YWdlOjpoYW5kbGVUYXAoY29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50NjRfdCBsYXN0TGF5ZXJU
cmVlVHJhbnNhY3Rpb24KICAgICBpZiAoIWZyYW1lUmVzcG9uZGluZ1RvQ2xpY2sgfHwgbGFzdExh
eWVyVHJlZVRyYW5zYWN0aW9uSWQgPCBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWVSZXNw
b25kaW5nVG9DbGljayktPmZpcnN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JREFmdGVyRGlkQ29tbWl0
TG9hZCgpKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZE5vdEhhbmRs
ZVRhcEFzQ2xpY2soYWRqdXN0ZWRJbnRQb2ludCkpOwogICAgIGVsc2UgaWYgKGlzPEVsZW1lbnQ+
KCpub2RlUmVzcG9uZGluZ1RvQ2xpY2spICYmIERhdGFEZXRlY3Rpb246OnNob3VsZENhbmNlbERl
ZmF1bHRBY3Rpb24oZG93bmNhc3Q8RWxlbWVudD4oKm5vZGVSZXNwb25kaW5nVG9DbGljaykpKSB7
Ci0gICAgICAgIHJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKGFkanVzdGVkSW50UG9pbnQpOwor
ICAgICAgICBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KGFkanVzdGVkSW50
UG9pbnQpOworICAgICAgICByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihyZXF1ZXN0KTsKICAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWROb3RIYW5kbGVUYXBBc0NsaWNr
KGFkanVzdGVkSW50UG9pbnQpKTsKICAgICB9IGVsc2UKICAgICAgICAgaGFuZGxlU3ludGhldGlj
Q2xpY2sobm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBhZGp1c3RlZFBvaW50KTsKQEAgLTY1OCw3ICs2
NTksOCBAQCB2b2lkIFdlYlBhZ2U6OmhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50NjRfdAogICAgIH0KICAgICBzZW5kVGFwSGlnaGxp
Z2h0Rm9yTm9kZUlmTmVjZXNzYXJ5KHJlcXVlc3RJRCwgbm9kZVJlc3BvbmRpbmdUb0NsaWNrKTsK
ICAgICBpZiAoaXM8RWxlbWVudD4oKm5vZGVSZXNwb25kaW5nVG9DbGljaykgJiYgRGF0YURldGVj
dGlvbjo6c2hvdWxkQ2FuY2VsRGVmYXVsdEFjdGlvbihkb3duY2FzdDxFbGVtZW50Pigqbm9kZVJl
c3BvbmRpbmdUb0NsaWNrKSkpIHsKLSAgICAgICAgcmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24o
cm91bmRlZEludFBvaW50KGFkanVzdGVkUG9pbnQpKTsKKyAgICAgICAgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvblJlcXVlc3QgcmVxdWVzdChyb3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQb2ludCkpOwor
ICAgICAgICByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihyZXF1ZXN0KTsKICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWROb3RIYW5kbGVUYXBBc0NsaWNrKHJvdW5kZWRJ
bnRQb2ludChhZGp1c3RlZFBvaW50KSkpOwogICAgIH0gZWxzZQogICAgICAgICBjb21wbGV0ZVN5
bnRoZXRpY0NsaWNrKG5vZGVSZXNwb25kaW5nVG9DbGljaywgYWRqdXN0ZWRQb2ludCwgV2ViQ29y
ZTo6VHdvRmluZ2VyVGFwKTsKQEAgLTY5Miw3ICs2OTQsOCBAQCB2b2lkIFdlYlBhZ2U6OmNvbW1p
dFBvdGVudGlhbFRhcCh1aW50NjRfdCBsYXN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JZCkKIAogICAg
IGlmIChtX3BvdGVudGlhbFRhcE5vZGUgPT0gbm9kZVJlc3BvbmRpbmdUb0NsaWNrKSB7CiAgICAg
ICAgIGlmIChpczxFbGVtZW50Pigqbm9kZVJlc3BvbmRpbmdUb0NsaWNrKSAmJiBEYXRhRGV0ZWN0
aW9uOjpzaG91bGRDYW5jZWxEZWZhdWx0QWN0aW9uKGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlUmVz
cG9uZGluZ1RvQ2xpY2spKSkgewotICAgICAgICAgICAgcmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRp
b24ocm91bmRlZEludFBvaW50KG1fcG90ZW50aWFsVGFwTG9jYXRpb24pKTsKKyAgICAgICAgICAg
IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3Qocm91bmRlZEludFBvaW50KG1f
cG90ZW50aWFsVGFwTG9jYXRpb24pKTsKKyAgICAgICAgICAgIHJlcXVlc3RQb3NpdGlvbkluZm9y
bWF0aW9uKHJlcXVlc3QpOwogICAgICAgICAgICAgY29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgaGFuZGxlU3ludGhldGljQ2xpY2sobm9kZVJl
c3BvbmRpbmdUb0NsaWNrLCBhZGp1c3RlZFBvaW50KTsKQEAgLTIyNzQsMTIgKzIyNzcsMTMgQEAg
c3RhdGljIEVsZW1lbnQqIGNvbnRhaW5pbmdMaW5rRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3Jt
YXRpb24oY29uc3QgSW50UG9pbnQmIHBvaW50LCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbiYgaW5mbykKK3ZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzdCwgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mIGluZm8pCiB7CisgICAgaW5mby5yZXF1ZXN0ID0gcmVxdWVzdDsKKwog
ICAgIEZsb2F0UG9pbnQgYWRqdXN0ZWRQb2ludDsKLSAgICBOb2RlKiBoaXROb2RlID0gbV9wYWdl
LT5tYWluRnJhbWUoKS5ub2RlUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMocG9pbnQsIGFkanVzdGVk
UG9pbnQpOworICAgIE5vZGUqIGhpdE5vZGUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLm5vZGVSZXNw
b25kaW5nVG9DbGlja0V2ZW50cyhyZXF1ZXN0LnBvaW50LCBhZGp1c3RlZFBvaW50KTsKIAotICAg
IGluZm8ucG9pbnQgPSBwb2ludDsKICAgICBpbmZvLm5vZGVBdFBvc2l0aW9uSXNBc3Npc3RlZE5v
ZGUgPSAoaGl0Tm9kZSA9PSBtX2Fzc2lzdGVkTm9kZSk7CiAgICAgaWYgKG1fYXNzaXN0ZWROb2Rl
KSB7CiAgICAgICAgIGNvbnN0IEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CkBAIC0yMjg3LDcgKzIyOTEsNyBAQCB2b2lkIFdlYlBh
Z2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50UG9pbnQmIHBvaW50LCBJbnRlcmFj
dGlvbkluZm9ybWF0aQogICAgICAgICAgICAgY29uc3QgdWludDMyX3Qga0hpdEFyZWFXaWR0aCA9
IDY2OwogICAgICAgICAgICAgY29uc3QgdWludDMyX3Qga0hpdEFyZWFIZWlnaHQgPSA2NjsKICAg
ICAgICAgICAgIEZyYW1lVmlldyYgdmlldyA9ICpmcmFtZS52aWV3KCk7Ci0gICAgICAgICAgICBJ
bnRQb2ludCBhZGp1c3RlZFBvaW50KHZpZXcucm9vdFZpZXdUb0NvbnRlbnRzKHBvaW50KSk7Cisg
ICAgICAgICAgICBJbnRQb2ludCBhZGp1c3RlZFBvaW50KHZpZXcucm9vdFZpZXdUb0NvbnRlbnRz
KHJlcXVlc3QucG9pbnQpKTsKICAgICAgICAgICAgIEludFBvaW50IGNvbnN0cmFpbmVkUG9pbnQg
PSBtX2Fzc2lzdGVkTm9kZSA/IGNvbnN0cmFpblBvaW50KGFkanVzdGVkUG9pbnQsIGZyYW1lLCAq
bV9hc3Npc3RlZE5vZGUpIDogYWRqdXN0ZWRQb2ludDsKICAgICAgICAgICAgIFZpc2libGVQb3Np
dGlvbiBwb3NpdGlvbiA9IGZyYW1lLnZpc2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0cmFpbmVk
UG9pbnQpOwogCkBAIC0yMjk3LDkgKzIzMDEsOSBAQCB2b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9u
SW5mb3JtYXRpb24oY29uc3QgSW50UG9pbnQmIHBvaW50LCBJbnRlcmFjdGlvbkluZm9ybWF0aQog
ICAgICAgICAgICAgZWxzZSBpZiAocG9zaXRpb24gPiBjb21wb3NpdGlvblJhbmdlLT5lbmRQb3Np
dGlvbigpKQogICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gY29tcG9zaXRpb25SYW5nZS0+ZW5k
UG9zaXRpb24oKTsKICAgICAgICAgICAgIEludFJlY3QgY2FyZXRSZWN0ID0gdmlldy5jb250ZW50
c1RvUm9vdFZpZXcocG9zaXRpb24uYWJzb2x1dGVDYXJldEJvdW5kcygpKTsKLSAgICAgICAgICAg
IGZsb2F0IGRlbHRhWCA9IGFicyhjYXJldFJlY3QueCgpICsgKGNhcmV0UmVjdC53aWR0aCgpIC8g
MikgLSBwb2ludC54KCkpOwotICAgICAgICAgICAgZmxvYXQgZGVsdGFZRnJvbVRoZVRvcCA9IGFi
cyhjYXJldFJlY3QueSgpIC0gcG9pbnQueSgpKTsKLSAgICAgICAgICAgIGZsb2F0IGRlbHRhWUZy
b21UaGVCb3R0b20gPSBhYnMoY2FyZXRSZWN0LnkoKSArIGNhcmV0UmVjdC5oZWlnaHQoKSAtIHBv
aW50LnkoKSk7CisgICAgICAgICAgICBmbG9hdCBkZWx0YVggPSBhYnMoY2FyZXRSZWN0LngoKSAr
IChjYXJldFJlY3Qud2lkdGgoKSAvIDIpIC0gcmVxdWVzdC5wb2ludC54KCkpOworICAgICAgICAg
ICAgZmxvYXQgZGVsdGFZRnJvbVRoZVRvcCA9IGFicyhjYXJldFJlY3QueSgpIC0gcmVxdWVzdC5w
b2ludC55KCkpOworICAgICAgICAgICAgZmxvYXQgZGVsdGFZRnJvbVRoZUJvdHRvbSA9IGFicyhj
YXJldFJlY3QueSgpICsgY2FyZXRSZWN0LmhlaWdodCgpIC0gcmVxdWVzdC5wb2ludC55KCkpOwog
CiAgICAgICAgICAgICBpbmZvLmlzTmVhck1hcmtlZFRleHQgPSAhKGRlbHRhWCA+IGtIaXRBcmVh
V2lkdGggfHwgZGVsdGFZRnJvbVRoZVRvcCA+IGtIaXRBcmVhSGVpZ2h0IHx8IGRlbHRhWUZyb21U
aGVCb3R0b20gPiBrSGl0QXJlYUhlaWdodCk7CiAgICAgICAgIH0KQEAgLTIzMjMsMjAgKzIzMjcs
MjYgQEAgdm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludFBvaW50
JiBwb2ludCwgSW50ZXJhY3Rpb25JbmZvcm1hdGkKICAgICAgICAgICAgICAgICBpZiAobGlua0Vs
ZW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICAgaW5mby5pc0xpbmsgPSB0cnVlOwogCi0gICAg
ICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBpbWFnZSBjb250YWlucyBhdCBtb3N0
IDYwMEsgcGl4ZWxzLCBzbyB0aGF0IGl0IGlzIG5vdCB0b28gYmlnLgotICAgICAgICAgICAgICAg
ICAgICBpZiAoUmVmUHRyPFdlYkltYWdlPiBzbmFwc2hvdCA9IHNuYXBzaG90Tm9kZSgqZWxlbWVu
dCwgU25hcHNob3RPcHRpb25zU2hhcmVhYmxlLCA2MDAgKiAxMDI0KSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGluZm8uaW1hZ2UgPSBzbmFwc2hvdC0+Yml0bWFwKCk7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChyZXF1ZXN0LmluY2x1ZGVTbmFwc2hvdCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGltYWdlIGNvbnRhaW5zIGF0IG1vc3QgNjAwSyBwaXhl
bHMsIHNvIHRoYXQgaXQgaXMgbm90IHRvbyBiaWcuCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoUmVmUHRyPFdlYkltYWdlPiBzbmFwc2hvdCA9IHNuYXBzaG90Tm9kZSgqZWxlbWVudCwgU25h
cHNob3RPcHRpb25zU2hhcmVhYmxlLCA2MDAgKiAxMDI0KSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmZvLmltYWdlID0gc25hcHNob3QtPmJpdG1hcCgpOworICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVlc3QuaW5jbHVkZUxpbmtJbmRp
Y2F0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbGlua1Jhbmdl
ID0gcmFuZ2VPZkNvbnRlbnRzKCpsaW5rRWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobGlua1JhbmdlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IgPSBjb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IG1hcmdpbkluUG9pbnRzID0gNDsKIAot
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGxpbmtSYW5nZSA9IHJhbmdlT2ZDb250
ZW50cygqbGlua0VsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICBpZiAobGlua1JhbmdlKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVQ
YWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBmbG9hdCBtYXJnaW5JblBvaW50cyA9IDQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVh
dGVXaXRoUmFuZ2UoKmxpbmtSYW5nZSwgVGV4dEluZGljYXRvck9wdGlvblRpZ2h0bHlGaXRDb250
ZW50IHwgVGV4dEluZGljYXRvck9wdGlvblJlc3BlY3RUZXh0Q29sb3IgfCBUZXh0SW5kaWNhdG9y
T3B0aW9uUGFpbnRCYWNrZ3JvdW5kcyB8IFRleHRJbmRpY2F0b3JPcHRpb25Vc2VCb3VuZGluZ1Jl
Y3RBbmRQYWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2VzIHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0
Y2hlc1NlbGVjdGlvbiwgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUs
IEZsb2F0U2l6ZShtYXJnaW5JblBvaW50cyAqIGRldmljZVNjYWxlRmFjdG9yLCBtYXJnaW5JblBv
aW50cyAqIGRldmljZVNjYWxlRmFjdG9yKSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIFJl
ZlB0cjxUZXh0SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRl
V2l0aFJhbmdlKCpsaW5rUmFuZ2UsIFRleHRJbmRpY2F0b3JPcHRpb25UaWdodGx5Rml0Q29udGVu
dCB8IFRleHRJbmRpY2F0b3JPcHRpb25SZXNwZWN0VGV4dENvbG9yIHwgVGV4dEluZGljYXRvck9w
dGlvblBhaW50QmFja2dyb3VuZHMgfCBUZXh0SW5kaWNhdG9yT3B0aW9uVXNlQm91bmRpbmdSZWN0
QW5kUGFpbnRBbGxDb250ZW50Rm9yQ29tcGxleFJhbmdlcyB8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1Nl
bGVjdGlvbiwgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUsIEZsb2F0
U2l6ZShtYXJnaW5JblBvaW50cyAqIGRldmljZVNjYWxlRmFjdG9yLCBtYXJnaW5JblBvaW50cyAq
IGRldmljZVNjYWxlRmFjdG9yKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4dElu
ZGljYXRvcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmxpbmtJbmRpY2F0b3Ig
PSB0ZXh0SW5kaWNhdG9yLT5kYXRhKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHRleHRJbmRpY2F0b3IpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8ubGlu
a0luZGljYXRvciA9IHRleHRJbmRpY2F0b3ItPmRhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQorCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9O
KQogICAgICAgICAgICAgICAgICAgICBpbmZvLmlzRGF0YURldGVjdG9yTGluayA9IERhdGFEZXRl
Y3Rpb246OmlzRGF0YURldGVjdG9yTGluaygqZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChpbmZvLmlzRGF0YURldGVjdG9yTGluaykgewpAQCAtMjQwMCw3ICsyNDEwLDcgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludFBvaW50JiBwb2ludCwg
SW50ZXJhY3Rpb25JbmZvcm1hdGkKICAgICB9CiAKICAgICBpZiAoIWVsZW1lbnRJc0xpbmtPcklt
YWdlKSB7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUo
KS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludCgocG9pbnQpLCBIaXRUZXN0UmVx
dWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6
OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0No
aWxkRnJhbWVDb250ZW50KTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KHJlcXVlc3Qu
cG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUg
fCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IHwgSGl0VGVz
dFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpOwogICAgICAgICBoaXROb2RlID0gcmVz
dWx0LmlubmVyTm9kZSgpOwogICAgICAgICAvLyBIaXQgdGVzdCBjb3VsZCByZXR1cm4gSFRNTEh0
bWxFbGVtZW50IHRoYXQgaGFzIG5vIHJlbmRlcmVyLCBpZiB0aGUgYm9keSBpcyBzbWFsbGVyIHRo
YW4gdGhlIGRvY3VtZW50LgogICAgICAgICBpZiAoaGl0Tm9kZSAmJiBoaXROb2RlLT5yZW5kZXJl
cigpKSB7CkBAIC0yNDIzLDExICsyNDMzLDExIEBAIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25J
bmZvcm1hdGlvbihjb25zdCBJbnRQb2ludCYgcG9pbnQsIEludGVyYWN0aW9uSW5mb3JtYXRpCiAg
ICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0
IEludFBvaW50JiBwb2ludCkKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRp
b24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gaW5mbzsKIAotICAgIGdldFBvc2l0aW9u
SW5mb3JtYXRpb24ocG9pbnQsIGluZm8pOworICAgIGdldFBvc2l0aW9uSW5mb3JtYXRpb24ocmVx
dWVzdCwgaW5mbyk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZl
UG9zaXRpb25JbmZvcm1hdGlvbihpbmZvKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296217</attachid>
            <date>2016-12-05 16:43:11 -0800</date>
            <delta_ts>2016-12-06 10:09:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165403-20161205164235.patch</filename>
            <type>text/plain</type>
            <size>53110</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTQ5MDk4YTBkMmQ1MGY0
YmRjZjE1NjgzMTEwYmM2N2UzYTgwYjhkOS4uODJhZGE1NzdjZjIwZDQ4YThlZGZlM2RkZGM5YmE1
ODNiZDE5OTZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxNi0xMi0wNSAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBBbG1vc3QgaGFs
Zi1zZWNvbmQgc3RhbGwgc2Nyb2xsaW5nIGFwcGxlLmNvbSBiZWNhdXNlIG9mIHN5bmNocm9ub3Vz
IGdldFBvc2l0aW9uSW5mb3JtYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NTQwMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk0OTMyODU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBy
ZXRyaWV2aW5nIGludGVyYWN0aW9uIGluZm9ybWF0aW9uLCB3ZSBkb24ndCBhbHdheXMgbmVlZCB0
byBkbworICAgICAgICBzbmFwc2hvdHMgZm9yIDNEIFRvdWNoIG9yIHRoZSBhY3Rpb24gc2hlZXQs
IGVzcGVjaWFsbHkgaWYgd2UncmUKKyAgICAgICAgc3luY2hyb25vdXNseSBibG9ja2luZyB0aGUg
VUkgcHJvY2VzcyBtYWluIHRocmVhZCB3YWl0aW5nIGZvciB0aGUgcmVwbHkuCisKKyAgICAgICAg
QWRkIGEgbmV3IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LCB3aGljaCBhbGxvd3MgY2Fs
bGVycyBvZgorICAgICAgICBnZXRQb3NpdGlvbkluZm9ybWF0aW9uIGFuZCByZXF1ZXN0UG9zaXRp
b25JbmZvcm1hdGlvbiB0byBzcGVjaWZ5IHdoaWNoCisgICAgICAgIG9wdGlvbmFsIHBpZWNlcyBv
ZiBpbmZvcm1hdGlvbiB0aGV5IHdvdWxkIGxpa2UgdG8gY29tcHV0ZS4KKworICAgICAgICAqIFNo
YXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oOgorICAgICAgICBGaXggYSBpbmNvcnJlY3Qg
Y29tbWVudC4KKworICAgICAgICAqIFNoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJl
cXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlv
blJlcXVlc3Q6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0
aW9uUmVxdWVzdDo6aXNWYWxpZEZvclJlcXVlc3QpOgorICAgICAgICAqIFNoYXJlZC9pb3MvSW50
ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oklu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dCk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICBBZGQgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QsIHdoaWNoIGVuY2Fwc3VsYXRlcyBh
bGwgb2YgdGhlCisgICAgICAgIHBhcmFtZXRlcnMgcmVxdWlyZWQgdG8gZ2VuZXJhdGUgYW4gSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uCisgICAgICAgIFByZXZpb3VzbHksIHRoYXQg
d2FzIGp1c3QgYSBwb2ludCwgYnV0IG5vdyB3ZSBoYXZlIHR3byBuZXcgcGFyYW1ldGVyczoKKyAg
ICAgICAgd2hldGhlciB3ZSBzaG91bGQgZ2VuZXJhdGUgYSBzbmFwc2hvdCBvZiB0aGUgZWxlbWVu
dCwgYW5kIHdoZXRoZXIKKyAgICAgICAgd2Ugc2hvdWxkIGdlbmVyYXRlIGEgVGV4dEluZGljYXRv
ciBpZiB0aGUgZWxlbWVudCBpcyBhIGxpbmsuCisKKyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmg6CisgICAgICAgICogU2hhcmVkL2lvcy9JbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6SW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0
OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjo6bWVyZ2VDb21wYXRpYmxlT3B0aW9u
YWxJbmZvcm1hdGlvbik6CisgICAgICAgIEFkb3B0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1
ZXN0LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW06CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXRB
c3Npc3RhbnQgaW5pdGlhbFByZXNlbnRhdGlvblJlY3RJbkhvc3RWaWV3Rm9yU2hlZXRdKToKKyAg
ICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCBwcmVzZW50YXRpb25SZWN0SW5Ib3N0Vmll
d0ZvclNoZWV0XSk6CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgc2hvd0ltYWdl
U2hlZXRdKToKKyAgICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCBzaG93TGlua1NoZWV0
XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW06CisgICAgICAgICgtW1dL
UERGVmlldyBhbm5vdGF0aW9uOmlzQmVpbmdQcmVzc2VkQXRQb2ludDpjb250cm9sbGVyOl0pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgIEFkb3B0IEludGVyYWN0
aW9uSW5mb3JtYXRpb25SZXF1ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG93
QXR0YWNobWVudFNoZWV0XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZW5zdXJlUG9zaXRp
b25JbmZvcm1hdGlvbklzVXBUb0RhdGU6XSk6CisgICAgICAgIElmIHdlIGhhdmUgYSBvdXRzdGFu
ZGluZyBhc3luY2hyb25vdXMgcG9zaXRpb24gaW5mb3JtYXRpb24gcmVxdWVzdAorICAgICAgICBm
b3IgdGhlIGN1cnJlbnQgcG9pbnQsIGluc3RlYWQgb2Ygc2VuZGluZyBhIHNlY29uZCBzZXBhcmF0
ZSByZXF1ZXN0LAorICAgICAgICBqdXN0IHdhaXQgZm9yIHRoZSBhc3luYyBvbmUgdG8gY29tZSBp
bi4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlcXVlc3RBc3luY2hyb25vdXNQb3NpdGlv
bkluZm9ybWF0aW9uVXBkYXRlOl0pOgorICAgICAgICBJZiBhc2tlZCB0byBkbyBhbiBhc3luY2hy
b25vdXMgcmVxdWVzdCB3aXRoIG1vcmUgb3B0aW9uYWwgYml0cyB0aGFuCisgICAgICAgIHRoZSBj
dXJyZW50IG90aGVyd2lzZS12YWxpZCByZXNwb25zZSdzIHJlcXVlc3QsIHVwZGF0ZSB0aGUgcG9z
aXRpb24gaW5mb3JtYXRpb24uCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBnZXN0dXJlUmVj
b2duaXplclNob3VsZEJlZ2luOl0pOgorICAgICAgICBUaGUgZGVzaWduIG9mIHRoaXMgbWVjaGFu
aXNtIGlzIHRoYXQgZHVyaW5nIHRoZSBoaWdobGlnaHQgbG9uZyBwcmVzcywKKyAgICAgICAgd2Ug
ZG8gYW4gYXN5bmMgcG9zaXRpb24gaW5mb3JtYXRpb24gdXBkYXRlLCBhbmQgdGhlbiB3aGVuIHdl
IGFjdHVhbGx5CisgICAgICAgIGJlZ2luIGEgM0QgVG91Y2ggZ2VzdHVyZSwgd2UgaG9wZSB0byBh
bHJlYWR5IGhhdmUgdGhlIHJlcXVpc2l0ZSBzbmFwc2hvdHMKKyAgICAgICAgcmVhZHkgKHNvIHRo
YXQgd2UgY2FuIGF2b2lkIHN5bmNocm9ub3VzbHkgYmxvY2tpbmcgZm9yIHRoZW0sIHRoZXJlKS4K
KyAgICAgICAgU28sIGluIHRoZSBoaWdobGlnaHQgbG9uZy1wcmVzcyBhc3luYyByZXF1ZXN0LCBh
c2sgZm9yIGFsbCB0aGUgZ29vZGllcy4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGhhc1Nl
bGVjdGFibGVQb3NpdGlvbkF0UG9pbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcG9p
bnRJc05lYXJNYXJrZWRUZXh0Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHBvaW50SXNJ
bkFzc2lzdGVkTm9kZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkTm90SGFuZGxl
VGFwQXNDbGljazpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1h
dGlvbkRpZENoYW5nZTpdKToKKyAgICAgICAgSWYgd2UgZ2V0IGEgcG9zaXRpb24gaW5mb3JtYXRp
b24gdXBkYXRlIGZvciB0aGUgc2FtZSBwb2ludCwgYnV0IHdpdGggbGVzcworICAgICAgICBnb29k
aWVzIGF0dGFjaGVkICh0aGUgc25hcHNob3QvbGluayBpbmRpY2F0b3IpLCBjb3B5IHRoZW0gb3Zl
ciBmcm9tIHRoZSBvbGQKKyAgICAgICAgcG9zaXRpb24gaW5mb3JtYXRpb24sIHNvIHRoYXQgd2Ug
bmV2ZXIgYWNjaWRlbnRhbGx5ICJkb3duZ3JhZGUiIG91ciBpbmZvLgorCisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgdXBkYXRlUG9zaXRpb25JbmZvcm1hdGlvbkZvckFjdGlvblNoZWV0QXNzaXN0
YW50Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50Ondp
bGxTdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX2ludGVyYWN0aW9uU2hvdWxkQmVnaW5Gcm9tUHJldmlld0l0ZW1Db250cm9sbGVyOmZvclBv
c2l0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kYXRhRm9yUHJldmlld0l0ZW1D
b250cm9sbGVyOmF0UG9zaXRpb246dHlwZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
cHJlc2VudGVkVmlld0NvbnRyb2xsZXJGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6ICAgICAg
ICAKKyAgICAgICAgTW9yZSBhZG9wdGlvbi4KKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpo
YW5kbGVUYXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVUd29GaW5nZXJUYXBB
dFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tbWl0UG90ZW50aWFsVGFwKToK
KyAgICAgICAgQWRvcHQgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuCisKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgQ29weSB0
aGUgcmVxdWVzdCBpbnRvIHRoZSByZXNwb25zZS4KKyAgICAgICAgT25seSBzbmFwc2hvdCBpZiB0
aGUgcmVxdWVzdCB3YW50cyBhIHNuYXBzaG90LgorICAgICAgICBPbmx5IG1ha2UgYSBsaW5rIGlu
ZGljYXRvciBpZiB0aGUgcmVxdWVzdCB3YW50cyBvbmUuCisKIDIwMTYtMTItMDUgIENzYWJhIE9z
enRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGNtYWtl
IGJ1aWxkZml4IGFmdGVyIHIyMDkzMDcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3Np
c3RlZE5vZGVJbmZvcm1hdGlvbi5oCmluZGV4IGEyNDYxOGRhZjdlZTE1YmI5NmIwMzFmNGEwNGY3
ZmEwODQ5NTIzOWIuLjExMGY5YWFhZGM1NTZjOWU0ZjhlZmY1YTU0ZmM4NGM4M2E0NDU1ZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oCkBA
IC0xMTksNCArMTE5LDQgQEAgc3RydWN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uIHsKIAogfQog
Ci0jZW5kaWYgLy8gSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb25faAorI2VuZGlmIC8v
IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaAppbmRleCAx
NzgyYjI1YWU1Y2I4MDM2MDFiY2U3ODg2NDNlZjM5MzYyMWE5MzhmLi5iOWMyZDhmMzlkNDRmNTE2
ZTllMzM1NjM2YTA3YTQ0OTA4YWI0MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oCkBAIC0y
MywxMiArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uX2gKLSNkZWZpbmUgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb25faAorI3ByYWdtYSBvbmNlCiAKICNpZiBQTEFU
Rk9STShJT1MpCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkludGVy
YWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VsZWN0
aW9uUmVjdC5oPgpAQCAtMzgsNyArMzgsOCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVj
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiB7Ci0gICAgV2ViQ29yZTo6SW50UG9p
bnQgcG9pbnQ7CisgICAgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdDsKKwog
ICAgIGJvb2wgbm9kZUF0UG9zaXRpb25Jc0Fzc2lzdGVkTm9kZSB7IGZhbHNlIH07CiAgICAgYm9v
bCBpc1NlbGVjdGFibGUgeyBmYWxzZSB9OwogICAgIGJvb2wgaXNOZWFyTWFya2VkVGV4dCB7IGZh
bHNlIH07CkBAIC02Niw2ICs2NywxMSBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24gewogICAgIFJldGFpblB0cjxOU0FycmF5PiBkYXRhRGV0ZWN0b3JSZXN1bHRzOwog
I2VuZGlmCiAKKyAgICAvLyBDb3B5IGNvbXBhdGlibGUgb3B0aW9uYWwgYml0cyBmb3J3YXJkIChm
b3IgZXhhbXBsZSwgaWYgd2UgaGF2ZSBhIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
CisgICAgLy8gd2l0aCBzbmFwc2hvdHMgaW4gaXQsIGFuZCBwZXJmb3JtIGFub3RoZXIgcmVxdWVz
dCBmb3IgdGhlIHNhbWUgcG9pbnQgd2l0aG91dCByZXF1ZXN0aW5nIHRoZSBzbmFwc2hvdHMsCisg
ICAgLy8gd2UgY2FuIGZldGNoIHRoZSBjaGVhcCBpbmZvcm1hdGlvbiBhbmQgY29weSB0aGUgc25h
cHNob3RzIGludG8gdGhlIG5ldyByZXNwb25zZSkuCisgICAgdm9pZCBtZXJnZUNvbXBhdGlibGVP
cHRpb25hbEluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
JiBvbGRJbmZvcm1hdGlvbik7CisKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25z
dDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24mKTsKIH07CkBAIC03Myw1ICs3OSwzIEBAIHN0cnVjdCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiB7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1Mp
Ci0KLSNlbmRpZiAvLyBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbi5tbQppbmRleCAzYTNkNWJiNDZhMmZhMzZhZDg2MDAyNGIwNDJkNWE4Y2Fh
M2ViYjdmLi5hNjRlNzliMTBhMDhlNDFkODg4OTc3YmUyY2MxYjhlY2MzZDM3YjJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24ubW0KQEAgLTQwLDcgKzQwLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIHZvaWQgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBwb2ludDsKKyAgICBlbmNv
ZGVyIDw8IHJlcXVlc3Q7CisKICAgICBlbmNvZGVyIDw8IG5vZGVBdFBvc2l0aW9uSXNBc3Npc3Rl
ZE5vZGU7CiAgICAgZW5jb2RlciA8PCBpc1NlbGVjdGFibGU7CiAgICAgZW5jb2RlciA8PCBpc05l
YXJNYXJrZWRUZXh0OwpAQCAtODAsNyArODEsNyBAQCB2b2lkIEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiBib29s
IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYgcmVzdWx0KQogewotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBvaW50KSkKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5yZXF1ZXN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQubm9kZUF0UG9zaXRpb25Jc0Fzc2lzdGVkTm9kZSkpCkBAIC0x
NjcsNiArMTY4LDE5IEBAIGJvb2wgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEludGVyYWN0aW9uCiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KLSNlbmRpZgorCit2b2lkIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOjpt
ZXJnZUNvbXBhdGlibGVPcHRpb25hbEluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uJiBvbGRJbmZvcm1hdGlvbikKK3sKKyAgICBpZiAob2xkSW5mb3JtYXRp
b24ucmVxdWVzdC5wb2ludCAhPSByZXF1ZXN0LnBvaW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAob2xkSW5mb3JtYXRpb24ucmVxdWVzdC5pbmNsdWRlU25hcHNob3QgJiYgIXJlcXVlc3Qu
aW5jbHVkZVNuYXBzaG90KQorICAgICAgICBpbWFnZSA9IG9sZEluZm9ybWF0aW9uLmltYWdlOwor
CisgICAgaWYgKG9sZEluZm9ybWF0aW9uLnJlcXVlc3QuaW5jbHVkZUxpbmtJbmRpY2F0b3IgJiYg
IXJlcXVlc3QuaW5jbHVkZUxpbmtJbmRpY2F0b3IpCisgICAgICAgIGxpbmtJbmRpY2F0b3IgPSBv
bGRJbmZvcm1hdGlvbi5saW5rSW5kaWNhdG9yOworfQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
KQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL0ludGVyYWN0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9pb3MvSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1MDAxOGIzMWUwNjEzYTI5
YzRkNjk0MDc4YTFjMjQxMGU2NDJiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmNwcApAQCAtMCwwICsx
LDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJJbnRlcmFj
dGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIgorCisjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgi
CisjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKyNpZiBQTEFURk9STShJT1MpCisKK3ZvaWQgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
c3Q6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8
PCBwb2ludDsKKyAgICBlbmNvZGVyIDw8IGluY2x1ZGVTbmFwc2hvdDsKKyAgICBlbmNvZGVyIDw8
IGluY2x1ZGVMaW5rSW5kaWNhdG9yOworfQorCitib29sIEludGVyYWN0aW9uSW5mb3JtYXRpb25S
ZXF1ZXN0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uUmVxdWVzdCYgcmVzdWx0KQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBv
aW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuaW5jbHVkZVNuYXBzaG90KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaW5jbHVkZUxpbmtJbmRpY2F0b3IpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdDo6aXNWYWxpZEZvclJlcXVlc3QoY29uc3QgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvblJlcXVlc3QmIG90aGVyKQoreworICAgIGlmIChvdGhlci5wb2ludCAhPSBwb2ludCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG90aGVyLmluY2x1ZGVTbmFwc2hvdCAm
JiAhaW5jbHVkZVNuYXBzaG90KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAob3Ro
ZXIuaW5jbHVkZUxpbmtJbmRpY2F0b3IgJiYgIWluY2x1ZGVMaW5rSW5kaWNhdG9yKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9JbnRl
cmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9J
bnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxMzllYzhlNmJmOTRk
NGQxYTJlMTU0NWE2YzBiMTM4ZjNmY2U3MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmgKQEAgLTAsMCAr
MSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oSU9TKQor
CisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWxl
Y3Rpb25SZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgeworICAgIFdlYkNvcmU6OkludFBvaW50IHBv
aW50OworCisgICAgYm9vbCBpbmNsdWRlU25hcHNob3QgeyBmYWxzZSB9OworICAgIGJvb2wgaW5j
bHVkZUxpbmtJbmRpY2F0b3IgeyBmYWxzZSB9OworCisgICAgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
blJlcXVlc3QoKSB7IH0KKyAgICBleHBsaWNpdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKKyAgICB7CisgICAgICAgIHRoaXMtPnBvaW50ID0g
cG9pbnQ7CisgICAgfQorCisgICAgYm9vbCBpc1ZhbGlkRm9yUmVxdWVzdChjb25zdCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uUmVxdWVzdCYpOworCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEludGVyYWN0
aW9uSW5mb3JtYXRpb25SZXF1ZXN0Jik7Cit9OworCit9CisKKyNlbmRpZiAvLyBQTEFURk9STShJ
T1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNmExNGQ2NGJm
MDYxZGNiODNhMTdlMTAyODRhMjUwNjQyNWQzMzE0NS4uODYxODAxZTkyYmMxYmNiMDJkODc3ODJm
Nzg4MGQ4ZDU1OTJkM2IwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMjEwLDYgKzIxMCw3IEBAIHN0cnVjdCBDb2xvclNwYWNlRGF0YTsKIHN0cnVjdCBFZGl0
aW5nUmFuZ2U7CiBzdHJ1Y3QgRWRpdG9yU3RhdGU7CiBjbGFzcyBHYW1lcGFkRGF0YTsKK3N0cnVj
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdDsKIHN0cnVjdCBMb2FkUGFyYW1ldGVyczsK
IHN0cnVjdCBQbGF0Zm9ybVBvcHVwTWVudURhdGE7CiBzdHJ1Y3QgUHJpbnRJbmZvOwpAQCAtNTEx
LDggKzUxMiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3Qg
U3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwogICAgIHZvaWQgcmVwbGFj
ZVNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4
dCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpOwotICAgIHZvaWQgZ2V0UG9zaXRpb25JbmZvcm1h
dGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uJik7Ci0gICAgdm9pZCByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYpOworICAgIHZvaWQgZ2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uJik7CisgICAgdm9pZCByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldp
dGhFbGVtZW50QXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQg
c3RvcEludGVyYWN0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQz
Ml90IGFjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
QWN0aW9uU2hlZXRBc3Npc3RhbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
QWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KaW5kZXggOWNhYzA2MTdlZTNiZTgwZmQ2OGU2NjkxMzkz
YWEyYzYyNTc3YmM5ZS4uYjVhMWEyMDBjZWNhZTBhZjA4MWM5NWExZDMwNjk4MGUyMmI5OWQwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNz
aXN0YW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVl
dEFzc2lzdGFudC5tbQpAQCAtMTU5LDcgKzE1OSw3IEBAIHN0YXRpYyBMU0FwcExpbmsgKmFwcExp
bmtGb3JVUkwoTlNVUkwgKnVybCkKICAgICBpZiAoIXZpZXcgfHwgIWRlbGVnYXRlKQogICAgICAg
ICByZXR1cm4gQ0dSZWN0WmVybzsKIAotICAgIHJldHVybiBbc2VsZiBfcHJlc2VudGF0aW9uUmVj
dEZvclNoZWV0R2l2ZW5Qb2ludDpbZGVsZWdhdGUgcG9zaXRpb25JbmZvcm1hdGlvbkZvckFjdGlv
blNoZWV0QXNzaXN0YW50OnNlbGZdLnBvaW50IGluSG9zdFZpZXc6dmlld107CisgICAgcmV0dXJu
IFtzZWxmIF9wcmVzZW50YXRpb25SZWN0Rm9yU2hlZXRHaXZlblBvaW50OltkZWxlZ2F0ZSBwb3Np
dGlvbkluZm9ybWF0aW9uRm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2VsZl0ucmVxdWVzdC5wb2lu
dCBpbkhvc3RWaWV3OnZpZXddOwogfQogCiAtIChDR1JlY3QpcHJlc2VudGF0aW9uUmVjdEluSG9z
dFZpZXdGb3JTaGVldApAQCAtMTcyLDcgKzE3Miw3IEBAIHN0YXRpYyBMU0FwcExpbmsgKmFwcExp
bmtGb3JVUkwoTlNVUkwgKnVybCkKICAgICBjb25zdCBhdXRvJiBwb3NpdGlvbkluZm9ybWF0aW9u
ID0gW2RlbGVnYXRlIHBvc2l0aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDpz
ZWxmXTsKIAogICAgIENHUmVjdCBib3VuZGluZ1JlY3QgPSBwb3NpdGlvbkluZm9ybWF0aW9uLmJv
dW5kczsKLSAgICBDR1BvaW50IGZyb21Qb2ludCA9IHBvc2l0aW9uSW5mb3JtYXRpb24ucG9pbnQ7
CisgICAgQ0dQb2ludCBmcm9tUG9pbnQgPSBwb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9p
bnQ7CiAKICAgICAvLyBGSVhNRTogV2UgbXVzdCBhZGp1c3Qgb3VyIHByZXNlbnRhdGlvbiBwb2lu
dCB0byB0YWtlIGludG8gYWNjb3VudCBhIGNoYW5nZSBpbiBkb2N1bWVudCBzY2FsZS4KIApAQCAt
MjkzLDcgKzI5Myw3IEBAIHN0YXRpYyBMU0FwcExpbmsgKmFwcExpbmtGb3JVUkwoTlNVUkwgKnVy
bCkKICAgICBjb25zdCBhdXRvJiBwb3NpdGlvbkluZm9ybWF0aW9uID0gW2RlbGVnYXRlIHBvc2l0
aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDpzZWxmXTsKIAogICAgIE5TVVJM
ICp0YXJnZXRVUkwgPSBbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnBvc2l0aW9uSW5mb3Jt
YXRpb24udXJsXTsKLSAgICBhdXRvIGVsZW1lbnRJbmZvID0gYWRvcHROUyhbW19XS0FjdGl2YXRl
ZEVsZW1lbnRJbmZvIGFsbG9jXSBfaW5pdFdpdGhUeXBlOl9XS0FjdGl2YXRlZEVsZW1lbnRUeXBl
SW1hZ2UgVVJMOnRhcmdldFVSTCBsb2NhdGlvbjpwb3NpdGlvbkluZm9ybWF0aW9uLnBvaW50IHRp
dGxlOnBvc2l0aW9uSW5mb3JtYXRpb24udGl0bGUgSUQ6cG9zaXRpb25JbmZvcm1hdGlvbi5pZEF0
dHJpYnV0ZSByZWN0OnBvc2l0aW9uSW5mb3JtYXRpb24uYm91bmRzIGltYWdlOnBvc2l0aW9uSW5m
b3JtYXRpb24uaW1hZ2UuZ2V0KCldKTsKKyAgICBhdXRvIGVsZW1lbnRJbmZvID0gYWRvcHROUyhb
W19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIGFsbG9jXSBfaW5pdFdpdGhUeXBlOl9XS0FjdGl2YXRl
ZEVsZW1lbnRUeXBlSW1hZ2UgVVJMOnRhcmdldFVSTCBsb2NhdGlvbjpwb3NpdGlvbkluZm9ybWF0
aW9uLnJlcXVlc3QucG9pbnQgdGl0bGU6cG9zaXRpb25JbmZvcm1hdGlvbi50aXRsZSBJRDpwb3Np
dGlvbkluZm9ybWF0aW9uLmlkQXR0cmlidXRlIHJlY3Q6cG9zaXRpb25JbmZvcm1hdGlvbi5ib3Vu
ZHMgaW1hZ2U6cG9zaXRpb25JbmZvcm1hdGlvbi5pbWFnZS5nZXQoKV0pOwogICAgIGlmIChbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY3Rpb25TaGVldEFzc2lzdGFudDpz
aG93Q3VzdG9tU2hlZXRGb3JFbGVtZW50OildICYmIFtkZWxlZ2F0ZSBhY3Rpb25TaGVldEFzc2lz
dGFudDpzZWxmIHNob3dDdXN0b21TaGVldEZvckVsZW1lbnQ6ZWxlbWVudEluZm8uZ2V0KCldKQog
ICAgICAgICByZXR1cm47CiAgICAgYXV0byBkZWZhdWx0QWN0aW9ucyA9IFtzZWxmIGRlZmF1bHRB
Y3Rpb25zRm9ySW1hZ2VTaGVldDplbGVtZW50SW5mby5nZXQoKV07CkBAIC00MTEsNyArNDExLDcg
QEAgc3RhdGljIExTQXBwTGluayAqYXBwTGlua0ZvclVSTChOU1VSTCAqdXJsKQogICAgIGlmICgh
dGFyZ2V0VVJMKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVsZW1lbnRJbmZvID0gYWRv
cHROUyhbW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIGFsbG9jXSBfaW5pdFdpdGhUeXBlOl9XS0Fj
dGl2YXRlZEVsZW1lbnRUeXBlTGluayBVUkw6dGFyZ2V0VVJMIGxvY2F0aW9uOnBvc2l0aW9uSW5m
b3JtYXRpb24ucG9pbnQgdGl0bGU6cG9zaXRpb25JbmZvcm1hdGlvbi50aXRsZSBJRDpwb3NpdGlv
bkluZm9ybWF0aW9uLmlkQXR0cmlidXRlIHJlY3Q6cG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMg
aW1hZ2U6cG9zaXRpb25JbmZvcm1hdGlvbi5pbWFnZS5nZXQoKV0pOworICAgIGF1dG8gZWxlbWVu
dEluZm8gPSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gYWxsb2NdIF9pbml0V2l0
aFR5cGU6X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVMaW5rIFVSTDp0YXJnZXRVUkwgbG9jYXRpb246
cG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LnBvaW50IHRpdGxlOnBvc2l0aW9uSW5mb3JtYXRp
b24udGl0bGUgSUQ6cG9zaXRpb25JbmZvcm1hdGlvbi5pZEF0dHJpYnV0ZSByZWN0OnBvc2l0aW9u
SW5mb3JtYXRpb24uYm91bmRzIGltYWdlOnBvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2UuZ2V0KCld
KTsKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWN0aW9u
U2hlZXRBc3Npc3RhbnQ6c2hvd0N1c3RvbVNoZWV0Rm9yRWxlbWVudDopXSAmJiBbZGVsZWdhdGUg
YWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2VsZiBzaG93Q3VzdG9tU2hlZXRGb3JFbGVtZW50OmVsZW1l
bnRJbmZvLmdldCgpXSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCAyZWYx
NDJjN2JhZjk2Y2Q5ZjMyZGJjOWU1ZDRkYjAxZGQyY2FlZWZkLi4yNTA2MjFkMzY4ZjE1YjBiZTdk
YzczYmI3OTk4ZWFiODc2NzhjOTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTE1OSw2ICsxNTksOCBA
QCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogCiAgICAgV2ViS2l0OjpXS1NlbGVjdGlv
bkRyYXdpbmdJbmZvIF9sYXN0U2VsZWN0aW9uRHJhd2luZ0luZm87CiAKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q+IF9vdXRzdGFuZGluZ1Bv
c2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0OworCiAgICAgQk9PTCBfaXNFZGl0YWJsZTsKICAgICBC
T09MIF9zaG93aW5nVGV4dFN0eWxlT3B0aW9uczsKICAgICBCT09MIF9oYXNWYWxpZFBvc2l0aW9u
SW5mb3JtYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGYyZGE4ZTExNWUxM2E2ZTE2OWM0OTMx
ZDUxODY4N2RlZDMwNjBjYTIuLjEzNGJjNzAzNWYyOGFiYWFmZTM1ZTllOTM5ZjYxYjJiN2E0OThh
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xMTkyLDcgKzExOTIsNyBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25p
emVyICpiLCBVSQogICAgIGlmICghW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlldzpzaG93Q3VzdG9tU2hlZXRGb3JFbGVtZW50OildKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVudElu
Zm8gYWxsb2NdIF9pbml0V2l0aFR5cGU6X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVBdHRhY2htZW50
IFVSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOl9wb3NpdGlvbkluZm9ybWF0aW9uLnVy
bF0gbG9jYXRpb246X3Bvc2l0aW9uSW5mb3JtYXRpb24ucG9pbnQgdGl0bGU6X3Bvc2l0aW9uSW5m
b3JtYXRpb24udGl0bGUgSUQ6X3Bvc2l0aW9uSW5mb3JtYXRpb24uaWRBdHRyaWJ1dGUgcmVjdDpf
cG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMgaW1hZ2U6bmlsXSk7CisgICAgYXV0byBlbGVtZW50
ID0gYWRvcHROUyhbW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIGFsbG9jXSBfaW5pdFdpdGhUeXBl
Ol9XS0FjdGl2YXRlZEVsZW1lbnRUeXBlQXR0YWNobWVudCBVUkw6W05TVVJMIF93ZWJfVVJMV2l0
aFdURlN0cmluZzpfcG9zaXRpb25JbmZvcm1hdGlvbi51cmxdIGxvY2F0aW9uOl9wb3NpdGlvbklu
Zm9ybWF0aW9uLnJlcXVlc3QucG9pbnQgdGl0bGU6X3Bvc2l0aW9uSW5mb3JtYXRpb24udGl0bGUg
SUQ6X3Bvc2l0aW9uSW5mb3JtYXRpb24uaWRBdHRyaWJ1dGUgcmVjdDpfcG9zaXRpb25JbmZvcm1h
dGlvbi5ib3VuZHMgaW1hZ2U6bmlsXSk7CiAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZp
ZXcgc2hvd0N1c3RvbVNoZWV0Rm9yRWxlbWVudDplbGVtZW50LmdldCgpXTsKIH0KIApAQCAtMTIy
NywxMiArMTIyNywzMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVS
ZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogICAgIHJldHVybiBuaWw7
CiB9CiAKLS0gKHZvaWQpZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6KENHUG9p
bnQpcG9pbnQKKy0gKHZvaWQpZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6KFdl
YktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QpcmVxdWVzdAogewotICAgIGlmICgh
X2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbiB8fCByb3VuZGVkSW50UG9pbnQocG9pbnQpICE9
IF9wb3NpdGlvbkluZm9ybWF0aW9uLnBvaW50KSB7Ci0gICAgICAgIF9wYWdlLT5nZXRQb3NpdGlv
bkluZm9ybWF0aW9uKHJvdW5kZWRJbnRQb2ludChwb2ludCksIF9wb3NpdGlvbkluZm9ybWF0aW9u
KTsKLSAgICAgICAgX2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbiA9IFlFUzsKKyAgICBpZiAo
X2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbiAmJiBfcG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1
ZXN0LmlzVmFsaWRGb3JSZXF1ZXN0KHJlcXVlc3QpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoX291dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3QgJiYgX291dHN0YW5kaW5n
UG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3QtPmlzVmFsaWRGb3JSZXF1ZXN0KHJlcXVlc3QpKSB7
CisgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gX3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0
aW9uKCkpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVk
aWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0
aW9uPihfcGFnZS0+cGFnZUlEKCksIFNlY29uZHM6OmluZmluaXR5KCkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAgICAgfQorCisgICAgX3BhZ2UtPmdldFBvc2l0aW9uSW5mb3Jt
YXRpb24ocmVxdWVzdCwgX3Bvc2l0aW9uSW5mb3JtYXRpb24pOworICAgIF9oYXNWYWxpZFBvc2l0
aW9uSW5mb3JtYXRpb24gPSBZRVM7Cit9CisKKy0gKHZvaWQpcmVxdWVzdEFzeW5jaHJvbm91c1Bv
c2l0aW9uSW5mb3JtYXRpb25VcGRhdGU6KFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJl
cXVlc3QpcmVxdWVzdAoreworICAgIGlmIChfaGFzVmFsaWRQb3NpdGlvbkluZm9ybWF0aW9uICYm
IF9wb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3QuaXNWYWxpZEZvclJlcXVlc3QocmVxdWVzdCkp
CisgICAgICAgIHJldHVybjsKKworICAgIF9vdXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25S
ZXF1ZXN0ID0gcmVxdWVzdDsKKworICAgIF9wYWdlLT5yZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlv
bihyZXF1ZXN0KTsKIH0KIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKQEAgLTEyNTUsNyAr
MTI3Myw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6
ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAgICAgICAgIGlmIChfdGV4dFNlbGVj
dGlvbkFzc2lzdGFudCkgewogICAgICAgICAgICAgLy8gUmVxdWVzdCBpbmZvcm1hdGlvbiBhYm91
dCB0aGUgcG9zaXRpb24gd2l0aCBzeW5jIG1lc3NhZ2UuCiAgICAgICAgICAgICAvLyBJZiB0aGUg
YXNzaXN0ZWQgbm9kZSBpcyB0aGUgc2FtZSwgcHJldmVudCB0aGUgZ2VzdHVyZS4KLSAgICAgICAg
ICAgIF9wYWdlLT5nZXRQb3NpdGlvbkluZm9ybWF0aW9uKHJvdW5kZWRJbnRQb2ludChwb2ludCks
IF9wb3NpdGlvbkluZm9ybWF0aW9uKTsKKyAgICAgICAgICAgIEludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0IHJlcXVlc3Qocm91bmRlZEludFBvaW50KHBvaW50KSk7CisgICAgICAgICAgICBf
cGFnZS0+Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihyZXF1ZXN0LCBfcG9zaXRpb25JbmZvcm1hdGlv
bik7CiAgICAgICAgICAgICBfaGFzVmFsaWRQb3NpdGlvbkluZm9ybWF0aW9uID0gWUVTOwogICAg
ICAgICAgICAgaWYgKF9wb3NpdGlvbkluZm9ybWF0aW9uLm5vZGVBdFBvc2l0aW9uSXNBc3Npc3Rl
ZE5vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5POwpAQCAtMTI3NCw3ICsxMjkzLDE3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJ
R2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAgICAgICAgICAgICAvLyBXZSBzdGlsbCBoYXZlIG5v
IGlkZWEgYWJvdXQgd2hhdCBpcyBhdCB0aGUgbG9jYXRpb24uCiAgICAgICAgICAgICAvLyBTZW5k
IGFuZCBhc3luYyBtZXNzYWdlIHRvIGZpbmQgb3V0LgogICAgICAgICAgICAgX2hhc1ZhbGlkUG9z
aXRpb25JbmZvcm1hdGlvbiA9IE5POwotICAgICAgICAgICAgX3BhZ2UtPnJlcXVlc3RQb3NpdGlv
bkluZm9ybWF0aW9uKHJvdW5kZWRJbnRQb2ludChwb2ludCkpOworICAgICAgICAgICAgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdChyb3VuZGVkSW50UG9pbnQocG9pbnQpKTsK
KworICAgICAgICAgICAgLy8gSWYgM0QgVG91Y2ggaXMgZW5hYmxlZCwgYXN5bmNocm9ub3VzbHkg
Y29sbGVjdCBzbmFwc2hvdHMgaW4gdGhlIGhvcGVzIHRoYXQKKyAgICAgICAgICAgIC8vIHRoZXkn
bGwgYXJyaXZlIGJlZm9yZSB3ZSBoYXZlIHRvIHN5bmNocm9ub3VzbHkgcmVxdWVzdCB0aGVtIGlu
CisgICAgICAgICAgICAvLyBfaW50ZXJhY3Rpb25TaG91bGRCZWdpbkZyb21QcmV2aWV3SXRlbUNv
bnRyb2xsZXIuCisgICAgICAgICAgICBpZiAoc2VsZi50cmFpdENvbGxlY3Rpb24uZm9yY2VUb3Vj
aENhcGFiaWxpdHkgPT0gVUlGb3JjZVRvdWNoQ2FwYWJpbGl0eUF2YWlsYWJsZSkgeworICAgICAg
ICAgICAgICAgIHJlcXVlc3QuaW5jbHVkZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICByZXF1ZXN0LmluY2x1ZGVMaW5rSW5kaWNhdG9yID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgW3NlbGYgcmVxdWVzdEFzeW5jaHJvbm91c1Bvc2l0aW9uSW5mb3JtYXRpb25V
cGRhdGU6cmVxdWVzdF07CiAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CiAgICAg
fQpAQCAtMTI4Myw3ICsxMzEyLDggQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlH
ZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKICAgICAgICAg
Ly8gVXNlIHRoZSBpbmZvcm1hdGlvbiByZXRyaWV2ZWQgd2l0aCBvbmUgb2YgdGhlIHByZXZpb3Vz
IGNhbGxzCiAgICAgICAgIC8vIHRvIGdlc3R1cmVSZWNvZ25pemVyU2hvdWxkQmVnaW4uCiAgICAg
ICAgIC8vIEZvcmNlIGEgc3luYyBjYWxsIGlmIG5vdCByZWFkeSB5ZXQuCi0gICAgICAgIFtzZWxm
IGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOnBvaW50XTsKKyAgICAgICAgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdChyb3VuZGVkSW50UG9pbnQocG9pbnQp
KTsKKyAgICAgICAgW3NlbGYgZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cmVx
dWVzdF07CiAKICAgICAgICAgaWYgKF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50KSB7CiAgICAgICAg
ICAgICAvLyBQcmV2ZW50IHRoZSBnZXN0dXJlIGlmIGl0IGlzIHRoZSBzYW1lIG5vZGUuCkBAIC0x
MzIzLDE5ICsxMzUzLDIyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVy
ZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAgICAgaWYgKF9pbnNw
ZWN0b3JOb2RlU2VhcmNoRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgW3NlbGYg
ZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cG9pbnRdOworICAgIEludGVyYWN0
aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3Qocm91bmRlZEludFBvaW50KHBvaW50KSk7Cisg
ICAgW3NlbGYgZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cmVxdWVzdF07CiAg
ICAgcmV0dXJuIF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzU2VsZWN0YWJsZTsKIH0KIAogLSAoQk9P
TClwb2ludElzTmVhck1hcmtlZFRleHQ6KENHUG9pbnQpcG9pbnQKIHsKLSAgICBbc2VsZiBlbnN1
cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTpwb2ludF07CisgICAgSW50ZXJhY3Rpb25J
bmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdChyb3VuZGVkSW50UG9pbnQocG9pbnQpKTsKKyAgICBb
c2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTpyZXF1ZXN0XTsKICAgICBy
ZXR1cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNOZWFyTWFya2VkVGV4dDsKIH0KIAogLSAoQk9P
TClwb2ludElzSW5Bc3Npc3RlZE5vZGU6KENHUG9pbnQpcG9pbnQKIHsKLSAgICBbc2VsZiBlbnN1
cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTpwb2ludF07CisgICAgSW50ZXJhY3Rpb25J
bmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdChyb3VuZGVkSW50UG9pbnQocG9pbnQpKTsKKyAgICBb
c2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTpyZXF1ZXN0XTsKICAgICBy
ZXR1cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb24ubm9kZUF0UG9zaXRpb25Jc0Fzc2lzdGVkTm9kZTsK
IH0KIApAQCAtMTQ2NSw3ICsxNDk4LDcgQEAgc3RhdGljIHZvaWQgY2FuY2VsUG90ZW50aWFsVGFw
SWZOZWNlc3NhcnkoV0tDb250ZW50VmlldyogY29udGVudFZpZXcpCiB7CiAgICAgLy8gRklYTUU6
IHdlIHNob3VsZCBhbHNvIHRha2UgaW50byBhY2NvdW50IHdoZXRoZXIgb3Igbm90IHRoZSBVSSBk
ZWxlZ2F0ZQogICAgIC8vIGhhcyBoYW5kbGVkIHRoaXMgbm90aWZpY2F0aW9uLgotICAgIGlmIChf
aGFzVmFsaWRQb3NpdGlvbkluZm9ybWF0aW9uICYmIHBvaW50ID09IF9wb3NpdGlvbkluZm9ybWF0
aW9uLnBvaW50ICYmIF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzRGF0YURldGVjdG9yTGluaykgewor
ICAgIGlmIChfaGFzVmFsaWRQb3NpdGlvbkluZm9ybWF0aW9uICYmIHBvaW50ID09IF9wb3NpdGlv
bkluZm9ybWF0aW9uLnJlcXVlc3QucG9pbnQgJiYgX3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNEYXRh
RGV0ZWN0b3JMaW5rKSB7CiAgICAgICAgIFtzZWxmIF9zaG93RGF0YURldGVjdG9yc1NoZWV0XTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1ODEsNyArMTYxNCwxMiBAQCBzdGF0aWMgdm9p
ZCBjYW5jZWxQb3RlbnRpYWxUYXBJZk5lY2Vzc2FyeShXS0NvbnRlbnRWaWV3KiBjb250ZW50Vmll
dykKIAogLSAodm9pZClfcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTooY29uc3QgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKWluZm8KIHsKLSAgICBfcG9zaXRpb25JbmZvcm1h
dGlvbiA9IGluZm87CisgICAgX291dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3Qg
PSBzdGQ6Om51bGxvcHQ7CisKKyAgICBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBu
ZXdJbmZvID0gaW5mbzsKKyAgICBuZXdJbmZvLm1lcmdlQ29tcGF0aWJsZU9wdGlvbmFsSW5mb3Jt
YXRpb24oX3Bvc2l0aW9uSW5mb3JtYXRpb24pOworCisgICAgX3Bvc2l0aW9uSW5mb3JtYXRpb24g
PSBuZXdJbmZvOwogICAgIF9oYXNWYWxpZFBvc2l0aW9uSW5mb3JtYXRpb24gPSBZRVM7CiAgICAg
aWYgKF9hY3Rpb25TaGVldEFzc2lzdGFudCkKICAgICAgICAgW19hY3Rpb25TaGVldEFzc2lzdGFu
dCB1cGRhdGVTaGVldFBvc2l0aW9uXTsKQEAgLTM3NjYsNyArMzgwNCwxMCBAQCBzdGF0aWMgYm9v
bCBpc0Fzc2lzdGFibGVJbnB1dFR5cGUoSW5wdXRUeXBlIHR5cGUpCiAtICh2b2lkKXVwZGF0ZVBv
c2l0aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFz
c2lzdGFudCAqKWFzc2lzdGFudAogewogICAgIF9oYXNWYWxpZFBvc2l0aW9uSW5mb3JtYXRpb24g
PSBOTzsKLSAgICBfcGFnZS0+cmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oX3Bvc2l0aW9uSW5m
b3JtYXRpb24ucG9pbnQpOworICAgIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVl
c3QoX3Bvc2l0aW9uSW5mb3JtYXRpb24ucmVxdWVzdC5wb2ludCk7CisgICAgcmVxdWVzdC5pbmNs
dWRlU25hcHNob3QgPSBZRVM7CisKKyAgICBbc2VsZiByZXF1ZXN0QXN5bmNocm9ub3VzUG9zaXRp
b25JbmZvcm1hdGlvblVwZGF0ZTpyZXF1ZXN0XTsKIH0KIAogLSAodm9pZClhY3Rpb25TaGVldEFz
c2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBwZXJmb3JtQWN0aW9u
OihXZWJLaXQ6OlNoZWV0QWN0aW9uKWFjdGlvbgpAQCAtMzgxNiw3ICszODU3LDcgQEAgc3RhdGlj
IGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBlKElucHV0VHlwZSB0eXBlKQogCiAtICh2b2lkKWFj
dGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHdp
bGxTdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICop
ZWxlbWVudAogewotICAgIF9wYWdlLT5zdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0
aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9uLnBvaW50KTsKKyAgICBfcGFnZS0+c3RhcnRJbnRlcmFj
dGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihfcG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LnBv
aW50KTsKIH0KIAogLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudERpZFN0b3BJbnRlcmFjdGlv
bjooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudApAQCAtMzg5NCwxMCArMzkzNSwx
MyBAQCBzdGF0aWMgYm9vbCBpc0Fzc2lzdGFibGVJbnB1dFR5cGUoSW5wdXRUeXBlIHR5cGUpCiAg
ICAgaWYgKCFfaGlnaGxpZ2h0TG9uZ1ByZXNzQ2FuQ2xpY2spCiAgICAgICAgIHJldHVybiBOTzsK
IAotICAgIFtzZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOnBvc2l0aW9u
XTsKKyAgICBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KHJvdW5kZWRJbnRQ
b2ludChwb3NpdGlvbikpOworICAgIHJlcXVlc3QuaW5jbHVkZVNuYXBzaG90ID0gdHJ1ZTsKKyAg
ICByZXF1ZXN0LmluY2x1ZGVMaW5rSW5kaWNhdG9yID0gdHJ1ZTsKKyAgICBbc2VsZiBlbnN1cmVQ
b3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTpyZXF1ZXN0XTsKICAgICBpZiAoIV9wb3NpdGlv
bkluZm9ybWF0aW9uLmlzTGluayAmJiAhX3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNJbWFnZSAmJiAh
X3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNBdHRhY2htZW50KQogICAgICAgICByZXR1cm4gTk87Ci0g
ICAgCisKICAgICBTdHJpbmcgYWJzb2x1dGVMaW5rVVJMID0gX3Bvc2l0aW9uSW5mb3JtYXRpb24u
dXJsOwogICAgIGlmIChfcG9zaXRpb25JbmZvcm1hdGlvbi5pc0xpbmspIHsKICAgICAgICAgTlNV
UkwgKnRhcmdldFVSTCA9IFtOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6X3Bvc2l0aW9uSW5m
b3JtYXRpb24udXJsXTsKQEAgLTM5ODYsNyArNDAzMCw3IEBAIHN0YXRpYyBib29sIGlzQXNzaXN0
YWJsZUlucHV0VHlwZShJbnB1dFR5cGUgdHlwZSkKICAgICB9IGVsc2UgaWYgKGNhblNob3dBdHRh
Y2htZW50UHJldmlldykgewogI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMDAwMAogICAgICAgICAqdHlwZSA9IFVJUHJldmlld0l0ZW1UeXBlQXR0YWNobWVudDsKLSAg
ICAgICAgYXV0byBlbGVtZW50ID0gYWRvcHROUyhbW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIGFs
bG9jXSBfaW5pdFdpdGhUeXBlOl9XS0FjdGl2YXRlZEVsZW1lbnRUeXBlQXR0YWNobWVudCBVUkw6
W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpfcG9zaXRpb25JbmZvcm1hdGlvbi51cmxdIGxv
Y2F0aW9uOl9wb3NpdGlvbkluZm9ybWF0aW9uLnBvaW50IHRpdGxlOl9wb3NpdGlvbkluZm9ybWF0
aW9uLnRpdGxlIElEOl9wb3NpdGlvbkluZm9ybWF0aW9uLmlkQXR0cmlidXRlIHJlY3Q6X3Bvc2l0
aW9uSW5mb3JtYXRpb24uYm91bmRzIGltYWdlOm5pbF0pOworICAgICAgICBhdXRvIGVsZW1lbnQg
PSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gYWxsb2NdIF9pbml0V2l0aFR5cGU6
X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVBdHRhY2htZW50IFVSTDpbTlNVUkwgX3dlYl9VUkxXaXRo
V1RGU3RyaW5nOl9wb3NpdGlvbkluZm9ybWF0aW9uLnVybF0gbG9jYXRpb246X3Bvc2l0aW9uSW5m
b3JtYXRpb24ucmVxdWVzdC5wb2ludCB0aXRsZTpfcG9zaXRpb25JbmZvcm1hdGlvbi50aXRsZSBJ
RDpfcG9zaXRpb25JbmZvcm1hdGlvbi5pZEF0dHJpYnV0ZSByZWN0Ol9wb3NpdGlvbkluZm9ybWF0
aW9uLmJvdW5kcyBpbWFnZTpuaWxdKTsKICAgICAgICAgTlNVSW50ZWdlciBpbmRleCA9IFt1aURl
bGVnYXRlIF93ZWJWaWV3Ol93ZWJWaWV3IGluZGV4SW50b0F0dGFjaG1lbnRMaXN0Rm9yRWxlbWVu
dDplbGVtZW50LmdldCgpXTsKICAgICAgICAgaWYgKGluZGV4ICE9IE5TTm90Rm91bmQpIHsKICAg
ICAgICAgICAgIEJPT0wgc291cmNlSXNNYW5hZ2VkID0gTk87CkBAIC00MDQyLDExICs0MDg2LDEx
IEBAIHN0YXRpYyBOU1N0cmluZyAqcHJldmlld0lkZW50aWZpZXJGb3JFbGVtZW50QWN0aW9uKF9X
S0VsZW1lbnRBY3Rpb24gKmFjdGlvbikKIAogICAgIGlmIChbX3ByZXZpZXdJdGVtQ29udHJvbGxl
ciB0eXBlXSA9PSBVSVByZXZpZXdJdGVtVHlwZUxpbmspIHsKICAgICAgICAgX2hpZ2hsaWdodExv
bmdQcmVzc0NhbkNsaWNrID0gTk87Ci0gICAgICAgIF9wYWdlLT5zdGFydEludGVyYWN0aW9uV2l0
aEVsZW1lbnRBdFBvc2l0aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9uLnBvaW50KTsKKyAgICAgICAg
X3BhZ2UtPnN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24oX3Bvc2l0aW9uSW5m
b3JtYXRpb24ucmVxdWVzdC5wb2ludCk7CiAKICAgICAgICAgLy8gVHJlYXQgYW5pbWF0ZWQgaW1h
Z2VzIGxpa2UgYSBsaW5rIHByZXZpZXcKICAgICAgICAgaWYgKGlzVmFsaWRVUkxGb3JJbWFnZVBy
ZXZpZXcgJiYgX3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNBbmltYXRlZEltYWdlKSB7Ci0gICAgICAg
ICAgICBSZXRhaW5QdHI8X1dLQWN0aXZhdGVkRWxlbWVudEluZm8+IGFuaW1hdGVkSW1hZ2VFbGVt
ZW50SW5mbyA9IGFkb3B0TlMoW1tfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyBhbGxvY10gX2luaXRX
aXRoVHlwZTpfV0tBY3RpdmF0ZWRFbGVtZW50VHlwZUltYWdlIFVSTDp0YXJnZXRVUkwgbG9jYXRp
b246X3Bvc2l0aW9uSW5mb3JtYXRpb24ucG9pbnQgdGl0bGU6X3Bvc2l0aW9uSW5mb3JtYXRpb24u
dGl0bGUgSUQ6X3Bvc2l0aW9uSW5mb3JtYXRpb24uaWRBdHRyaWJ1dGUgcmVjdDpfcG9zaXRpb25J
bmZvcm1hdGlvbi5ib3VuZHMgaW1hZ2U6X3Bvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2UuZ2V0KCld
KTsKKyAgICAgICAgICAgIFJldGFpblB0cjxfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbz4gYW5pbWF0
ZWRJbWFnZUVsZW1lbnRJbmZvID0gYWRvcHROUyhbW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIGFs
bG9jXSBfaW5pdFdpdGhUeXBlOl9XS0FjdGl2YXRlZEVsZW1lbnRUeXBlSW1hZ2UgVVJMOnRhcmdl
dFVSTCBsb2NhdGlvbjpfcG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LnBvaW50IHRpdGxlOl9w
b3NpdGlvbkluZm9ybWF0aW9uLnRpdGxlIElEOl9wb3NpdGlvbkluZm9ybWF0aW9uLmlkQXR0cmli
dXRlIHJlY3Q6X3Bvc2l0aW9uSW5mb3JtYXRpb24uYm91bmRzIGltYWdlOl9wb3NpdGlvbkluZm9y
bWF0aW9uLmltYWdlLmdldCgpXSk7CiAKICAgICAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnByZXZpZXdWaWV3Q29udHJvbGxlckZv
ckFuaW1hdGVkSW1hZ2VBdFVSTDpkZWZhdWx0QWN0aW9uczplbGVtZW50SW5mbzppbWFnZVNpemU6
KV0pIHsKICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8TlNBcnJheT4gYWN0aW9ucyA9IFtfYWN0
aW9uU2hlZXRBc3Npc3RhbnQgZGVmYXVsdEFjdGlvbnNGb3JJbWFnZVNoZWV0OmFuaW1hdGVkSW1h
Z2VFbGVtZW50SW5mby5nZXQoKV07CkBAIC00MDU0LDcgKzQwOTgsNyBAQCBzdGF0aWMgTlNTdHJp
bmcgKnByZXZpZXdJZGVudGlmaWVyRm9yRWxlbWVudEFjdGlvbihfV0tFbGVtZW50QWN0aW9uICph
Y3Rpb24pCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8X1dL
QWN0aXZhdGVkRWxlbWVudEluZm8+IGVsZW1lbnRJbmZvID0gYWRvcHROUyhbW19XS0FjdGl2YXRl
ZEVsZW1lbnRJbmZvIGFsbG9jXSBfaW5pdFdpdGhUeXBlOl9XS0FjdGl2YXRlZEVsZW1lbnRUeXBl
TGluayBVUkw6dGFyZ2V0VVJMIGxvY2F0aW9uOl9wb3NpdGlvbkluZm9ybWF0aW9uLnBvaW50IHRp
dGxlOl9wb3NpdGlvbkluZm9ybWF0aW9uLnRpdGxlIElEOl9wb3NpdGlvbkluZm9ybWF0aW9uLmlk
QXR0cmlidXRlIHJlY3Q6X3Bvc2l0aW9uSW5mb3JtYXRpb24uYm91bmRzIGltYWdlOl9wb3NpdGlv
bkluZm9ybWF0aW9uLmltYWdlLmdldCgpXSk7CisgICAgICAgIFJldGFpblB0cjxfV0tBY3RpdmF0
ZWRFbGVtZW50SW5mbz4gZWxlbWVudEluZm8gPSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVu
dEluZm8gYWxsb2NdIF9pbml0V2l0aFR5cGU6X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVMaW5rIFVS
TDp0YXJnZXRVUkwgbG9jYXRpb246X3Bvc2l0aW9uSW5mb3JtYXRpb24ucmVxdWVzdC5wb2ludCB0
aXRsZTpfcG9zaXRpb25JbmZvcm1hdGlvbi50aXRsZSBJRDpfcG9zaXRpb25JbmZvcm1hdGlvbi5p
ZEF0dHJpYnV0ZSByZWN0Ol9wb3NpdGlvbkluZm9ybWF0aW9uLmJvdW5kcyBpbWFnZTpfcG9zaXRp
b25JbmZvcm1hdGlvbi5pbWFnZS5nZXQoKV0pOwogCiAgICAgICAgIGF1dG8gYWN0aW9ucyA9IFtf
YWN0aW9uU2hlZXRBc3Npc3RhbnQgZGVmYXVsdEFjdGlvbnNGb3JMaW5rU2hlZXQ6ZWxlbWVudElu
Zm8uZ2V0KCldOwogICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcih3ZWJWaWV3OnByZXZpZXdpbmdWaWV3Q29udHJvbGxlckZvckVsZW1lbnQ6ZGVmYXVs
dEFjdGlvbnM6KV0pIHsKQEAgLTQwODIsOCArNDEyNiw4IEBAIHN0YXRpYyBOU1N0cmluZyAqcHJl
dmlld0lkZW50aWZpZXJGb3JFbGVtZW50QWN0aW9uKF9XS0VsZW1lbnRBY3Rpb24gKmFjdGlvbikK
ICAgICAgICAgaWYgKCFpc1ZhbGlkVVJMRm9ySW1hZ2VQcmV2aWV3KQogICAgICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgICAgICBSZXRhaW5QdHI8X1dLQWN0aXZhdGVkRWxlbWVudEluZm8+IGVs
ZW1lbnRJbmZvID0gYWRvcHROUyhbW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIGFsbG9jXSBfaW5p
dFdpdGhUeXBlOl9XS0FjdGl2YXRlZEVsZW1lbnRUeXBlSW1hZ2UgVVJMOnRhcmdldFVSTCBsb2Nh
dGlvbjpfcG9zaXRpb25JbmZvcm1hdGlvbi5wb2ludCB0aXRsZTpfcG9zaXRpb25JbmZvcm1hdGlv
bi50aXRsZSBJRDpfcG9zaXRpb25JbmZvcm1hdGlvbi5pZEF0dHJpYnV0ZSByZWN0Ol9wb3NpdGlv
bkluZm9ybWF0aW9uLmJvdW5kcyBpbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi5pbWFnZS5nZXQo
KV0pOwotICAgICAgICBfcGFnZS0+c3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlv
bihfcG9zaXRpb25JbmZvcm1hdGlvbi5wb2ludCk7CisgICAgICAgIFJldGFpblB0cjxfV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mbz4gZWxlbWVudEluZm8gPSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxl
bWVudEluZm8gYWxsb2NdIF9pbml0V2l0aFR5cGU6X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVJbWFn
ZSBVUkw6dGFyZ2V0VVJMIGxvY2F0aW9uOl9wb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9p
bnQgdGl0bGU6X3Bvc2l0aW9uSW5mb3JtYXRpb24udGl0bGUgSUQ6X3Bvc2l0aW9uSW5mb3JtYXRp
b24uaWRBdHRyaWJ1dGUgcmVjdDpfcG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMgaW1hZ2U6X3Bv
c2l0aW9uSW5mb3JtYXRpb24uaW1hZ2UuZ2V0KCldKTsKKyAgICAgICAgX3BhZ2UtPnN0YXJ0SW50
ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24oX3Bvc2l0aW9uSW5mb3JtYXRpb24ucmVxdWVz
dC5wb2ludCk7CiAKICAgICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6d2lsbFByZXZpZXdJbWFnZVdpdGhVUkw6KV0pCiAgICAgICAgICAg
ICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyB3aWxsUHJldmlld0ltYWdlV2l0aFVSTDp0
YXJnZXRVUkxdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BE
RlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQppbmRl
eCBkY2FjNjlmMjkzYTUzYzRjYWIxYzFmNjkzODhjZTlmY2U0MWQ4MTliLi5lMDM2Y2YyMWY4MDc4
ZmYwZjM0OWJmMWQ3MjRjYTU0MzVjZTM0YzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLUERGVmlldy5tbQpAQCAtNjkwLDggKzY5MCw5IEBAIHN0YXRpYyBOU1N0cmluZ0NvbXBh
cmVPcHRpb25zIHN0cmluZ0NvbXBhcmVPcHRpb25zKF9XS0ZpbmRPcHRpb25zIG9wdGlvbnMpCiAg
ICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybjsKIAorICAgIF9wb3NpdGlvbkluZm9ybWF0aW9u
LnJlcXVlc3QucG9pbnQgPSByb3VuZGVkSW50UG9pbnQoW2NvbnRyb2xsZXIucGFnZVZpZXcgY29u
dmVydFBvaW50OnBvaW50IHRvVmlldzpzZWxmXSk7CisKICAgICBfcG9zaXRpb25JbmZvcm1hdGlv
bi51cmwgPSB1cmwuYWJzb2x1dGVTdHJpbmc7Ci0gICAgX3Bvc2l0aW9uSW5mb3JtYXRpb24ucG9p
bnQgPSByb3VuZGVkSW50UG9pbnQoW2NvbnRyb2xsZXIucGFnZVZpZXcgY29udmVydFBvaW50OnBv
aW50IHRvVmlldzpzZWxmXSk7CiAgICAgX3Bvc2l0aW9uSW5mb3JtYXRpb24uYm91bmRzID0gcm91
bmRlZEludFJlY3QoW3NlbGYgY29udmVydFJlY3Q6W2NvbnRyb2xsZXIucGFnZVZpZXcgY29udmVy
dFJlY3RGcm9tUERGUGFnZVNwYWNlOmFubm90YXRpb24uUmVjdF0gZnJvbVZpZXc6Y29udHJvbGxl
ci5wYWdlVmlld10pOwogCiAgICAgW3NlbGYgX2hpZ2hsaWdodExpbmtBbm5vdGF0aW9uOmxpbmtB
bm5vdGF0aW9uIGZvckR1cmF0aW9uOi43NSBjb21wbGV0aW9uSGFuZGxlcjpeewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA3YjdiZDQ4
Y2QwZDU2OTg1OGU0NzU0NGE5ODc4ZjA1Y2Q0MDM2MjAyLi44OTczZDAyMTYxOTczYWUzYzMwZGZj
MzMxYTQ4OTU3MzBjYWNjODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNjI4LDE0ICs2MjgsMTQgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFAKICAgICBtX3BhZ2VDbGllbnQucG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShp
bmZvKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbiYgaW5mbykKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNv
bnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXN0LCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbiYgaW5mbykKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXRQb3NpdGlvbkluZm9ybWF0aW9uKHBvaW50KSwgTWVzc2FnZXM6
OldlYlBhZ2U6OkdldFBvc2l0aW9uSW5mb3JtYXRpb246OlJlcGx5KGluZm8pLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0UG9zaXRpb25J
bmZvcm1hdGlvbihyZXF1ZXN0KSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBvc2l0aW9uSW5mb3Jt
YXRpb246OlJlcGx5KGluZm8pLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihwb2ludCks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVl
c3RQb3NpdGlvbkluZm9ybWF0aW9uKHJlcXVlc3QpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZWUyZjk0MDQyMTA4MDg4OGIxMGNiNmVjZTgw
MzQ5ZDE4ZWEwNWU2Li42Y2IzODgzNzVmYmE1NGYwMjY1YjM2Mjk3NGMxMDdhMjAxN2JjZDQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC02MjgsNiArNjI4LDggQEAKIAkJMkQ0MjlCRkQxNzIxRTJDNzAwRUM2ODFGIC8qIFBERlBs
dWdpblBhc3N3b3JkRmllbGQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDQyOUJGQjE3MjFFMkJBMDBFQzY4MUYgLyogUERGUGx1Z2luUGFzc3dvcmRG
aWVsZC5tbSAqLzsgfTsKIAkJMkQ0N0I1NkMxODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkQ0N0I1NkExODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lm1tICovOyB9OwogCQkyRDQ3QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJENDdCNTZCMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oICov
OyB9OworCQkyRDREMkM4MTFERjYwQkYzMDAyRUIxMEMgLyogSW50ZXJhY3Rpb25JbmZvcm1hdGlv
blJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJENEQyQzdGMURGNjBCRjMwMDJFQjEwQyAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dC5oICovOyB9OworCQkyRDREMkM4MjFERjYwQkYzMDAyRUIxMEMgLyogSW50ZXJhY3Rpb25JbmZv
cm1hdGlvblJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkQ0RDJDODAxREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0LmNwcCAqLzsgfTsKIAkJMkQ1MDM2NUUxQkNDNzkzRjAwRTIwQkIzIC8qIE5hdGl2
ZVdlYkdlc3R1cmVFdmVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJENTAzNjVEMUJDQzc5M0YwMEUyMEJCMyAvKiBOYXRpdmVXZWJHZXN0dXJl
RXZlbnRNYWMubW0gKi87IH07CiAJCTJENTAzNjZCMUJDREUxNzkwMEUyMEJCMyAvKiBOYXRpdmVX
ZWJHZXN0dXJlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJENTAzNjZBMUJDREUxNzkwMEUyMEJCMyAvKiBOYXRpdmVXZWJHZXN0dXJlRXZlbnQu
aCAqLzsgfTsKIAkJMkQ1MDM2NzUxQkNFRDE5RjAwRTIwQkIzIC8qIFdlYkdlc3R1cmVFdmVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUwMzY3
MzFCQ0VEMTlGMDBFMjBCQjMgLyogV2ViR2VzdHVyZUV2ZW50LmNwcCAqLzsgfTsKQEAgLTI2OTcs
NiArMjY5OSw4IEBACiAJCTJENDI5QkZCMTcyMUUyQkEwMEVDNjgxRiAvKiBQREZQbHVnaW5QYXNz
d29yZEZpZWxkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUERG
UGx1Z2luUGFzc3dvcmRGaWVsZC5tbTsgcGF0aCA9IFBERi9QREZQbHVnaW5QYXNzd29yZEZpZWxk
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDQ3QjU2QTE4MTA3MTRFMDAzQTNB
RUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0N0I1NkIxODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJENEQyQzdG
MURGNjBCRjMwMDJFQjEwQyAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dC5oOyBwYXRoID0gaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTJENEQyQzgwMURGNjBCRjMwMDJFQjEwQyAvKiBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5jcHA7IHBhdGggPSBpb3MvSW50
ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDUwMzY1RDFCQ0M3OTNGMDBFMjBCQjMgLyogTmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmF0aXZlV2ViR2Vz
dHVyZUV2ZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDUwMzY2QTFC
Q0RFMTc5MDBFMjBCQjMgLyogTmF0aXZlV2ViR2VzdHVyZUV2ZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDUwMzY3MzFCQ0VEMTlGMDBFMjBCQjMgLyogV2ViR2VzdHVyZUV2
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdlc3R1cmVF
dmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDM4LDYgKzUwNDIsOCBA
QAogCQkJCTJEQTk0NDlEMTg4NEU0RjAwMEVEODZEQiAvKiBHZXN0dXJlVHlwZXMuaCAqLywKIAkJ
CQlDNUJDRTVEQTFDNTA3NjFEMDBDREUzRkEgLyogSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24uaCAqLywKIAkJCQlDNUJDRTVEQjFDNTA3NjFEMDBDREUzRkEgLyogSW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24ubW0gKi8sCisJCQkJMkQ0RDJDN0YxREY2MEJGMzAwMkVCMTBD
IC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmggKi8sCisJCQkJMkQ0RDJDODAxREY2
MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmNwcCAqLywKIAkJ
CQkyREE5NDQ5NzE4ODRFNEYwMDBFRDg2REIgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudElPUy5t
bSAqLywKIAkJCQkyREE5NDQ5ODE4ODRFNEYwMDBFRDg2REIgLyogTmF0aXZlV2ViVG91Y2hFdmVu
dElPUy5tbSAqLywKIAkJCQlBMTE4QTlFQzE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9j
dW1lbnREYXRhLmNwcCAqLywKQEAgLTc5MzQsNiArNzk0MCw3IEBACiAJCQkJMkRBRjA2RDYxOEJE
MUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJERTY5NDNFMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNzJCMjhCMTQwNjk4NUQw
MDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQ0RDJDODEx
REY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTRCREVEMzE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVl
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDMzMDZGMTZCMUQ5OTEwMDRGNjBFNyAvKiBTdG9y
YWdlQXJlYUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0VDRDI1MTcxNjJEQjEwMDFGQzlF
RiAvKiBTdG9yYWdlQXJlYU1hcC5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTg2LDYgKzkxOTMsNyBA
QAogCQkJCTUxRTM1MjA5MTgwRjVENkIwMEU1M0JFOSAvKiBEYXRhYmFzZVNlcnZpY2VFbnRyeVBv
aW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMzUyMDAxODBGNUQwRjAwRTUzQkU5IC8qIERh
dGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTAz
MkYxRDE4MEY3OTE3MDA5NjFCQjcgLyogRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJENEQyQzgyMURGNjBCRjMwMDJF
QjEwQyAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDNTVGOTE3MDFDNTk1RjYzMDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTFBQzc1MzdGMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJl
bmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDMyREE1MTBGNDM3RDEwMDU4QzE1QSAvKiBE
ZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggOTA5ZDJmOTEyNjZjZDhmZDUxOTYxOGVkMGQxYzU3ZTA5MmZm
YzU5OC4uYzFlOGNmZGFhMGI4M2NlOTcwOGNkNmJkY2I1MmI3ODUyMDFjMDIzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xOTcsNiArMTk3LDcg
QEAgc3RydWN0IEVkaXRpbmdSYW5nZTsKIHN0cnVjdCBFZGl0b3JTdGF0ZTsKIGNsYXNzIEdhbWVw
YWREYXRhOwogc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOworc3RydWN0
IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Owogc3RydWN0IExvYWRQYXJhbWV0ZXJzOwog
c3RydWN0IFByaW50SW5mbzsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwpAQCAt
NTYxLDggKzU2Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNBcHBseUF1dG9jb3JyZWN0aW9u
KGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIGJv
b2wmIGNvcnJlY3Rpb25BcHBsaWVkKTsKICAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkNv
bnRleHQodWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRBdXRvY29ycmVjdGlvbkNv
bnRleHQoU3RyaW5nJiBiZWZvcmVUZXh0LCBTdHJpbmcmIG1hcmtlZFRleHQsIFN0cmluZyYgc2Vs
ZWN0ZWRUZXh0LCBTdHJpbmcmIGFmdGVyVGV4dCwgdWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRf
dCYgbGVuZ3RoKTsKLSAgICB2b2lkIGdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpOwotICAgIHZv
aWQgcmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsK
KyAgICB2b2lkIGdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvblJlcXVlc3QmLCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpOworICAgIHZv
aWQgcmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
blJlcXVlc3QmKTsKICAgICB2b2lkIHN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRp
b24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIHN0b3BJbnRlcmFjdGlvbigp
OwogICAgIHZvaWQgcGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgppbmRleCAyMTdiYWVjNWZiMjA5NzhlZTg0MmFjYWU1ODkyYjljMDJiOTkwMmY5Li44MWU2
YzNhZjlhNWM5MjdmYWM5M2UzNGQwZTQyMWRmZjYyMzM4N2JkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNzYs
OCArNzYsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTeW5j
QXBwbHlBdXRvY29ycmVjdGlvbihTdHJpbmcgY29ycmVjdGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4
dCkgLT4gKGJvb2wgYXV0b2NvcnJlY3Rpb25BcHBsaWVkKQogICAgIFJlcXVlc3RBdXRvY29ycmVj
dGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBHZXRBdXRvY29ycmVjdGlvbkNv
bnRleHQoKSAtPiAoU3RyaW5nIGJlZm9yZUNvbnRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJp
bmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0ZXJDb250ZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwg
dWludDY0X3QgbGVuZ3RoKSAKLSAgICBHZXRQb3NpdGlvbkluZm9ybWF0aW9uKFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50KSAtPiAoc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24gaW5mb3JtYXRpb24pCi0gICAgUmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oV2Vi
Q29yZTo6SW50UG9pbnQgcG9pbnQpCisgICAgR2V0UG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3Qg
V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KSAtPiAoc3RydWN0
IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gaW5mb3JtYXRpb24pCisg
ICAgUmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rpb25J
bmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdCkKICAgICBTdGFydEludGVyYWN0aW9uV2l0aEVsZW1l
bnRBdFBvc2l0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvaW50KQogICAgIFN0b3BJbnRlcmFjdGlv
bigpCiAgICAgUGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5k
ZXggYjE1Mjc3ZjEzZGNmMTYxNzZkZGVmZjEyMGNmMmQ3NjQ2ZWYzOTA1NS4uZTVhZDE3ZGFjN2Zl
ZjIzOTMzOGIxMjIyMmJkOTZiMTY4ZmJiNThhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNTk4LDcgKzU5OCw4IEBA
IHZvaWQgV2ViUGFnZTo6aGFuZGxlVGFwKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDY0X3Qg
bGFzdExheWVyVHJlZVRyYW5zYWN0aW9uCiAgICAgaWYgKCFmcmFtZVJlc3BvbmRpbmdUb0NsaWNr
IHx8IGxhc3RMYXllclRyZWVUcmFuc2FjdGlvbklkIDwgV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUo
KmZyYW1lUmVzcG9uZGluZ1RvQ2xpY2spLT5maXJzdExheWVyVHJlZVRyYW5zYWN0aW9uSURBZnRl
ckRpZENvbW1pdExvYWQoKSkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWROb3RIYW5kbGVUYXBBc0NsaWNrKGFkanVzdGVkSW50UG9pbnQpKTsKICAgICBlbHNlIGlmIChp
czxFbGVtZW50Pigqbm9kZVJlc3BvbmRpbmdUb0NsaWNrKSAmJiBEYXRhRGV0ZWN0aW9uOjpzaG91
bGRDYW5jZWxEZWZhdWx0QWN0aW9uKGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlUmVzcG9uZGluZ1Rv
Q2xpY2spKSkgewotICAgICAgICByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihhZGp1c3RlZElu
dFBvaW50KTsKKyAgICAgICAgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdChh
ZGp1c3RlZEludFBvaW50KTsKKyAgICAgICAgcmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24ocmVx
dWVzdCk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkTm90SGFuZGxl
VGFwQXNDbGljayhhZGp1c3RlZEludFBvaW50KSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGhhbmRs
ZVN5bnRoZXRpY0NsaWNrKG5vZGVSZXNwb25kaW5nVG9DbGljaywgYWRqdXN0ZWRQb2ludCk7CkBA
IC02NTgsNyArNjU5LDggQEAgdm9pZCBXZWJQYWdlOjpoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDY0X3QKICAgICB9CiAgICAgc2Vu
ZFRhcEhpZ2hsaWdodEZvck5vZGVJZk5lY2Vzc2FyeShyZXF1ZXN0SUQsIG5vZGVSZXNwb25kaW5n
VG9DbGljayk7CiAgICAgaWYgKGlzPEVsZW1lbnQ+KCpub2RlUmVzcG9uZGluZ1RvQ2xpY2spICYm
IERhdGFEZXRlY3Rpb246OnNob3VsZENhbmNlbERlZmF1bHRBY3Rpb24oZG93bmNhc3Q8RWxlbWVu
dD4oKm5vZGVSZXNwb25kaW5nVG9DbGljaykpKSB7Ci0gICAgICAgIHJlcXVlc3RQb3NpdGlvbklu
Zm9ybWF0aW9uKHJvdW5kZWRJbnRQb2ludChhZGp1c3RlZFBvaW50KSk7CisgICAgICAgIEludGVy
YWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3Qocm91bmRlZEludFBvaW50KGFkanVzdGVk
UG9pbnQpKTsKKyAgICAgICAgcmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24ocmVxdWVzdCk7CiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkTm90SGFuZGxlVGFwQXNDbGlj
ayhyb3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQb2ludCkpKTsKICAgICB9IGVsc2UKICAgICAgICAg
Y29tcGxldGVTeW50aGV0aWNDbGljayhub2RlUmVzcG9uZGluZ1RvQ2xpY2ssIGFkanVzdGVkUG9p
bnQsIFdlYkNvcmU6OlR3b0ZpbmdlclRhcCk7CkBAIC02OTIsNyArNjk0LDggQEAgdm9pZCBXZWJQ
YWdlOjpjb21taXRQb3RlbnRpYWxUYXAodWludDY0X3QgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9u
SWQpCiAKICAgICBpZiAobV9wb3RlbnRpYWxUYXBOb2RlID09IG5vZGVSZXNwb25kaW5nVG9DbGlj
aykgewogICAgICAgICBpZiAoaXM8RWxlbWVudD4oKm5vZGVSZXNwb25kaW5nVG9DbGljaykgJiYg
RGF0YURldGVjdGlvbjo6c2hvdWxkQ2FuY2VsRGVmYXVsdEFjdGlvbihkb3duY2FzdDxFbGVtZW50
Pigqbm9kZVJlc3BvbmRpbmdUb0NsaWNrKSkpIHsKLSAgICAgICAgICAgIHJlcXVlc3RQb3NpdGlv
bkluZm9ybWF0aW9uKHJvdW5kZWRJbnRQb2ludChtX3BvdGVudGlhbFRhcExvY2F0aW9uKSk7Cisg
ICAgICAgICAgICBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KHJvdW5kZWRJ
bnRQb2ludChtX3BvdGVudGlhbFRhcExvY2F0aW9uKSk7CisgICAgICAgICAgICByZXF1ZXN0UG9z
aXRpb25JbmZvcm1hdGlvbihyZXF1ZXN0KTsKICAgICAgICAgICAgIGNvbW1pdFBvdGVudGlhbFRh
cEZhaWxlZCgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGhhbmRsZVN5bnRoZXRpY0Ns
aWNrKG5vZGVSZXNwb25kaW5nVG9DbGljaywgYWRqdXN0ZWRQb2ludCk7CkBAIC0yMjc0LDEyICsy
Mjc3LDEzIEBAIHN0YXRpYyBFbGVtZW50KiBjb250YWluaW5nTGlua0VsZW1lbnQoRWxlbWVudCog
ZWxlbWVudCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRQb3Np
dGlvbkluZm9ybWF0aW9uKGNvbnN0IEludFBvaW50JiBwb2ludCwgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mIGluZm8pCit2b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRp
b24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlc3QsIEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiBpbmZvKQogeworICAgIGluZm8ucmVxdWVzdCA9IHJl
cXVlc3Q7CisKICAgICBGbG9hdFBvaW50IGFkanVzdGVkUG9pbnQ7Ci0gICAgTm9kZSogaGl0Tm9k
ZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCkubm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzKHBvaW50
LCBhZGp1c3RlZFBvaW50KTsKKyAgICBOb2RlKiBoaXROb2RlID0gbV9wYWdlLT5tYWluRnJhbWUo
KS5ub2RlUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMocmVxdWVzdC5wb2ludCwgYWRqdXN0ZWRQb2lu
dCk7CiAKLSAgICBpbmZvLnBvaW50ID0gcG9pbnQ7CiAgICAgaW5mby5ub2RlQXRQb3NpdGlvbklz
QXNzaXN0ZWROb2RlID0gKGhpdE5vZGUgPT0gbV9hc3Npc3RlZE5vZGUpOwogICAgIGlmIChtX2Fz
c2lzdGVkTm9kZSkgewogICAgICAgICBjb25zdCBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwpAQCAtMjI4Nyw3ICsyMjkxLDcgQEAg
dm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludFBvaW50JiBwb2lu
dCwgSW50ZXJhY3Rpb25JbmZvcm1hdGkKICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGtIaXRB
cmVhV2lkdGggPSA2NjsKICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGtIaXRBcmVhSGVpZ2h0
ID0gNjY7CiAgICAgICAgICAgICBGcmFtZVZpZXcmIHZpZXcgPSAqZnJhbWUudmlldygpOwotICAg
ICAgICAgICAgSW50UG9pbnQgYWRqdXN0ZWRQb2ludCh2aWV3LnJvb3RWaWV3VG9Db250ZW50cyhw
b2ludCkpOworICAgICAgICAgICAgSW50UG9pbnQgYWRqdXN0ZWRQb2ludCh2aWV3LnJvb3RWaWV3
VG9Db250ZW50cyhyZXF1ZXN0LnBvaW50KSk7CiAgICAgICAgICAgICBJbnRQb2ludCBjb25zdHJh
aW5lZFBvaW50ID0gbV9hc3Npc3RlZE5vZGUgPyBjb25zdHJhaW5Qb2ludChhZGp1c3RlZFBvaW50
LCBmcmFtZSwgKm1fYXNzaXN0ZWROb2RlKSA6IGFkanVzdGVkUG9pbnQ7CiAgICAgICAgICAgICBW
aXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSBmcmFtZS52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChj
b25zdHJhaW5lZFBvaW50KTsKIApAQCAtMjI5Nyw5ICsyMzAxLDkgQEAgdm9pZCBXZWJQYWdlOjpn
ZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludFBvaW50JiBwb2ludCwgSW50ZXJhY3Rpb25J
bmZvcm1hdGkKICAgICAgICAgICAgIGVsc2UgaWYgKHBvc2l0aW9uID4gY29tcG9zaXRpb25SYW5n
ZS0+ZW5kUG9zaXRpb24oKSkKICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGNvbXBvc2l0aW9u
UmFuZ2UtPmVuZFBvc2l0aW9uKCk7CiAgICAgICAgICAgICBJbnRSZWN0IGNhcmV0UmVjdCA9IHZp
ZXcuY29udGVudHNUb1Jvb3RWaWV3KHBvc2l0aW9uLmFic29sdXRlQ2FyZXRCb3VuZHMoKSk7Ci0g
ICAgICAgICAgICBmbG9hdCBkZWx0YVggPSBhYnMoY2FyZXRSZWN0LngoKSArIChjYXJldFJlY3Qu
d2lkdGgoKSAvIDIpIC0gcG9pbnQueCgpKTsKLSAgICAgICAgICAgIGZsb2F0IGRlbHRhWUZyb21U
aGVUb3AgPSBhYnMoY2FyZXRSZWN0LnkoKSAtIHBvaW50LnkoKSk7Ci0gICAgICAgICAgICBmbG9h
dCBkZWx0YVlGcm9tVGhlQm90dG9tID0gYWJzKGNhcmV0UmVjdC55KCkgKyBjYXJldFJlY3QuaGVp
Z2h0KCkgLSBwb2ludC55KCkpOworICAgICAgICAgICAgZmxvYXQgZGVsdGFYID0gYWJzKGNhcmV0
UmVjdC54KCkgKyAoY2FyZXRSZWN0LndpZHRoKCkgLyAyKSAtIHJlcXVlc3QucG9pbnQueCgpKTsK
KyAgICAgICAgICAgIGZsb2F0IGRlbHRhWUZyb21UaGVUb3AgPSBhYnMoY2FyZXRSZWN0LnkoKSAt
IHJlcXVlc3QucG9pbnQueSgpKTsKKyAgICAgICAgICAgIGZsb2F0IGRlbHRhWUZyb21UaGVCb3R0
b20gPSBhYnMoY2FyZXRSZWN0LnkoKSArIGNhcmV0UmVjdC5oZWlnaHQoKSAtIHJlcXVlc3QucG9p
bnQueSgpKTsKIAogICAgICAgICAgICAgaW5mby5pc05lYXJNYXJrZWRUZXh0ID0gIShkZWx0YVgg
PiBrSGl0QXJlYVdpZHRoIHx8IGRlbHRhWUZyb21UaGVUb3AgPiBrSGl0QXJlYUhlaWdodCB8fCBk
ZWx0YVlGcm9tVGhlQm90dG9tID4ga0hpdEFyZWFIZWlnaHQpOwogICAgICAgICB9CkBAIC0yMzIz
LDIwICsyMzI3LDI2IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25z
dCBJbnRQb2ludCYgcG9pbnQsIEludGVyYWN0aW9uSW5mb3JtYXRpCiAgICAgICAgICAgICAgICAg
aWYgKGxpbmtFbGVtZW50KSB7CiAgICAgICAgICAgICAgICAgICAgIGluZm8uaXNMaW5rID0gdHJ1
ZTsKIAotICAgICAgICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgaW1hZ2UgY29udGFp
bnMgYXQgbW9zdCA2MDBLIHBpeGVscywgc28gdGhhdCBpdCBpcyBub3QgdG9vIGJpZy4KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3QgPSBzbmFwc2hvdE5v
ZGUoKmVsZW1lbnQsIFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSwgNjAwICogMTAyNCkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpbmZvLmltYWdlID0gc25hcHNob3QtPmJpdG1hcCgpOworICAg
ICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdC5pbmNsdWRlU25hcHNob3QpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBpbWFnZSBjb250YWlucyBhdCBtb3N0
IDYwMEsgcGl4ZWxzLCBzbyB0aGF0IGl0IGlzIG5vdCB0b28gYmlnLgorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3QgPSBzbmFwc2hvdE5vZGUoKmVs
ZW1lbnQsIFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSwgNjAwICogMTAyNCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5mby5pbWFnZSA9IHNuYXBzaG90LT5iaXRtYXAoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0LmluY2x1
ZGVMaW5rSW5kaWNhdG9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+
IGxpbmtSYW5nZSA9IHJhbmdlT2ZDb250ZW50cygqbGlua0VsZW1lbnQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGxpbmtSYW5nZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBtYXJnaW5JblBvaW50
cyA9IDQ7CiAKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBsaW5rUmFuZ2UgPSBy
YW5nZU9mQ29udGVudHMoKmxpbmtFbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxp
bmtSYW5nZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IgPSBjb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZmxvYXQgbWFyZ2luSW5Qb2ludHMgPSA0OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGlj
YXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpsaW5rUmFuZ2UsIFRleHRJbmRpY2F0b3JPcHRpb25UaWdo
dGx5Rml0Q29udGVudCB8IFRleHRJbmRpY2F0b3JPcHRpb25SZXNwZWN0VGV4dENvbG9yIHwgVGV4
dEluZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfCBUZXh0SW5kaWNhdG9yT3B0aW9uVXNl
Qm91bmRpbmdSZWN0QW5kUGFpbnRBbGxDb250ZW50Rm9yQ29tcGxleFJhbmdlcyB8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlTWFyZ2lu
SWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0
aW9uOjpOb25lLCBGbG9hdFNpemUobWFyZ2luSW5Qb2ludHMgKiBkZXZpY2VTY2FsZUZhY3Rvciwg
bWFyZ2luSW5Qb2ludHMgKiBkZXZpY2VTY2FsZUZhY3RvcikpOwogCi0gICAgICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0
b3I6OmNyZWF0ZVdpdGhSYW5nZSgqbGlua1JhbmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9uVGlnaHRs
eUZpdENvbnRlbnQgfCBUZXh0SW5kaWNhdG9yT3B0aW9uUmVzcGVjdFRleHRDb2xvciB8IFRleHRJ
bmRpY2F0b3JPcHRpb25QYWludEJhY2tncm91bmRzIHwgVGV4dEluZGljYXRvck9wdGlvblVzZUJv
dW5kaW5nUmVjdEFuZFBhaW50QWxsQ29udGVudEZvckNvbXBsZXhSYW5nZXMgfAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlTWFyZ2luSWZSYW5n
ZU1hdGNoZXNTZWxlY3Rpb24sIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpO
b25lLCBGbG9hdFNpemUobWFyZ2luSW5Qb2ludHMgKiBkZXZpY2VTY2FsZUZhY3RvciwgbWFyZ2lu
SW5Qb2ludHMgKiBkZXZpY2VTY2FsZUZhY3RvcikpOwotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHRleHRJbmRpY2F0b3IpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5saW5r
SW5kaWNhdG9yID0gdGV4dEluZGljYXRvci0+ZGF0YSgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh0ZXh0SW5kaWNhdG9yKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmZvLmxpbmtJbmRpY2F0b3IgPSB0ZXh0SW5kaWNhdG9yLT5kYXRhKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KKwogI2lmIEVOQUJMRShEQVRB
X0RFVEVDVElPTikKICAgICAgICAgICAgICAgICAgICAgaW5mby5pc0RhdGFEZXRlY3Rvckxpbmsg
PSBEYXRhRGV0ZWN0aW9uOjppc0RhdGFEZXRlY3RvckxpbmsoKmVsZW1lbnQpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoaW5mby5pc0RhdGFEZXRlY3RvckxpbmspIHsKQEAgLTI0MDAsNyArMjQx
MCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRQb2lu
dCYgcG9pbnQsIEludGVyYWN0aW9uSW5mb3JtYXRpCiAgICAgfQogCiAgICAgaWYgKCFlbGVtZW50
SXNMaW5rT3JJbWFnZSkgewotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fcGFnZS0+
bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQoKHBvaW50KSwg
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRl
c3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfCBIaXRUZXN0UmVxdWVz
dDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2lu
dChyZXF1ZXN0LnBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVu
dCB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50KTsKICAgICAgICAgaGl0
Tm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICAgICAgLy8gSGl0IHRlc3QgY291bGQgcmV0
dXJuIEhUTUxIdG1sRWxlbWVudCB0aGF0IGhhcyBubyByZW5kZXJlciwgaWYgdGhlIGJvZHkgaXMg
c21hbGxlciB0aGFuIHRoZSBkb2N1bWVudC4KICAgICAgICAgaWYgKGhpdE5vZGUgJiYgaGl0Tm9k
ZS0+cmVuZGVyZXIoKSkgewpAQCAtMjQyMywxMSArMjQzMywxMSBAQCB2b2lkIFdlYlBhZ2U6Omdl
dFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50UG9pbnQmIHBvaW50LCBJbnRlcmFjdGlvbklu
Zm9ybWF0aQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpyZXF1ZXN0UG9zaXRpb25JbmZvcm1h
dGlvbihjb25zdCBJbnRQb2ludCYgcG9pbnQpCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3RQb3NpdGlv
bkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXN0
KQogewogICAgIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm87CiAKLSAgICBn
ZXRQb3NpdGlvbkluZm9ybWF0aW9uKHBvaW50LCBpbmZvKTsKKyAgICBnZXRQb3NpdGlvbkluZm9y
bWF0aW9uKHJlcXVlc3QsIGluZm8pOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb24oaW5mbykpOwogfQogCg==
</data>
<flag name="review"
          id="318693"
          type_id="1"
          status="+"
          setter="enrica"
    />
          </attachment>
      

    </bug>

</bugzilla>