<?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>75272</bug_id>
          
          <creation_ts>2011-12-27 15:16:32 -0800</creation_ts>
          <short_desc>[Chromium] Re-factor compositor tree synchronization to support buffering and serialization.</short_desc>
          <delta_ts>2012-10-08 16:11:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          
          <blocked>73279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>527479</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-27 15:16:32 -0800</bug_when>
    <thetext>Templatize CCLayerImpl tree creation so that it&apos;s possible to serialize or buffer the layer tree in a temporary data structure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527497</commentid>
    <comment_count>1</comment_count>
      <attachid>120622</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-27 16:21:02 -0800</bug_when>
    <thetext>Created attachment 120622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527932</commentid>
    <comment_count>2</comment_count>
      <attachid>120749</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-29 08:11:29 -0800</bug_when>
    <thetext>Created attachment 120749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529748</commentid>
    <comment_count>3</comment_count>
      <attachid>121149</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-04 14:15:35 -0800</bug_when>
    <thetext>Created attachment 121149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540642</commentid>
    <comment_count>4</comment_count>
      <attachid>123572</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-23 10:21:10 -0800</bug_when>
    <thetext>Created attachment 123572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554756</commentid>
    <comment_count>5</comment_count>
      <attachid>126663</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-11 18:34:12 -0800</bug_when>
    <thetext>Created attachment 126663
Patch

Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737168</commentid>
    <comment_count>6</comment_count>
      <attachid>126663</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-08 16:11:10 -0700</bug_when>
    <thetext>Comment on attachment 126663
Patch

Cleared review? from attachment 126663 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120622</attachid>
            <date>2011-12-27 16:21:02 -0800</date>
            <delta_ts>2011-12-29 08:11:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75272-20111228012058.patch</filename>
            <type>text/plain</type>
            <size>103680</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE1OTY2ZmY4NDAwN2Jl
ZjQ3ZjNmYzJhZjUwMDJhOGIyZDM3OTE5Mi4uNDVkM2E5YWI2OTk4NGM4YzJlYzdjMDZmOTI0OTZi
NWU5NTQ5OThlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMS0xMi0yNyAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
UmUtZmFjdG9yIGNvbXBvc2l0b3IgdHJlZSBzeW5jaHJvbml6YXRpb24gdG8gc3VwcG9ydCBidWZm
ZXJpbmcgYW5kIHNlcmlhbGl6YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NTI3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlbXBsYXRpemUgQ0NMYXllckltcGwgdHJlZSBjcmVhdGlvbiBzbyB0
aGF0IGl0J3MgcG9zc2libGUgdG8KKyAgICAgICAgc2VyaWFsaXplIG9yIGJ1ZmZlciB0aGUgbGF5
ZXIgdHJlZSBpbiBhIHRlbXBvcmFyeSBkYXRhIHN0cnVjdHVyZS4KKworCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlQ2FudmFzMkRMYXllckNocm9taXVtOjpTZXJpYWxpemFi
bGVDYW52YXMyRExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxl
Q2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcmlhbGl6YWJsZUNhbnZhczJETGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVt
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVDb250ZW50TGF5
ZXJDaHJvbWl1bTo6U2VyaWFsaXphYmxlQ29udGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAo
V2ViQ29yZTo6U2VyaWFsaXphYmxlQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlQ29udGVudExheWVyQ2hyb21pdW06OnB1
c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1
ZmZlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OnBsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNz
TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21p
dW06OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVJbWFnZUxheWVyQ2hyb21pdW06OlNlcmlhbGl6YWJs
ZUltYWdlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVJbWFn
ZUxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFs
aXphYmxlSW1hZ2VMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6
YW5jaG9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6ZGVidWdCb3JkZXJDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpkZWJ1Z0JvcmRlcldpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VyaWFsaXphYmxlTGF5ZXJDaHJvbWl1bTo6U2VyaWFsaXphYmxlTGF5ZXJDaHJvbWl1bSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVMYXllckNocm9taXVtOjpjcmVhdGVDQ0xh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZUxheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVt
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVQbHVnaW5MYXllckNocm9taXVtOjpT
ZXJpYWxpemFibGVQbHVnaW5MYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6YWJsZVBsdWdpbkxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXphYmxlUGx1Z2luTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGx1Z2luTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6
CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGFibGVUaWxlOjpVcGRhdGFibGVUaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVwZGF0YWJsZVRpbGU6OnRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
VXBkYXRhYmxlVGlsZTo6bWFuYWdlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRh
YmxlVGlsZTo6aXNEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGFibGVUaWxlOjpjbGVh
ckRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3Bl
cnRpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJv
bml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVN5bmNocm9uaXplcjo6YWRkQ0NMYXll
cnNUb01hcFJlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU3luY2hyb25pemVyOjpz
eW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVN5bmNocm9u
aXplcjo6c3luY2hyb25pemVUcmVlc0ludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVT
eW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VyaWFsaXphYmxlVmlkZW9MYXllckNocm9taXVtOjpTZXJpYWxpemFibGVWaWRlb0xheWVy
Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlVmlkZW9MYXllckNocm9t
aXVtOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZVZpZGVv
TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b0xheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6YWJsZVdlYkdMTGF5ZXJDaHJvbWl1bTo6U2VyaWFsaXphYmxlV2ViR0xMYXllckNocm9taXVt
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZVdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlQ0NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVXZWJHTExheWVyQ2hy
b21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNo
cm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpw
dXNoUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVySW1wbC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyOjpDQ0xheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXI6On5DQ0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkxheWVySW1wbC5jcHAuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBs
Ojpjb250ZW50Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzY3JvbGxE
ZWx0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpzZXRUZXh0
dXJlSWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRM
YXllckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVy
U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyk6CisK
IDIwMTEtMTItMjcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
W0Nocm9taXVtXSB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGluIGZha2VNb3VzZU1vdmVFdmVudFRp
bWVyRmlyZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMTMyMTJjY2ViMWM0NTcyZmRh
OTgwY2RhOTIyZGM2YzlmM2YzMmNjMi4uNGVjODkyYzI5YmVjOWNkYjQ4MjU1Mjk4Y2MyYjMzNGQ0
MWVlNzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAx
MS0xMi0yNyAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtDaHJvbWl1bV0gUmUtZmFjdG9yIGNvbXBvc2l0b3IgdHJlZSBzeW5jaHJvbml6YXRpb24gdG8g
c3VwcG9ydCBidWZmZXJpbmcgYW5kIHNlcmlhbGl6YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTI3MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlbXBsYXRpemUgQ0NMYXllckltcGwgdHJlZSBj
cmVhdGlvbiBzbyB0aGF0IGl0J3MgcG9zc2libGUgdG8KKyAgICAgICAgc2VyaWFsaXplIG9yIGJ1
ZmZlciB0aGUgbGF5ZXIgdHJlZSBpbiBhIHRlbXBvcmFyeSBkYXRhIHN0cnVjdHVyZS4KKworICAg
ICAgICAqIHNyYy9XZWJDb250ZW50TGF5ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZW50TGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3Bw
OgorICAgICAgICAqIHNyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6
OlNlcmlhbGl6YWJsZVdlYkNvbnRlbnRMYXllckltcGw6OlNlcmlhbGl6YWJsZVdlYkNvbnRlbnRM
YXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpTZXJpYWxpemFibGVXZWJDb250ZW50TGF5ZXJJ
bXBsOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6U2VyaWFsaXphYmxlV2ViQ29u
dGVudExheWVySW1wbDo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRlbnRMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVy
ZUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHA6Cisg
ICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oOgorICAgICAgICAoV2Vi
S2l0OjpTZXJpYWxpemFibGVXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OlNlcmlhbGl6YWJs
ZVdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlNlcmlhbGl6
YWJsZVdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6Y3JlYXRlQ0NMYXllcik6CisgICAgICAg
IChXZWJLaXQ6OlNlcmlhbGl6YWJsZVdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6cHVzaFBy
b3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1w
bDo6Y3JlYXRlKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJJbXBsLmNwcDoKKyAg
ICAgICAgKiBzcmMvV2ViTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OlNlcmlhbGl6YWJs
ZVdlYkxheWVySW1wbDo6U2VyaWFsaXphYmxlV2ViTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6U2VyaWFsaXphYmxlV2ViTGF5ZXJJbXBsOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdl
YktpdDo6U2VyaWFsaXphYmxlV2ViTGF5ZXJJbXBsOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9XZWJNZWRp
YVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29u
dGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6
OldlYlBsdWdpbkNvbnRhaW5lckltcGwpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9z
dENvbW1vblRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0xheWVyQ2hyb21pdW06Ok1v
Y2tMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhv
c3RUZXN0Ojpkb0JlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdURjo6Q29udGVu
dExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAg
ICAgICAqIHRlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAqIHRl
c3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hy
b21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlQ0NMYXllcik6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHRlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDExLTEyLTI3ICBUb255IENoYW5nICA8dG9ueUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBXaGVuIGJ1aWxkaW5nIHdpdGggY2xh
bmcsIGVuYWJsZSAtV2dsb2JhbC1jb25zdHJ1Y3RvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAyYmRi
OWE5NWY1YzRlYzQ4YThkYzc0ZjI5Y2UyZGEyMTQ3ODY3MGZjLi5jNjBlYTJmYTllZDU3NGNkZjFl
MmEzYTJiN2FkMDI1NjljYjBjNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjE5LDYgKzM2MTks
OCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNV
cERpc3BsYXkuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0hlYWRzVXBEaXNwbGF5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclF1YWQuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52
YXMyRExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDIzZDcyZTdiYjA3ODQyZTg4ZjgwMWRhODRhMTVh
ZWEwZWJjODRjMWUuLmNlNjZlNzNjMGY3ZjQ5ZWE2MmEzMmIzY2UzMGE1NDg3MDcwMmI3NmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
czJETGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcApAQCAtNDcsMTEgKzQ3LDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1
bT4gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IEludFNpemUmIHNpemUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52
YXMyRExheWVyQ2hyb21pdW0oY29udGV4dCwgc2l6ZSkpOwotfQotCiBDYW52YXMyRExheWVyQ2hy
b21pdW06OkNhbnZhczJETGF5ZXJDaHJvbWl1bShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICA6IENhbnZhc0xheWVyQ2hyb21pdW0oMCkKICAgICAs
IG1fY29udGV4dChjb250ZXh0KQpAQCAtMTQxLDE0ICsxMzYsNiBAQCB2b2lkIENhbnZhczJETGF5
ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dAogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5mbHVzaCgpKTsKIH0KIAotdm9pZCBD
YW52YXMyRExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVy
KQotewotICAgIENhbnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwot
Ci0gICAgQ0NDYW52YXNMYXllckltcGwqIGNhbnZhc0xheWVyID0gc3RhdGljX2Nhc3Q8Q0NDYW52
YXNMYXllckltcGwqPihsYXllcik7Ci0gICAgY2FudmFzTGF5ZXItPnNldFRleHR1cmVJZChtX2Zy
b250VGV4dHVyZS0+dGV4dHVyZUlkKCkpOwotfQotCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1
bTo6dW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkKIHsKICAgICBtX2Zyb250VGV4dHVyZS0+dW5y
ZXNlcnZlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCmluZGV4IDFjOGZjOWI0
ZThiMmJhMjA1MmNiMjI5ZmViNWU3MGNhYTkwNzA1MDMuLjIwYjJmMWJiNTcwNjNiNzg2NDFkYTJj
ZWVlNzY2NmMwMjlmYjUwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCkBA
IC00NCw3ICs0NCw5IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogLy8gQSBsYXllciBjb250
YWluaW5nIGFuIGFjY2VsZXJhdGVkIDJkIGNhbnZhcwogY2xhc3MgQ2FudmFzMkRMYXllckNocm9t
aXVtIDogcHVibGljIENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNE
KiwgY29uc3QgSW50U2l6ZSYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3Rh
dGljIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NDb250
ZXh0M0QqLCBjb25zdCBJbnRTaXplJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBl
PiB2b2lkIHB1c2hQcm9wZXJ0aWVzKGNvbnN0IENhbnZhczJETGF5ZXJDaHJvbWl1bSogZnJvbSwg
Q0NMYXllciogdG8pOworCiAgICAgdmlydHVhbCB+Q2FudmFzMkRMYXllckNocm9taXVtKCk7CiAK
ICAgICB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCk7CkBAIC01NiwxMyArNTgsMTMgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0
Kik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7Ci0gICAgdmlydHVhbCB2b2lkIHB1c2hQcm9w
ZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVu
dHNUZXh0dXJlKCk7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKIAotcHJp
dmF0ZToKK3Byb3RlY3RlZDoKICAgICBDYW52YXMyRExheWVyQ2hyb21pdW0oR3JhcGhpY3NDb250
ZXh0M0QqLCBjb25zdCBJbnRTaXplJik7CiAKK3ByaXZhdGU6CiAgICAgLy8gVmlzaWJsZSBmb3Ig
dGVzdGluZyBzbyB3ZSBjYW4gYnlwYXNzIHNldExheWVyVHJlZUhvc3QuCiAgICAgZnJpZW5kIGNs
YXNzIENhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3Q7CiAgICAgdm9pZCBzZXRUZXh0dXJlTWFuYWdl
cihUZXh0dXJlTWFuYWdlciopOwpAQCAtNzQsNiArNzYsMzYgQEAgcHJpdmF0ZToKICAgICBPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IG1fZnJvbnRUZXh0dXJlOwogfTsKIAordGVtcGxhdGU8dHlwZW5h
bWUgTGF5ZXJUeXBlPiBjbGFzcyBTZXJpYWxpemFibGVDYW52YXMyRExheWVyQ2hyb21pdW0gOiBw
dWJsaWMgQ2FudmFzMkRMYXllckNocm9taXVtIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTZXJp
YWxpemFibGVDYW52YXMyRExheWVyQ2hyb21pdW0oR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IGNvbnN0IEludFNpemUmIHNpemUpIDogQ2FudmFzMkRMYXllckNocm9taXVtKGNvbnRleHQsIHNp
emUpIHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXI+IGNyZWF0ZUNDTGF5ZXIo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIExheWVyVHlwZTo6Y3JlYXRlKG1fbGF5ZXJJZCk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllciogbGF5ZXIp
CisgICAgeworICAgICAgICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxMYXllclR5cGU+
KHRoaXMsIGxheWVyKTsKKyAgICAgICAgcHVzaFByb3BlcnRpZXM8TGF5ZXJUeXBlPih0aGlzLCBs
YXllcik7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgorUGFzc1Jl
ZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXphYmxlQ2FudmFzMkRMYXllckNocm9taXVtPExh
eWVyVHlwZT4oY29udGV4dCwgc2l6ZSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5
cGU+Cit2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXMoY29uc3QgQ2Fu
dmFzMkRMYXllckNocm9taXVtKiBmcm9tLCBDQ0xheWVyKiB0bykKK3sKKyAgICBMYXllclR5cGUq
IGxheWVyID0gc3RhdGljX2Nhc3Q8TGF5ZXJUeXBlKj4odG8pOworCisgICAgbGF5ZXItPnNldFRl
eHR1cmVJZChmcm9tLT5tX2Zyb250VGV4dHVyZS0+dGV4dHVyZUlkKCkpOworfQorCiB9CiAjZW5k
aWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVy
Q2hyb21pdW0uY3BwCmluZGV4IGM1MTAwOGNiNDE4ZDVjYjNlMWMzNzg2ZGNmYTBkOTc0ZWVjMzMw
MmMuLmIyMDE3ZDRmODA1NzEyM2VlNWQ0NWY0OWMwZDFhYWQxMDE1YzEwOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwCkBAIC0zNCw3ICszNCw2IEBACiAKICNpbmNsdWRlICJD
YW52YXNMYXllckNocm9taXVtLmgiCiAKLSNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgiCiAKQEAgLTQ1LDEwICs0NCw1IEBAIENhbnZhc0xheWVyQ2hyb21pdW06OkNhbnZhc0xh
eWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKIH0KIAotUGFzc1JlZlB0
cjxDQ0xheWVySW1wbD4gQ2FudmFzTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQot
ewotICAgIHJldHVybiBDQ0NhbnZhc0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7Ci19Ci0K
IH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9t
aXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNM
YXllckNocm9taXVtLmgKaW5kZXggZjQwNzJmNWQwOTY3ZjZjYzAyYTcxYzY4MWI3NmNkOTc1NmMz
MDgyYS4uY2ZkMGJhYTJkYTA0YWViNTAxZWIwMjlhNDdhNTI0MDdkMjA5NjJlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhc0xheWVyQ2hyb21pdW0uaApAQCAtNDAsOSArNDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIC8vIEJhc2UgY2xhc3MgZm9yIFdlYkdMIGFuZCBhY2NlbGVyYXRlZCAyZCBjYW52YXNl
cy4KIGNsYXNzIENhbnZhc0xheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7Ci1w
dWJsaWM6Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVy
SW1wbCgpOwotCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ2FudmFzTGF5ZXJDaHJvbWl1bShD
Q0xheWVyRGVsZWdhdGUqKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggYzYzOTU2MzZkNGMzNzMyMTg2YjBjZWVlMTZhMzEyMTk3ZDBjOTZhMC4uMzMzNTc5ZDM0
MTdiY2YxZjY5YjQyYmIzOTQ1MmU5OWNiNmU4Mzg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmNwcApAQCAtNzMsMTEgKzczLDYgQEAgcHJpdmF0ZToKICAgICBDQ0xheWVyRGVs
ZWdhdGUqIG1fZGVsZWdhdGU7CiB9OwogCi1QYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVt
PiBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bShkZWxlZ2F0
ZSkpOwotfQotCiBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVudExheWVyQ2hyb21pdW0oQ0NM
YXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IFRpbGVkTGF5ZXJDaHJvbWl1bShkZWxlZ2F0
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IDBjNTc0YjVkZmRjMGE1
NzFiODExYmUwMzk3NjRhYzc1YjFjMmUzZWUuLjY1NTMwODUzNWQzZTAzMmQ4MGE5YzUwN2JiOWUz
ZDQ0ZjZmNWM1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaApAQCAtMzUsNyAr
MzUsNiBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIlRp
bGVkTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSw3ICs0NCw3IEBAIGNsYXNzIExheWVyVGV4dHVy
ZVVwZGF0ZXI7CiAvLyBBIExheWVyIHRoYXQgcmVxdWlyZXMgYSBHcmFwaGljc0NvbnRleHQgdG8g
cmVuZGVyIGl0cyBjb250ZW50cy4KIGNsYXNzIENvbnRlbnRMYXllckNocm9taXVtIDogcHVibGlj
IFRpbGVkTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q29u
dGVudExheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBMYXllclR5cGU+IHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9t
aXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKik7CiAKICAgICB2aXJ0dWFsIH5Db250ZW50TGF5
ZXJDaHJvbWl1bSgpOwogCkBAIC02NCw2ICs2MywyOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxM
YXllclRleHR1cmVVcGRhdGVyPiBtX3RleHR1cmVVcGRhdGVyOwogfTsKIAordGVtcGxhdGU8dHlw
ZW5hbWUgTGF5ZXJUeXBlPiBjbGFzcyBTZXJpYWxpemFibGVDb250ZW50TGF5ZXJDaHJvbWl1bSA6
IHB1YmxpYyBDb250ZW50TGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2Vy
aWFsaXphYmxlQ29udGVudExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkg
OiBDb250ZW50TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkgeyB9CisKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8Q0NMYXllcj4gY3JlYXRlQ0NMYXllcigpCisgICAgeworICAgICAgICByZXR1cm4gTGF5
ZXJUeXBlOjpjcmVhdGUobV9sYXllcklkKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVz
aFByb3BlcnRpZXNUbyhDQ0xheWVyKiBsYXllcikKKyAgICB7CisgICAgICAgIExheWVyQ2hyb21p
dW06OnB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgICAgICBUaWxl
ZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOwor
ICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK1Bhc3NSZWZQdHI8Q29u
dGVudExheWVyQ2hyb21pdW0+IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRl
bGVnYXRlKiBkZWxlZ2F0ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6YWJs
ZUNvbnRlbnRMYXllckNocm9taXVtPExheWVyVHlwZT4oZGVsZWdhdGUpKTsKK30KKwogfQogI2Vu
ZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdC
dWZmZXJDaHJvbWl1bS5jcHAKaW5kZXggZWFkNmFhM2EyNTAzMWY3ODRjNDc3NWE1M2I0YTMzYTA0
MmJlYmRlYy4uYzA2YmU2NmM5YWFhZDBhMTQxZmJlZmQzZGZkNjA2NDgyMmRiMTdlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1
ZmZlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQz
RC5oIgogI2luY2x1ZGUgIldlYkdMTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgImNjL0NDQ2Fu
dmFzTGF5ZXJJbXBsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQzLDcgKzE0NCw3
IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcigpCiBQbGF0Zm9y
bUxheWVyKiBEcmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkKIHsKICAgICBpZiAoIW1fcGxh
dGZvcm1MYXllcikgewotICAgICAgICBtX3BsYXRmb3JtTGF5ZXIgPSBXZWJHTExheWVyQ2hyb21p
dW06OmNyZWF0ZSgwKTsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyID0gV2ViR0xMYXllckNocm9t
aXVtOjpjcmVhdGU8Q0NDYW52YXNMYXllckltcGw+KDApOwogICAgICAgICBtX3BsYXRmb3JtTGF5
ZXItPnNldERyYXdpbmdCdWZmZXIodGhpcyk7CiAgICAgICAgIG1fcGxhdGZvcm1MYXllci0+c2V0
T3BhcXVlKCFtX2NvbnRleHQtPmdldENvbnRleHRBdHRyaWJ1dGVzKCkuYWxwaGEpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dy
YXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGQyMmYxZGM0NTU0ZDAy
Mjc4NWUwMTUxOGZkZTEyYTUwZjIzMWIwYTYuLmQwM2JiMWYwMDRlNzBiZTE5MDE2OTRjYmUwMjc5
NTYzYzU1OTM5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAt
NzQsNyArNzQsNyBAQCBHcmFwaGljc0xheWVyQ2hyb21pdW06OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2NvbnRlbnRzTGF5ZXJIYXNC
YWNrZ3JvdW5kQ29sb3IoZmFsc2UpCiAgICAgLCBtX2luU2V0Q2hpbGRyZW4oZmFsc2UpCiB7Ci0g
ICAgbV9sYXllciA9IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGUodGhpcyk7CisgICAgbV9s
YXllciA9IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGU8Q0NUaWxlZExheWVySW1wbD4odGhp
cyk7CiAKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KQEAgLTMxNCw3ICszMTQsNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBp
bWFnZSkKICAgICBib29sIGNoaWxkcmVuQ2hhbmdlZCA9IGZhbHNlOwogICAgIGlmIChpbWFnZSkg
ewogICAgICAgICBpZiAoIW1fY29udGVudHNMYXllci5nZXQoKSB8fCBtX2NvbnRlbnRzTGF5ZXJQ
dXJwb3NlICE9IENvbnRlbnRzTGF5ZXJGb3JJbWFnZSkgewotICAgICAgICAgICAgUmVmUHRyPElt
YWdlTGF5ZXJDaHJvbWl1bT4gaW1hZ2VMYXllciA9IEltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KHRoaXMpOworICAgICAgICAgICAgUmVmUHRyPEltYWdlTGF5ZXJDaHJvbWl1bT4gaW1hZ2VMYXll
ciA9IEltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDVGlsZWRMYXllckltcGw+KHRoaXMpOwog
ICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKGltYWdlTGF5ZXIuZ2V0KCkpOwogICAgICAg
ICAgICAgbV9jb250ZW50c0xheWVyID0gaW1hZ2VMYXllcjsKICAgICAgICAgICAgIG1fY29udGVu
dHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9ySW1hZ2U7CkBAIC01MTgsNyArNTE4LDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QoKQog
ewogICAgIGlmIChtX3ByZXNlcnZlczNEICYmICFtX3RyYW5zZm9ybUxheWVyKSB7CiAgICAgICAg
IC8vIENyZWF0ZSB0aGUgdHJhbnNmb3JtIGxheWVyLgotICAgICAgICBtX3RyYW5zZm9ybUxheWVy
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMpOworICAgICAgICBtX3RyYW5zZm9ybUxheWVy
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPih0aGlzKTsKICAgICAgICAgbV90
cmFuc2Zvcm1MYXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CiAKICAgICAgICAgLy8gQ29weSB0
aGUgcG9zaXRpb24gZnJvbSB0aGlzIGxheWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5j
cHAKaW5kZXggNmVlZGNjZTcxNDM4NmYwYzU5ZmJhZTgyMDVmOWNmZjMxOGRmZjUxZi4uZGE5YjEx
OTJhZDU3NmU0ZTYwZDM3Yzc0MjIzZDMxMjNkN2MyYmI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVy
Q2hyb21pdW0uY3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBk
YXRlci5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1D
b2xvci5oIgotI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXll
clRyZWVIb3N0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEyOSwxMSArMTI4LDYgQEAg
cHJpdmF0ZToKICAgICBMYXllclRleHR1cmVTdWJJbWFnZSBtX3RleFN1YkltYWdlOwogfTsKIAot
UGFzc1JlZlB0cjxJbWFnZUxheWVyQ2hyb21pdW0+IEltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
bWFnZUxheWVyQ2hyb21pdW0oZGVsZWdhdGUpKTsKLX0KLQogSW1hZ2VMYXllckNocm9taXVtOjpJ
bWFnZUxheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IFRpbGVk
TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkKICAgICAsIG1faW1hZ2VGb3JDdXJyZW50RnJhbWUoMCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKaW5kZXggNWZlNGYyNjY2OGJkY2MzZTI5ZjA0Y2Zm
Y2RhODgyYTczYzMxZTMyNy4uNTNiOGViMjFlN2ExY2FiZmZiMmMzZGZkNWM3ZmMzZGEwMDIzNTc2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SW1hZ2VMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKQEAgLTQ5LDcgKzQ5LDggQEAgY2xhc3Mg
SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOwogLy8gQSBMYXllciB0aGF0IGNvbnRhaW5zIG9ubHkg
YW4gSW1hZ2UgZWxlbWVudC4KIGNsYXNzIEltYWdlTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBUaWxl
ZExheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlTGF5
ZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSopOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIExheWVyVHlwZT4gc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VMYXllckNocm9taXVtPiBjcmVh
dGUoQ0NMYXllckRlbGVnYXRlKik7CisKICAgICB2aXJ0dWFsIH5JbWFnZUxheWVyQ2hyb21pdW0o
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKQEAgLTU4LDkgKzU5
LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q29udGVudHMoSW1hZ2UqIGltYWdlKTsKIAot
cHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBleHBsaWNpdCBJbWFnZUxheWVyQ2hyb21pdW0oQ0NM
YXllckRlbGVnYXRlKik7CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNv
dXJjZXMoKTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NM
YXllclRyZWVIb3N0Kik7CiAgICAgdm9pZCBzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uKTsK
QEAgLTc0LDYgKzc2LDI4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEltYWdlTGF5ZXJUZXh0dXJl
VXBkYXRlcj4gbV90ZXh0dXJlVXBkYXRlcjsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVy
VHlwZT4gY2xhc3MgU2VyaWFsaXphYmxlSW1hZ2VMYXllckNocm9taXVtIDogcHVibGljIEltYWdl
TGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2VyaWFsaXphYmxlSW1hZ2VM
YXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpIDogSW1hZ2VMYXllckNocm9t
aXVtKGRlbGVnYXRlKSB7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVyPiBjcmVh
dGVDQ0xheWVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBMYXllclR5cGU6OmNyZWF0ZShtX2xh
eWVySWQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5
ZXIqIGxheWVyKQorICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXM8
TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVz
aFByb3BlcnRpZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgfQorfTsKKwordGVtcGxh
dGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgorUGFzc1JlZlB0cjxJbWFnZUxheWVyQ2hyb21pdW0+IElt
YWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVJbWFnZUxheWVyQ2hyb21pdW08TGF5
ZXJUeXBlPihkZWxlZ2F0ZSkpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDVlZmFkY2ZmMmIxMTdkMWVh
MjljMzU5ZjA1MWU4NThkODQ5NTAyNzIuLmMxMjkyNzBlZDM5NmY5Y2E2MjZhZmY0MmE3ZTc0OTlm
NGZiNWIwOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC00OSwxMSArNDksNiBAQCB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogCiBzdGF0aWMgaW50IHNfbmV4dExheWVySWQgPSAxOwogCi1QYXNz
UmVmUHRyPExheWVyQ2hyb21pdW0+IExheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdh
dGUqIGRlbGVnYXRlKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bShk
ZWxlZ2F0ZSkpOwotfQotCiBMYXllckNocm9taXVtOjpMYXllckNocm9taXVtKENDTGF5ZXJEZWxl
Z2F0ZSogZGVsZWdhdGUpCiAgICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRlKQogICAgICwgbV9uZWVk
c0Rpc3BsYXkoZmFsc2UpCkBAIC0zOTYsNDcgKzM5MSw2IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6
c2V0TmVlZHNEaXNwbGF5UmVjdChjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCkKICAgICBzZXRO
ZWVkc0NvbW1pdCgpOwogfQogCi12b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8o
Q0NMYXllckltcGwqIGxheWVyKQotewotICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChtX2FuY2hv
clBvaW50KTsKLSAgICBsYXllci0+c2V0QW5jaG9yUG9pbnRaKG1fYW5jaG9yUG9pbnRaKTsKLSAg
ICBsYXllci0+c2V0QmFja2dyb3VuZENvbG9yKG1fYmFja2dyb3VuZENvbG9yKTsKLSAgICBsYXll
ci0+c2V0Qm91bmRzKG1fYm91bmRzKTsKLSAgICBsYXllci0+c2V0Q29udGVudEJvdW5kcyhjb250
ZW50Qm91bmRzKCkpOwotICAgIGxheWVyLT5zZXREZWJ1Z0JvcmRlckNvbG9yKG1fZGVidWdCb3Jk
ZXJDb2xvcik7Ci0gICAgbGF5ZXItPnNldERlYnVnQm9yZGVyV2lkdGgobV9kZWJ1Z0JvcmRlcldp
ZHRoKTsKLSAgICBsYXllci0+c2V0RG91YmxlU2lkZWQobV9kb3VibGVTaWRlZCk7Ci0gICAgbGF5
ZXItPnNldERyYXdzQ29udGVudChkcmF3c0NvbnRlbnQoKSk7Ci0gICAgbGF5ZXItPnNldElzTm9u
Q29tcG9zaXRlZENvbnRlbnQobV9pc05vbkNvbXBvc2l0ZWRDb250ZW50KTsKLSAgICBsYXllci0+
c2V0TWFza3NUb0JvdW5kcyhtX21hc2tzVG9Cb3VuZHMpOwotICAgIGxheWVyLT5zZXRTY3JvbGxh
YmxlKG1fc2Nyb2xsYWJsZSk7Ci0gICAgbGF5ZXItPnNldE5hbWUobV9uYW1lKTsKLSAgICBsYXll
ci0+c2V0T3BhcXVlKG1fb3BhcXVlKTsKLSAgICBsYXllci0+c2V0T3BhY2l0eShtX29wYWNpdHkp
OwotICAgIGxheWVyLT5zZXRQb3NpdGlvbihtX3Bvc2l0aW9uKTsKLSAgICBsYXllci0+c2V0UHJl
c2VydmVzM0QocHJlc2VydmVzM0QoKSk7Ci0gICAgbGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uKG1f
c2Nyb2xsUG9zaXRpb24pOwotICAgIGxheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShtX3N1Ymxh
eWVyVHJhbnNmb3JtKTsKLSAgICBsYXllci0+c2V0VHJhbnNmb3JtKG1fdHJhbnNmb3JtKTsKLSAg
ICBsYXllci0+c2V0VXBkYXRlUmVjdChtX3VwZGF0ZVJlY3QpOwotCi0gICAgbGF5ZXItPnNldFNj
cm9sbERlbHRhKGxheWVyLT5zY3JvbGxEZWx0YSgpIC0gbGF5ZXItPnNlbnRTY3JvbGxEZWx0YSgp
KTsKLSAgICBsYXllci0+c2V0U2VudFNjcm9sbERlbHRhKEludFNpemUoKSk7Ci0KLSAgICBpZiAo
bWFza0xheWVyKCkpCi0gICAgICAgIG1hc2tMYXllcigpLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
LT5tYXNrTGF5ZXIoKSk7Ci0gICAgaWYgKHJlcGxpY2FMYXllcigpKQotICAgICAgICByZXBsaWNh
TGF5ZXIoKS0+cHVzaFByb3BlcnRpZXNUbyhsYXllci0+cmVwbGljYUxheWVyKCkpOwotCi0gICAg
Ly8gUmVzZXQgYW55IHN0YXRlIHRoYXQgc2hvdWxkIGJlIGNsZWFyZWQgZm9yIHRoZSBuZXh0IHVw
ZGF0ZS4KLSAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QoKTsKLX0KLQotUGFzc1JlZlB0cjxD
Q0xheWVySW1wbD4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQotewotICAgIHJl
dHVybiBDQ0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7Ci19Ci0KIHZvaWQgTGF5ZXJDaHJv
bWl1bTo6c2V0RGVidWdCb3JkZXJDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9k
ZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7CkBAIC00NzIsNiArNDI2LDE3IEBAIGJvb2wgTGF5ZXJD
aHJvbWl1bTo6ZGVzY2VuZGFudERyYXdzQ29udGVudCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CitQYXNzUmVmUHRyPENDTGF5ZXI+IExheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIoKQorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBQYXNzUmVmUHRyPENDTGF5ZXI+
KCk7Cit9CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVyKikK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBzb3J0TGF5ZXJzKFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPjo6aXRlcmF0b3IsIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPjo6aXRlcmF0b3IsIHZvaWQqKQogewogICAgIC8vIEN1cnJlbnRseSB3ZSBkb24n
dCB1c2Ugei1vcmRlciB0byBkZWNpZGUgd2hhdCB0byBwYWludCwgc28gdGhlcmUncyBubyBuZWVk
IHRvIGFjdHVhbGx5IHNvcnQgTGF5ZXJDaHJvbWl1bXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXgg
ZjkzNzU1ZjA5YmYxYzhlNjY1OTRjMzc0OGIwOTZmZjNlNmVjMDY4Ny4uOTM1ODI4NmUwYjQ3MmZl
OGFkOTIzOWVhNzBjM2IyYWI5MDBhZTk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMzQsNiAr
MzQsNyBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCisjaW5jbHVkZSAi
Y2MvQ0NMYXllci5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtNTEsNyArNTIsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NM
YXllclRyZWVIb3N0OwogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDNEOwpAQCAtNjgsNyArNjgsOCBAQCBwdWJsaWM6CiBjbGFzcyBMYXllckNocm9taXVtIDog
cHVibGljIFJlZkNvdW50ZWQ8TGF5ZXJDaHJvbWl1bT4gewogICAgIGZyaWVuZCBjbGFzcyBMYXll
clRpbGVyQ2hyb21pdW07CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExh
eWVyVHlwZT4gc3RhdGljIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJE
ZWxlZ2F0ZSopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIHZvaWQg
cHVzaFByb3BlcnRpZXMoY29uc3QgTGF5ZXJDaHJvbWl1bSosIENDTGF5ZXIqKTsKIAogICAgIHZp
cnR1YWwgfkxheWVyQ2hyb21pdW0oKTsKIApAQCAtMTcyLDcgKzE3Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldERlYnVnQm9yZGVyQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIHNldERl
YnVnQm9yZGVyV2lkdGgoZmxvYXQpOwogCi0gICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVz
VG8oQ0NMYXllckltcGwqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVyKik7CiAKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvcywgRnJh
Z21lbnRTaGFkZXJDb2xvcj4gQm9yZGVyUHJvZ3JhbTsKIApAQCAtMjA0LDYgKzIwNSw4IEBAIHB1
YmxpYzoKICAgICBDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QoKSBjb25zdCB7IHJldHVy
biBtX2xheWVyVHJlZUhvc3QuZ2V0KCk7IH0KICAgICB2b2lkIGNsZWFudXBSZXNvdXJjZXNSZWN1
cnNpdmUoKTsKIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVyPiBjcmVhdGVDQ0xheWVy
KCk7CisKIHByb3RlY3RlZDoKICAgICBDQ0xheWVyRGVsZWdhdGUqIG1fZGVsZWdhdGU7CiAgICAg
ZXhwbGljaXQgTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqKTsKQEAgLTIyNSwxMCArMjI4
LDYgQEAgcHJvdGVjdGVkOgogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fbWFza0xheWVy
OwogCi0gICAgZnJpZW5kIGNsYXNzIFRyZWVTeW5jaHJvbml6ZXI7Ci0gICAgZnJpZW5kIGNsYXNz
IENDTGF5ZXJJbXBsOwotICAgIC8vIENvbnN0cnVjdHMgYSBDQ0xheWVySW1wbCBvZiB0aGUgY29y
cmVjdCBydW50aW1lIHR5cGUgZm9yIHRoaXMgTGF5ZXJDaHJvbWl1bSB0eXBlLgotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKICAgICBpbnQg
bV9sYXllcklkOwogCiBwcml2YXRlOgpAQCAtMjkxLDYgKzI5MCw1OCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9wYWdlU2NhbGVEaXJ0eTsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlw
ZT4gY2xhc3MgU2VyaWFsaXphYmxlTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVt
IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTZXJpYWxpemFibGVMYXllckNocm9taXVtKENDTGF5
ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpIDogTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkgeyB9CisKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllcj4gY3JlYXRlQ0NMYXllcigpCisgICAgeworICAg
ICAgICByZXR1cm4gTGF5ZXJUeXBlOjpjcmVhdGUobV9sYXllcklkKTsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVyKiBsYXllcikKKyAgICB7CisgICAg
ICAgIHB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgIH0KK307CisK
K3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK1Bhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVMYXllckNocm9taXVtPExheWVyVHlwZT4o
ZGVsZWdhdGUpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgordm9pZCBMYXll
ckNocm9taXVtOjpwdXNoUHJvcGVydGllcyhjb25zdCBMYXllckNocm9taXVtKiBmcm9tLCBDQ0xh
eWVyKiB0bykKK3sKKyAgICBMYXllclR5cGUqIGxheWVyID0gc3RhdGljX2Nhc3Q8TGF5ZXJUeXBl
Kj4odG8pOworCisgICAgbGF5ZXItPnNldEFuY2hvclBvaW50KGZyb20tPm1fYW5jaG9yUG9pbnQp
OworICAgIGxheWVyLT5zZXRBbmNob3JQb2ludFooZnJvbS0+bV9hbmNob3JQb2ludFopOworICAg
IGxheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoZnJvbS0+bV9iYWNrZ3JvdW5kQ29sb3IpOworICAg
IGxheWVyLT5zZXRCb3VuZHMoZnJvbS0+bV9ib3VuZHMpOworICAgIGxheWVyLT5zZXRDb250ZW50
Qm91bmRzKGZyb20tPmNvbnRlbnRCb3VuZHMoKSk7CisgICAgbGF5ZXItPnNldERlYnVnQm9yZGVy
Q29sb3IoZnJvbS0+bV9kZWJ1Z0JvcmRlckNvbG9yKTsKKyAgICBsYXllci0+c2V0RGVidWdCb3Jk
ZXJXaWR0aChmcm9tLT5tX2RlYnVnQm9yZGVyV2lkdGgpOworICAgIGxheWVyLT5zZXREb3VibGVT
aWRlZChmcm9tLT5tX2RvdWJsZVNpZGVkKTsKKyAgICBsYXllci0+c2V0RHJhd3NDb250ZW50KGZy
b20tPmRyYXdzQ29udGVudCgpKTsKKyAgICBsYXllci0+c2V0SXNOb25Db21wb3NpdGVkQ29udGVu
dChmcm9tLT5tX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQpOworICAgIGxheWVyLT5zZXRNYXNrc1Rv
Qm91bmRzKGZyb20tPm1fbWFza3NUb0JvdW5kcyk7CisgICAgbGF5ZXItPnNldFNjcm9sbGFibGUo
ZnJvbS0+bV9zY3JvbGxhYmxlKTsKKyAgICBsYXllci0+c2V0TmFtZShmcm9tLT5tX25hbWUpOwor
ICAgIGxheWVyLT5zZXRPcGFxdWUoZnJvbS0+bV9vcGFxdWUpOworICAgIGxheWVyLT5zZXRPcGFj
aXR5KGZyb20tPm1fb3BhY2l0eSk7CisgICAgbGF5ZXItPnNldFBvc2l0aW9uKGZyb20tPm1fcG9z
aXRpb24pOworICAgIGxheWVyLT5zZXRQcmVzZXJ2ZXMzRChmcm9tLT5wcmVzZXJ2ZXMzRCgpKTsK
KyAgICBsYXllci0+c2V0U2Nyb2xsUG9zaXRpb24oZnJvbS0+bV9zY3JvbGxQb3NpdGlvbik7Cisg
ICAgbGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKGZyb20tPm1fc3VibGF5ZXJUcmFuc2Zvcm0p
OworICAgIGxheWVyLT5zZXRUcmFuc2Zvcm0oZnJvbS0+bV90cmFuc2Zvcm0pOworICAgIGxheWVy
LT5zZXRVcGRhdGVSZWN0KGZyb20tPm1fdXBkYXRlUmVjdCk7CisKKyAgICBsYXllci0+c2V0U2Ny
b2xsRGVsdGEobGF5ZXItPnNjcm9sbERlbHRhKCkgLSBsYXllci0+c2VudFNjcm9sbERlbHRhKCkp
OworICAgIGxheWVyLT5zZXRTZW50U2Nyb2xsRGVsdGEoSW50U2l6ZSgpKTsKK30KKwogdm9pZCBz
b3J0TGF5ZXJzKFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPjo6aXRlcmF0b3IsIFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPjo6aXRlcmF0b3IsIHZvaWQqKTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9QbHVnaW5MYXllckNocm9taXVtLmNwcAppbmRleCBlM2M1YzQ4Zjc5MjBmZWVjNzA4ZTRkYWM3
YWVmNjRlMjNlOGFhZjAwLi42OWFhMzUwMWQ5M2VkMmY3MmFkOTQwZmViZGIyOWFmNTM4OTJmYjkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Q
bHVnaW5MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcApAQCAtMzYsMTEgKzM2LDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+
IFBsdWdpbkxheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQot
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkp
OwotfQotCiBQbHVnaW5MYXllckNocm9taXVtOjpQbHVnaW5MYXllckNocm9taXVtKENDTGF5ZXJE
ZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgOiBMYXllckNocm9taXVtKGRlbGVnYXRlKQogICAgICwg
bV90ZXh0dXJlSWQoMCkKQEAgLTYzLDExICs1OCw2IEBAIHZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJD
CiAgICAgbV9kaXJ0eVJlY3QgPSBGbG9hdFJlY3QoKTsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVy
SW1wbD4gUGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQotewotICAgIHJl
dHVybiBDQ1BsdWdpbkxheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7Ci19Ci0KIHZvaWQgUGx1
Z2luTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZUlkKHVuc2lnbmVkIGlkKQogewogICAgIG1fdGV4
dHVyZUlkID0gaWQ7CkBAIC05OSwxNyArODksNiBAQCB1aW50MzJfdCBQbHVnaW5MYXllckNocm9t
aXVtOjpnZXRJT1N1cmZhY2VJZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW9TdXJmYWNlSWQ7CiB9
CiAKLXZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1w
bCogbGF5ZXIpCi17Ci0gICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhsYXllcik7
Ci0KLSAgICBDQ1BsdWdpbkxheWVySW1wbCogcGx1Z2luTGF5ZXIgPSBzdGF0aWNfY2FzdDxDQ1Bs
dWdpbkxheWVySW1wbCo+KGxheWVyKTsKLSAgICBwbHVnaW5MYXllci0+c2V0VGV4dHVyZUlkKG1f
dGV4dHVyZUlkKTsKLSAgICBwbHVnaW5MYXllci0+c2V0RmxpcHBlZChtX2ZsaXBwZWQpOwotICAg
IHBsdWdpbkxheWVyLT5zZXRVVlJlY3QobV91dlJlY3QpOwotICAgIHBsdWdpbkxheWVyLT5zZXRJ
T1N1cmZhY2VQcm9wZXJ0aWVzKG1faW9TdXJmYWNlV2lkdGgsIG1faW9TdXJmYWNlSGVpZ2h0LCBt
X2lvU3VyZmFjZUlkKTsKLX0KLQogdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjppbnZhbGlkYXRl
UmVjdChjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCkKIHsKICAgICBzZXROZWVkc0Rpc3BsYXlS
ZWN0KGRpcnR5UmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKaW5kZXggMjc3YTk2
OWM1OGNjM2Y1ODM0NTg3ZTA3NzhmZmQxYzYyNzdkNjZmNi4uN2FkMjA2OGIyYWY3ZjJhZDcyYjNj
MTExYjcyZTdmMWNmZGNiNmFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaApAQCAt
MzYsMTIgKzM2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEEgTGF5ZXIgY29udGFpbmlu
ZyBhIHRoZSByZW5kZXJlZCBvdXRwdXQgb2YgYSBwbHVnaW4gaW5zdGFuY2UuCiBjbGFzcyBQbHVn
aW5MYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdh
dGUqID0gMCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgUGFzc1Jl
ZlB0cjxQbHVnaW5MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgdm9pZCBwdXNoUHJvcGVydGllcyhQ
bHVnaW5MYXllckNocm9taXVtKiwgQ0NMYXllciopOworCiAgICAgdmlydHVhbCBib29sIGRyYXdz
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXIm
KTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllcklt
cGwoKTsKLQogICAgIC8vIENvZGUgcGF0aCBmb3IgcGx1Z2lucyB3aGljaCBzdXBwbHkgdGhlaXIg
b3duIHRleHR1cmUgSUQuCiAgICAgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlk
KTsKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsg
fQpAQCAtNTQsOCArNTQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJT1N1cmZhY2VQcm9wZXJ0
aWVzKGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDMyX3QgaW9TdXJmYWNlSWQpOwogICAgIHVp
bnQzMl90IGdldElPU3VyZmFjZUlkKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHVzaFBy
b3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwotCiAgICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25z
dCBGbG9hdFJlY3QmIGRpcnR5UmVjdCk7CiAKIHByb3RlY3RlZDoKQEAgLTcxLDYgKzY5LDM5IEBA
IHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fZGlydHlSZWN0OwogfTsKIAordGVtcGxhdGU8dHlw
ZW5hbWUgTGF5ZXJUeXBlPiBjbGFzcyBTZXJpYWxpemFibGVQbHVnaW5MYXllckNocm9taXVtIDog
cHVibGljIFBsdWdpbkxheWVyQ2hyb21pdW0geworcHVibGljOgorICAgIGV4cGxpY2l0IFNlcmlh
bGl6YWJsZVBsdWdpbkxheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkgOiBQ
bHVnaW5MYXllckNocm9taXVtKGRlbGVnYXRlKSB7IH0KKworICAgIFBhc3NSZWZQdHI8Q0NMYXll
cj4gY3JlYXRlQ0NMYXllcigpCisgICAgeworICAgICAgICByZXR1cm4gTGF5ZXJUeXBlOjpjcmVh
dGUobV9sYXllcklkKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNU
byhDQ0xheWVyKiBsYXllcikKKyAgICB7CisgICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9w
ZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgICAgICBwdXNoUHJvcGVydGllczxM
YXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBM
YXllclR5cGU+CitQYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IFBsdWdpbkxheWVyQ2hy
b21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2VyaWFsaXphYmxlUGx1Z2luTGF5ZXJDaHJvbWl1bTxMYXllclR5cGU+KGRl
bGVnYXRlKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK3ZvaWQgUGx1Z2lu
TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXMoUGx1Z2luTGF5ZXJDaHJvbWl1bSogZnJvbSwg
Q0NMYXllciogdG8pCit7CisgICAgTGF5ZXJUeXBlKiBsYXllciA9IHN0YXRpY19jYXN0PExheWVy
VHlwZSo+KHRvKTsKKworICAgIGxheWVyLT5zZXRUZXh0dXJlSWQoZnJvbS0+bV90ZXh0dXJlSWQp
OworICAgIGxheWVyLT5zZXRGbGlwcGVkKGZyb20tPm1fZmxpcHBlZCk7CisgICAgbGF5ZXItPnNl
dFVWUmVjdChmcm9tLT5tX3V2UmVjdCk7CisgICAgbGF5ZXItPnNldElPU3VyZmFjZVByb3BlcnRp
ZXMoZnJvbS0+bV9pb1N1cmZhY2VXaWR0aCwgZnJvbS0+bV9pb1N1cmZhY2VIZWlnaHQsIGZyb20t
Pm1faW9TdXJmYWNlSWQpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCAzMjk5MzIyOTBl
N2E4MGU1ZDg0OTAxOThkMWMxZTgxOWE4ODIyMGEyLi5kYmUyYWRlNGQwOTJlZTYyNDZjYWQ5MDRh
ODYzYjhkNDY5Yjc4M2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ5
LDI1ICs0OSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgVXBkYXRhYmxlVGlsZSA6IHB1YmxpYyBDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZSB7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVXBkYXRhYmxlVGlsZSk7Ci1wdWJsaWM6Ci0gICAg
ZXhwbGljaXQgVXBkYXRhYmxlVGlsZShQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQotCi0gICAgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsg
fQotICAgIE1hbmFnZWRUZXh0dXJlKiBtYW5hZ2VkVGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVy
ZS0+dGV4dHVyZSgpOyB9Ci0KLSAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiAhbV9k
aXJ0eUxheWVyUmVjdC5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIGNsZWFyRGlydHkoKSB7IG1fZGly
dHlMYXllclJlY3QgPSBJbnRSZWN0KCk7IH0KLQotICAgIC8vIExheWVyLXNwYWNlIGRpcnR5IHJl
Y3RhbmdsZSB0aGF0IG5lZWRzIHRvIGJlIHJlcGFpbnRlZC4KLSAgICBJbnRSZWN0IG1fZGlydHlM
YXllclJlY3Q7Ci0gICAgLy8gQ29udGVudC1zcGFjZSByZWN0YW5nbGUgdGhhdCBuZWVkcyB0byBi
ZSB1cGRhdGVkLgotICAgIEludFJlY3QgbV91cGRhdGVSZWN0OwotcHJpdmF0ZToKLSAgICBPd25Q
dHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gbV90ZXh0dXJlOwotfTsKLQogVGlsZWRM
YXllckNocm9taXVtOjpUaWxlZExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0
ZSkKICAgICA6IExheWVyQ2hyb21pdW0oZGVsZWdhdGUpCiAgICAgLCBtX3RleHR1cmVGb3JtYXQo
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSkKQEAgLTgyLDExICs2Myw2IEBAIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6flRpbGVkTGF5ZXJDaHJvbWl1bSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8
Q0NMYXllckltcGw+IFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQotewot
ICAgIHJldHVybiBDQ1RpbGVkTGF5ZXJJbXBsOjpjcmVhdGUoaWQoKSk7Ci19Ci0KIHZvaWQgVGls
ZWRMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKIHsKICAgICBMYXllckNocm9taXVt
OjpjbGVhbnVwUmVzb3VyY2VzKCk7CkBAIC0yNDUsMzMgKzIyMSw2IEBAIHZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjpzZXRJc01hc2soYm9vbCBpc01hc2spCiAgICAgc2V0VGlsaW5nT3B0aW9uKGlz
TWFzayA/IE5ldmVyVGlsZSA6IEF1dG9UaWxlKTsKIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21p
dW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQotewotICAgIExheWVyQ2hy
b21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwotCi0gICAgQ0NUaWxlZExheWVySW1wbCog
dGlsZWRMYXllciA9IHN0YXRpY19jYXN0PENDVGlsZWRMYXllckltcGwqPihsYXllcik7Ci0gICAg
aWYgKCFtX3RpbGVyKSB7Ci0gICAgICAgIHRpbGVkTGF5ZXItPnNldFNraXBzRHJhdyh0cnVlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHRpbGVkTGF5ZXItPnNldFNraXBzRHJhdyht
X3NraXBzRHJhdyk7Ci0gICAgdGlsZWRMYXllci0+c2V0Q29udGVudHNTd2l6emxlZChtX3NhbXBs
ZWRUZXhlbEZvcm1hdCAhPSBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRS
R0JBKTsKLSAgICB0aWxlZExheWVyLT5zZXRUaWxpbmdEYXRhKCptX3RpbGVyKTsKLQotICAgIGZv
ciAoQ0NMYXllclRpbGluZ0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3Rp
bGVyLT50aWxlcygpLmJlZ2luKCk7IGl0ZXIgIT0gbV90aWxlci0+dGlsZXMoKS5lbmQoKTsgKytp
dGVyKSB7Ci0gICAgICAgIGludCBpID0gaXRlci0+Zmlyc3QuZmlyc3Q7Ci0gICAgICAgIGludCBq
ID0gaXRlci0+Zmlyc3Quc2Vjb25kOwotICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gc3Rh
dGljX2Nhc3Q8VXBkYXRhYmxlVGlsZSo+KGl0ZXItPnNlY29uZC5nZXQoKSk7Ci0gICAgICAgIGlm
ICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBt
X3RleHR1cmVGb3JtYXQpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICh0aWxl
LT5pc0RpcnR5KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICB0aWxlZExheWVy
LT5zeW5jVGV4dHVyZUlkKGksIGosIHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnRleHR1cmVJZCgp
KTsKLSAgICB9Ci19Ci0KIFRleHR1cmVNYW5hZ2VyKiBUaWxlZExheWVyQ2hyb21pdW06OnRleHR1
cmVNYW5hZ2VyKCkgY29uc3QKIHsKICAgICBpZiAoIWxheWVyVHJlZUhvc3QoKSkKQEAgLTQ0Nyw2
ICszOTYsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgIG1fc2tpcHNJZGxlUGFpbnQgPSBmYWxzZTsKICAg
ICBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJlY3QoKTsKICAgICBtX3BhaW50UmVj
dCA9IEludFJlY3QoKTsKKyAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QoKTsKIAogICAgIG1f
dGlsZXItPmdyb3dMYXllclRvQ29udGFpbihJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGNvbnRl
bnRCb3VuZHMoKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDRiMGNjNTU1
MWNiYTAyNjhjODRlZTFmOTRkNTFmNWNkNWZmNjBjZTUuLjFjZDc2OTQzNGJkYTQzMDMwZjExZTdm
NzkwYTA0Y2M5YzE4MTQ3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC0zNSwx
OSArMzUsMzcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGF5ZXJUZXh0dXJlVXBk
YXRlcjsKLWNsYXNzIFVwZGF0YWJsZVRpbGU7CisKK2NsYXNzIFVwZGF0YWJsZVRpbGUgOiBwdWJs
aWMgQ0NMYXllclRpbGluZ0RhdGE6OlRpbGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVw
ZGF0YWJsZVRpbGUpOworcHVibGljOgorICAgIGV4cGxpY2l0IFVwZGF0YWJsZVRpbGUoUGFzc093
blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0
ZXh0dXJlKSB7IH0KKworICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUo
KSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKyAgICBNYW5hZ2VkVGV4dHVyZSogbWFuYWdl
ZFRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUtPnRleHR1cmUoKTsgfQorCisgICAgYm9vbCBp
c0RpcnR5KCkgY29uc3QgeyByZXR1cm4gIW1fZGlydHlMYXllclJlY3QuaXNFbXB0eSgpOyB9Cisg
ICAgdm9pZCBjbGVhckRpcnR5KCkgeyBtX2RpcnR5TGF5ZXJSZWN0ID0gSW50UmVjdCgpOyB9CisK
KyAgICAvLyBMYXllci1zcGFjZSBkaXJ0eSByZWN0YW5nbGUgdGhhdCBuZWVkcyB0byBiZSByZXBh
aW50ZWQuCisgICAgSW50UmVjdCBtX2RpcnR5TGF5ZXJSZWN0OworICAgIC8vIENvbnRlbnQtc3Bh
Y2UgcmVjdGFuZ2xlIHRoYXQgbmVlZHMgdG8gYmUgdXBkYXRlZC4KKyAgICBJbnRSZWN0IG1fdXBk
YXRlUmVjdDsKK3ByaXZhdGU6CisgICAgT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU+IG1fdGV4dHVyZTsKK307CiAKIGNsYXNzIFRpbGVkTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBM
YXllckNocm9taXVtIHsKIHB1YmxpYzoKICAgICBlbnVtIFRpbGluZ09wdGlvbiB7IEFsd2F5c1Rp
bGUsIE5ldmVyVGlsZSwgQXV0b1RpbGUgfTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVy
VHlwZT4gc3RhdGljIHZvaWQgcHVzaFByb3BlcnRpZXMoY29uc3QgVGlsZWRMYXllckNocm9taXVt
KiwgQ0NMYXllciopOworCiAgICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtKCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wp
OwogCi0gICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKLQog
ICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
bmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3Q7CiAKQEAgLTkwLDggKzEwOCw2IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NM
YXllckltcGwoKTsKLQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJU
cmVlSG9zdCopOwogCiAgICAgdm9pZCBjcmVhdGVUaWxlcklmTmVlZGVkKCk7CkBAIC0xMjAsNiAr
MTM2LDMzIEBAIHByaXZhdGU6CiAgICAgT3duUHRyPENDTGF5ZXJUaWxpbmdEYXRhPiBtX3RpbGVy
OwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgordm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnB1c2hQcm9wZXJ0aWVzKGNvbnN0IFRpbGVkTGF5ZXJDaHJvbWl1bSogZnJvbSwgQ0NM
YXllciogdG8pCit7CisgICAgTGF5ZXJUeXBlKiBsYXllciA9IHN0YXRpY19jYXN0PExheWVyVHlw
ZSo+KHRvKTsKKworICAgIGlmICghZnJvbS0+bV90aWxlcikgeworICAgICAgICBsYXllci0+c2V0
U2tpcHNEcmF3KHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF5ZXItPnNl
dFNraXBzRHJhdyhmcm9tLT5tX3NraXBzRHJhdyk7CisgICAgbGF5ZXItPnNldENvbnRlbnRzU3dp
enpsZWQoZnJvbS0+bV9zYW1wbGVkVGV4ZWxGb3JtYXQgIT0gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
U2FtcGxlZFRleGVsRm9ybWF0UkdCQSk7CisgICAgbGF5ZXItPnNldFRpbGluZ0RhdGEoKihmcm9t
LT5tX3RpbGVyKSk7CisKKyAgICBmb3IgKENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxlTWFwOjpjb25z
dF9pdGVyYXRvciBpdGVyID0gZnJvbS0+bV90aWxlci0+dGlsZXMoKS5iZWdpbigpOyBpdGVyICE9
IGZyb20tPm1fdGlsZXItPnRpbGVzKCkuZW5kKCk7ICsraXRlcikgeworICAgICAgICBpbnQgaSA9
IGl0ZXItPmZpcnN0LmZpcnN0OworICAgICAgICBpbnQgaiA9IGl0ZXItPmZpcnN0LnNlY29uZDsK
KyAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUq
PihpdGVyLT5zZWNvbmQuZ2V0KCkpOworICAgICAgICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJl
KCktPmlzVmFsaWQoZnJvbS0+bV90aWxlci0+dGlsZVNpemUoKSwgZnJvbS0+bV90ZXh0dXJlRm9y
bWF0KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAodGlsZS0+aXNEaXJ0eSgp
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbGF5ZXItPnN5bmNUZXh0dXJlSWQo
aSwgaiwgdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgIH0KK30KKwog
fQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXpl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3lu
Y2hyb25pemVyLmNwcAppbmRleCBkMGZkMGNlNTIzZDYzODg0YmU5MzJlMWJkNDE2NTgyZjI1NzYy
ZTQwLi40ZDljZTE4MGEwYmVmOTE2NmM2MmIxMDk2ZjNjYTg5NWViOTg1MjYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25p
emVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
cmVlU3luY2hyb25pemVyLmNwcApAQCAtMzMsNjMgKzMzLDcxIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdm9pZCBUcmVlU3luY2hyb25pemVyOjphZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vy
c2l2ZShDQ0xheWVySW1wbE1hcCYgbWFwLCBDQ0xheWVySW1wbCogY2NMYXllckltcGwpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDQ0xheWVyVHlwZT4KK3ZvaWQgVHJlZVN5bmNocm9uaXplcjo6YWRkQ0NM
YXllcnNUb01hcFJlY3Vyc2l2ZShDQ0xheWVyTWFwJiBtYXAsIENDTGF5ZXJUeXBlKiBjY0xheWVy
KQogewotICAgIG1hcC5zZXQoY2NMYXllckltcGwtPmlkKCksIGNjTGF5ZXJJbXBsKTsKKyAgICBt
YXAuc2V0KGNjTGF5ZXItPmlkKCksIGNjTGF5ZXIpOwogCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0
cjxDQ0xheWVySW1wbD4gPiYgY2hpbGRyZW4gPSBjY0xheWVySW1wbC0+Y2hpbGRyZW4oKTsKKyAg
ICBjb25zdCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJUeXBlPiA+JiBjaGlsZHJlbiA9IGNjTGF5ZXIt
PmNoaWxkcmVuKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7
ICsraSkKLSAgICAgICAgYWRkQ0NMYXllckltcGxzVG9NYXBSZWN1cnNpdmUobWFwLCBjaGlsZHJl
bltpXS5nZXQoKSk7CisgICAgICAgIGFkZENDTGF5ZXJzVG9NYXBSZWN1cnNpdmU8Q0NMYXllclR5
cGU+KG1hcCwgY2hpbGRyZW5baV0uZ2V0KCkpOwogCi0gICAgaWYgKENDTGF5ZXJJbXBsKiBtYXNr
TGF5ZXIgPSBjY0xheWVySW1wbC0+bWFza0xheWVyKCkpCi0gICAgICAgIGFkZENDTGF5ZXJJbXBs
c1RvTWFwUmVjdXJzaXZlKG1hcCwgbWFza0xheWVyKTsKKyAgICBpZiAoQ0NMYXllclR5cGUqIG1h
c2tMYXllciA9IGNjTGF5ZXItPm1hc2tMYXllcigpKQorICAgICAgICBhZGRDQ0xheWVyc1RvTWFw
UmVjdXJzaXZlPENDTGF5ZXJUeXBlPihtYXAsIG1hc2tMYXllcik7CiAKLSAgICBpZiAoQ0NMYXll
ckltcGwqIHJlcGxpY2FMYXllciA9IGNjTGF5ZXJJbXBsLT5yZXBsaWNhTGF5ZXIoKSkKLSAgICAg
ICAgYWRkQ0NMYXllckltcGxzVG9NYXBSZWN1cnNpdmUobWFwLCByZXBsaWNhTGF5ZXIpOworICAg
IGlmIChDQ0xheWVyVHlwZSogcmVwbGljYUxheWVyID0gY2NMYXllci0+cmVwbGljYUxheWVyKCkp
CisgICAgICAgIGFkZENDTGF5ZXJzVG9NYXBSZWN1cnNpdmU8Q0NMYXllclR5cGU+KG1hcCwgcmVw
bGljYUxheWVyKTsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gVHJlZVN5bmNocm9uaXpl
cjo6c3luY2hyb25pemVUcmVlUmVjdXJzaXZlKExheWVyQ2hyb21pdW0qIGxheWVyLCBDQ0xheWVy
SW1wbE1hcCYgbWFwKQordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBDQ0xh
eWVyVHlwZT4KK1Bhc3NSZWZQdHI8Q0NMYXllclR5cGU+IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNo
cm9uaXplVHJlZVJlY3Vyc2l2ZShMYXllclR5cGUqIGxheWVyLCBDQ0xheWVyTWFwJiBtYXApCiB7
Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVySW1wbDsKLSAgICBDQ0xheWVySW1wbE1h
cDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZChsYXllci0+aWQoKSk7CisgICAgUmVmUHRyPENDTGF5
ZXJUeXBlPiBjY0xheWVyOworICAgIENDTGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQo
bGF5ZXItPmlkKCkpOwogICAgIGlmIChpdCAhPSBtYXAuZW5kKCkpIHsKLSAgICAgICAgY2NMYXll
ckltcGwgPSBpdC0+c2Vjb25kOyAvLyBXZSBhbHJlYWR5IGhhdmUgYW4gZW50cnkgZm9yIHRoaXMs
IHdlIGp1c3QgbmVlZCB0byByZXBhcmVudCBpdC4KLSAgICAgICAgY2NMYXllckltcGwtPmNsZWFy
Q2hpbGRMaXN0KCk7CisgICAgICAgIGNjTGF5ZXIgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PENDTGF5
ZXJUeXBlLCBDQ0xheWVyPihpdC0+c2Vjb25kKTsgLy8gV2UgYWxyZWFkeSBoYXZlIGFuIGVudHJ5
IGZvciB0aGlzLCB3ZSBqdXN0IG5lZWQgdG8gcmVwYXJlbnQgaXQuCisgICAgICAgIGNjTGF5ZXIt
PmNsZWFyQ2hpbGRMaXN0KCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2NMYXllckltcGwgPSBs
YXllci0+Y3JlYXRlQ0NMYXllckltcGwoKTsKLSAgICAgICAgbWFwLnNldChsYXllci0+aWQoKSwg
Y2NMYXllckltcGwpOyAvLyBBZGQgaXQgdG8gdGhlIG1hcCBzbyBvdGhlciBsYXllcnMgcmVmZXJl
bmNpbmcgdGhpcyBvbmUgY2FuIHBpY2sgaXQgdXAuCisgICAgICAgIGNjTGF5ZXIgPSBzdGF0aWNf
cG9pbnRlcl9jYXN0PENDTGF5ZXJUeXBlLCBDQ0xheWVyPihsYXllci0+Y3JlYXRlQ0NMYXllcigp
KTsKKyAgICAgICAgbWFwLnNldChsYXllci0+aWQoKSwgY2NMYXllcik7IC8vIEFkZCBpdCB0byB0
aGUgbWFwIHNvIG90aGVyIGxheWVycyByZWZlcmVuY2luZyB0aGlzIG9uZSBjYW4gcGljayBpdCB1
cC4KICAgICB9CiAKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIGNo
aWxkcmVuID0gbGF5ZXItPmNoaWxkcmVuKCk7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXll
clR5cGU+ID4mIGNoaWxkcmVuID0gbGF5ZXItPmNoaWxkcmVuKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsraSkKLSAgICAgICAgY2NMYXllckltcGwtPmFk
ZENoaWxkKHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShjaGlsZHJlbltpXS5nZXQoKSwgbWFwKSk7
CisgICAgICAgIGNjTGF5ZXItPmFkZENoaWxkKHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZTxMYXll
clR5cGUsIENDTGF5ZXJUeXBlPihjaGlsZHJlbltpXS5nZXQoKSwgbWFwKSk7CiAKLSAgICBpZiAo
TGF5ZXJDaHJvbWl1bSogbWFza0xheWVyID0gbGF5ZXItPm1hc2tMYXllcigpKQotICAgICAgICBj
Y0xheWVySW1wbC0+c2V0TWFza0xheWVyKHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShtYXNrTGF5
ZXIsIG1hcCkpOworICAgIGlmIChMYXllclR5cGUqIG1hc2tMYXllciA9IGxheWVyLT5tYXNrTGF5
ZXIoKSkKKyAgICAgICAgY2NMYXllci0+c2V0TWFza0xheWVyKHN5bmNocm9uaXplVHJlZVJlY3Vy
c2l2ZTxMYXllclR5cGUsIENDTGF5ZXJUeXBlPihtYXNrTGF5ZXIsIG1hcCkpOwogICAgIGVsc2UK
LSAgICAgICAgY2NMYXllckltcGwtPnNldE1hc2tMYXllcigwKTsKKyAgICAgICAgY2NMYXllci0+
c2V0TWFza0xheWVyKDApOwogCi0gICAgaWYgKExheWVyQ2hyb21pdW0qIHJlcGxpY2FMYXllciA9
IGxheWVyLT5yZXBsaWNhTGF5ZXIoKSkKLSAgICAgICAgY2NMYXllckltcGwtPnNldFJlcGxpY2FM
YXllcihzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUocmVwbGljYUxheWVyLCBtYXApKTsKKyAgICBp
ZiAoTGF5ZXJUeXBlKiByZXBsaWNhTGF5ZXIgPSBsYXllci0+cmVwbGljYUxheWVyKCkpCisgICAg
ICAgIGNjTGF5ZXItPnNldFJlcGxpY2FMYXllcihzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmU8TGF5
ZXJUeXBlLCBDQ0xheWVyVHlwZT4ocmVwbGljYUxheWVyLCBtYXApKTsKICAgICBlbHNlCi0gICAg
ICAgIGNjTGF5ZXJJbXBsLT5zZXRSZXBsaWNhTGF5ZXIoMCk7CisgICAgICAgIGNjTGF5ZXItPnNl
dFJlcGxpY2FMYXllcigwKTsKIAotICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGNjTGF5ZXJJ
bXBsLmdldCgpKTsKLSAgICByZXR1cm4gY2NMYXllckltcGwucmVsZWFzZSgpOworICAgIGxheWVy
LT5wdXNoUHJvcGVydGllc1RvKGNjTGF5ZXIuZ2V0KCkpOworICAgIHJldHVybiBjY0xheWVyLnJl
bGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gVHJlZVN5bmNocm9uaXplcjo6
c3luY2hyb25pemVUcmVlcyhMYXllckNocm9taXVtKiBsYXllckNocm9taXVtUm9vdCwgUGFzc1Jl
ZlB0cjxDQ0xheWVySW1wbD4gcHJwT2xkQ0NMYXllckltcGxSb290KQordGVtcGxhdGU8dHlwZW5h
bWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBDQ0xheWVyVHlwZT4KK1Bhc3NSZWZQdHI8Q0NMYXllclR5
cGU+IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXNJbnRlcm5hbChMYXllclR5cGUq
IGxheWVyUm9vdCwgUGFzc1JlZlB0cjxDQ0xheWVyVHlwZT4gcHJwT2xkQ0NMYXllclJvb3QpCiB7
Ci0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBvbGRDQ0xheWVySW1wbFJvb3QgPSBwcnBPbGRDQ0xh
eWVySW1wbFJvb3Q7Ci0gICAgLy8gQnVpbGQgYSBtYXAgZnJvbSBsYXllciBJRHMgdG8gQ0NMYXll
ckltcGxzIHNvIHdlIGNhbiByZXVzZSBsYXllcnMgZnJvbSB0aGUgb2xkIHRyZWUuCi0gICAgQ0NM
YXllckltcGxNYXAgbWFwOwotICAgIGlmIChvbGRDQ0xheWVySW1wbFJvb3QpCi0gICAgICAgIGFk
ZENDTGF5ZXJJbXBsc1RvTWFwUmVjdXJzaXZlKG1hcCwgb2xkQ0NMYXllckltcGxSb290LmdldCgp
KTsKKyAgICBSZWZQdHI8Q0NMYXllclR5cGU+IG9sZENDTGF5ZXJSb290ID0gcHJwT2xkQ0NMYXll
clJvb3Q7CisgICAgLy8gQnVpbGQgYSBtYXAgZnJvbSBsYXllciBJRHMgdG8gQ0NMYXllcnMgc28g
d2UgY2FuIHJldXNlIGxheWVycyBmcm9tIHRoZSBvbGQgdHJlZS4KKyAgICBDQ0xheWVyTWFwIG1h
cDsKKyAgICBpZiAob2xkQ0NMYXllclJvb3QpCisgICAgICAgIGFkZENDTGF5ZXJzVG9NYXBSZWN1
cnNpdmU8Q0NMYXllclR5cGU+KG1hcCwgb2xkQ0NMYXllclJvb3QuZ2V0KCkpOwogCiAgICAgLy8g
UmVjdXJzaXZlbHkgYnVpbGQgdGhlIG5ldyBsYXllciB0cmVlLgotICAgIFJlZlB0cjxDQ0xheWVy
SW1wbD4gbmV3Q0NMYXllckltcGxSb290ID0gc3luY2hyb25pemVUcmVlUmVjdXJzaXZlKGxheWVy
Q2hyb21pdW1Sb290LCBtYXApOworICAgIFJlZlB0cjxDQ0xheWVyVHlwZT4gbmV3Q0NMYXllclJv
b3QgPSBzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmU8TGF5ZXJUeXBlLCBDQ0xheWVyVHlwZT4obGF5
ZXJSb290LCBtYXApOwogCi0gICAgcmV0dXJuIG5ld0NDTGF5ZXJJbXBsUm9vdC5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIG5ld0NDTGF5ZXJSb290LnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxD
Q0xheWVySW1wbD4gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhMYXllckNocm9t
aXVtKiBsYXllclJvb3QsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IG9sZENDTGF5ZXJJbXBsUm9v
dCkKK3sKKyAgICByZXR1cm4gc3luY2hyb25pemVUcmVlc0ludGVybmFsPExheWVyQ2hyb21pdW0s
IENDTGF5ZXJJbXBsPihsYXllclJvb3QsIG9sZENDTGF5ZXJJbXBsUm9vdCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuaAppbmRleCBhNGU0OTQyMTcz
OTVlOGQyZTEyOTZiZDY1NjY2MmUzMmIxMTlhY2ZmLi5kNWIwOWVkOTU2N2FlOGM5MjNiZWU1MmU5
YWMxY2I4NTlkZDkzMmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5oCkBAIC0zMiw2ICszMiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ0NMYXllcjsKIGNsYXNzIENDTGF5
ZXJJbXBsOwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIApAQCAtNDUsMTEgKzQ2LDE1IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgVHJlZVN5bmNocm9uaXplcigpOyAvLyBOb3QgaW5zdGFudGlhYmxl
LgogCi0gICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPENDTGF5ZXJJbXBsPiA+IENDTGF5
ZXJJbXBsTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxDQ0xheWVyPiA+IEND
TGF5ZXJNYXA7CiAKICAgICAvLyBEZWNsYXJlZCBhcyBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyBz
byB0aGV5IGNhbiBhY2Nlc3MgZnVuY3Rpb25zIG9uIExheWVyQ2hyb21pdW0gYXMgYSBmcmllbmQg
Y2xhc3MuCi0gICAgc3RhdGljIHZvaWQgYWRkQ0NMYXllckltcGxzVG9NYXBSZWN1cnNpdmUoQ0NM
YXllckltcGxNYXAmLCBDQ0xheWVySW1wbCopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDTGF5
ZXJJbXBsPiBzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSosIENDTGF5ZXJJ
bXBsTWFwJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ0NMYXllclR5cGU+CisgICAgc3RhdGlj
IHZvaWQgYWRkQ0NMYXllcnNUb01hcFJlY3Vyc2l2ZShDQ0xheWVyTWFwJiwgQ0NMYXllclR5cGUq
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIENDTGF5ZXJUeXBl
PgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDTGF5ZXJUeXBlPiBzeW5jaHJvbml6ZVRyZWVSZWN1
cnNpdmUoTGF5ZXJUeXBlKiwgQ0NMYXllck1hcCYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExh
eWVyVHlwZSwgdHlwZW5hbWUgQ0NMYXllclR5cGU+CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NM
YXllclR5cGU+IHN5bmNocm9uaXplVHJlZXNJbnRlcm5hbChMYXllclR5cGUqLCBQYXNzUmVmUHRy
PENDTGF5ZXJUeXBlPik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9MYXllckNocm9taXVtLmNwcAppbmRleCAwZTBmY2I2NjViNDA0MTM0M2QzZGQxY2ZjNGFmODMz
OGFhNjUwYjljLi40ODU5MGIxNGYyNDJkOGE0NjUyMjgxMDIwZmE2MTc4OTBlMDA3NTM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM2LDEyICszNiw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFt
ZVByb3ZpZGVyKiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvTGF5
ZXJDaHJvbWl1bShkZWxlZ2F0ZSwgcHJvdmlkZXIpKTsKLX0KLQogVmlkZW9MYXllckNocm9taXVt
OjpWaWRlb0xheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwgVmlkZW9GcmFt
ZVByb3ZpZGVyKiBwcm92aWRlcikKICAgICA6IExheWVyQ2hyb21pdW0oZGVsZWdhdGUpCiAgICAg
LCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQpAQCAtNTMsMTEgKzQ3LDYgQEAgVmlkZW9MYXllckNocm9t
aXVtOjp+VmlkZW9MYXllckNocm9taXVtKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1w
bD4gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCi17Ci0gICAgcmV0dXJu
IENDVmlkZW9MYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQsIG1fcHJvdmlkZXIpOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDNkOTMxNWVjOGIxNjE5M2Vk
OGNiYjA2NWVlMWZjNGY3YWE0OWY1ZDUuLjFhYWRhNjI1NjYwMTNiZDBkY2IyZDg0YTY0ODZmM2Y3
OGRlMWZhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCkBAIC00NCwyMiArNDQsNDIg
QEAgY2xhc3MgVmlkZW9GcmFtZVByb3ZpZGVyOwogLy8gQSBMYXllciB0aGF0IGNvbnRhaW5zIGEg
VmlkZW8gZWxlbWVudC4KIGNsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNo
cm9taXVtIHsKIHB1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IHN0YXRp
YyBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSog
PSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiA9IDApOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIHZvaWQgcHVzaFByb3BlcnRpZXMo
Y29uc3QgVmlkZW9MYXllckNocm9taXVtKiwgQ0NMYXllciopOwogCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFt
ZVByb3ZpZGVyKiA9IDApOwogICAgIHZpcnR1YWwgflZpZGVvTGF5ZXJDaHJvbWl1bSgpOwogCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOwot
CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBWaWRlb0xheWVyQ2hyb21pdW0oQ0NMYXllckRl
bGVnYXRlKiwgVmlkZW9GcmFtZVByb3ZpZGVyKik7CiAKICAgICAvLyBUaGlzIHBvaW50ZXIgaXMg
b25seSBmb3IgcGFzc2luZyB0byBDQ1ZpZGVvTGF5ZXJJbXBsJ3MgY29uc3RydWN0b3IuIEl0IHNo
b3VsZCBuZXZlciBiZSBkZXJlZmVyZW5jZWQgYnkgdGhpcyBjbGFzcy4KICAgICBWaWRlb0ZyYW1l
UHJvdmlkZXIqIG1fcHJvdmlkZXI7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+
IGNsYXNzIFNlcmlhbGl6YWJsZVZpZGVvTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBWaWRlb0xheWVy
Q2hyb21pdW0geworcHVibGljOgorICAgIFNlcmlhbGl6YWJsZVZpZGVvTGF5ZXJDaHJvbWl1bShD
Q0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlLCBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKSA6
IFZpZGVvTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSwgcHJvdmlkZXIpIHsgfQorCisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPENDTGF5ZXI+IGNyZWF0ZUNDTGF5ZXIoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIExheWVyVHlwZTo6Y3JlYXRlKG1fbGF5ZXJJZCwgbV9wcm92aWRlcik7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllciogbGF5ZXIpCisgICAgewor
ICAgICAgICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxh
eWVyKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CitQYXNzUmVm
UHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXll
ckRlbGVnYXRlKiBkZWxlZ2F0ZSwgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlcikKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6YWJsZVZpZGVvTGF5ZXJDaHJvbWl1bTxMYXll
clR5cGU+KGRlbGVnYXRlLCBwcm92aWRlcikpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRl
eCAzNjI2ZGM1YjNkZjk5OGIyNjVhNjdiMzRkOWVkY2EyOTE1YzRhNGYzLi45OTYxOWFkYTg0MDdk
MzJhZGRhY2M5MGJmNWU0NTEwODU4YWQwNDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTQyLDExICs0Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1Jl
ZlB0cjxXZWJHTExheWVyQ2hyb21pdW0+IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5
ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTExh
eWVyQ2hyb21pdW0oZGVsZWdhdGUpKTsKLX0KLQogV2ViR0xMYXllckNocm9taXVtOjpXZWJHTExh
eWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IENhbnZhc0xheWVy
Q2hyb21pdW0oZGVsZWdhdGUpCiAgICAgLCBtX2hhc0FscGhhKHRydWUpCkBAIC05OCwxNiArOTMs
NiBAQCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDbwogICAgIH0KIH0KIAotdm9pZCBXZWJHTExheWVy
Q2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQotewotICAgIENh
bnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwotCi0gICAgQ0NDYW52
YXNMYXllckltcGwqIGNhbnZhc0xheWVyID0gc3RhdGljX2Nhc3Q8Q0NDYW52YXNMYXllckltcGwq
PihsYXllcik7Ci0gICAgY2FudmFzTGF5ZXItPnNldFRleHR1cmVJZChtX3RleHR1cmVJZCk7Ci0g
ICAgY2FudmFzTGF5ZXItPnNldEhhc0FscGhhKG1faGFzQWxwaGEpOwotICAgIGNhbnZhc0xheWVy
LT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEobV9wcmVtdWx0aXBsaWVkQWxwaGEpOwotfQotCiBib29s
IFdlYkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1
ZmZlciogaW1hZ2VCdWZmZXIpCiB7CiAgICAgaWYgKG1fdGV4dHVyZVVwZGF0ZWQgfHwgIWxheWVy
UmVuZGVyZXJDb250ZXh0KCkgfHwgIWRyYXdzQ29udGVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hy
b21pdW0uaAppbmRleCBlYjUxNDZlYjczOTAzMGZhYmFjNDM5NjI3ZTVjN2MwNDE2ZjVhNTYxLi44
ZDU3NDZkNWUzMTNiZmQyOThlMTY5MjM4OWI2ZGQ0OGM1Y2IxMzg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExh
eWVyQ2hyb21pdW0uaApAQCAtNDUsNyArNDUsOCBAQCBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW1S
YXRlTGltaXRUYXNrOwogLy8gQSBMYXllciBjb250YWluaW5nIGEgV2ViR0wgY2FudmFzCiBjbGFz
cyBXZWJHTExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBjcmVhdGUoQ0NM
YXllckRlbGVnYXRlKiA9IDApOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3Rh
dGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRl
Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgdm9pZCBwdXNoUHJv
cGVydGllcyhjb25zdCBXZWJHTExheWVyQ2hyb21pdW0qIGZyb20sIENDTGF5ZXIqIHRvKTsKIAog
ICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwogCkBAIC01NCw3ICs1NSw2IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIEND
VGV4dHVyZVVwZGF0ZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCopOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwogICAgIGJvb2wg
cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopOwogCkBAIC02Miw4ICs2
MiwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldERyYXdpbmdCdWZmZXIoRHJhd2luZ0J1ZmZl
ciopOwogICAgIERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X2RyYXdpbmdCdWZmZXI7IH0KLXByaXZhdGU6CisKK3Byb3RlY3RlZDoKICAgICBleHBsaWNpdCBX
ZWJHTExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKik7CisKK3ByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bVJhdGVMaW1pdFRhc2s7CiAKICAgICBHcmFwaGlj
c0NvbnRleHQzRCogbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKQEAgLTgwLDYgKzgzLDM4IEBAIHBy
aXZhdGU6CiAgICAgRHJhd2luZ0J1ZmZlciogbV9kcmF3aW5nQnVmZmVyOwogfTsKIAordGVtcGxh
dGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBjbGFzcyBTZXJpYWxpemFibGVXZWJHTExheWVyQ2hyb21p
dW0gOiBwdWJsaWMgV2ViR0xMYXllckNocm9taXVtIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBT
ZXJpYWxpemFibGVXZWJHTExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkg
OiBXZWJHTExheWVyQ2hyb21pdW0oZGVsZWdhdGUpIHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPENDTGF5ZXI+IGNyZWF0ZUNDTGF5ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIExheWVy
VHlwZTo6Y3JlYXRlKG1fbGF5ZXJJZCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHB1c2hQ
cm9wZXJ0aWVzVG8oQ0NMYXllciogbGF5ZXIpCisgICAgeworICAgICAgICBMYXllckNocm9taXVt
OjpwdXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICAgICAgcHVzaFBy
b3BlcnRpZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgfQorfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgTGF5ZXJUeXBlPgorUGFzc1JlZlB0cjxXZWJHTExheWVyQ2hyb21pdW0+IFdlYkdM
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVXZWJHTExheWVyQ2hyb21pdW08TGF5ZXJU
eXBlPihkZWxlZ2F0ZSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+Cit2b2lk
IFdlYkdMTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXMoY29uc3QgV2ViR0xMYXllckNocm9t
aXVtKiBmcm9tLCBDQ0xheWVyKiB0bykKK3sKKyAgICBMYXllclR5cGUqIGxheWVyID0gc3RhdGlj
X2Nhc3Q8TGF5ZXJUeXBlKj4odG8pOworCisgICAgbGF5ZXItPnNldFRleHR1cmVJZChmcm9tLT5t
X3RleHR1cmVJZCk7CisgICAgbGF5ZXItPnNldEhhc0FscGhhKGZyb20tPm1faGFzQWxwaGEpOwor
ICAgIGxheWVyLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEoZnJvbS0+bV9wcmVtdWx0aXBsaWVkQWxw
aGEpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxOTFhYTY2YWU5NmE1Yzc3N2I4MWIxNDg0YzllMDRm
NGQ4Yjg4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisj
aW5jbHVkZSAiY2MvQ0NMYXllci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NDTGF5ZXI6
OkNDTGF5ZXIoKQoreworfQorCitDQ0xheWVyOjp+Q0NMYXllcigpCit7Cit9CisKK30KKworI2Vu
ZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lODg5MmM1YjU0MTNmOGE3YWRjYTljNDU3ZjgwOTQ4MDM2YTBhZDY1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ci5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDTGF5ZXJfaAorI2RlZmluZSBD
Q0xheWVyX2gKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQ0NMYXllciA6IHB1YmxpYyBSZWZDb3VudGVkPENDTGF5ZXI+IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5DQ0xheWVyKCk7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNp
dCBDQ0xheWVyKCk7Cit9OworCit9CisKKyNlbmRpZiAvLyBDQ0xheWVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5oCmluZGV4IDI2YzdhMmY0ZDVlYzU5NGY4N2JjYzc1MzEyYzY4YjA3ZDA4MWRmNjkuLjgw
NDMyYWRjNzRlOGQ2NTlmZjM5MmRmOTM4ODEyMGQwMmRjOWYyMTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJU
ZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKyNpbmNsdWRl
ICJjYy9DQ0xheWVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NSZW5kZXJTdXJmYWNlLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNDQsNyAr
NDUsNyBAQCBjbGFzcyBDQ0xheWVyU29ydGVyOwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIGNsYXNz
IExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIAotY2xhc3MgQ0NMYXllckltcGwgOiBwdWJsaWMgUmVm
Q291bnRlZDxDQ0xheWVySW1wbD4geworY2xhc3MgQ0NMYXllckltcGwgOiBwdWJsaWMgQ0NMYXll
ciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZShp
bnQgaWQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCmluZGV4IDM3ZDQ1OWQxNjlmMzEyZTQ4MTJj
ZDAwNGNmMmViYWQ4OWEyZGY0MzAuLjliMjVjODI3ZTdjOGM2YjJiZTUzY2E0MDY4NWI1OGE5YmZi
N2VhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
SW1hZ2VCdWZmZXJTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJT
a0dwdURldmljZS5oIgogI2luY2x1ZGUgIlNraWFVdGlscy5oIgogI2luY2x1ZGUgIldFQlBJbWFn
ZUVuY29kZXIuaCIKKyNpbmNsdWRlICJjYy9DQ0NhbnZhc0xheWVySW1wbC5oIgogCiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTg3LDcgKzg4LDcgQEAgc3RhdGljIFNrQ2Fu
dmFzKiBjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyhjb25zdCBJbnRTaXplJiBzaXplLCBJbWFnZUJ1
ZmZlckRhdGEqIGQKICAgICBjYW52YXMtPnNldERldmljZShuZXcgU2tHcHVEZXZpY2UoZ3IsIHRl
eHR1cmUuZ2V0KCkpKS0+dW5yZWYoKTsKICAgICBkYXRhLT5tX3BsYXRmb3JtQ29udGV4dC5zZXRH
cmFwaGljc0NvbnRleHQzRChjb250ZXh0M0QpOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKLSAgICBkYXRhLT5tX3BsYXRmb3JtTGF5ZXIgPSBDYW52YXMyRExheWVyQ2hyb21pdW06
OmNyZWF0ZShjb250ZXh0M0QsIHNpemUpOworICAgIGRhdGEtPm1fcGxhdGZvcm1MYXllciA9IENh
bnZhczJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDQ2FudmFzTGF5ZXJJbXBsPihjb250ZXh0M0Qs
IHNpemUpOwogICAgIGRhdGEtPm1fcGxhdGZvcm1MYXllci0+c2V0VGV4dHVyZUlkKHRleHR1cmUu
Z2V0KCktPmdldFRleHR1cmVIYW5kbGUoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gY2FudmFzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllci5jcHAKaW5kZXgg
ZmFhNmEwOTY4N2FkYjgxYTA0OTk5NGE0NTA4YTliNGI2NWRiNjExZS4uYTkxMGRmMDU3NjYwMTMy
M2RhNTQwY2Q4MDk5ODMyZWMyZWZkOGVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQ29udGVudExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJDb250ZW50TGF5ZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29udGVudExheWVyLmgiCiAKKyNpbmNsdWRl
ICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRSZWN0
LmgiCiAjaW5jbHVkZSAiV2ViQ29udGVudExheWVySW1wbC5oIgogCkBAIC0zMyw3ICszNCw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJDb250ZW50TGF5ZXIgV2ViQ29udGVudExheWVyOjpj
cmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KQogewotICAgIHJldHVy
biBXZWJDb250ZW50TGF5ZXIoV2ViQ29udGVudExheWVySW1wbDo6Y3JlYXRlKGNvbnRlbnRDbGll
bnQpKTsKKyAgICByZXR1cm4gV2ViQ29udGVudExheWVyKFdlYkNvbnRlbnRMYXllckltcGw6OmNy
ZWF0ZTxXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsPihjb250ZW50Q2xpZW50KSk7CiB9CiAKIFdl
YkNvbnRlbnRMYXllciBXZWJDb250ZW50TGF5ZXI6OmNyZWF0ZShXZWJMYXllckNsaWVudCosIFdl
YkNvbnRlbnRMYXllckNsaWVudCogY29udGVudENsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAKaW5kZXggNzllMjBmZWY3OTUy
ZWVjODE3MGUzZGVmMmVjZjFlMzEyMWZlMjk1ZS4uZDJiMDI0YThiZTEwYTYzNTM1NDBjOGIxZWQ5
YmZjNTA2ZDY3NzcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Q29udGVudExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Q29udGVudExheWVySW1wbC5jcHAKQEAgLTM4LDExICszOCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJDb250ZW50TGF5
ZXJJbXBsPiBXZWJDb250ZW50TGF5ZXJJbXBsOjpjcmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50
KiBjb250ZW50Q2xpZW50KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGVudExh
eWVySW1wbChjb250ZW50Q2xpZW50KSk7Ci19Ci0KIFdlYkNvbnRlbnRMYXllckltcGw6OldlYkNv
bnRlbnRMYXllckltcGwoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KQogICAg
IDogQ29udGVudExheWVyQ2hyb21pdW0odGhpcykKICAgICAsIG1fY29udGVudENsaWVudChjb250
ZW50Q2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29u
dGVudExheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExh
eWVySW1wbC5oCmluZGV4IGIzMGM4YWU1NjJkZDQzNjljMzkxYjgxZmI0ODY3NDc4NDhkNjNkMzQu
LjQwNjUyNjYwYzQyYjcwNjBjMGJlYjA0YmZmZGRjODA0ZDBjYWE1MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmgKQEAgLTI5LDEyICsy
OSwxNiBAQAogI2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0NMYXllcjsKK307
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29udGVudExheWVyQ2xpZW50OwogCiBj
bGFzcyBXZWJDb250ZW50TGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OkNvbnRlbnRMYXllckNo
cm9taXVtLCBwdWJsaWMgV2ViQ29yZTo6Q0NMYXllckRlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiBjcmVhdGUoV2ViQ29udGVudExh
eWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5
cGU+IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+IGNyZWF0ZShXZWJDb250
ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpOwogCiAgICAgdm9pZCBzZXREcmF3c0NvbnRl
bnQoYm9vbCk7CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwpAQCAtNDgs
NiArNTIsMjggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9kcmF3c0NvbnRlbnQ7CiB9OwogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IGNsYXNzIFNlcmlhbGl6YWJsZVdlYkNvbnRlbnRM
YXllckltcGwgOiBwdWJsaWMgV2ViQ29udGVudExheWVySW1wbCB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgU2VyaWFsaXphYmxlV2ViQ29udGVudExheWVySW1wbChXZWJDb250ZW50TGF5ZXJDbGll
bnQqIGNvbnRlbnRDbGllbnQpIDogV2ViQ29udGVudExheWVySW1wbChjb250ZW50Q2xpZW50KSB7
IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDQ0xheWVyPiBjcmVhdGVDQ0xh
eWVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBMYXllclR5cGU6OmNyZWF0ZShtX2xheWVySWQp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKFdlYkNvcmU6OkND
TGF5ZXIqIGxheWVyKQorICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRp
ZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVt
OjpwdXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CitQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllcklt
cGw+IFdlYkNvbnRlbnRMYXllckltcGw6OmNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNv
bnRlbnRDbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVXZWJD
b250ZW50TGF5ZXJJbXBsPExheWVyVHlwZT4oY29udGVudENsaWVudCkpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdlYkNvbnRlbnRMYXllckltcGxfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIu
Y3BwCmluZGV4IDUxZjg1Y2I5ZmFjNjVmNmYzNzNjZjQ3OTA4OThjM2FlYWIyMzkwYzMuLmY1OTE1
YWQyOWEyNjFlZjZjYWIzYzhlMmM0YTg4MmJhYjQyYjIzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAKQEAgLTI2
LDkgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaCIKIAorI2luY2x1ZGUgImNjL0NDUGx1Z2luTGF5ZXJJbXBs
LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXI6OmNyZWF0ZShXZWJMYXllckNsaWVudCopCkBAIC0zOCw3ICs0MSw3IEBAIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVyIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoV2Vi
TGF5ZXJDbGllbnQqKQogCiBXZWJFeHRlcm5hbFRleHR1cmVMYXllciBXZWJFeHRlcm5hbFRleHR1
cmVMYXllcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIo
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpjcmVhdGUoKSk7CisgICAgcmV0dXJuIFdlYkV4
dGVybmFsVGV4dHVyZUxheWVyKFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6Y3JlYXRlPEND
UGx1Z2luTGF5ZXJJbXBsPigpKTsKIH0KIAogdm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6
c2V0VGV4dHVyZUlkKHVuc2lnbmVkIGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHAKaW5kZXggMWIxZGEx
MDNjOWZiNjc0YzgwZTg0OGNhOTRmMzA3ZGM2YmQ4MTI3YS4uNmE1M2UzZjU4M2I5NjY3YzlmYjU3
ZmU5ZjgxMDBjYzA3NmY4OTUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwCkBAIC0zMywxMSArMzMs
NiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBh
c3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiBXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGw6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGwoKSk7Ci19Ci0KIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKCkKICAgICA6IFBsdWdpbkxheWVyQ2hyb21pdW0o
dGhpcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgKaW5kZXggMWFkMmI4MTk5OGYzMGRmNmM5ZWNhMDkzYTBj
MmZmNWFiZWU5MWNlYS4uYzFiZGE0ZGI5Y2JmN2EzYTk5ZGIxODgyNzQ1ZmY1ZmFmMzQ4Mzg0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJJbXBsLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVn
aW5MYXllckNocm9taXVtLCBwdWJsaWMgV2ViQ29yZTo6Q0NMYXllckRlbGVnYXRlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+IGNy
ZWF0ZSgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIFBhc3NSZWZQ
dHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiBjcmVhdGUoKTsKIAogcHJvdGVjdGVkOgog
ICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCgpOwpAQCAtNDIsNiArNDIsMjggQEAgcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKIH07CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gY2xhc3MgU2VyaWFsaXphYmxlV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJJbXBsIDogcHVibGljIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgU2VyaWFsaXphYmxlV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsKCkgOiBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoKSB7IH0KKworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpDQ0xheWVyPiBjcmVhdGVDQ0xheWVyKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBMYXllclR5cGU6OmNyZWF0ZShtX2xheWVySWQpOworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKFdlYkNvcmU6OkNDTGF5ZXIqIGxheWVyKQorICAg
IHsKKyAgICAgICAgV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXM8TGF5ZXJU
eXBlPih0aGlzLCBsYXllcik7CisgICAgICAgIFdlYkNvcmU6OlBsdWdpbkxheWVyQ2hyb21pdW06
OnB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgIH0KK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK1Bhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsPiBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmNyZWF0ZSgpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVXZWJFeHRlcm5hbFRleHR1cmVMYXllcklt
cGw8TGF5ZXJUeXBlPigpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXIuY3BwCmluZGV4IGY5NDc5Yzk4NGE5ZjliYTBkNmI2MjMzNGUwOTQ3OGExMzY5NzMy
ZjUuLjAyZDQ5ZmRmMGQyMGNlM2M0NjE1ZWVhZTRmZDkwNzZiZTZiZGFkYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllci5oIgogCisjaW5jbHVkZSAi
Y2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgiCiAj
aW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCkBAIC04MSw3ICs4
Miw3IEBAIFdlYkxheWVyIFdlYkxheWVyOjpjcmVhdGUoV2ViTGF5ZXJDbGllbnQqKQogCiBXZWJM
YXllciBXZWJMYXllcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gV2ViTGF5ZXIoV2ViTGF5ZXJJ
bXBsOjpjcmVhdGUoKSk7CisgICAgcmV0dXJuIFdlYkxheWVyKFdlYkxheWVySW1wbDo6Y3JlYXRl
PENDTGF5ZXJJbXBsPigpKTsKIH0KIAogdm9pZCBXZWJMYXllcjo6cmVzZXQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5jcHAKaW5kZXggYTRhMmYwOWYwOTc5OTc5
NDEzNTE3YTRmYzIyZGQ4MWUzY2JkOTMzYS4uMzNjOGNlMTIwMWFlOWIyMDE5OWUwODNlMDUxZWM0
NzBhNmRjZWNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5
ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwu
Y3BwCkBAIC0zMCwxMSArMzAsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViTGF5ZXJJbXBsPiBXZWJMYXllckltcGw6OmNy
ZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJMYXllckltcGwoKSk7Ci19Ci0K
IFdlYkxheWVySW1wbDo6V2ViTGF5ZXJJbXBsKCkKICAgICA6IExheWVyQ2hyb21pdW0odGhpcykK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKaW5kZXggMDI5ODk1
OWE1ZDU2N2I2M2YxMDVkZjg3ZDRlODgzOGNlNmQwM2YxYi4uN2JhODAzNGYxYmI3YjRlNmNlZDUz
NzNkMGI5YWRhNTE5NDk4YWM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5
ZXJJbXBsLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdl
YkxheWVySW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpMYXllckNocm9taXVtLCBwdWJsaWMgV2ViQ29y
ZTo6Q0NMYXllckRlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJM
YXllckltcGw+IGNyZWF0ZSgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3Rh
dGljIFBhc3NSZWZQdHI8V2ViTGF5ZXJJbXBsPiBjcmVhdGUoKTsKIAogcHJvdGVjdGVkOgogICAg
IFdlYkxheWVySW1wbCgpOwpAQCAtNDIsNiArNDIsMjcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCBwYWludENvbnRlbnRzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGNsaXApOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBl
PiBjbGFzcyBTZXJpYWxpemFibGVXZWJMYXllckltcGwgOiBwdWJsaWMgV2ViTGF5ZXJJbXBsIHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBTZXJpYWxpemFibGVXZWJMYXllckltcGwoKSA6IFdlYkxh
eWVySW1wbCgpIHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkNDTGF5ZXI+
IGNyZWF0ZUNDTGF5ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIExheWVyVHlwZTo6Y3JlYXRl
KG1fbGF5ZXJJZCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8o
V2ViQ29yZTo6Q0NMYXllciogbGF5ZXIpCisgICAgeworICAgICAgICBMYXllckNocm9taXVtOjpw
dXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CitQYXNzUmVmUHRyPFdlYkxheWVySW1wbD4gV2ViTGF5
ZXJJbXBsOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXphYmxl
V2ViTGF5ZXJJbXBsPExheWVyVHlwZT4oKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gV2ViTGF5ZXJJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCmluZGV4IGFhZTRlYzMzYzli
ZTExZGVhNmQyZWNmY2YwNmU5ZWRjMDE3N2ZkMDguLmE1YWZjYTQyY2JkOWY1OTIxOTI4NzU2OTI2
ZWZhNWY1YjM2ZWFiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcApAQCAtOSw2ICs5LDcgQEAKIAogI2luY2x1
ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVy
Q2xpZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudC5oIgpAQCAtMTIwLDcgKzEyMSw3IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsOjpyZWFkeVN0YXRlQ2hhbmdlZCgpCiAgICAgbV9tZWRpYVBsYXllci0+cmVhZHlTdGF0ZUNo
YW5nZWQoKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKGhhc1Zp
ZGVvKCkgJiYgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmICFtX3ZpZGVvTGF5ZXIp
IHsKLSAgICAgICAgbV92aWRlb0xheWVyID0gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUoMCwg
dGhpcyk7CisgICAgICAgIG1fdmlkZW9MYXllciA9IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
PENDVmlkZW9MYXllckltcGw+KDAsIHRoaXMpOwogICAgICAgICBtX3ZpZGVvTGF5ZXItPnNldE9w
YXF1ZShtX29wYXF1ZSk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCmluZGV4IDk1ZWNhODg5MTUx
MDFhY2IzOTg1YzVjNTMwNTE4OTVjNTY1MGVkZmMuLjBjZDExZDljMzk2ZTc3NzRmYWVmOWMyN2Q4
NjkzZDliZGQzNzM3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIgogCisjaW5jbHVk
ZSAiY2MvQ0NQbHVnaW5MYXllckltcGwuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiUGx1Z2luTGF5ZXJDaHJvbWl1bS5oIgpA
QCAtNTM3LDcgKzUzOCw3IEBAIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OldlYlBsdWdpbkNvbnRh
aW5lckltcGwoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lCiAgICAgLCBtX2VsZW1l
bnQoZWxlbWVudCkKICAgICAsIG1fd2ViUGx1Z2luKHdlYlBsdWdpbikKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCi0gICAgLCBtX3BsYXRmb3JtTGF5ZXIoUGx1Z2luTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKDApKQorICAgICwgbV9wbGF0Zm9ybUxheWVyKFBsdWdpbkxheWVyQ2hyb21p
dW06OmNyZWF0ZTxDQ1BsdWdpbkxheWVySW1wbD4oMCkpCiAjZW5kaWYKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1v
blRlc3QuY3BwCmluZGV4IGEzNWQ5NjUyMjRmYmU2ZGY3OTk0Njg3MjVmN2RiNjAyNjA0NTA0NDgu
LmU3ZmFhMTA3MzZhZTJiOWJlYTM5OGJlZjlmZjU5Y2E5NDA1NDVlYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25U
ZXN0LmNwcApAQCAtNjksNiArNjksMTQgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVtb3ZlM0RD
b21wb25lbnRPZk1hdHJpeChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0KQogICAgIHJl
dHVybiByZXQ7CiB9CiAKK2NsYXNzIE1vY2tMYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hy
b21pdW0geworcHVibGljOgorICAgIGV4cGxpY2l0IE1vY2tMYXllckNocm9taXVtKENDTGF5ZXJE
ZWxlZ2F0ZSogZGVsZWdhdGUpCisgICAgICAgIDogTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkKKyAg
ICB7CisgICAgfQorfTsKKwogY2xhc3MgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQgOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkK
QEAgLTg2LDkgKzk0LDkgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlU
cmFuc2Zvcm1zRm9yTm9PcExheWVyKQogICAgIC8vIHNjcmVlblNwYWNlVHJhbnNmb3JtLCBhbmQg
dGhlIGhpZXJhcmNoeSBwYXNzZWQgb24gdG8gY2hpbGRyZW4KICAgICAvLyBsYXllcnMgc2hvdWxk
IGFsc28gYmUgaWRlbnRpdHkgdHJhbnNmb3Jtcy4KIAotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBncmFuZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21p
dW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IGFkb3B0UmVmKG5ldyBN
b2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGdyYW5kQ2hp
bGQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwogICAgIHBhcmVudC0+Y3Jl
YXRlUmVuZGVyU3VyZmFjZSgpOwogICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwogICAgIGNo
aWxkLT5hZGRDaGlsZChncmFuZENoaWxkKTsKQEAgLTExNiw3ICsxMjQsNyBAQCBURVNUKENDTGF5
ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JTaW5nbGVMYXllcikKICAg
ICAvLyBkaWZmZXJlbnQgcG9zaXRpb24uIFdoZW4gd2UgaW5pdGlhbGl6ZSBsYXllcnMgZm9yIHRl
c3RpbmcgaGVyZSwgd2UgbmVlZCB0byBpbml0aWFsaXplIHRoYXQgdW5pbnR1dGl2ZSBwb3NpdGlv
biB2YWx1ZS4KIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsK
KyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVy
Q2hyb21pdW0oMCkpOwogICAgIGxheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAKICAgICAv
LyBDYXNlIDE6IHNldHRpbmcgdGhlIHN1YmxheWVyIHRyYW5zZm9ybSBzaG91bGQgbm90IGFmZmVj
dCB0aGlzIGxheWVyJ3MgZHJhdyB0cmFuc2Zvcm0gb3Igc2NyZWVuLXNwYWNlIHRyYW5zZm9ybS4K
QEAgLTE4MSw5ICsxODksOSBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlm
eVRyYW5zZm9ybXNGb3JTaW5nbGVMYXllcikKIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVz
dCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclNpbXBsZUhpZXJhcmNoeSkKIHsKICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFy
ZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gZ3JhbmRDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDAp
KTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBhZG9wdFJlZihuZXcgTW9ja0xh
eWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBncmFuZENoaWxkID0g
YWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKICAgICBwYXJlbnQtPmNyZWF0ZVJl
bmRlclN1cmZhY2UoKTsKICAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKICAgICBjaGlsZC0+
YWRkQ2hpbGQoZ3JhbmRDaGlsZCk7CkBAIC0yNjMsOCArMjcxLDggQEAgVEVTVChDQ0xheWVyVHJl
ZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yU2ltcGxlSGllcmFyY2h5KQogCiBU
RVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JTaW5nbGVS
ZW5kZXJTdXJmYWNlKQogewotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJl
bnQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBjaGlsZCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAg
ICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBncmFuZENoaWxk
ID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KDApKTsK
ICAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKICAgICBwYXJlbnQtPmFkZENoaWxk
KGNoaWxkKTsKQEAgLTMxOCwxMyArMzI2LDEzIEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9u
VGVzdCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclJlbmRlclN1cmZhY2VIaWVyYXJjaHkpCiAgICAgLy8g
ICAtIFNhbml0eSBjaGVjayBvbiByZWN1cnNpb246IHZlcmlmeSB0cmFuc2Zvcm1zIG9mIGxheWVy
cyBkZXNjcmliZWQgdy5yLnQuIGEgcmVuZGVyIHN1cmZhY2UgdGhhdCBpcyBkZXNjcmliZWQgdy5y
LnQuIGFuIGFuY2VzdG9yIHJlbmRlciBzdXJmYWNlLgogICAgIC8vICAgLSB2ZXJpZnlpbmcgdGhh
dCBlYWNoIGxheWVyIGhhcyBhIHJlZmVyZW5jZSB0byB0aGUgY29ycmVjdCByZW5kZXJTdXJmYWNl
IGFuZCB0YXJnZXRSZW5kZXJTdXJmYWNlIHZhbHVlcy4KIAotICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IHJlbmRlclN1cmZhY2UxID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiByZW5kZXJTdXJmYWNlMiA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGRPZlJvb3QgPSBMYXllckNo
cm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkT2ZSUzEg
PSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNo
aWxkT2ZSUzIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IGdyYW5kQ2hpbGRPZlJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJv
bWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlbmRlclN1cmZhY2UxID0gYWRv
cHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gcmVuZGVyU3VyZmFjZTIgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwor
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZE9mUm9vdCA9IGFkb3B0UmVmKG5ldyBNb2Nr
TGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkT2ZSUzEg
PSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBjaGlsZE9mUlMyID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsK
KyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZE9mUm9vdCA9IGFkb3B0UmVmKG5l
dyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9y
Y2VkRHJhd3NDb250ZW50PiBncmFuZENoaWxkT2ZSUzEgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoMCkpOwogICAgIFJlZlB0cjxMYXllckNocm9taXVt
V2l0aEZvcmNlZERyYXdzQ29udGVudD4gZ3JhbmRDaGlsZE9mUlMyID0gYWRvcHRSZWYobmV3IExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KDApKTsKICAgICBwYXJlbnQtPmNyZWF0
ZVJlbmRlclN1cmZhY2UoKTsKQEAgLTQ1NCw4ICs0NjIsOCBAQCBURVNUKENDTGF5ZXJUcmVlSG9z
dENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JSZW5kZXJTdXJmYWNlSGllcmFyY2h5KQog
CiBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVJlbmRlclN1cmZhY2VMaXN0
Rm9yQ2xpcExheWVyKQogewotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlbmRlclN1
cmZhY2UxID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiBwYXJlbnQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiByZW5kZXJTdXJmYWNlMSA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5
ZXJDaHJvbWl1bSgwKSk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50PiBjaGlsZCA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdz
Q29udGVudCgwKSk7CiAgICAgcmVuZGVyU3VyZmFjZTEtPnNldE9wYWNpdHkoMC45KTsKIApAQCAt
NDgzLDggKzQ5MSw4IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5UmVu
ZGVyU3VyZmFjZUxpc3RGb3JDbGlwTGF5ZXIpCiAKIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9u
VGVzdCwgdmVyaWZ5UmVuZGVyU3VyZmFjZUxpc3RGb3JUcmFuc3BhcmVudENoaWxkKQogewotICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlbmRlclN1cmZhY2UxID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBhZG9wdFJl
ZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBy
ZW5kZXJTdXJmYWNlMSA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAg
UmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBjaGlsZCA9IGFkb3B0
UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgwKSk7CiAgICAgcmVu
ZGVyU3VyZmFjZTEtPnNldE9wYWNpdHkoMCk7CiAKQEAgLTUyNiwxMCArNTM0LDEwIEBAIFRFU1Qo
Q0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5Q2xpcFJlY3RDdWxsc1JlbmRlclN1cmZh
Y2VzKQogICAgIC8vCiAKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1h
dHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZCA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JlYXRH
cmFuZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBwYXJlbnQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJv
bWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGdyYW5kQ2hpbGQgPSBhZG9wdFJl
ZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBn
cmVhdEdyYW5kQ2hpbGQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwogICAg
IFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGVhZk5vZGUxID0g
YWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KDApKTsKICAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxlYWZOb2RlMiA9
IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgwKSk7CiAg
ICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCA2MjIyMDBjOWY1
MzhhNzIyNTE3MjJhNTAyMTI2NzQ2MDhlMWJiMGYyLi5jMWQ3MWZlMDFmNzBjNWQ2MDU2YjE5NDli
NjZkM2ViZjAxODM3Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdFRlc3Q6OmRvQmVnaW5UZXN0KCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIG1fY2xpZW50ID0gTW9ja0xheWVyVHJlZUhvc3RDbGllbnQ6OmNyZWF0ZSh0aGlzKTsK
IAotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByb290TGF5ZXIgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXllciA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oMCk7CiAgICAgbV9sYXllclRyZWVIb3N0ID0gTW9j
a0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBtX2NsaWVudC5nZXQoKSwgcm9vdExheWVyLCBt
X3NldHRpbmdzKTsKICAgICBBU1NFUlRfVFJVRShtX2xheWVyVHJlZUhvc3QpOwogICAgIHJvb3RM
YXllci0+c2V0TGF5ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwpAQCAtOTU1LDYg
Kzk1NSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fdXBkYXRlQ291bnQrKzsKICAgICB9CiAKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllcj4gY3JlYXRlQ0NMYXllcigpCisgICAgeworICAg
ICAgICByZXR1cm4gQ0NMYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXIqIGNjTGF5ZXIpCisgICAgewor
ICAgICAgICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxDQ0xheWVySW1wbD4odGhpcywg
Y2NMYXllcik7CisgICAgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUpCiAgICAg
ICAgIDogQ29udGVudExheWVyQ2hyb21pdW0oZGVsZWdhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcApp
bmRleCA5NjdmMjM0MmYwMzRkMmU4NDYxMmM4ODA3YmNlNWFmZTU5Zjk1ZTRkLi44YWM0Njk0NTZh
Nzk4OGNkODIwNmE1MmNlMjMwZjM2OGI1MDU4YmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKQEAg
LTEyMiw3ICsxMjIsNyBAQCBURVNUX0YoQ2FudmFzMkRMYXllckNocm9taXVtVGVzdCwgdGVzdEZ1
bGxMaWZlY3ljbGUpCiAgICAgICAgIEVYUEVDVF9DQUxMKGFsbG9jYXRvck1vY2ssIGRlbGV0ZVRl
eHR1cmUoZnJvbnRUZXh0dXJlSWQsIHNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSk7CiAg
ICAgfQogCi0gICAgUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gY2FudmFzID0gQ2FudmFz
MkRMYXllckNocm9taXVtOjpjcmVhdGUobWFpbkNvbnRleHQuZ2V0KCksIHNpemUpOworICAgIFJl
ZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IGNhbnZhcyA9IENhbnZhczJETGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlPENDQ2FudmFzTGF5ZXJJbXBsPihtYWluQ29udGV4dC5nZXQoKSwgc2l6ZSk7CiAg
ICAgc2V0VGV4dHVyZU1hbmFnZXIoY2FudmFzLmdldCgpLCB0ZXh0dXJlTWFuYWdlci5nZXQoKSk7
CiAgICAgY2FudmFzLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDMwMCkpOwogICAgIGNhbnZhcy0+
c2V0VGV4dHVyZUlkKGJhY2tUZXh0dXJlSWQpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIFRFU1RfRihD
YW52YXMyRExheWVyQ2hyb21pdW1UZXN0LCB0ZXN0RnVsbExpZmVjeWNsZSkKICAgICB7CiAgICAg
ICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBzY29wZWRJbXBsVGhyZWFkOwogCi0gICAgICAg
IFJlZlB0cjxDQ0xheWVySW1wbD4gbGF5ZXJJbXBsID0gY2FudmFzLT5jcmVhdGVDQ0xheWVySW1w
bCgpOworICAgICAgICBSZWZQdHI8Q0NMYXllcj4gbGF5ZXJJbXBsID0gY2FudmFzLT5jcmVhdGVD
Q0xheWVyKCk7CiAgICAgICAgIEVYUEVDVF9FUSgwdSwgc3RhdGljX2Nhc3Q8Q0NDYW52YXNMYXll
ckltcGwqPihsYXllckltcGwuZ2V0KCkpLT50ZXh0dXJlSWQoKSk7CiAKICAgICAgICAgY2FudmFz
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGltcGxDb250ZXh0LmdldCgpLCB1cGRhdGVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5j
cHAKaW5kZXggZmJiOWMxOWVhMDExOWQ3YmM4ZDJkYzhlNGYyNDhiZDM1YTg5MzNlNS4uYTM1ZjA4
ODVjYTM5ZWVjOTNmYmEzYjljMGZhMjRlMTIyNWNjZDUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTgyLDYgKzgyLDEz
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgSW50UmVjdCYpIHsgfQogfTsKIAorY2xhc3MgTW9ja0xheWVyQ2hyb21pdW0gOiBwdWJsaWMg
TGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTW9ja0xheWVyQ2hyb21pdW0o
Q0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKKyAgICAgICAgOiBMYXllckNocm9taXVtKGRlbGVn
YXRlKQorICAgIHsKKyAgICB9Cit9OwogCiBjbGFzcyBMYXllckNocm9taXVtVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKIHByb3RlY3RlZDoKQEAgLTEzNCwxMyArMTQxLDEzIEBAIHByb3Rl
Y3RlZDoKIAogICAgIHZvaWQgY3JlYXRlU2ltcGxlVGVzdFRyZWUoKQogICAgIHsKLSAgICAgICAg
bV9wYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgICAgIG1fY2hpbGQxID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgICAgICBtX2NoaWxkMiA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgwKTsKLSAgICAgICAgbV9jaGlsZDMgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
MCk7Ci0gICAgICAgIG1fZ3JhbmRDaGlsZDEgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0g
ICAgICAgIG1fZ3JhbmRDaGlsZDIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgICAg
IG1fZ3JhbmRDaGlsZDMgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgICAgIG1fcGFy
ZW50ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICAgICAgbV9jaGls
ZDEgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgICAgICBtX2NoaWxk
MiA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgICAgIG1fY2hpbGQz
ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICAgICAgbV9ncmFuZENo
aWxkMSA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgICAgIG1fZ3Jh
bmRDaGlsZDIgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgICAgICBt
X2dyYW5kQ2hpbGQzID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKIAogICAg
ICAgICBFWFBFQ1RfQ0FMTCgqbV9sYXllclRyZWVIb3N0LCBzZXROZWVkc0NvbW1pdCgpKS5UaW1l
cyhBbnlOdW1iZXIoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKG1f
cGFyZW50KTsKQEAgLTE2Myw3ICsxNzAsNyBAQCBwcm90ZWN0ZWQ6CiAKIFRFU1RfRihMYXllckNo
cm9taXVtVGVzdCwgYmFzaWNDcmVhdGVBbmREZXN0cm95KQogewotICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IHRlc3RMYXllciA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1
bSgwKSk7CiAgICAgQVNTRVJUX1RSVUUodGVzdExheWVyKTsKIAogICAgIEVYUEVDVF9DQUxMKCpt
X2xheWVyVHJlZUhvc3QsIHNldE5lZWRzQ29tbWl0KCkpLlRpbWVzKDApOwpAQCAtMTcyLDggKzE3
OSw4IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgYmFzaWNDcmVhdGVBbmREZXN0cm95KQog
CiBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGFkZEFuZFJlbW92ZUNoaWxkKQogewotICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDAp
OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBhZG9wdFJlZihuZXcgTW9ja0xh
eWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IGFkb3B0
UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAKICAgICAvLyBVcG9uIGNyZWF0aW9uLCBs
YXllcnMgc2hvdWxkIG5vdCBoYXZlIGNoaWxkcmVuIG9yIHBhcmVudC4KICAgICBBU1NFUlRfRVEo
c3RhdGljX2Nhc3Q8c2l6ZV90PigwKSwgcGFyZW50LT5jaGlsZHJlbigpLnNpemUoKSk7CkBAIC0x
OTMsMTEgKzIwMCwxMSBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGFkZEFuZFJlbW92ZUNo
aWxkKQogCiBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGluc2VydENoaWxkKQogewotICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgw
KTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDMgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkNCA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gYWRv
cHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gY2hpbGQxID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVt
KDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQzID0gYWRvcHRSZWYobmV3IE1v
Y2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQ0ID0g
YWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKIAogICAgIHBhcmVudC0+c2V0TGF5
ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwogCkBAIC0yMzksOSArMjQ2LDkgQEAg
VEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBpbnNlcnRDaGlsZCkKIAogVEVTVF9GKExheWVyQ2hy
b21pdW1UZXN0LCBpbnNlcnRDaGlsZFBhc3RFbmRPZkxpc3QpCiB7Ci0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gY2hpbGQxID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Cisg
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJD
aHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMSA9IGFkb3B0UmVm
KG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNo
aWxkMiA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAKICAgICBBU1NFUlRf
RVEoc3RhdGljX2Nhc3Q8c2l6ZV90PigwKSwgcGFyZW50LT5jaGlsZHJlbigpLnNpemUoKSk7CiAK
QEAgLTI2MSw5ICsyNjgsOSBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGluc2VydENoaWxk
UGFzdEVuZE9mTGlzdCkKIAogVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBpbnNlcnRTYW1lQ2hp
bGRUd2ljZSkKIHsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDEgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMiA9
IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFy
ZW50ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gY2hpbGQxID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsK
KyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gYWRvcHRSZWYobmV3IE1vY2tMYXll
ckNocm9taXVtKDApKTsKIAogICAgIHBhcmVudC0+c2V0TGF5ZXJUcmVlSG9zdChtX2xheWVyVHJl
ZUhvc3QuZ2V0KCkpOwogCkBAIC0yOTAsNyArMjk3LDcgQEAgVEVTVF9GKExheWVyQ2hyb21pdW1U
ZXN0LCBpbnNlcnRTYW1lQ2hpbGRUd2ljZSkKIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgcmVw
bGFjZUNoaWxkV2l0aE5ld0NoaWxkKQogewogICAgIGNyZWF0ZVNpbXBsZVRlc3RUcmVlKCk7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkNCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgw
KTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQ0ID0gYWRvcHRSZWYobmV3IE1vY2tM
YXllckNocm9taXVtKDApKTsKIAogICAgIEVYUEVDVF9GQUxTRShjaGlsZDQtPnBhcmVudCgpKTsK
IApAQCAtMzEwLDggKzMxNyw4IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgcmVwbGFjZUNo
aWxkV2l0aE5ld0NoaWxkVGhhdEhhc090aGVyUGFyZW50KQogICAgIGNyZWF0ZVNpbXBsZVRlc3RU
cmVlKCk7CiAKICAgICAvLyBjcmVhdGUgYW5vdGhlciBzaW1wbGUgdHJlZSB3aXRoIHRlc3RMYXll
ciBhbmQgY2hpbGQ0LgotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiB0ZXN0TGF5ZXIgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkNCA9
IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gdGVz
dExheWVyID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gY2hpbGQ0ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDAp
KTsKICAgICB0ZXN0TGF5ZXItPmFkZENoaWxkKGNoaWxkNCk7CiAgICAgQVNTRVJUX0VRKHN0YXRp
Y19jYXN0PHNpemVfdD4oMSksIHRlc3RMYXllci0+Y2hpbGRyZW4oKS5zaXplKCkpOwogICAgIEVY
UEVDVF9FUShjaGlsZDQsIHRlc3RMYXllci0+Y2hpbGRyZW4oKVswXSk7CkBAIC0zNTUsMTEgKzM2
MiwxMSBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIHJlbW92ZUFsbENoaWxkcmVuKQogCiBU
RVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIHNldENoaWxkcmVuKQogewotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBvbGRQYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IG5ld1BhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsK
KyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gb2xkUGFyZW50ID0gYWRvcHRSZWYobmV3IE1vY2tM
YXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbmV3UGFyZW50ID0g
YWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKIAotICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBjaGlsZDEgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IGNoaWxkMiA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQxID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVt
KDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gYWRvcHRSZWYobmV3IE1v
Y2tMYXllckNocm9taXVtKDApKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiBuZXdDaGlsZHJlbjsKICAgICBuZXdDaGlsZHJlbi5hcHBlbmQoY2hpbGQxKTsKQEAgLTM4OSw3
ICszOTYsNyBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGdldFJvb3RMYXllckFmdGVyVHJl
ZU1hbmlwdWxhdGlvbnMpCiAgICAgLy8gRm9yIHRoaXMgdGVzdCB3ZSBkb24ndCBjYXJlIGFib3V0
IHNldE5lZWRzQ29tbWl0IGNhbGxzLgogICAgIEVYUEVDVF9DQUxMKCptX2xheWVyVHJlZUhvc3Qs
IHNldE5lZWRzQ29tbWl0KCkpLlRpbWVzKEF0TGVhc3QoMSkpOwogCi0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IGNoaWxkNCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gY2hpbGQ0ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDAp
KTsKIAogICAgIEVYUEVDVF9FUShtX3BhcmVudC5nZXQoKSwgbV9wYXJlbnQtPnJvb3RMYXllcigp
KTsKICAgICBFWFBFQ1RfRVEobV9wYXJlbnQuZ2V0KCksIG1fY2hpbGQxLT5yb290TGF5ZXIoKSk7
CkBAIC00NDYsNyArNDUzLDcgQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBjaGVja1NldE5l
ZWRzRGlzcGxheUNhdXNlc0NvcnJlY3RCZWhhdmlvcikKICAgICAvLyAgIDEuIHNldHMgbmVlZHNE
aXNwbGF5IGZsYWcgYXBwcm9wcmlhdGVseS4KICAgICAvLyAgIDIuIGluZGlyZWN0bHkgY2FsbHMg
c2V0TmVlZHNDb21taXQsIGV4YWN0bHkgb25jZSBmb3IgZWFjaCBjYWxsIHRvIHNldE5lZWRzRGlz
cGxheS4KIAotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiB0ZXN0TGF5ZXIgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHRlc3RMYXllciA9IGFk
b3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAgdGVzdExheWVyLT5zZXRMYXll
clRyZWVIb3N0KG1fbGF5ZXJUcmVlSG9zdC5nZXQoKSk7CiAKICAgICBJbnRTaXplIHRlc3RCb3Vu
ZHMgPSBJbnRTaXplKDUwMSwgNTA4KTsKQEAgLTQ2MSw3ICs0NjgsNyBAQCBURVNUX0YoTGF5ZXJD
aHJvbWl1bVRlc3QsIGNoZWNrU2V0TmVlZHNEaXNwbGF5Q2F1c2VzQ29ycmVjdEJlaGF2aW9yKQog
CiAgICAgLy8gVGhpcyBpcyBqdXN0IGluaXRpYWxpemF0aW9uLCBidXQgc2V0TmVlZHNDb21taXQg
YmVoYXZpb3IgaXMgdmVyaWZpZWQgYW55d2F5IHRvIGF2b2lkIHdhcm5pbmdzLgogICAgIEVYRUNV
VEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0
Qm91bmRzKHRlc3RCb3VuZHMpKTsKLSAgICB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoMCk7CisgICAgdGVzdExheWVyID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDAp
KTsKICAgICB0ZXN0TGF5ZXItPnNldExheWVyVHJlZUhvc3QobV9sYXllclRyZWVIb3N0LmdldCgp
KTsKICAgICBFWFBFQ1RfRkFMU0UodGVzdExheWVyLT5uZWVkc0Rpc3BsYXkoKSk7CiAKQEAgLTQ4
MCwxNCArNDg3LDE0IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgY2hlY2tTZXROZWVkc0Rp
c3BsYXlDYXVzZXNDb3JyZWN0QmVoYXZpb3IpCiAgICAgRVhQRUNUX1RSVUUodGVzdExheWVyLT5u
ZWVkc0Rpc3BsYXkoKSk7CiAKICAgICAvLyBDYXNlIDQ6IExheWVyQ2hyb21pdW0gc2hvdWxkIGFj
Y2VwdCBkaXJ0eSByZWN0cyB0aGF0IGdvIGJleW9uZCBpdHMgYm91bmRzLgotICAgIHRlc3RMYXll
ciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICB0ZXN0TGF5ZXIgPSBhZG9wdFJlZihu
ZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwogICAgIHRlc3RMYXllci0+c2V0TGF5ZXJUcmVlSG9z
dChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVF
RFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0Qm91bmRzKHRlc3RCb3VuZHMpKTsK
ICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0
TGF5ZXItPnNldE5lZWRzRGlzcGxheVJlY3Qob3V0T2ZCb3VuZHNEaXJ0eVJlY3QpKTsKICAgICBF
WFBFQ1RfVFJVRSh0ZXN0TGF5ZXItPm5lZWRzRGlzcGxheSgpKTsKIAogICAgIC8vIENhc2UgNTog
c2V0TmVlZHNEaXNwbGF5KCkgd2l0aG91dCB0aGUgZGlydHkgcmVjdCBhcmcuCi0gICAgdGVzdExh
eWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIHRlc3RMYXllciA9IGFkb3B0UmVm
KG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAgdGVzdExheWVyLT5zZXRMYXllclRyZWVI
b3N0KG1fbGF5ZXJUcmVlSG9zdC5nZXQoKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9O
RUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRCb3VuZHModGVzdEJvdW5kcykp
OwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRl
c3RMYXllci0+c2V0TmVlZHNEaXNwbGF5KCkpOwpAQCAtNDk2LDcgKzUwMyw3IEBAIFRFU1RfRihM
YXllckNocm9taXVtVGVzdCwgY2hlY2tTZXROZWVkc0Rpc3BsYXlDYXVzZXNDb3JyZWN0QmVoYXZp
b3IpCiAKIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgY2hlY2tTZXROZWVkc0Rpc3BsYXlXaXRo
TnVsbERlbGVnYXRlKQogewotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiB0ZXN0TGF5ZXIgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHRlc3RM
YXllciA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAgSW50U2l6ZSB0
ZXN0Qm91bmRzID0gSW50U2l6ZSg1MDEsIDUwOCk7CiAKICAgICBGbG9hdFJlY3QgZGlydHkgPSBG
bG9hdFJlY3QoMTAuMGYsIDE1LjBmLCAxLjBmLCAyLjBmKTsKQEAgLTUwNCw3ICs1MTEsNyBAQCBU
RVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrU2V0TmVlZHNEaXNwbGF5V2l0aE51bGxEZWxl
Z2F0ZSkKICAgICB0ZXN0TGF5ZXItPnNldEJvdW5kcyh0ZXN0Qm91bmRzKTsKICAgICBFWFBFQ1Rf
VFJVRSh0ZXN0TGF5ZXItPm5lZWRzRGlzcGxheSgpKTsKIAotICAgIHRlc3RMYXllciA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICB0ZXN0TGF5ZXIgPSBhZG9wdFJlZihuZXcgTW9ja0xh
eWVyQ2hyb21pdW0oMCkpOwogICAgIEVYUEVDVF9GQUxTRSh0ZXN0TGF5ZXItPm5lZWRzRGlzcGxh
eSgpKTsKIAogICAgIHRlc3RMYXllci0+c2V0TmVlZHNEaXNwbGF5UmVjdChkaXJ0eSk7CkBAIC01
MTMsMTAgKzUyMCwxMCBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrU2V0TmVlZHNE
aXNwbGF5V2l0aE51bGxEZWxlZ2F0ZSkKIAogVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBjaGVj
a1Byb3BlcnR5Q2hhbmdlQ2F1c2VzQ29ycmVjdEJlaGF2aW9yKQogewotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IHRlc3RMYXllciA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJv
bWl1bSgwKSk7CiAgICAgdGVzdExheWVyLT5zZXRMYXllclRyZWVIb3N0KG1fbGF5ZXJUcmVlSG9z
dC5nZXQoKSk7CiAKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZHVtbXlMYXllciA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgwKTsgLy8ganVzdCBhIGR1bW15IGxheWVyIGZvciB0aGlzIHRlc3Qg
Y2FzZS4KKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZHVtbXlMYXllciA9IGFkb3B0UmVmKG5l
dyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7IC8vIGp1c3QgYSBkdW1teSBsYXllciBmb3IgdGhpcyB0
ZXN0IGNhc2UuCiAKICAgICAvLyBzYW5pdHkgY2hlY2sgb2YgaW5pdGlhbCB0ZXN0IGNvbmRpdGlv
bgogICAgIEVYUEVDVF9GQUxTRSh0ZXN0TGF5ZXItPm5lZWRzRGlzcGxheSgpKTsKQEAgLTYyOSwx
MSArNjM2LDExIEBAIHZvaWQgYXNzZXJ0TGF5ZXJUcmVlSG9zdE1hdGNoZXNGb3JTdWJ0cmVlKExh
eWVyQ2hyb21pdW0qIGxheWVyLCBDQ0xheWVyVHJlZUhvc3QqCiBURVNUKExheWVyQ2hyb21pdW1M
YXllclRyZWVIb3N0VGVzdCwgZW50ZXJpbmdUcmVlKQogewogICAgIFdlYktpdDo6V2ViQ29tcG9z
aXRvcjo6aW5pdGlhbGl6ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGls
ZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
bWFzayA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gcmVwbGljYSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gcmVwbGljYU1hc2sgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1
bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gYWRvcHRSZWYobmV3IE1v
Y2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbWFzayA9IGFk
b3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IHJlcGxpY2EgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhTWFzayA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJD
aHJvbWl1bSgwKSk7CiAKICAgICAvLyBTZXQgdXAgYSBkZXRhY2hlZCB0cmVlIG9mIGxheWVycy4g
VGhlIGhvc3QgcG9pbnRlciBzaG91bGQgYmUgbmlsIGZvciB0aGVzZSBsYXllcnMuCiAgICAgcGFy
ZW50LT5hZGRDaGlsZChjaGlsZCk7CkBAIC02NjEsNyArNjY4LDcgQEAgVEVTVChMYXllckNocm9t
aXVtTGF5ZXJUcmVlSG9zdFRlc3QsIGVudGVyaW5nVHJlZSkKIFRFU1QoTGF5ZXJDaHJvbWl1bUxh
eWVyVHJlZUhvc3RUZXN0LCBhZGRpbmdMYXllclN1YnRyZWUpCiB7CiAgICAgV2ViS2l0OjpXZWJD
b21wb3NpdG9yOjppbml0aWFsaXplKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJl
bnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IHBhcmVudCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAgUmVmUHRy
PEZha2VDQ0xheWVyVHJlZUhvc3Q+IGxheWVyVHJlZUhvc3QgPSBGYWtlQ0NMYXllclRyZWVIb3N0
OjpjcmVhdGUoKTsKIAogICAgIGxheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihwYXJlbnQuZ2V0
KCkpOwpAQCAtNjY5LDE2ICs2NzYsMTYgQEAgVEVTVChMYXllckNocm9taXVtTGF5ZXJUcmVlSG9z
dFRlc3QsIGFkZGluZ0xheWVyU3VidHJlZSkKICAgICBFWFBFQ1RfRVEocGFyZW50LT5sYXllclRy
ZWVIb3N0KCksIGxheWVyVHJlZUhvc3QuZ2V0KCkpOwogCiAgICAgLy8gQWRkaW5nIGEgc3VidHJl
ZSB0byBhIGxheWVyIGFscmVhZHkgYXNzb2NpYXRlZCB3aXRoIGEgaG9zdCBzaG91bGQgc2V0IHRo
ZSBob3N0IHBvaW50ZXIgb24gYWxsIGxheWVycyBpbiB0aGF0IHN1YnRyZWUuCi0gICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBncmFuZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDAp
OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5
ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGdyYW5kQ2hpbGQgPSBh
ZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwogICAgIGNoaWxkLT5hZGRDaGlsZChn
cmFuZENoaWxkKTsKIAogICAgIC8vIE1hc2tzLCByZXBsaWNhcywgYW5kIHJlcGxpY2EgbWFza3Mg
c2hvdWxkIHBpY2sgdXAgdGhlIG5ldyBob3N0IHRvby4KLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gY2hpbGRNYXNrID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBjaGlsZE1hc2sgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkp
OwogICAgIGNoaWxkLT5zZXRNYXNrTGF5ZXIoY2hpbGRNYXNrLmdldCgpKTsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gY2hpbGRSZXBsaWNhID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwor
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZFJlcGxpY2EgPSBhZG9wdFJlZihuZXcgTW9j
a0xheWVyQ2hyb21pdW0oMCkpOwogICAgIGNoaWxkLT5zZXRSZXBsaWNhTGF5ZXIoY2hpbGRSZXBs
aWNhLmdldCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGRSZXBsaWNhTWFzayA9
IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hp
bGRSZXBsaWNhTWFzayA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAg
Y2hpbGRSZXBsaWNhLT5zZXRNYXNrTGF5ZXIoY2hpbGRSZXBsaWNhTWFzay5nZXQoKSk7CiAKICAg
ICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKQEAgLTY5MiwxMSArNjk5LDExIEBAIFRFU1QoTGF5
ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0LCBhZGRpbmdMYXllclN1YnRyZWUpCiBURVNUKExh
eWVyQ2hyb21pdW1MYXllclRyZWVIb3N0VGVzdCwgY2hhbmdlSG9zdCkKIHsKICAgICBXZWJLaXQ6
OldlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IG1hc2sgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IHJlcGxpY2EgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2FNYXNrID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDAp
OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBhZG9wdFJlZihuZXcgTW9ja0xh
eWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IGFkb3B0
UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IG1hc2sgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiByZXBsaWNhID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDAp
KTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGljYU1hc2sgPSBhZG9wdFJlZihuZXcg
TW9ja0xheWVyQ2hyb21pdW0oMCkpOwogCiAgICAgLy8gU2FtZSBzZXR1cCBhcyB0aGUgcHJldmlv
dXMgdGVzdC4KICAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKQEAgLTcyNSwxMSArNzMyLDEx
IEBAIFRFU1QoTGF5ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0LCBjaGFuZ2VIb3N0KQogVEVT
VChMYXllckNocm9taXVtTGF5ZXJUcmVlSG9zdFRlc3QsIGNoYW5nZUhvc3RJblN1YnRyZWUpCiB7
CiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBmaXJzdFBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZmlyc3RDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gc2Vjb25kUGFyZW50ID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBzZWNvbmRDaGlsZCA9
IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gc2Vj
b25kR3JhbmRDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gZmlyc3RQYXJlbnQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0o
MCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBmaXJzdENoaWxkID0gYWRvcHRSZWYobmV3
IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gc2Vjb25k
UGFyZW50ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gc2Vjb25kQ2hpbGQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21p
dW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBzZWNvbmRHcmFuZENoaWxkID0gYWRv
cHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKIAogICAgIC8vIEZpcnN0IHB1dCBhbGwg
Y2hpbGRyZW4gdW5kZXIgdGhlIGZpcnN0IHBhcmVudCBhbmQgc2V0IHRoZSBmaXJzdCBob3N0Lgog
ICAgIGZpcnN0UGFyZW50LT5hZGRDaGlsZChmaXJzdENoaWxkKTsKQEAgLTc2MiwxMyArNzY5LDEz
IEBAIFRFU1QoTGF5ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0LCBjaGFuZ2VIb3N0SW5TdWJ0
cmVlKQogVEVTVChMYXllckNocm9taXVtTGF5ZXJUcmVlSG9zdFRlc3QsIHJlcGxhY2VNYXNrQW5k
UmVwbGljYUxheWVyKQogewogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgw
KTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtYXNrID0gTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtYXNrQ2hpbGQgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxp
Y2FDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gbWFza1JlcGxhY2VtZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhUmVwbGFjZW1lbnQgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IGFkb3B0UmVmKG5l
dyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1hc2sg
PSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiByZXBsaWNhID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbWFza0NoaWxkID0gYWRvcHRSZWYobmV3IE1vY2tMYXll
ckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGljYUNoaWxkID0g
YWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gbWFza1JlcGxhY2VtZW50ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDAp
KTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGljYVJlcGxhY2VtZW50ID0gYWRvcHRS
ZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKIAogICAgIHBhcmVudC0+c2V0TWFza0xheWVy
KG1hc2suZ2V0KCkpOwogICAgIHBhcmVudC0+c2V0UmVwbGljYUxheWVyKHJlcGxpY2EuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hy
b21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNo
cm9taXVtVGVzdC5jcHAKaW5kZXggOGFiNjNjODc2YmI2NWFkMWI1Y2U1NDA1NzdkYTUwMmFiOTkw
OGVlMy4uNmRlNTJkMTdiNTYxZjQ0ZGJlOTQ4ZjExZmM4ZTRhMmM2ZGZmOTJmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwCkBAIC0xMDksNiArMTA5LDE3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVGV4dHVy
ZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlTWFuYWdl
cjsgfQogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXI+IGNyZWF0ZUNDTGF5ZXIoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIENDVGlsZWRMYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXIqIGxh
eWVyKQorICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXM8Q0NMYXll
ckltcGw+KHRoaXMsIGxheWVyKTsKKyAgICAgICAgcHVzaFByb3BlcnRpZXM8Q0NUaWxlZExheWVy
SW1wbD4odGhpcywgbGF5ZXIpOworICAgIH0KKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KikgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5j
cHAKaW5kZXggY2E4Mzg0NmMyMmM2ZjM2Yzg2OTk5MmFkMjkyM2RkZDdmMzE0MGMwOS4uZTc2ZWYy
OTExOGRkZTUxMzZiYzVlODIyYjNiM2JlZDBlOTc3ZjBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKQEAgLTY5LDE4
ICs2OSwxOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Nb2NrTGF5ZXJDaHJvbWl1bSgpIHsg
fQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1w
bCgpCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXI+IGNyZWF0ZUNDTGF5ZXIoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIE1vY2tDQ0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7CiAg
ICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGNj
TGF5ZXIpCisgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllciogY2NMYXll
cikKICAgICB7Ci0gICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oY2NMYXll
cik7CisgICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzPE1vY2tDQ0xheWVySW1w
bD4odGhpcywgY2NMYXllcik7CiAKICAgICAgICAgTW9ja0NDTGF5ZXJJbXBsKiBtb2NrQ0NMYXll
ciA9IHN0YXRpY19jYXN0PE1vY2tDQ0xheWVySW1wbCo+KGNjTGF5ZXIpOwogICAgICAgICBtb2Nr
Q0NMYXllci0+c2V0Q0NMYXllckRlc3RydWN0aW9uTGlzdChtX2NjTGF5ZXJEZXN0cnVjdGlvbkxp
c3QpOwogICAgIH0KKwogcHJpdmF0ZToKICAgICBNb2NrTGF5ZXJDaHJvbWl1bShWZWN0b3I8aW50
PiogY2NMYXllckRlc3RydWN0aW9uTGlzdCkKICAgICAgICAgOiBMYXllckNocm9taXVtKDApCkBA
IC0xMTksOSArMTIwLDkgQEAgdm9pZCBleHBlY3RUcmVlc0FyZUlkZW50aWNhbChMYXllckNocm9t
aXVtKiBsYXllciwgQ0NMYXllckltcGwqIGNjTGF5ZXIpCiBURVNUKFRyZWVTeW5jaHJvbml6ZXJU
ZXN0LCBzeW5jU2ltcGxlVHJlZUZyb21FbXB0eSkKIHsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVlUm9vdCA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChMYXll
ckNocm9taXVtOjpjcmVhdGUoMCkpOwotICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKExheWVy
Q2hyb21pdW06OmNyZWF0ZSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyVHJl
ZVJvb3QgPSBNb2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIGxheWVyVHJlZVJvb3Qt
PmFkZENoaWxkKE1vY2tMYXllckNocm9taXVtOjpjcmVhdGUoMCkpOworICAgIGxheWVyVHJlZVJv
b3QtPmFkZENoaWxkKE1vY2tMYXllckNocm9taXVtOjpjcmVhdGUoMCkpOwogCiAgICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJv
bml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIDApOwogCkBAIC0xNTgsOSArMTU5LDkgQEAg
VEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVSZXVzaW5nTGF5ZXJzKQog
VEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVBbmRQcm9wZXJ0aWVzKQog
ewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBsYXllclRyZWVSb290ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIGxh
eWVyVHJlZVJvb3QtPmFkZENoaWxkKExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKSk7Ci0gICAgbGF5
ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApKTsKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVlUm9vdCA9IE1vY2tMYXllckNocm9taXVtOjpjcmVh
dGUoMCk7CisgICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTW9ja0xheWVyQ2hyb21pdW06OmNy
ZWF0ZSgwKSk7CisgICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTW9ja0xheWVyQ2hyb21pdW06
OmNyZWF0ZSgwKSk7CiAKICAgICAvLyBQaWNrIHNvbWUgcmFuZG9tIHByb3BlcnRpZXMgdG8gc2V0
LiBUaGUgdmFsdWVzIGFyZSBub3QgaW1wb3J0YW50LCB3ZSdyZSBqdXN0IHRlc3RpbmcgdGhhdCBh
dCBsZWFzdCBzb21lIHByb3BlcnRpZXMgYXJlIG1ha2luZyBpdCB0aHJvdWdoLgogICAgIEZsb2F0
UG9pbnQgcm9vdFBvc2l0aW9uID0gRmxvYXRQb2ludCgyLjMsIDcuNCk7CkBAIC0yNTQsNyArMjU1
LDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVUaGVuRGVzdHJv
eSkKICAgICBvbGRMYXllclRyZWVSb290LT5yZW1vdmVBbGxDaGlsZHJlbigpOwogCiAgICAgLy8g
U3luY2hyb25pemUgYWdhaW4uIEFmdGVyIHRoZSBzeW5jIGFsbCBDQ0xheWVySW1wbHMgZnJvbSB0
aGUgb2xkIHRyZWUgc2hvdWxkIGJlIGRlbGV0ZWQuCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IG5ld0xheWVyVHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IG5ld0xheWVyVHJlZVJvb3QgPSBNb2NrTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKDApOwogICAgIGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9u
aXplVHJlZXMobmV3TGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LnJlbGVhc2Uo
KSk7CiAgICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobmV3TGF5ZXJUcmVlUm9vdC5nZXQoKSwg
Y2NMYXllclRyZWVSb290LmdldCgpKTsKIApAQCAtMjY4LDIyICsyNjksMjIgQEAgVEVTVChUcmVl
U3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVUaGVuRGVzdHJveSkKIFRFU1QoVHJlZVN5
bmNocm9uaXplclRlc3QsIHN5bmNNYXNrUmVwbGljYUFuZFJlcGxpY2FNYXNrTGF5ZXJzKQogewog
ICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiBsYXllclRyZWVSb290ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIGxheWVy
VHJlZVJvb3QtPmFkZENoaWxkKExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKSk7Ci0gICAgbGF5ZXJU
cmVlUm9vdC0+YWRkQ2hpbGQoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApKTsKLSAgICBsYXllclRy
ZWVSb290LT5hZGRDaGlsZChMYXllckNocm9taXVtOjpjcmVhdGUoMCkpOworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBsYXllclRyZWVSb290ID0gTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgw
KTsKKyAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChNb2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KDApKTsKKyAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChNb2NrTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKDApKTsKKyAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChNb2NrTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKDApKTsKIAogICAgIC8vIEZpcnN0IGNoaWxkIGdldHMgYSBtYXNrIGxheWVyLgotICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBtYXNrTGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
MCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1hc2tMYXllciA9IE1vY2tMYXllckNocm9t
aXVtOjpjcmVhdGUoMCk7CiAgICAgbGF5ZXJUcmVlUm9vdC0+Y2hpbGRyZW4oKVswXS0+c2V0TWFz
a0xheWVyKG1hc2tMYXllci5nZXQoKSk7CiAKICAgICAvLyBTZWNvbmQgY2hpbGQgZ2V0cyBhIHJl
cGxpY2EgbGF5ZXIuCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2FMYXllciA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGlj
YUxheWVyID0gTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKICAgICBsYXllclRyZWVSb290
LT5jaGlsZHJlbigpWzFdLT5zZXRSZXBsaWNhTGF5ZXIocmVwbGljYUxheWVyLmdldCgpKTsKIAog
ICAgIC8vIFRoaXJkIGNoaWxkIGdldHMgYSByZXBsaWNhIGxheWVyIHdpdGggYSBtYXNrIGxheWVy
LgotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhTGF5ZXJXaXRoTWFzayA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGljYU1h
c2tMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gcmVwbGljYUxheWVyV2l0aE1hc2sgPSBNb2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDAp
OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhTWFza0xheWVyID0gTW9ja0xheWVy
Q2hyb21pdW06OmNyZWF0ZSgwKTsKICAgICByZXBsaWNhTGF5ZXJXaXRoTWFzay0+c2V0TWFza0xh
eWVyKHJlcGxpY2FNYXNrTGF5ZXIuZ2V0KCkpOwogICAgIGxheWVyVHJlZVJvb3QtPmNoaWxkcmVu
KClbMl0tPnNldFJlcGxpY2FMYXllcihyZXBsaWNhTGF5ZXJXaXRoTWFzay5nZXQoKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120749</attachid>
            <date>2011-12-29 08:11:29 -0800</date>
            <delta_ts>2012-01-04 14:15:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75272-20111229171127.patch</filename>
            <type>text/plain</type>
            <size>105177</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzMyN2RhNzU0MWUwZWQ4
Zjg2ZDU0OWY1YzI2NzNmYzU0YjNjOWY0NS4uZTRkYjAzZjk4MzlhMjhmZWI0MTAzYzU4NGEwYzFj
N2IyZjk0NjMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDExLTEyLTI5ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBS
ZS1mYWN0b3IgY29tcG9zaXRvciB0cmVlIHN5bmNocm9uaXphdGlvbiB0byBzdXBwb3J0IGJ1ZmZl
cmluZyBhbmQgc2VyaWFsaXphdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc1MjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVtcGxhdGl6ZSBDQ0xheWVySW1wbCB0cmVlIGNyZWF0aW9uIHNvIHRo
YXQgaXQncyBwb3NzaWJsZSB0bworICAgICAgICBzZXJpYWxpemUgb3IgYnVmZmVyIHRoZSBsYXll
ciB0cmVlIGluIGEgdGVtcG9yYXJ5IGRhdGEgc3RydWN0dXJlLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAo
V2ViQ29yZTo6U2VyaWFsaXphYmxlQ2FudmFzMkRMYXllckNocm9taXVtOjpTZXJpYWxpemFibGVD
YW52YXMyRExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlQ2Fu
dmFzMkRMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cmlhbGl6YWJsZUNhbnZhczJETGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVDb250ZW50TGF5ZXJD
aHJvbWl1bTo6U2VyaWFsaXphYmxlQ29udGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXphYmxlQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlQ29udGVudExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZl
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OnBsYXRmb3Jt
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06
OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZXJpYWxpemFibGVJbWFnZUxheWVyQ2hyb21pdW06OlNlcmlhbGl6YWJsZUlt
YWdlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVJbWFnZUxh
eWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXph
YmxlSW1hZ2VMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1
bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlTGF5ZXJD
aHJvbWl1bTo6U2VyaWFsaXphYmxlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemFibGVMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcmlhbGl6YWJsZUxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemFibGVQbHVnaW5MYXllckNocm9taXVtOjpTZXJpYWxpemFibGVQbHVn
aW5MYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZVBsdWdpbkxh
eWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXph
YmxlUGx1Z2luTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJD
b3JlOjpVcGRhdGFibGVUaWxlOjpVcGRhdGFibGVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlVw
ZGF0YWJsZVRpbGU6OnRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRhYmxlVGlsZTo6
bWFuYWdlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRhYmxlVGlsZTo6aXNEaXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGFibGVUaWxlOjpjbGVhckRpcnR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVN5bmNocm9uaXplcjo6YWRkQ0NMYXllcnNUb01hcFJlY3Vyc2l2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVS
ZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25p
emVUcmVlc0ludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTeW5jaHJvbml6ZXI6OnN5
bmNocm9uaXplVHJlZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Ry
ZWVTeW5jaHJvbml6ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxl
VmlkZW9MYXllckNocm9taXVtOjpTZXJpYWxpemFibGVWaWRlb0xheWVyQ2hyb21pdW0pOgorICAg
ICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGVDQ0xh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZVZpZGVvTGF5ZXJDaHJvbWl1bTo6
cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZVdlYkdMTGF5
ZXJDaHJvbWl1bTo6U2VyaWFsaXphYmxlV2ViR0xMYXllckNocm9taXVtKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6YWJsZVdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVXZWJHTExheWVyQ2hyb21pdW06OnB1c2hQcm9w
ZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllci5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyOjpDQ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXI6On5DQ0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVySW1wbC5jcHAuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVy
U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyk6CisK
IDIwMTEtMTItMjkgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBUcmVlIHZpZXdzIGNhbiBiZSBjb2xsYXBzZWQvaGlkZGVu
IHVzaW5nIHRoZSBrZXlib2FyZCBhcnJvd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
YmUwZmZlYmM0YWVjZTYyNzQ3MTE3Nzk1YTYwZmQ0ZjBlMGI2ZTQwMS4uOWY1NjlhMTEyNTZlYjVi
NjEzN2M4ZjA5YTY0MGJhY2ZjYTc4NmI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1OCBAQAorMjAxMS0xMi0yOSAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gUmUtZmFjdG9yIGNvbXBvc2l0b3IgdHJlZSBz
eW5jaHJvbml6YXRpb24gdG8gc3VwcG9ydCBidWZmZXJpbmcgYW5kIHNlcmlhbGl6YXRpb24uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTI3MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlbXBsYXRpemUg
Q0NMYXllckltcGwgdHJlZSBjcmVhdGlvbiBzbyB0aGF0IGl0J3MgcG9zc2libGUgdG8KKyAgICAg
ICAgc2VyaWFsaXplIG9yIGJ1ZmZlciB0aGUgbGF5ZXIgdHJlZSBpbiBhIHRlbXBvcmFyeSBkYXRh
IHN0cnVjdHVyZS4KKworICAgICAgICAqIHNyYy9XZWJDb250ZW50TGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYkNv
bnRlbnRMYXllckltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmg6
CisgICAgICAgIChXZWJLaXQ6OlNlcmlhbGl6YWJsZVdlYkNvbnRlbnRMYXllckltcGw6OlNlcmlh
bGl6YWJsZVdlYkNvbnRlbnRMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpTZXJpYWxpemFi
bGVXZWJDb250ZW50TGF5ZXJJbXBsOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6
U2VyaWFsaXphYmxlV2ViQ29udGVudExheWVySW1wbDo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgICogc3Jj
L1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbC5jcHA6CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1w
bC5oOgorICAgICAgICAoV2ViS2l0OjpTZXJpYWxpemFibGVXZWJFeHRlcm5hbFRleHR1cmVMYXll
ckltcGw6OlNlcmlhbGl6YWJsZVdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OlNlcmlhbGl6YWJsZVdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6Y3JlYXRl
Q0NMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlNlcmlhbGl6YWJsZVdlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbDo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKiBzcmMvV2Vi
TGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJJbXBsLmg6CisgICAgICAgIChX
ZWJLaXQ6OlNlcmlhbGl6YWJsZVdlYkxheWVySW1wbDo6U2VyaWFsaXphYmxlV2ViTGF5ZXJJbXBs
KToKKyAgICAgICAgKFdlYktpdDo6U2VyaWFsaXphYmxlV2ViTGF5ZXJJbXBsOjpjcmVhdGVDQ0xh
eWVyKToKKyAgICAgICAgKFdlYktpdDo6U2VyaWFsaXphYmxlV2ViTGF5ZXJJbXBsOjpwdXNoUHJv
cGVydGllc1RvKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpjcmVhdGUpOgorICAg
ICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAg
KiBzcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
dWdpbkNvbnRhaW5lckltcGw6OldlYlBsdWdpbkNvbnRhaW5lckltcGwpOgorICAgICAgICAqIHRl
c3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0xheWVyQ2hyb21pdW06Ok1vY2tMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRF
U1QpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Ojpkb0JlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGVDQ0xheWVyKToKKyAg
ICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnB1c2hQ
cm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHRlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwOgorICAgICAgICAqIHRlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKiB0
ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6RmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllcik6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExh
eWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHRlc3RzL1RyZWVTeW5j
aHJvbml6ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tMYXllckNocm9taXVtOjpj
cmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tMYXllckNocm9taXVtOjpwdXNo
UHJvcGVydGllc1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDExLTEyLTI5ICBQ
YXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBbY2hyb21pdW1dIHBhc3MgZG9jayB0byBzaWRlIHJlcXVlc3QgdG8gdGhlIGVtYmVkZGVy
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IGExNjNhOGRmNWQzZmYzMzFhY2EwM2VlMmRiYWZiZDQ1ZjZk
MjgwNmEuLjQ4YjdjYzYyNWMwYjBiY2IwMjdjMzIzOTgyYzA4NDU0NTNjM2U1ZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTM2MTAsNiArMzYxMCw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllci5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXIuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
UXVhZC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMjNk
NzJlN2JiMDc4NDJlODhmODAxZGE4NGExNWFlYTBlYmM4NGMxZS4uNWMwYTc2MWZkMTA3YzRkMzZk
OWI3Y2IyYWQzYTA2NzVlYTVhM2U4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uY3BwCkBAIC0zNCw3ICszNCw2IEBACiAKICNpbmNsdWRlICJDYW52YXMyRExheWVyQ2hyb21p
dW0uaCIKIAotI2luY2x1ZGUgImNjL0NDQ2FudmFzTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2lu
Y2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCkBAIC00NywxMSArNDYsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBDYW52
YXMyRExheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29u
c3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhczJETGF5
ZXJDaHJvbWl1bShjb250ZXh0LCBzaXplKSk7Ci19Ci0KIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6
Q2FudmFzMkRMYXllckNocm9taXVtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJ
bnRTaXplJiBzaXplKQogICAgIDogQ2FudmFzTGF5ZXJDaHJvbWl1bSgwKQogICAgICwgbV9jb250
ZXh0KGNvbnRleHQpCkBAIC0xNDEsMTQgKzEzNSw2IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmZsdXNoKCkpOwogfQogCi12b2lkIENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCi17Ci0g
ICAgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhsYXllcik7Ci0KLSAgICBD
Q0NhbnZhc0xheWVySW1wbCogY2FudmFzTGF5ZXIgPSBzdGF0aWNfY2FzdDxDQ0NhbnZhc0xheWVy
SW1wbCo+KGxheWVyKTsKLSAgICBjYW52YXNMYXllci0+c2V0VGV4dHVyZUlkKG1fZnJvbnRUZXh0
dXJlLT50ZXh0dXJlSWQoKSk7Ci19Ci0KIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1bnJl
c2VydmVDb250ZW50c1RleHR1cmUoKQogewogICAgIG1fZnJvbnRUZXh0dXJlLT51bnJlc2VydmUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKaW5kZXggMWM4ZmM5YjRlOGIyYmEy
MDUyY2IyMjlmZWI1ZTcwY2FhOTA3MDUwMy4uMjBiMmYxYmI1NzA2M2I3ODY0MWRhMmNlZWU3NjY2
YzAyOWZiNTA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKQEAgLTQ0LDcg
KzQ0LDkgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAvLyBBIGxheWVyIGNvbnRhaW5pbmcg
YW4gYWNjZWxlcmF0ZWQgMmQgY2FudmFzCiBjbGFzcyBDYW52YXMyRExheWVyQ2hyb21pdW0gOiBw
dWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25z
dCBJbnRTaXplJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgUGFz
c1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCos
IGNvbnN0IEludFNpemUmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IHZvaWQg
cHVzaFByb3BlcnRpZXMoY29uc3QgQ2FudmFzMkRMYXllckNocm9taXVtKiBmcm9tLCBDQ0xheWVy
KiB0byk7CisKICAgICB2aXJ0dWFsIH5DYW52YXMyRExheWVyQ2hyb21pdW0oKTsKIAogICAgIHZv
aWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkKTsKQEAgLTU2LDEzICs1OCwxMyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCosIENDVGV4dHVyZVVwZGF0ZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNU
byhDQ0xheWVySW1wbCopOwogICAgIHZpcnR1YWwgdm9pZCB1bnJlc2VydmVDb250ZW50c1RleHR1
cmUoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cFJlc291cmNlcygpOwogCi1wcml2YXRlOgor
cHJvdGVjdGVkOgogICAgIENhbnZhczJETGF5ZXJDaHJvbWl1bShHcmFwaGljc0NvbnRleHQzRCos
IGNvbnN0IEludFNpemUmKTsKIAorcHJpdmF0ZToKICAgICAvLyBWaXNpYmxlIGZvciB0ZXN0aW5n
IHNvIHdlIGNhbiBieXBhc3Mgc2V0TGF5ZXJUcmVlSG9zdC4KICAgICBmcmllbmQgY2xhc3MgQ2Fu
dmFzMkRMYXllckNocm9taXVtVGVzdDsKICAgICB2b2lkIHNldFRleHR1cmVNYW5hZ2VyKFRleHR1
cmVNYW5hZ2VyKik7CkBAIC03NCw2ICs3NiwzNiBAQCBwcml2YXRlOgogICAgIE93blB0cjxNYW5h
Z2VkVGV4dHVyZT4gbV9mcm9udFRleHR1cmU7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXll
clR5cGU+IGNsYXNzIFNlcmlhbGl6YWJsZUNhbnZhczJETGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBD
YW52YXMyRExheWVyQ2hyb21pdW0geworcHVibGljOgorICAgIGV4cGxpY2l0IFNlcmlhbGl6YWJs
ZUNhbnZhczJETGF5ZXJDaHJvbWl1bShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3Qg
SW50U2l6ZSYgc2l6ZSkgOiBDYW52YXMyRExheWVyQ2hyb21pdW0oY29udGV4dCwgc2l6ZSkgeyB9
CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllcj4gY3JlYXRlQ0NMYXllcigpCisgICAg
eworICAgICAgICByZXR1cm4gTGF5ZXJUeXBlOjpjcmVhdGUobV9sYXllcklkKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVyKiBsYXllcikKKyAgICB7
CisgICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywg
bGF5ZXIpOworICAgICAgICBwdXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsK
KyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CitQYXNzUmVmUHRyPENh
bnZhczJETGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVDYW52YXMyRExheWVyQ2hyb21pdW08TGF5ZXJUeXBl
Pihjb250ZXh0LCBzaXplKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK3Zv
aWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllcyhjb25zdCBDYW52YXMyRExh
eWVyQ2hyb21pdW0qIGZyb20sIENDTGF5ZXIqIHRvKQoreworICAgIExheWVyVHlwZSogbGF5ZXIg
PSBzdGF0aWNfY2FzdDxMYXllclR5cGUqPih0byk7CisKKyAgICBsYXllci0+c2V0VGV4dHVyZUlk
KGZyb20tPm1fZnJvbnRUZXh0dXJlLT50ZXh0dXJlSWQoKSk7Cit9CisKIH0KICNlbmRpZiAvLyBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1
bS5jcHAKaW5kZXggYzUxMDA4Y2I0MThkNWNiM2UxYzM3ODZkY2ZhMGQ5NzRlZWMzMzAyYy4uYjIw
MTdkNGY4MDU3MTIzZWU1ZDQ1ZjQ5YzBkMWFhZDEwMTVjMTA5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKIAogI2luY2x1ZGUgIkNhbnZhc0xh
eWVyQ2hyb21pdW0uaCIKIAotI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIK
IApAQCAtNDUsMTAgKzQ0LDUgQEAgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6Q2FudmFzTGF5ZXJDaHJv
bWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogewogfQogCi1QYXNzUmVmUHRyPENDTGF5
ZXJJbXBsPiBDYW52YXNMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCi17Ci0gICAg
cmV0dXJuIENDQ2FudmFzTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXllcklkKTsKLX0KLQogfQogI2Vu
ZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hy
b21pdW0uaAppbmRleCBmNDA3MmY1ZDA5NjdmNmNjMDJhNzFjNjgxYjc2Y2Q5NzU2YzMwODJhLi5j
ZmQwYmFhMmRhMDRhZWI1MDFlYjAyOWE0N2E1MjQwN2QyMDk2MmViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
TGF5ZXJDaHJvbWl1bS5oCkBAIC00MCw5ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Ly8gQmFzZSBjbGFzcyBmb3IgV2ViR0wgYW5kIGFjY2VsZXJhdGVkIDJkIGNhbnZhc2VzLgogY2xh
c3MgQ2FudmFzTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKLXB1YmxpYzoK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7
Ci0KIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDYW52YXNMYXllckNocm9taXVtKENDTGF5ZXJE
ZWxlZ2F0ZSopOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCBj
NjM5NTYzNmQ0YzM3MzIxODZiMGNlZWUxNmEzMTIxOTdkMGM5NmEwLi4zMzM1NzlkMzQxN2JjZjFm
NjliNDJiYjM5NDUyZTk5Y2I2ZTgzODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uY3BwCkBAIC03MywxMSArNzMsNiBAQCBwcml2YXRlOgogICAgIENDTGF5ZXJEZWxlZ2F0ZSog
bV9kZWxlZ2F0ZTsKIH07CiAKLVBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+IENvbnRl
bnRMYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllckNocm9taXVtKGRlbGVnYXRlKSk7Ci19
Ci0KIENvbnRlbnRMYXllckNocm9taXVtOjpDb250ZW50TGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVs
ZWdhdGUqIGRlbGVnYXRlKQogICAgIDogVGlsZWRMYXllckNocm9taXVtKGRlbGVnYXRlKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggMGM1NzRiNWRmZGMwYTU3MWI4MTFi
ZTAzOTc2NGFjNzViMWMyZTNlZS4uNjU1MzA4NTM1ZDNlMDMyZDgwYTljNTA3YmI5ZTNkNDRmNmY1
YzVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC0zNSw3ICszNSw2IEBA
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiVGlsZWRMYXll
ckNocm9taXVtLmgiCi0jaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDcgKzQ0LDcgQEAgY2xhc3MgTGF5ZXJUZXh0dXJlVXBkYXRl
cjsKIC8vIEEgTGF5ZXIgdGhhdCByZXF1aXJlcyBhIEdyYXBoaWNzQ29udGV4dCB0byByZW5kZXIg
aXRzIGNvbnRlbnRzLgogY2xhc3MgQ29udGVudExheWVyQ2hyb21pdW0gOiBwdWJsaWMgVGlsZWRM
YXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5
ZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSopOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIExheWVyVHlwZT4gc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+IGNy
ZWF0ZShDQ0xheWVyRGVsZWdhdGUqKTsKIAogICAgIHZpcnR1YWwgfkNvbnRlbnRMYXllckNocm9t
aXVtKCk7CiAKQEAgLTY0LDYgKzYzLDI4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPExheWVyVGV4
dHVyZVVwZGF0ZXI+IG1fdGV4dHVyZVVwZGF0ZXI7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBM
YXllclR5cGU+IGNsYXNzIFNlcmlhbGl6YWJsZUNvbnRlbnRMYXllckNocm9taXVtIDogcHVibGlj
IENvbnRlbnRMYXllckNocm9taXVtIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTZXJpYWxpemFi
bGVDb250ZW50TGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKSA6IENvbnRl
bnRMYXllckNocm9taXVtKGRlbGVnYXRlKSB7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxD
Q0xheWVyPiBjcmVhdGVDQ0xheWVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBMYXllclR5cGU6
OmNyZWF0ZShtX2xheWVySWQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVy
dGllc1RvKENDTGF5ZXIqIGxheWVyKQorICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVz
aFByb3BlcnRpZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgICAgIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHVzaFByb3BlcnRpZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgfQor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgorUGFzc1JlZlB0cjxDb250ZW50TGF5
ZXJDaHJvbWl1bT4gQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdhdGUq
IGRlbGVnYXRlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXphYmxlQ29udGVu
dExheWVyQ2hyb21pdW08TGF5ZXJUeXBlPihkZWxlZ2F0ZSkpOworfQorCiB9CiAjZW5kaWYgLy8g
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNo
cm9taXVtLmNwcAppbmRleCBlYWQ2YWEzYTI1MDMxZjc4NGM0Nzc1YTUzYjRhMzNhMDQyYmViZGVj
Li5jMDZiZTY2YzlhYWFkMGExNDFmYmVmZDNkZmQ2MDY0ODIyZGIxN2UwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJF
eHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAj
aW5jbHVkZSAiV2ViR0xMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiY2MvQ0NDYW52YXNMYXll
ckltcGwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNDMsNyArMTQ0LDcgQEAgdm9p
ZCBEcmF3aW5nQnVmZmVyOjpwdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCkKIFBsYXRmb3JtTGF5ZXIq
IERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKQogewogICAgIGlmICghbV9wbGF0Zm9ybUxh
eWVyKSB7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllciA9IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKDApOworICAgICAgICBtX3BsYXRmb3JtTGF5ZXIgPSBXZWJHTExheWVyQ2hyb21pdW06OmNy
ZWF0ZTxDQ0NhbnZhc0xheWVySW1wbD4oMCk7CiAgICAgICAgIG1fcGxhdGZvcm1MYXllci0+c2V0
RHJhd2luZ0J1ZmZlcih0aGlzKTsKICAgICAgICAgbV9wbGF0Zm9ybUxheWVyLT5zZXRPcGFxdWUo
IW1fY29udGV4dC0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZDIyZjFkYzQ1NTRkMDIyNzg1ZTAx
NTE4ZmRlMTJhNTBmMjMxYjBhNi4uNTQzM2YyNmQ0ZGRjNjQ5MzFhMTFlYjRjOWJhODM5MWNhNDI0
MDgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC01NCw2ICs1
NCw3IEBACiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiU3lzdGVtVGltZS5oIgorI2luY2x1ZGUgImNjL0NDVGlsZWRMYXll
ckltcGwuaCIKIAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9T
dHJpbmdFeHRyYXMuaD4KQEAgLTc0LDcgKzc1LDcgQEAgR3JhcGhpY3NMYXllckNocm9taXVtOjpH
cmFwaGljc0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogICAgICwg
bV9jb250ZW50c0xheWVySGFzQmFja2dyb3VuZENvbG9yKGZhbHNlKQogICAgICwgbV9pblNldENo
aWxkcmVuKGZhbHNlKQogewotICAgIG1fbGF5ZXIgPSBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKHRoaXMpOworICAgIG1fbGF5ZXIgPSBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPEND
VGlsZWRMYXllckltcGw+KHRoaXMpOwogCiAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CiB9
CkBAIC0zMTQsNyArMzE1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRl
bnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQgPSBmYWxz
ZTsKICAgICBpZiAoaW1hZ2UpIHsKICAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkg
fHwgbV9jb250ZW50c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9ySW1hZ2UpIHsKLSAg
ICAgICAgICAgIFJlZlB0cjxJbWFnZUxheWVyQ2hyb21pdW0+IGltYWdlTGF5ZXIgPSBJbWFnZUxh
eWVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgICAgIFJlZlB0cjxJbWFnZUxheWVy
Q2hyb21pdW0+IGltYWdlTGF5ZXIgPSBJbWFnZUxheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ1RpbGVk
TGF5ZXJJbXBsPih0aGlzKTsKICAgICAgICAgICAgIHNldHVwQ29udGVudHNMYXllcihpbWFnZUxh
eWVyLmdldCgpKTsKICAgICAgICAgICAgIG1fY29udGVudHNMYXllciA9IGltYWdlTGF5ZXI7CiAg
ICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllckZvckltYWdl
OwpAQCAtNTE4LDcgKzUxOSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVM
YXllclByZXNlcnZlczNEKCkKIHsKICAgICBpZiAobV9wcmVzZXJ2ZXMzRCAmJiAhbV90cmFuc2Zv
cm1MYXllcikgewogICAgICAgICAvLyBDcmVhdGUgdGhlIHRyYW5zZm9ybSBsYXllci4KLSAgICAg
ICAgbV90cmFuc2Zvcm1MYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzKTsKKyAgICAg
ICAgbV90cmFuc2Zvcm1MYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4o
dGhpcyk7CiAgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldFByZXNlcnZlczNEKHRydWUpOwog
CiAgICAgICAgIC8vIENvcHkgdGhlIHBvc2l0aW9uIGZyb20gdGhpcyBsYXllci4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDZlZWRjY2U3MTQzODZmMGM1OWZiYWU4MjA1Zjlj
ZmYzMThkZmY1MWYuLmRhOWIxMTkyYWQ1NzZlNGU2MGQzN2M3NDIyM2QzMTIzZDdjMmJiOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1
ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKLSNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xMjksMTEgKzEyOCw2IEBAIHByaXZhdGU6CiAgICAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgbV90
ZXhTdWJJbWFnZTsKIH07CiAKLVBhc3NSZWZQdHI8SW1hZ2VMYXllckNocm9taXVtPiBJbWFnZUxh
eWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQotewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSW1hZ2VMYXllckNocm9taXVtKGRlbGVnYXRlKSk7Ci19Ci0KIElt
YWdlTGF5ZXJDaHJvbWl1bTo6SW1hZ2VMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVs
ZWdhdGUpCiAgICAgOiBUaWxlZExheWVyQ2hyb21pdW0oZGVsZWdhdGUpCiAgICAgLCBtX2ltYWdl
Rm9yQ3VycmVudEZyYW1lKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDVmZTRm
MjY2NjhiZGNjM2UyOWYwNGNmZmNkYTg4MmE3M2MzMWUzMjcuLjUzYjhlYjIxZTdhMWNhYmZmYjJj
M2RmZDVjN2ZjM2RhMDAyMzU3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC00
OSw3ICs0OSw4IEBAIGNsYXNzIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjsKIC8vIEEgTGF5ZXIg
dGhhdCBjb250YWlucyBvbmx5IGFuIEltYWdlIGVsZW1lbnQuCiBjbGFzcyBJbWFnZUxheWVyQ2hy
b21pdW0gOiBwdWJsaWMgVGlsZWRMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbWFnZUxheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IHN0YXRpYyBQYXNzUmVmUHRyPEltYWdl
TGF5ZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSopOworCiAgICAgdmlydHVhbCB+
SW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkg
Y29uc3Q7CkBAIC01OCw5ICs1OSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENvbnRlbnRz
KEltYWdlKiBpbWFnZSk7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgSW1h
Z2VMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSopOwogCitwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBjbGVhbnVwUmVzb3VyY2VzKCk7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1
cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCopOwogICAgIHZvaWQgc2V0VGlsaW5nT3B0
aW9uKFRpbGluZ09wdGlvbik7CkBAIC03NCw2ICs3NiwyOCBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI+IG1fdGV4dHVyZVVwZGF0ZXI7CiB9OwogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IGNsYXNzIFNlcmlhbGl6YWJsZUltYWdlTGF5ZXJDaHJv
bWl1bSA6IHB1YmxpYyBJbWFnZUxheWVyQ2hyb21pdW0geworcHVibGljOgorICAgIGV4cGxpY2l0
IFNlcmlhbGl6YWJsZUltYWdlTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRl
KSA6IEltYWdlTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkgeyB9CisKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8Q0NMYXllcj4gY3JlYXRlQ0NMYXllcigpCisgICAgeworICAgICAgICByZXR1cm4gTGF5
ZXJUeXBlOjpjcmVhdGUobV9sYXllcklkKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVz
aFByb3BlcnRpZXNUbyhDQ0xheWVyKiBsYXllcikKKyAgICB7CisgICAgICAgIExheWVyQ2hyb21p
dW06OnB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgICAgICBUaWxl
ZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOwor
ICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK1Bhc3NSZWZQdHI8SW1h
Z2VMYXllckNocm9taXVtPiBJbWFnZUxheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdh
dGUqIGRlbGVnYXRlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXphYmxlSW1h
Z2VMYXllckNocm9taXVtPExheWVyVHlwZT4oZGVsZWdhdGUpKTsKK30KKwogfQogI2VuZGlmIC8v
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRl
eCA1ZWZhZGNmZjJiMTE3ZDFlYTI5YzM1OWYwNTFlODU4ZDg0OTUwMjcyLi43Yjc2NWE5MWRiOTE3
YzFkMWM4ZjFiMDkxNWNmOGQ3ZTA5MzRmNjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAt
MzMsNyArMzMsNiBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRl
ICJMYXllckNocm9taXVtLmgiCiAKLSNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2lmIFVTRShTS0lBKQogI2luY2x1ZGUgIk5hdGl2
ZUltYWdlU2tpYS5oIgpAQCAtNDksMTEgKzQ4LDYgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAog
c3RhdGljIGludCBzX25leHRMYXllcklkID0gMTsKIAotUGFzc1JlZlB0cjxMYXllckNocm9taXVt
PiBMYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW0oZGVsZWdhdGUpKTsKLX0KLQogTGF5
ZXJDaHJvbWl1bTo6TGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogICAg
IDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKICAgICAsIG1fbmVlZHNEaXNwbGF5KGZhbHNlKQpAQCAt
Mzk2LDQ3ICszOTAsNiBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheVJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiBkaXJ0eVJlY3QpCiAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIAot
dm9pZCBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikK
LXsKLSAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQobV9hbmNob3JQb2ludCk7Ci0gICAgbGF5ZXIt
PnNldEFuY2hvclBvaW50WihtX2FuY2hvclBvaW50Wik7Ci0gICAgbGF5ZXItPnNldEJhY2tncm91
bmRDb2xvcihtX2JhY2tncm91bmRDb2xvcik7Ci0gICAgbGF5ZXItPnNldEJvdW5kcyhtX2JvdW5k
cyk7Ci0gICAgbGF5ZXItPnNldENvbnRlbnRCb3VuZHMoY29udGVudEJvdW5kcygpKTsKLSAgICBs
YXllci0+c2V0RGVidWdCb3JkZXJDb2xvcihtX2RlYnVnQm9yZGVyQ29sb3IpOwotICAgIGxheWVy
LT5zZXREZWJ1Z0JvcmRlcldpZHRoKG1fZGVidWdCb3JkZXJXaWR0aCk7Ci0gICAgbGF5ZXItPnNl
dERvdWJsZVNpZGVkKG1fZG91YmxlU2lkZWQpOwotICAgIGxheWVyLT5zZXREcmF3c0NvbnRlbnQo
ZHJhd3NDb250ZW50KCkpOwotICAgIGxheWVyLT5zZXRJc05vbkNvbXBvc2l0ZWRDb250ZW50KG1f
aXNOb25Db21wb3NpdGVkQ29udGVudCk7Ci0gICAgbGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMobV9t
YXNrc1RvQm91bmRzKTsKLSAgICBsYXllci0+c2V0U2Nyb2xsYWJsZShtX3Njcm9sbGFibGUpOwot
ICAgIGxheWVyLT5zZXROYW1lKG1fbmFtZSk7Ci0gICAgbGF5ZXItPnNldE9wYXF1ZShtX29wYXF1
ZSk7Ci0gICAgbGF5ZXItPnNldE9wYWNpdHkobV9vcGFjaXR5KTsKLSAgICBsYXllci0+c2V0UG9z
aXRpb24obV9wb3NpdGlvbik7Ci0gICAgbGF5ZXItPnNldFByZXNlcnZlczNEKHByZXNlcnZlczNE
KCkpOwotICAgIGxheWVyLT5zZXRTY3JvbGxQb3NpdGlvbihtX3Njcm9sbFBvc2l0aW9uKTsKLSAg
ICBsYXllci0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0obV9zdWJsYXllclRyYW5zZm9ybSk7Ci0gICAg
bGF5ZXItPnNldFRyYW5zZm9ybShtX3RyYW5zZm9ybSk7Ci0gICAgbGF5ZXItPnNldFVwZGF0ZVJl
Y3QobV91cGRhdGVSZWN0KTsKLQotICAgIGxheWVyLT5zZXRTY3JvbGxEZWx0YShsYXllci0+c2Ny
b2xsRGVsdGEoKSAtIGxheWVyLT5zZW50U2Nyb2xsRGVsdGEoKSk7Ci0gICAgbGF5ZXItPnNldFNl
bnRTY3JvbGxEZWx0YShJbnRTaXplKCkpOwotCi0gICAgaWYgKG1hc2tMYXllcigpKQotICAgICAg
ICBtYXNrTGF5ZXIoKS0+cHVzaFByb3BlcnRpZXNUbyhsYXllci0+bWFza0xheWVyKCkpOwotICAg
IGlmIChyZXBsaWNhTGF5ZXIoKSkKLSAgICAgICAgcmVwbGljYUxheWVyKCktPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXItPnJlcGxpY2FMYXllcigpKTsKLQotICAgIC8vIFJlc2V0IGFueSBzdGF0ZSB0
aGF0IHNob3VsZCBiZSBjbGVhcmVkIGZvciB0aGUgbmV4dCB1cGRhdGUuCi0gICAgbV91cGRhdGVS
ZWN0ID0gRmxvYXRSZWN0KCk7Ci19Ci0KLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IExheWVyQ2hy
b21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKLXsKLSAgICByZXR1cm4gQ0NMYXllckltcGw6OmNy
ZWF0ZShtX2xheWVySWQpOwotfQotCiB2b2lkIExheWVyQ2hyb21pdW06OnNldERlYnVnQm9yZGVy
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIG1fZGVidWdCb3JkZXJDb2xvciA9IGNv
bG9yOwpAQCAtNDcyLDYgKzQyNSwxNyBAQCBib29sIExheWVyQ2hyb21pdW06OmRlc2NlbmRhbnRE
cmF3c0NvbnRlbnQoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorUGFzc1JlZlB0cjxDQ0xheWVy
PiBMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVyKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gUGFzc1JlZlB0cjxDQ0xheWVyPigpOworfQorCit2b2lkIExheWVy
Q2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllciopCit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKIHZvaWQgc29ydExheWVycyhWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID46Oml0ZXJhdG9yLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID46Oml0ZXJhdG9y
LCB2b2lkKikKIHsKICAgICAvLyBDdXJyZW50bHkgd2UgZG9uJ3QgdXNlIHotb3JkZXIgdG8gZGVj
aWRlIHdoYXQgdG8gcGFpbnQsIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBhY3R1YWxseSBzb3J0IExh
eWVyQ2hyb21pdW1zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGY5Mzc1NWYwOWJmMWM4ZTY2NTk0
YzM3NDhiMDk2ZmYzZTZlYzA2ODcuLjkzNTgyODZlMGI0NzJmZThhZDkyMzllYTcwYzNiMmFiOTAw
YWU5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKIAorI2luY2x1ZGUgImNjL0NDTGF5ZXIuaCIKICNpbmNs
dWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTUxLDcgKzUyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKIGNsYXNz
IENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKQEAgLTY4LDcgKzY4
LDggQEAgcHVibGljOgogY2xhc3MgTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBSZWZDb3VudGVkPExh
eWVyQ2hyb21pdW0+IHsKICAgICBmcmllbmQgY2xhc3MgTGF5ZXJUaWxlckNocm9taXVtOwogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVy
RGVsZWdhdGUqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IHN0YXRpYyBQYXNz
UmVmUHRyPExheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqKTsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IHN0YXRpYyB2b2lkIHB1c2hQcm9wZXJ0aWVzKGNvbnN0
IExheWVyQ2hyb21pdW0qLCBDQ0xheWVyKik7CiAKICAgICB2aXJ0dWFsIH5MYXllckNocm9taXVt
KCk7CiAKQEAgLTE3Miw3ICsxNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREZWJ1Z0JvcmRl
ckNvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgdm9pZCBzZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7Cisg
ICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllciopOwogCiAgICAgdHlwZWRl
ZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3MsIEZyYWdtZW50U2hhZGVyQ29sb3I+IEJv
cmRlclByb2dyYW07CiAKQEAgLTIwNCw2ICsyMDUsOCBAQCBwdWJsaWM6CiAgICAgQ0NMYXllclRy
ZWVIb3N0KiBsYXllclRyZWVIb3N0KCkgY29uc3QgeyByZXR1cm4gbV9sYXllclRyZWVIb3N0Lmdl
dCgpOyB9CiAgICAgdm9pZCBjbGVhbnVwUmVzb3VyY2VzUmVjdXJzaXZlKCk7CiAKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8Q0NMYXllcj4gY3JlYXRlQ0NMYXllcigpOworCiBwcm90ZWN0ZWQ6CiAg
ICAgQ0NMYXllckRlbGVnYXRlKiBtX2RlbGVnYXRlOwogICAgIGV4cGxpY2l0IExheWVyQ2hyb21p
dW0oQ0NMYXllckRlbGVnYXRlKik7CkBAIC0yMjUsMTAgKzIyOCw2IEBAIHByb3RlY3RlZDoKIAog
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX21hc2tMYXllcjsKIAotICAgIGZyaWVuZCBjbGFz
cyBUcmVlU3luY2hyb25pemVyOwotICAgIGZyaWVuZCBjbGFzcyBDQ0xheWVySW1wbDsKLSAgICAv
LyBDb25zdHJ1Y3RzIGEgQ0NMYXllckltcGwgb2YgdGhlIGNvcnJlY3QgcnVudGltZSB0eXBlIGZv
ciB0aGlzIExheWVyQ2hyb21pdW0gdHlwZS4KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXll
ckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAgICAgaW50IG1fbGF5ZXJJZDsKIAogcHJpdmF0
ZToKQEAgLTI5MSw2ICsyOTAsNTggQEAgcHJpdmF0ZToKICAgICBib29sIG1fcGFnZVNjYWxlRGly
dHk7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IGNsYXNzIFNlcmlhbGl6YWJs
ZUxheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgU2VyaWFsaXphYmxlTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRl
KSA6IExheWVyQ2hyb21pdW0oZGVsZWdhdGUpIHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PENDTGF5ZXI+IGNyZWF0ZUNDTGF5ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIExheWVyVHlw
ZTo6Y3JlYXRlKG1fbGF5ZXJJZCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9w
ZXJ0aWVzVG8oQ0NMYXllciogbGF5ZXIpCisgICAgeworICAgICAgICBwdXNoUHJvcGVydGllczxM
YXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBM
YXllclR5cGU+CitQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IExheWVyQ2hyb21pdW06OmNyZWF0
ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2VyaWFsaXphYmxlTGF5ZXJDaHJvbWl1bTxMYXllclR5cGU+KGRlbGVnYXRlKSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3Bl
cnRpZXMoY29uc3QgTGF5ZXJDaHJvbWl1bSogZnJvbSwgQ0NMYXllciogdG8pCit7CisgICAgTGF5
ZXJUeXBlKiBsYXllciA9IHN0YXRpY19jYXN0PExheWVyVHlwZSo+KHRvKTsKKworICAgIGxheWVy
LT5zZXRBbmNob3JQb2ludChmcm9tLT5tX2FuY2hvclBvaW50KTsKKyAgICBsYXllci0+c2V0QW5j
aG9yUG9pbnRaKGZyb20tPm1fYW5jaG9yUG9pbnRaKTsKKyAgICBsYXllci0+c2V0QmFja2dyb3Vu
ZENvbG9yKGZyb20tPm1fYmFja2dyb3VuZENvbG9yKTsKKyAgICBsYXllci0+c2V0Qm91bmRzKGZy
b20tPm1fYm91bmRzKTsKKyAgICBsYXllci0+c2V0Q29udGVudEJvdW5kcyhmcm9tLT5jb250ZW50
Qm91bmRzKCkpOworICAgIGxheWVyLT5zZXREZWJ1Z0JvcmRlckNvbG9yKGZyb20tPm1fZGVidWdC
b3JkZXJDb2xvcik7CisgICAgbGF5ZXItPnNldERlYnVnQm9yZGVyV2lkdGgoZnJvbS0+bV9kZWJ1
Z0JvcmRlcldpZHRoKTsKKyAgICBsYXllci0+c2V0RG91YmxlU2lkZWQoZnJvbS0+bV9kb3VibGVT
aWRlZCk7CisgICAgbGF5ZXItPnNldERyYXdzQ29udGVudChmcm9tLT5kcmF3c0NvbnRlbnQoKSk7
CisgICAgbGF5ZXItPnNldElzTm9uQ29tcG9zaXRlZENvbnRlbnQoZnJvbS0+bV9pc05vbkNvbXBv
c2l0ZWRDb250ZW50KTsKKyAgICBsYXllci0+c2V0TWFza3NUb0JvdW5kcyhmcm9tLT5tX21hc2tz
VG9Cb3VuZHMpOworICAgIGxheWVyLT5zZXRTY3JvbGxhYmxlKGZyb20tPm1fc2Nyb2xsYWJsZSk7
CisgICAgbGF5ZXItPnNldE5hbWUoZnJvbS0+bV9uYW1lKTsKKyAgICBsYXllci0+c2V0T3BhcXVl
KGZyb20tPm1fb3BhcXVlKTsKKyAgICBsYXllci0+c2V0T3BhY2l0eShmcm9tLT5tX29wYWNpdHkp
OworICAgIGxheWVyLT5zZXRQb3NpdGlvbihmcm9tLT5tX3Bvc2l0aW9uKTsKKyAgICBsYXllci0+
c2V0UHJlc2VydmVzM0QoZnJvbS0+cHJlc2VydmVzM0QoKSk7CisgICAgbGF5ZXItPnNldFNjcm9s
bFBvc2l0aW9uKGZyb20tPm1fc2Nyb2xsUG9zaXRpb24pOworICAgIGxheWVyLT5zZXRTdWJsYXll
clRyYW5zZm9ybShmcm9tLT5tX3N1YmxheWVyVHJhbnNmb3JtKTsKKyAgICBsYXllci0+c2V0VHJh
bnNmb3JtKGZyb20tPm1fdHJhbnNmb3JtKTsKKyAgICBsYXllci0+c2V0VXBkYXRlUmVjdChmcm9t
LT5tX3VwZGF0ZVJlY3QpOworCisgICAgbGF5ZXItPnNldFNjcm9sbERlbHRhKGxheWVyLT5zY3Jv
bGxEZWx0YSgpIC0gbGF5ZXItPnNlbnRTY3JvbGxEZWx0YSgpKTsKKyAgICBsYXllci0+c2V0U2Vu
dFNjcm9sbERlbHRhKEludFNpemUoKSk7Cit9CisKIHZvaWQgc29ydExheWVycyhWZWN0b3I8UmVm
UHRyPExheWVyQ2hyb21pdW0+ID46Oml0ZXJhdG9yLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID46Oml0ZXJhdG9yLCB2b2lkKik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgKaW5kZXggYzhhY2IyYzM0NWFhMDZjMTdkZDQ5YTM3MWM4OTJhOGMyZDJhN2RmMy4uMWE4
OTc5ODgzMGFkMDJmMWZkZGM3ZGI0ZTQ3OTJmZjY3OGU1MmU3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJjYy9DQ0hlYWRz
VXBEaXNwbGF5LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1
ZGUgImNjL0NDUGx1Z2luTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1w
bC5oIgogI2luY2x1ZGUgImNjL0NDVmlkZW9MYXllckltcGwuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXll
ckNocm9taXVtLmNwcAppbmRleCBlM2M1YzQ4Zjc5MjBmZWVjNzA4ZTRkYWM3YWVmNjRlMjNlOGFh
ZjAwLi4xOTdhM2U2MjNhZGU5MjNmYjViNzg0ODdmMjhmYWYyNjgxOGJhMjM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9QbHVnaW5MYXllckNocm9taXVtLmNwcApAQCAtMzEsMTYgKzMxLDkgQEAKIAogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgi
Ci0jaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKLSNpbmNsdWRlICJjYy9DQ1BsdWdpbkxheWVy
SW1wbC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8UGx1Z2luTGF5ZXJD
aHJvbWl1bT4gUGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVs
ZWdhdGUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5MYXllckNocm9taXVtKGRl
bGVnYXRlKSk7Ci19Ci0KIFBsdWdpbkxheWVyQ2hyb21pdW06OlBsdWdpbkxheWVyQ2hyb21pdW0o
Q0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IExheWVyQ2hyb21pdW0oZGVsZWdhdGUp
CiAgICAgLCBtX3RleHR1cmVJZCgwKQpAQCAtNjMsMTEgKzU2LDYgQEAgdm9pZCBQbHVnaW5MYXll
ckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBy
ZW5kZXJlckMKICAgICBtX2RpcnR5UmVjdCA9IEZsb2F0UmVjdCgpOwogfQogCi1QYXNzUmVmUHRy
PENDTGF5ZXJJbXBsPiBQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCi17
Ci0gICAgcmV0dXJuIENDUGx1Z2luTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXllcklkKTsKLX0KLQog
dm9pZCBQbHVnaW5MYXllckNocm9taXVtOjpzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpCiB7CiAg
ICAgbV90ZXh0dXJlSWQgPSBpZDsKQEAgLTk5LDE3ICs4Nyw2IEBAIHVpbnQzMl90IFBsdWdpbkxh
eWVyQ2hyb21pdW06OmdldElPU3VyZmFjZUlkKCkgY29uc3QKICAgICByZXR1cm4gbV9pb1N1cmZh
Y2VJZDsKIH0KIAotdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKEND
TGF5ZXJJbXBsKiBsYXllcikKLXsKLSAgICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1Rv
KGxheWVyKTsKLQotICAgIENDUGx1Z2luTGF5ZXJJbXBsKiBwbHVnaW5MYXllciA9IHN0YXRpY19j
YXN0PENDUGx1Z2luTGF5ZXJJbXBsKj4obGF5ZXIpOwotICAgIHBsdWdpbkxheWVyLT5zZXRUZXh0
dXJlSWQobV90ZXh0dXJlSWQpOwotICAgIHBsdWdpbkxheWVyLT5zZXRGbGlwcGVkKG1fZmxpcHBl
ZCk7Ci0gICAgcGx1Z2luTGF5ZXItPnNldFVWUmVjdChtX3V2UmVjdCk7Ci0gICAgcGx1Z2luTGF5
ZXItPnNldElPU3VyZmFjZVByb3BlcnRpZXMobV9pb1N1cmZhY2VXaWR0aCwgbV9pb1N1cmZhY2VI
ZWlnaHQsIG1faW9TdXJmYWNlSWQpOwotfQotCiB2b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06Omlu
dmFsaWRhdGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZGlydHlSZWN0KQogewogICAgIHNldE5lZWRz
RGlzcGxheVJlY3QoZGlydHlSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaAppbmRl
eCAyNzdhOTY5YzU4Y2MzZjU4MzQ1ODdlMDc3OGZmZDFjNjI3N2Q2NmY2Li43YWQyMDY4YjJhZjdm
MmFkNzJiM2MxMTFiNzJlN2YxY2ZkY2I2YWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1
bS5oCkBAIC0zNiwxMiArMzYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQSBMYXllciBj
b250YWluaW5nIGEgdGhlIHJlbmRlcmVkIG91dHB1dCBvZiBhIHBsdWdpbiBpbnN0YW5jZS4KIGNs
YXNzIFBsdWdpbkxheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5
ZXJEZWxlZ2F0ZSogPSAwKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IHN0YXRp
YyBQYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUq
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IHN0YXRpYyB2b2lkIHB1c2hQcm9w
ZXJ0aWVzKFBsdWdpbkxheWVyQ2hyb21pdW0qLCBDQ0xheWVyKik7CisKICAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJl
VXBkYXRlciYpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVD
Q0xheWVySW1wbCgpOwotCiAgICAgLy8gQ29kZSBwYXRoIGZvciBwbHVnaW5zIHdoaWNoIHN1cHBs
eSB0aGVpciBvd24gdGV4dHVyZSBJRC4KICAgICB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCB0
ZXh0dXJlSWQpOwogICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4
dHVyZUlkOyB9CkBAIC01NCw4ICs1NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElPU3VyZmFj
ZVByb3BlcnRpZXMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1aW50MzJfdCBpb1N1cmZhY2VJZCk7
CiAgICAgdWludDMyX3QgZ2V0SU9TdXJmYWNlSWQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7Ci0KICAgICB2b2lkIGludmFsaWRhdGVS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgZGlydHlSZWN0KTsKIAogcHJvdGVjdGVkOgpAQCAtNzEsNiAr
NjksMzkgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9kaXJ0eVJlY3Q7CiB9OwogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IGNsYXNzIFNlcmlhbGl6YWJsZVBsdWdpbkxheWVyQ2hy
b21pdW0gOiBwdWJsaWMgUGx1Z2luTGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgU2VyaWFsaXphYmxlUGx1Z2luTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVn
YXRlKSA6IFBsdWdpbkxheWVyQ2hyb21pdW0oZGVsZWdhdGUpIHsgfQorCisgICAgUGFzc1JlZlB0
cjxDQ0xheWVyPiBjcmVhdGVDQ0xheWVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBMYXllclR5
cGU6OmNyZWF0ZShtX2xheWVySWQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJv
cGVydGllc1RvKENDTGF5ZXIqIGxheWVyKQorICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6
cHVzaFByb3BlcnRpZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgICAgIHB1c2hQcm9w
ZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5
cGVuYW1lIExheWVyVHlwZT4KK1Bhc3NSZWZQdHI8UGx1Z2luTGF5ZXJDaHJvbWl1bT4gUGx1Z2lu
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVQbHVnaW5MYXllckNocm9taXVtPExheWVy
VHlwZT4oZGVsZWdhdGUpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgordm9p
ZCBQbHVnaW5MYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllcyhQbHVnaW5MYXllckNocm9taXVt
KiBmcm9tLCBDQ0xheWVyKiB0bykKK3sKKyAgICBMYXllclR5cGUqIGxheWVyID0gc3RhdGljX2Nh
c3Q8TGF5ZXJUeXBlKj4odG8pOworCisgICAgbGF5ZXItPnNldFRleHR1cmVJZChmcm9tLT5tX3Rl
eHR1cmVJZCk7CisgICAgbGF5ZXItPnNldEZsaXBwZWQoZnJvbS0+bV9mbGlwcGVkKTsKKyAgICBs
YXllci0+c2V0VVZSZWN0KGZyb20tPm1fdXZSZWN0KTsKKyAgICBsYXllci0+c2V0SU9TdXJmYWNl
UHJvcGVydGllcyhmcm9tLT5tX2lvU3VyZmFjZVdpZHRoLCBmcm9tLT5tX2lvU3VyZmFjZUhlaWdo
dCwgZnJvbS0+bV9pb1N1cmZhY2VJZCk7Cit9CisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDMy
OTkzMjI5MGU3YTgwZTVkODQ5MDE5OGQxYzFlODE5YTg4MjIwYTIuLjE1OGU5MDNhZDVjNWFjZTA0
MmFhZmRkYzc4ZWYwYmNiMzNjNmNlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cApAQCAtMzQsOSArMzQsNyBAQAogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVk
ZSAiTWF0aEV4dHJhcy5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKLSNpbmNsdWRlICJjYy9D
Q0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKLSNpbmNsdWRl
ICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAK
IC8vIFN0YXJ0IHRpbGluZyB3aGVuIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGEgbGF5ZXIgYXJl
IGxhcmdlciB0aGFuIHRoaXMgc2l6ZS4KQEAgLTQ5LDI1ICs0Nyw2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVXBkYXRhYmxlVGlsZSA6IHB1
YmxpYyBDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
VXBkYXRhYmxlVGlsZSk7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgVXBkYXRhYmxlVGlsZShQYXNz
T3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJl
KHRleHR1cmUpIHsgfQotCi0gICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVy
ZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQotICAgIE1hbmFnZWRUZXh0dXJlKiBtYW5h
Z2VkVGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS0+dGV4dHVyZSgpOyB9Ci0KLSAgICBib29s
IGlzRGlydHkoKSBjb25zdCB7IHJldHVybiAhbV9kaXJ0eUxheWVyUmVjdC5pc0VtcHR5KCk7IH0K
LSAgICB2b2lkIGNsZWFyRGlydHkoKSB7IG1fZGlydHlMYXllclJlY3QgPSBJbnRSZWN0KCk7IH0K
LQotICAgIC8vIExheWVyLXNwYWNlIGRpcnR5IHJlY3RhbmdsZSB0aGF0IG5lZWRzIHRvIGJlIHJl
cGFpbnRlZC4KLSAgICBJbnRSZWN0IG1fZGlydHlMYXllclJlY3Q7Ci0gICAgLy8gQ29udGVudC1z
cGFjZSByZWN0YW5nbGUgdGhhdCBuZWVkcyB0byBiZSB1cGRhdGVkLgotICAgIEludFJlY3QgbV91
cGRhdGVSZWN0OwotcHJpdmF0ZToKLSAgICBPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZT4gbV90ZXh0dXJlOwotfTsKLQogVGlsZWRMYXllckNocm9taXVtOjpUaWxlZExheWVyQ2hy
b21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IExheWVyQ2hyb21pdW0oZGVs
ZWdhdGUpCiAgICAgLCBtX3RleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
RU5VTSkKQEAgLTgyLDExICs2MSw2IEBAIFRpbGVkTGF5ZXJDaHJvbWl1bTo6flRpbGVkTGF5ZXJD
aHJvbWl1bSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IFRpbGVkTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQotewotICAgIHJldHVybiBDQ1RpbGVkTGF5ZXJJbXBs
OjpjcmVhdGUoaWQoKSk7Ci19Ci0KIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpjbGVhbnVwUmVz
b3VyY2VzKCkKIHsKICAgICBMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCk7CkBAIC0y
NDUsMzMgKzIxOSw2IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRJc01hc2soYm9vbCBp
c01hc2spCiAgICAgc2V0VGlsaW5nT3B0aW9uKGlzTWFzayA/IE5ldmVyVGlsZSA6IEF1dG9UaWxl
KTsKIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXll
ckltcGwqIGxheWVyKQotewotICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5
ZXIpOwotCi0gICAgQ0NUaWxlZExheWVySW1wbCogdGlsZWRMYXllciA9IHN0YXRpY19jYXN0PEND
VGlsZWRMYXllckltcGwqPihsYXllcik7Ci0gICAgaWYgKCFtX3RpbGVyKSB7Ci0gICAgICAgIHRp
bGVkTGF5ZXItPnNldFNraXBzRHJhdyh0cnVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIHRpbGVkTGF5ZXItPnNldFNraXBzRHJhdyhtX3NraXBzRHJhdyk7Ci0gICAgdGlsZWRMYXll
ci0+c2V0Q29udGVudHNTd2l6emxlZChtX3NhbXBsZWRUZXhlbEZvcm1hdCAhPSBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBKTsKLSAgICB0aWxlZExheWVyLT5zZXRU
aWxpbmdEYXRhKCptX3RpbGVyKTsKLQotICAgIGZvciAoQ0NMYXllclRpbGluZ0RhdGE6OlRpbGVN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3RpbGVyLT50aWxlcygpLmJlZ2luKCk7IGl0ZXIg
IT0gbV90aWxlci0+dGlsZXMoKS5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIGludCBpID0gaXRl
ci0+Zmlyc3QuZmlyc3Q7Ci0gICAgICAgIGludCBqID0gaXRlci0+Zmlyc3Quc2Vjb25kOwotICAg
ICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gc3RhdGljX2Nhc3Q8VXBkYXRhYmxlVGlsZSo+KGl0
ZXItPnNlY29uZC5nZXQoKSk7Ci0gICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+
aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGlmICh0aWxlLT5pc0RpcnR5KCkpCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICB0aWxlZExheWVyLT5zeW5jVGV4dHVyZUlkKGksIGosIHRpbGUt
Pm1hbmFnZWRUZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKLSAgICB9Ci19Ci0KIFRleHR1cmVNYW5h
Z2VyKiBUaWxlZExheWVyQ2hyb21pdW06OnRleHR1cmVNYW5hZ2VyKCkgY29uc3QKIHsKICAgICBp
ZiAoIWxheWVyVHJlZUhvc3QoKSkKQEAgLTQ0Nyw2ICszOTQsNyBAQCB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAg
IG1fc2tpcHNJZGxlUGFpbnQgPSBmYWxzZTsKICAgICBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVj
dCA9IEludFJlY3QoKTsKICAgICBtX3BhaW50UmVjdCA9IEludFJlY3QoKTsKKyAgICBtX3VwZGF0
ZVJlY3QgPSBGbG9hdFJlY3QoKTsKIAogICAgIG1fdGlsZXItPmdyb3dMYXllclRvQ29udGFpbihJ
bnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGNvbnRlbnRCb3VuZHMoKSkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5oCmluZGV4IDRiMGNjNTU1MWNiYTAyNjhjODRlZTFmOTRkNTFmNWNkNWZm
NjBjZTUuLjNjYzhmOTU0M2I5NWFiODMzNGM1MTYyMTczZGFmYTRjZjhkNWE3M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC0yOSwyNSArMjksNDEgQEAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisjaW5jbHVk
ZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUaWxpbmdEYXRh
LmgiCi0jaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIExheWVyVGV4dHVyZVVwZGF0ZXI7Ci1jbGFzcyBVcGRhdGFibGVUaWxlOwor
Y2xhc3MgVXBkYXRhYmxlVGlsZSA6IHB1YmxpYyBDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZSB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVXBkYXRhYmxlVGlsZSk7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgVXBkYXRhYmxlVGlsZShQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQorCisgICAgTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQor
ICAgIE1hbmFnZWRUZXh0dXJlKiBtYW5hZ2VkVGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS0+
dGV4dHVyZSgpOyB9CisKKyAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiAhbV9kaXJ0
eUxheWVyUmVjdC5pc0VtcHR5KCk7IH0KKyAgICB2b2lkIGNsZWFyRGlydHkoKSB7IG1fZGlydHlM
YXllclJlY3QgPSBJbnRSZWN0KCk7IH0KKworICAgIC8vIExheWVyLXNwYWNlIGRpcnR5IHJlY3Rh
bmdsZSB0aGF0IG5lZWRzIHRvIGJlIHJlcGFpbnRlZC4KKyAgICBJbnRSZWN0IG1fZGlydHlMYXll
clJlY3Q7CisgICAgLy8gQ29udGVudC1zcGFjZSByZWN0YW5nbGUgdGhhdCBuZWVkcyB0byBiZSB1
cGRhdGVkLgorICAgIEludFJlY3QgbV91cGRhdGVSZWN0OworcHJpdmF0ZToKKyAgICBPd25QdHI8
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gbV90ZXh0dXJlOworfTsKIAogY2xhc3MgVGls
ZWRMYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgogICAgIGVu
dW0gVGlsaW5nT3B0aW9uIHsgQWx3YXlzVGlsZSwgTmV2ZXJUaWxlLCBBdXRvVGlsZSB9OwogCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgdm9pZCBwdXNoUHJvcGVydGll
cyhjb25zdCBUaWxlZExheWVyQ2hyb21pdW0qLCBDQ0xheWVyKik7CisKICAgICB2aXJ0dWFsIH5U
aWxlZExheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3Bl
cnRpZXNUbyhDQ0xheWVySW1wbCopOwotCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRlbnRzU2NhbGUoKSBjb25zdDsKIApA
QCAtOTAsOCArMTA2LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIq
IHRleHR1cmVNYW5hZ2VyKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOwotCiAgICAgdmlydHVhbCB2b2lk
IHNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Kik7CiAKICAgICB2b2lkIGNyZWF0ZVRp
bGVySWZOZWVkZWQoKTsKQEAgLTEyMCw2ICsxMzQsMzMgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8
Q0NMYXllclRpbGluZ0RhdGE+IG1fdGlsZXI7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXll
clR5cGU+Cit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXMoY29uc3QgVGls
ZWRMYXllckNocm9taXVtKiBmcm9tLCBDQ0xheWVyKiB0bykKK3sKKyAgICBMYXllclR5cGUqIGxh
eWVyID0gc3RhdGljX2Nhc3Q8TGF5ZXJUeXBlKj4odG8pOworCisgICAgaWYgKCFmcm9tLT5tX3Rp
bGVyKSB7CisgICAgICAgIGxheWVyLT5zZXRTa2lwc0RyYXcodHJ1ZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBsYXllci0+c2V0U2tpcHNEcmF3KGZyb20tPm1fc2tpcHNEcmF3KTsK
KyAgICBsYXllci0+c2V0Q29udGVudHNTd2l6emxlZChmcm9tLT5tX3NhbXBsZWRUZXhlbEZvcm1h
dCAhPSBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBKTsKKyAgICBs
YXllci0+c2V0VGlsaW5nRGF0YSgqKGZyb20tPm1fdGlsZXIpKTsKKworICAgIGZvciAoQ0NMYXll
clRpbGluZ0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBmcm9tLT5tX3RpbGVy
LT50aWxlcygpLmJlZ2luKCk7IGl0ZXIgIT0gZnJvbS0+bV90aWxlci0+dGlsZXMoKS5lbmQoKTsg
KytpdGVyKSB7CisgICAgICAgIGludCBpID0gaXRlci0+Zmlyc3QuZmlyc3Q7CisgICAgICAgIGlu
dCBqID0gaXRlci0+Zmlyc3Quc2Vjb25kOworICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0g
c3RhdGljX2Nhc3Q8VXBkYXRhYmxlVGlsZSo+KGl0ZXItPnNlY29uZC5nZXQoKSk7CisgICAgICAg
IGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChmcm9tLT5tX3RpbGVyLT50aWxl
U2l6ZSgpLCBmcm9tLT5tX3RleHR1cmVGb3JtYXQpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIGlmICh0aWxlLT5pc0RpcnR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBsYXllci0+c3luY1RleHR1cmVJZChpLCBqLCB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT50
ZXh0dXJlSWQoKSk7CisgICAgfQorfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuY3BwCmluZGV4IGQwZmQwY2U1MjNk
NjM4ODRiZTkzMmUxYmQ0MTY1ODJmMjU3NjJlNDAuLjRkOWNlMTgwYTBiZWY5MTY2YzYyYjEwOTZm
M2NhODk1ZWI5ODUyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuY3BwCkBAIC0zMyw2MyAr
MzMsNzEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFRyZWVTeW5jaHJvbml6ZXI6
OmFkZENDTGF5ZXJJbXBsc1RvTWFwUmVjdXJzaXZlKENDTGF5ZXJJbXBsTWFwJiBtYXAsIENDTGF5
ZXJJbXBsKiBjY0xheWVySW1wbCkKK3RlbXBsYXRlPHR5cGVuYW1lIENDTGF5ZXJUeXBlPgordm9p
ZCBUcmVlU3luY2hyb25pemVyOjphZGRDQ0xheWVyc1RvTWFwUmVjdXJzaXZlKENDTGF5ZXJNYXAm
IG1hcCwgQ0NMYXllclR5cGUqIGNjTGF5ZXIpCiB7Ci0gICAgbWFwLnNldChjY0xheWVySW1wbC0+
aWQoKSwgY2NMYXllckltcGwpOworICAgIG1hcC5zZXQoY2NMYXllci0+aWQoKSwgY2NMYXllcik7
CiAKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBjaGlsZHJlbiA9IGNj
TGF5ZXJJbXBsLT5jaGlsZHJlbigpOworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NMYXllclR5
cGU+ID4mIGNoaWxkcmVuID0gY2NMYXllci0+Y2hpbGRyZW4oKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKQotICAgICAgICBhZGRDQ0xheWVySW1wbHNU
b01hcFJlY3Vyc2l2ZShtYXAsIGNoaWxkcmVuW2ldLmdldCgpKTsKKyAgICAgICAgYWRkQ0NMYXll
cnNUb01hcFJlY3Vyc2l2ZTxDQ0xheWVyVHlwZT4obWFwLCBjaGlsZHJlbltpXS5nZXQoKSk7CiAK
LSAgICBpZiAoQ0NMYXllckltcGwqIG1hc2tMYXllciA9IGNjTGF5ZXJJbXBsLT5tYXNrTGF5ZXIo
KSkKLSAgICAgICAgYWRkQ0NMYXllckltcGxzVG9NYXBSZWN1cnNpdmUobWFwLCBtYXNrTGF5ZXIp
OworICAgIGlmIChDQ0xheWVyVHlwZSogbWFza0xheWVyID0gY2NMYXllci0+bWFza0xheWVyKCkp
CisgICAgICAgIGFkZENDTGF5ZXJzVG9NYXBSZWN1cnNpdmU8Q0NMYXllclR5cGU+KG1hcCwgbWFz
a0xheWVyKTsKIAotICAgIGlmIChDQ0xheWVySW1wbCogcmVwbGljYUxheWVyID0gY2NMYXllcklt
cGwtPnJlcGxpY2FMYXllcigpKQotICAgICAgICBhZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vyc2l2
ZShtYXAsIHJlcGxpY2FMYXllcik7CisgICAgaWYgKENDTGF5ZXJUeXBlKiByZXBsaWNhTGF5ZXIg
PSBjY0xheWVyLT5yZXBsaWNhTGF5ZXIoKSkKKyAgICAgICAgYWRkQ0NMYXllcnNUb01hcFJlY3Vy
c2l2ZTxDQ0xheWVyVHlwZT4obWFwLCByZXBsaWNhTGF5ZXIpOwogfQogCi1QYXNzUmVmUHRyPEND
TGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUoTGF5
ZXJDaHJvbWl1bSogbGF5ZXIsIENDTGF5ZXJJbXBsTWFwJiBtYXApCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBMYXllclR5cGUsIHR5cGVuYW1lIENDTGF5ZXJUeXBlPgorUGFzc1JlZlB0cjxDQ0xheWVyVHlw
ZT4gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlUmVjdXJzaXZlKExheWVyVHlwZSog
bGF5ZXIsIENDTGF5ZXJNYXAmIG1hcCkKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5
ZXJJbXBsOwotICAgIENDTGF5ZXJJbXBsTWFwOjppdGVyYXRvciBpdCA9IG1hcC5maW5kKGxheWVy
LT5pZCgpKTsKKyAgICBSZWZQdHI8Q0NMYXllclR5cGU+IGNjTGF5ZXI7CisgICAgQ0NMYXllck1h
cDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZChsYXllci0+aWQoKSk7CiAgICAgaWYgKGl0ICE9IG1h
cC5lbmQoKSkgewotICAgICAgICBjY0xheWVySW1wbCA9IGl0LT5zZWNvbmQ7IC8vIFdlIGFscmVh
ZHkgaGF2ZSBhbiBlbnRyeSBmb3IgdGhpcywgd2UganVzdCBuZWVkIHRvIHJlcGFyZW50IGl0Lgot
ICAgICAgICBjY0xheWVySW1wbC0+Y2xlYXJDaGlsZExpc3QoKTsKKyAgICAgICAgY2NMYXllciA9
IHN0YXRpY19wb2ludGVyX2Nhc3Q8Q0NMYXllclR5cGUsIENDTGF5ZXI+KGl0LT5zZWNvbmQpOyAv
LyBXZSBhbHJlYWR5IGhhdmUgYW4gZW50cnkgZm9yIHRoaXMsIHdlIGp1c3QgbmVlZCB0byByZXBh
cmVudCBpdC4KKyAgICAgICAgY2NMYXllci0+Y2xlYXJDaGlsZExpc3QoKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBjY0xheWVySW1wbCA9IGxheWVyLT5jcmVhdGVDQ0xheWVySW1wbCgpOwotICAg
ICAgICBtYXAuc2V0KGxheWVyLT5pZCgpLCBjY0xheWVySW1wbCk7IC8vIEFkZCBpdCB0byB0aGUg
bWFwIHNvIG90aGVyIGxheWVycyByZWZlcmVuY2luZyB0aGlzIG9uZSBjYW4gcGljayBpdCB1cC4K
KyAgICAgICAgY2NMYXllciA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8Q0NMYXllclR5cGUsIENDTGF5
ZXI+KGxheWVyLT5jcmVhdGVDQ0xheWVyKCkpOworICAgICAgICBtYXAuc2V0KGxheWVyLT5pZCgp
LCBjY0xheWVyKTsgLy8gQWRkIGl0IHRvIHRoZSBtYXAgc28gb3RoZXIgbGF5ZXJzIHJlZmVyZW5j
aW5nIHRoaXMgb25lIGNhbiBwaWNrIGl0IHVwLgogICAgIH0KIAotICAgIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgY2hpbGRyZW4gPSBsYXllci0+Y2hpbGRyZW4oKTsKKyAg
ICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyVHlwZT4gPiYgY2hpbGRyZW4gPSBsYXllci0+Y2hp
bGRyZW4oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytp
KQotICAgICAgICBjY0xheWVySW1wbC0+YWRkQ2hpbGQoc3luY2hyb25pemVUcmVlUmVjdXJzaXZl
KGNoaWxkcmVuW2ldLmdldCgpLCBtYXApKTsKKyAgICAgICAgY2NMYXllci0+YWRkQ2hpbGQoc3lu
Y2hyb25pemVUcmVlUmVjdXJzaXZlPExheWVyVHlwZSwgQ0NMYXllclR5cGU+KGNoaWxkcmVuW2ld
LmdldCgpLCBtYXApKTsKIAotICAgIGlmIChMYXllckNocm9taXVtKiBtYXNrTGF5ZXIgPSBsYXll
ci0+bWFza0xheWVyKCkpCi0gICAgICAgIGNjTGF5ZXJJbXBsLT5zZXRNYXNrTGF5ZXIoc3luY2hy
b25pemVUcmVlUmVjdXJzaXZlKG1hc2tMYXllciwgbWFwKSk7CisgICAgaWYgKExheWVyVHlwZSog
bWFza0xheWVyID0gbGF5ZXItPm1hc2tMYXllcigpKQorICAgICAgICBjY0xheWVyLT5zZXRNYXNr
TGF5ZXIoc3luY2hyb25pemVUcmVlUmVjdXJzaXZlPExheWVyVHlwZSwgQ0NMYXllclR5cGU+KG1h
c2tMYXllciwgbWFwKSk7CiAgICAgZWxzZQotICAgICAgICBjY0xheWVySW1wbC0+c2V0TWFza0xh
eWVyKDApOworICAgICAgICBjY0xheWVyLT5zZXRNYXNrTGF5ZXIoMCk7CiAKLSAgICBpZiAoTGF5
ZXJDaHJvbWl1bSogcmVwbGljYUxheWVyID0gbGF5ZXItPnJlcGxpY2FMYXllcigpKQotICAgICAg
ICBjY0xheWVySW1wbC0+c2V0UmVwbGljYUxheWVyKHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShy
ZXBsaWNhTGF5ZXIsIG1hcCkpOworICAgIGlmIChMYXllclR5cGUqIHJlcGxpY2FMYXllciA9IGxh
eWVyLT5yZXBsaWNhTGF5ZXIoKSkKKyAgICAgICAgY2NMYXllci0+c2V0UmVwbGljYUxheWVyKHN5
bmNocm9uaXplVHJlZVJlY3Vyc2l2ZTxMYXllclR5cGUsIENDTGF5ZXJUeXBlPihyZXBsaWNhTGF5
ZXIsIG1hcCkpOwogICAgIGVsc2UKLSAgICAgICAgY2NMYXllckltcGwtPnNldFJlcGxpY2FMYXll
cigwKTsKKyAgICAgICAgY2NMYXllci0+c2V0UmVwbGljYUxheWVyKDApOwogCi0gICAgbGF5ZXIt
PnB1c2hQcm9wZXJ0aWVzVG8oY2NMYXllckltcGwuZ2V0KCkpOwotICAgIHJldHVybiBjY0xheWVy
SW1wbC5yZWxlYXNlKCk7CisgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8oY2NMYXllci5nZXQo
KSk7CisgICAgcmV0dXJuIGNjTGF5ZXIucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5
ZXJJbXBsPiBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKExheWVyQ2hyb21pdW0q
IGxheWVyQ2hyb21pdW1Sb290LCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBwcnBPbGRDQ0xheWVy
SW1wbFJvb3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIENDTGF5ZXJU
eXBlPgorUGFzc1JlZlB0cjxDQ0xheWVyVHlwZT4gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25p
emVUcmVlc0ludGVybmFsKExheWVyVHlwZSogbGF5ZXJSb290LCBQYXNzUmVmUHRyPENDTGF5ZXJU
eXBlPiBwcnBPbGRDQ0xheWVyUm9vdCkKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IG9sZEND
TGF5ZXJJbXBsUm9vdCA9IHBycE9sZENDTGF5ZXJJbXBsUm9vdDsKLSAgICAvLyBCdWlsZCBhIG1h
cCBmcm9tIGxheWVyIElEcyB0byBDQ0xheWVySW1wbHMgc28gd2UgY2FuIHJldXNlIGxheWVycyBm
cm9tIHRoZSBvbGQgdHJlZS4KLSAgICBDQ0xheWVySW1wbE1hcCBtYXA7Ci0gICAgaWYgKG9sZEND
TGF5ZXJJbXBsUm9vdCkKLSAgICAgICAgYWRkQ0NMYXllckltcGxzVG9NYXBSZWN1cnNpdmUobWFw
LCBvbGRDQ0xheWVySW1wbFJvb3QuZ2V0KCkpOworICAgIFJlZlB0cjxDQ0xheWVyVHlwZT4gb2xk
Q0NMYXllclJvb3QgPSBwcnBPbGRDQ0xheWVyUm9vdDsKKyAgICAvLyBCdWlsZCBhIG1hcCBmcm9t
IGxheWVyIElEcyB0byBDQ0xheWVycyBzbyB3ZSBjYW4gcmV1c2UgbGF5ZXJzIGZyb20gdGhlIG9s
ZCB0cmVlLgorICAgIENDTGF5ZXJNYXAgbWFwOworICAgIGlmIChvbGRDQ0xheWVyUm9vdCkKKyAg
ICAgICAgYWRkQ0NMYXllcnNUb01hcFJlY3Vyc2l2ZTxDQ0xheWVyVHlwZT4obWFwLCBvbGRDQ0xh
eWVyUm9vdC5nZXQoKSk7CiAKICAgICAvLyBSZWN1cnNpdmVseSBidWlsZCB0aGUgbmV3IGxheWVy
IHRyZWUuCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBuZXdDQ0xheWVySW1wbFJvb3QgPSBzeW5j
aHJvbml6ZVRyZWVSZWN1cnNpdmUobGF5ZXJDaHJvbWl1bVJvb3QsIG1hcCk7CisgICAgUmVmUHRy
PENDTGF5ZXJUeXBlPiBuZXdDQ0xheWVyUm9vdCA9IHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZTxM
YXllclR5cGUsIENDTGF5ZXJUeXBlPihsYXllclJvb3QsIG1hcCk7CiAKLSAgICByZXR1cm4gbmV3
Q0NMYXllckltcGxSb290LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbmV3Q0NMYXllclJvb3QucmVs
ZWFzZSgpOworfQorCitQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVyOjpz
eW5jaHJvbml6ZVRyZWVzKExheWVyQ2hyb21pdW0qIGxheWVyUm9vdCwgUGFzc1JlZlB0cjxDQ0xh
eWVySW1wbD4gb2xkQ0NMYXllckltcGxSb290KQoreworICAgIHJldHVybiBzeW5jaHJvbml6ZVRy
ZWVzSW50ZXJuYWw8TGF5ZXJDaHJvbWl1bSwgQ0NMYXllckltcGw+KGxheWVyUm9vdCwgb2xkQ0NM
YXllckltcGxSb290KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXpl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNo
cm9uaXplci5oCmluZGV4IGE0ZTQ5NDIxNzM5NWU4ZDJlMTI5NmJkNjU2NjYyZTMyYjExOWFjZmYu
LmQ1YjA5ZWQ5NTY3YWU4YzkyM2JlZTUyZTlhYzFjYjg1OWRkOTMyYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3lu
Y2hyb25pemVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBDQ0xheWVyOwogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBMYXllckNocm9taXVtOwog
CkBAIC00NSwxMSArNDYsMTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUcmVlU3luY2hyb25p
emVyKCk7IC8vIE5vdCBpbnN0YW50aWFibGUuCiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBS
ZWZQdHI8Q0NMYXllckltcGw+ID4gQ0NMYXllckltcGxNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFw
PGludCwgUmVmUHRyPENDTGF5ZXI+ID4gQ0NMYXllck1hcDsKIAogICAgIC8vIERlY2xhcmVkIGFz
IHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zIHNvIHRoZXkgY2FuIGFjY2VzcyBmdW5jdGlvbnMgb24g
TGF5ZXJDaHJvbWl1bSBhcyBhIGZyaWVuZCBjbGFzcy4KLSAgICBzdGF0aWMgdm9pZCBhZGRDQ0xh
eWVySW1wbHNUb01hcFJlY3Vyc2l2ZShDQ0xheWVySW1wbE1hcCYsIENDTGF5ZXJJbXBsKik7Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2
ZShMYXllckNocm9taXVtKiwgQ0NMYXllckltcGxNYXAmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDQ0xheWVyVHlwZT4KKyAgICBzdGF0aWMgdm9pZCBhZGRDQ0xheWVyc1RvTWFwUmVjdXJzaXZl
KENDTGF5ZXJNYXAmLCBDQ0xheWVyVHlwZSopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVy
VHlwZSwgdHlwZW5hbWUgQ0NMYXllclR5cGU+CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NMYXll
clR5cGU+IHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShMYXllclR5cGUqLCBDQ0xheWVyTWFwJik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBDQ0xheWVyVHlwZT4K
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ0xheWVyVHlwZT4gc3luY2hyb25pemVUcmVlc0ludGVy
bmFsKExheWVyVHlwZSosIFBhc3NSZWZQdHI8Q0NMYXllclR5cGU+KTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDBlMGZj
YjY2NWI0MDQxMzQzZDNkZDFjZmM0YWY4MzM4YWE2NTBiOWMuLmFjMTQwOWU0MzU4NmUxOGM4MTNh
NGQwNTA3NTE2OTY3YzUzNDM2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcApA
QCAtMzIsMTYgKzMyLDkgQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNp
bmNsdWRlICJWaWRlb0xheWVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJjYy9DQ1ZpZGVvTGF5ZXJJ
bXBsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hy
b21pdW0+IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFZpZGVvTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSwgcHJvdmlkZXIpKTsKLX0KLQogVmlk
ZW9MYXllckNocm9taXVtOjpWaWRlb0xheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxl
Z2F0ZSwgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlcikKICAgICA6IExheWVyQ2hyb21pdW0o
ZGVsZWdhdGUpCiAgICAgLCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQpAQCAtNTMsMTEgKzQ2LDYgQEAg
VmlkZW9MYXllckNocm9taXVtOjp+VmlkZW9MYXllckNocm9taXVtKCkKIHsKIH0KIAotUGFzc1Jl
ZlB0cjxDQ0xheWVySW1wbD4gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgp
Ci17Ci0gICAgcmV0dXJuIENDVmlkZW9MYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQsIG1fcHJv
dmlkZXIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDNk
OTMxNWVjOGIxNjE5M2VkOGNiYjA2NWVlMWZjNGY3YWE0OWY1ZDUuLjFhYWRhNjI1NjYwMTNiZDBk
Y2IyZDg0YTY0ODZmM2Y3OGRlMWZhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCkBA
IC00NCwyMiArNDQsNDIgQEAgY2xhc3MgVmlkZW9GcmFtZVByb3ZpZGVyOwogLy8gQSBMYXllciB0
aGF0IGNvbnRhaW5zIGEgVmlkZW8gZWxlbWVudC4KIGNsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bSA6
IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBM
YXllclR5cGU+IHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEND
TGF5ZXJEZWxlZ2F0ZSogPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3Zp
ZGVyKiA9IDApOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIHZvaWQg
cHVzaFByb3BlcnRpZXMoY29uc3QgVmlkZW9MYXllckNocm9taXVtKiwgQ0NMYXllciopOwogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRl
bGVnYXRlKiA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiA9IDApOwogICAgIHZpcnR1YWwgflZpZGVvTGF5ZXJD
aHJvbWl1bSgpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVD
Q0xheWVySW1wbCgpOwotCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBWaWRlb0xheWVyQ2hy
b21pdW0oQ0NMYXllckRlbGVnYXRlKiwgVmlkZW9GcmFtZVByb3ZpZGVyKik7CiAKICAgICAvLyBU
aGlzIHBvaW50ZXIgaXMgb25seSBmb3IgcGFzc2luZyB0byBDQ1ZpZGVvTGF5ZXJJbXBsJ3MgY29u
c3RydWN0b3IuIEl0IHNob3VsZCBuZXZlciBiZSBkZXJlZmVyZW5jZWQgYnkgdGhpcyBjbGFzcy4K
ICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIG1fcHJvdmlkZXI7CiB9OwogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBMYXllclR5cGU+IGNsYXNzIFNlcmlhbGl6YWJsZVZpZGVvTGF5ZXJDaHJvbWl1bSA6IHB1
YmxpYyBWaWRlb0xheWVyQ2hyb21pdW0geworcHVibGljOgorICAgIFNlcmlhbGl6YWJsZVZpZGVv
TGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlLCBWaWRlb0ZyYW1lUHJvdmlk
ZXIqIHByb3ZpZGVyKSA6IFZpZGVvTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSwgcHJvdmlkZXIpIHsg
fQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXI+IGNyZWF0ZUNDTGF5ZXIoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIExheWVyVHlwZTo6Y3JlYXRlKG1fbGF5ZXJJZCwgbV9wcm92aWRl
cik7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllciog
bGF5ZXIpCisgICAgeworICAgICAgICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxMYXll
clR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXll
clR5cGU+CitQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9taXVt
OjpjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwgVmlkZW9GcmFtZVByb3ZpZGVyKiBw
cm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6YWJsZVZpZGVvTGF5
ZXJDaHJvbWl1bTxMYXllclR5cGU+KGRlbGVnYXRlLCBwcm92aWRlcikpOworfQorCiB9CiAjZW5k
aWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNo
cm9taXVtLmNwcAppbmRleCAzNjI2ZGM1YjNkZjk5OGIyNjVhNjdiMzRkOWVkY2EyOTE1YzRhNGYz
Li45OTYxOWFkYTg0MDdkMzJhZGRhY2M5MGJmNWU0NTEwODU4YWQwNDAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQyLDExICs0Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxXZWJHTExheWVyQ2hyb21pdW0+IFdlYkdMTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJHTExheWVyQ2hyb21pdW0oZGVsZWdhdGUpKTsKLX0KLQogV2ViR0xMYXllckNo
cm9taXVtOjpXZWJHTExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAg
ICA6IENhbnZhc0xheWVyQ2hyb21pdW0oZGVsZWdhdGUpCiAgICAgLCBtX2hhc0FscGhhKHRydWUp
CkBAIC05OCwxNiArOTMsNiBAQCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDbwogICAgIH0KIH0KIAot
dm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxh
eWVyKQotewotICAgIENhbnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIp
OwotCi0gICAgQ0NDYW52YXNMYXllckltcGwqIGNhbnZhc0xheWVyID0gc3RhdGljX2Nhc3Q8Q0ND
YW52YXNMYXllckltcGwqPihsYXllcik7Ci0gICAgY2FudmFzTGF5ZXItPnNldFRleHR1cmVJZCht
X3RleHR1cmVJZCk7Ci0gICAgY2FudmFzTGF5ZXItPnNldEhhc0FscGhhKG1faGFzQWxwaGEpOwot
ICAgIGNhbnZhc0xheWVyLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEobV9wcmVtdWx0aXBsaWVkQWxw
aGEpOwotfQotCiBib29sIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRSZW5kZXJlZFJlc3VsdHNU
b0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCiB7CiAgICAgaWYgKG1fdGV4dHVyZVVw
ZGF0ZWQgfHwgIWxheWVyUmVuZGVyZXJDb250ZXh0KCkgfHwgIWRyYXdzQ29udGVudCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCBlYjUxNDZlYjczOTAzMGZhYmFjNDM5NjI3ZTVj
N2MwNDE2ZjVhNTYxLi44ZDU3NDZkNWUzMTNiZmQyOThlMTY5MjM4OWI2ZGQ0OGM1Y2IxMzg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtNDUsNyArNDUsOCBAQCBjbGFzcyBXZWJH
TExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwogLy8gQSBMYXllciBjb250YWluaW5nIGEgV2Vi
R0wgY2FudmFzCiBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJD
aHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9t
aXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDApOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IExheWVyVHlwZT4gc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBjcmVhdGUo
Q0NMYXllckRlbGVnYXRlKik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0
aWMgdm9pZCBwdXNoUHJvcGVydGllcyhjb25zdCBXZWJHTExheWVyQ2hyb21pdW0qIGZyb20sIEND
TGF5ZXIqIHRvKTsKIAogICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwogCkBAIC01
NCw3ICs1NSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBj
b25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHVzaFBy
b3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdl
ZCgpOwogICAgIGJvb2wgcGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciop
OwogCkBAIC02Miw4ICs2MiwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldERyYXdpbmdCdWZm
ZXIoRHJhd2luZ0J1ZmZlciopOwogICAgIERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2RyYXdpbmdCdWZmZXI7IH0KLXByaXZhdGU6CisKK3Byb3RlY3RlZDoK
ICAgICBleHBsaWNpdCBXZWJHTExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKik7CisKK3By
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bVJhdGVMaW1pdFRhc2s7
CiAKICAgICBHcmFwaGljc0NvbnRleHQzRCogbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKQEAgLTgw
LDYgKzgzLDM4IEBAIHByaXZhdGU6CiAgICAgRHJhd2luZ0J1ZmZlciogbV9kcmF3aW5nQnVmZmVy
OwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBjbGFzcyBTZXJpYWxpemFibGVX
ZWJHTExheWVyQ2hyb21pdW0gOiBwdWJsaWMgV2ViR0xMYXllckNocm9taXVtIHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBTZXJpYWxpemFibGVXZWJHTExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVn
YXRlKiBkZWxlZ2F0ZSkgOiBXZWJHTExheWVyQ2hyb21pdW0oZGVsZWdhdGUpIHsgfQorCisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXI+IGNyZWF0ZUNDTGF5ZXIoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIExheWVyVHlwZTo6Y3JlYXRlKG1fbGF5ZXJJZCk7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllciogbGF5ZXIpCisgICAgeworICAgICAg
ICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsK
KyAgICAgICAgcHVzaFByb3BlcnRpZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgfQor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgorUGFzc1JlZlB0cjxXZWJHTExheWVy
Q2hyb21pdW0+IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVs
ZWdhdGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVXZWJHTExheWVy
Q2hyb21pdW08TGF5ZXJUeXBlPihkZWxlZ2F0ZSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBM
YXllclR5cGU+Cit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXMoY29uc3Qg
V2ViR0xMYXllckNocm9taXVtKiBmcm9tLCBDQ0xheWVyKiB0bykKK3sKKyAgICBMYXllclR5cGUq
IGxheWVyID0gc3RhdGljX2Nhc3Q8TGF5ZXJUeXBlKj4odG8pOworCisgICAgbGF5ZXItPnNldFRl
eHR1cmVJZChmcm9tLT5tX3RleHR1cmVJZCk7CisgICAgbGF5ZXItPnNldEhhc0FscGhhKGZyb20t
Pm1faGFzQWxwaGEpOworICAgIGxheWVyLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEoZnJvbS0+bV9w
cmVtdWx0aXBsaWVkQWxwaGEpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxOTFhYTY2YWU5NmE1Yzc3
N2I4MWIxNDg0YzllMDRmNGQ4Yjg4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyLmNwcApAQCAtMCwwICsxLDQ0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorCisjaW5jbHVkZSAiY2MvQ0NMYXllci5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0NDTGF5ZXI6OkNDTGF5ZXIoKQoreworfQorCitDQ0xheWVyOjp+Q0NMYXllcigpCit7
Cit9CisKK30KKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lODg5MmM1YjU0MTNmOGE3YWRjYTljNDU3ZjgwOTQ4MDM2YTBhZDY1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllci5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDTGF5
ZXJfaAorI2RlZmluZSBDQ0xheWVyX2gKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0NMYXllciA6IHB1YmxpYyBSZWZDb3VudGVk
PENDTGF5ZXI+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5DQ0xheWVyKCk7CisKK3Byb3RlY3Rl
ZDoKKyAgICBleHBsaWNpdCBDQ0xheWVyKCk7Cit9OworCit9CisKKyNlbmRpZiAvLyBDQ0xheWVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDI2YzdhMmY0ZDVlYzU5NGY4N2JjYzc1MzEyYzY4
YjA3ZDA4MWRmNjkuLjgwNDMyYWRjNzRlOGQ2NTlmZjM5MmRmOTM4ODEyMGQwMmRjOWYyMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkludFJlY3Qu
aCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRy
aXguaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNz
LmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlLmgiCiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgpAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBDQ0xheWVyU29ydGVyOwogY2xhc3MgTGF5ZXJD
aHJvbWl1bTsKIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIAotY2xhc3MgQ0NMYXllcklt
cGwgOiBwdWJsaWMgUmVmQ291bnRlZDxDQ0xheWVySW1wbD4geworY2xhc3MgQ0NMYXllckltcGwg
OiBwdWJsaWMgQ0NMYXllciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NMYXll
ckltcGw+IGNyZWF0ZShpbnQgaWQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCmluZGV4IDM3ZDQ1
OWQxNjlmMzEyZTQ4MTJjZDAwNGNmMmViYWQ4OWEyZGY0MzAuLjliMjVjODI3ZTdjOGM2YjJiZTUz
Y2E0MDY4NWI1OGE5YmZiN2VhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKQEAgLTQ5LDYgKzQ5LDcg
QEAKICNpbmNsdWRlICJTa0dwdURldmljZS5oIgogI2luY2x1ZGUgIlNraWFVdGlscy5oIgogI2lu
Y2x1ZGUgIldFQlBJbWFnZUVuY29kZXIuaCIKKyNpbmNsdWRlICJjYy9DQ0NhbnZhc0xheWVySW1w
bC5oIgogCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTg3LDcgKzg4LDcg
QEAgc3RhdGljIFNrQ2FudmFzKiBjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyhjb25zdCBJbnRTaXpl
JiBzaXplLCBJbWFnZUJ1ZmZlckRhdGEqIGQKICAgICBjYW52YXMtPnNldERldmljZShuZXcgU2tH
cHVEZXZpY2UoZ3IsIHRleHR1cmUuZ2V0KCkpKS0+dW5yZWYoKTsKICAgICBkYXRhLT5tX3BsYXRm
b3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHQzRChjb250ZXh0M0QpOwogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKLSAgICBkYXRhLT5tX3BsYXRmb3JtTGF5ZXIgPSBDYW52YXMy
RExheWVyQ2hyb21pdW06OmNyZWF0ZShjb250ZXh0M0QsIHNpemUpOworICAgIGRhdGEtPm1fcGxh
dGZvcm1MYXllciA9IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDQ2FudmFzTGF5ZXJJ
bXBsPihjb250ZXh0M0QsIHNpemUpOwogICAgIGRhdGEtPm1fcGxhdGZvcm1MYXllci0+c2V0VGV4
dHVyZUlkKHRleHR1cmUuZ2V0KCktPmdldFRleHR1cmVIYW5kbGUoKSk7CiAjZW5kaWYKICAgICBy
ZXR1cm4gY2FudmFzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Q29udGVudExheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRM
YXllci5jcHAKaW5kZXggZmFhNmEwOTY4N2FkYjgxYTA0OTk5NGE0NTA4YTliNGI2NWRiNjExZS4u
YTkxMGRmMDU3NjYwMTMyM2RhNTQwY2Q4MDk5ODMyZWMyZWZkOGVlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29udGVudExheWVy
LmgiCiAKKyNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAicGxhdGZv
cm0vV2ViRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiV2ViQ29udGVudExheWVySW1wbC5oIgogCkBA
IC0zMyw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJDb250ZW50TGF5ZXIgV2Vi
Q29udGVudExheWVyOjpjcmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50
KQogewotICAgIHJldHVybiBXZWJDb250ZW50TGF5ZXIoV2ViQ29udGVudExheWVySW1wbDo6Y3Jl
YXRlKGNvbnRlbnRDbGllbnQpKTsKKyAgICByZXR1cm4gV2ViQ29udGVudExheWVyKFdlYkNvbnRl
bnRMYXllckltcGw6OmNyZWF0ZTxXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsPihjb250ZW50Q2xp
ZW50KSk7CiB9CiAKIFdlYkNvbnRlbnRMYXllciBXZWJDb250ZW50TGF5ZXI6OmNyZWF0ZShXZWJM
YXllckNsaWVudCosIFdlYkNvbnRlbnRMYXllckNsaWVudCogY29udGVudENsaWVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAKaW5k
ZXggNzllMjBmZWY3OTUyZWVjODE3MGUzZGVmMmVjZjFlMzEyMWZlMjk1ZS4uZDJiMDI0YThiZTEw
YTYzNTM1NDBjOGIxZWQ5YmZjNTA2ZDY3NzcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAKQEAgLTM4LDExICszOCw2IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0
cjxXZWJDb250ZW50TGF5ZXJJbXBsPiBXZWJDb250ZW50TGF5ZXJJbXBsOjpjcmVhdGUoV2ViQ29u
dGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KQotewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViQ29udGVudExheWVySW1wbChjb250ZW50Q2xpZW50KSk7Ci19Ci0KIFdlYkNvbnRlbnRM
YXllckltcGw6OldlYkNvbnRlbnRMYXllckltcGwoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250
ZW50Q2xpZW50KQogICAgIDogQ29udGVudExheWVyQ2hyb21pdW0odGhpcykKICAgICAsIG1fY29u
dGVudENsaWVudChjb250ZW50Q2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQ29udGVudExheWVySW1wbC5oCmluZGV4IGIzMGM4YWU1NjJkZDQzNjljMzkxYjgxZmI0
ODY3NDc4NDhkNjNkMzQuLjQwNjUyNjYwYzQyYjcwNjBjMGJlYjA0YmZmZGRjODA0ZDBjYWE1MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllcklt
cGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBs
LmgKQEAgLTI5LDEyICsyOSwxNiBAQAogI2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgi
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgQ0NMYXllcjsKK307CisKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29udGVudExh
eWVyQ2xpZW50OwogCiBjbGFzcyBXZWJDb250ZW50TGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6
OkNvbnRlbnRMYXllckNocm9taXVtLCBwdWJsaWMgV2ViQ29yZTo6Q0NMYXllckRlbGVnYXRlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiBjcmVh
dGUoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBMYXllclR5cGU+IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+
IGNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpOwogCiAgICAgdm9p
ZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgp
IGNvbnN0OwpAQCAtNDgsNiArNTIsMjggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9kcmF3c0Nv
bnRlbnQ7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IGNsYXNzIFNlcmlhbGl6
YWJsZVdlYkNvbnRlbnRMYXllckltcGwgOiBwdWJsaWMgV2ViQ29udGVudExheWVySW1wbCB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgU2VyaWFsaXphYmxlV2ViQ29udGVudExheWVySW1wbChXZWJD
b250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpIDogV2ViQ29udGVudExheWVySW1wbChj
b250ZW50Q2xpZW50KSB7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDQ0xh
eWVyPiBjcmVhdGVDQ0xheWVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBMYXllclR5cGU6OmNy
ZWF0ZShtX2xheWVySWQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGll
c1RvKFdlYkNvcmU6OkNDTGF5ZXIqIGxheWVyKQorICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1
bTo6cHVzaFByb3BlcnRpZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgICAgIENvbnRl
bnRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsK
KyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CitQYXNzUmVmUHRyPFdl
YkNvbnRlbnRMYXllckltcGw+IFdlYkNvbnRlbnRMYXllckltcGw6OmNyZWF0ZShXZWJDb250ZW50
TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
ZXJpYWxpemFibGVXZWJDb250ZW50TGF5ZXJJbXBsPExheWVyVHlwZT4oY29udGVudENsaWVudCkp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdlYkNvbnRlbnRMYXll
ckltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIuY3BwCmluZGV4IDUxZjg1Y2I5ZmFjNjVmNmYzNzNjZjQ3OTA4OThjM2Fl
YWIyMzkwYzMuLmY1OTE1YWQyOWEyNjFlZjZjYWIzYzhlMmM0YTg4MmJhYjQyYjIzNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVM
YXllci5jcHAKQEAgLTI2LDkgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaCIKIAorI2luY2x1ZGUgImNjL0ND
UGx1Z2luTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRSZWN0LmgiCiAj
aW5jbHVkZSAiV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgiCiAKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXIgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZShXZWJMYXllckNsaWVudCopCkBAIC0z
OCw3ICs0MSw3IEBAIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVyOjpjcmVhdGUoV2ViTGF5ZXJDbGllbnQqKQogCiBXZWJFeHRlcm5hbFRleHR1cmVMYXllciBX
ZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpjcmVhdGUoKSk7Cisg
ICAgcmV0dXJuIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbDo6Y3JlYXRlPENDUGx1Z2luTGF5ZXJJbXBsPigpKTsKIH0KIAogdm9pZCBXZWJFeHRlcm5h
bFRleHR1cmVMYXllcjo6c2V0VGV4dHVyZUlkKHVuc2lnbmVkIGlkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5j
cHAKaW5kZXggMWIxZGExMDNjOWZiNjc0YzgwZTg0OGNhOTRmMzA3ZGM2YmQ4MTI3YS4uNmE1M2Uz
ZjU4M2I5NjY3YzlmYjU3ZmU5ZjgxMDBjYzA3NmY4OTUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3Bw
CkBAIC0zMywxMSArMzMsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiBXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGw6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoKSk7Ci19Ci0KIFdlYkV4dGVybmFsVGV4
dHVyZUxheWVySW1wbDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKCkKICAgICA6IFBsdWdp
bkxheWVyQ2hyb21pdW0odGhpcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgKaW5kZXggMWFkMmI4MTk5OGYz
MGRmNmM5ZWNhMDkzYTBjMmZmNWFiZWU5MWNlYS4uYzFiZGE0ZGI5Y2JmN2EzYTk5ZGIxODgyNzQ1
ZmY1ZmFmMzQ4Mzg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCA6IHB1Ymxp
YyBXZWJDb3JlOjpQbHVnaW5MYXllckNocm9taXVtLCBwdWJsaWMgV2ViQ29yZTo6Q0NMYXllckRl
bGVnYXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1
cmVMYXllckltcGw+IGNyZWF0ZSgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4g
c3RhdGljIFBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiBjcmVhdGUoKTsK
IAogcHJvdGVjdGVkOgogICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCgpOwpAQCAtNDIs
NiArNDIsMjggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBj
b25zdDsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gY2xhc3MgU2VyaWFsaXph
YmxlV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsIDogcHVibGljIFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2VyaWFsaXphYmxlV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJJbXBsKCkgOiBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoKSB7IH0K
KworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDQ0xheWVyPiBjcmVhdGVDQ0xheWVy
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBMYXllclR5cGU6OmNyZWF0ZShtX2xheWVySWQpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKFdlYkNvcmU6OkNDTGF5
ZXIqIGxheWVyKQorICAgIHsKKyAgICAgICAgV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHVzaFBy
b3BlcnRpZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgICAgIFdlYkNvcmU6OlBsdWdp
bkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOwor
ICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK1Bhc3NSZWZQdHI8V2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmNy
ZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGw8TGF5ZXJUeXBlPigpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGxfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCmluZGV4IGY5NDc5Yzk4NGE5ZjliYTBkNmI2MjMz
NGUwOTQ3OGExMzY5NzMyZjUuLjAyZDQ5ZmRmMGQyMGNlM2M0NjE1ZWVhZTRmZDkwNzZiZTZiZGFk
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllci5o
IgogCisjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJG
bG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVt
LmgiCkBAIC04MSw3ICs4Miw3IEBAIFdlYkxheWVyIFdlYkxheWVyOjpjcmVhdGUoV2ViTGF5ZXJD
bGllbnQqKQogCiBXZWJMYXllciBXZWJMYXllcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gV2Vi
TGF5ZXIoV2ViTGF5ZXJJbXBsOjpjcmVhdGUoKSk7CisgICAgcmV0dXJuIFdlYkxheWVyKFdlYkxh
eWVySW1wbDo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpKTsKIH0KIAogdm9pZCBXZWJMYXllcjo6cmVz
ZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5jcHAKaW5kZXgg
YTRhMmYwOWYwOTc5OTc5NDEzNTE3YTRmYzIyZGQ4MWUzY2JkOTMzYS4uMzNjOGNlMTIwMWFlOWIy
MDE5OWUwODNlMDUxZWM0NzBhNmRjZWNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllckltcGwuY3BwCkBAIC0zMCwxMSArMzAsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViTGF5ZXJJbXBsPiBX
ZWJMYXllckltcGw6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJMYXll
ckltcGwoKSk7Ci19Ci0KIFdlYkxheWVySW1wbDo6V2ViTGF5ZXJJbXBsKCkKICAgICA6IExheWVy
Q2hyb21pdW0odGhpcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBs
LmgKaW5kZXggMDI5ODk1OWE1ZDU2N2I2M2YxMDVkZjg3ZDRlODgzOGNlNmQwM2YxYi4uN2JhODAz
NGYxYmI3YjRlNmNlZDUzNzNkMGI5YWRhNTE5NDk4YWM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIFdlYkxheWVySW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpMYXllckNocm9taXVt
LCBwdWJsaWMgV2ViQ29yZTo6Q0NMYXllckRlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJMYXllckltcGw+IGNyZWF0ZSgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IExheWVyVHlwZT4gc3RhdGljIFBhc3NSZWZQdHI8V2ViTGF5ZXJJbXBsPiBjcmVhdGUoKTsKIAog
cHJvdGVjdGVkOgogICAgIFdlYkxheWVySW1wbCgpOwpAQCAtNDIsNiArNDIsMjcgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXApOwogfTsKIAordGVtcGxhdGU8dHlw
ZW5hbWUgTGF5ZXJUeXBlPiBjbGFzcyBTZXJpYWxpemFibGVXZWJMYXllckltcGwgOiBwdWJsaWMg
V2ViTGF5ZXJJbXBsIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTZXJpYWxpemFibGVXZWJMYXll
ckltcGwoKSA6IFdlYkxheWVySW1wbCgpIHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OkNDTGF5ZXI+IGNyZWF0ZUNDTGF5ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIExh
eWVyVHlwZTo6Y3JlYXRlKG1fbGF5ZXJJZCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHB1
c2hQcm9wZXJ0aWVzVG8oV2ViQ29yZTo6Q0NMYXllciogbGF5ZXIpCisgICAgeworICAgICAgICBM
YXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAg
ICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CitQYXNzUmVmUHRyPFdlYkxh
eWVySW1wbD4gV2ViTGF5ZXJJbXBsOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU2VyaWFsaXphYmxlV2ViTGF5ZXJJbXBsPExheWVyVHlwZT4oKSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gV2ViTGF5ZXJJbXBsX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCmlu
ZGV4IGFhZTRlYzMzYzliZTExZGVhNmQyZWNmY2YwNmU5ZWRjMDE3N2ZkMDguLmE1YWZjYTQyY2Jk
OWY1OTIxOTI4NzU2OTI2ZWZhNWY1YjM2ZWFiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcApAQCAtOSw2ICs5
LDcgQEAKIAogI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJBdWRp
b1NvdXJjZVByb3ZpZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgpAQCAtMTIwLDcgKzEyMSw3IEBAIHZvaWQgV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpyZWFkeVN0YXRlQ2hhbmdlZCgpCiAgICAgbV9tZWRpYVBsYXll
ci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAgICAgaWYgKGhhc1ZpZGVvKCkgJiYgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYm
ICFtX3ZpZGVvTGF5ZXIpIHsKLSAgICAgICAgbV92aWRlb0xheWVyID0gVmlkZW9MYXllckNocm9t
aXVtOjpjcmVhdGUoMCwgdGhpcyk7CisgICAgICAgIG1fdmlkZW9MYXllciA9IFZpZGVvTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlPENDVmlkZW9MYXllckltcGw+KDAsIHRoaXMpOwogICAgICAgICBtX3Zp
ZGVvTGF5ZXItPnNldE9wYXF1ZShtX29wYXF1ZSk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCmlu
ZGV4IDk1ZWNhODg5MTUxMDFhY2IzOTg1YzVjNTMwNTE4OTVjNTY1MGVkZmMuLjBjZDExZDljMzk2
ZTc3NzRmYWVmOWMyN2Q4NjkzZDliZGQzNzM3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVySW1w
bC5oIgogCisjaW5jbHVkZSAiY2MvQ0NQbHVnaW5MYXllckltcGwuaCIKICNpbmNsdWRlICJDaHJv
bWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiUGx1Z2luTGF5
ZXJDaHJvbWl1bS5oIgpAQCAtNTM3LDcgKzUzOCw3IEBAIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6
OldlYlBsdWdpbkNvbnRhaW5lckltcGwoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1l
CiAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAsIG1fd2ViUGx1Z2luKHdlYlBsdWdpbikK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgLCBtX3BsYXRmb3JtTGF5ZXIo
UGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApKQorICAgICwgbV9wbGF0Zm9ybUxheWVyKFBs
dWdpbkxheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ1BsdWdpbkxheWVySW1wbD4oMCkpCiAjZW5kaWYK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0Q29tbW9uVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCmluZGV4IGEzNWQ5NjUyMjRmYmU2ZGY3OTk0Njg3MjVm
N2RiNjAyNjA0NTA0NDguLmU3ZmFhMTA3MzZhZTJiOWJlYTM5OGJlZjlmZjU5Y2E5NDA1NDVlYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
Q29tbW9uVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RDb21tb25UZXN0LmNwcApAQCAtNjksNiArNjksMTQgQEAgVHJhbnNmb3JtYXRpb25N
YXRyaXggcmVtb3ZlM0RDb21wb25lbnRPZk1hdHJpeChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbWF0KQogICAgIHJldHVybiByZXQ7CiB9CiAKK2NsYXNzIE1vY2tMYXllckNocm9taXVtIDog
cHVibGljIExheWVyQ2hyb21pdW0geworcHVibGljOgorICAgIGV4cGxpY2l0IE1vY2tMYXllckNo
cm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCisgICAgICAgIDogTGF5ZXJDaHJvbWl1
bShkZWxlZ2F0ZSkKKyAgICB7CisgICAgfQorfTsKKwogY2xhc3MgTGF5ZXJDaHJvbWl1bVdpdGhG
b3JjZWREcmF3c0NvbnRlbnQgOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoQ0NMYXllckRlbGVn
YXRlKiBkZWxlZ2F0ZSkKQEAgLTg2LDkgKzk0LDkgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21t
b25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yTm9PcExheWVyKQogICAgIC8vIHNjcmVlblNwYWNl
VHJhbnNmb3JtLCBhbmQgdGhlIGhpZXJhcmNoeSBwYXNzZWQgb24gdG8gY2hpbGRyZW4KICAgICAv
LyBsYXllcnMgc2hvdWxkIGFsc28gYmUgaWRlbnRpdHkgdHJhbnNmb3Jtcy4KIAotICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwot
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBncmFuZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBhZG9wdFJlZihuZXcg
TW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9
IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IGdyYW5kQ2hpbGQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwog
ICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwogICAgIHBhcmVudC0+YWRkQ2hpbGQo
Y2hpbGQpOwogICAgIGNoaWxkLT5hZGRDaGlsZChncmFuZENoaWxkKTsKQEAgLTExNiw3ICsxMjQs
NyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JT
aW5nbGVMYXllcikKICAgICAvLyBkaWZmZXJlbnQgcG9zaXRpb24uIFdoZW4gd2UgaW5pdGlhbGl6
ZSBsYXllcnMgZm9yIHRlc3RpbmcgaGVyZSwgd2UgbmVlZCB0byBpbml0aWFsaXplIHRoYXQgdW5p
bnR1dGl2ZSBwb3NpdGlvbiB2YWx1ZS4KIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50
aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllciA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJl
ZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwogICAgIGxheWVyLT5jcmVhdGVSZW5kZXJTdXJm
YWNlKCk7CiAKICAgICAvLyBDYXNlIDE6IHNldHRpbmcgdGhlIHN1YmxheWVyIHRyYW5zZm9ybSBz
aG91bGQgbm90IGFmZmVjdCB0aGlzIGxheWVyJ3MgZHJhdyB0cmFuc2Zvcm0gb3Igc2NyZWVuLXNw
YWNlIHRyYW5zZm9ybS4KQEAgLTE4MSw5ICsxODksOSBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENv
bW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JTaW5nbGVMYXllcikKIFRFU1QoQ0NMYXllclRy
ZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclNpbXBsZUhpZXJhcmNoeSkKIHsK
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgw
KTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gYWRvcHRSZWYobmV3IE1vY2tM
YXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBhZG9w
dFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBncmFuZENoaWxkID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKICAgICBw
YXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKICAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxk
KTsKICAgICBjaGlsZC0+YWRkQ2hpbGQoZ3JhbmRDaGlsZCk7CkBAIC0yNjMsOCArMjcxLDggQEAg
VEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yU2ltcGxl
SGllcmFyY2h5KQogCiBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5z
Zm9ybXNGb3JTaW5nbGVSZW5kZXJTdXJmYWNlKQogewotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBwYXJlbnQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwor
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJD
aHJvbWl1bSgwKSk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50PiBncmFuZENoaWxkID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJh
d3NDb250ZW50KDApKTsKICAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKICAgICBw
YXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKQEAgLTMxOCwxMyArMzI2LDEzIEBAIFRFU1QoQ0NMYXll
clRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclJlbmRlclN1cmZhY2VIaWVy
YXJjaHkpCiAgICAgLy8gICAtIFNhbml0eSBjaGVjayBvbiByZWN1cnNpb246IHZlcmlmeSB0cmFu
c2Zvcm1zIG9mIGxheWVycyBkZXNjcmliZWQgdy5yLnQuIGEgcmVuZGVyIHN1cmZhY2UgdGhhdCBp
cyBkZXNjcmliZWQgdy5yLnQuIGFuIGFuY2VzdG9yIHJlbmRlciBzdXJmYWNlLgogICAgIC8vICAg
LSB2ZXJpZnlpbmcgdGhhdCBlYWNoIGxheWVyIGhhcyBhIHJlZmVyZW5jZSB0byB0aGUgY29ycmVj
dCByZW5kZXJTdXJmYWNlIGFuZCB0YXJnZXRSZW5kZXJTdXJmYWNlIHZhbHVlcy4KIAotICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlbmRlclN1cmZhY2UxID0gTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZW5kZXJTdXJmYWNlMiA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGRP
ZlJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IGNoaWxkT2ZSUzEgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IGNoaWxkT2ZSUzIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IGdyYW5kQ2hpbGRPZlJvb3QgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IGFkb3B0UmVmKG5l
dyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlbmRl
clN1cmZhY2UxID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gcmVuZGVyU3VyZmFjZTIgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVy
Q2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZE9mUm9vdCA9IGFk
b3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IGNoaWxkT2ZSUzEgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZE9mUlMyID0gYWRvcHRSZWYobmV3IE1vY2tMYXll
ckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZE9mUm9v
dCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAgUmVmUHRyPExheWVy
Q2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBncmFuZENoaWxkT2ZSUzEgPSBhZG9wdFJl
ZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoMCkpOwogICAgIFJlZlB0
cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gZ3JhbmRDaGlsZE9mUlMyID0g
YWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KDApKTsKICAg
ICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAgLTQ1NCw4ICs0NjIsOCBAQCBURVNU
KENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JSZW5kZXJTdXJm
YWNlSGllcmFyY2h5KQogCiBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVJl
bmRlclN1cmZhY2VMaXN0Rm9yQ2xpcExheWVyKQogewotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IHJlbmRlclN1cmZhY2UxID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21p
dW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZW5kZXJTdXJmYWNlMSA9IGFkb3B0
UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50PiBjaGlsZCA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVt
V2l0aEZvcmNlZERyYXdzQ29udGVudCgwKSk7CiAgICAgcmVuZGVyU3VyZmFjZTEtPnNldE9wYWNp
dHkoMC45KTsKIApAQCAtNDgzLDggKzQ5MSw4IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9u
VGVzdCwgdmVyaWZ5UmVuZGVyU3VyZmFjZUxpc3RGb3JDbGlwTGF5ZXIpCiAKIFRFU1QoQ0NMYXll
clRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5UmVuZGVyU3VyZmFjZUxpc3RGb3JUcmFuc3BhcmVu
dENoaWxkKQogewotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlbmRlclN1cmZhY2Ux
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBw
YXJlbnQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiByZW5kZXJTdXJmYWNlMSA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJv
bWl1bSgwKSk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50
PiBjaGlsZCA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVu
dCgwKSk7CiAgICAgcmVuZGVyU3VyZmFjZTEtPnNldE9wYWNpdHkoMCk7CiAKQEAgLTUyNiwxMCAr
NTM0LDEwIEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5Q2xpcFJlY3RD
dWxsc1JlbmRlclN1cmZhY2VzKQogICAgIC8vCiAKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGls
ZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
Z3JhbmRDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gZ3JlYXRHcmFuZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hy
b21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IGFkb3B0UmVmKG5l
dyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGdyYW5k
Q2hpbGQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBncmVhdEdyYW5kQ2hpbGQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hy
b21pdW0oMCkpOwogICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVu
dD4gbGVhZk5vZGUxID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50KDApKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQ+IGxlYWZOb2RlMiA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdz
Q29udGVudCgwKSk7CiAgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApp
bmRleCA2MjIyMDBjOWY1MzhhNzIyNTE3MjJhNTAyMTI2NzQ2MDhlMWJiMGYyLi5jMWQ3MWZlMDFm
NzBjNWQ2MDU2YjE5NDliNjZkM2ViZjAxODM3Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTM4OSw3ICszODks
NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRvQmVnaW5UZXN0KCkKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIG1fY2xpZW50ID0gTW9ja0xheWVyVHJlZUhvc3RDbGllbnQ6
OmNyZWF0ZSh0aGlzKTsKIAotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByb290TGF5ZXIgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RM
YXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oMCk7CiAgICAgbV9sYXll
clRyZWVIb3N0ID0gTW9ja0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBtX2NsaWVudC5nZXQo
KSwgcm9vdExheWVyLCBtX3NldHRpbmdzKTsKICAgICBBU1NFUlRfVFJVRShtX2xheWVyVHJlZUhv
c3QpOwogICAgIHJvb3RMYXllci0+c2V0TGF5ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0
KCkpOwpAQCAtOTU1LDYgKzk1NSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fdXBkYXRlQ291bnQr
KzsKICAgICB9CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllcj4gY3JlYXRlQ0NMYXll
cigpCisgICAgeworICAgICAgICByZXR1cm4gQ0NMYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXIqIGNj
TGF5ZXIpCisgICAgeworICAgICAgICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxDQ0xh
eWVySW1wbD4odGhpcywgY2NMYXllcik7CisgICAgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKENDTGF5ZXJEZWxlZ2F0ZSAq
ZGVsZWdhdGUpCiAgICAgICAgIDogQ29udGVudExheWVyQ2hyb21pdW0oZGVsZWdhdGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1
bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hy
b21pdW1UZXN0LmNwcAppbmRleCA5NjdmMjM0MmYwMzRkMmU4NDYxMmM4ODA3YmNlNWFmZTU5Zjk1
ZTRkLi44YWM0Njk0NTZhNzk4OGNkODIwNmE1MmNlMjMwZjM2OGI1MDU4YmM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9t
aXVtVGVzdC5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBURVNUX0YoQ2FudmFzMkRMYXllckNocm9t
aXVtVGVzdCwgdGVzdEZ1bGxMaWZlY3ljbGUpCiAgICAgICAgIEVYUEVDVF9DQUxMKGFsbG9jYXRv
ck1vY2ssIGRlbGV0ZVRleHR1cmUoZnJvbnRUZXh0dXJlSWQsIHNpemUsIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4g
Y2FudmFzID0gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUobWFpbkNvbnRleHQuZ2V0KCks
IHNpemUpOworICAgIFJlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IGNhbnZhcyA9IENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDQ2FudmFzTGF5ZXJJbXBsPihtYWluQ29udGV4dC5n
ZXQoKSwgc2l6ZSk7CiAgICAgc2V0VGV4dHVyZU1hbmFnZXIoY2FudmFzLmdldCgpLCB0ZXh0dXJl
TWFuYWdlci5nZXQoKSk7CiAgICAgY2FudmFzLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDMwMCkp
OwogICAgIGNhbnZhcy0+c2V0VGV4dHVyZUlkKGJhY2tUZXh0dXJlSWQpOwpAQCAtMTM0LDcgKzEz
NCw3IEBAIFRFU1RfRihDYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LCB0ZXN0RnVsbExpZmVjeWNs
ZSkKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBzY29wZWRJbXBsVGhy
ZWFkOwogCi0gICAgICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbGF5ZXJJbXBsID0gY2FudmFzLT5j
cmVhdGVDQ0xheWVySW1wbCgpOworICAgICAgICBSZWZQdHI8Q0NMYXllcj4gbGF5ZXJJbXBsID0g
Y2FudmFzLT5jcmVhdGVDQ0xheWVyKCk7CiAgICAgICAgIEVYUEVDVF9FUSgwdSwgc3RhdGljX2Nh
c3Q8Q0NDYW52YXNMYXllckltcGwqPihsYXllckltcGwuZ2V0KCkpLT50ZXh0dXJlSWQoKSk7CiAK
ICAgICAgICAgY2FudmFzLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGltcGxDb250ZXh0Lmdl
dCgpLCB1cGRhdGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXll
ckNocm9taXVtVGVzdC5jcHAKaW5kZXggZmJiOWMxOWVhMDExOWQ3YmM4ZDJkYzhlNGYyNDhiZDM1
YTg5MzNlNS4uYTM1ZjA4ODVjYTM5ZWVjOTNmYmEzYjljMGZhMjRlMTIyNWNjZDUzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAK
QEAgLTgyLDYgKzgyLDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpIHsgfQogfTsKIAorY2xhc3MgTW9ja0xheWVyQ2hy
b21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTW9j
a0xheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKKyAgICAgICAgOiBMYXll
ckNocm9taXVtKGRlbGVnYXRlKQorICAgIHsKKyAgICB9Cit9OwogCiBjbGFzcyBMYXllckNocm9t
aXVtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHByb3RlY3RlZDoKQEAgLTEzNCwxMyAr
MTQxLDEzIEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgY3JlYXRlU2ltcGxlVGVzdFRyZWUoKQog
ICAgIHsKLSAgICAgICAgbV9wYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAg
ICAgIG1fY2hpbGQxID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgICAgICBtX2NoaWxk
MiA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICAgICAgbV9jaGlsZDMgPSBMYXllckNo
cm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgICAgIG1fZ3JhbmRDaGlsZDEgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoMCk7Ci0gICAgICAgIG1fZ3JhbmRDaGlsZDIgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoMCk7Ci0gICAgICAgIG1fZ3JhbmRDaGlsZDMgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7
CisgICAgICAgIG1fcGFyZW50ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsK
KyAgICAgICAgbV9jaGlsZDEgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwor
ICAgICAgICBtX2NoaWxkMiA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7Cisg
ICAgICAgIG1fY2hpbGQzID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAg
ICAgICAgbV9ncmFuZENoaWxkMSA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7
CisgICAgICAgIG1fZ3JhbmRDaGlsZDIgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0o
MCkpOworICAgICAgICBtX2dyYW5kQ2hpbGQzID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9t
aXVtKDApKTsKIAogICAgICAgICBFWFBFQ1RfQ0FMTCgqbV9sYXllclRyZWVIb3N0LCBzZXROZWVk
c0NvbW1pdCgpKS5UaW1lcyhBbnlOdW1iZXIoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Um9vdExheWVyKG1fcGFyZW50KTsKQEAgLTE2Myw3ICsxNzAsNyBAQCBwcm90ZWN0ZWQ6CiAK
IFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgYmFzaWNDcmVhdGVBbmREZXN0cm95KQogewotICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
MCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHRlc3RMYXllciA9IGFkb3B0UmVmKG5ldyBN
b2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAgQVNTRVJUX1RSVUUodGVzdExheWVyKTsKIAogICAg
IEVYUEVDVF9DQUxMKCptX2xheWVyVHJlZUhvc3QsIHNldE5lZWRzQ29tbWl0KCkpLlRpbWVzKDAp
OwpAQCAtMTcyLDggKzE3OSw4IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgYmFzaWNDcmVh
dGVBbmREZXN0cm95KQogCiBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGFkZEFuZFJlbW92ZUNo
aWxkKQogewotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBhZG9w
dFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBjaGlsZCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAKICAgICAvLyBV
cG9uIGNyZWF0aW9uLCBsYXllcnMgc2hvdWxkIG5vdCBoYXZlIGNoaWxkcmVuIG9yIHBhcmVudC4K
ICAgICBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PigwKSwgcGFyZW50LT5jaGlsZHJlbigp
LnNpemUoKSk7CkBAIC0xOTMsMTEgKzIwMCwxMSBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3Qs
IGFkZEFuZFJlbW92ZUNoaWxkKQogCiBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGluc2VydENo
aWxkKQogewotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMSA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDMg
PSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNo
aWxkNCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gcGFyZW50ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQxID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVt
KDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gYWRvcHRSZWYobmV3IE1v
Y2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQzID0g
YWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gY2hpbGQ0ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKIAogICAg
IHBhcmVudC0+c2V0TGF5ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwogCkBAIC0y
MzksOSArMjQ2LDkgQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBpbnNlcnRDaGlsZCkKIAog
VEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBpbnNlcnRDaGlsZFBhc3RFbmRPZkxpc3QpCiB7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgw
KTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQxID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IGFkb3B0UmVm
KG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNo
aWxkMSA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IGNoaWxkMiA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7
CiAKICAgICBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PigwKSwgcGFyZW50LT5jaGlsZHJl
bigpLnNpemUoKSk7CiAKQEAgLTI2MSw5ICsyNjgsOSBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRl
c3QsIGluc2VydENoaWxkUGFzdEVuZE9mTGlzdCkKIAogVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0
LCBpbnNlcnRTYW1lQ2hpbGRUd2ljZSkKIHsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFy
ZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBjaGlsZDEgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IGNoaWxkMiA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gcGFyZW50ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsK
KyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQxID0gYWRvcHRSZWYobmV3IE1vY2tMYXll
ckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gYWRvcHRS
ZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKIAogICAgIHBhcmVudC0+c2V0TGF5ZXJUcmVl
SG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwogCkBAIC0yOTAsNyArMjk3LDcgQEAgVEVTVF9G
KExheWVyQ2hyb21pdW1UZXN0LCBpbnNlcnRTYW1lQ2hpbGRUd2ljZSkKIFRFU1RfRihMYXllckNo
cm9taXVtVGVzdCwgcmVwbGFjZUNoaWxkV2l0aE5ld0NoaWxkKQogewogICAgIGNyZWF0ZVNpbXBs
ZVRlc3RUcmVlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkNCA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQ0ID0gYWRv
cHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKIAogICAgIEVYUEVDVF9GQUxTRShjaGls
ZDQtPnBhcmVudCgpKTsKIApAQCAtMzEwLDggKzMxNyw4IEBAIFRFU1RfRihMYXllckNocm9taXVt
VGVzdCwgcmVwbGFjZUNoaWxkV2l0aE5ld0NoaWxkVGhhdEhhc090aGVyUGFyZW50KQogICAgIGNy
ZWF0ZVNpbXBsZVRlc3RUcmVlKCk7CiAKICAgICAvLyBjcmVhdGUgYW5vdGhlciBzaW1wbGUgdHJl
ZSB3aXRoIHRlc3RMYXllciBhbmQgY2hpbGQ0LgotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiB0
ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IGNoaWxkNCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gdGVzdExheWVyID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDAp
KTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQ0ID0gYWRvcHRSZWYobmV3IE1vY2tM
YXllckNocm9taXVtKDApKTsKICAgICB0ZXN0TGF5ZXItPmFkZENoaWxkKGNoaWxkNCk7CiAgICAg
QVNTRVJUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMSksIHRlc3RMYXllci0+Y2hpbGRyZW4oKS5z
aXplKCkpOwogICAgIEVYUEVDVF9FUShjaGlsZDQsIHRlc3RMYXllci0+Y2hpbGRyZW4oKVswXSk7
CkBAIC0zNTUsMTEgKzM2MiwxMSBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIHJlbW92ZUFs
bENoaWxkcmVuKQogCiBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIHNldENoaWxkcmVuKQogewot
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBvbGRQYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG5ld1BhcmVudCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gb2xkUGFyZW50ID0gYWRv
cHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gbmV3UGFyZW50ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKIAotICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDEgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMiA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQxID0gYWRvcHRSZWYobmV3IE1v
Y2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0g
YWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiBuZXdDaGlsZHJlbjsKICAgICBuZXdDaGlsZHJlbi5hcHBlbmQoY2hp
bGQxKTsKQEAgLTM4OSw3ICszOTYsNyBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGdldFJv
b3RMYXllckFmdGVyVHJlZU1hbmlwdWxhdGlvbnMpCiAgICAgLy8gRm9yIHRoaXMgdGVzdCB3ZSBk
b24ndCBjYXJlIGFib3V0IHNldE5lZWRzQ29tbWl0IGNhbGxzLgogICAgIEVYUEVDVF9DQUxMKCpt
X2xheWVyVHJlZUhvc3QsIHNldE5lZWRzQ29tbWl0KCkpLlRpbWVzKEF0TGVhc3QoMSkpOwogCi0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkNCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgw
KTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQ0ID0gYWRvcHRSZWYobmV3IE1vY2tM
YXllckNocm9taXVtKDApKTsKIAogICAgIEVYUEVDVF9FUShtX3BhcmVudC5nZXQoKSwgbV9wYXJl
bnQtPnJvb3RMYXllcigpKTsKICAgICBFWFBFQ1RfRVEobV9wYXJlbnQuZ2V0KCksIG1fY2hpbGQx
LT5yb290TGF5ZXIoKSk7CkBAIC00NDYsNyArNDUzLDcgQEAgVEVTVF9GKExheWVyQ2hyb21pdW1U
ZXN0LCBjaGVja1NldE5lZWRzRGlzcGxheUNhdXNlc0NvcnJlY3RCZWhhdmlvcikKICAgICAvLyAg
IDEuIHNldHMgbmVlZHNEaXNwbGF5IGZsYWcgYXBwcm9wcmlhdGVseS4KICAgICAvLyAgIDIuIGlu
ZGlyZWN0bHkgY2FsbHMgc2V0TmVlZHNDb21taXQsIGV4YWN0bHkgb25jZSBmb3IgZWFjaCBjYWxs
IHRvIHNldE5lZWRzRGlzcGxheS4KIAotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiB0ZXN0TGF5
ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IHRlc3RMYXllciA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAgdGVz
dExheWVyLT5zZXRMYXllclRyZWVIb3N0KG1fbGF5ZXJUcmVlSG9zdC5nZXQoKSk7CiAKICAgICBJ
bnRTaXplIHRlc3RCb3VuZHMgPSBJbnRTaXplKDUwMSwgNTA4KTsKQEAgLTQ2MSw3ICs0NjgsNyBA
QCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrU2V0TmVlZHNEaXNwbGF5Q2F1c2VzQ29y
cmVjdEJlaGF2aW9yKQogCiAgICAgLy8gVGhpcyBpcyBqdXN0IGluaXRpYWxpemF0aW9uLCBidXQg
c2V0TmVlZHNDb21taXQgYmVoYXZpb3IgaXMgdmVyaWZpZWQgYW55d2F5IHRvIGF2b2lkIHdhcm5p
bmdzLgogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEs
IHRlc3RMYXllci0+c2V0Qm91bmRzKHRlc3RCb3VuZHMpKTsKLSAgICB0ZXN0TGF5ZXIgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgdGVzdExheWVyID0gYWRvcHRSZWYobmV3IE1vY2tM
YXllckNocm9taXVtKDApKTsKICAgICB0ZXN0TGF5ZXItPnNldExheWVyVHJlZUhvc3QobV9sYXll
clRyZWVIb3N0LmdldCgpKTsKICAgICBFWFBFQ1RfRkFMU0UodGVzdExheWVyLT5uZWVkc0Rpc3Bs
YXkoKSk7CiAKQEAgLTQ4MCwxNCArNDg3LDE0IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwg
Y2hlY2tTZXROZWVkc0Rpc3BsYXlDYXVzZXNDb3JyZWN0QmVoYXZpb3IpCiAgICAgRVhQRUNUX1RS
VUUodGVzdExheWVyLT5uZWVkc0Rpc3BsYXkoKSk7CiAKICAgICAvLyBDYXNlIDQ6IExheWVyQ2hy
b21pdW0gc2hvdWxkIGFjY2VwdCBkaXJ0eSByZWN0cyB0aGF0IGdvIGJleW9uZCBpdHMgYm91bmRz
LgotICAgIHRlc3RMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICB0ZXN0TGF5
ZXIgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwogICAgIHRlc3RMYXllci0+
c2V0TGF5ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwogICAgIEVYRUNVVEVfQU5E
X1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0Qm91bmRz
KHRlc3RCb3VuZHMpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9C
RUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldE5lZWRzRGlzcGxheVJlY3Qob3V0T2ZCb3VuZHNEaXJ0
eVJlY3QpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0TGF5ZXItPm5lZWRzRGlzcGxheSgpKTsKIAog
ICAgIC8vIENhc2UgNTogc2V0TmVlZHNEaXNwbGF5KCkgd2l0aG91dCB0aGUgZGlydHkgcmVjdCBh
cmcuCi0gICAgdGVzdExheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIHRlc3RM
YXllciA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAgdGVzdExheWVy
LT5zZXRMYXllclRyZWVIb3N0KG1fbGF5ZXJUcmVlSG9zdC5nZXQoKSk7CiAgICAgRVhFQ1VURV9B
TkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRCb3Vu
ZHModGVzdEJvdW5kcykpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlU
X0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0TmVlZHNEaXNwbGF5KCkpOwpAQCAtNDk2LDcgKzUw
Myw3IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgY2hlY2tTZXROZWVkc0Rpc3BsYXlDYXVz
ZXNDb3JyZWN0QmVoYXZpb3IpCiAKIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgY2hlY2tTZXRO
ZWVkc0Rpc3BsYXlXaXRoTnVsbERlbGVnYXRlKQogewotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IHRlc3RMYXllciA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7
CiAgICAgSW50U2l6ZSB0ZXN0Qm91bmRzID0gSW50U2l6ZSg1MDEsIDUwOCk7CiAKICAgICBGbG9h
dFJlY3QgZGlydHkgPSBGbG9hdFJlY3QoMTAuMGYsIDE1LjBmLCAxLjBmLCAyLjBmKTsKQEAgLTUw
NCw3ICs1MTEsNyBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrU2V0TmVlZHNEaXNw
bGF5V2l0aE51bGxEZWxlZ2F0ZSkKICAgICB0ZXN0TGF5ZXItPnNldEJvdW5kcyh0ZXN0Qm91bmRz
KTsKICAgICBFWFBFQ1RfVFJVRSh0ZXN0TGF5ZXItPm5lZWRzRGlzcGxheSgpKTsKIAotICAgIHRl
c3RMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICB0ZXN0TGF5ZXIgPSBhZG9w
dFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwogICAgIEVYUEVDVF9GQUxTRSh0ZXN0TGF5
ZXItPm5lZWRzRGlzcGxheSgpKTsKIAogICAgIHRlc3RMYXllci0+c2V0TmVlZHNEaXNwbGF5UmVj
dChkaXJ0eSk7CkBAIC01MTMsMTAgKzUyMCwxMCBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3Qs
IGNoZWNrU2V0TmVlZHNEaXNwbGF5V2l0aE51bGxEZWxlZ2F0ZSkKIAogVEVTVF9GKExheWVyQ2hy
b21pdW1UZXN0LCBjaGVja1Byb3BlcnR5Q2hhbmdlQ2F1c2VzQ29ycmVjdEJlaGF2aW9yKQogewot
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHRlc3RMYXllciA9IGFkb3B0UmVmKG5l
dyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAgdGVzdExheWVyLT5zZXRMYXllclRyZWVIb3N0
KG1fbGF5ZXJUcmVlSG9zdC5nZXQoKSk7CiAKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZHVt
bXlMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsgLy8ganVzdCBhIGR1bW15IGxheWVy
IGZvciB0aGlzIHRlc3QgY2FzZS4KKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZHVtbXlMYXll
ciA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7IC8vIGp1c3QgYSBkdW1teSBs
YXllciBmb3IgdGhpcyB0ZXN0IGNhc2UuCiAKICAgICAvLyBzYW5pdHkgY2hlY2sgb2YgaW5pdGlh
bCB0ZXN0IGNvbmRpdGlvbgogICAgIEVYUEVDVF9GQUxTRSh0ZXN0TGF5ZXItPm5lZWRzRGlzcGxh
eSgpKTsKQEAgLTYyOSwxMSArNjM2LDExIEBAIHZvaWQgYXNzZXJ0TGF5ZXJUcmVlSG9zdE1hdGNo
ZXNGb3JTdWJ0cmVlKExheWVyQ2hyb21pdW0qIGxheWVyLCBDQ0xheWVyVHJlZUhvc3QqCiBURVNU
KExheWVyQ2hyb21pdW1MYXllclRyZWVIb3N0VGVzdCwgZW50ZXJpbmdUcmVlKQogewogICAgIFdl
YktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gbWFzayA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGljYSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGljYU1hc2sgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IGFkb3B0UmVmKG5ldyBN
b2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0g
YWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gbWFzayA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2EgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21p
dW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhTWFzayA9IGFkb3B0UmVm
KG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAKICAgICAvLyBTZXQgdXAgYSBkZXRhY2hlZCB0
cmVlIG9mIGxheWVycy4gVGhlIGhvc3QgcG9pbnRlciBzaG91bGQgYmUgbmlsIGZvciB0aGVzZSBs
YXllcnMuCiAgICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7CkBAIC02NjEsNyArNjY4LDcgQEAg
VEVTVChMYXllckNocm9taXVtTGF5ZXJUcmVlSG9zdFRlc3QsIGVudGVyaW5nVHJlZSkKIFRFU1Qo
TGF5ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0LCBhZGRpbmdMYXllclN1YnRyZWUpCiB7CiAg
ICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IHBhcmVudCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgw
KSk7CiAgICAgUmVmUHRyPEZha2VDQ0xheWVyVHJlZUhvc3Q+IGxheWVyVHJlZUhvc3QgPSBGYWtl
Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKIAogICAgIGxheWVyVHJlZUhvc3QtPnNldFJvb3RM
YXllcihwYXJlbnQuZ2V0KCkpOwpAQCAtNjY5LDE2ICs2NzYsMTYgQEAgVEVTVChMYXllckNocm9t
aXVtTGF5ZXJUcmVlSG9zdFRlc3QsIGFkZGluZ0xheWVyU3VidHJlZSkKICAgICBFWFBFQ1RfRVEo
cGFyZW50LT5sYXllclRyZWVIb3N0KCksIGxheWVyVHJlZUhvc3QuZ2V0KCkpOwogCiAgICAgLy8g
QWRkaW5nIGEgc3VidHJlZSB0byBhIGxheWVyIGFscmVhZHkgYXNzb2NpYXRlZCB3aXRoIGEgaG9z
dCBzaG91bGQgc2V0IHRoZSBob3N0IHBvaW50ZXIgb24gYWxsIGxheWVycyBpbiB0aGF0IHN1YnRy
ZWUuCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBncmFuZENoaWxkID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IGFkb3B0
UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IGdyYW5kQ2hpbGQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwogICAgIGNo
aWxkLT5hZGRDaGlsZChncmFuZENoaWxkKTsKIAogICAgIC8vIE1hc2tzLCByZXBsaWNhcywgYW5k
IHJlcGxpY2EgbWFza3Mgc2hvdWxkIHBpY2sgdXAgdGhlIG5ldyBob3N0IHRvby4KLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGRNYXNrID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwor
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZE1hc2sgPSBhZG9wdFJlZihuZXcgTW9ja0xh
eWVyQ2hyb21pdW0oMCkpOwogICAgIGNoaWxkLT5zZXRNYXNrTGF5ZXIoY2hpbGRNYXNrLmdldCgp
KTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGRSZXBsaWNhID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZFJlcGxpY2EgPSBh
ZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwogICAgIGNoaWxkLT5zZXRSZXBsaWNh
TGF5ZXIoY2hpbGRSZXBsaWNhLmdldCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hp
bGRSZXBsaWNhTWFzayA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gY2hpbGRSZXBsaWNhTWFzayA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJv
bWl1bSgwKSk7CiAgICAgY2hpbGRSZXBsaWNhLT5zZXRNYXNrTGF5ZXIoY2hpbGRSZXBsaWNhTWFz
ay5nZXQoKSk7CiAKICAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKQEAgLTY5MiwxMSArNjk5
LDExIEBAIFRFU1QoTGF5ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0LCBhZGRpbmdMYXllclN1
YnRyZWUpCiBURVNUKExheWVyQ2hyb21pdW1MYXllclRyZWVIb3N0VGVzdCwgY2hhbmdlSG9zdCkK
IHsKICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7Ci0gICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1hc2sgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2EgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2FNYXNrID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBhZG9w
dFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBjaGlsZCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IG1hc2sgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkp
OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhID0gYWRvcHRSZWYobmV3IE1vY2tM
YXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGljYU1hc2sg
PSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwogCiAgICAgLy8gU2FtZSBzZXR1
cCBhcyB0aGUgcHJldmlvdXMgdGVzdC4KICAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKQEAg
LTcyNSwxMSArNzMyLDExIEBAIFRFU1QoTGF5ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0LCBj
aGFuZ2VIb3N0KQogVEVTVChMYXllckNocm9taXVtTGF5ZXJUcmVlSG9zdFRlc3QsIGNoYW5nZUhv
c3RJblN1YnRyZWUpCiB7CiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDAp
OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBmaXJzdFBhcmVudCA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZmlyc3RDaGlsZCA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gc2Vjb25kUGFy
ZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBzZWNvbmRDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gc2Vjb25kR3JhbmRDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsK
KyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZmlyc3RQYXJlbnQgPSBhZG9wdFJlZihuZXcgTW9j
a0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBmaXJzdENoaWxk
ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gc2Vjb25kUGFyZW50ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDAp
KTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gc2Vjb25kQ2hpbGQgPSBhZG9wdFJlZihuZXcg
TW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBzZWNvbmRH
cmFuZENoaWxkID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKIAogICAgIC8v
IEZpcnN0IHB1dCBhbGwgY2hpbGRyZW4gdW5kZXIgdGhlIGZpcnN0IHBhcmVudCBhbmQgc2V0IHRo
ZSBmaXJzdCBob3N0LgogICAgIGZpcnN0UGFyZW50LT5hZGRDaGlsZChmaXJzdENoaWxkKTsKQEAg
LTc2MiwxMyArNzY5LDEzIEBAIFRFU1QoTGF5ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0LCBj
aGFuZ2VIb3N0SW5TdWJ0cmVlKQogVEVTVChMYXllckNocm9taXVtTGF5ZXJUcmVlSG9zdFRlc3Qs
IHJlcGxhY2VNYXNrQW5kUmVwbGljYUxheWVyKQogewogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRv
cjo6aW5pdGlhbGl6ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtYXNrID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBs
aWNhID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBtYXNrQ2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IHJlcGxpY2FDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbWFza1JlcGxhY2VtZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhUmVwbGFjZW1lbnQgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVu
dCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IG1hc2sgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNo
cm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbWFza0NoaWxkID0gYWRvcHRS
ZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
cmVwbGljYUNoaWxkID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbWFza1JlcGxhY2VtZW50ID0gYWRvcHRSZWYobmV3IE1vY2tM
YXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGljYVJlcGxh
Y2VtZW50ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKIAogICAgIHBhcmVu
dC0+c2V0TWFza0xheWVyKG1hc2suZ2V0KCkpOwogICAgIHBhcmVudC0+c2V0UmVwbGljYUxheWVy
KHJlcGxpY2EuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggOGFiNjNjODc2YmI2NWFkMWI1Y2U1
NDA1NzdkYTUwMmFiOTkwOGVlMy4uNmRlNTJkMTdiNTYxZjQ0ZGJlOTQ4ZjExZmM4ZTRhMmM2ZGZm
OTJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVy
Q2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0xMDksNiArMTA5LDE3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0dXJlTWFuYWdlcjsgfQogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXI+IGNy
ZWF0ZUNDTGF5ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIENDVGlsZWRMYXllckltcGw6OmNy
ZWF0ZShtX2xheWVySWQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGll
c1RvKENDTGF5ZXIqIGxheWVyKQorICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFBy
b3BlcnRpZXM8Q0NMYXllckltcGw+KHRoaXMsIGxheWVyKTsKKyAgICAgICAgcHVzaFByb3BlcnRp
ZXM8Q0NUaWxlZExheWVySW1wbD4odGhpcywgbGF5ZXIpOworICAgIH0KKwogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0
KikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5
bmNocm9uaXplclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3lu
Y2hyb25pemVyVGVzdC5jcHAKaW5kZXggY2E4Mzg0NmMyMmM2ZjM2Yzg2OTk5MmFkMjkyM2RkZDdm
MzE0MGMwOS4uZTc2ZWYyOTExOGRkZTUxMzZiYzVlODIyYjNiM2JlZDBlOTc3ZjBhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVz
dC5jcHAKQEAgLTY5LDE4ICs2OSwxOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Nb2NrTGF5
ZXJDaHJvbWl1bSgpIHsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBj
cmVhdGVDQ0xheWVySW1wbCgpCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXI+IGNyZWF0
ZUNDTGF5ZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1vY2tDQ0xheWVySW1wbDo6Y3JlYXRl
KG1fbGF5ZXJJZCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8o
Q0NMYXllckltcGwqIGNjTGF5ZXIpCisgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8o
Q0NMYXllciogY2NMYXllcikKICAgICB7Ci0gICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9w
ZXJ0aWVzVG8oY2NMYXllcik7CisgICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVz
PE1vY2tDQ0xheWVySW1wbD4odGhpcywgY2NMYXllcik7CiAKICAgICAgICAgTW9ja0NDTGF5ZXJJ
bXBsKiBtb2NrQ0NMYXllciA9IHN0YXRpY19jYXN0PE1vY2tDQ0xheWVySW1wbCo+KGNjTGF5ZXIp
OwogICAgICAgICBtb2NrQ0NMYXllci0+c2V0Q0NMYXllckRlc3RydWN0aW9uTGlzdChtX2NjTGF5
ZXJEZXN0cnVjdGlvbkxpc3QpOwogICAgIH0KKwogcHJpdmF0ZToKICAgICBNb2NrTGF5ZXJDaHJv
bWl1bShWZWN0b3I8aW50PiogY2NMYXllckRlc3RydWN0aW9uTGlzdCkKICAgICAgICAgOiBMYXll
ckNocm9taXVtKDApCkBAIC0xMTksOSArMTIwLDkgQEAgdm9pZCBleHBlY3RUcmVlc0FyZUlkZW50
aWNhbChMYXllckNocm9taXVtKiBsYXllciwgQ0NMYXllckltcGwqIGNjTGF5ZXIpCiBURVNUKFRy
ZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUZyb21FbXB0eSkKIHsKICAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5
ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBsYXllclRyZWVSb290
LT5hZGRDaGlsZChMYXllckNocm9taXVtOjpjcmVhdGUoMCkpOwotICAgIGxheWVyVHJlZVJvb3Qt
PmFkZENoaWxkKExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IGxheWVyVHJlZVJvb3QgPSBNb2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAg
IGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKE1vY2tMYXllckNocm9taXVtOjpjcmVhdGUoMCkpOwor
ICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKE1vY2tMYXllckNocm9taXVtOjpjcmVhdGUoMCkp
OwogCiAgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hy
b25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIDApOwogCkBAIC0x
NTgsOSArMTU5LDkgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVS
ZXVzaW5nTGF5ZXJzKQogVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVB
bmRQcm9wZXJ0aWVzKQogewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllclRyZWVSb290ID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKDApOwotICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKExheWVyQ2hyb21pdW06OmNyZWF0
ZSgwKSk7Ci0gICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVlUm9vdCA9IE1vY2tMYXll
ckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTW9ja0xh
eWVyQ2hyb21pdW06OmNyZWF0ZSgwKSk7CisgICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTW9j
a0xheWVyQ2hyb21pdW06OmNyZWF0ZSgwKSk7CiAKICAgICAvLyBQaWNrIHNvbWUgcmFuZG9tIHBy
b3BlcnRpZXMgdG8gc2V0LiBUaGUgdmFsdWVzIGFyZSBub3QgaW1wb3J0YW50LCB3ZSdyZSBqdXN0
IHRlc3RpbmcgdGhhdCBhdCBsZWFzdCBzb21lIHByb3BlcnRpZXMgYXJlIG1ha2luZyBpdCB0aHJv
dWdoLgogICAgIEZsb2F0UG9pbnQgcm9vdFBvc2l0aW9uID0gRmxvYXRQb2ludCgyLjMsIDcuNCk7
CkBAIC0yNTQsNyArMjU1LDcgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBs
ZVRyZWVUaGVuRGVzdHJveSkKICAgICBvbGRMYXllclRyZWVSb290LT5yZW1vdmVBbGxDaGlsZHJl
bigpOwogCiAgICAgLy8gU3luY2hyb25pemUgYWdhaW4uIEFmdGVyIHRoZSBzeW5jIGFsbCBDQ0xh
eWVySW1wbHMgZnJvbSB0aGUgb2xkIHRyZWUgc2hvdWxkIGJlIGRlbGV0ZWQuCi0gICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IG5ld0xheWVyVHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
MCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG5ld0xheWVyVHJlZVJvb3QgPSBNb2NrTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwogICAgIGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJv
bml6ZXI6OnN5bmNocm9uaXplVHJlZXMobmV3TGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRy
ZWVSb290LnJlbGVhc2UoKSk7CiAgICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobmV3TGF5ZXJU
cmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LmdldCgpKTsKIApAQCAtMjY4LDIyICsyNjks
MjIgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVUaGVuRGVzdHJv
eSkKIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNNYXNrUmVwbGljYUFuZFJlcGxpY2FN
YXNrTGF5ZXJzKQogewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBsYXllclRyZWVSb290ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KDApOwotICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKExheWVyQ2hyb21pdW06OmNyZWF0ZSgw
KSk7Ci0gICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDAp
KTsKLSAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChMYXllckNocm9taXVtOjpjcmVhdGUoMCkp
OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllclRyZWVSb290ID0gTW9ja0xheWVyQ2hy
b21pdW06OmNyZWF0ZSgwKTsKKyAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChNb2NrTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKDApKTsKKyAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChNb2NrTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKDApKTsKKyAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChNb2Nr
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApKTsKIAogICAgIC8vIEZpcnN0IGNoaWxkIGdldHMgYSBt
YXNrIGxheWVyLgotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtYXNrTGF5ZXIgPSBMYXllckNo
cm9taXVtOjpjcmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1hc2tMYXllciA9
IE1vY2tMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CiAgICAgbGF5ZXJUcmVlUm9vdC0+Y2hpbGRy
ZW4oKVswXS0+c2V0TWFza0xheWVyKG1hc2tMYXllci5nZXQoKSk7CiAKICAgICAvLyBTZWNvbmQg
Y2hpbGQgZ2V0cyBhIHJlcGxpY2EgbGF5ZXIuCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJl
cGxpY2FMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gcmVwbGljYUxheWVyID0gTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKICAg
ICBsYXllclRyZWVSb290LT5jaGlsZHJlbigpWzFdLT5zZXRSZXBsaWNhTGF5ZXIocmVwbGljYUxh
eWVyLmdldCgpKTsKIAogICAgIC8vIFRoaXJkIGNoaWxkIGdldHMgYSByZXBsaWNhIGxheWVyIHdp
dGggYSBtYXNrIGxheWVyLgotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhTGF5ZXJX
aXRoTWFzayA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gcmVwbGljYU1hc2tMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGljYUxheWVyV2l0aE1hc2sgPSBNb2NrTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhTWFza0xh
eWVyID0gTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKICAgICByZXBsaWNhTGF5ZXJXaXRo
TWFzay0+c2V0TWFza0xheWVyKHJlcGxpY2FNYXNrTGF5ZXIuZ2V0KCkpOwogICAgIGxheWVyVHJl
ZVJvb3QtPmNoaWxkcmVuKClbMl0tPnNldFJlcGxpY2FMYXllcihyZXBsaWNhTGF5ZXJXaXRoTWFz
ay5nZXQoKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121149</attachid>
            <date>2012-01-04 14:15:35 -0800</date>
            <delta_ts>2012-01-23 10:21:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75272-20120104171533.patch</filename>
            <type>text/plain</type>
            <size>105056</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzMwMjQ1MGEyNWUwYjFj
NWM1ODkwNTFlMTI4YjQ0ZWQ1Yjk0YzhlYS4uYTlkZjQ0N2IyYjhlZDk3ODY1YzU1ODBhYTI1MmM5
Y2E0Mjk4OWFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTAxLTA0ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBS
ZS1mYWN0b3IgY29tcG9zaXRvciB0cmVlIHN5bmNocm9uaXphdGlvbiB0byBzdXBwb3J0IGJ1ZmZl
cmluZyBhbmQgc2VyaWFsaXphdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc1MjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVtcGxhdGl6ZSBDQ0xheWVySW1wbCB0cmVlIGNyZWF0aW9uIHNvIHRo
YXQgaXQncyBwb3NzaWJsZSB0bworICAgICAgICBzZXJpYWxpemUgb3IgYnVmZmVyIHRoZSBsYXll
ciB0cmVlIGluIGEgdGVtcG9yYXJ5IGRhdGEgc3RydWN0dXJlLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAo
V2ViQ29yZTo6U2VyaWFsaXphYmxlQ2FudmFzMkRMYXllckNocm9taXVtOjpTZXJpYWxpemFibGVD
YW52YXMyRExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlQ2Fu
dmFzMkRMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cmlhbGl6YWJsZUNhbnZhczJETGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVDb250ZW50TGF5ZXJD
aHJvbWl1bTo6U2VyaWFsaXphYmxlQ29udGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXphYmxlQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlQ29udGVudExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZl
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OnBsYXRmb3Jt
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06
OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZXJpYWxpemFibGVJbWFnZUxheWVyQ2hyb21pdW06OlNlcmlhbGl6YWJsZUlt
YWdlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVJbWFnZUxh
eWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXph
YmxlSW1hZ2VMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1
bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlTGF5ZXJD
aHJvbWl1bTo6U2VyaWFsaXphYmxlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemFibGVMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcmlhbGl6YWJsZUxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemFibGVQbHVnaW5MYXllckNocm9taXVtOjpTZXJpYWxpemFibGVQbHVn
aW5MYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZVBsdWdpbkxh
eWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXph
YmxlUGx1Z2luTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJD
b3JlOjpVcGRhdGFibGVUaWxlOjpVcGRhdGFibGVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlVw
ZGF0YWJsZVRpbGU6OnRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRhYmxlVGlsZTo6
bWFuYWdlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRhYmxlVGlsZTo6aXNEaXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGFibGVUaWxlOjpjbGVhckRpcnR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVN5bmNocm9uaXplcjo6YWRkQ0NMYXllcnNUb01hcFJlY3Vyc2l2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVS
ZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25p
emVUcmVlc0ludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTeW5jaHJvbml6ZXI6OnN5
bmNocm9uaXplVHJlZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Ry
ZWVTeW5jaHJvbml6ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxl
VmlkZW9MYXllckNocm9taXVtOjpTZXJpYWxpemFibGVWaWRlb0xheWVyQ2hyb21pdW0pOgorICAg
ICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGVDQ0xh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZVZpZGVvTGF5ZXJDaHJvbWl1bTo6
cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZVdlYkdMTGF5
ZXJDaHJvbWl1bTo6U2VyaWFsaXphYmxlV2ViR0xMYXllckNocm9taXVtKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6YWJsZVdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVXZWJHTExheWVyQ2hyb21pdW06OnB1c2hQcm9w
ZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllci5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5oLgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllcjo6Q0NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyOjp+Q0NMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
ckltcGwuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKToKKwogMjAx
Mi0wMS0wMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGF2ZSBIeWF0dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOGFlZmQ5
YmY1ZjAwMGVmMTE4Mzk3NTY3OGNkOTFiNzczMTkzYzViYy4uOWE1MjQ5ZGVmODc1YzI4MGFhZjg2
ZDgzYTBlOWJjNzk0ZDQ2NmE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1OSBAQAorMjAxMi0wMS0wNCAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtDaHJvbWl1bV0gUmUtZmFjdG9yIGNvbXBvc2l0b3IgdHJlZSBzeW5jaHJv
bml6YXRpb24gdG8gc3VwcG9ydCBidWZmZXJpbmcgYW5kIHNlcmlhbGl6YXRpb24uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTI3MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlbXBsYXRpemUgQ0NMYXll
ckltcGwgdHJlZSBjcmVhdGlvbiBzbyB0aGF0IGl0J3MgcG9zc2libGUgdG8KKyAgICAgICAgc2Vy
aWFsaXplIG9yIGJ1ZmZlciB0aGUgbGF5ZXIgdHJlZSBpbiBhIHRlbXBvcmFyeSBkYXRhIHN0cnVj
dHVyZS4KKworICAgICAgICAqIHNyYy9XZWJDb250ZW50TGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb250ZW50TGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYkNvbnRlbnRM
YXllckltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmg6CisgICAg
ICAgIChXZWJLaXQ6OlNlcmlhbGl6YWJsZVdlYkNvbnRlbnRMYXllckltcGw6OlNlcmlhbGl6YWJs
ZVdlYkNvbnRlbnRMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpTZXJpYWxpemFibGVXZWJD
b250ZW50TGF5ZXJJbXBsOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6U2VyaWFs
aXphYmxlV2ViQ29udGVudExheWVySW1wbDo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYkV4
dGVybmFsVGV4dHVyZUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbC5jcHA6CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oOgor
ICAgICAgICAoV2ViS2l0OjpTZXJpYWxpemFibGVXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6
OlNlcmlhbGl6YWJsZVdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgIChXZWJL
aXQ6OlNlcmlhbGl6YWJsZVdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6Y3JlYXRlQ0NMYXll
cik6CisgICAgICAgIChXZWJLaXQ6OlNlcmlhbGl6YWJsZVdlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbDo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4
dHVyZUxheWVySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJJ
bXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6
OlNlcmlhbGl6YWJsZVdlYkxheWVySW1wbDo6U2VyaWFsaXphYmxlV2ViTGF5ZXJJbXBsKToKKyAg
ICAgICAgKFdlYktpdDo6U2VyaWFsaXphYmxlV2ViTGF5ZXJJbXBsOjpjcmVhdGVDQ0xheWVyKToK
KyAgICAgICAgKFdlYktpdDo6U2VyaWFsaXphYmxlV2ViTGF5ZXJJbXBsOjpwdXNoUHJvcGVydGll
c1RvKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpjcmVhdGUpOgorICAgICAgICAq
IHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBzcmMv
V2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNv
bnRhaW5lckltcGw6OldlYlBsdWdpbkNvbnRhaW5lckltcGwpOgorICAgICAgICAqIHRlc3RzL0ND
TGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0xheWVy
Q2hyb21pdW06Ok1vY2tMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgor
ICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpD
Q0xheWVyVHJlZUhvc3RUZXN0Ojpkb0JlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAg
KFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnB1c2hQcm9wZXJ0
aWVzVG8pOgorICAgICAgICAqIHRlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtVGVzdDo6ZnVsbExpZmVjeWNs
ZVRlc3QpOgorICAgICAgICAqIHRlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAg
KiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6RmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllcik6CisgICAgICAgIChXVEY6OkZha2VUaWxl
ZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHRlc3RzL1RyZWVT
eW5jaHJvbml6ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tMYXllckNocm9taXVt
OjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tMYXllckNocm9taXVtOjpw
dXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEyLTAxLTA0
ICBEbWl0cnkgTG9tb3YgIDxkc2xvbW92QGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZDpbQ2hyb21pdW1dRGlzYWJsZSBXZWJQYWdlTmV3U2VyaWFsaXplVGVzdC5DU1NSZXNvdXJjZXMg
YW5kIFdlYlBhZ2VOZXdTZXJpYWxpemVUZXN0LlRlc3RNSFRNTEVuY29kaW5nLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDgzMDVmY2VkOGVhZjYzMDlmN2U2YmM5YmY3NjFiMDIxYWMwNDQ4ODUuLjhmZDcz
OWE0YzgzMDg0YzNmOWEyNTEwMTU4ZGI2YWQ1MjYzYzY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTM2MDcsNiArMzYwNyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllci5jcHAnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXIuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyUXVhZC5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzMkRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMzQwOGFhNTZiMmU2YTRj
NzVhYjgwNjAyYzE2YjkyM2NlMjQ5MjVlZC4uMThlNmIxNWVmMDBmMTAyYjg4NTg4YzYxOTczMjhi
YjA0YTUxZDAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCkBAIC0z
NCw3ICszNCw2IEBACiAKICNpbmNsdWRlICJDYW52YXMyRExheWVyQ2hyb21pdW0uaCIKIAotI2lu
Y2x1ZGUgImNjL0NDQ2FudmFzTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVI
b3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIkV4dGVu
c2lvbnMzRENocm9taXVtLmgiCkBAIC00NywxMSArNDYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBDYW52YXMyRExheWVyQ2hy
b21pdW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYg
c2l6ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhczJETGF5ZXJDaHJvbWl1bShj
b250ZXh0LCBzaXplKSk7Ci19Ci0KIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Q2FudmFzMkRMYXll
ckNocm9taXVtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXpl
KQogICAgIDogQ2FudmFzTGF5ZXJDaHJvbWl1bSgwKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQp
CkBAIC0xNDcsMTcgKzE0MSw2IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0CiAgICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPmZsdXNoKCkpOwogfQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1
bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCi17Ci0gICAgQ2FudmFzTGF5
ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhsYXllcik7Ci0KLSAgICBDQ0NhbnZhc0xheWVy
SW1wbCogY2FudmFzTGF5ZXIgPSBzdGF0aWNfY2FzdDxDQ0NhbnZhc0xheWVySW1wbCo+KGxheWVy
KTsKLSAgICBpZiAobV91c2VEb3VibGVCdWZmZXJpbmcpCi0gICAgICAgIGNhbnZhc0xheWVyLT5z
ZXRUZXh0dXJlSWQobV9mcm9udFRleHR1cmUtPnRleHR1cmVJZCgpKTsKLSAgICBlbHNlCi0gICAg
ICAgIGNhbnZhc0xheWVyLT5zZXRUZXh0dXJlSWQobV9iYWNrVGV4dHVyZUlkKTsKLX0KLQogdm9p
ZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpCiB7CiAg
ICAgaWYgKG1fdXNlRG91YmxlQnVmZmVyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uaAppbmRleCA4MzYxNWExZjIyMzU2MTY0NjJlYjFmOGQ0MTIyZTFhZDhlNThjOTIyLi5mNmJi
ODI4YzY0NjlmMjllZjVkOTU5NjQzOWQzMTg4MTRmNTVhYjNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMy
RExheWVyQ2hyb21pdW0uaApAQCAtNDQsNyArNDQsOSBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQz
RDsKIC8vIEEgbGF5ZXIgY29udGFpbmluZyBhbiBhY2NlbGVyYXRlZCAyZCBjYW52YXMKIGNsYXNz
IENhbnZhczJETGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IGNyZWF0
ZShHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFNpemUmKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBMYXllclR5cGU+IHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4g
Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYpOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIExheWVyVHlwZT4gdm9pZCBwdXNoUHJvcGVydGllcyhjb25zdCBDYW52YXMyRExh
eWVyQ2hyb21pdW0qIGZyb20sIENDTGF5ZXIqIHRvKTsKKwogICAgIHZpcnR1YWwgfkNhbnZhczJE
TGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQpOwpAQCAt
NTYsMTMgKzU4LDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVI
b3N0KENDTGF5ZXJUcmVlSG9zdCopOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwotICAgIHZp
cnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7CiAgICAgdmlydHVhbCB2
b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVw
UmVzb3VyY2VzKCk7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgQ2FudmFzMkRMYXllckNo
cm9taXVtKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYpOwogCitwcml2YXRlOgog
ICAgIC8vIFZpc2libGUgZm9yIHRlc3Rpbmcgc28gd2UgY2FuIGJ5cGFzcyBzZXRMYXllclRyZWVI
b3N0LgogICAgIGZyaWVuZCBjbGFzcyBDYW52YXMyRExheWVyQ2hyb21pdW1UZXN0OwogICAgIHZv
aWQgc2V0VGV4dHVyZU1hbmFnZXIoVGV4dHVyZU1hbmFnZXIqKTsKQEAgLTc4LDYgKzgwLDM5IEBA
IHByaXZhdGU6CiAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX2Zyb250VGV4dHVyZTsKIH07
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gY2xhc3MgU2VyaWFsaXphYmxlQ2FudmFz
MkRMYXllckNocm9taXVtIDogcHVibGljIENhbnZhczJETGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgU2VyaWFsaXphYmxlQ2FudmFzMkRMYXllckNocm9taXVtKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKSA6IENhbnZhczJETGF5ZXJD
aHJvbWl1bShjb250ZXh0LCBzaXplKSB7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xh
eWVyPiBjcmVhdGVDQ0xheWVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBMYXllclR5cGU6OmNy
ZWF0ZShtX2xheWVySWQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGll
c1RvKENDTGF5ZXIqIGxheWVyKQorICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFBy
b3BlcnRpZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgICAgIHB1c2hQcm9wZXJ0aWVz
PExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IExheWVyVHlwZT4KK1Bhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBDYW52YXMyRExh
eWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50
U2l6ZSYgc2l6ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6YWJsZUNhbnZh
czJETGF5ZXJDaHJvbWl1bTxMYXllclR5cGU+KGNvbnRleHQsIHNpemUpKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzKGNvbnN0IENhbnZhczJETGF5ZXJDaHJvbWl1bSogZnJvbSwgQ0NMYXllciogdG8p
Cit7CisgICAgTGF5ZXJUeXBlKiBsYXllciA9IHN0YXRpY19jYXN0PExheWVyVHlwZSo+KHRvKTsK
KworICAgIGlmIChtX3VzZURvdWJsZUJ1ZmZlcmluZykKKyAgICAgICAgbGF5ZXItPnNldFRleHR1
cmVJZChtX2Zyb250VGV4dHVyZS0+dGV4dHVyZUlkKCkpOworICAgIGVsc2UKKyAgICAgICAgbGF5
ZXItPnNldFRleHR1cmVJZChtX2JhY2tUZXh0dXJlSWQpOworfQorCiB9CiAjZW5kaWYgLy8gVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IGM1MTAwOGNiNDE4ZDVjYjNlMWMzNzg2ZGNmYTBkOTc0ZWVjMzMwMmMuLmIyMDE3
ZDRmODA1NzEyM2VlNWQ0NWY0OWMwZDFhYWQxMDE1YzEwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xh
eWVyQ2hyb21pdW0uY3BwCkBAIC0zNCw3ICszNCw2IEBACiAKICNpbmNsdWRlICJDYW52YXNMYXll
ckNocm9taXVtLmgiCiAKLSNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAK
QEAgLTQ1LDEwICs0NCw1IEBAIENhbnZhc0xheWVyQ2hyb21pdW06OkNhbnZhc0xheWVyQ2hyb21p
dW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVy
SW1wbD4gQ2FudmFzTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQotewotICAgIHJl
dHVybiBDQ0NhbnZhc0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7Ci19Ci0KIH0KICNlbmRp
ZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9t
aXVtLmgKaW5kZXggZjQwNzJmNWQwOTY3ZjZjYzAyYTcxYzY4MWI3NmNkOTc1NmMzMDgyYS4uY2Zk
MGJhYTJkYTA0YWViNTAxZWIwMjlhNDdhNTI0MDdkMjA5NjJlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xh
eWVyQ2hyb21pdW0uaApAQCAtNDAsOSArNDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8v
IEJhc2UgY2xhc3MgZm9yIFdlYkdMIGFuZCBhY2NlbGVyYXRlZCAyZCBjYW52YXNlcy4KIGNsYXNz
IENhbnZhc0xheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7Ci1wdWJsaWM6Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOwot
CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ2FudmFzTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVs
ZWdhdGUqKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZWYx
MDViNTNmZmVhYjEzOTliNTIzZDhjN2Q3OTAyNTEyNWEzNmM5Ny4uZGVkYTc4NDk1NjU2MmJkZDQw
MTVlZTRlMTZlMzdkY2ZhNTY5MWVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcApAQCAtNzMsMTEgKzczLDYgQEAgcHJpdmF0ZToKICAgICBDQ0xheWVyRGVsZWdhdGUqIG1f
ZGVsZWdhdGU7CiB9OwogCi1QYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPiBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCi17Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkpOwotfQot
CiBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVudExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVn
YXRlKiBkZWxlZ2F0ZSkKICAgICA6IFRpbGVkTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRl
bnRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IGMzZGYxYzIwYzgwYzA1MmI1ZWNiNDQw
ODA3ZWJmN2M5ZDViNTQwM2IuLjJlYzk2OWFkZTQ1NDQyZDY0MDMxMDc3NWRkMGNiYThkOTdkMmJl
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaApAQCAtMzUsNyArMzUsNiBAQAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIlRpbGVkTGF5ZXJD
aHJvbWl1bS5oIgotI2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC00NSw3ICs0NCw3IEBAIGNsYXNzIExheWVyVGV4dHVyZVVwZGF0ZXI7
CiAvLyBBIExheWVyIHRoYXQgcmVxdWlyZXMgYSBHcmFwaGljc0NvbnRleHQgdG8gcmVuZGVyIGl0
cyBjb250ZW50cy4KIGNsYXNzIENvbnRlbnRMYXllckNocm9taXVtIDogcHVibGljIFRpbGVkTGF5
ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVy
Q2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBMYXllclR5cGU+IHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPiBjcmVh
dGUoQ0NMYXllckRlbGVnYXRlKik7CiAKICAgICB2aXJ0dWFsIH5Db250ZW50TGF5ZXJDaHJvbWl1
bSgpOwogCkBAIC02Miw2ICs2MSwyOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxMYXllclRleHR1
cmVVcGRhdGVyPiBtX3RleHR1cmVVcGRhdGVyOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgTGF5
ZXJUeXBlPiBjbGFzcyBTZXJpYWxpemFibGVDb250ZW50TGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBD
b250ZW50TGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2VyaWFsaXphYmxl
Q29udGVudExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkgOiBDb250ZW50
TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkgeyB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NM
YXllcj4gY3JlYXRlQ0NMYXllcigpCisgICAgeworICAgICAgICByZXR1cm4gTGF5ZXJUeXBlOjpj
cmVhdGUobV9sYXllcklkKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRp
ZXNUbyhDQ0xheWVyKiBsYXllcikKKyAgICB7CisgICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgICAgICBUaWxlZExheWVyQ2hy
b21pdW06OnB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgIH0KK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK1Bhc3NSZWZQdHI8Q29udGVudExheWVy
Q2hyb21pdW0+IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBk
ZWxlZ2F0ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6YWJsZUNvbnRlbnRM
YXllckNocm9taXVtPExheWVyVHlwZT4oZGVsZWdhdGUpKTsKK30KKwogfQogI2VuZGlmIC8vIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJv
bWl1bS5jcHAKaW5kZXggZWFkNmFhM2EyNTAzMWY3ODRjNDc3NWE1M2I0YTMzYTA0MmJlYmRlYy4u
YzA2YmU2NmM5YWFhZDBhMTQxZmJlZmQzZGZkNjA2NDgyMmRiMTdlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9E
cmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRXh0
ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2lu
Y2x1ZGUgIldlYkdMTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgImNjL0NDQ2FudmFzTGF5ZXJJ
bXBsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQzLDcgKzE0NCw3IEBAIHZvaWQg
RHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcigpCiBQbGF0Zm9ybUxheWVyKiBE
cmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkKIHsKICAgICBpZiAoIW1fcGxhdGZvcm1MYXll
cikgewotICAgICAgICBtX3BsYXRmb3JtTGF5ZXIgPSBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0
ZSgwKTsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyID0gV2ViR0xMYXllckNocm9taXVtOjpjcmVh
dGU8Q0NDYW52YXNMYXllckltcGw+KDApOwogICAgICAgICBtX3BsYXRmb3JtTGF5ZXItPnNldERy
YXdpbmdCdWZmZXIodGhpcyk7CiAgICAgICAgIG1fcGxhdGZvcm1MYXllci0+c2V0T3BhcXVlKCFt
X2NvbnRleHQtPmdldENvbnRleHRBdHRyaWJ1dGVzKCkuYWxwaGEpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDY3ZTA1ZjhkY2U0YWZjYjBlODIyNWM5
MmNmZTU0NGQzMzExZDA5OWEuLjU4OTRmOWI1ZTYzZTUzMTU1OTc4NWE2YTgxMDNiODZjMTRiMjhj
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNTQsNiArNTQs
NyBAQAogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgIlN5c3RlbVRpbWUuaCIKKyNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJ
bXBsLmgiCiAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvU3Ry
aW5nRXh0cmFzLmg+CkBAIC03NCw3ICs3NSw3IEBAIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6R3Jh
cGhpY3NMYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICAsIG1f
Y29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvcihmYWxzZSkKICAgICAsIG1faW5TZXRDaGls
ZHJlbihmYWxzZSkKIHsKLSAgICBtX2xheWVyID0gQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0
ZSh0aGlzKTsKKyAgICBtX2xheWVyID0gQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ1Rp
bGVkTGF5ZXJJbXBsPih0aGlzKTsKIAogICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwogfQpA
QCAtMzI3LDcgKzMyOCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50
c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7
CiAgICAgaWYgKGltYWdlKSB7CiAgICAgICAgIGlmICghbV9jb250ZW50c0xheWVyLmdldCgpIHx8
IG1fY29udGVudHNMYXllclB1cnBvc2UgIT0gQ29udGVudHNMYXllckZvckltYWdlKSB7Ci0gICAg
ICAgICAgICBSZWZQdHI8SW1hZ2VMYXllckNocm9taXVtPiBpbWFnZUxheWVyID0gSW1hZ2VMYXll
ckNocm9taXVtOjpjcmVhdGUodGhpcyk7CisgICAgICAgICAgICBSZWZQdHI8SW1hZ2VMYXllckNo
cm9taXVtPiBpbWFnZUxheWVyID0gSW1hZ2VMYXllckNocm9taXVtOjpjcmVhdGU8Q0NUaWxlZExh
eWVySW1wbD4odGhpcyk7CiAgICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIoaW1hZ2VMYXll
ci5nZXQoKSk7CiAgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNM
YXllckZvckltYWdlOwogICAgICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsKQEAgLTUy
OCw3ICs1MjksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQcmVz
ZXJ2ZXMzRCgpCiB7CiAgICAgaWYgKG1fcHJlc2VydmVzM0QgJiYgIW1fdHJhbnNmb3JtTGF5ZXIp
IHsKICAgICAgICAgLy8gQ3JlYXRlIHRoZSB0cmFuc2Zvcm0gbGF5ZXIuCi0gICAgICAgIG1fdHJh
bnNmb3JtTGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUodGhpcyk7CisgICAgICAgIG1fdHJh
bnNmb3JtTGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KHRoaXMpOwog
ICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKIAogICAgICAg
ICAvLyBDb3B5IHRoZSBwb3NpdGlvbiBmcm9tIHRoaXMgbGF5ZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXll
ckNocm9taXVtLmNwcAppbmRleCAxZDYyOTQ5NjQ2ZmFjZGYyZGIwNjI1MGVkNzA2NTZhNDY3MjA5
ZDI0Li4wOTA1Nzc5YmY4Yjk1MWFkM2I0YjRmODlkMDQ5YzFhNzk3MTJlYmFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJMYXll
clRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybUNvbG9yLmgiCi0jaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTI5LDEx
ICsxMjgsNiBAQCBwcml2YXRlOgogICAgIExheWVyVGV4dHVyZVN1YkltYWdlIG1fdGV4U3ViSW1h
Z2U7CiB9OwogCi1QYXNzUmVmUHRyPEltYWdlTGF5ZXJDaHJvbWl1bT4gSW1hZ2VMYXllckNocm9t
aXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEltYWdlTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkpOwotfQotCiBJbWFnZUxheWVy
Q2hyb21pdW06OkltYWdlTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQog
ICAgIDogVGlsZWRMYXllckNocm9taXVtKGRlbGVnYXRlKQogICAgICwgbV9pbWFnZUZvckN1cnJl
bnRGcmFtZSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRleCAxMjU5YTY2M2M0Y2Ez
NmQ1OTA3ZDRkYWFlNjQ3MWFlOTQxNzM0Y2M2Li5hNGEzYjE0Y2JhM2UwNWRmMzliZGQ3NTliOTNj
Mzg4ZTRkODgyZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApAQCAtNDksNyArNDks
OCBAQCBjbGFzcyBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI7CiAvLyBBIExheWVyIHRoYXQgY29u
dGFpbnMgb25seSBhbiBJbWFnZSBlbGVtZW50LgogY2xhc3MgSW1hZ2VMYXllckNocm9taXVtIDog
cHVibGljIFRpbGVkTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW1hZ2VMYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUxheWVyQ2hy
b21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqKTsKKwogICAgIHZpcnR1YWwgfkltYWdlTGF5
ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwpA
QCAtNTgsNyArNTksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENvbnRlbnRzKEltYWdlKiBp
bWFnZSk7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgSW1hZ2VMYXllckNo
cm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSopOwogCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1
cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCopOwpAQCAtNzMsNiArNzQsMjggQEAgcHJp
dmF0ZToKICAgICBSZWZQdHI8SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyPiBtX3RleHR1cmVVcGRh
dGVyOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBjbGFzcyBTZXJpYWxpemFi
bGVJbWFnZUxheWVyQ2hyb21pdW0gOiBwdWJsaWMgSW1hZ2VMYXllckNocm9taXVtIHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBTZXJpYWxpemFibGVJbWFnZUxheWVyQ2hyb21pdW0oQ0NMYXllckRl
bGVnYXRlKiBkZWxlZ2F0ZSkgOiBJbWFnZUxheWVyQ2hyb21pdW0oZGVsZWdhdGUpIHsgfQorCisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXI+IGNyZWF0ZUNDTGF5ZXIoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIExheWVyVHlwZTo6Y3JlYXRlKG1fbGF5ZXJJZCk7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllciogbGF5ZXIpCisgICAgeworICAg
ICAgICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxheWVy
KTsKKyAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxMYXllclR5cGU+
KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+
CitQYXNzUmVmUHRyPEltYWdlTGF5ZXJDaHJvbWl1bT4gSW1hZ2VMYXllckNocm9taXVtOjpjcmVh
dGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNlcmlhbGl6YWJsZUltYWdlTGF5ZXJDaHJvbWl1bTxMYXllclR5cGU+KGRlbGVnYXRlKSk7Cit9
CisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5jcHAKaW5kZXggMmRmMDViNTljYjg1YWQ3YzA4NzAxOGNjMjU2ZWUxNzQwOTRiOWJk
NS4uZmE2MTAyMjY0YjgzN2QwYzQ1ZTkwNGNmY2NmMDIwMjIzYjlmNWQ0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogCi0jaW5jbHVkZSAiY2MvQ0NMYXll
ckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpZiBVU0UoU0tJQSkK
ICNpbmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIKQEAgLTQ5LDExICs0OCw2IEBAIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKIHN0YXRpYyBpbnQgc19uZXh0TGF5ZXJJZCA9IDE7CiAKLVBhc3NSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSog
ZGVsZWdhdGUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtKGRlbGVn
YXRlKSk7Ci19Ci0KIExheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRl
KiBkZWxlZ2F0ZSkKICAgICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCiAgICAgLCBtX25lZWRzRGlz
cGxheShmYWxzZSkKQEAgLTQxMSw0NyArNDA1LDYgQEAgdm9pZCBMYXllckNocm9taXVtOjpzZXRO
ZWVkc0Rpc3BsYXlSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZGlydHlSZWN0KQogICAgIHNldE5lZWRz
Q29tbWl0KCk7CiB9CiAKLXZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCogbGF5ZXIpCi17Ci0gICAgbGF5ZXItPnNldEFuY2hvclBvaW50KG1fYW5jaG9yUG9p
bnQpOwotICAgIGxheWVyLT5zZXRBbmNob3JQb2ludFoobV9hbmNob3JQb2ludFopOwotICAgIGxh
eWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IobV9iYWNrZ3JvdW5kQ29sb3IpOwotICAgIGxheWVyLT5z
ZXRCb3VuZHMobV9ib3VuZHMpOwotICAgIGxheWVyLT5zZXRDb250ZW50Qm91bmRzKGNvbnRlbnRC
b3VuZHMoKSk7Ci0gICAgbGF5ZXItPnNldERlYnVnQm9yZGVyQ29sb3IobV9kZWJ1Z0JvcmRlckNv
bG9yKTsKLSAgICBsYXllci0+c2V0RGVidWdCb3JkZXJXaWR0aChtX2RlYnVnQm9yZGVyV2lkdGgp
OwotICAgIGxheWVyLT5zZXREb3VibGVTaWRlZChtX2RvdWJsZVNpZGVkKTsKLSAgICBsYXllci0+
c2V0RHJhd3NDb250ZW50KGRyYXdzQ29udGVudCgpKTsKLSAgICBsYXllci0+c2V0SXNOb25Db21w
b3NpdGVkQ29udGVudChtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQpOwotICAgIGxheWVyLT5zZXRN
YXNrc1RvQm91bmRzKG1fbWFza3NUb0JvdW5kcyk7Ci0gICAgbGF5ZXItPnNldFNjcm9sbGFibGUo
bV9zY3JvbGxhYmxlKTsKLSAgICBsYXllci0+c2V0TmFtZShtX25hbWUpOwotICAgIGxheWVyLT5z
ZXRPcGFxdWUobV9vcGFxdWUpOwotICAgIGxheWVyLT5zZXRPcGFjaXR5KG1fb3BhY2l0eSk7Ci0g
ICAgbGF5ZXItPnNldFBvc2l0aW9uKG1fcG9zaXRpb24pOwotICAgIGxheWVyLT5zZXRQcmVzZXJ2
ZXMzRChwcmVzZXJ2ZXMzRCgpKTsKLSAgICBsYXllci0+c2V0U2Nyb2xsUG9zaXRpb24obV9zY3Jv
bGxQb3NpdGlvbik7Ci0gICAgbGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKG1fc3VibGF5ZXJU
cmFuc2Zvcm0pOwotICAgIGxheWVyLT5zZXRUcmFuc2Zvcm0obV90cmFuc2Zvcm0pOwotICAgIGxh
eWVyLT5zZXRVcGRhdGVSZWN0KG1fdXBkYXRlUmVjdCk7Ci0KLSAgICBsYXllci0+c2V0U2Nyb2xs
RGVsdGEobGF5ZXItPnNjcm9sbERlbHRhKCkgLSBsYXllci0+c2VudFNjcm9sbERlbHRhKCkpOwot
ICAgIGxheWVyLT5zZXRTZW50U2Nyb2xsRGVsdGEoSW50U2l6ZSgpKTsKLQotICAgIGlmIChtYXNr
TGF5ZXIoKSkKLSAgICAgICAgbWFza0xheWVyKCktPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXItPm1h
c2tMYXllcigpKTsKLSAgICBpZiAocmVwbGljYUxheWVyKCkpCi0gICAgICAgIHJlcGxpY2FMYXll
cigpLT5wdXNoUHJvcGVydGllc1RvKGxheWVyLT5yZXBsaWNhTGF5ZXIoKSk7Ci0KLSAgICAvLyBS
ZXNldCBhbnkgc3RhdGUgdGhhdCBzaG91bGQgYmUgY2xlYXJlZCBmb3IgdGhlIG5leHQgdXBkYXRl
LgotICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdCgpOwotfQotCi1QYXNzUmVmUHRyPENDTGF5
ZXJJbXBsPiBMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCi17Ci0gICAgcmV0dXJu
IENDTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXllcklkKTsKLX0KLQogdm9pZCBMYXllckNocm9taXVt
OjpzZXREZWJ1Z0JvcmRlckNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBtX2RlYnVn
Qm9yZGVyQ29sb3IgPSBjb2xvcjsKQEAgLTQ4Nyw2ICs0NDAsMTcgQEAgYm9vbCBMYXllckNocm9t
aXVtOjpkZXNjZW5kYW50RHJhd3NDb250ZW50KCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK1Bh
c3NSZWZQdHI8Q0NMYXllcj4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllcigpCit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFBhc3NSZWZQdHI8Q0NMYXllcj4oKTsK
K30KKwordm9pZCBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXIqKQorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIHNvcnRMYXllcnMoVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+OjppdGVyYXRvciwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+OjppdGVyYXRvciwgdm9pZCopCiB7CiAgICAgLy8gQ3VycmVudGx5IHdlIGRvbid0IHVz
ZSB6LW9yZGVyIHRvIGRlY2lkZSB3aGF0IHRvIHBhaW50LCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8g
YWN0dWFsbHkgc29ydCBMYXllckNocm9taXVtcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCAwOTQ3
YTZjNzk3YWI4N2I2NjYwNWMxMmFlZmU1YWYwYTM3M2EyYjg5Li43MTZlZjNiNDZhNTg5OTczYjBl
OTAwZWVjNTA0Yjk4NDA4NDNhNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0zNCw2ICszNCw3
IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKKyNpbmNsdWRlICJjYy9D
Q0xheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkBAIC01MSw3ICs1Miw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVy
VHJlZUhvc3Q7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0Q7CkBAIC02Nyw3ICs2Nyw4IEBAIHB1YmxpYzoKIGNsYXNzIExheWVyQ2hyb21pdW0gOiBwdWJs
aWMgUmVmQ291bnRlZDxMYXllckNocm9taXVtPiB7CiAgICAgZnJpZW5kIGNsYXNzIExheWVyVGls
ZXJDaHJvbWl1bTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMYXllckNocm9taXVt
PiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJU
eXBlPiBzdGF0aWMgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVn
YXRlKik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgdm9pZCBwdXNo
UHJvcGVydGllcyhjb25zdCBMYXllckNocm9taXVtKiwgQ0NMYXllciopOwogCiAgICAgdmlydHVh
bCB+TGF5ZXJDaHJvbWl1bSgpOwogCkBAIC0xNzMsNyArMTc0LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0RGVidWdCb3JkZXJDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0RGVidWdC
b3JkZXJXaWR0aChmbG9hdCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhD
Q0xheWVySW1wbCopOworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXIq
KTsKIAogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zLCBGcmFnbWVu
dFNoYWRlckNvbG9yPiBCb3JkZXJQcm9ncmFtOwogCkBAIC0yMDUsNiArMjA2LDggQEAgcHVibGlj
OgogICAgIENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGF5ZXJUcmVlSG9zdC5nZXQoKTsgfQogICAgIHZvaWQgY2xlYW51cFJlc291cmNlc1JlY3Vyc2l2
ZSgpOwogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXI+IGNyZWF0ZUNDTGF5ZXIoKTsK
KwogcHJvdGVjdGVkOgogICAgIENDTGF5ZXJEZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKICAgICBleHBs
aWNpdCBMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSopOwpAQCAtMjI2LDEwICsyMjksNiBA
QCBwcm90ZWN0ZWQ6CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9tYXNrTGF5ZXI7CiAK
LSAgICBmcmllbmQgY2xhc3MgVHJlZVN5bmNocm9uaXplcjsKLSAgICBmcmllbmQgY2xhc3MgQ0NM
YXllckltcGw7Ci0gICAgLy8gQ29uc3RydWN0cyBhIENDTGF5ZXJJbXBsIG9mIHRoZSBjb3JyZWN0
IHJ1bnRpbWUgdHlwZSBmb3IgdGhpcyBMYXllckNocm9taXVtIHR5cGUuCi0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOwogICAgIGludCBtX2xh
eWVySWQ7CiAKIHByaXZhdGU6CkBAIC0yOTMsNiArMjkyLDU4IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX3BhZ2VTY2FsZURpcnR5OwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBj
bGFzcyBTZXJpYWxpemFibGVMYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewor
cHVibGljOgorICAgIGV4cGxpY2l0IFNlcmlhbGl6YWJsZUxheWVyQ2hyb21pdW0oQ0NMYXllckRl
bGVnYXRlKiBkZWxlZ2F0ZSkgOiBMYXllckNocm9taXVtKGRlbGVnYXRlKSB7IH0KKworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVyPiBjcmVhdGVDQ0xheWVyKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBMYXllclR5cGU6OmNyZWF0ZShtX2xheWVySWQpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXIqIGxheWVyKQorICAgIHsKKyAgICAgICAg
cHVzaFByb3BlcnRpZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgfQorfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgorUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBMYXll
ckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6YWJsZUxheWVyQ2hyb21pdW08TGF5ZXJUeXBlPihkZWxl
Z2F0ZSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+Cit2b2lkIExheWVyQ2hy
b21pdW06OnB1c2hQcm9wZXJ0aWVzKGNvbnN0IExheWVyQ2hyb21pdW0qIGZyb20sIENDTGF5ZXIq
IHRvKQoreworICAgIExheWVyVHlwZSogbGF5ZXIgPSBzdGF0aWNfY2FzdDxMYXllclR5cGUqPih0
byk7CisKKyAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQoZnJvbS0+bV9hbmNob3JQb2ludCk7Cisg
ICAgbGF5ZXItPnNldEFuY2hvclBvaW50Wihmcm9tLT5tX2FuY2hvclBvaW50Wik7CisgICAgbGF5
ZXItPnNldEJhY2tncm91bmRDb2xvcihmcm9tLT5tX2JhY2tncm91bmRDb2xvcik7CisgICAgbGF5
ZXItPnNldEJvdW5kcyhmcm9tLT5tX2JvdW5kcyk7CisgICAgbGF5ZXItPnNldENvbnRlbnRCb3Vu
ZHMoZnJvbS0+Y29udGVudEJvdW5kcygpKTsKKyAgICBsYXllci0+c2V0RGVidWdCb3JkZXJDb2xv
cihmcm9tLT5tX2RlYnVnQm9yZGVyQ29sb3IpOworICAgIGxheWVyLT5zZXREZWJ1Z0JvcmRlcldp
ZHRoKGZyb20tPm1fZGVidWdCb3JkZXJXaWR0aCk7CisgICAgbGF5ZXItPnNldERvdWJsZVNpZGVk
KGZyb20tPm1fZG91YmxlU2lkZWQpOworICAgIGxheWVyLT5zZXREcmF3c0NvbnRlbnQoZnJvbS0+
ZHJhd3NDb250ZW50KCkpOworICAgIGxheWVyLT5zZXRJc05vbkNvbXBvc2l0ZWRDb250ZW50KGZy
b20tPm1faXNOb25Db21wb3NpdGVkQ29udGVudCk7CisgICAgbGF5ZXItPnNldE1hc2tzVG9Cb3Vu
ZHMoZnJvbS0+bV9tYXNrc1RvQm91bmRzKTsKKyAgICBsYXllci0+c2V0U2Nyb2xsYWJsZShmcm9t
LT5tX3Njcm9sbGFibGUpOworICAgIGxheWVyLT5zZXROYW1lKGZyb20tPm1fbmFtZSk7CisgICAg
bGF5ZXItPnNldE9wYXF1ZShmcm9tLT5tX29wYXF1ZSk7CisgICAgbGF5ZXItPnNldE9wYWNpdHko
ZnJvbS0+bV9vcGFjaXR5KTsKKyAgICBsYXllci0+c2V0UG9zaXRpb24oZnJvbS0+bV9wb3NpdGlv
bik7CisgICAgbGF5ZXItPnNldFByZXNlcnZlczNEKGZyb20tPnByZXNlcnZlczNEKCkpOworICAg
IGxheWVyLT5zZXRTY3JvbGxQb3NpdGlvbihmcm9tLT5tX3Njcm9sbFBvc2l0aW9uKTsKKyAgICBs
YXllci0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0oZnJvbS0+bV9zdWJsYXllclRyYW5zZm9ybSk7Cisg
ICAgbGF5ZXItPnNldFRyYW5zZm9ybShmcm9tLT5tX3RyYW5zZm9ybSk7CisgICAgbGF5ZXItPnNl
dFVwZGF0ZVJlY3QoZnJvbS0+bV91cGRhdGVSZWN0KTsKKworICAgIGxheWVyLT5zZXRTY3JvbGxE
ZWx0YShsYXllci0+c2Nyb2xsRGVsdGEoKSAtIGxheWVyLT5zZW50U2Nyb2xsRGVsdGEoKSk7Cisg
ICAgbGF5ZXItPnNldFNlbnRTY3JvbGxEZWx0YShJbnRTaXplKCkpOworfQorCiB2b2lkIHNvcnRM
YXllcnMoVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+OjppdGVyYXRvciwgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+OjppdGVyYXRvciwgdm9pZCopOwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDJiYjAxNDZhZDUzMTRjYWQ4YzVmNzhkY2EwMWRh
ZDE1ZGVmZWJlMDAuLjdjODJhYzU1MmFkZTRhNjQ5YWUzNjY4NjY5NTVhNTZhNDI2Mzk3YmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC00NCw2ICs0NCw3IEBACiAjaW5j
bHVkZSAiY2MvQ0NIZWFkc1VwRGlzcGxheS5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1BsdWdpbkxheWVySW1wbC5oIgorI2luY2x1ZGUgImNj
L0NDVGlsZWRMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdp
bkxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZTNjNWM0OGY3OTIwZmVlYzcwOGU0
ZGFjN2FlZjY0ZTIzZThhYWYwMC4uMTk3YTNlNjIzYWRlOTIzZmI1Yjc4NDg3ZjI4ZmFmMjY4MThi
YTIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTMxLDE2ICszMSw5
IEBACiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSAi
Y2MvQ0NQbHVnaW5MYXllckltcGwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVm
UHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IFBsdWdpbkxheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xh
eWVyRGVsZWdhdGUqIGRlbGVnYXRlKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2lu
TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkpOwotfQotCiBQbHVnaW5MYXllckNocm9taXVtOjpQbHVn
aW5MYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgOiBMYXllckNo
cm9taXVtKGRlbGVnYXRlKQogICAgICwgbV90ZXh0dXJlSWQoMCkKQEAgLTYzLDExICs1Niw2IEBA
IHZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCogcmVuZGVyZXJDCiAgICAgbV9kaXJ0eVJlY3QgPSBGbG9hdFJlY3QoKTsK
IH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gUGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
Q0NMYXllckltcGwoKQotewotICAgIHJldHVybiBDQ1BsdWdpbkxheWVySW1wbDo6Y3JlYXRlKG1f
bGF5ZXJJZCk7Ci19Ci0KIHZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZUlkKHVu
c2lnbmVkIGlkKQogewogICAgIG1fdGV4dHVyZUlkID0gaWQ7CkBAIC05OSwxNyArODcsNiBAQCB1
aW50MzJfdCBQbHVnaW5MYXllckNocm9taXVtOjpnZXRJT1N1cmZhY2VJZCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1faW9TdXJmYWNlSWQ7CiB9CiAKLXZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6cHVz
aFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCi17Ci0gICAgTGF5ZXJDaHJvbWl1bTo6
cHVzaFByb3BlcnRpZXNUbyhsYXllcik7Ci0KLSAgICBDQ1BsdWdpbkxheWVySW1wbCogcGx1Z2lu
TGF5ZXIgPSBzdGF0aWNfY2FzdDxDQ1BsdWdpbkxheWVySW1wbCo+KGxheWVyKTsKLSAgICBwbHVn
aW5MYXllci0+c2V0VGV4dHVyZUlkKG1fdGV4dHVyZUlkKTsKLSAgICBwbHVnaW5MYXllci0+c2V0
RmxpcHBlZChtX2ZsaXBwZWQpOwotICAgIHBsdWdpbkxheWVyLT5zZXRVVlJlY3QobV91dlJlY3Qp
OwotICAgIHBsdWdpbkxheWVyLT5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKG1faW9TdXJmYWNlV2lk
dGgsIG1faW9TdXJmYWNlSGVpZ2h0LCBtX2lvU3VyZmFjZUlkKTsKLX0KLQogdm9pZCBQbHVnaW5M
YXllckNocm9taXVtOjppbnZhbGlkYXRlUmVjdChjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCkK
IHsKICAgICBzZXROZWVkc0Rpc3BsYXlSZWN0KGRpcnR5UmVjdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXll
ckNocm9taXVtLmgKaW5kZXggMGYyZjRiZTdmNDZiNzhiNmU4MWIzMzIyZjdhYzNhNDcyMmFkNjVm
MC4uY2I1NmU3YTE2MDBlYTc1MmQxNjdlZDYyMjI2NDVjMmJjNDkyMTUxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Bs
dWdpbkxheWVyQ2hyb21pdW0uaApAQCAtMzYsMTAgKzM2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIC8vIEEgTGF5ZXIgY29udGFpbmluZyBhIHRoZSByZW5kZXJlZCBvdXRwdXQgb2YgYSBwbHVn
aW4gaW5zdGFuY2UuCiBjbGFzcyBQbHVnaW5MYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hy
b21pdW0gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21p
dW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqID0gMCk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVy
Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgUGFzc1JlZlB0cjxQ
bHVnaW5MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDApOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIHZvaWQgcHVzaFByb3BlcnRpZXMoUGx1
Z2luTGF5ZXJDaHJvbWl1bSosIENDTGF5ZXIqKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxD
Q0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXIm
KTsKIAogICAgIC8vIENvZGUgcGF0aCBmb3IgcGx1Z2lucyB3aGljaCBzdXBwbHkgdGhlaXIgb3du
IHRleHR1cmUgSUQuCiAgICAgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKTsK
QEAgLTUzLDggKzUzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SU9TdXJmYWNlUHJvcGVydGll
cyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVpbnQzMl90IGlvU3VyZmFjZUlkKTsKICAgICB1aW50
MzJfdCBnZXRJT1N1cmZhY2VJZCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHB1c2hQcm9w
ZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKLQogICAgIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3Qg
RmxvYXRSZWN0JiBkaXJ0eVJlY3QpOwogCiBwcm90ZWN0ZWQ6CkBAIC03MCw2ICs2OCwzOSBAQCBw
cml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2RpcnR5UmVjdDsKIH07CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIExheWVyVHlwZT4gY2xhc3MgU2VyaWFsaXphYmxlUGx1Z2luTGF5ZXJDaHJvbWl1bSA6IHB1
YmxpYyBQbHVnaW5MYXllckNocm9taXVtIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTZXJpYWxp
emFibGVQbHVnaW5MYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpIDogUGx1
Z2luTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkgeyB9CisKKyAgICBQYXNzUmVmUHRyPENDTGF5ZXI+
IGNyZWF0ZUNDTGF5ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIExheWVyVHlwZTo6Y3JlYXRl
KG1fbGF5ZXJJZCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8o
Q0NMYXllciogbGF5ZXIpCisgICAgeworICAgICAgICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVy
dGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICAgICAgcHVzaFByb3BlcnRpZXM8TGF5
ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgTGF5
ZXJUeXBlPgorUGFzc1JlZlB0cjxQbHVnaW5MYXllckNocm9taXVtPiBQbHVnaW5MYXllckNocm9t
aXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNlcmlhbGl6YWJsZVBsdWdpbkxheWVyQ2hyb21pdW08TGF5ZXJUeXBlPihkZWxl
Z2F0ZSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+Cit2b2lkIFBsdWdpbkxh
eWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzKFBsdWdpbkxheWVyQ2hyb21pdW0qIGZyb20sIEND
TGF5ZXIqIHRvKQoreworICAgIExheWVyVHlwZSogbGF5ZXIgPSBzdGF0aWNfY2FzdDxMYXllclR5
cGUqPih0byk7CisKKyAgICBsYXllci0+c2V0VGV4dHVyZUlkKGZyb20tPm1fdGV4dHVyZUlkKTsK
KyAgICBsYXllci0+c2V0RmxpcHBlZChmcm9tLT5tX2ZsaXBwZWQpOworICAgIGxheWVyLT5zZXRV
VlJlY3QoZnJvbS0+bV91dlJlY3QpOworICAgIGxheWVyLT5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVz
KGZyb20tPm1faW9TdXJmYWNlV2lkdGgsIGZyb20tPm1faW9TdXJmYWNlSGVpZ2h0LCBmcm9tLT5t
X2lvU3VyZmFjZUlkKTsKK30KKwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYWQyY2IxM2ZjNzMw
OTM2YTljOTRkNGE4ODQ1MTM4M2MzY2QyZjEzOC4uMDhiMzQyMmJlYmRlMmFkMTkwYjJmNDBhODhj
ZDBhN2VjMGFlYmYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0zNSw5
ICszNSw3IEBACiAjaW5jbHVkZSAiTWF0aEV4dHJhcy5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgog
I2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKLSNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2lu
Y2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKLSNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJ
bXBsLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIC8vIFN0YXJ0IHRpbGluZyB3
aGVuIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGEgbGF5ZXIgYXJlIGxhcmdlciB0aGFuIHRoaXMg
c2l6ZS4KQEAgLTUwLDIzICs0OCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgVXBkYXRhYmxlVGlsZSA6IHB1YmxpYyBDQ0xheWVyVGlsaW5n
RGF0YTo6VGlsZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVXBkYXRhYmxlVGlsZSk7Ci1w
dWJsaWM6Ci0gICAgZXhwbGljaXQgVXBkYXRhYmxlVGlsZShQYXNzT3duUHRyPExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQotCi0g
ICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4
dHVyZS5nZXQoKTsgfQotICAgIE1hbmFnZWRUZXh0dXJlKiBtYW5hZ2VkVGV4dHVyZSgpIHsgcmV0
dXJuIG1fdGV4dHVyZS0+dGV4dHVyZSgpOyB9Ci0KLSAgICBib29sIGlzRGlydHkoKSBjb25zdCB7
IHJldHVybiAhbV9kaXJ0eVJlY3QuaXNFbXB0eSgpOyB9Ci0gICAgdm9pZCBjbGVhckRpcnR5KCkg
eyBtX2RpcnR5UmVjdCA9IEludFJlY3QoKTsgfQotCi0gICAgSW50UmVjdCBtX2RpcnR5UmVjdDsK
LSAgICBJbnRSZWN0IG1fdXBkYXRlUmVjdDsKLXByaXZhdGU6Ci0gICAgT3duUHRyPExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU+IG1fdGV4dHVyZTsKLX07Ci0KIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6VGlsZWRMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgOiBM
YXllckNocm9taXVtKGRlbGVnYXRlKQogICAgICwgbV90ZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX0VOVU0pCkBAIC04MiwxMSArNjMsNiBAQCBUaWxlZExheWVyQ2hyb21p
dW06On5UaWxlZExheWVyQ2hyb21pdW0oKQogewogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBs
PiBUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKLXsKLSAgICByZXR1cm4g
Q0NUaWxlZExheWVySW1wbDo6Y3JlYXRlKGlkKCkpOwotfQotCiB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiB7CiAgICAgTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJl
c291cmNlcygpOwpAQCAtMjQ5LDI5ICsyMjUsNiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
c2V0SXNNYXNrKGJvb2wgaXNNYXNrKQogICAgIHNldFRpbGluZ09wdGlvbihpc01hc2sgPyBOZXZl
clRpbGUgOiBBdXRvVGlsZSk7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKLXsKLSAgICBMYXllckNocm9taXVtOjpwdXNo
UHJvcGVydGllc1RvKGxheWVyKTsKLQotICAgIENDVGlsZWRMYXllckltcGwqIHRpbGVkTGF5ZXIg
PSBzdGF0aWNfY2FzdDxDQ1RpbGVkTGF5ZXJJbXBsKj4obGF5ZXIpOwotCi0gICAgdGlsZWRMYXll
ci0+c2V0U2tpcHNEcmF3KG1fc2tpcHNEcmF3KTsKLSAgICB0aWxlZExheWVyLT5zZXRDb250ZW50
c1N3aXp6bGVkKG1fc2FtcGxlZFRleGVsRm9ybWF0ICE9IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNh
bXBsZWRUZXhlbEZvcm1hdFJHQkEpOwotICAgIHRpbGVkTGF5ZXItPnNldFRpbGluZ0RhdGEoKm1f
dGlsZXIpOwotCi0gICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVyLT50
aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgaW50IGkgPSBpdGVyLT5maXJzdC5maXJz
dDsKLSAgICAgICAgaW50IGogPSBpdGVyLT5maXJzdC5zZWNvbmQ7Ci0gICAgICAgIFVwZGF0YWJs
ZVRpbGUqIHRpbGUgPSBzdGF0aWNfY2FzdDxVcGRhdGFibGVUaWxlKj4oaXRlci0+c2Vjb25kLmdl
dCgpKTsKLSAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGls
ZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgaWYgKHRpbGUtPmlzRGlydHkoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgIHRpbGVkTGF5ZXItPnN5bmNUZXh0dXJlSWQoaSwgaiwgdGlsZS0+bWFuYWdlZFRleHR1
cmUoKS0+dGV4dHVyZUlkKCkpOwotICAgIH0KLX0KLQogVGV4dHVyZU1hbmFnZXIqIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6dGV4dHVyZU1hbmFnZXIoKSBjb25zdAogewogICAgIGlmICghbGF5ZXJUcmVl
SG9zdCgpKQpAQCAtNDQzLDYgKzM5Niw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAgIG1fc2tpcHNJZGxlUGFp
bnQgPSBmYWxzZTsKICAgICBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJlY3QoKTsK
ICAgICBtX3BhaW50UmVjdCA9IEludFJlY3QoKTsKKyAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJl
Y3QoKTsKIAogICAgIHVwZGF0ZUJvdW5kcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5o
CmluZGV4IGYwYWIwNTdlZmYyMzA2Mjc3MTUzM2QwN2Q4NzQyMGMzNThhZjVjZjQuLmU4MTFhNjI4
OGIyMDEzN2RmZjhmYzllN2JlMWM1ZmIyMGJhZjA0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oCkBAIC0yOSwyNSArMjksMzkgQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJl
VXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUaWxpbmdEYXRhLmgiCi0jaW5jbHVkZSAi
Y2MvQ0NUaWxlZExheWVySW1wbC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIExh
eWVyVGV4dHVyZVVwZGF0ZXI7Ci1jbGFzcyBVcGRhdGFibGVUaWxlOworY2xhc3MgVXBkYXRhYmxl
VGlsZSA6IHB1YmxpYyBDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZSB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoVXBkYXRhYmxlVGlsZSk7CitwdWJsaWM6CisgICAgZXhwbGljaXQgVXBkYXRhYmxl
VGlsZShQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IHRleHR1cmUpIDog
bV90ZXh0dXJlKHRleHR1cmUpIHsgfQorCisgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorICAgIE1hbmFnZWRUZXh0
dXJlKiBtYW5hZ2VkVGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS0+dGV4dHVyZSgpOyB9CisK
KyAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiAhbV9kaXJ0eVJlY3QuaXNFbXB0eSgp
OyB9CisgICAgdm9pZCBjbGVhckRpcnR5KCkgeyBtX2RpcnR5UmVjdCA9IEludFJlY3QoKTsgfQor
CisgICAgSW50UmVjdCBtX2RpcnR5UmVjdDsKKyAgICBJbnRSZWN0IG1fdXBkYXRlUmVjdDsKK3By
aXZhdGU6CisgICAgT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IG1fdGV4dHVy
ZTsKK307CiAKIGNsYXNzIFRpbGVkTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVt
IHsKIHB1YmxpYzoKICAgICBlbnVtIFRpbGluZ09wdGlvbiB7IEFsd2F5c1RpbGUsIE5ldmVyVGls
ZSwgQXV0b1RpbGUgfTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGlj
IHZvaWQgcHVzaFByb3BlcnRpZXMoY29uc3QgVGlsZWRMYXllckNocm9taXVtKiwgQ0NMYXllciop
OworCiAgICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVy
ZVVwZGF0ZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpOwogCi0gICAgdmly
dHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKLQogICAgIHZpcnR1YWwg
Ym9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50
c1NjYWxlKCkgY29uc3Q7CiAKQEAgLTkzLDggKzEwNyw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0OwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsK
LQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCopOwog
CiAgICAgdm9pZCBjcmVhdGVUaWxlcklmTmVlZGVkKCk7CkBAIC0xMjIsNiArMTM0LDI4IEBAIHBy
aXZhdGU6CiAgICAgT3duUHRyPENDTGF5ZXJUaWxpbmdEYXRhPiBtX3RpbGVyOwogfTsKIAordGVt
cGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzKGNvbnN0IFRpbGVkTGF5ZXJDaHJvbWl1bSogZnJvbSwgQ0NMYXllciogdG8pCit7
CisgICAgTGF5ZXJUeXBlKiBsYXllciA9IHN0YXRpY19jYXN0PExheWVyVHlwZSo+KHRvKTsKKwor
ICAgIGxheWVyLT5zZXRTa2lwc0RyYXcoZnJvbS0+bV9za2lwc0RyYXcpOworICAgIGxheWVyLT5z
ZXRDb250ZW50c1N3aXp6bGVkKGZyb20tPm1fc2FtcGxlZFRleGVsRm9ybWF0ICE9IExheWVyVGV4
dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEpOworICAgIGxheWVyLT5zZXRUaWxp
bmdEYXRhKCooZnJvbS0+bV90aWxlcikpOworCisgICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6
VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGZyb20tPm1fdGlsZXItPnRpbGVzKCkuYmVn
aW4oKTsgaXRlciAhPSBmcm9tLT5tX3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKKyAg
ICAgICAgaW50IGkgPSBpdGVyLT5maXJzdC5maXJzdDsKKyAgICAgICAgaW50IGogPSBpdGVyLT5m
aXJzdC5zZWNvbmQ7CisgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSBzdGF0aWNfY2FzdDxV
cGRhdGFibGVUaWxlKj4oaXRlci0+c2Vjb25kLmdldCgpKTsKKyAgICAgICAgaWYgKCF0aWxlLT5t
YW5hZ2VkVGV4dHVyZSgpLT5pc1ZhbGlkKGZyb20tPm1fdGlsZXItPnRpbGVTaXplKCksIGZyb20t
Pm1fdGV4dHVyZUZvcm1hdCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHRp
bGUtPmlzRGlydHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGxheWVyLT5z
eW5jVGV4dHVyZUlkKGksIGosIHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnRleHR1cmVJZCgpKTsK
KyAgICB9Cit9CisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Ry
ZWVTeW5jaHJvbml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVHJlZVN5bmNocm9uaXplci5jcHAKaW5kZXggZDBmZDBjZTUyM2Q2Mzg4NGJlOTMyZTFi
ZDQxNjU4MmYyNTc2MmU0MC4uNGQ5Y2UxODBhMGJlZjkxNjZjNjJiMTA5NmYzY2E4OTVlYjk4NTI2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VHJlZVN5bmNocm9uaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5jcHAKQEAgLTMzLDYzICszMyw3MSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgVHJlZVN5bmNocm9uaXplcjo6YWRkQ0NMYXllcklt
cGxzVG9NYXBSZWN1cnNpdmUoQ0NMYXllckltcGxNYXAmIG1hcCwgQ0NMYXllckltcGwqIGNjTGF5
ZXJJbXBsKQordGVtcGxhdGU8dHlwZW5hbWUgQ0NMYXllclR5cGU+Cit2b2lkIFRyZWVTeW5jaHJv
bml6ZXI6OmFkZENDTGF5ZXJzVG9NYXBSZWN1cnNpdmUoQ0NMYXllck1hcCYgbWFwLCBDQ0xheWVy
VHlwZSogY2NMYXllcikKIHsKLSAgICBtYXAuc2V0KGNjTGF5ZXJJbXBsLT5pZCgpLCBjY0xheWVy
SW1wbCk7CisgICAgbWFwLnNldChjY0xheWVyLT5pZCgpLCBjY0xheWVyKTsKIAotICAgIGNvbnN0
IFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4mIGNoaWxkcmVuID0gY2NMYXllckltcGwtPmNo
aWxkcmVuKCk7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDQ0xheWVyVHlwZT4gPiYgY2hpbGRy
ZW4gPSBjY0xheWVyLT5jaGlsZHJlbigpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hp
bGRyZW4uc2l6ZSgpOyArK2kpCi0gICAgICAgIGFkZENDTGF5ZXJJbXBsc1RvTWFwUmVjdXJzaXZl
KG1hcCwgY2hpbGRyZW5baV0uZ2V0KCkpOworICAgICAgICBhZGRDQ0xheWVyc1RvTWFwUmVjdXJz
aXZlPENDTGF5ZXJUeXBlPihtYXAsIGNoaWxkcmVuW2ldLmdldCgpKTsKIAotICAgIGlmIChDQ0xh
eWVySW1wbCogbWFza0xheWVyID0gY2NMYXllckltcGwtPm1hc2tMYXllcigpKQotICAgICAgICBh
ZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vyc2l2ZShtYXAsIG1hc2tMYXllcik7CisgICAgaWYgKEND
TGF5ZXJUeXBlKiBtYXNrTGF5ZXIgPSBjY0xheWVyLT5tYXNrTGF5ZXIoKSkKKyAgICAgICAgYWRk
Q0NMYXllcnNUb01hcFJlY3Vyc2l2ZTxDQ0xheWVyVHlwZT4obWFwLCBtYXNrTGF5ZXIpOwogCi0g
ICAgaWYgKENDTGF5ZXJJbXBsKiByZXBsaWNhTGF5ZXIgPSBjY0xheWVySW1wbC0+cmVwbGljYUxh
eWVyKCkpCi0gICAgICAgIGFkZENDTGF5ZXJJbXBsc1RvTWFwUmVjdXJzaXZlKG1hcCwgcmVwbGlj
YUxheWVyKTsKKyAgICBpZiAoQ0NMYXllclR5cGUqIHJlcGxpY2FMYXllciA9IGNjTGF5ZXItPnJl
cGxpY2FMYXllcigpKQorICAgICAgICBhZGRDQ0xheWVyc1RvTWFwUmVjdXJzaXZlPENDTGF5ZXJU
eXBlPihtYXAsIHJlcGxpY2FMYXllcik7CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IFRy
ZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShMYXllckNocm9taXVtKiBs
YXllciwgQ0NMYXllckltcGxNYXAmIG1hcCkKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwg
dHlwZW5hbWUgQ0NMYXllclR5cGU+CitQYXNzUmVmUHRyPENDTGF5ZXJUeXBlPiBUcmVlU3luY2hy
b25pemVyOjpzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUoTGF5ZXJUeXBlKiBsYXllciwgQ0NMYXll
ck1hcCYgbWFwKQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2NMYXllckltcGw7Ci0gICAg
Q0NMYXllckltcGxNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobGF5ZXItPmlkKCkpOworICAg
IFJlZlB0cjxDQ0xheWVyVHlwZT4gY2NMYXllcjsKKyAgICBDQ0xheWVyTWFwOjppdGVyYXRvciBp
dCA9IG1hcC5maW5kKGxheWVyLT5pZCgpKTsKICAgICBpZiAoaXQgIT0gbWFwLmVuZCgpKSB7Ci0g
ICAgICAgIGNjTGF5ZXJJbXBsID0gaXQtPnNlY29uZDsgLy8gV2UgYWxyZWFkeSBoYXZlIGFuIGVu
dHJ5IGZvciB0aGlzLCB3ZSBqdXN0IG5lZWQgdG8gcmVwYXJlbnQgaXQuCi0gICAgICAgIGNjTGF5
ZXJJbXBsLT5jbGVhckNoaWxkTGlzdCgpOworICAgICAgICBjY0xheWVyID0gc3RhdGljX3BvaW50
ZXJfY2FzdDxDQ0xheWVyVHlwZSwgQ0NMYXllcj4oaXQtPnNlY29uZCk7IC8vIFdlIGFscmVhZHkg
aGF2ZSBhbiBlbnRyeSBmb3IgdGhpcywgd2UganVzdCBuZWVkIHRvIHJlcGFyZW50IGl0LgorICAg
ICAgICBjY0xheWVyLT5jbGVhckNoaWxkTGlzdCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGNj
TGF5ZXJJbXBsID0gbGF5ZXItPmNyZWF0ZUNDTGF5ZXJJbXBsKCk7Ci0gICAgICAgIG1hcC5zZXQo
bGF5ZXItPmlkKCksIGNjTGF5ZXJJbXBsKTsgLy8gQWRkIGl0IHRvIHRoZSBtYXAgc28gb3RoZXIg
bGF5ZXJzIHJlZmVyZW5jaW5nIHRoaXMgb25lIGNhbiBwaWNrIGl0IHVwLgorICAgICAgICBjY0xh
eWVyID0gc3RhdGljX3BvaW50ZXJfY2FzdDxDQ0xheWVyVHlwZSwgQ0NMYXllcj4obGF5ZXItPmNy
ZWF0ZUNDTGF5ZXIoKSk7CisgICAgICAgIG1hcC5zZXQobGF5ZXItPmlkKCksIGNjTGF5ZXIpOyAv
LyBBZGQgaXQgdG8gdGhlIG1hcCBzbyBvdGhlciBsYXllcnMgcmVmZXJlbmNpbmcgdGhpcyBvbmUg
Y2FuIHBpY2sgaXQgdXAuCiAgICAgfQogCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+JiBjaGlsZHJlbiA9IGxheWVyLT5jaGlsZHJlbigpOworICAgIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8TGF5ZXJUeXBlPiA+JiBjaGlsZHJlbiA9IGxheWVyLT5jaGlsZHJlbigpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kpCi0gICAgICAgIGNj
TGF5ZXJJbXBsLT5hZGRDaGlsZChzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUoY2hpbGRyZW5baV0u
Z2V0KCksIG1hcCkpOworICAgICAgICBjY0xheWVyLT5hZGRDaGlsZChzeW5jaHJvbml6ZVRyZWVS
ZWN1cnNpdmU8TGF5ZXJUeXBlLCBDQ0xheWVyVHlwZT4oY2hpbGRyZW5baV0uZ2V0KCksIG1hcCkp
OwogCi0gICAgaWYgKExheWVyQ2hyb21pdW0qIG1hc2tMYXllciA9IGxheWVyLT5tYXNrTGF5ZXIo
KSkKLSAgICAgICAgY2NMYXllckltcGwtPnNldE1hc2tMYXllcihzeW5jaHJvbml6ZVRyZWVSZWN1
cnNpdmUobWFza0xheWVyLCBtYXApKTsKKyAgICBpZiAoTGF5ZXJUeXBlKiBtYXNrTGF5ZXIgPSBs
YXllci0+bWFza0xheWVyKCkpCisgICAgICAgIGNjTGF5ZXItPnNldE1hc2tMYXllcihzeW5jaHJv
bml6ZVRyZWVSZWN1cnNpdmU8TGF5ZXJUeXBlLCBDQ0xheWVyVHlwZT4obWFza0xheWVyLCBtYXAp
KTsKICAgICBlbHNlCi0gICAgICAgIGNjTGF5ZXJJbXBsLT5zZXRNYXNrTGF5ZXIoMCk7CisgICAg
ICAgIGNjTGF5ZXItPnNldE1hc2tMYXllcigwKTsKIAotICAgIGlmIChMYXllckNocm9taXVtKiBy
ZXBsaWNhTGF5ZXIgPSBsYXllci0+cmVwbGljYUxheWVyKCkpCi0gICAgICAgIGNjTGF5ZXJJbXBs
LT5zZXRSZXBsaWNhTGF5ZXIoc3luY2hyb25pemVUcmVlUmVjdXJzaXZlKHJlcGxpY2FMYXllciwg
bWFwKSk7CisgICAgaWYgKExheWVyVHlwZSogcmVwbGljYUxheWVyID0gbGF5ZXItPnJlcGxpY2FM
YXllcigpKQorICAgICAgICBjY0xheWVyLT5zZXRSZXBsaWNhTGF5ZXIoc3luY2hyb25pemVUcmVl
UmVjdXJzaXZlPExheWVyVHlwZSwgQ0NMYXllclR5cGU+KHJlcGxpY2FMYXllciwgbWFwKSk7CiAg
ICAgZWxzZQotICAgICAgICBjY0xheWVySW1wbC0+c2V0UmVwbGljYUxheWVyKDApOworICAgICAg
ICBjY0xheWVyLT5zZXRSZXBsaWNhTGF5ZXIoMCk7CiAKLSAgICBsYXllci0+cHVzaFByb3BlcnRp
ZXNUbyhjY0xheWVySW1wbC5nZXQoKSk7Ci0gICAgcmV0dXJuIGNjTGF5ZXJJbXBsLnJlbGVhc2Uo
KTsKKyAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhjY0xheWVyLmdldCgpKTsKKyAgICByZXR1
cm4gY2NMYXllci5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IFRyZWVT
eW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMoTGF5ZXJDaHJvbWl1bSogbGF5ZXJDaHJvbWl1
bVJvb3QsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IHBycE9sZENDTGF5ZXJJbXBsUm9vdCkKK3Rl
bXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgQ0NMYXllclR5cGU+CitQYXNzUmVm
UHRyPENDTGF5ZXJUeXBlPiBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzSW50ZXJu
YWwoTGF5ZXJUeXBlKiBsYXllclJvb3QsIFBhc3NSZWZQdHI8Q0NMYXllclR5cGU+IHBycE9sZEND
TGF5ZXJSb290KQogewotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gb2xkQ0NMYXllckltcGxSb290
ID0gcHJwT2xkQ0NMYXllckltcGxSb290OwotICAgIC8vIEJ1aWxkIGEgbWFwIGZyb20gbGF5ZXIg
SURzIHRvIENDTGF5ZXJJbXBscyBzbyB3ZSBjYW4gcmV1c2UgbGF5ZXJzIGZyb20gdGhlIG9sZCB0
cmVlLgotICAgIENDTGF5ZXJJbXBsTWFwIG1hcDsKLSAgICBpZiAob2xkQ0NMYXllckltcGxSb290
KQotICAgICAgICBhZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vyc2l2ZShtYXAsIG9sZENDTGF5ZXJJ
bXBsUm9vdC5nZXQoKSk7CisgICAgUmVmUHRyPENDTGF5ZXJUeXBlPiBvbGRDQ0xheWVyUm9vdCA9
IHBycE9sZENDTGF5ZXJSb290OworICAgIC8vIEJ1aWxkIGEgbWFwIGZyb20gbGF5ZXIgSURzIHRv
IENDTGF5ZXJzIHNvIHdlIGNhbiByZXVzZSBsYXllcnMgZnJvbSB0aGUgb2xkIHRyZWUuCisgICAg
Q0NMYXllck1hcCBtYXA7CisgICAgaWYgKG9sZENDTGF5ZXJSb290KQorICAgICAgICBhZGRDQ0xh
eWVyc1RvTWFwUmVjdXJzaXZlPENDTGF5ZXJUeXBlPihtYXAsIG9sZENDTGF5ZXJSb290LmdldCgp
KTsKIAogICAgIC8vIFJlY3Vyc2l2ZWx5IGJ1aWxkIHRoZSBuZXcgbGF5ZXIgdHJlZS4KLSAgICBS
ZWZQdHI8Q0NMYXllckltcGw+IG5ld0NDTGF5ZXJJbXBsUm9vdCA9IHN5bmNocm9uaXplVHJlZVJl
Y3Vyc2l2ZShsYXllckNocm9taXVtUm9vdCwgbWFwKTsKKyAgICBSZWZQdHI8Q0NMYXllclR5cGU+
IG5ld0NDTGF5ZXJSb290ID0gc3luY2hyb25pemVUcmVlUmVjdXJzaXZlPExheWVyVHlwZSwgQ0NM
YXllclR5cGU+KGxheWVyUm9vdCwgbWFwKTsKIAotICAgIHJldHVybiBuZXdDQ0xheWVySW1wbFJv
b3QucmVsZWFzZSgpOworICAgIHJldHVybiBuZXdDQ0xheWVyUm9vdC5yZWxlYXNlKCk7Cit9CisK
K1Bhc3NSZWZQdHI8Q0NMYXllckltcGw+IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJl
ZXMoTGF5ZXJDaHJvbWl1bSogbGF5ZXJSb290LCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBvbGRD
Q0xheWVySW1wbFJvb3QpCit7CisgICAgcmV0dXJuIHN5bmNocm9uaXplVHJlZXNJbnRlcm5hbDxM
YXllckNocm9taXVtLCBDQ0xheWVySW1wbD4obGF5ZXJSb290LCBvbGRDQ0xheWVySW1wbFJvb3Qp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVyLmgKaW5k
ZXggYTRlNDk0MjE3Mzk1ZThkMmUxMjk2YmQ2NTY2NjJlMzJiMTE5YWNmZi4uZDViMDllZDk1Njdh
ZThjOTIzYmVlNTJlOWFjMWNiODU5ZGQ5MzJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuaApA
QCAtMzIsNiArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENDTGF5ZXI7
CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIExheWVyQ2hyb21pdW07CiAKQEAgLTQ1LDExICs0
NiwxNSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFRyZWVTeW5jaHJvbml6ZXIoKTsgLy8gTm90
IGluc3RhbnRpYWJsZS4KIAotICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxDQ0xheWVy
SW1wbD4gPiBDQ0xheWVySW1wbE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8
Q0NMYXllcj4gPiBDQ0xheWVyTWFwOwogCiAgICAgLy8gRGVjbGFyZWQgYXMgc3RhdGljIG1lbWJl
ciBmdW5jdGlvbnMgc28gdGhleSBjYW4gYWNjZXNzIGZ1bmN0aW9ucyBvbiBMYXllckNocm9taXVt
IGFzIGEgZnJpZW5kIGNsYXNzLgotICAgIHN0YXRpYyB2b2lkIGFkZENDTGF5ZXJJbXBsc1RvTWFw
UmVjdXJzaXZlKENDTGF5ZXJJbXBsTWFwJiwgQ0NMYXllckltcGwqKTsKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDQ0xheWVySW1wbD4gc3luY2hyb25pemVUcmVlUmVjdXJzaXZlKExheWVyQ2hyb21p
dW0qLCBDQ0xheWVySW1wbE1hcCYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENDTGF5ZXJUeXBl
PgorICAgIHN0YXRpYyB2b2lkIGFkZENDTGF5ZXJzVG9NYXBSZWN1cnNpdmUoQ0NMYXllck1hcCYs
IENDTGF5ZXJUeXBlKik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFt
ZSBDQ0xheWVyVHlwZT4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ0xheWVyVHlwZT4gc3luY2hy
b25pemVUcmVlUmVjdXJzaXZlKExheWVyVHlwZSosIENDTGF5ZXJNYXAmKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIENDTGF5ZXJUeXBlPgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENDTGF5ZXJUeXBlPiBzeW5jaHJvbml6ZVRyZWVzSW50ZXJuYWwoTGF5ZXJUeXBl
KiwgUGFzc1JlZlB0cjxDQ0xheWVyVHlwZT4pOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VmlkZW9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMGUwZmNiNjY1YjQwNDEzNDNk
M2RkMWNmYzRhZjgzMzhhYTY1MGI5Yy4uYWMxNDA5ZTQzNTg2ZTE4YzgxM2E0ZDA1MDc1MTY5Njdj
NTM0MzZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCkBAIC0zMiwxNiArMzIs
OSBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogI2luY2x1ZGUgIlZpZGVv
TGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgImNjL0NDVmlkZW9MYXllckltcGwuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlkZW9M
YXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0Zy
YW1lUHJvdmlkZXIqIHByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9M
YXllckNocm9taXVtKGRlbGVnYXRlLCBwcm92aWRlcikpOwotfQotCiBWaWRlb0xheWVyQ2hyb21p
dW06OlZpZGVvTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlLCBWaWRlb0Zy
YW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogICAgIDogTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkKICAg
ICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCkBAIC01MywxMSArNDYsNiBAQCBWaWRlb0xheWVyQ2hy
b21pdW06On5WaWRlb0xheWVyQ2hyb21pdW0oKQogewogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJ
bXBsPiBWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKLXsKLSAgICByZXR1
cm4gQ0NWaWRlb0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCwgbV9wcm92aWRlcik7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKaW5kZXggZDNiZWQyYjEwM2UxODg0
NDYzMzVjMjM0NWQ1ODI4NjdhYTI3ZTBjYy4uZjUwMzdiNGQ0NjFiYjlkZDI3NmI5ZWFjZTM1ZDY0
MGZhNTBlMDlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKQEAgLTQ0LDIwICs0NCw0
MCBAQCBjbGFzcyBWaWRlb0ZyYW1lUHJvdmlkZXI7CiAvLyBBIExheWVyIHRoYXQgY29udGFpbnMg
YSBWaWRlbyBlbGVtZW50LgogY2xhc3MgVmlkZW9MYXllckNocm9taXVtIDogcHVibGljIExheWVy
Q2hyb21pdW0gewogcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3Rh
dGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRl
KiA9IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqID0gMCk7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgdm9pZCBwdXNoUHJvcGVydGll
cyhjb25zdCBWaWRlb0xheWVyQ2hyb21pdW0qLCBDQ0xheWVyKik7CiAKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqID0gMCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0Zy
YW1lUHJvdmlkZXIqID0gMCk7CiAgICAgdmlydHVhbCB+VmlkZW9MYXllckNocm9taXVtKCk7CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7
Ci0KLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgVmlkZW9MYXllckNocm9taXVtKENDTGF5ZXJE
ZWxlZ2F0ZSosIFZpZGVvRnJhbWVQcm92aWRlciopOwogCiAgICAgLy8gVGhpcyBwb2ludGVyIGlz
IG9ubHkgZm9yIHBhc3NpbmcgdG8gQ0NWaWRlb0xheWVySW1wbCdzIGNvbnN0cnVjdG9yLiBJdCBz
aG91bGQgbmV2ZXIgYmUgZGVyZWZlcmVuY2VkIGJ5IHRoaXMgY2xhc3MuCiAgICAgVmlkZW9GcmFt
ZVByb3ZpZGVyKiBtX3Byb3ZpZGVyOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBl
PiBjbGFzcyBTZXJpYWxpemFibGVWaWRlb0xheWVyQ2hyb21pdW0gOiBwdWJsaWMgVmlkZW9MYXll
ckNocm9taXVtIHsKK3B1YmxpYzoKKyAgICBTZXJpYWxpemFibGVWaWRlb0xheWVyQ2hyb21pdW0o
Q0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlcikg
OiBWaWRlb0xheWVyQ2hyb21pdW0oZGVsZWdhdGUsIHByb3ZpZGVyKSB7IH0KKworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxDQ0xheWVyPiBjcmVhdGVDQ0xheWVyKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBMYXllclR5cGU6OmNyZWF0ZShtX2xheWVySWQsIG1fcHJvdmlkZXIpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXIqIGxheWVyKQorICAgIHsK
KyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXM8TGF5ZXJUeXBlPih0aGlzLCBs
YXllcik7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgorUGFzc1Jl
ZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5
ZXJEZWxlZ2F0ZSogZGVsZWdhdGUsIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVWaWRlb0xheWVyQ2hyb21pdW08TGF5
ZXJUeXBlPihkZWxlZ2F0ZSwgcHJvdmlkZXIpKTsKK30KKwogfQogI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggNzA4NGQ2NmZmMWY3MWQzZWIyOWNkMDJlZmNhOWMyY2IyZDc5OTY4Ny4uNmZlYjc4ODJhM2Rl
MmM2NjM5ZTU4OTU4MjQ3MTJjMDAzNmU3ZjdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uY3BwCkBAIC00MiwxMSArNDIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NS
ZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xh
eWVyRGVsZWdhdGUqIGRlbGVnYXRlKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xM
YXllckNocm9taXVtKGRlbGVnYXRlKSk7Ci19Ci0KIFdlYkdMTGF5ZXJDaHJvbWl1bTo6V2ViR0xM
YXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgOiBDYW52YXNMYXll
ckNocm9taXVtKGRlbGVnYXRlKQogICAgICwgbV9oYXNBbHBoYSh0cnVlKQpAQCAtOTgsMTYgKzkz
LDYgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
R3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVyQ28KICAgICB9CiB9CiAKLXZvaWQgV2ViR0xMYXll
ckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKLXsKLSAgICBD
YW52YXNMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKGxheWVyKTsKLQotICAgIENDQ2Fu
dmFzTGF5ZXJJbXBsKiBjYW52YXNMYXllciA9IHN0YXRpY19jYXN0PENDQ2FudmFzTGF5ZXJJbXBs
Kj4obGF5ZXIpOwotICAgIGNhbnZhc0xheWVyLT5zZXRUZXh0dXJlSWQobV90ZXh0dXJlSWQpOwot
ICAgIGNhbnZhc0xheWVyLT5zZXRIYXNBbHBoYShtX2hhc0FscGhhKTsKLSAgICBjYW52YXNMYXll
ci0+c2V0UHJlbXVsdGlwbGllZEFscGhhKG1fcHJlbXVsdGlwbGllZEFscGhhKTsKLX0KLQogYm9v
bCBXZWJHTExheWVyQ2hyb21pdW06OnBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyKQogewogICAgIGlmIChtX3RleHR1cmVVcGRhdGVkIHx8ICFsYXll
clJlbmRlcmVyQ29udGV4dCgpIHx8ICFkcmF3c0NvbnRlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNo
cm9taXVtLmgKaW5kZXggZWI1MTQ2ZWI3MzkwMzBmYWJhYzQzOTYyN2U1YzdjMDQxNmY1YTU2MS4u
OGQ1NzQ2ZDVlMzEzYmZkMjk4ZTE2OTIzODliNmRkNDhjNWNiMTM4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmgKQEAgLTQ1LDcgKzQ1LDggQEAgY2xhc3MgV2ViR0xMYXllckNocm9taXVt
UmF0ZUxpbWl0VGFzazsKIC8vIEEgTGF5ZXIgY29udGFpbmluZyBhIFdlYkdMIGNhbnZhcwogY2xh
c3MgV2ViR0xMYXllckNocm9taXVtIDogcHVibGljIENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEND
TGF5ZXJEZWxlZ2F0ZSogPSAwKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IHN0
YXRpYyBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0
ZSopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIHZvaWQgcHVzaFBy
b3BlcnRpZXMoY29uc3QgV2ViR0xMYXllckNocm9taXVtKiBmcm9tLCBDQ0xheWVyKiB0byk7CiAK
ICAgICB2aXJ0dWFsIH5XZWJHTExheWVyQ2hyb21pdW0oKTsKIApAQCAtNTQsNyArNTUsNiBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBD
Q1RleHR1cmVVcGRhdGVyJik7Ci0gICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NM
YXllckltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudENoYW5nZWQoKTsKICAgICBib29s
IHBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKIApAQCAtNjIsOCAr
NjIsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXREcmF3aW5nQnVmZmVyKERyYXdpbmdCdWZm
ZXIqKTsKICAgICBEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9kcmF3aW5nQnVmZmVyOyB9Ci1wcml2YXRlOgorCitwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
V2ViR0xMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSopOworCitwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwogCiAgICAgR3JhcGhp
Y3NDb250ZXh0M0QqIGxheWVyUmVuZGVyZXJDb250ZXh0KCk7CkBAIC04MCw2ICs4MywzOCBAQCBw
cml2YXRlOgogICAgIERyYXdpbmdCdWZmZXIqIG1fZHJhd2luZ0J1ZmZlcjsKIH07CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIExheWVyVHlwZT4gY2xhc3MgU2VyaWFsaXphYmxlV2ViR0xMYXllckNocm9t
aXVtIDogcHVibGljIFdlYkdMTGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
U2VyaWFsaXphYmxlV2ViR0xMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUp
IDogV2ViR0xMYXllckNocm9taXVtKGRlbGVnYXRlKSB7IH0KKworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxDQ0xheWVyPiBjcmVhdGVDQ0xheWVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBMYXll
clR5cGU6OmNyZWF0ZShtX2xheWVySWQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNo
UHJvcGVydGllc1RvKENDTGF5ZXIqIGxheWVyKQorICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1
bTo6cHVzaFByb3BlcnRpZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgICAgIHB1c2hQ
cm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgIH0KK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIExheWVyVHlwZT4KK1Bhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBXZWJH
TExheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQoreworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXphYmxlV2ViR0xMYXllckNocm9taXVtPExheWVy
VHlwZT4oZGVsZWdhdGUpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgordm9p
ZCBXZWJHTExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzKGNvbnN0IFdlYkdMTGF5ZXJDaHJv
bWl1bSogZnJvbSwgQ0NMYXllciogdG8pCit7CisgICAgTGF5ZXJUeXBlKiBsYXllciA9IHN0YXRp
Y19jYXN0PExheWVyVHlwZSo+KHRvKTsKKworICAgIGxheWVyLT5zZXRUZXh0dXJlSWQoZnJvbS0+
bV90ZXh0dXJlSWQpOworICAgIGxheWVyLT5zZXRIYXNBbHBoYShmcm9tLT5tX2hhc0FscGhhKTsK
KyAgICBsYXllci0+c2V0UHJlbXVsdGlwbGllZEFscGhhKGZyb20tPm1fcHJlbXVsdGlwbGllZEFs
cGhhKTsKK30KKwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTkxYWE2NmFlOTZhNWM3NzdiODFiMTQ4NGM5ZTA0
ZjRkOGI4OGM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllci5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKwor
I2luY2x1ZGUgImNjL0NDTGF5ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDQ0xheWVy
OjpDQ0xheWVyKCkKK3sKK30KKworQ0NMYXllcjo6fkNDTGF5ZXIoKQoreworfQorCit9CisKKyNl
bmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTg4OTJjNWI1NDEzZjhhN2FkY2E5YzQ1N2Y4MDk0ODAzNmEwYWQ2NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXIuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ0xheWVyX2gKKyNkZWZpbmUg
Q0NMYXllcl9oCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIENDTGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxDQ0xheWVyPiB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+Q0NMYXllcigpOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGlj
aXQgQ0NMYXllcigpOworfTsKKworfQorCisjZW5kaWYgLy8gQ0NMYXllcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuaAppbmRleCAyNmM3YTJmNGQ1ZWM1OTRmODdiY2M3NTMxMmM2OGIwN2QwODFkZjY5Li44
MDQzMmFkYzc0ZThkNjU5ZmYzOTJkZjkzODgxMjBkMDJkYzlmMjE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAi
VGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVk
ZSAiY2MvQ0NMYXllci5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzcy5oIgogI2luY2x1ZGUg
ImNjL0NDUmVuZGVyU3VyZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTQ0LDcg
KzQ1LDcgQEAgY2xhc3MgQ0NMYXllclNvcnRlcjsKIGNsYXNzIExheWVyQ2hyb21pdW07CiBjbGFz
cyBMYXllclJlbmRlcmVyQ2hyb21pdW07CiAKLWNsYXNzIENDTGF5ZXJJbXBsIDogcHVibGljIFJl
ZkNvdW50ZWQ8Q0NMYXllckltcGw+IHsKK2NsYXNzIENDTGF5ZXJJbXBsIDogcHVibGljIENDTGF5
ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGUo
aW50IGlkKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAppbmRleCAzN2Q0NTlkMTY5ZjMxMmU0ODEy
Y2QwMDRjZjJlYmFkODlhMmRmNDMwLi45YjI1YzgyN2U3YzhjNmIyYmU1M2NhNDA2ODViNThhOWJm
YjdlYTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L0ltYWdlQnVmZmVyU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAi
U2tHcHVEZXZpY2UuaCIKICNpbmNsdWRlICJTa2lhVXRpbHMuaCIKICNpbmNsdWRlICJXRUJQSW1h
Z2VFbmNvZGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NDYW52YXNMYXllckltcGwuaCIKIAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC04Nyw3ICs4OCw3IEBAIHN0YXRpYyBTa0Nh
bnZhcyogY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSW1hZ2VC
dWZmZXJEYXRhKiBkCiAgICAgY2FudmFzLT5zZXREZXZpY2UobmV3IFNrR3B1RGV2aWNlKGdyLCB0
ZXh0dXJlLmdldCgpKSktPnVucmVmKCk7CiAgICAgZGF0YS0+bV9wbGF0Zm9ybUNvbnRleHQuc2V0
R3JhcGhpY3NDb250ZXh0M0QoY29udGV4dDNEKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCi0gICAgZGF0YS0+bV9wbGF0Zm9ybUxheWVyID0gQ2FudmFzMkRMYXllckNocm9taXVt
OjpjcmVhdGUoY29udGV4dDNELCBzaXplKTsKKyAgICBkYXRhLT5tX3BsYXRmb3JtTGF5ZXIgPSBD
YW52YXMyRExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0NhbnZhc0xheWVySW1wbD4oY29udGV4dDNE
LCBzaXplKTsKICAgICBkYXRhLT5tX3BsYXRmb3JtTGF5ZXItPnNldFRleHR1cmVJZCh0ZXh0dXJl
LmdldCgpLT5nZXRUZXh0dXJlSGFuZGxlKCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGNhbnZhczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXIuY3BwCmluZGV4
IDdiMzczMzNlNTYzMDhhMDY4Yjg0YzNhY2RlZWE1MzE5NWM5M2ZmZDIuLjYwZmQzYjc0YzRlMmEz
YzkwNGI4MzBhMTc2OTZkMGEwYzU2ZWM1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNvbnRlbnRMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViQ29udGVudExheWVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbnRlbnRMYXllci5oIgogCisjaW5jbHVk
ZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIldlYkNvbnRlbnRMYXllckltcGwuaCIKIApAQCAtMzMsNyArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViQ29udGVudExheWVyIFdlYkNvbnRlbnRMYXllcjo6
Y3JlYXRlKFdlYkNvbnRlbnRMYXllckNsaWVudCogY29udGVudENsaWVudCkKIHsKLSAgICByZXR1
cm4gV2ViQ29udGVudExheWVyKFdlYkNvbnRlbnRMYXllckltcGw6OmNyZWF0ZShjb250ZW50Q2xp
ZW50KSk7CisgICAgcmV0dXJuIFdlYkNvbnRlbnRMYXllcihXZWJDb250ZW50TGF5ZXJJbXBsOjpj
cmVhdGU8V2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbD4oY29udGVudENsaWVudCkpOwogfQogCiB2
b2lkIFdlYkNvbnRlbnRMYXllcjo6c2V0RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmNw
cAppbmRleCBlYTA4M2RlNTYyYTdlZmFhMGFmNGQ4ZWMyMmUyYTAwZGU3NWNmNjY2Li44NDE5YTAw
MDU3YTY2NGFiNTY2ZGVkYzNmZWFiNmFmMDE2ODRkZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmNwcApAQCAtMzgsMTEgKzM4LDYg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNz
UmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+IFdlYkNvbnRlbnRMYXllckltcGw6OmNyZWF0ZShX
ZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJDb250ZW50TGF5ZXJJbXBsKGNvbnRlbnRDbGllbnQpKTsKLX0KLQogV2ViQ29u
dGVudExheWVySW1wbDo6V2ViQ29udGVudExheWVySW1wbChXZWJDb250ZW50TGF5ZXJDbGllbnQq
IGNvbnRlbnRDbGllbnQpCiAgICAgOiBDb250ZW50TGF5ZXJDaHJvbWl1bSh0aGlzKQogICAgICwg
bV9jb250ZW50Q2xpZW50KGNvbnRlbnRDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmgKaW5kZXggYmMxZTI2MDA4OGI0Nzg5Mjg5ZTI1
ZWE0OWQ0MzgzYzdlMDIxN2I2Mi4uMjE2ZTM3YmUwNzY0NGM5NTdmYzAxMDM5MDZmZWE2NWVkNmRk
MGZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExh
eWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXll
ckltcGwuaApAQCAtMjksMTIgKzI5LDE2IEBACiAjaW5jbHVkZSAiQ29udGVudExheWVyQ2hyb21p
dW0uaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBDQ0xheWVyOworfTsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJDb250
ZW50TGF5ZXJDbGllbnQ7CiAKIGNsYXNzIFdlYkNvbnRlbnRMYXllckltcGwgOiBwdWJsaWMgV2Vi
Q29yZTo6Q29udGVudExheWVyQ2hyb21pdW0sIHB1YmxpYyBXZWJDb3JlOjpDQ0xheWVyRGVsZWdh
dGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+
IGNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGVudExheWVy
SW1wbD4gY3JlYXRlKFdlYkNvbnRlbnRMYXllckNsaWVudCogY29udGVudENsaWVudCk7CiAKICAg
ICB2b2lkIHNldERyYXdzQ29udGVudChib29sKTsKIApAQCAtNDcsNiArNTEsMjggQEAgcHJvdGVj
dGVkOgogICAgIGJvb2wgbV9kcmF3c0NvbnRlbnQ7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBM
YXllclR5cGU+IGNsYXNzIFNlcmlhbGl6YWJsZVdlYkNvbnRlbnRMYXllckltcGwgOiBwdWJsaWMg
V2ViQ29udGVudExheWVySW1wbCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2VyaWFsaXphYmxl
V2ViQ29udGVudExheWVySW1wbChXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQp
IDogV2ViQ29udGVudExheWVySW1wbChjb250ZW50Q2xpZW50KSB7IH0KKworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpDQ0xheWVyPiBjcmVhdGVDQ0xheWVyKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBMYXllclR5cGU6OmNyZWF0ZShtX2xheWVySWQpOworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKFdlYkNvcmU6OkNDTGF5ZXIqIGxheWVyKQorICAg
IHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXM8TGF5ZXJUeXBlPih0aGlz
LCBsYXllcik7CisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxM
YXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBM
YXllclR5cGU+CitQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+IFdlYkNvbnRlbnRMYXll
ckltcGw6OmNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVXZWJDb250ZW50TGF5ZXJJbXBsPExh
eWVyVHlwZT4oY29udGVudENsaWVudCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIFdlYkNvbnRlbnRMYXllckltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwCmluZGV4IGIzYTMzMmIy
YTIxNDJmNjczNWJjZTg0MjhmMDQyOWE1NjllZGM0NTQuLjZkZTMyOGZiYjBiNDlmNWQzYTQ5YjQ0
N2ZjZmQ4NTQ4ZWVjZjE1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAKQEAgLTI2LDE0ICsyNiwxNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkV4dGVybmFsVGV4dHVyZUxh
eWVyLmgiCiAKKyNpbmNsdWRlICJjYy9DQ1BsdWdpbkxheWVySW1wbC5oIgogI2luY2x1ZGUgInBs
YXRmb3JtL1dlYkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIldlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbC5oIgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVh
dGUoKQogewotICAgIHJldHVybiBXZWJFeHRlcm5hbFRleHR1cmVMYXllcihXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGw6OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpjcmVhdGU8Q0NQbHVnaW5MYXllcklt
cGw+KCkpOwogfQogCiB2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRUZXh0dXJlSWQo
dW5zaWduZWQgaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcAppbmRleCBjYWNjMzdkMDY0ZDM5Y2I0NDcx
ZmJhZTEyMWRjODIyYzQ0NDliYWZkLi41MjJmMmViMDEyYWRlMGFjMWRmN2Y3NzJmZTI4YTQ2NTFl
MmQxYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHAKQEAgLTMzLDExICszMyw2IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGw+IFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6Y3Jl
YXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbCgpKTsKLX0KLQogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGwoKQogICAgIDogUGx1Z2luTGF5ZXJDaHJvbWl1bSh0aGlzKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGwuaAppbmRleCAxYWQyYjgxOTk4ZjMwZGY2YzllY2EwOTNhMGMyZmY1YWJlZTkxY2Vh
Li5jMWJkYTRkYjljYmY3YTNhOTlkYjE4ODI3NDVmZjVmYWYzNDgzODQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllcklt
cGwuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OlBsdWdpbkxheWVyQ2hyb21p
dW0sIHB1YmxpYyBXZWJDb3JlOjpDQ0xheWVyRGVsZWdhdGUgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4gY3JlYXRlKCk7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgUGFzc1JlZlB0cjxXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGw+IGNyZWF0ZSgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJJbXBsKCk7CkBAIC00Miw2ICs0MiwyOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwogfTsKIAordGVtcGxhdGU8dHlwZW5h
bWUgTGF5ZXJUeXBlPiBjbGFzcyBTZXJpYWxpemFibGVXZWJFeHRlcm5hbFRleHR1cmVMYXllcklt
cGwgOiBwdWJsaWMgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBTZXJpYWxpemFibGVXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoKSA6IFdlYkV4
dGVybmFsVGV4dHVyZUxheWVySW1wbCgpIHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OkNDTGF5ZXI+IGNyZWF0ZUNDTGF5ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIExh
eWVyVHlwZTo6Y3JlYXRlKG1fbGF5ZXJJZCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHB1
c2hQcm9wZXJ0aWVzVG8oV2ViQ29yZTo6Q0NMYXllciogbGF5ZXIpCisgICAgeworICAgICAgICBX
ZWJDb3JlOjpMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxh
eWVyKTsKKyAgICAgICAgV2ViQ29yZTo6UGx1Z2luTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRp
ZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgTGF5ZXJUeXBlPgorUGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+IFdl
YkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNlcmlhbGl6YWJsZVdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDxMYXllclR5cGU+
KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAK
aW5kZXggZjMxYzVhOGMzZTMwMDkxYjRiNmVjNGQ2OGZlZDhhMjY3NjI0MTAxYS4uYjQ4ZjBmOTUw
MDA3OGFhYzUxNjFmODM1YWI2ZWNiYTA5ZDFhN2Q1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkxheWVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyLmgiCiAKKyNpbmNsdWRlICJjYy9DQ0xheWVySW1w
bC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJDb2xv
ci5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKQEAgLTc2LDcgKzc3LDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIFdlYkxheWVyIFdlYkxheWVyOjpjcmVhdGUoKQogewotICAgIHJldHVy
biBXZWJMYXllcihXZWJMYXllckltcGw6OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gV2ViTGF5ZXIo
V2ViTGF5ZXJJbXBsOjpjcmVhdGU8Q0NMYXllckltcGw+KCkpOwogfQogCiB2b2lkIFdlYkxheWVy
OjpyZXNldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
ckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcApp
bmRleCAwN2ExNjJkNjQxYWNiYjViOWE0MWFjZWUyNmQ3MTA2NTM2NjRkNjVhLi5lZTVhZWMyMDk4
ZjRlZGNmMWRiMzA0YjFlOWViNjdkZDEzMTdhMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVySW1wbC5jcHAKQEAgLTMwLDExICszMCw2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJMYXllcklt
cGw+IFdlYkxheWVySW1wbDo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YkxheWVySW1wbCgpKTsKLX0KLQogV2ViTGF5ZXJJbXBsOjpXZWJMYXllckltcGwoKQogICAgIDog
TGF5ZXJDaHJvbWl1bSh0aGlzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
ckltcGwuaAppbmRleCA2YmRhODNmNTQ3YzMxODUwYTBhN2IwOWMxNTMyYTI5ZTZiYzI4NWJkLi40
YjU2NTMyYzZhZGU0N2I4ZjY4ZGU4MzA2OWZhZGMyNTgzN2Y5MGEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViTGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OkxheWVyQ2hy
b21pdW0sIHB1YmxpYyBXZWJDb3JlOjpDQ0xheWVyRGVsZWdhdGUgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFdlYkxheWVySW1wbD4gY3JlYXRlKCk7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgUGFzc1JlZlB0cjxXZWJMYXllckltcGw+IGNyZWF0ZSgp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgV2ViTGF5ZXJJbXBsKCk7CkBAIC00MSw2ICs0MSwyNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcCk7CiB9OwogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBMYXllclR5cGU+IGNsYXNzIFNlcmlhbGl6YWJsZVdlYkxheWVySW1wbCA6IHB1
YmxpYyBXZWJMYXllckltcGwgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNlcmlhbGl6YWJsZVdl
YkxheWVySW1wbCgpIDogV2ViTGF5ZXJJbXBsKCkgeyB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6Q0NMYXllcj4gY3JlYXRlQ0NMYXllcigpCisgICAgeworICAgICAgICByZXR1
cm4gTGF5ZXJUeXBlOjpjcmVhdGUobV9sYXllcklkKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgcHVzaFByb3BlcnRpZXNUbyhXZWJDb3JlOjpDQ0xheWVyKiBsYXllcikKKyAgICB7CisgICAg
ICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIp
OworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK1Bhc3NSZWZQdHI8
V2ViTGF5ZXJJbXBsPiBXZWJMYXllckltcGw6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTZXJpYWxpemFibGVXZWJMYXllckltcGw8TGF5ZXJUeXBlPigpKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBXZWJMYXllckltcGxfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5j
cHAKaW5kZXggZGQyYmMyMjFlYTc1OGM3YzE0YmU1Y2JlYjRiMTJhYTkzM2E1M2E5NC4uZTNkZTZj
ZDI1YWJjZGY1YWViN2YyMTdhNjBjZDA0ZTQ5ZDY0ZDkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC05
LDYgKzksNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUg
IkF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJjYy9DQ1ZpZGVvTGF5ZXJJ
bXBsLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
ICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCkBAIC0xMjAsNyArMTIxLDcgQEAgdm9pZCBX
ZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKICAgICBtX21lZGlh
UGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgpOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKICAgICBpZiAoaGFzVmlkZW8oKSAmJiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5n
KCkgJiYgIW1fdmlkZW9MYXllcikgewotICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBWaWRlb0xheWVy
Q2hyb21pdW06OmNyZWF0ZSgwLCB0aGlzKTsKKyAgICAgICAgbV92aWRlb0xheWVyID0gVmlkZW9M
YXllckNocm9taXVtOjpjcmVhdGU8Q0NWaWRlb0xheWVySW1wbD4oMCwgdGhpcyk7CiAgICAgICAg
IG1fdmlkZW9MYXllci0+c2V0T3BhcXVlKG1fb3BhcXVlKTsKICAgICB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5j
cHAKaW5kZXggOTVlY2E4ODkxNTEwMWFjYjM5ODVjNWM1MzA1MTg5NWM1NjUwZWRmYy4uMGNkMTFk
OWMzOTZlNzc3NGZhZWY5YzI3ZDg2OTNkOWJkZDM3MzdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQbHVnaW5Db250YWlu
ZXJJbXBsLmgiCiAKKyNpbmNsdWRlICJjYy9DQ1BsdWdpbkxheWVySW1wbC5oIgogI2luY2x1ZGUg
IkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJQbHVn
aW5MYXllckNocm9taXVtLmgiCkBAIC01MzcsNyArNTM4LDcgQEAgV2ViUGx1Z2luQ29udGFpbmVy
SW1wbDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCog
ZWxlbWUKICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogICAgICwgbV93ZWJQbHVnaW4od2ViUGx1
Z2luKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAsIG1fcGxhdGZvcm1M
YXllcihQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGUoMCkpCisgICAgLCBtX3BsYXRmb3JtTGF5
ZXIoUGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDUGx1Z2luTGF5ZXJJbXBsPigwKSkKICNl
bmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAKaW5kZXggYTM1ZDk2NTIyNGZiZTZkZjc5OTQ2
ODcyNWY3ZGI2MDI2MDQ1MDQ0OC4uZTdmYWExMDczNmFlMmI5YmVhMzk4YmVmOWZmNTljYTk0MDU0
NWVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RDb21tb25UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCkBAIC02OSw2ICs2OSwxNCBAQCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCByZW1vdmUzRENvbXBvbmVudE9mTWF0cml4KGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtYXQpCiAgICAgcmV0dXJuIHJldDsKIH0KIAorY2xhc3MgTW9ja0xheWVyQ2hyb21p
dW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTW9ja0xh
eWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKKyAgICAgICAgOiBMYXllckNo
cm9taXVtKGRlbGVnYXRlKQorICAgIHsKKyAgICB9Cit9OworCiBjbGFzcyBMYXllckNocm9taXVt
V2l0aEZvcmNlZERyYXdzQ29udGVudCA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudChDQ0xheWVy
RGVsZWdhdGUqIGRlbGVnYXRlKQpAQCAtODYsOSArOTQsOSBAQCBURVNUKENDTGF5ZXJUcmVlSG9z
dENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JOb09wTGF5ZXIpCiAgICAgLy8gc2NyZWVu
U3BhY2VUcmFuc2Zvcm0sIGFuZCB0aGUgaGllcmFyY2h5IHBhc3NlZCBvbiB0byBjaGlsZHJlbgog
ICAgIC8vIGxheWVycyBzaG91bGQgYWxzbyBiZSBpZGVudGl0eSB0cmFuc2Zvcm1zLgogCi0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsK
LSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
MCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGdyYW5kQ2hpbGQgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IGFkb3B0UmVm
KG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNo
aWxkID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgw
KSk7CiAgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAgICAgcGFyZW50LT5hZGRD
aGlsZChjaGlsZCk7CiAgICAgY2hpbGQtPmFkZENoaWxkKGdyYW5kQ2hpbGQpOwpAQCAtMTE2LDcg
KzEyNCw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jt
c0ZvclNpbmdsZUxheWVyKQogICAgIC8vIGRpZmZlcmVudCBwb3NpdGlvbi4gV2hlbiB3ZSBpbml0
aWFsaXplIGxheWVycyBmb3IgdGVzdGluZyBoZXJlLCB3ZSBuZWVkIHRvIGluaXRpYWxpemUgdGhh
dCB1bmludHV0aXZlIHBvc2l0aW9uIHZhbHVlLgogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
aWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyID0gTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllciA9IGFk
b3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAgbGF5ZXItPmNyZWF0ZVJlbmRl
clN1cmZhY2UoKTsKIAogICAgIC8vIENhc2UgMTogc2V0dGluZyB0aGUgc3VibGF5ZXIgdHJhbnNm
b3JtIHNob3VsZCBub3QgYWZmZWN0IHRoaXMgbGF5ZXIncyBkcmF3IHRyYW5zZm9ybSBvciBzY3Jl
ZW4tc3BhY2UgdHJhbnNmb3JtLgpAQCAtMTgxLDkgKzE4OSw5IEBAIFRFU1QoQ0NMYXllclRyZWVI
b3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclNpbmdsZUxheWVyKQogVEVTVChDQ0xh
eWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yU2ltcGxlSGllcmFyY2h5
KQogewogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwot
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBncmFuZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBhZG9wdFJlZihuZXcg
TW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9
IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IGdyYW5kQ2hpbGQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwog
ICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwogICAgIHBhcmVudC0+YWRkQ2hpbGQo
Y2hpbGQpOwogICAgIGNoaWxkLT5hZGRDaGlsZChncmFuZENoaWxkKTsKQEAgLTI2Myw4ICsyNzEs
OCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JT
aW1wbGVIaWVyYXJjaHkpCiAKIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5
VHJhbnNmb3Jtc0ZvclNpbmdsZVJlbmRlclN1cmZhY2UpCiB7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IHBhcmVudCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgw
KSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gYWRvcHRSZWYobmV3IE1vY2tM
YXllckNocm9taXVtKDApKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQ+IGdyYW5kQ2hpbGQgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3Jj
ZWREcmF3c0NvbnRlbnQoMCkpOwogICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwog
ICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwpAQCAtMzE4LDEzICszMjYsMTMgQEAgVEVTVChD
Q0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yUmVuZGVyU3VyZmFj
ZUhpZXJhcmNoeSkKICAgICAvLyAgIC0gU2FuaXR5IGNoZWNrIG9uIHJlY3Vyc2lvbjogdmVyaWZ5
IHRyYW5zZm9ybXMgb2YgbGF5ZXJzIGRlc2NyaWJlZCB3LnIudC4gYSByZW5kZXIgc3VyZmFjZSB0
aGF0IGlzIGRlc2NyaWJlZCB3LnIudC4gYW4gYW5jZXN0b3IgcmVuZGVyIHN1cmZhY2UuCiAgICAg
Ly8gICAtIHZlcmlmeWluZyB0aGF0IGVhY2ggbGF5ZXIgaGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBj
b3JyZWN0IHJlbmRlclN1cmZhY2UgYW5kIHRhcmdldFJlbmRlclN1cmZhY2UgdmFsdWVzLgogCi0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgw
KTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVuZGVyU3VyZmFjZTEgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlbmRlclN1cmZhY2Uy
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBj
aGlsZE9mUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gY2hpbGRPZlJTMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGRPZlJTMiA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsK
LSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZE9mUm9vdCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gYWRvcHRS
ZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
cmVuZGVyU3VyZmFjZTEgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiByZW5kZXJTdXJmYWNlMiA9IGFkb3B0UmVmKG5ldyBNb2Nr
TGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkT2ZSb290
ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gY2hpbGRPZlJTMSA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7
CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkT2ZSUzIgPSBhZG9wdFJlZihuZXcgTW9j
a0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBncmFuZENoaWxk
T2ZSb290ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKICAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGdyYW5kQ2hpbGRPZlJTMSA9IGFk
b3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgwKSk7CiAgICAg
UmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBncmFuZENoaWxkT2ZS
UzIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoMCkp
OwogICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwpAQCAtNDU0LDggKzQ2Miw4IEBA
IFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclJlbmRl
clN1cmZhY2VIaWVyYXJjaHkpCiAKIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVy
aWZ5UmVuZGVyU3VyZmFjZUxpc3RGb3JDbGlwTGF5ZXIpCiB7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gcmVuZGVyU3VyZmFjZTEgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Cisg
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJD
aHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlbmRlclN1cmZhY2UxID0g
YWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGNoaWxkID0gYWRvcHRSZWYobmV3IExheWVyQ2hy
b21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KDApKTsKICAgICByZW5kZXJTdXJmYWNlMS0+c2V0
T3BhY2l0eSgwLjkpOwogCkBAIC00ODMsOCArNDkxLDggQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RD
b21tb25UZXN0LCB2ZXJpZnlSZW5kZXJTdXJmYWNlTGlzdEZvckNsaXBMYXllcikKIAogVEVTVChD
Q0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlSZW5kZXJTdXJmYWNlTGlzdEZvclRyYW5z
cGFyZW50Q2hpbGQpCiB7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVuZGVyU3Vy
ZmFjZTEgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IHBhcmVudCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IHJlbmRlclN1cmZhY2UxID0gYWRvcHRSZWYobmV3IE1vY2tMYXll
ckNocm9taXVtKDApKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQ+IGNoaWxkID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50KDApKTsKICAgICByZW5kZXJTdXJmYWNlMS0+c2V0T3BhY2l0eSgwKTsKIApAQCAtNTI2
LDEwICs1MzQsMTAgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlDbGlw
UmVjdEN1bGxzUmVuZGVyU3VyZmFjZXMpCiAgICAgLy8KIAogICAgIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJl
bnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiBncmFuZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBncmVhdEdyYW5kQ2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7
CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5
ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gYWRvcHRS
ZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
Z3JhbmRDaGlsZCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IGdyZWF0R3JhbmRDaGlsZCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5
ZXJDaHJvbWl1bSgwKSk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50PiBsZWFmTm9kZTEgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQoMCkpOwogICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdz
Q29udGVudD4gbGVhZk5vZGUyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2Vk
RHJhd3NDb250ZW50KDApKTsKICAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwCmluZGV4IGFjNzc4MTM1NDNkYzAzMGNlNGQ3NDllMTM2ZWI1Y2FmMDJmY2IyMmMuLjFjM2Nh
Yjg1OTk5OGNkYjdhYjdjOGY2NWY0MTU3MDU2N2U3ZWJlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMzg5LDcg
KzM4OSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0VGVzdDo6ZG9CZWdpblRlc3QoKQogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9jbGllbnQgPSBNb2NrTGF5ZXJUcmVlSG9zdENs
aWVudDo6Y3JlYXRlKHRoaXMpOwogCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXll
ciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
cm9vdExheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigwKTsKICAgICBt
X2xheWVyVHJlZUhvc3QgPSBNb2NrTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKHRoaXMsIG1fY2xpZW50
LmdldCgpLCByb290TGF5ZXIsIG1fc2V0dGluZ3MpOwogICAgIEFTU0VSVF9UUlVFKG1fbGF5ZXJU
cmVlSG9zdCk7CiAgICAgcm9vdExheWVyLT5zZXRMYXllclRyZWVIb3N0KG1fbGF5ZXJUcmVlSG9z
dC5nZXQoKSk7CkBAIC05NTQsNiArOTU0LDE2IEBAIHB1YmxpYzoKICAgICAgICAgbV91cGRhdGVD
b3VudCsrOwogICAgIH0KIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVyPiBjcmVhdGVD
Q0xheWVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBDQ0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5
ZXJJZCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXll
ciogY2NMYXllcikKKyAgICB7CisgICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVz
PENDTGF5ZXJJbXBsPih0aGlzLCBjY0xheWVyKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoQ0NMYXllckRlbGVn
YXRlICpkZWxlZ2F0ZSkKICAgICAgICAgOiBDb250ZW50TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNo
cm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5
ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGYwYjVjNDExYjY1NmFlZGU3NTk1NzEwZTRkOGNmZDdk
MjRkYjUzM2MuLjA5YWE0NjViYTI1YzdhZGJlZWZlZTMxMzUwZTU1OWQyOTgzMmRhMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVt
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVy
Q2hyb21pdW1UZXN0LmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+
IGNhbnZhcyA9IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKG1haW5Db250ZXh0LmdldCgp
LCBzaXplKTsKKyAgICAgICAgUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gY2FudmFzID0g
Q2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGU8Q0NDYW52YXNMYXllckltcGw+KG1haW5Db250
ZXh0LmdldCgpLCBzaXplKTsKICAgICAgICAgY2FudmFzLT5zZXRJc0RyYXdhYmxlKHRydWUpOwog
ICAgICAgICBzZXRUZXh0dXJlTWFuYWdlcihjYW52YXMuZ2V0KCksIHRleHR1cmVNYW5hZ2VyLmdl
dCgpKTsKICAgICAgICAgY2FudmFzLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDMwMCkpOwpAQCAt
MTQzLDE2ICsxNDMsMTYgQEAgcHJvdGVjdGVkOgogICAgICAgICB7CiAgICAgICAgICAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQgc2NvcGVkSW1wbFRocmVhZDsKIAotICAgICAgICAgICAgUmVm
UHRyPENDTGF5ZXJJbXBsPiBsYXllckltcGwgPSBjYW52YXMtPmNyZWF0ZUNDTGF5ZXJJbXBsKCk7
Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIHN0YXRpY19jYXN0PENDQ2FudmFzTGF5ZXJJbXBs
Kj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOworICAgICAgICAgICAgUmVmUHRyPEND
TGF5ZXI+IGxheWVyID0gY2FudmFzLT5jcmVhdGVDQ0xheWVyKCk7CisgICAgICAgICAgICBFWFBF
Q1RfRVEoMHUsIHN0YXRpY19jYXN0PENDQ2FudmFzTGF5ZXJJbXBsKj4obGF5ZXIuZ2V0KCkpLT50
ZXh0dXJlSWQoKSk7CiAKICAgICAgICAgICAgIGNhbnZhcy0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhpbXBsQ29udGV4dC5nZXQoKSwgdXBkYXRlcik7Ci0gICAgICAgICAgICBjYW52YXMtPnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKKyAgICAgICAgICAgIGNhbnZhcy0+cHVz
aFByb3BlcnRpZXNUbyhsYXllci5nZXQoKSk7CiAKICAgICAgICAgICAgIGlmICh0aHJlYWRlZCkK
LSAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoZnJvbnRUZXh0dXJlSWQsIHN0YXRpY19jYXN0PEND
Q2FudmFzTGF5ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOworICAgICAg
ICAgICAgICAgIEVYUEVDVF9FUShmcm9udFRleHR1cmVJZCwgc3RhdGljX2Nhc3Q8Q0NDYW52YXNM
YXllckltcGwqPihsYXllci5nZXQoKSktPnRleHR1cmVJZCgpKTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoYmFja1RleHR1cmVJZCwgc3RhdGljX2Nhc3Q8Q0ND
YW52YXNMYXllckltcGwqPihsYXllckltcGwuZ2V0KCkpLT50ZXh0dXJlSWQoKSk7CisgICAgICAg
ICAgICAgICAgRVhQRUNUX0VRKGJhY2tUZXh0dXJlSWQsIHN0YXRpY19jYXN0PENDQ2FudmFzTGF5
ZXJJbXBsKj4obGF5ZXIuZ2V0KCkpLT50ZXh0dXJlSWQoKSk7CiAgICAgICAgIH0KICAgICAgICAg
Y2FudmFzLmNsZWFyKCk7CiAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xp
bWl0KDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNo
cm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21p
dW1UZXN0LmNwcAppbmRleCA3YmM0NDQyYTA2OTUwZDIwOTMxODFiMzliYjc0ZmNjODQyMjc2MjA0
Li45ZjJkNmE4NGJjMmIwZTY2ODI0Nzk3NGU4MjEyNTFkOWFmYjAzYzM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtODIs
NiArODIsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JikgeyB9CiB9OwogCitjbGFzcyBNb2NrTGF5ZXJDaHJvbWl1bSA6
IHB1YmxpYyBMYXllckNocm9taXVtIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBNb2NrTGF5ZXJD
aHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQorICAgICAgICA6IExheWVyQ2hyb21p
dW0oZGVsZWdhdGUpCisgICAgeworICAgIH0KK307CiAKIGNsYXNzIExheWVyQ2hyb21pdW1UZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogcHJvdGVjdGVkOgpAQCAtMTM0LDEzICsxNDEsMTMg
QEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBjcmVhdGVTaW1wbGVUZXN0VHJlZSgpCiAgICAgewot
ICAgICAgICBtX3BhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICAgICAgbV9j
aGlsZDEgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgICAgIG1fY2hpbGQyID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgICAgICBtX2NoaWxkMyA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgwKTsKLSAgICAgICAgbV9ncmFuZENoaWxkMSA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgwKTsKLSAgICAgICAgbV9ncmFuZENoaWxkMiA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsK
LSAgICAgICAgbV9ncmFuZENoaWxkMyA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICAg
ICAgbV9wYXJlbnQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgICAg
ICBtX2NoaWxkMSA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgICAg
IG1fY2hpbGQyID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICAgICAg
bV9jaGlsZDMgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgICAgICBt
X2dyYW5kQ2hpbGQxID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICAg
ICAgbV9ncmFuZENoaWxkMiA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7Cisg
ICAgICAgIG1fZ3JhbmRDaGlsZDMgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkp
OwogCiAgICAgICAgIEVYUEVDVF9DQUxMKCptX2xheWVyVHJlZUhvc3QsIHNldE5lZWRzQ29tbWl0
KCkpLlRpbWVzKEFueU51bWJlcigpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290
TGF5ZXIobV9wYXJlbnQpOwpAQCAtMTYzLDcgKzE3MCw3IEBAIHByb3RlY3RlZDoKIAogVEVTVF9G
KExheWVyQ2hyb21pdW1UZXN0LCBiYXNpY0NyZWF0ZUFuZERlc3Ryb3kpCiB7Ci0gICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IHRlc3RMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gdGVzdExheWVyID0gYWRvcHRSZWYobmV3IE1vY2tMYXll
ckNocm9taXVtKDApKTsKICAgICBBU1NFUlRfVFJVRSh0ZXN0TGF5ZXIpOwogCiAgICAgRVhQRUNU
X0NBTEwoKm1fbGF5ZXJUcmVlSG9zdCwgc2V0TmVlZHNDb21taXQoKSkuVGltZXMoMCk7CkBAIC0x
NzIsOCArMTc5LDggQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBiYXNpY0NyZWF0ZUFuZERl
c3Ryb3kpCiAKIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgYWRkQW5kUmVtb3ZlQ2hpbGQpCiB7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IGFkb3B0UmVmKG5l
dyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxk
ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKIAogICAgIC8vIFVwb24gY3Jl
YXRpb24sIGxheWVycyBzaG91bGQgbm90IGhhdmUgY2hpbGRyZW4gb3IgcGFyZW50LgogICAgIEFT
U0VSVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDApLCBwYXJlbnQtPmNoaWxkcmVuKCkuc2l6ZSgp
KTsKQEAgLTE5MywxMSArMjAwLDExIEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgYWRkQW5k
UmVtb3ZlQ2hpbGQpCiAKIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgaW5zZXJ0Q2hpbGQpCiB7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQxID0gTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMyA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQ0ID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJl
bnQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBjaGlsZDEgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwor
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVy
Q2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDMgPSBhZG9wdFJl
ZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBj
aGlsZDQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwogCiAgICAgcGFyZW50
LT5zZXRMYXllclRyZWVIb3N0KG1fbGF5ZXJUcmVlSG9zdC5nZXQoKSk7CiAKQEAgLTIzOSw5ICsy
NDYsOSBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGluc2VydENoaWxkKQogCiBURVNUX0Yo
TGF5ZXJDaHJvbWl1bVRlc3QsIGluc2VydENoaWxkUGFzdEVuZE9mTGlzdCkKIHsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDEgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMiA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gYWRvcHRSZWYobmV3IE1v
Y2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQxID0g
YWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gY2hpbGQyID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKIAogICAg
IEFTU0VSVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDApLCBwYXJlbnQtPmNoaWxkcmVuKCkuc2l6
ZSgpKTsKIApAQCAtMjYxLDkgKzI2OCw5IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgaW5z
ZXJ0Q2hpbGRQYXN0RW5kT2ZMaXN0KQogCiBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGluc2Vy
dFNhbWVDaGlsZFR3aWNlKQogewotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxk
MSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
Y2hpbGQyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiBwYXJlbnQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDEgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21p
dW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBhZG9wdFJlZihuZXcg
TW9ja0xheWVyQ2hyb21pdW0oMCkpOwogCiAgICAgcGFyZW50LT5zZXRMYXllclRyZWVIb3N0KG1f
bGF5ZXJUcmVlSG9zdC5nZXQoKSk7CiAKQEAgLTI5MCw3ICsyOTcsNyBAQCBURVNUX0YoTGF5ZXJD
aHJvbWl1bVRlc3QsIGluc2VydFNhbWVDaGlsZFR3aWNlKQogVEVTVF9GKExheWVyQ2hyb21pdW1U
ZXN0LCByZXBsYWNlQ2hpbGRXaXRoTmV3Q2hpbGQpCiB7CiAgICAgY3JlYXRlU2ltcGxlVGVzdFRy
ZWUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQ0ID0gTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDQgPSBhZG9wdFJlZihu
ZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwogCiAgICAgRVhQRUNUX0ZBTFNFKGNoaWxkNC0+cGFy
ZW50KCkpOwogCkBAIC0zMTAsOCArMzE3LDggQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBy
ZXBsYWNlQ2hpbGRXaXRoTmV3Q2hpbGRUaGF0SGFzT3RoZXJQYXJlbnQpCiAgICAgY3JlYXRlU2lt
cGxlVGVzdFRyZWUoKTsKIAogICAgIC8vIGNyZWF0ZSBhbm90aGVyIHNpbXBsZSB0cmVlIHdpdGgg
dGVzdExheWVyIGFuZCBjaGlsZDQuCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHRlc3RMYXll
ciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
Y2hpbGQ0ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiB0ZXN0TGF5ZXIgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hy
b21pdW0oMCkpOwogICAgIHRlc3RMYXllci0+YWRkQ2hpbGQoY2hpbGQ0KTsKICAgICBBU1NFUlRf
RVEoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSwgdGVzdExheWVyLT5jaGlsZHJlbigpLnNpemUoKSk7
CiAgICAgRVhQRUNUX0VRKGNoaWxkNCwgdGVzdExheWVyLT5jaGlsZHJlbigpWzBdKTsKQEAgLTM1
NSwxMSArMzYyLDExIEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgcmVtb3ZlQWxsQ2hpbGRy
ZW4pCiAKIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgc2V0Q2hpbGRyZW4pCiB7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IG9sZFBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsK
LSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbmV3UGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBvbGRQYXJlbnQgPSBhZG9wdFJlZihu
ZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBuZXdQ
YXJlbnQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwogCi0gICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IGNoaWxkMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwor
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDEgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVy
Q2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBhZG9wdFJl
ZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IG5ld0NoaWxkcmVuOwogICAgIG5ld0NoaWxkcmVuLmFwcGVuZChjaGlsZDEpOwpA
QCAtMzg5LDcgKzM5Niw3IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgZ2V0Um9vdExheWVy
QWZ0ZXJUcmVlTWFuaXB1bGF0aW9ucykKICAgICAvLyBGb3IgdGhpcyB0ZXN0IHdlIGRvbid0IGNh
cmUgYWJvdXQgc2V0TmVlZHNDb21taXQgY2FsbHMuCiAgICAgRVhQRUNUX0NBTEwoKm1fbGF5ZXJU
cmVlSG9zdCwgc2V0TmVlZHNDb21taXQoKSkuVGltZXMoQXRMZWFzdCgxKSk7CiAKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQ0ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hy
b21pdW0oMCkpOwogCiAgICAgRVhQRUNUX0VRKG1fcGFyZW50LmdldCgpLCBtX3BhcmVudC0+cm9v
dExheWVyKCkpOwogICAgIEVYUEVDVF9FUShtX3BhcmVudC5nZXQoKSwgbV9jaGlsZDEtPnJvb3RM
YXllcigpKTsKQEAgLTQ0Miw3ICs0NDksNyBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNo
ZWNrU2V0TmVlZHNEaXNwbGF5Q2F1c2VzQ29ycmVjdEJlaGF2aW9yKQogICAgIC8vICAgMS4gc2V0
cyBuZWVkc0Rpc3BsYXkgZmxhZyBhcHByb3ByaWF0ZWx5LgogICAgIC8vICAgMi4gaW5kaXJlY3Rs
eSBjYWxscyBzZXROZWVkc0NvbW1pdCwgZXhhY3RseSBvbmNlIGZvciBlYWNoIGNhbGwgdG8gc2V0
TmVlZHNEaXNwbGF5LgogCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHRlc3RMYXllciA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gdGVzdExh
eWVyID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKICAgICB0ZXN0TGF5ZXIt
PnNldExheWVyVHJlZUhvc3QobV9sYXllclRyZWVIb3N0LmdldCgpKTsKIAogICAgIEludFNpemUg
dGVzdEJvdW5kcyA9IEludFNpemUoNTAxLCA1MDgpOwpAQCAtNDU3LDcgKzQ2NCw3IEBAIFRFU1Rf
RihMYXllckNocm9taXVtVGVzdCwgY2hlY2tTZXROZWVkc0Rpc3BsYXlDYXVzZXNDb3JyZWN0QmVo
YXZpb3IpCiAKICAgICAvLyBUaGlzIGlzIGp1c3QgaW5pdGlhbGl6YXRpb24sIGJ1dCBzZXROZWVk
c0NvbW1pdCBiZWhhdmlvciBpcyB2ZXJpZmllZCBhbnl3YXkgdG8gYXZvaWQgd2FybmluZ3MuCiAg
ICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExh
eWVyLT5zZXRCb3VuZHModGVzdEJvdW5kcykpOwotICAgIHRlc3RMYXllciA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgwKTsKKyAgICB0ZXN0TGF5ZXIgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hy
b21pdW0oMCkpOwogICAgIHRlc3RMYXllci0+c2V0TGF5ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhv
c3QuZ2V0KCkpOwogICAgIEVYUEVDVF9GQUxTRSh0ZXN0TGF5ZXItPm5lZWRzRGlzcGxheSgpKTsK
IApAQCAtNDc2LDE0ICs0ODMsMTQgQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBjaGVja1Nl
dE5lZWRzRGlzcGxheUNhdXNlc0NvcnJlY3RCZWhhdmlvcikKICAgICBFWFBFQ1RfVFJVRSh0ZXN0
TGF5ZXItPm5lZWRzRGlzcGxheSgpKTsKIAogICAgIC8vIENhc2UgNDogTGF5ZXJDaHJvbWl1bSBz
aG91bGQgYWNjZXB0IGRpcnR5IHJlY3RzIHRoYXQgZ28gYmV5b25kIGl0cyBib3VuZHMuCi0gICAg
dGVzdExheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIHRlc3RMYXllciA9IGFk
b3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAgdGVzdExheWVyLT5zZXRMYXll
clRyZWVIb3N0KG1fbGF5ZXJUcmVlSG9zdC5nZXQoKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZ
X1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRCb3VuZHModGVzdEJv
dW5kcykpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9S
KDEsIHRlc3RMYXllci0+c2V0TmVlZHNEaXNwbGF5UmVjdChvdXRPZkJvdW5kc0RpcnR5UmVjdCkp
OwogICAgIEVYUEVDVF9UUlVFKHRlc3RMYXllci0+bmVlZHNEaXNwbGF5KCkpOwogCiAgICAgLy8g
Q2FzZSA1OiBzZXROZWVkc0Rpc3BsYXkoKSB3aXRob3V0IHRoZSBkaXJ0eSByZWN0IGFyZy4KLSAg
ICB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgdGVzdExheWVyID0g
YWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKICAgICB0ZXN0TGF5ZXItPnNldExh
eWVyVHJlZUhvc3QobV9sYXllclRyZWVIb3N0LmdldCgpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJ
RllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldEJvdW5kcyh0ZXN0
Qm91bmRzKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJ
T1IoMSwgdGVzdExheWVyLT5zZXROZWVkc0Rpc3BsYXkoKSk7CkBAIC00OTIsNyArNDk5LDcgQEAg
VEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBjaGVja1NldE5lZWRzRGlzcGxheUNhdXNlc0NvcnJl
Y3RCZWhhdmlvcikKIAogVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBjaGVja1NldE5lZWRzRGlz
cGxheVdpdGhOdWxsRGVsZWdhdGUpCiB7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHRlc3RM
YXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gdGVzdExheWVyID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKICAgICBJ
bnRTaXplIHRlc3RCb3VuZHMgPSBJbnRTaXplKDUwMSwgNTA4KTsKIAogICAgIEZsb2F0UmVjdCBk
aXJ0eSA9IEZsb2F0UmVjdCgxMC4wZiwgMTUuMGYsIDEuMGYsIDIuMGYpOwpAQCAtNTAwLDcgKzUw
Nyw3IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgY2hlY2tTZXROZWVkc0Rpc3BsYXlXaXRo
TnVsbERlbGVnYXRlKQogICAgIHRlc3RMYXllci0+c2V0Qm91bmRzKHRlc3RCb3VuZHMpOwogICAg
IEVYUEVDVF9UUlVFKHRlc3RMYXllci0+bmVlZHNEaXNwbGF5KCkpOwogCi0gICAgdGVzdExheWVy
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIHRlc3RMYXllciA9IGFkb3B0UmVmKG5l
dyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHRlc3RMYXllci0+bmVl
ZHNEaXNwbGF5KCkpOwogCiAgICAgdGVzdExheWVyLT5zZXROZWVkc0Rpc3BsYXlSZWN0KGRpcnR5
KTsKQEAgLTUwOSwxMCArNTE2LDEwIEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgY2hlY2tT
ZXROZWVkc0Rpc3BsYXlXaXRoTnVsbERlbGVnYXRlKQogCiBURVNUX0YoTGF5ZXJDaHJvbWl1bVRl
c3QsIGNoZWNrUHJvcGVydHlDaGFuZ2VDYXVzZXNDb3JyZWN0QmVoYXZpb3IpCiB7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IHRlc3RMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsK
KyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gdGVzdExheWVyID0gYWRvcHRSZWYobmV3IE1vY2tM
YXllckNocm9taXVtKDApKTsKICAgICB0ZXN0TGF5ZXItPnNldExheWVyVHJlZUhvc3QobV9sYXll
clRyZWVIb3N0LmdldCgpKTsKIAotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBkdW1teUxheWVy
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOyAvLyBqdXN0IGEgZHVtbXkgbGF5ZXIgZm9yIHRo
aXMgdGVzdCBjYXNlLgorICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBkdW1teUxheWVyID0gYWRv
cHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsgLy8ganVzdCBhIGR1bW15IGxheWVyIGZv
ciB0aGlzIHRlc3QgY2FzZS4KIAogICAgIC8vIHNhbml0eSBjaGVjayBvZiBpbml0aWFsIHRlc3Qg
Y29uZGl0aW9uCiAgICAgRVhQRUNUX0ZBTFNFKHRlc3RMYXllci0+bmVlZHNEaXNwbGF5KCkpOwpA
QCAtNjI1LDExICs2MzIsMTEgQEAgdm9pZCBhc3NlcnRMYXllclRyZWVIb3N0TWF0Y2hlc0ZvclN1
YnRyZWUoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIENDTGF5ZXJUcmVlSG9zdCoKIFRFU1QoTGF5ZXJD
aHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0LCBlbnRlcmluZ1RyZWUpCiB7CiAgICAgV2ViS2l0OjpX
ZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBw
YXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBtYXNrID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiByZXBsaWNhID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiByZXBsaWNhTWFzayA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsK
KyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gYWRvcHRSZWYobmV3IE1vY2tMYXll
ckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBhZG9wdFJl
ZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBt
YXNrID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gcmVwbGljYSA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7
CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2FNYXNrID0gYWRvcHRSZWYobmV3IE1v
Y2tMYXllckNocm9taXVtKDApKTsKIAogICAgIC8vIFNldCB1cCBhIGRldGFjaGVkIHRyZWUgb2Yg
bGF5ZXJzLiBUaGUgaG9zdCBwb2ludGVyIHNob3VsZCBiZSBuaWwgZm9yIHRoZXNlIGxheWVycy4K
ICAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKQEAgLTY1Nyw3ICs2NjQsNyBAQCBURVNUKExh
eWVyQ2hyb21pdW1MYXllclRyZWVIb3N0VGVzdCwgZW50ZXJpbmdUcmVlKQogVEVTVChMYXllckNo
cm9taXVtTGF5ZXJUcmVlSG9zdFRlc3QsIGFkZGluZ0xheWVyU3VidHJlZSkKIHsKICAgICBXZWJL
aXQ6OldlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gcGFyZW50ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKICAg
ICBSZWZQdHI8RmFrZUNDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdCA9IEZha2VDQ0xheWVy
VHJlZUhvc3Q6OmNyZWF0ZSgpOwogCiAgICAgbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHBh
cmVudC5nZXQoKSk7CkBAIC02NjUsMTYgKzY3MiwxNiBAQCBURVNUKExheWVyQ2hyb21pdW1MYXll
clRyZWVIb3N0VGVzdCwgYWRkaW5nTGF5ZXJTdWJ0cmVlKQogICAgIEVYUEVDVF9FUShwYXJlbnQt
PmxheWVyVHJlZUhvc3QoKSwgbGF5ZXJUcmVlSG9zdC5nZXQoKSk7CiAKICAgICAvLyBBZGRpbmcg
YSBzdWJ0cmVlIHRvIGEgbGF5ZXIgYWxyZWFkeSBhc3NvY2lhdGVkIHdpdGggYSBob3N0IHNob3Vs
ZCBzZXQgdGhlIGhvc3QgcG9pbnRlciBvbiBhbGwgbGF5ZXJzIGluIHRoYXQgc3VidHJlZS4KLSAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGdyYW5kQ2hpbGQgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gYWRvcHRSZWYobmV3
IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRD
aGlsZCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAgY2hpbGQtPmFk
ZENoaWxkKGdyYW5kQ2hpbGQpOwogCiAgICAgLy8gTWFza3MsIHJlcGxpY2FzLCBhbmQgcmVwbGlj
YSBtYXNrcyBzaG91bGQgcGljayB1cCB0aGUgbmV3IGhvc3QgdG9vLgotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBjaGlsZE1hc2sgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IGNoaWxkTWFzayA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJv
bWl1bSgwKSk7CiAgICAgY2hpbGQtPnNldE1hc2tMYXllcihjaGlsZE1hc2suZ2V0KCkpOwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZFJlcGxpY2EgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkUmVwbGljYSA9IGFkb3B0UmVm
KG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAgICAgY2hpbGQtPnNldFJlcGxpY2FMYXllcihj
aGlsZFJlcGxpY2EuZ2V0KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZFJlcGxp
Y2FNYXNrID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiBjaGlsZFJlcGxpY2FNYXNrID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDAp
KTsKICAgICBjaGlsZFJlcGxpY2EtPnNldE1hc2tMYXllcihjaGlsZFJlcGxpY2FNYXNrLmdldCgp
KTsKIAogICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwpAQCAtNjg4LDExICs2OTUsMTEgQEAg
VEVTVChMYXllckNocm9taXVtTGF5ZXJUcmVlSG9zdFRlc3QsIGFkZGluZ0xheWVyU3VidHJlZSkK
IFRFU1QoTGF5ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0LCBjaGFuZ2VIb3N0KQogewogICAg
IFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gbWFzayA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGljYSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsK
LSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGljYU1hc2sgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IGFkb3B0UmVmKG5l
dyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxk
ID0gYWRvcHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gbWFzayA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2EgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hy
b21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhTWFzayA9IGFkb3B0
UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CiAKICAgICAvLyBTYW1lIHNldHVwIGFzIHRo
ZSBwcmV2aW91cyB0ZXN0LgogICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwpAQCAtNzIxLDEx
ICs3MjgsMTEgQEAgVEVTVChMYXllckNocm9taXVtTGF5ZXJUcmVlSG9zdFRlc3QsIGNoYW5nZUhv
c3QpCiBURVNUKExheWVyQ2hyb21pdW1MYXllclRyZWVIb3N0VGVzdCwgY2hhbmdlSG9zdEluU3Vi
dHJlZSkKIHsKICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IGZpcnN0UGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBmaXJzdENoaWxkID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBzZWNvbmRQYXJlbnQgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHNlY29u
ZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiBzZWNvbmRHcmFuZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBmaXJzdFBhcmVudCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJD
aHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGZpcnN0Q2hpbGQgPSBhZG9w
dFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBzZWNvbmRQYXJlbnQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBzZWNvbmRDaGlsZCA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5
ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHNlY29uZEdyYW5kQ2hp
bGQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwogCiAgICAgLy8gRmlyc3Qg
cHV0IGFsbCBjaGlsZHJlbiB1bmRlciB0aGUgZmlyc3QgcGFyZW50IGFuZCBzZXQgdGhlIGZpcnN0
IGhvc3QuCiAgICAgZmlyc3RQYXJlbnQtPmFkZENoaWxkKGZpcnN0Q2hpbGQpOwpAQCAtNzU4LDEz
ICs3NjUsMTMgQEAgVEVTVChMYXllckNocm9taXVtTGF5ZXJUcmVlSG9zdFRlc3QsIGNoYW5nZUhv
c3RJblN1YnRyZWUpCiBURVNUKExheWVyQ2hyb21pdW1MYXllclRyZWVIb3N0VGVzdCwgcmVwbGFj
ZU1hc2tBbmRSZXBsaWNhTGF5ZXIpCiB7CiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjppbml0
aWFsaXplKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1hc2sgPSBMYXllckNo
cm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2EgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1hc2tD
aGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gcmVwbGljYUNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBtYXNrUmVwbGFjZW1lbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2FSZXBsYWNlbWVudCA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gYWRv
cHRSZWYobmV3IE1vY2tMYXllckNocm9taXVtKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gbWFzayA9IGFkb3B0UmVmKG5ldyBNb2NrTGF5ZXJDaHJvbWl1bSgwKSk7CisgICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IHJlcGxpY2EgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0o
MCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtYXNrQ2hpbGQgPSBhZG9wdFJlZihuZXcg
TW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNh
Q2hpbGQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBtYXNrUmVwbGFjZW1lbnQgPSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hy
b21pdW0oMCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhUmVwbGFjZW1lbnQg
PSBhZG9wdFJlZihuZXcgTW9ja0xheWVyQ2hyb21pdW0oMCkpOwogCiAgICAgcGFyZW50LT5zZXRN
YXNrTGF5ZXIobWFzay5nZXQoKSk7CiAgICAgcGFyZW50LT5zZXRSZXBsaWNhTGF5ZXIocmVwbGlj
YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA5M2UyZWU4YmViYWQ4NDUwZGRlZmVjNTE5ZWZh
YjYyZjcyYjBlYzBkLi43YWMyZTg5M2Q1YTdlNWM0ODU5ZmM0NGExZjliYWZhMjU0YTY2OWQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNo
cm9taXVtVGVzdC5jcHAKQEAgLTExMCw2ICsxMTAsMTcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1
cmVNYW5hZ2VyOyB9CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllcj4gY3JlYXRlQ0NM
YXllcigpCisgICAgeworICAgICAgICByZXR1cm4gQ0NUaWxlZExheWVySW1wbDo6Y3JlYXRlKG1f
bGF5ZXJJZCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NM
YXllciogbGF5ZXIpCisgICAgeworICAgICAgICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGll
czxDQ0xheWVySW1wbD4odGhpcywgbGF5ZXIpOworICAgICAgICBwdXNoUHJvcGVydGllczxDQ1Rp
bGVkTGF5ZXJJbXBsPih0aGlzLCBsYXllcik7CisgICAgfQorCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25p
emVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6
ZXJUZXN0LmNwcAppbmRleCBjYTgzODQ2YzIyYzZmMzZjODY5OTkyYWQyOTIzZGRkN2YzMTQwYzA5
Li5lNzZlZjI5MTE4ZGRlNTEzNmJjNWU4MjJiM2IzYmVkMGU5NzdmMGE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcApA
QCAtNjksMTggKzY5LDE5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfk1vY2tMYXllckNocm9t
aXVtKCkgeyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUND
TGF5ZXJJbXBsKCkKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllcj4gY3JlYXRlQ0NMYXll
cigpCiAgICAgewogICAgICAgICByZXR1cm4gTW9ja0NDTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXll
cklkKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVy
SW1wbCogY2NMYXllcikKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVy
KiBjY0xheWVyKQogICAgIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNU
byhjY0xheWVyKTsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXM8TW9ja0ND
TGF5ZXJJbXBsPih0aGlzLCBjY0xheWVyKTsKIAogICAgICAgICBNb2NrQ0NMYXllckltcGwqIG1v
Y2tDQ0xheWVyID0gc3RhdGljX2Nhc3Q8TW9ja0NDTGF5ZXJJbXBsKj4oY2NMYXllcik7CiAgICAg
ICAgIG1vY2tDQ0xheWVyLT5zZXRDQ0xheWVyRGVzdHJ1Y3Rpb25MaXN0KG1fY2NMYXllckRlc3Ry
dWN0aW9uTGlzdCk7CiAgICAgfQorCiBwcml2YXRlOgogICAgIE1vY2tMYXllckNocm9taXVtKFZl
Y3RvcjxpbnQ+KiBjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0KQogICAgICAgICA6IExheWVyQ2hyb21p
dW0oMCkKQEAgLTExOSw5ICsxMjAsOSBAQCB2b2lkIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKExh
eWVyQ2hyb21pdW0qIGxheWVyLCBDQ0xheWVySW1wbCogY2NMYXllcikKIFRFU1QoVHJlZVN5bmNo
cm9uaXplclRlc3QsIHN5bmNTaW1wbGVUcmVlRnJvbUVtcHR5KQogewogICAgIERlYnVnU2NvcGVk
U2V0SW1wbFRocmVhZCBpbXBsOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllclRyZWVS
b290ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIGxheWVyVHJlZVJvb3QtPmFkZENo
aWxkKExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKSk7Ci0gICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hp
bGQoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
bGF5ZXJUcmVlUm9vdCA9IE1vY2tMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CisgICAgbGF5ZXJU
cmVlUm9vdC0+YWRkQ2hpbGQoTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgwKSk7CisgICAgbGF5
ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgwKSk7CiAKICAg
ICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6
OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CiAKQEAgLTE1OCw5ICsx
NTksOSBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZVJldXNpbmdM
YXllcnMpCiBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUFuZFByb3Bl
cnRpZXMpCiB7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7Ci0gICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IGxheWVyVHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7
Ci0gICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApKTsK
LSAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChMYXllckNocm9taXVtOjpjcmVhdGUoMCkpOwor
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllclRyZWVSb290ID0gTW9ja0xheWVyQ2hyb21p
dW06OmNyZWF0ZSgwKTsKKyAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChNb2NrTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKDApKTsKKyAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChNb2NrTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKDApKTsKIAogICAgIC8vIFBpY2sgc29tZSByYW5kb20gcHJvcGVydGll
cyB0byBzZXQuIFRoZSB2YWx1ZXMgYXJlIG5vdCBpbXBvcnRhbnQsIHdlJ3JlIGp1c3QgdGVzdGlu
ZyB0aGF0IGF0IGxlYXN0IHNvbWUgcHJvcGVydGllcyBhcmUgbWFraW5nIGl0IHRocm91Z2guCiAg
ICAgRmxvYXRQb2ludCByb290UG9zaXRpb24gPSBGbG9hdFBvaW50KDIuMywgNy40KTsKQEAgLTI1
NCw3ICsyNTUsNyBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZVRo
ZW5EZXN0cm95KQogICAgIG9sZExheWVyVHJlZVJvb3QtPnJlbW92ZUFsbENoaWxkcmVuKCk7CiAK
ICAgICAvLyBTeW5jaHJvbml6ZSBhZ2Fpbi4gQWZ0ZXIgdGhlIHN5bmMgYWxsIENDTGF5ZXJJbXBs
cyBmcm9tIHRoZSBvbGQgdHJlZSBzaG91bGQgYmUgZGVsZXRlZC4KLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gbmV3TGF5ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbmV3TGF5ZXJUcmVlUm9vdCA9IE1vY2tMYXllckNocm9t
aXVtOjpjcmVhdGUoMCk7CiAgICAgY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6
c3luY2hyb25pemVUcmVlcyhuZXdMYXllclRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3Qu
cmVsZWFzZSgpKTsKICAgICBleHBlY3RUcmVlc0FyZUlkZW50aWNhbChuZXdMYXllclRyZWVSb290
LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOwogCkBAIC0yNjgsMjIgKzI2OSwyMiBAQCBU
RVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZVRoZW5EZXN0cm95KQogVEVT
VChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY01hc2tSZXBsaWNhQW5kUmVwbGljYU1hc2tMYXll
cnMpCiB7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IGxheWVyVHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7Ci0g
ICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApKTsKLSAg
ICBsYXllclRyZWVSb290LT5hZGRDaGlsZChMYXllckNocm9taXVtOjpjcmVhdGUoMCkpOwotICAg
IGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKExheWVyQ2hyb21pdW06OmNyZWF0ZSgwKSk7CisgICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyVHJlZVJvb3QgPSBNb2NrTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKDApOworICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKE1vY2tMYXllckNocm9taXVt
OjpjcmVhdGUoMCkpOworICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKE1vY2tMYXllckNocm9t
aXVtOjpjcmVhdGUoMCkpOworICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKE1vY2tMYXllckNo
cm9taXVtOjpjcmVhdGUoMCkpOwogCiAgICAgLy8gRmlyc3QgY2hpbGQgZ2V0cyBhIG1hc2sgbGF5
ZXIuCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1hc2tMYXllciA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgwKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbWFza0xheWVyID0gTW9ja0xh
eWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKICAgICBsYXllclRyZWVSb290LT5jaGlsZHJlbigpWzBd
LT5zZXRNYXNrTGF5ZXIobWFza0xheWVyLmdldCgpKTsKIAogICAgIC8vIFNlY29uZCBjaGlsZCBn
ZXRzIGEgcmVwbGljYSBsYXllci4KLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGljYUxh
eWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiByZXBsaWNhTGF5ZXIgPSBNb2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwogICAgIGxheWVy
VHJlZVJvb3QtPmNoaWxkcmVuKClbMV0tPnNldFJlcGxpY2FMYXllcihyZXBsaWNhTGF5ZXIuZ2V0
KCkpOwogCiAgICAgLy8gVGhpcmQgY2hpbGQgZ2V0cyBhIHJlcGxpY2EgbGF5ZXIgd2l0aCBhIG1h
c2sgbGF5ZXIuCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2FMYXllcldpdGhNYXNr
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBy
ZXBsaWNhTWFza0xheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiByZXBsaWNhTGF5ZXJXaXRoTWFzayA9IE1vY2tMYXllckNocm9taXVtOjpj
cmVhdGUoMCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2FNYXNrTGF5ZXIgPSBN
b2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOwogICAgIHJlcGxpY2FMYXllcldpdGhNYXNrLT5z
ZXRNYXNrTGF5ZXIocmVwbGljYU1hc2tMYXllci5nZXQoKSk7CiAgICAgbGF5ZXJUcmVlUm9vdC0+
Y2hpbGRyZW4oKVsyXS0+c2V0UmVwbGljYUxheWVyKHJlcGxpY2FMYXllcldpdGhNYXNrLmdldCgp
KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123572</attachid>
            <date>2012-01-23 10:21:10 -0800</date>
            <delta_ts>2012-02-11 18:34:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75272-20120123132108.patch</filename>
            <type>text/plain</type>
            <size>103607</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFiZGVjM2JkNzAwYmMz
YmVlODI4ZmFiOWM2YmY2YmNmMDJhN2YwYi4uNTQ4NWNjNjZlNGRkYmEwZjZmYTg0YTY1MWIyNjlj
OWNmMTUzMjJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTAxLTIzICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBS
ZS1mYWN0b3IgY29tcG9zaXRvciB0cmVlIHN5bmNocm9uaXphdGlvbiB0byBzdXBwb3J0IGJ1ZmZl
cmluZyBhbmQgc2VyaWFsaXphdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc1MjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVtcGxhdGl6ZSBDQ0xheWVySW1wbCB0cmVlIGNyZWF0aW9uIHNvIHRo
YXQgaXQncyBwb3NzaWJsZSB0bworICAgICAgICBzZXJpYWxpemUgb3IgYnVmZmVyIHRoZSBsYXll
ciB0cmVlIGluIGEgdGVtcG9yYXJ5IGRhdGEgc3RydWN0dXJlLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAo
V2ViQ29yZTo6U2VyaWFsaXphYmxlQ2FudmFzMkRMYXllckNocm9taXVtOjpTZXJpYWxpemFibGVD
YW52YXMyRExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlQ2Fu
dmFzMkRMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cmlhbGl6YWJsZUNhbnZhczJETGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVDb250ZW50TGF5ZXJD
aHJvbWl1bTo6U2VyaWFsaXphYmxlQ29udGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXphYmxlQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlQ29udGVudExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZl
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OnBsYXRmb3Jt
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06
OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZXJpYWxpemFibGVJbWFnZUxheWVyQ2hyb21pdW06OlNlcmlhbGl6YWJsZUlt
YWdlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVJbWFnZUxh
eWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXph
YmxlSW1hZ2VMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1
bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlTGF5ZXJD
aHJvbWl1bTo6U2VyaWFsaXphYmxlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemFibGVMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcmlhbGl6YWJsZUxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemFibGVQbHVnaW5MYXllckNocm9taXVtOjpTZXJpYWxpemFibGVQbHVn
aW5MYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZVBsdWdpbkxh
eWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXph
YmxlUGx1Z2luTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJD
b3JlOjpVcGRhdGFibGVUaWxlOjpVcGRhdGFibGVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlVw
ZGF0YWJsZVRpbGU6OnRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRhYmxlVGlsZTo6
bWFuYWdlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRhYmxlVGlsZTo6aXNEaXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGFibGVUaWxlOjpjb3B5QW5kQ2xlYXJEaXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTeW5jaHJvbml6ZXI6OmFkZENDTGF5ZXJzVG9NYXBS
ZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25p
emVUcmVlUmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTeW5jaHJvbml6ZXI6OnN5
bmNocm9uaXplVHJlZXNJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU3luY2hyb25p
emVyOjpzeW5jaHJvbml6ZVRyZWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UcmVlU3luY2hyb25pemVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6YWJsZVZpZGVvTGF5ZXJDaHJvbWl1bTo6U2VyaWFsaXphYmxlVmlkZW9MYXllckNocm9taXVt
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZVZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlQ0NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVWaWRlb0xheWVyQ2hy
b21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNo
cm9taXVtOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vV2ViR0xMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVX
ZWJHTExheWVyQ2hyb21pdW06OlNlcmlhbGl6YWJsZVdlYkdMTGF5ZXJDaHJvbWl1bSk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlV2ViR0xMYXllckNocm9taXVtOjpw
dXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3Bl
cnRpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXIu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwu
aC4KKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXI6OkNDTGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllcjo6fkNDTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJJbXBsLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVm
ZmVyU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyk6
CisKIDIwMTItMDEtMjMgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogSW5kZXhlZERCTW9kZWwgc2hvdWxkIGtlZXAgdHJhY2sg
b2YgcmVxdWVzdHMgc2VudCB0byB0aGUgYmFja2VuZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggYWRjZGU4OTYwNmQ5NTlmYThiMDVmZTJlZjYxZWYxMGE2ZTYzYjhhNy4uOWZjNmMxOTYw
MGZlOWM5MGZjYzVkNDg2ZWM2ZjAzODQ5YTIxYjFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMi0wMS0yMyAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gUmUtZmFjdG9yIGNvbXBvc2l0b3Ig
dHJlZSBzeW5jaHJvbml6YXRpb24gdG8gc3VwcG9ydCBidWZmZXJpbmcgYW5kIHNlcmlhbGl6YXRp
b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTI3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlbXBs
YXRpemUgQ0NMYXllckltcGwgdHJlZSBjcmVhdGlvbiBzbyB0aGF0IGl0J3MgcG9zc2libGUgdG8K
KyAgICAgICAgc2VyaWFsaXplIG9yIGJ1ZmZlciB0aGUgbGF5ZXIgdHJlZSBpbiBhIHRlbXBvcmFy
eSBkYXRhIHN0cnVjdHVyZS4KKworICAgICAgICAqIHNyYy9XZWJDb250ZW50TGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgICogc3Jj
L1dlYkNvbnRlbnRMYXllckltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJDb250ZW50TGF5ZXJJ
bXBsLmg6CisgICAgICAgIChXZWJLaXQ6OlNlcmlhbGl6YWJsZVdlYkNvbnRlbnRMYXllckltcGw6
OlNlcmlhbGl6YWJsZVdlYkNvbnRlbnRMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpTZXJp
YWxpemFibGVXZWJDb250ZW50TGF5ZXJJbXBsOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdl
YktpdDo6U2VyaWFsaXphYmxlV2ViQ29udGVudExheWVySW1wbDo6cHVzaFByb3BlcnRpZXNUbyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAg
ICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbC5jcHA6CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpTZXJpYWxpemFibGVXZWJFeHRlcm5hbFRleHR1
cmVMYXllckltcGw6OlNlcmlhbGl6YWJsZVdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCk6Cisg
ICAgICAgIChXZWJLaXQ6OlNlcmlhbGl6YWJsZVdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6
Y3JlYXRlQ0NMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlNlcmlhbGl6YWJsZVdlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbDo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBzcmMvV2ViTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKiBz
cmMvV2ViTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJJbXBsLmg6CisgICAg
ICAgIChXZWJLaXQ6OlNlcmlhbGl6YWJsZVdlYkxheWVySW1wbDo6U2VyaWFsaXphYmxlV2ViTGF5
ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U2VyaWFsaXphYmxlV2ViTGF5ZXJJbXBsOjpjcmVh
dGVDQ0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6U2VyaWFsaXphYmxlV2ViTGF5ZXJJbXBsOjpw
dXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpjcmVhdGUp
OgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OldlYlBsdWdpbkNvbnRhaW5lckltcGwpOgorICAgICAg
ICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAg
ICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRvQmVnaW5UZXN0KToKKyAgICAgICAgKFdU
Rjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZUNDTGF5ZXIp
OgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6
cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgICogdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVt
VGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW1UZXN0Ojpm
dWxsTGlmZWN5Y2xlVGVzdCk6CisgICAgICAgICogdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
OgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAo
V1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdU
Rjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgICog
dGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0xh
eWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0xheWVy
Q2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisK
IDIwMTItMDEtMjAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFBhZ2VBZ2VudC5vcGVuKCkgZG9zZW4ndCBiZWxvbmcgdG8gdGhl
IHByb3RvY29sLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGUyMWZiYjQ2ZjI0ZmRiODE2YjI0M2JiMTRi
MmM3NjMyNDI0ZjAzOTYuLjY3OTNhNGM5ODFjYzlmN2FjZjliOTc4YzA3NTIyNTZkZGRiMmY4N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTM2MzcsNiArMzYzNyw4IEBACiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRs
ZXIuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXMyRExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAppbmRleCAxNTA1YWRhYzI0M2Uw
NzY2NWQyZGRhYjI4ZjQ3MDNmZjhlZjViOTQzLi4yNDNkZGUwYmQzZGM0NzZmNjczNjBmZjgwMTgy
MGYxYzAxOWUwM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTM0LDcgKzM0LDYgQEAKIAogI2luY2x1ZGUgIkNhbnZhczJETGF5ZXJDaHJvbWl1bS5oIgogCi0j
aW5jbHVkZSAiY2MvQ0NDYW52YXNMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJl
ZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiRXh0
ZW5zaW9uczNEQ2hyb21pdW0uaCIKQEAgLTQ3LDExICs0Niw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJETGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXpl
JiBzaXplKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzMkRMYXllckNocm9taXVt
KGNvbnRleHQsIHNpemUpKTsKLX0KLQogQ2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExh
eWVyQ2hyb21pdW0oR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNp
emUpCiAgICAgOiBDYW52YXNMYXllckNocm9taXVtKCkKICAgICAsIG1fY29udGV4dChjb250ZXh0
KQpAQCAtMTQ4LDE3ICsxNDIsNiBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dAogICAgIEdMQyhj
b250ZXh0LCBjb250ZXh0LT5mbHVzaCgpKTsKIH0KIAotdm9pZCBDYW52YXMyRExheWVyQ2hyb21p
dW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQotewotICAgIENhbnZhc0xh
eWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwotCi0gICAgQ0NDYW52YXNMYXll
ckltcGwqIGNhbnZhc0xheWVyID0gc3RhdGljX2Nhc3Q8Q0NDYW52YXNMYXllckltcGwqPihsYXll
cik7Ci0gICAgaWYgKG1fdXNlRG91YmxlQnVmZmVyaW5nKQotICAgICAgICBjYW52YXNMYXllci0+
c2V0VGV4dHVyZUlkKG1fZnJvbnRUZXh0dXJlLT50ZXh0dXJlSWQoKSk7Ci0gICAgZWxzZQotICAg
ICAgICBjYW52YXNMYXllci0+c2V0VGV4dHVyZUlkKG1fYmFja1RleHR1cmVJZCk7Ci19Ci0KIHZv
aWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKQogewog
ICAgIGlmIChtX3VzZURvdWJsZUJ1ZmZlcmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9t
aXVtLmgKaW5kZXggODM2MTVhMWYyMjM1NjE2NDYyZWIxZjhkNDEyMmUxYWQ4ZTU4YzkyMi4uMzAw
YTBlNzcxMmZhZTljMzVmM2MyNDc5NDIyYmY0M2NkZTkxZjk2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmgKQEAgLTQ0LDcgKzQ0LDkgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0Q7CiAvLyBBIGxheWVyIGNvbnRhaW5pbmcgYW4gYWNjZWxlcmF0ZWQgMmQgY2FudmFzCiBjbGFz
cyBDYW52YXMyRExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBjcmVh
dGUoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+
IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFNpemUmKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBMYXllclR5cGU+IHZvaWQgcHVzaFByb3BlcnRpZXMoY29uc3QgQ2FudmFzMkRM
YXllckNocm9taXVtKiBmcm9tLCBDQ0xheWVyKiB0byk7CisKICAgICB2aXJ0dWFsIH5DYW52YXMy
RExheWVyQ2hyb21pdW0oKTsKIAogICAgIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkKTsKQEAg
LTU2LDEzICs1OCwxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVl
SG9zdChDQ0xheWVyVHJlZUhvc3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwogICAgIHZpcnR1YWwg
dm9pZCB1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51
cFJlc291cmNlcygpOwogCi1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIENhbnZhczJETGF5ZXJD
aHJvbWl1bShHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFNpemUmKTsKIAorcHJpdmF0ZToK
ICAgICAvLyBWaXNpYmxlIGZvciB0ZXN0aW5nIHNvIHdlIGNhbiBieXBhc3Mgc2V0TGF5ZXJUcmVl
SG9zdC4KICAgICBmcmllbmQgY2xhc3MgQ2FudmFzMkRMYXllckNocm9taXVtVGVzdDsKICAgICB2
b2lkIHNldFRleHR1cmVNYW5hZ2VyKFRleHR1cmVNYW5hZ2VyKik7CkBAIC03OCw2ICs4MCwzOSBA
QCBwcml2YXRlOgogICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV9mcm9udFRleHR1cmU7CiB9
OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IGNsYXNzIFNlcmlhbGl6YWJsZUNhbnZh
czJETGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXMyRExheWVyQ2hyb21pdW0geworcHVibGlj
OgorICAgIFNlcmlhbGl6YWJsZUNhbnZhczJETGF5ZXJDaHJvbWl1bShHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkgOiBDYW52YXMyRExheWVyQ2hyb21pdW0o
Y29udGV4dCwgc2l6ZSkgeyB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllcj4gY3Jl
YXRlQ0NMYXllcigpCisgICAgeworICAgICAgICByZXR1cm4gTGF5ZXJUeXBlOjpjcmVhdGUobV9s
YXllcklkKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVyKiBsYXllcikKKyAgICB7CisgICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVz
PExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgICAgICBwdXNoUHJvcGVydGllczxMYXllclR5
cGU+KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5
cGU+CitQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9t
aXVtOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNp
emUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVDYW52YXMyRExheWVy
Q2hyb21pdW08TGF5ZXJUeXBlPihjb250ZXh0LCBzaXplKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIExheWVyVHlwZT4KK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGll
cyhjb25zdCBDYW52YXMyRExheWVyQ2hyb21pdW0qIGZyb20sIENDTGF5ZXIqIHRvKQoreworICAg
IExheWVyVHlwZSogbGF5ZXIgPSBzdGF0aWNfY2FzdDxMYXllclR5cGUqPih0byk7CisKKyAgICBp
ZiAobV91c2VEb3VibGVCdWZmZXJpbmcpCisgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlSWQobV9m
cm9udFRleHR1cmUtPnRleHR1cmVJZCgpKTsKKyAgICBlbHNlCisgICAgICAgIGxheWVyLT5zZXRU
ZXh0dXJlSWQobV9iYWNrVGV4dHVyZUlkKTsKK30KKwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcAppbmRl
eCAxODFiYTRlNTgxMmNlODg3OGExNzkyMDI1OGY4ZWRlOGRmYjQ2MjFlLi4yMzQ3M2M4YWNlZjhj
MWJlMzAzZjQwZjExMWQxNjM0ZjJlMjU3Zjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9t
aXVtLmNwcApAQCAtMzQsNyArMzQsNiBAQAogCiAjaW5jbHVkZSAiQ2FudmFzTGF5ZXJDaHJvbWl1
bS5oIgogCi0jaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogCkBAIC00NSwx
MCArNDQsNSBAQCBDYW52YXNMYXllckNocm9taXVtOjpDYW52YXNMYXllckNocm9taXVtKCkKIHsK
IH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gQ2FudmFzTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
Q0NMYXllckltcGwoKQotewotICAgIHJldHVybiBDQ0NhbnZhc0xheWVySW1wbDo6Y3JlYXRlKG1f
bGF5ZXJJZCk7Ci19Ci0KIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXNMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmgKaW5kZXggOWU4Y2U3ZDhjYzgyYWE4ODNjMzZh
ODU4NjMwOTQ0OGYzMzYyMDI3MS4uMTc0NjM3MzBlZDNjZDM0NzEwNTM4N2RjMDBlNDQ3NTFiZDBj
ZWM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaApAQCAtNDAsOSArNDAsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEJhc2UgY2xhc3MgZm9yIFdlYkdMIGFuZCBhY2NlbGVy
YXRlZCAyZCBjYW52YXNlcy4KIGNsYXNzIENhbnZhc0xheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5
ZXJDaHJvbWl1bSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBs
PiBjcmVhdGVDQ0xheWVySW1wbCgpOwotCiBwcm90ZWN0ZWQ6CiAgICAgQ2FudmFzTGF5ZXJDaHJv
bWl1bSgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCA4NDAz
OTBlMDI3OTA4MjUyNmI0MWZiM2Q4NTdiMWY4NDVhMDE4YTY4Li4yNTI1YTA1MjBlODQ0Yzc2Mjlj
OTE0NDBjMjdlMDZlZmVmM2U1YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
Y3BwCkBAIC03MywxMSArNzMsNiBAQCBwcml2YXRlOgogICAgIENvbnRlbnRMYXllckRlbGVnYXRl
KiBtX2RlbGVnYXRlOwogfTsKIAotUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bT4gQ29u
dGVudExheWVyQ2hyb21pdW06OmNyZWF0ZShDb250ZW50TGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bShkZWxlZ2F0
ZSkpOwotfQotCiBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Q29udGVudExheWVyQ2hyb21pdW0oQ29u
dGVudExheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogVGlsZWRMYXllckNocm9taXVtKCkK
ICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
aAppbmRleCBjZmIwZmQ3YzkwNjdjMjE0MGRkMTNkMzU2ZmJlZjdkZmM5N2UzMmRlLi42ZWUwZDQ1
ODE3ZmUxMjExNDkzNzRhNDY2NjM1MTgwODI2NGRkNmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCiAKICNpbmNsdWRlICJUaWxlZExheWVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJjYy9D
Q1RpbGVkTGF5ZXJJbXBsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTEsNyArNTAs
NyBAQCBwdWJsaWM6CiAvLyBBIExheWVyIHRoYXQgcmVxdWlyZXMgYSBHcmFwaGljc0NvbnRleHQg
dG8gcmVuZGVyIGl0cyBjb250ZW50cy4KIGNsYXNzIENvbnRlbnRMYXllckNocm9taXVtIDogcHVi
bGljIFRpbGVkTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
Q29udGVudExheWVyQ2hyb21pdW0+IGNyZWF0ZShDb250ZW50TGF5ZXJEZWxlZ2F0ZSopOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExh
eWVyQ2hyb21pdW0+IGNyZWF0ZShDb250ZW50TGF5ZXJEZWxlZ2F0ZSopOwogCiAgICAgdmlydHVh
bCB+Q29udGVudExheWVyQ2hyb21pdW0oKTsKIApAQCAtNzMsNiArNzIsMjggQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gbV90ZXh0dXJlVXBkYXRlcjsKIH07CiAK
K3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gY2xhc3MgU2VyaWFsaXphYmxlQ29udGVudExh
eWVyQ2hyb21pdW0gOiBwdWJsaWMgQ29udGVudExheWVyQ2hyb21pdW0geworcHVibGljOgorICAg
IGV4cGxpY2l0IFNlcmlhbGl6YWJsZUNvbnRlbnRMYXllckNocm9taXVtKENvbnRlbnRMYXllckRl
bGVnYXRlKiBkZWxlZ2F0ZSkgOiBDb250ZW50TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkgeyB9CisK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllcj4gY3JlYXRlQ0NMYXllcigpCisgICAgewor
ICAgICAgICByZXR1cm4gTGF5ZXJUeXBlOjpjcmVhdGUobV9sYXllcklkKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVyKiBsYXllcikKKyAgICB7Cisg
ICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5
ZXIpOworICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzPExheWVyVHlw
ZT4odGhpcywgbGF5ZXIpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlw
ZT4KK1Bhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+IENvbnRlbnRMYXllckNocm9taXVt
OjpjcmVhdGUoQ29udGVudExheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2VyaWFsaXphYmxlQ29udGVudExheWVyQ2hyb21pdW08TGF5ZXJUeXBlPihk
ZWxlZ2F0ZSkpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcAppbmRleCA1NTFhZGY3Njk3
NjI5NWM5OTYwMzIwNDIzZjk2MTk5NDIwYjU0Nzk5Li45MDFmYTlkOTBhMjVhYzVlY2E2ZmFkNTIw
NmZkZDVlNGQ2YmUxNjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiV2ViR0xMYXllckNocm9taXVt
LmgiCisjaW5jbHVkZSAiY2MvQ0NDYW52YXNMYXllckltcGwuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0xNDMsNyArMTQ0LDcgQEAgdm9pZCBEcmF3aW5nQnVmZmVyOjpwdWJsaXNoVG9Q
bGF0Zm9ybUxheWVyKCkKIFBsYXRmb3JtTGF5ZXIqIERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5
ZXIoKQogewogICAgIGlmICghbV9wbGF0Zm9ybUxheWVyKSB7Ci0gICAgICAgIG1fcGxhdGZvcm1M
YXllciA9IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgICAgIG1fcGxhdGZvcm1M
YXllciA9IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDQ2FudmFzTGF5ZXJJbXBsPigpOwog
ICAgICAgICBtX3BsYXRmb3JtTGF5ZXItPnNldERyYXdpbmdCdWZmZXIodGhpcyk7CiAgICAgICAg
IG1fcGxhdGZvcm1MYXllci0+c2V0T3BhcXVlKCFtX2NvbnRleHQtPmdldENvbnRleHRBdHRyaWJ1
dGVzKCkuYWxwaGEpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IDMxYTUxMThmZmQwM2QxODI0OGQwN2U1MWUyNGFlZWQzMmFmZTk3MGUuLjZmNTRjMzM4
MWY1ODQ0ZjYzNWVhNmYxMzUwYmIzOTUwZGVkMzMwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmNwcApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIkxheWVyQ2hyb21p
dW0uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlN5c3RlbVRpbWUu
aCIKKyNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAKICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CkBAIC03NCw3ICs3NSw3
IEBAIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6R3JhcGhpY3NMYXllckNocm9taXVtKEdyYXBoaWNz
TGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICAsIG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRD
b2xvcihmYWxzZSkKICAgICAsIG1faW5TZXRDaGlsZHJlbihmYWxzZSkKIHsKLSAgICBtX2xheWVy
ID0gQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzKTsKKyAgICBtX2xheWVyID0gQ29u
dGVudExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ1RpbGVkTGF5ZXJJbXBsPih0aGlzKTsKIAogICAg
IHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwogfQpAQCAtMzIzLDcgKzMyNCw3IEBAIHZvaWQgR3Jh
cGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogICAg
IGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7CiAgICAgaWYgKGltYWdlKSB7CiAgICAgICAg
IGlmICghbV9jb250ZW50c0xheWVyLmdldCgpIHx8IG1fY29udGVudHNMYXllclB1cnBvc2UgIT0g
Q29udGVudHNMYXllckZvckltYWdlKSB7Ci0gICAgICAgICAgICBSZWZQdHI8SW1hZ2VMYXllckNo
cm9taXVtPiBpbWFnZUxheWVyID0gSW1hZ2VMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICAg
ICAgICAgIFJlZlB0cjxJbWFnZUxheWVyQ2hyb21pdW0+IGltYWdlTGF5ZXIgPSBJbWFnZUxheWVy
Q2hyb21pdW06OmNyZWF0ZTxDQ1RpbGVkTGF5ZXJJbXBsPigpOwogICAgICAgICAgICAgc2V0dXBD
b250ZW50c0xheWVyKGltYWdlTGF5ZXIuZ2V0KCkpOwogICAgICAgICAgICAgbV9jb250ZW50c0xh
eWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JJbWFnZTsKICAgICAgICAgICAgIGNoaWxkcmVu
Q2hhbmdlZCA9IHRydWU7CkBAIC01MjIsNyArNTIzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hy
b21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QoKQogewogICAgIGlmIChtX3ByZXNlcnZlczNE
ICYmICFtX3RyYW5zZm9ybUxheWVyKSB7CiAgICAgICAgIC8vIENyZWF0ZSB0aGUgdHJhbnNmb3Jt
IGxheWVyLgotICAgICAgICBtX3RyYW5zZm9ybUxheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KCk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NM
YXllckltcGw+KCk7CiAgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldFByZXNlcnZlczNEKHRy
dWUpOwogCiAgICAgICAgIC8vIENvcHkgdGhlIHBvc2l0aW9uIGZyb20gdGhpcyBsYXllci4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDAxNTRmYjI4MzE0ZjNlNmM5MjQwNDdi
YjQ4MzY3MzY5MmRmY2ZhYjcuLjRiMWI0ODU0Y2IxNTg3MmI2ZTQ3NTI3NzhiZmE0M2RhZTViZWRm
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMzksNyArMzksNiBAQAog
I2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVy
ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKLSNpbmNsdWRlICJjYy9DQ0xheWVySW1w
bC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0xMjksMTEgKzEyOCw2IEBAIHByaXZhdGU6CiAgICAgTGF5ZXJUZXh0dXJlU3ViSW1h
Z2UgbV90ZXhTdWJJbWFnZTsKIH07CiAKLVBhc3NSZWZQdHI8SW1hZ2VMYXllckNocm9taXVtPiBJ
bWFnZUxheWVyQ2hyb21pdW06OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
bWFnZUxheWVyQ2hyb21pdW0oKSk7Ci19Ci0KIEltYWdlTGF5ZXJDaHJvbWl1bTo6SW1hZ2VMYXll
ckNocm9taXVtKCkKICAgICA6IFRpbGVkTGF5ZXJDaHJvbWl1bSgpCiAgICAgLCBtX2ltYWdlRm9y
Q3VycmVudEZyYW1lKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGQ3MTI5MjQ1
MWMzNTU1ZWFmMGMxNmNmOWYyYzNmMzk1YmUwNzUzMDQuLmJkODRiZTc0MTU3MjE4OTNiMGFjNjc4
Y2FiOTliNGRhNTY3NzQ3NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC00OSw3
ICs0OSw4IEBAIGNsYXNzIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjsKIC8vIEEgTGF5ZXIgdGhh
dCBjb250YWlucyBvbmx5IGFuIEltYWdlIGVsZW1lbnQuCiBjbGFzcyBJbWFnZUxheWVyQ2hyb21p
dW0gOiBwdWJsaWMgVGlsZWRMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbWFnZUxheWVyQ2hyb21pdW0+IGNyZWF0ZSgpOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIExheWVyVHlwZT4gc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VMYXllckNocm9taXVtPiBjcmVh
dGUoKTsKKwogICAgIHZpcnR1YWwgfkltYWdlTGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVh
bCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwpAQCAtNTgsNyArNTksNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldENvbnRlbnRzKEltYWdlKiBpbWFnZSk7CiAKLXByaXZhdGU6Citwcm90ZWN0
ZWQ6CiAgICAgSW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
VGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0Kik7CkBAIC03Myw2ICs3NCwyOCBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI+IG1fdGV4dHVy
ZVVwZGF0ZXI7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IGNsYXNzIFNlcmlh
bGl6YWJsZUltYWdlTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBJbWFnZUxheWVyQ2hyb21pdW0gewor
cHVibGljOgorICAgIFNlcmlhbGl6YWJsZUltYWdlTGF5ZXJDaHJvbWl1bSgpIDogSW1hZ2VMYXll
ckNocm9taXVtKCkgeyB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllcj4gY3JlYXRl
Q0NMYXllcigpCisgICAgeworICAgICAgICByZXR1cm4gTGF5ZXJUeXBlOjpjcmVhdGUobV9sYXll
cklkKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVy
KiBsYXllcikKKyAgICB7CisgICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzPExh
eWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgIH0KK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIExheWVyVHlwZT4KK1Bhc3NSZWZQdHI8SW1hZ2VMYXllckNocm9taXVtPiBJbWFn
ZUxheWVyQ2hyb21pdW06OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJp
YWxpemFibGVJbWFnZUxheWVyQ2hyb21pdW08TGF5ZXJUeXBlPigpKTsKK30KKwogfQogI2VuZGlm
IC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApp
bmRleCA0YzYzZGZkN2QyNjgyODdiNWY4NWE3N2JjNDA0MjVmMDYwYThhNTgyLi5lYTYzYzYwYjA4
MzYxMzZkMGQ3MGQyOWFkMDgwODcwM2JiZjdjMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApA
QCAtMzMsNyArMzMsNiBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNs
dWRlICJMYXllckNocm9taXVtLmgiCiAKLSNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2lmIFVTRShTS0lBKQogI2luY2x1ZGUgIk5h
dGl2ZUltYWdlU2tpYS5oIgpAQCAtNDksMTEgKzQ4LDYgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IAogc3RhdGljIGludCBzX25leHRMYXllcklkID0gMTsKIAotUGFzc1JlZlB0cjxMYXllckNocm9t
aXVtPiBMYXllckNocm9taXVtOjpjcmVhdGUoKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TGF5ZXJDaHJvbWl1bSgpKTsKLX0KLQogTGF5ZXJDaHJvbWl1bTo6TGF5ZXJDaHJvbWl1bSgpCiAg
ICAgOiBtX25lZWRzRGlzcGxheShmYWxzZSkKICAgICAsIG1fbGF5ZXJJZChzX25leHRMYXllcklk
KyspCkBAIC00MTksNDggKzQxMyw2IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNw
bGF5UmVjdChjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCkKICAgICBzZXROZWVkc0NvbW1pdCgp
OwogfQogCi12b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwq
IGxheWVyKQotewotICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChtX2FuY2hvclBvaW50KTsKLSAg
ICBsYXllci0+c2V0QW5jaG9yUG9pbnRaKG1fYW5jaG9yUG9pbnRaKTsKLSAgICBsYXllci0+c2V0
QmFja2dyb3VuZENvbG9yKG1fYmFja2dyb3VuZENvbG9yKTsKLSAgICBsYXllci0+c2V0QmFja2dy
b3VuZENvdmVyc1ZpZXdwb3J0KG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KTsKLSAgICBsYXll
ci0+c2V0Qm91bmRzKG1fYm91bmRzKTsKLSAgICBsYXllci0+c2V0Q29udGVudEJvdW5kcyhjb250
ZW50Qm91bmRzKCkpOwotICAgIGxheWVyLT5zZXREZWJ1Z0JvcmRlckNvbG9yKG1fZGVidWdCb3Jk
ZXJDb2xvcik7Ci0gICAgbGF5ZXItPnNldERlYnVnQm9yZGVyV2lkdGgobV9kZWJ1Z0JvcmRlcldp
ZHRoKTsKLSAgICBsYXllci0+c2V0RG91YmxlU2lkZWQobV9kb3VibGVTaWRlZCk7Ci0gICAgbGF5
ZXItPnNldERyYXdzQ29udGVudChkcmF3c0NvbnRlbnQoKSk7Ci0gICAgbGF5ZXItPnNldElzTm9u
Q29tcG9zaXRlZENvbnRlbnQobV9pc05vbkNvbXBvc2l0ZWRDb250ZW50KTsKLSAgICBsYXllci0+
c2V0TWFza3NUb0JvdW5kcyhtX21hc2tzVG9Cb3VuZHMpOwotICAgIGxheWVyLT5zZXRTY3JvbGxh
YmxlKG1fc2Nyb2xsYWJsZSk7Ci0gICAgbGF5ZXItPnNldE5hbWUobV9uYW1lKTsKLSAgICBsYXll
ci0+c2V0T3BhcXVlKG1fb3BhcXVlKTsKLSAgICBsYXllci0+c2V0T3BhY2l0eShtX29wYWNpdHkp
OwotICAgIGxheWVyLT5zZXRQb3NpdGlvbihtX3Bvc2l0aW9uKTsKLSAgICBsYXllci0+c2V0UHJl
c2VydmVzM0QocHJlc2VydmVzM0QoKSk7Ci0gICAgbGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uKG1f
c2Nyb2xsUG9zaXRpb24pOwotICAgIGxheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShtX3N1Ymxh
eWVyVHJhbnNmb3JtKTsKLSAgICBsYXllci0+c2V0VHJhbnNmb3JtKG1fdHJhbnNmb3JtKTsKLSAg
ICBsYXllci0+c2V0VXBkYXRlUmVjdChtX3VwZGF0ZVJlY3QpOwotCi0gICAgbGF5ZXItPnNldFNj
cm9sbERlbHRhKGxheWVyLT5zY3JvbGxEZWx0YSgpIC0gbGF5ZXItPnNlbnRTY3JvbGxEZWx0YSgp
KTsKLSAgICBsYXllci0+c2V0U2VudFNjcm9sbERlbHRhKEludFNpemUoKSk7Ci0KLSAgICBpZiAo
bWFza0xheWVyKCkpCi0gICAgICAgIG1hc2tMYXllcigpLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
LT5tYXNrTGF5ZXIoKSk7Ci0gICAgaWYgKHJlcGxpY2FMYXllcigpKQotICAgICAgICByZXBsaWNh
TGF5ZXIoKS0+cHVzaFByb3BlcnRpZXNUbyhsYXllci0+cmVwbGljYUxheWVyKCkpOwotCi0gICAg
Ly8gUmVzZXQgYW55IHN0YXRlIHRoYXQgc2hvdWxkIGJlIGNsZWFyZWQgZm9yIHRoZSBuZXh0IHVw
ZGF0ZS4KLSAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QoKTsKLX0KLQotUGFzc1JlZlB0cjxD
Q0xheWVySW1wbD4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQotewotICAgIHJl
dHVybiBDQ0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7Ci19Ci0KIHZvaWQgTGF5ZXJDaHJv
bWl1bTo6c2V0RGVidWdCb3JkZXJDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgbV9k
ZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7CkBAIC00OTYsNiArNDQ4LDE3IEBAIGJvb2wgTGF5ZXJD
aHJvbWl1bTo6ZGVzY2VuZGFudERyYXdzQ29udGVudCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CitQYXNzUmVmUHRyPENDTGF5ZXI+IExheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIoKQorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBQYXNzUmVmUHRyPENDTGF5ZXI+
KCk7Cit9CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVyKikK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBzb3J0TGF5ZXJzKFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPjo6aXRlcmF0b3IsIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPjo6aXRlcmF0b3IsIHZvaWQqKQogewogICAgIC8vIEN1cnJlbnRseSB3ZSBkb24n
dCB1c2Ugei1vcmRlciB0byBkZWNpZGUgd2hhdCB0byBwYWludCwgc28gdGhlcmUncyBubyBuZWVk
IHRvIGFjdHVhbGx5IHNvcnQgTGF5ZXJDaHJvbWl1bXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXgg
MDRkZDFlNjYyYWY3NDAwZTk5YzI2ZmFlYjVkNGU4MzNkODJiMmZlZS4uODY4YWEzNWQwMjczNDg4
NjhjZWRjODA3MGQyMzM0MzAxNTc4OWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMzQsNiAr
MzQsNyBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCisjaW5jbHVkZSAi
Y2MvQ0NMYXllci5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtNTEsNyArNTIsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NM
YXllclRyZWVIb3N0OwogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDNEOwpAQCAtNjEsNyArNjEsOCBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNz
IExheWVyQ2hyb21pdW0gOiBwdWJsaWMgUmVmQ291bnRlZDxMYXllckNocm9taXVtPiB7CiAgICAg
ZnJpZW5kIGNsYXNzIExheWVyVGlsZXJDaHJvbWl1bTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxMYXllckNocm9taXVtPiBjcmVhdGUoKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBM
YXllclR5cGU+IHN0YXRpYyBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IGNyZWF0ZSgpOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIHZvaWQgcHVzaFByb3BlcnRpZXMo
Y29uc3QgTGF5ZXJDaHJvbWl1bSosIENDTGF5ZXIqKTsKIAogICAgIHZpcnR1YWwgfkxheWVyQ2hy
b21pdW0oKTsKIApAQCAtMTY2LDcgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlYnVn
Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIHNldERlYnVnQm9yZGVyV2lkdGgo
ZmxvYXQpOwogCi0gICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVyKik7CiAKICAgICB0
eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvcywgRnJhZ21lbnRTaGFkZXJDb2xv
cj4gQm9yZGVyUHJvZ3JhbTsKIApAQCAtMTk4LDYgKzE5OSw4IEBAIHB1YmxpYzoKICAgICBDQ0xh
eWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QoKSBjb25zdCB7IHJldHVybiBtX2xheWVyVHJlZUhv
c3QuZ2V0KCk7IH0KICAgICB2b2lkIGNsZWFudXBSZXNvdXJjZXNSZWN1cnNpdmUoKTsKIAorICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVyPiBjcmVhdGVDQ0xheWVyKCk7CisKIHByb3RlY3Rl
ZDoKICAgICBMYXllckNocm9taXVtKCk7CiAKQEAgLTIxOCwxMCArMjIxLDYgQEAgcHJvdGVjdGVk
OgogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fbWFza0xheWVyOwogCi0gICAgZnJpZW5k
IGNsYXNzIFRyZWVTeW5jaHJvbml6ZXI7Ci0gICAgZnJpZW5kIGNsYXNzIENDTGF5ZXJJbXBsOwot
ICAgIC8vIENvbnN0cnVjdHMgYSBDQ0xheWVySW1wbCBvZiB0aGUgY29ycmVjdCBydW50aW1lIHR5
cGUgZm9yIHRoaXMgTGF5ZXJDaHJvbWl1bSB0eXBlLgotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxD
Q0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKICAgICBpbnQgbV9sYXllcklkOwogCiBw
cml2YXRlOgpAQCAtMjg2LDYgKzI4NSw1OCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wYWdlU2Nh
bGVEaXJ0eTsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gY2xhc3MgU2VyaWFs
aXphYmxlTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKK3B1YmxpYzoKKyAg
ICBTZXJpYWxpemFibGVMYXllckNocm9taXVtKCkgOiBMYXllckNocm9taXVtKCkgeyB9CisKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllcj4gY3JlYXRlQ0NMYXllcigpCisgICAgeworICAg
ICAgICByZXR1cm4gTGF5ZXJUeXBlOjpjcmVhdGUobV9sYXllcklkKTsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVyKiBsYXllcikKKyAgICB7CisgICAg
ICAgIHB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgIH0KK307CisK
K3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK1Bhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlh
bGl6YWJsZUxheWVyQ2hyb21pdW08TGF5ZXJUeXBlPigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgTGF5ZXJUeXBlPgordm9pZCBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllcyhjb25zdCBM
YXllckNocm9taXVtKiBmcm9tLCBDQ0xheWVyKiB0bykKK3sKKyAgICBMYXllclR5cGUqIGxheWVy
ID0gc3RhdGljX2Nhc3Q8TGF5ZXJUeXBlKj4odG8pOworCisgICAgbGF5ZXItPnNldEFuY2hvclBv
aW50KGZyb20tPm1fYW5jaG9yUG9pbnQpOworICAgIGxheWVyLT5zZXRBbmNob3JQb2ludFooZnJv
bS0+bV9hbmNob3JQb2ludFopOworICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoZnJvbS0+
bV9iYWNrZ3JvdW5kQ29sb3IpOworICAgIGxheWVyLT5zZXRCb3VuZHMoZnJvbS0+bV9ib3VuZHMp
OworICAgIGxheWVyLT5zZXRDb250ZW50Qm91bmRzKGZyb20tPmNvbnRlbnRCb3VuZHMoKSk7Cisg
ICAgbGF5ZXItPnNldERlYnVnQm9yZGVyQ29sb3IoZnJvbS0+bV9kZWJ1Z0JvcmRlckNvbG9yKTsK
KyAgICBsYXllci0+c2V0RGVidWdCb3JkZXJXaWR0aChmcm9tLT5tX2RlYnVnQm9yZGVyV2lkdGgp
OworICAgIGxheWVyLT5zZXREb3VibGVTaWRlZChmcm9tLT5tX2RvdWJsZVNpZGVkKTsKKyAgICBs
YXllci0+c2V0RHJhd3NDb250ZW50KGZyb20tPmRyYXdzQ29udGVudCgpKTsKKyAgICBsYXllci0+
c2V0SXNOb25Db21wb3NpdGVkQ29udGVudChmcm9tLT5tX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQp
OworICAgIGxheWVyLT5zZXRNYXNrc1RvQm91bmRzKGZyb20tPm1fbWFza3NUb0JvdW5kcyk7Cisg
ICAgbGF5ZXItPnNldFNjcm9sbGFibGUoZnJvbS0+bV9zY3JvbGxhYmxlKTsKKyAgICBsYXllci0+
c2V0TmFtZShmcm9tLT5tX25hbWUpOworICAgIGxheWVyLT5zZXRPcGFxdWUoZnJvbS0+bV9vcGFx
dWUpOworICAgIGxheWVyLT5zZXRPcGFjaXR5KGZyb20tPm1fb3BhY2l0eSk7CisgICAgbGF5ZXIt
PnNldFBvc2l0aW9uKGZyb20tPm1fcG9zaXRpb24pOworICAgIGxheWVyLT5zZXRQcmVzZXJ2ZXMz
RChmcm9tLT5wcmVzZXJ2ZXMzRCgpKTsKKyAgICBsYXllci0+c2V0U2Nyb2xsUG9zaXRpb24oZnJv
bS0+bV9zY3JvbGxQb3NpdGlvbik7CisgICAgbGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKGZy
b20tPm1fc3VibGF5ZXJUcmFuc2Zvcm0pOworICAgIGxheWVyLT5zZXRUcmFuc2Zvcm0oZnJvbS0+
bV90cmFuc2Zvcm0pOworICAgIGxheWVyLT5zZXRVcGRhdGVSZWN0KGZyb20tPm1fdXBkYXRlUmVj
dCk7CisKKyAgICBsYXllci0+c2V0U2Nyb2xsRGVsdGEobGF5ZXItPnNjcm9sbERlbHRhKCkgLSBs
YXllci0+c2VudFNjcm9sbERlbHRhKCkpOworICAgIGxheWVyLT5zZXRTZW50U2Nyb2xsRGVsdGEo
SW50U2l6ZSgpKTsKK30KKwogdm9pZCBzb3J0TGF5ZXJzKFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPjo6aXRlcmF0b3IsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPjo6aXRlcmF0
b3IsIHZvaWQqKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCBj
ODk2YjFkZjI2ZjNlZmVhYzExYjMyNzFjNTk1N2EyZjRiZjU4ZTkyLi5jOTU4MTY2MmQ5NTkxMTY0
OWJkN2NhZjhmYWYzMDJhNGIyODI5OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgImNjL0NDSGVhZHNVcERpc3BsYXkuaCIK
ICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQbHVn
aW5MYXllckltcGwuaCIKKyNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IDA3OWFkMmVkZTk1NDc1NTgyYjg3MDcyOWE3MWE1ZDYxYmQyOGFiNGIuLjBmMjFkMTBh
NzIwMmNmM2M0YTViZDdhNWRiZjU5NTYwYTI2NGI3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVy
Q2hyb21pdW0uY3BwCkBAIC0zMSwxNiArMzEsOSBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJj
Yy9DQ0xheWVySW1wbC5oIgotI2luY2x1ZGUgImNjL0NDUGx1Z2luTGF5ZXJJbXBsLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxQbHVnaW5MYXllckNocm9taXVtPiBQbHVn
aW5MYXllckNocm9taXVtOjpjcmVhdGUoKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1
Z2luTGF5ZXJDaHJvbWl1bSk7Ci19Ci0KIFBsdWdpbkxheWVyQ2hyb21pdW06OlBsdWdpbkxheWVy
Q2hyb21pdW0oKQogICAgIDogTGF5ZXJDaHJvbWl1bSgpCiAgICAgLCBtX3RleHR1cmVJZCgwKQpA
QCAtNjMsMTEgKzU2LDYgQEAgdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckMKICAgICBtX2RpcnR5UmVj
dCA9IEZsb2F0UmVjdCgpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBQbHVnaW5MYXll
ckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCi17Ci0gICAgcmV0dXJuIENDUGx1Z2luTGF5
ZXJJbXBsOjpjcmVhdGUobV9sYXllcklkKTsKLX0KLQogdm9pZCBQbHVnaW5MYXllckNocm9taXVt
OjpzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpCiB7CiAgICAgbV90ZXh0dXJlSWQgPSBpZDsKQEAg
LTk5LDE3ICs4Nyw2IEBAIHVpbnQzMl90IFBsdWdpbkxheWVyQ2hyb21pdW06OmdldElPU3VyZmFj
ZUlkKCkgY29uc3QKICAgICByZXR1cm4gbV9pb1N1cmZhY2VJZDsKIH0KIAotdm9pZCBQbHVnaW5M
YXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKLXsKLSAg
ICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKGxheWVyKTsKLQotICAgIENDUGx1Z2lu
TGF5ZXJJbXBsKiBwbHVnaW5MYXllciA9IHN0YXRpY19jYXN0PENDUGx1Z2luTGF5ZXJJbXBsKj4o
bGF5ZXIpOwotICAgIHBsdWdpbkxheWVyLT5zZXRUZXh0dXJlSWQobV90ZXh0dXJlSWQpOwotICAg
IHBsdWdpbkxheWVyLT5zZXRGbGlwcGVkKG1fZmxpcHBlZCk7Ci0gICAgcGx1Z2luTGF5ZXItPnNl
dFVWUmVjdChtX3V2UmVjdCk7Ci0gICAgcGx1Z2luTGF5ZXItPnNldElPU3VyZmFjZVByb3BlcnRp
ZXMobV9pb1N1cmZhY2VXaWR0aCwgbV9pb1N1cmZhY2VIZWlnaHQsIG1faW9TdXJmYWNlSWQpOwot
fQotCiB2b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgZGlydHlSZWN0KQogewogICAgIHNldE5lZWRzRGlzcGxheVJlY3QoZGlydHlSZWN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Bs
dWdpbkxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaAppbmRleCA4NDM2NTY5NWJiMWRkYzY1MjMxYWRk
MDRmNmYwZDgzMDAwOTFlMGQwLi4xN2JiYTg2NWEwMzBmN2VkYmQxMzNkZDVjYTgyMzg0NWVlODYw
ZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9QbHVnaW5MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCkBAIC0zNiwxMCArMzYsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQSBMYXllciBjb250YWluaW5nIGEgdGhlIHJlbmRlcmVk
IG91dHB1dCBvZiBhIHBsdWdpbiBpbnN0YW5jZS4KIGNsYXNzIFBsdWdpbkxheWVyQ2hyb21pdW0g
OiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
UGx1Z2luTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgUGFzc1JlZlB0cjxQbHVn
aW5MYXllckNocm9taXVtPiBjcmVhdGUoKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5
cGU+IHN0YXRpYyB2b2lkIHB1c2hQcm9wZXJ0aWVzKFBsdWdpbkxheWVyQ2hyb21pdW0qLCBDQ0xh
eWVyKik7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5
ZXJJbXBsKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CiAKICAgICAvLyBDb2RlIHBhdGgg
Zm9yIHBsdWdpbnMgd2hpY2ggc3VwcGx5IHRoZWlyIG93biB0ZXh0dXJlIElELgogICAgIHZvaWQg
c2V0VGV4dHVyZUlkKHVuc2lnbmVkIHRleHR1cmVJZCk7CkBAIC01Myw4ICs1Myw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldElPU3VyZmFjZVByb3BlcnRpZXMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCB1aW50MzJfdCBpb1N1cmZhY2VJZCk7CiAgICAgdWludDMyX3QgZ2V0SU9TdXJmYWNlSWQoKSBj
b25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7
Ci0KICAgICB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZGlydHlSZWN0KTsK
IAogcHJvdGVjdGVkOgpAQCAtNzAsNiArNjgsMzkgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3Qg
bV9kaXJ0eVJlY3Q7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IGNsYXNzIFNl
cmlhbGl6YWJsZVBsdWdpbkxheWVyQ2hyb21pdW0gOiBwdWJsaWMgUGx1Z2luTGF5ZXJDaHJvbWl1
bSB7CitwdWJsaWM6CisgICAgU2VyaWFsaXphYmxlUGx1Z2luTGF5ZXJDaHJvbWl1bSgpIDogUGx1
Z2luTGF5ZXJDaHJvbWl1bSgpIHsgfQorCisgICAgUGFzc1JlZlB0cjxDQ0xheWVyPiBjcmVhdGVD
Q0xheWVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBMYXllclR5cGU6OmNyZWF0ZShtX2xheWVy
SWQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXIq
IGxheWVyKQorICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXM8TGF5
ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgICAgIHB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4o
dGhpcywgbGF5ZXIpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4K
K1Bhc3NSZWZQdHI8UGx1Z2luTGF5ZXJDaHJvbWl1bT4gUGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6YWJsZVBsdWdpbkxheWVy
Q2hyb21pdW08TGF5ZXJUeXBlPigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBl
Pgordm9pZCBQbHVnaW5MYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllcyhQbHVnaW5MYXllckNo
cm9taXVtKiBmcm9tLCBDQ0xheWVyKiB0bykKK3sKKyAgICBMYXllclR5cGUqIGxheWVyID0gc3Rh
dGljX2Nhc3Q8TGF5ZXJUeXBlKj4odG8pOworCisgICAgbGF5ZXItPnNldFRleHR1cmVJZChmcm9t
LT5tX3RleHR1cmVJZCk7CisgICAgbGF5ZXItPnNldEZsaXBwZWQoZnJvbS0+bV9mbGlwcGVkKTsK
KyAgICBsYXllci0+c2V0VVZSZWN0KGZyb20tPm1fdXZSZWN0KTsKKyAgICBsYXllci0+c2V0SU9T
dXJmYWNlUHJvcGVydGllcyhmcm9tLT5tX2lvU3VyZmFjZVdpZHRoLCBmcm9tLT5tX2lvU3VyZmFj
ZUhlaWdodCwgZnJvbS0+bV9pb1N1cmZhY2VJZCk7Cit9CisKIH0KICNlbmRpZiAvLyBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDkyZDEwMmUzMjJhMjE4MzU1ZTE1NjgxZTUwMDVhZDMyYTJlMmI2ZTUuLjEzZTgxZGUxODFm
MDNjM2RjMjRlZTg3ODgxM2I5NGNiYjkxNGI0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcApAQCAtMzUsOSArMzUsNyBAQAogI2luY2x1ZGUgIk1hdGhFeHRyYXMuaCIKICNpbmNs
dWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCi0jaW5jbHVkZSAiY2MvQ0NM
YXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCi0jaW5jbHVkZSAi
Y2MvQ0NUaWxlZExheWVySW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiAv
LyBTdGFydCB0aWxpbmcgd2hlbiB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiBhIGxheWVyIGFyZSBs
YXJnZXIgdGhhbiB0aGlzIHNpemUuCkBAIC01MCwyNyArNDgsNiBAQCB1c2luZyBuYW1lc3BhY2Ug
c3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVwZGF0YWJsZVRpbGUgOiBwdWJs
aWMgQ0NMYXllclRpbGluZ0RhdGE6OlRpbGUgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVw
ZGF0YWJsZVRpbGUpOwotcHVibGljOgotICAgIGV4cGxpY2l0IFVwZGF0YWJsZVRpbGUoUGFzc093
blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0
ZXh0dXJlKSB7IH0KLQotICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUo
KSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KLSAgICBNYW5hZ2VkVGV4dHVyZSogbWFuYWdl
ZFRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUtPnRleHR1cmUoKTsgfQotCi0gICAgYm9vbCBp
c0RpcnR5KCkgY29uc3QgeyByZXR1cm4gIW1fZGlydHlSZWN0LmlzRW1wdHkoKTsgfQotICAgIHZv
aWQgY29weUFuZENsZWFyRGlydHkoKQotICAgIHsKLSAgICAgICAgbV91cGRhdGVSZWN0ID0gbV9k
aXJ0eVJlY3Q7Ci0gICAgICAgIG1fZGlydHlSZWN0ID0gSW50UmVjdCgpOwotICAgIH0KLQotICAg
IEludFJlY3QgbV9kaXJ0eVJlY3Q7Ci0gICAgSW50UmVjdCBtX3VwZGF0ZVJlY3Q7Ci1wcml2YXRl
OgotICAgIE93blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBtX3RleHR1cmU7Ci19
OwotCiBUaWxlZExheWVyQ2hyb21pdW06OlRpbGVkTGF5ZXJDaHJvbWl1bSgpCiAgICAgOiBMYXll
ckNocm9taXVtKCkKICAgICAsIG1fdGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9FTlVNKQpAQCAtODYsMTEgKzYzLDYgQEAgVGlsZWRMYXllckNocm9taXVtOjp+VGlsZWRM
YXllckNocm9taXVtKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gVGlsZWRMYXll
ckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCi17Ci0gICAgcmV0dXJuIENDVGlsZWRMYXll
ckltcGw6OmNyZWF0ZShpZCgpKTsKLX0KLQogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OmNsZWFu
dXBSZXNvdXJjZXMoKQogewogICAgIExheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKTsK
QEAgLTI1MywyOSArMjI1LDYgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnNldElzTWFzayhi
b29sIGlzTWFzaykKICAgICBzZXRUaWxpbmdPcHRpb24oaXNNYXNrID8gTmV2ZXJUaWxlIDogQXV0
b1RpbGUpOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhD
Q0xheWVySW1wbCogbGF5ZXIpCi17Ci0gICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNU
byhsYXllcik7Ci0KLSAgICBDQ1RpbGVkTGF5ZXJJbXBsKiB0aWxlZExheWVyID0gc3RhdGljX2Nh
c3Q8Q0NUaWxlZExheWVySW1wbCo+KGxheWVyKTsKLQotICAgIHRpbGVkTGF5ZXItPnNldFNraXBz
RHJhdyhtX3NraXBzRHJhdyk7Ci0gICAgdGlsZWRMYXllci0+c2V0Q29udGVudHNTd2l6emxlZCht
X3NhbXBsZWRUZXhlbEZvcm1hdCAhPSBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXRSR0JBKTsKLSAgICB0aWxlZExheWVyLT5zZXRUaWxpbmdEYXRhKCptX3RpbGVyKTsKLQot
ICAgIGZvciAoQ0NMYXllclRpbGluZ0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIg
PSBtX3RpbGVyLT50aWxlcygpLmJlZ2luKCk7IGl0ZXIgIT0gbV90aWxlci0+dGlsZXMoKS5lbmQo
KTsgKytpdGVyKSB7Ci0gICAgICAgIGludCBpID0gaXRlci0+Zmlyc3QuZmlyc3Q7Ci0gICAgICAg
IGludCBqID0gaXRlci0+Zmlyc3Quc2Vjb25kOwotICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxl
ID0gc3RhdGljX2Nhc3Q8VXBkYXRhYmxlVGlsZSo+KGl0ZXItPnNlY29uZC5nZXQoKSk7Ci0gICAg
ICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6
ZSgpLCBtX3RleHR1cmVGb3JtYXQpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlm
ICh0aWxlLT5pc0RpcnR5KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICB0aWxl
ZExheWVyLT5zeW5jVGV4dHVyZUlkKGksIGosIHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnRleHR1
cmVJZCgpKTsKLSAgICB9Ci19Ci0KIFRleHR1cmVNYW5hZ2VyKiBUaWxlZExheWVyQ2hyb21pdW06
OnRleHR1cmVNYW5hZ2VyKCkgY29uc3QKIHsKICAgICBpZiAoIWxheWVyVHJlZUhvc3QoKSkKQEAg
LTQ1NCw2ICs0MDMsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKICAgICBtX3NraXBzSWRsZVBhaW50ID0gZmFsc2U7
CiAgICAgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QgPSBJbnRSZWN0KCk7CiAgICAgbV9wYWlu
dFJlY3QgPSBJbnRSZWN0KCk7CisgICAgbV91cGRhdGVSZWN0ID0gRmxvYXRSZWN0KCk7CiAKICAg
ICB1cGRhdGVCb3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCBjMTJl
OTFhYTRmODI2OWJiYzU5MjUzYWYzNmUxYmE2ZTI3NGQwMDhjLi4wZTlkNDUxYmQ4OWM0ZjFkNDYx
ZjAwYzBiOTQ4MTQ3OTQwZjdmZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAt
MjksMjUgKzI5LDQzIEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5j
bHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIK
ICNpbmNsdWRlICJjYy9DQ0xheWVyVGlsaW5nRGF0YS5oIgotI2luY2x1ZGUgImNjL0NDVGlsZWRM
YXllckltcGwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBMYXllclRleHR1cmVV
cGRhdGVyOwotY2xhc3MgVXBkYXRhYmxlVGlsZTsKK2NsYXNzIFVwZGF0YWJsZVRpbGUgOiBwdWJs
aWMgQ0NMYXllclRpbGluZ0RhdGE6OlRpbGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVw
ZGF0YWJsZVRpbGUpOworcHVibGljOgorICAgIGV4cGxpY2l0IFVwZGF0YWJsZVRpbGUoUGFzc093
blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0
ZXh0dXJlKSB7IH0KKworICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUo
KSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKyAgICBNYW5hZ2VkVGV4dHVyZSogbWFuYWdl
ZFRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUtPnRleHR1cmUoKTsgfQorCisgICAgYm9vbCBp
c0RpcnR5KCkgY29uc3QgeyByZXR1cm4gIW1fZGlydHlSZWN0LmlzRW1wdHkoKTsgfQorICAgIHZv
aWQgY29weUFuZENsZWFyRGlydHkoKQorICAgIHsKKyAgICAgICAgbV91cGRhdGVSZWN0ID0gbV9k
aXJ0eVJlY3Q7CisgICAgICAgIG1fZGlydHlSZWN0ID0gSW50UmVjdCgpOworICAgIH0KKworICAg
IEludFJlY3QgbV9kaXJ0eVJlY3Q7CisgICAgSW50UmVjdCBtX3VwZGF0ZVJlY3Q7Citwcml2YXRl
OgorICAgIE93blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBtX3RleHR1cmU7Cit9
OwogCiBjbGFzcyBUaWxlZExheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBw
dWJsaWM6CiAgICAgZW51bSBUaWxpbmdPcHRpb24geyBBbHdheXNUaWxlLCBOZXZlclRpbGUsIEF1
dG9UaWxlIH07CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IHN0YXRpYyB2b2lk
IHB1c2hQcm9wZXJ0aWVzKGNvbnN0IFRpbGVkTGF5ZXJDaHJvbWl1bSosIENDTGF5ZXIqKTsKKwog
ICAgIHZpcnR1YWwgflRpbGVkTGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRh
dGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7Ci0KICAgICB2aXJ0dWFsIGJvb2wg
ZHJhd3NDb250ZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGVudHNTY2Fs
ZSgpIGNvbnN0OwogCkBAIC05Myw4ICsxMTEsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBU
ZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7Ci0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqKTsKIAogICAg
IHZvaWQgY3JlYXRlVGlsZXJJZk5lZWRlZCgpOwpAQCAtMTIyLDYgKzEzOCwyOCBAQCBwcml2YXRl
OgogICAgIE93blB0cjxDQ0xheWVyVGlsaW5nRGF0YT4gbV90aWxlcjsKIH07CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIExheWVyVHlwZT4KK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwdXNoUHJvcGVy
dGllcyhjb25zdCBUaWxlZExheWVyQ2hyb21pdW0qIGZyb20sIENDTGF5ZXIqIHRvKQoreworICAg
IExheWVyVHlwZSogbGF5ZXIgPSBzdGF0aWNfY2FzdDxMYXllclR5cGUqPih0byk7CisKKyAgICBs
YXllci0+c2V0U2tpcHNEcmF3KGZyb20tPm1fc2tpcHNEcmF3KTsKKyAgICBsYXllci0+c2V0Q29u
dGVudHNTd2l6emxlZChmcm9tLT5tX3NhbXBsZWRUZXhlbEZvcm1hdCAhPSBMYXllclRleHR1cmVV
cGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBKTsKKyAgICBsYXllci0+c2V0VGlsaW5nRGF0
YSgqKGZyb20tPm1fdGlsZXIpKTsKKworICAgIGZvciAoQ0NMYXllclRpbGluZ0RhdGE6OlRpbGVN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBmcm9tLT5tX3RpbGVyLT50aWxlcygpLmJlZ2luKCk7
IGl0ZXIgIT0gZnJvbS0+bV90aWxlci0+dGlsZXMoKS5lbmQoKTsgKytpdGVyKSB7CisgICAgICAg
IGludCBpID0gaXRlci0+Zmlyc3QuZmlyc3Q7CisgICAgICAgIGludCBqID0gaXRlci0+Zmlyc3Qu
c2Vjb25kOworICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gc3RhdGljX2Nhc3Q8VXBkYXRh
YmxlVGlsZSo+KGl0ZXItPnNlY29uZC5nZXQoKSk7CisgICAgICAgIGlmICghdGlsZS0+bWFuYWdl
ZFRleHR1cmUoKS0+aXNWYWxpZChmcm9tLT5tX3RpbGVyLT50aWxlU2l6ZSgpLCBmcm9tLT5tX3Rl
eHR1cmVGb3JtYXQpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh0aWxlLT5p
c0RpcnR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBsYXllci0+c3luY1Rl
eHR1cmVJZChpLCBqLCB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAg
fQorfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3lu
Y2hyb25pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RyZWVTeW5jaHJvbml6ZXIuY3BwCmluZGV4IGQwZmQwY2U1MjNkNjM4ODRiZTkzMmUxYmQ0MTY1
ODJmMjU3NjJlNDAuLjRkOWNlMTgwYTBiZWY5MTY2YzYyYjEwOTZmM2NhODk1ZWI5ODUyNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVT
eW5jaHJvbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuY3BwCkBAIC0zMyw2MyArMzMsNzEgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi12b2lkIFRyZWVTeW5jaHJvbml6ZXI6OmFkZENDTGF5ZXJJbXBsc1Rv
TWFwUmVjdXJzaXZlKENDTGF5ZXJJbXBsTWFwJiBtYXAsIENDTGF5ZXJJbXBsKiBjY0xheWVySW1w
bCkKK3RlbXBsYXRlPHR5cGVuYW1lIENDTGF5ZXJUeXBlPgordm9pZCBUcmVlU3luY2hyb25pemVy
OjphZGRDQ0xheWVyc1RvTWFwUmVjdXJzaXZlKENDTGF5ZXJNYXAmIG1hcCwgQ0NMYXllclR5cGUq
IGNjTGF5ZXIpCiB7Ci0gICAgbWFwLnNldChjY0xheWVySW1wbC0+aWQoKSwgY2NMYXllckltcGwp
OworICAgIG1hcC5zZXQoY2NMYXllci0+aWQoKSwgY2NMYXllcik7CiAKLSAgICBjb25zdCBWZWN0
b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBjaGlsZHJlbiA9IGNjTGF5ZXJJbXBsLT5jaGlsZHJl
bigpOworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NMYXllclR5cGU+ID4mIGNoaWxkcmVuID0g
Y2NMYXllci0+Y2hpbGRyZW4oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVu
LnNpemUoKTsgKytpKQotICAgICAgICBhZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vyc2l2ZShtYXAs
IGNoaWxkcmVuW2ldLmdldCgpKTsKKyAgICAgICAgYWRkQ0NMYXllcnNUb01hcFJlY3Vyc2l2ZTxD
Q0xheWVyVHlwZT4obWFwLCBjaGlsZHJlbltpXS5nZXQoKSk7CiAKLSAgICBpZiAoQ0NMYXllcklt
cGwqIG1hc2tMYXllciA9IGNjTGF5ZXJJbXBsLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgYWRkQ0NM
YXllckltcGxzVG9NYXBSZWN1cnNpdmUobWFwLCBtYXNrTGF5ZXIpOworICAgIGlmIChDQ0xheWVy
VHlwZSogbWFza0xheWVyID0gY2NMYXllci0+bWFza0xheWVyKCkpCisgICAgICAgIGFkZENDTGF5
ZXJzVG9NYXBSZWN1cnNpdmU8Q0NMYXllclR5cGU+KG1hcCwgbWFza0xheWVyKTsKIAotICAgIGlm
IChDQ0xheWVySW1wbCogcmVwbGljYUxheWVyID0gY2NMYXllckltcGwtPnJlcGxpY2FMYXllcigp
KQotICAgICAgICBhZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vyc2l2ZShtYXAsIHJlcGxpY2FMYXll
cik7CisgICAgaWYgKENDTGF5ZXJUeXBlKiByZXBsaWNhTGF5ZXIgPSBjY0xheWVyLT5yZXBsaWNh
TGF5ZXIoKSkKKyAgICAgICAgYWRkQ0NMYXllcnNUb01hcFJlY3Vyc2l2ZTxDQ0xheWVyVHlwZT4o
bWFwLCByZXBsaWNhTGF5ZXIpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBUcmVlU3lu
Y2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSogbGF5ZXIs
IENDTGF5ZXJJbXBsTWFwJiBtYXApCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVu
YW1lIENDTGF5ZXJUeXBlPgorUGFzc1JlZlB0cjxDQ0xheWVyVHlwZT4gVHJlZVN5bmNocm9uaXpl
cjo6c3luY2hyb25pemVUcmVlUmVjdXJzaXZlKExheWVyVHlwZSogbGF5ZXIsIENDTGF5ZXJNYXAm
IG1hcCkKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJJbXBsOwotICAgIENDTGF5
ZXJJbXBsTWFwOjppdGVyYXRvciBpdCA9IG1hcC5maW5kKGxheWVyLT5pZCgpKTsKKyAgICBSZWZQ
dHI8Q0NMYXllclR5cGU+IGNjTGF5ZXI7CisgICAgQ0NMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBt
YXAuZmluZChsYXllci0+aWQoKSk7CiAgICAgaWYgKGl0ICE9IG1hcC5lbmQoKSkgewotICAgICAg
ICBjY0xheWVySW1wbCA9IGl0LT5zZWNvbmQ7IC8vIFdlIGFscmVhZHkgaGF2ZSBhbiBlbnRyeSBm
b3IgdGhpcywgd2UganVzdCBuZWVkIHRvIHJlcGFyZW50IGl0LgotICAgICAgICBjY0xheWVySW1w
bC0+Y2xlYXJDaGlsZExpc3QoKTsKKyAgICAgICAgY2NMYXllciA9IHN0YXRpY19wb2ludGVyX2Nh
c3Q8Q0NMYXllclR5cGUsIENDTGF5ZXI+KGl0LT5zZWNvbmQpOyAvLyBXZSBhbHJlYWR5IGhhdmUg
YW4gZW50cnkgZm9yIHRoaXMsIHdlIGp1c3QgbmVlZCB0byByZXBhcmVudCBpdC4KKyAgICAgICAg
Y2NMYXllci0+Y2xlYXJDaGlsZExpc3QoKTsKICAgICB9IGVsc2UgewotICAgICAgICBjY0xheWVy
SW1wbCA9IGxheWVyLT5jcmVhdGVDQ0xheWVySW1wbCgpOwotICAgICAgICBtYXAuc2V0KGxheWVy
LT5pZCgpLCBjY0xheWVySW1wbCk7IC8vIEFkZCBpdCB0byB0aGUgbWFwIHNvIG90aGVyIGxheWVy
cyByZWZlcmVuY2luZyB0aGlzIG9uZSBjYW4gcGljayBpdCB1cC4KKyAgICAgICAgY2NMYXllciA9
IHN0YXRpY19wb2ludGVyX2Nhc3Q8Q0NMYXllclR5cGUsIENDTGF5ZXI+KGxheWVyLT5jcmVhdGVD
Q0xheWVyKCkpOworICAgICAgICBtYXAuc2V0KGxheWVyLT5pZCgpLCBjY0xheWVyKTsgLy8gQWRk
IGl0IHRvIHRoZSBtYXAgc28gb3RoZXIgbGF5ZXJzIHJlZmVyZW5jaW5nIHRoaXMgb25lIGNhbiBw
aWNrIGl0IHVwLgogICAgIH0KIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiYgY2hpbGRyZW4gPSBsYXllci0+Y2hpbGRyZW4oKTsKKyAgICBjb25zdCBWZWN0b3I8UmVm
UHRyPExheWVyVHlwZT4gPiYgY2hpbGRyZW4gPSBsYXllci0+Y2hpbGRyZW4oKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKQotICAgICAgICBjY0xheWVy
SW1wbC0+YWRkQ2hpbGQoc3luY2hyb25pemVUcmVlUmVjdXJzaXZlKGNoaWxkcmVuW2ldLmdldCgp
LCBtYXApKTsKKyAgICAgICAgY2NMYXllci0+YWRkQ2hpbGQoc3luY2hyb25pemVUcmVlUmVjdXJz
aXZlPExheWVyVHlwZSwgQ0NMYXllclR5cGU+KGNoaWxkcmVuW2ldLmdldCgpLCBtYXApKTsKIAot
ICAgIGlmIChMYXllckNocm9taXVtKiBtYXNrTGF5ZXIgPSBsYXllci0+bWFza0xheWVyKCkpCi0g
ICAgICAgIGNjTGF5ZXJJbXBsLT5zZXRNYXNrTGF5ZXIoc3luY2hyb25pemVUcmVlUmVjdXJzaXZl
KG1hc2tMYXllciwgbWFwKSk7CisgICAgaWYgKExheWVyVHlwZSogbWFza0xheWVyID0gbGF5ZXIt
Pm1hc2tMYXllcigpKQorICAgICAgICBjY0xheWVyLT5zZXRNYXNrTGF5ZXIoc3luY2hyb25pemVU
cmVlUmVjdXJzaXZlPExheWVyVHlwZSwgQ0NMYXllclR5cGU+KG1hc2tMYXllciwgbWFwKSk7CiAg
ICAgZWxzZQotICAgICAgICBjY0xheWVySW1wbC0+c2V0TWFza0xheWVyKDApOworICAgICAgICBj
Y0xheWVyLT5zZXRNYXNrTGF5ZXIoMCk7CiAKLSAgICBpZiAoTGF5ZXJDaHJvbWl1bSogcmVwbGlj
YUxheWVyID0gbGF5ZXItPnJlcGxpY2FMYXllcigpKQotICAgICAgICBjY0xheWVySW1wbC0+c2V0
UmVwbGljYUxheWVyKHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShyZXBsaWNhTGF5ZXIsIG1hcCkp
OworICAgIGlmIChMYXllclR5cGUqIHJlcGxpY2FMYXllciA9IGxheWVyLT5yZXBsaWNhTGF5ZXIo
KSkKKyAgICAgICAgY2NMYXllci0+c2V0UmVwbGljYUxheWVyKHN5bmNocm9uaXplVHJlZVJlY3Vy
c2l2ZTxMYXllclR5cGUsIENDTGF5ZXJUeXBlPihyZXBsaWNhTGF5ZXIsIG1hcCkpOwogICAgIGVs
c2UKLSAgICAgICAgY2NMYXllckltcGwtPnNldFJlcGxpY2FMYXllcigwKTsKKyAgICAgICAgY2NM
YXllci0+c2V0UmVwbGljYUxheWVyKDApOwogCi0gICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8o
Y2NMYXllckltcGwuZ2V0KCkpOwotICAgIHJldHVybiBjY0xheWVySW1wbC5yZWxlYXNlKCk7Cisg
ICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8oY2NMYXllci5nZXQoKSk7CisgICAgcmV0dXJuIGNj
TGF5ZXIucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBUcmVlU3luY2hy
b25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKExheWVyQ2hyb21pdW0qIGxheWVyQ2hyb21pdW1Sb290
LCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBwcnBPbGRDQ0xheWVySW1wbFJvb3QpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIENDTGF5ZXJUeXBlPgorUGFzc1JlZlB0cjxD
Q0xheWVyVHlwZT4gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlc0ludGVybmFsKExh
eWVyVHlwZSogbGF5ZXJSb290LCBQYXNzUmVmUHRyPENDTGF5ZXJUeXBlPiBwcnBPbGRDQ0xheWVy
Um9vdCkKIHsKLSAgICBSZWZQdHI8Q0NMYXllckltcGw+IG9sZENDTGF5ZXJJbXBsUm9vdCA9IHBy
cE9sZENDTGF5ZXJJbXBsUm9vdDsKLSAgICAvLyBCdWlsZCBhIG1hcCBmcm9tIGxheWVyIElEcyB0
byBDQ0xheWVySW1wbHMgc28gd2UgY2FuIHJldXNlIGxheWVycyBmcm9tIHRoZSBvbGQgdHJlZS4K
LSAgICBDQ0xheWVySW1wbE1hcCBtYXA7Ci0gICAgaWYgKG9sZENDTGF5ZXJJbXBsUm9vdCkKLSAg
ICAgICAgYWRkQ0NMYXllckltcGxzVG9NYXBSZWN1cnNpdmUobWFwLCBvbGRDQ0xheWVySW1wbFJv
b3QuZ2V0KCkpOworICAgIFJlZlB0cjxDQ0xheWVyVHlwZT4gb2xkQ0NMYXllclJvb3QgPSBwcnBP
bGRDQ0xheWVyUm9vdDsKKyAgICAvLyBCdWlsZCBhIG1hcCBmcm9tIGxheWVyIElEcyB0byBDQ0xh
eWVycyBzbyB3ZSBjYW4gcmV1c2UgbGF5ZXJzIGZyb20gdGhlIG9sZCB0cmVlLgorICAgIENDTGF5
ZXJNYXAgbWFwOworICAgIGlmIChvbGRDQ0xheWVyUm9vdCkKKyAgICAgICAgYWRkQ0NMYXllcnNU
b01hcFJlY3Vyc2l2ZTxDQ0xheWVyVHlwZT4obWFwLCBvbGRDQ0xheWVyUm9vdC5nZXQoKSk7CiAK
ICAgICAvLyBSZWN1cnNpdmVseSBidWlsZCB0aGUgbmV3IGxheWVyIHRyZWUuCi0gICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiBuZXdDQ0xheWVySW1wbFJvb3QgPSBzeW5jaHJvbml6ZVRyZWVSZWN1cnNp
dmUobGF5ZXJDaHJvbWl1bVJvb3QsIG1hcCk7CisgICAgUmVmUHRyPENDTGF5ZXJUeXBlPiBuZXdD
Q0xheWVyUm9vdCA9IHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZTxMYXllclR5cGUsIENDTGF5ZXJU
eXBlPihsYXllclJvb3QsIG1hcCk7CiAKLSAgICByZXR1cm4gbmV3Q0NMYXllckltcGxSb290LnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gbmV3Q0NMYXllclJvb3QucmVsZWFzZSgpOworfQorCitQYXNz
UmVmUHRyPENDTGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKExh
eWVyQ2hyb21pdW0qIGxheWVyUm9vdCwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gb2xkQ0NMYXll
ckltcGxSb290KQoreworICAgIHJldHVybiBzeW5jaHJvbml6ZVRyZWVzSW50ZXJuYWw8TGF5ZXJD
aHJvbWl1bSwgQ0NMYXllckltcGw+KGxheWVyUm9vdCwgb2xkQ0NMYXllckltcGxSb290KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5oCmluZGV4IGE0
ZTQ5NDIxNzM5NWU4ZDJlMTI5NmJkNjU2NjYyZTMyYjExOWFjZmYuLmQ1YjA5ZWQ5NTY3YWU4Yzky
M2JlZTUyZTlhYzFjYjg1OWRkOTMyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVyLmgKQEAgLTMy
LDYgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDQ0xheWVyOwogY2xh
c3MgQ0NMYXllckltcGw7CiBjbGFzcyBMYXllckNocm9taXVtOwogCkBAIC00NSwxMSArNDYsMTUg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUcmVlU3luY2hyb25pemVyKCk7IC8vIE5vdCBpbnN0
YW50aWFibGUuCiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8Q0NMYXllckltcGw+
ID4gQ0NMYXllckltcGxNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPENDTGF5
ZXI+ID4gQ0NMYXllck1hcDsKIAogICAgIC8vIERlY2xhcmVkIGFzIHN0YXRpYyBtZW1iZXIgZnVu
Y3Rpb25zIHNvIHRoZXkgY2FuIGFjY2VzcyBmdW5jdGlvbnMgb24gTGF5ZXJDaHJvbWl1bSBhcyBh
IGZyaWVuZCBjbGFzcy4KLSAgICBzdGF0aWMgdm9pZCBhZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vy
c2l2ZShDQ0xheWVySW1wbE1hcCYsIENDTGF5ZXJJbXBsKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q0NMYXllckltcGw+IHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShMYXllckNocm9taXVtKiwg
Q0NMYXllckltcGxNYXAmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDQ0xheWVyVHlwZT4KKyAg
ICBzdGF0aWMgdm9pZCBhZGRDQ0xheWVyc1RvTWFwUmVjdXJzaXZlKENDTGF5ZXJNYXAmLCBDQ0xh
eWVyVHlwZSopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgQ0NM
YXllclR5cGU+CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NMYXllclR5cGU+IHN5bmNocm9uaXpl
VHJlZVJlY3Vyc2l2ZShMYXllclR5cGUqLCBDQ0xheWVyTWFwJik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBDQ0xheWVyVHlwZT4KKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDQ0xheWVyVHlwZT4gc3luY2hyb25pemVUcmVlc0ludGVybmFsKExheWVyVHlwZSosIFBh
c3NSZWZQdHI8Q0NMYXllclR5cGU+KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVv
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGFlMmFlOGM4MGUyMmExOTM4YWViNDlh
NDY3OTNlMjMwZTI4YjgyOGEuLmYyNjc4N2RhYjc5MDYzZDUyYTg5ODEzMGQyY2EzM2U1N2E1YzEx
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcApAQCAtMzIsMTUgKzMyLDkgQEAK
IAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRlICJWaWRlb0xheWVy
Q2hyb21pdW0uaCIKLSNpbmNsdWRlICJjYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBWaWRlb0xheWVyQ2hyb21pdW0ocHJvdmlkZXIpKTsKLX0KLQogVmlk
ZW9MYXllckNocm9taXVtOjpWaWRlb0xheWVyQ2hyb21pdW0oVmlkZW9GcmFtZVByb3ZpZGVyKiBw
cm92aWRlcikKICAgICA6IExheWVyQ2hyb21pdW0oKQogICAgICwgbV9wcm92aWRlcihwcm92aWRl
cikKQEAgLTUyLDExICs0Niw2IEBAIFZpZGVvTGF5ZXJDaHJvbWl1bTo6flZpZGVvTGF5ZXJDaHJv
bWl1bSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IFZpZGVvTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlQ0NMYXllckltcGwoKQotewotICAgIHJldHVybiBDQ1ZpZGVvTGF5ZXJJbXBsOjpj
cmVhdGUobV9sYXllcklkLCBtX3Byb3ZpZGVyKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9t
aXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xh
eWVyQ2hyb21pdW0uaAppbmRleCA4Nzg4MDZlMjZkYjU0NzMwMjI0MTYyMzBlYzEwNWZhYmY5Yjhl
NjRhLi4zOGE1ZmI4ZWJiM2VkOTI3MGQ4MmJjYzUzNmUzZWVmYjhhMDIyYmVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uaApAQCAtNDQsMTkgKzQ0LDM5IEBAIGNsYXNzIFZpZGVvRnJhbWVQ
cm92aWRlcjsKIC8vIEEgTGF5ZXIgdGhhdCBjb250YWlucyBhIFZpZGVvIGVsZW1lbnQuCiBjbGFz
cyBWaWRlb0xheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb0xh
eWVyQ2hyb21pdW0+IGNyZWF0ZShWaWRlb0ZyYW1lUHJvdmlkZXIqID0gMCk7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgdm9pZCBwdXNoUHJvcGVydGllcyhjb25zdCBW
aWRlb0xheWVyQ2hyb21pdW0qLCBDQ0xheWVyKik7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxW
aWRlb0xheWVyQ2hyb21pdW0+IGNyZWF0ZShWaWRlb0ZyYW1lUHJvdmlkZXIqID0gMCk7CiAgICAg
dmlydHVhbCB+VmlkZW9MYXllckNocm9taXVtKCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgVmlkZW9MYXllckNocm9taXVtKFZpZGVvRnJhbWVQcm92aWRlciopOworcHJvdGVjdGVkOgor
ICAgIFZpZGVvTGF5ZXJDaHJvbWl1bShWaWRlb0ZyYW1lUHJvdmlkZXIqKTsKIAogICAgIC8vIFRo
aXMgcG9pbnRlciBpcyBvbmx5IGZvciBwYXNzaW5nIHRvIENDVmlkZW9MYXllckltcGwncyBjb25z
dHJ1Y3Rvci4gSXQgc2hvdWxkIG5ldmVyIGJlIGRlcmVmZXJlbmNlZCBieSB0aGlzIGNsYXNzLgog
ICAgIFZpZGVvRnJhbWVQcm92aWRlciogbV9wcm92aWRlcjsKIH07CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIExheWVyVHlwZT4gY2xhc3MgU2VyaWFsaXphYmxlVmlkZW9MYXllckNocm9taXVtIDogcHVi
bGljIFZpZGVvTGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgU2VyaWFsaXphYmxlVmlkZW9M
YXllckNocm9taXVtKFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpIDogVmlkZW9MYXllckNo
cm9taXVtKHByb3ZpZGVyKSB7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVyPiBj
cmVhdGVDQ0xheWVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBMYXllclR5cGU6OmNyZWF0ZSht
X2xheWVySWQsIG1fcHJvdmlkZXIpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJv
cGVydGllc1RvKENDTGF5ZXIqIGxheWVyKQorICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6
cHVzaFByb3BlcnRpZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgfQorfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgorUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+
IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVWaWRlb0xheWVyQ2hyb21p
dW08TGF5ZXJUeXBlPihwcm92aWRlcikpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCA3
NGRiN2YxM2VjNGY4ZjRjYWFmNjhlNWFkNzQ3NDViZTkzYjcyZjNiLi4xMGEyYjk3MDE1YTgxOWVk
ZjNkMmM4MDRmYzBiYzYwYjhkNmQxZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5j
cHAKQEAgLTQyLDExICs0Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0
cjxXZWJHTExheWVyQ2hyb21pdW0+IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMTGF5ZXJDaHJvbWl1bSgpKTsKLX0KLQogV2ViR0xM
YXllckNocm9taXVtOjpXZWJHTExheWVyQ2hyb21pdW0oKQogICAgIDogQ2FudmFzTGF5ZXJDaHJv
bWl1bSgpCiAgICAgLCBtX2hhc0FscGhhKHRydWUpCkBAIC05OCwxNiArOTMsNiBAQCB2b2lkIFdl
YkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCogcmVuZGVyZXJDbwogICAgIH0KIH0KIAotdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnB1
c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQotewotICAgIENhbnZhc0xheWVyQ2hy
b21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwotCi0gICAgQ0NDYW52YXNMYXllckltcGwq
IGNhbnZhc0xheWVyID0gc3RhdGljX2Nhc3Q8Q0NDYW52YXNMYXllckltcGwqPihsYXllcik7Ci0g
ICAgY2FudmFzTGF5ZXItPnNldFRleHR1cmVJZChtX3RleHR1cmVJZCk7Ci0gICAgY2FudmFzTGF5
ZXItPnNldEhhc0FscGhhKG1faGFzQWxwaGEpOwotICAgIGNhbnZhc0xheWVyLT5zZXRQcmVtdWx0
aXBsaWVkQWxwaGEobV9wcmVtdWx0aXBsaWVkQWxwaGEpOwotfQotCiBib29sIFdlYkdMTGF5ZXJD
aHJvbWl1bTo6cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VC
dWZmZXIpCiB7CiAgICAgaWYgKG1fdGV4dHVyZVVwZGF0ZWQgfHwgIWxheWVyUmVuZGVyZXJDb250
ZXh0KCkgfHwgIWRyYXdzQ29udGVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRl
eCA0ZGM2OGEzMzA4ZTNmMjMzN2I0YjI2NWM0NjVkNzVkYjJkYzZhN2ZhLi5iOGNlOGM3ZGM2NmY2
NDY2ZThkNWU2MGI1YTY3ZTM4ZjgzMjA0ZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0u
aApAQCAtNDUsNyArNDUsOCBAQCBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNr
OwogLy8gQSBMYXllciBjb250YWluaW5nIGEgV2ViR0wgY2FudmFzCiBjbGFzcyBXZWJHTExheWVy
Q2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBjcmVhdGUoKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBMYXllclR5cGU+IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1
bT4gY3JlYXRlKCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgdm9p
ZCBwdXNoUHJvcGVydGllcyhjb25zdCBXZWJHTExheWVyQ2hyb21pdW0qIGZyb20sIENDTGF5ZXIq
IHRvKTsKIAogICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwogCkBAIC01NCw3ICs1
NSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRp
ZXNUbyhDQ0xheWVySW1wbCopOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwog
ICAgIGJvb2wgcGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopOwogCkBA
IC02Miw4ICs2MiwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldERyYXdpbmdCdWZmZXIoRHJh
d2luZ0J1ZmZlciopOwogICAgIERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2RyYXdpbmdCdWZmZXI7IH0KLXByaXZhdGU6CisKK3Byb3RlY3RlZDoKICAgICBX
ZWJHTExheWVyQ2hyb21pdW0oKTsKKworcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViR0xM
YXllckNocm9taXVtUmF0ZUxpbWl0VGFzazsKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBsYXll
clJlbmRlcmVyQ29udGV4dCgpOwpAQCAtODAsNiArODMsMzggQEAgcHJpdmF0ZToKICAgICBEcmF3
aW5nQnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXll
clR5cGU+IGNsYXNzIFNlcmlhbGl6YWJsZVdlYkdMTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBXZWJH
TExheWVyQ2hyb21pdW0geworcHVibGljOgorICAgIFNlcmlhbGl6YWJsZVdlYkdMTGF5ZXJDaHJv
bWl1bSgpIDogV2ViR0xMYXllckNocm9taXVtKCkgeyB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Q0NMYXllcj4gY3JlYXRlQ0NMYXllcigpCisgICAgeworICAgICAgICByZXR1cm4gTGF5ZXJU
eXBlOjpjcmVhdGUobV9sYXllcklkKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaFBy
b3BlcnRpZXNUbyhDQ0xheWVyKiBsYXllcikKKyAgICB7CisgICAgICAgIExheWVyQ2hyb21pdW06
OnB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgICAgICBwdXNoUHJv
cGVydGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBMYXllclR5cGU+CitQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gV2ViR0xM
YXllckNocm9taXVtOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFs
aXphYmxlV2ViR0xMYXllckNocm9taXVtPExheWVyVHlwZT4oKSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIExheWVyVHlwZT4KK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGll
cyhjb25zdCBXZWJHTExheWVyQ2hyb21pdW0qIGZyb20sIENDTGF5ZXIqIHRvKQoreworICAgIExh
eWVyVHlwZSogbGF5ZXIgPSBzdGF0aWNfY2FzdDxMYXllclR5cGUqPih0byk7CisKKyAgICBsYXll
ci0+c2V0VGV4dHVyZUlkKGZyb20tPm1fdGV4dHVyZUlkKTsKKyAgICBsYXllci0+c2V0SGFzQWxw
aGEoZnJvbS0+bV9oYXNBbHBoYSk7CisgICAgbGF5ZXItPnNldFByZW11bHRpcGxpZWRBbHBoYShm
cm9tLT5tX3ByZW11bHRpcGxpZWRBbHBoYSk7Cit9CisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE5MWFhNjZh
ZTk2YTVjNzc3YjgxYjE0ODRjOWUwNGY0ZDhiODhjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXIuY3BwCkBAIC0w
LDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJjYy9DQ0xheWVyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworQ0NMYXllcjo6Q0NMYXllcigpCit7Cit9CisKK0NDTGF5ZXI6On5DQ0xh
eWVyKCkKK3sKK30KKworfQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0ZjM5YjcxZDJhMWJjM2Q1MzkyYjU0ZmNkNDQwYTBm
MmQyYjIzYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgQ0NMYXllcl9oCisjZGVmaW5lIENDTGF5ZXJfaAorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDQ0xheWVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8Q0NMYXllcj4geworcHVibGljOgorICAgIHZpcnR1YWwgfkNDTGF5ZXIoKTsKKwor
cHJvdGVjdGVkOgorICAgIENDTGF5ZXIoKTsKK307CisKK30KKworI2VuZGlmIC8vIENDTGF5ZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggMDBlMGFkZjhhNTFmZGVjMDRhOWY0MjVmMDQ1N2Fh
MzM4OGNlYTNhYS4uZDU2M2M5ZWE3YjRkNDk3Y2E3MDI0YWFhMTdiNTljZjk2N2M1NDhmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5o
IgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oIgorI2luY2x1ZGUgImNjL0NDTGF5ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3Mu
aCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2UuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CkBAIC00NCw3ICs0NSw3IEBAIGNsYXNzIENDTGF5ZXJTb3J0ZXI7CiBjbGFzcyBMYXllckNo
cm9taXVtOwogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwogCi1jbGFzcyBDQ0xheWVySW1w
bCA6IHB1YmxpYyBSZWZDb3VudGVkPENDTGF5ZXJJbXBsPiB7CitjbGFzcyBDQ0xheWVySW1wbCA6
IHB1YmxpYyBDQ0xheWVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ0xheWVy
SW1wbD4gY3JlYXRlKGludCBpZCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKaW5kZXggZjk2YzU2
OTBkMWJhZjkwYTBlOWI4MGJiMTBiNjgyMGEzOWQ0MWRmOC4uNThlYmFjODNmOTdmZWI3ZWQyMjlk
ZmUxMjNlNzIxY2UxMWY0NzgwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcApAQCAtNDksNiArNDksNyBA
QAogI2luY2x1ZGUgIlNrR3B1RGV2aWNlLmgiCiAjaW5jbHVkZSAiU2tpYVV0aWxzLmgiCiAjaW5j
bHVkZSAiV0VCUEltYWdlRW5jb2Rlci5oIgorI2luY2x1ZGUgImNjL0NDQ2FudmFzTGF5ZXJJbXBs
LmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtODcsNyArODgsNyBA
QCBzdGF0aWMgU2tDYW52YXMqIGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGNvbnN0IEludFNpemUm
IHNpemUsIEltYWdlQnVmZmVyRGF0YSogZAogICAgIGNhbnZhcy0+c2V0RGV2aWNlKG5ldyBTa0dw
dURldmljZShnciwgdGV4dHVyZS5nZXQoKSkpLT51bnJlZigpOwogICAgIGRhdGEtPm1fcGxhdGZv
cm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dDNEKGNvbnRleHQzRCk7CiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGRhdGEtPm1fcGxhdGZvcm1MYXllciA9IENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKGNvbnRleHQzRCwgc2l6ZSk7CisgICAgZGF0YS0+bV9wbGF0
Zm9ybUxheWVyID0gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGU8Q0NDYW52YXNMYXllcklt
cGw+KGNvbnRleHQzRCwgc2l6ZSk7CiAgICAgZGF0YS0+bV9wbGF0Zm9ybUxheWVyLT5zZXRUZXh0
dXJlSWQodGV4dHVyZS5nZXQoKS0+Z2V0VGV4dHVyZUhhbmRsZSgpKTsKICNlbmRpZgogICAgIHJl
dHVybiBjYW52YXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJD
b250ZW50TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExh
eWVyLmNwcAppbmRleCA3YjM3MzMzZTU2MzA4YTA2OGI4NGMzYWNkZWVhNTMxOTVjOTNmZmQyLi42
MGZkM2I3NGM0ZTJhM2M5MDRiODMwYTE3Njk2ZDBhMGM1NmVjNTQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb250ZW50TGF5ZXIu
aCIKIAorI2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwuaCIKICNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJXZWJDb250ZW50TGF5ZXJJbXBsLmgiCiAKQEAg
LTMzLDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkNvbnRlbnRMYXllciBXZWJD
b250ZW50TGF5ZXI6OmNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQp
CiB7Ci0gICAgcmV0dXJuIFdlYkNvbnRlbnRMYXllcihXZWJDb250ZW50TGF5ZXJJbXBsOjpjcmVh
dGUoY29udGVudENsaWVudCkpOworICAgIHJldHVybiBXZWJDb250ZW50TGF5ZXIoV2ViQ29udGVu
dExheWVySW1wbDo6Y3JlYXRlPFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw+KGNvbnRlbnRDbGll
bnQpKTsKIH0KIAogdm9pZCBXZWJDb250ZW50TGF5ZXI6OnNldERyYXdzQ29udGVudChib29sIGRy
YXdzQ29udGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNv
bnRlbnRMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVu
dExheWVySW1wbC5jcHAKaW5kZXggNGY2NGQ1NDcxZTM5NjY1MGY3Y2E3NWU5ZTE2MjVjNjZkNzJm
MTFiNi4uMWU0ZTk5NzQ0ZGRmNjRjY2U2YWJmZGM4M2YyNjFkOWUzOTA4YjVjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAKQEAg
LTM4LDExICszOCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotUGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiBXZWJDb250ZW50TGF5ZXJJ
bXBsOjpjcmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KQotewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGVudExheWVySW1wbChjb250ZW50Q2xpZW50KSk7
Ci19Ci0KIFdlYkNvbnRlbnRMYXllckltcGw6OldlYkNvbnRlbnRMYXllckltcGwoV2ViQ29udGVu
dExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KQogICAgIDogQ29udGVudExheWVyQ2hyb21pdW0o
dGhpcykKICAgICAsIG1fY29udGVudENsaWVudChjb250ZW50Q2xpZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5oCmluZGV4IDUxZjM0NGY3
Y2FmMTI3MTEyNmFjN2I0MjY4ZWQ1NDYxMjE0MjE5ZDguLmFiMzFhMWQ0MTgwNWFiZTgxMWZlNDdk
NzJkMGIyMGM5ZmQzNjE2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkNvbnRlbnRMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJDb250ZW50TGF5ZXJJbXBsLmgKQEAgLTI5LDEyICsyOSwxNiBAQAogI2luY2x1ZGUgIkNvbnRl
bnRMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAorbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgQ0NMYXllcjsKK307CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViQ29udGVudExheWVyQ2xpZW50OwogCiBjbGFzcyBXZWJDb250ZW50TGF5ZXJJbXBs
IDogcHVibGljIFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtLCBwdWJsaWMgV2ViQ29yZTo6
Q29udGVudExheWVyRGVsZWdhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YkNvbnRlbnRMYXllckltcGw+IGNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRD
bGllbnQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIFBhc3NSZWZQ
dHI8V2ViQ29udGVudExheWVySW1wbD4gY3JlYXRlKFdlYkNvbnRlbnRMYXllckNsaWVudCogY29u
dGVudENsaWVudCk7CiAKICAgICB2b2lkIHNldERyYXdzQ29udGVudChib29sKTsKIApAQCAtNDks
NiArNTMsMjggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9kcmF3c0NvbnRlbnQ7CiB9OwogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IGNsYXNzIFNlcmlhbGl6YWJsZVdlYkNvbnRlbnRM
YXllckltcGwgOiBwdWJsaWMgV2ViQ29udGVudExheWVySW1wbCB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgU2VyaWFsaXphYmxlV2ViQ29udGVudExheWVySW1wbChXZWJDb250ZW50TGF5ZXJDbGll
bnQqIGNvbnRlbnRDbGllbnQpIDogV2ViQ29udGVudExheWVySW1wbChjb250ZW50Q2xpZW50KSB7
IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDQ0xheWVyPiBjcmVhdGVDQ0xh
eWVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBMYXllclR5cGU6OmNyZWF0ZShtX2xheWVySWQp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKFdlYkNvcmU6OkND
TGF5ZXIqIGxheWVyKQorICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRp
ZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVt
OjpwdXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CitQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllcklt
cGw+IFdlYkNvbnRlbnRMYXllckltcGw6OmNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNv
bnRlbnRDbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVXZWJD
b250ZW50TGF5ZXJJbXBsPExheWVyVHlwZT4oY29udGVudENsaWVudCkpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdlYkNvbnRlbnRMYXllckltcGxfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIu
Y3BwCmluZGV4IGIzYTMzMmIyYTIxNDJmNjczNWJjZTg0MjhmMDQyOWE1NjllZGM0NTQuLjZkZTMy
OGZiYjBiNDlmNWQzYTQ5YjQ0N2ZjZmQ4NTQ4ZWVjZjE1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAKQEAgLTI2
LDE0ICsyNiwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YkV4dGVybmFsVGV4dHVyZUxheWVyLmgiCiAKKyNpbmNsdWRlICJjYy9DQ1BsdWdpbkxheWVySW1w
bC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIldlYkV4
dGVybmFsVGV4dHVyZUxheWVySW1wbC5oIgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBXZWJFeHRlcm5hbFRleHR1cmVM
YXllcihXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4g
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpjcmVh
dGU8Q0NQbHVnaW5MYXllckltcGw+KCkpOwogfQogCiB2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVyOjpzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcAppbmRleCBl
YzZjMjkwNjAwNTIzNTYzNjRkYmQ2MmU2M2M0YTE0MzM5MGMwNDk5Li4zNDU4Njc5Nzc0NDFkMmEw
ZDdmM2UwMmUzZDlkOWY3ZTdlODJjNzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHAKQEAgLTMzLDEx
ICszMyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotUGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+IFdlYkV4dGVybmFsVGV4
dHVyZUxheWVySW1wbDo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkV4
dGVybmFsVGV4dHVyZUxheWVySW1wbCgpKTsKLX0KLQogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsOjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoKQogICAgIDogUGx1Z2luTGF5ZXJDaHJv
bWl1bSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4
dGVybmFsVGV4dHVyZUxheWVySW1wbC5oCmluZGV4IDdiNzNlNzA4MGRkNmYxZjA1ODRjNGM2MjFk
ZjNhNmVlMzRhNzViNWUuLmJjMWU2YTE5ZDBmOTQ5YzEyMmVlOTA1YTJhZTQzNzMxYTVlNTI3Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbC5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwgOiBwdWJsaWMgV2ViQ29yZTo6UGx1
Z2luTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiBjcmVhdGUoKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBM
YXllclR5cGU+IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4g
Y3JlYXRlKCk7CiAKIHByb3RlY3RlZDoKICAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwo
KTsKQEAgLTQxLDYgKzQxLDI4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3ND
b250ZW50KCkgY29uc3Q7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IGNsYXNz
IFNlcmlhbGl6YWJsZVdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCA6IHB1YmxpYyBXZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGwgeworcHVibGljOgorICAgIFNlcmlhbGl6YWJsZVdlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbCgpIDogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKCkgeyB9
CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q0NMYXllcj4gY3JlYXRlQ0NMYXll
cigpCisgICAgeworICAgICAgICByZXR1cm4gTGF5ZXJUeXBlOjpjcmVhdGUobV9sYXllcklkKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhXZWJDb3JlOjpDQ0xh
eWVyKiBsYXllcikKKyAgICB7CisgICAgICAgIFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgICAgICBXZWJDb3JlOjpQbHVn
aW5MYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsK
KyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CitQYXNzUmVmUHRyPFdl
YkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4gV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpj
cmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXphYmxlV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJJbXBsPExheWVyVHlwZT4oKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCiAjZW5kaWYgLy8gV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAppbmRleCBmMzFjNWE4YzNlMzAwOTFiNGI2ZWM0
ZDY4ZmVkOGEyNjc2MjQxMDFhLi5iNDhmMGY5NTAwMDc4YWFjNTE2MWY4MzVhYjZlY2JhMDlkMWE3
ZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXIu
aCIKIAorI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
RmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1
bS5oIgpAQCAtNzYsNyArNzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViTGF5ZXIgV2Vi
TGF5ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIFdlYkxheWVyKFdlYkxheWVySW1wbDo6Y3Jl
YXRlKCkpOworICAgIHJldHVybiBXZWJMYXllcihXZWJMYXllckltcGw6OmNyZWF0ZTxDQ0xheWVy
SW1wbD4oKSk7CiB9CiAKIHZvaWQgV2ViTGF5ZXI6OnJlc2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJMYXllckltcGwuY3BwCmluZGV4IDEzNzIxYmUwY2M1YTVjMzdmMTYzOWNh
YjdhNTFmOTQ2MGM0ZDU0ZTkuLmIyMDdmZDUzN2QzYTYxMzY0NTNkZGU5Y2NlMWI0MWEzNWY4MTRh
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcApAQCAt
MzAsMTEgKzMwLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1QYXNzUmVmUHRyPFdlYkxheWVySW1wbD4gV2ViTGF5ZXJJbXBsOjpjcmVhdGUoKQot
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViTGF5ZXJJbXBsKCkpOwotfQotCiBXZWJMYXll
ckltcGw6OldlYkxheWVySW1wbCgpCiAgICAgOiBMYXllckNocm9taXVtKCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKaW5kZXggMzg4NGM0MmJjZmFmNGNmYjVj
MTMzZjhlMGUzMjE2YWU5OTg5MTg5ZC4uZmI0NjE3NjA2YjgzOWM1YjU2MWFiOGNjMWI5NjZkMGIy
NjU2MWQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKQEAg
LTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkxheWVySW1wbCA6
IHB1YmxpYyBXZWJDb3JlOjpMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJMYXllckltcGw+IGNyZWF0ZSgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExh
eWVyVHlwZT4gc3RhdGljIFBhc3NSZWZQdHI8V2ViTGF5ZXJJbXBsPiBjcmVhdGUoKTsKIAogcHJv
dGVjdGVkOgogICAgIFdlYkxheWVySW1wbCgpOwpAQCAtNDEsNiArNDEsMjcgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXApOwogfTsKIAordGVtcGxhdGU8dHlwZW5h
bWUgTGF5ZXJUeXBlPiBjbGFzcyBTZXJpYWxpemFibGVXZWJMYXllckltcGwgOiBwdWJsaWMgV2Vi
TGF5ZXJJbXBsIHsKK3B1YmxpYzoKKyAgICBTZXJpYWxpemFibGVXZWJMYXllckltcGwoKSA6IFdl
YkxheWVySW1wbCgpIHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkNDTGF5
ZXI+IGNyZWF0ZUNDTGF5ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIExheWVyVHlwZTo6Y3Jl
YXRlKG1fbGF5ZXJJZCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVz
VG8oV2ViQ29yZTo6Q0NMYXllciogbGF5ZXIpCisgICAgeworICAgICAgICBMYXllckNocm9taXVt
OjpwdXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CitQYXNzUmVmUHRyPFdlYkxheWVySW1wbD4gV2Vi
TGF5ZXJJbXBsOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXph
YmxlV2ViTGF5ZXJJbXBsPExheWVyVHlwZT4oKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gV2ViTGF5ZXJJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCmluZGV4IDk5NmU3MDcx
MDBhYTkxYjk2NjUzNWRjMDhjOTNjMTk1NTAzZjM5NTkuLjUxMWUzZDRlY2RmMmFjNTMzNTA4ODZl
YTdlM2MwMzMwYzRkZjA5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcApAQCAtOSw2ICs5LDcgQEAKIAogI2lu
Y2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3Zp
ZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTE1l
ZGlhRWxlbWVudC5oIgpAQCAtMTIwLDcgKzEyMSw3IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsOjpyZWFkeVN0YXRlQ2hhbmdlZCgpCiAgICAgbV9tZWRpYVBsYXllci0+cmVhZHlTdGF0
ZUNoYW5nZWQoKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKGhh
c1ZpZGVvKCkgJiYgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmICFtX3ZpZGVvTGF5
ZXIpIHsKLSAgICAgICAgbV92aWRlb0xheWVyID0gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUo
dGhpcyk7CisgICAgICAgIG1fdmlkZW9MYXllciA9IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
PENDVmlkZW9MYXllckltcGw+KHRoaXMpOwogICAgICAgICBtX3ZpZGVvTGF5ZXItPnNldE9wYXF1
ZShtX29wYXF1ZSk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCmluZGV4IGE4ZjZkMTI2YmNhMzQ1
MWQzZDZhNzJiYjJkNDVmN2U2YmQ3ZDBhNzYuLjljNzdiYWU3NjA3MTE1Y2EwMDIyNGI2ZjFlYTU1
YmY3NWYxNjZmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBs
dWdpbkNvbnRhaW5lckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIgogCisjaW5jbHVkZSAi
Y2MvQ0NQbHVnaW5MYXllckltcGwuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJD
aHJvbWVDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiUGx1Z2luTGF5ZXJDaHJvbWl1bS5oIgpAQCAt
NTM3LDcgKzUzOCw3IEBAIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OldlYlBsdWdpbkNvbnRhaW5l
ckltcGwoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lCiAgICAgLCBtX2VsZW1lbnQo
ZWxlbWVudCkKICAgICAsIG1fd2ViUGx1Z2luKHdlYlBsdWdpbikKICNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCi0gICAgLCBtX3BsYXRmb3JtTGF5ZXIoUGx1Z2luTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCkpCisgICAgLCBtX3BsYXRmb3JtTGF5ZXIoUGx1Z2luTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlPENDUGx1Z2luTGF5ZXJJbXBsPigpKQogI2VuZGlmCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0
LmNwcAppbmRleCBkMmUxY2ZlZjkzZTI4MjE2NmRhODUxMjU2Yzk1YzBlNjUxMmM2OWJhLi5lODAy
MTk5OTk2NGJiNzZhZDBmNDlkM2QxZmI0NjlhZjEwNWU2ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5j
cHAKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisjaW5jbHVkZSAi
Y2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIK
IAogI2luY2x1ZGUgIkNDTGF5ZXJUcmVlVGVzdENvbW1vbi5oIgpAQCAtODYsOSArODcsOSBAQCBU
RVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JOb09wTGF5
ZXIpCiAgICAgLy8gc2NyZWVuU3BhY2VUcmFuc2Zvcm0sIGFuZCB0aGUgaGllcmFyY2h5IHBhc3Nl
ZCBvbiB0byBjaGlsZHJlbgogICAgIC8vIGxheWVycyBzaG91bGQgYWxzbyBiZSBpZGVudGl0eSB0
cmFuc2Zvcm1zLgogCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBncmFuZENoaWxk
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBh
cmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+
KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGdyYW5kQ2hpbGQgPSBMYXllckNocm9taXVt
OjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CiAgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNl
KCk7CiAgICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7CiAgICAgY2hpbGQtPmFkZENoaWxkKGdy
YW5kQ2hpbGQpOwpAQCAtMTE2LDcgKzExNyw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9u
VGVzdCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclNpbmdsZUxheWVyKQogICAgIC8vIGRpZmZlcmVudCBw
b3NpdGlvbi4gV2hlbiB3ZSBpbml0aWFsaXplIGxheWVycyBmb3IgdGVzdGluZyBoZXJlLCB3ZSBu
ZWVkIHRvIGluaXRpYWxpemUgdGhhdCB1bmludHV0aXZlIHBvc2l0aW9uIHZhbHVlLgogCiAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IGxheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IGxheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwog
ICAgIGxheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAKICAgICAvLyBDYXNlIDE6IHNldHRp
bmcgdGhlIHN1YmxheWVyIHRyYW5zZm9ybSBzaG91bGQgbm90IGFmZmVjdCB0aGlzIGxheWVyJ3Mg
ZHJhdyB0cmFuc2Zvcm0gb3Igc2NyZWVuLXNwYWNlIHRyYW5zZm9ybS4KQEAgLTE4MSw5ICsxODIs
OSBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JT
aW5nbGVMYXllcikKIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNm
b3Jtc0ZvclNpbXBsZUhpZXJhcmNoeSkKIHsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVu
dGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGdyYW5kQ2hpbGQg
PSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFy
ZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4o
KTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZCA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKICAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2Uo
KTsKICAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKICAgICBjaGlsZC0+YWRkQ2hpbGQoZ3Jh
bmRDaGlsZCk7CkBAIC0yNjMsOCArMjY0LDggQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25U
ZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yU2ltcGxlSGllcmFyY2h5KQogCiBURVNUKENDTGF5ZXJU
cmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JTaW5nbGVSZW5kZXJTdXJmYWNl
KQogewotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBj
aGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKICAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGdyYW5kQ2hpbGQgPSBhZG9wdFJl
ZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CiAgICAgcGFyZW50
LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAgICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7CkBA
IC0zMTgsMTMgKzMxOSwxMyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlm
eVRyYW5zZm9ybXNGb3JSZW5kZXJTdXJmYWNlSGllcmFyY2h5KQogICAgIC8vICAgLSBTYW5pdHkg
Y2hlY2sgb24gcmVjdXJzaW9uOiB2ZXJpZnkgdHJhbnNmb3JtcyBvZiBsYXllcnMgZGVzY3JpYmVk
IHcuci50LiBhIHJlbmRlciBzdXJmYWNlIHRoYXQgaXMgZGVzY3JpYmVkIHcuci50LiBhbiBhbmNl
c3RvciByZW5kZXIgc3VyZmFjZS4KICAgICAvLyAgIC0gdmVyaWZ5aW5nIHRoYXQgZWFjaCBsYXll
ciBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIGNvcnJlY3QgcmVuZGVyU3VyZmFjZSBhbmQgdGFyZ2V0
UmVuZGVyU3VyZmFjZSB2YWx1ZXMuCiAKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJl
bmRlclN1cmZhY2UxID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IHJlbmRlclN1cmZhY2UyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkT2ZSb290ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkT2ZSUzEgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGRPZlJTMiA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBncmFuZENoaWxk
T2ZSb290ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVuZGVyU3VyZmFjZTEgPSBMYXllckNocm9taXVtOjpjcmVh
dGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlbmRlclN1cmZh
Y2UyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBjaGlsZE9mUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVy
SW1wbD4oKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGRPZlJTMSA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
Y2hpbGRPZlJTMiA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZE9mUm9vdCA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZTxDQ0xheWVySW1wbD4oKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQ+IGdyYW5kQ2hpbGRPZlJTMSA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVt
V2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhG
b3JjZWREcmF3c0NvbnRlbnQ+IGdyYW5kQ2hpbGRPZlJTMiA9IGFkb3B0UmVmKG5ldyBMYXllckNo
cm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKICAgICBwYXJlbnQtPmNyZWF0ZVJlbmRl
clN1cmZhY2UoKTsKQEAgLTQ1NCw4ICs0NTUsOCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1v
blRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JSZW5kZXJTdXJmYWNlSGllcmFyY2h5KQogCiBURVNU
KENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVJlbmRlclN1cmZhY2VMaXN0Rm9yQ2xp
cExheWVyKQogewotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVuZGVyU3VyZmFjZTEg
PSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFy
ZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiByZW5kZXJTdXJmYWNlMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xh
eWVySW1wbD4oKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQ+IGNoaWxkID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50KCkpOwogICAgIHJlbmRlclN1cmZhY2UxLT5zZXRPcGFjaXR5KDAuOSk7CiAKQEAgLTQ4Myw4
ICs0ODQsOCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVJlbmRlclN1
cmZhY2VMaXN0Rm9yQ2xpcExheWVyKQogCiBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3Qs
IHZlcmlmeVJlbmRlclN1cmZhY2VMaXN0Rm9yVHJhbnNwYXJlbnRDaGlsZCkKIHsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IHJlbmRlclN1cmZhY2UxID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVuZGVy
U3VyZmFjZTEgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CiAgICAgUmVm
UHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBjaGlsZCA9IGFkb3B0UmVm
KG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKICAgICByZW5kZXJT
dXJmYWNlMS0+c2V0T3BhY2l0eSgwKTsKIApAQCAtNTI2LDEwICs1MjcsMTAgQEAgVEVTVChDQ0xh
eWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlDbGlwUmVjdEN1bGxzUmVuZGVyU3VyZmFjZXMp
CiAgICAgLy8KIAogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4
OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZCA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBncmVhdEdyYW5kQ2hp
bGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
cGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1w
bD4oKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3Jl
YXRHcmFuZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogICAg
IFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGVhZk5vZGUxID0g
YWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwogICAg
IFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGVhZk5vZGUyID0g
YWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwogICAg
IHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggNThkZTc1OWJiMzM5
M2I1ZGU3ZDk4NjIwNmI3Y2VmOTNmN2FhMmQ3MS4uZDEwNGZhODY5ODc3ZTdhZTM3YTM3ZGJlN2Iw
NmZiMDI2ZjAwOGMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0zMywxMSArMzMsMTEgQEAKICNpbmNsdWRlICJU
ZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJX
ZWJLaXQuaCIKLSNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1Njb3BlZFRocmVhZFByb3h5LmgiCiAj
aW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFz
ay5oIgorI2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwuaCIKICNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJUaHJlYWQu
aCIKICNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0VGVzdDo6ZG9CZWdpblRlc3QoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgbV9jbGllbnQgPSBNb2NrTGF5ZXJUcmVlSG9zdENsaWVudDo6Y3JlYXRlKHRoaXMp
OwogCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXllciA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByb290TGF5ZXIgPSBMYXllckNo
cm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CiAgICAgbV9sYXllclRyZWVIb3N0ID0gTW9j
a0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBtX2NsaWVudC5nZXQoKSwgcm9vdExheWVyLCBt
X3NldHRpbmdzKTsKICAgICBBU1NFUlRfVFJVRShtX2xheWVyVHJlZUhvc3QpOwogICAgIHJvb3RM
YXllci0+c2V0TGF5ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwpAQCAtMTAxNSw2
ICsxMDE1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgbV91cGRhdGVDb3VudCsrOwogICAgIH0KIAor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVyPiBjcmVhdGVDQ0xheWVyKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBDQ1RpbGVkTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXllcklkKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVyKiBjY0xheWVyKQor
ICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXM8Q0NUaWxlZExheWVy
SW1wbD4odGhpcywgY2NMYXllcik7CisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFBy
b3BlcnRpZXM8Q0NUaWxlZExheWVySW1wbD4odGhpcywgY2NMYXllcik7CisgICAgfQorCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
KENvbnRlbnRMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICAgICAgOiBDb250ZW50TGF5ZXJD
aHJvbWl1bShkZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGYwYjVjNDExYjY1NmFl
ZGU3NTk1NzEwZTRkOGNmZDdkMjRkYjUzM2MuLjA5YWE0NjViYTI1YzdhZGJlZWZlZTMxMzUwZTU1
OWQyOTgzMmRhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2Fu
dmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxDYW52
YXMyRExheWVyQ2hyb21pdW0+IGNhbnZhcyA9IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KG1haW5Db250ZXh0LmdldCgpLCBzaXplKTsKKyAgICAgICAgUmVmUHRyPENhbnZhczJETGF5ZXJD
aHJvbWl1bT4gY2FudmFzID0gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGU8Q0NDYW52YXNM
YXllckltcGw+KG1haW5Db250ZXh0LmdldCgpLCBzaXplKTsKICAgICAgICAgY2FudmFzLT5zZXRJ
c0RyYXdhYmxlKHRydWUpOwogICAgICAgICBzZXRUZXh0dXJlTWFuYWdlcihjYW52YXMuZ2V0KCks
IHRleHR1cmVNYW5hZ2VyLmdldCgpKTsKICAgICAgICAgY2FudmFzLT5zZXRCb3VuZHMoSW50U2l6
ZSg2MDAsIDMwMCkpOwpAQCAtMTQzLDE2ICsxNDMsMTYgQEAgcHJvdGVjdGVkOgogICAgICAgICB7
CiAgICAgICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgc2NvcGVkSW1wbFRocmVhZDsK
IAotICAgICAgICAgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBsYXllckltcGwgPSBjYW52YXMtPmNy
ZWF0ZUNDTGF5ZXJJbXBsKCk7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIHN0YXRpY19jYXN0
PENDQ2FudmFzTGF5ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOworICAg
ICAgICAgICAgUmVmUHRyPENDTGF5ZXI+IGxheWVyID0gY2FudmFzLT5jcmVhdGVDQ0xheWVyKCk7
CisgICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIHN0YXRpY19jYXN0PENDQ2FudmFzTGF5ZXJJbXBs
Kj4obGF5ZXIuZ2V0KCkpLT50ZXh0dXJlSWQoKSk7CiAKICAgICAgICAgICAgIGNhbnZhcy0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhpbXBsQ29udGV4dC5nZXQoKSwgdXBkYXRlcik7Ci0gICAg
ICAgICAgICBjYW52YXMtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKKyAgICAg
ICAgICAgIGNhbnZhcy0+cHVzaFByb3BlcnRpZXNUbyhsYXllci5nZXQoKSk7CiAKICAgICAgICAg
ICAgIGlmICh0aHJlYWRlZCkKLSAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoZnJvbnRUZXh0dXJl
SWQsIHN0YXRpY19jYXN0PENDQ2FudmFzTGF5ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4
dHVyZUlkKCkpOworICAgICAgICAgICAgICAgIEVYUEVDVF9FUShmcm9udFRleHR1cmVJZCwgc3Rh
dGljX2Nhc3Q8Q0NDYW52YXNMYXllckltcGwqPihsYXllci5nZXQoKSktPnRleHR1cmVJZCgpKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoYmFja1RleHR1cmVJ
ZCwgc3RhdGljX2Nhc3Q8Q0NDYW52YXNMYXllckltcGwqPihsYXllckltcGwuZ2V0KCkpLT50ZXh0
dXJlSWQoKSk7CisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGJhY2tUZXh0dXJlSWQsIHN0YXRp
Y19jYXN0PENDQ2FudmFzTGF5ZXJJbXBsKj4obGF5ZXIuZ2V0KCkpLT50ZXh0dXJlSWQoKSk7CiAg
ICAgICAgIH0KICAgICAgICAgY2FudmFzLmNsZWFyKCk7CiAgICAgICAgIHRleHR1cmVNYW5hZ2Vy
LT5yZWR1Y2VNZW1vcnlUb0xpbWl0KDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA3NTM4MTZiYjljZmIwMWJkMmVhNmNj
ZWRkZGE0OGI4MWIwNGFhYjU5Li43ZTBjOTI2MWIzYjgzMmUzNGFjMGFmZDljNmUyOTE4N2RkZWIy
Y2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21p
dW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21p
dW1UZXN0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5o
IgogCisjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJl
ZUhvc3QuaCIKICNpbmNsdWRlICJDQ0xheWVyVHJlZVRlc3RDb21tb24uaCIKICNpbmNsdWRlICJM
YXllclBhaW50ZXJDaHJvbWl1bS5oIgpAQCAtODMsNyArODQsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKSB7IH0KIH07
CiAKLQogY2xhc3MgTGF5ZXJDaHJvbWl1bVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKQEAgLTEzNSwxMyArMTM1LDEzIEBA
IHByb3RlY3RlZDoKIAogICAgIHZvaWQgY3JlYXRlU2ltcGxlVGVzdFRyZWUoKQogICAgIHsKLSAg
ICAgICAgbV9wYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICAgICAgbV9jaGls
ZDEgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICAgICAgbV9jaGlsZDIgPSBMYXllckNo
cm9taXVtOjpjcmVhdGUoKTsKLSAgICAgICAgbV9jaGlsZDMgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKLSAgICAgICAgbV9ncmFuZENoaWxkMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwot
ICAgICAgICBtX2dyYW5kQ2hpbGQyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgICAg
IG1fZ3JhbmRDaGlsZDMgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICAgICAgbV9wYXJl
bnQgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgICAgIG1fY2hp
bGQxID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgICAgICBtX2No
aWxkMiA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICAgICAgbV9j
aGlsZDMgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgICAgIG1f
Z3JhbmRDaGlsZDEgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAg
ICAgIG1fZ3JhbmRDaGlsZDIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7
CisgICAgICAgIG1fZ3JhbmRDaGlsZDMgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllcklt
cGw+KCk7CiAKICAgICAgICAgRVhQRUNUX0NBTEwoKm1fbGF5ZXJUcmVlSG9zdCwgc2V0TmVlZHND
b21taXQoKSkuVGltZXMoQW55TnVtYmVyKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dFJvb3RMYXllcihtX3BhcmVudCk7CkBAIC0xNjQsNyArMTY0LDcgQEAgcHJvdGVjdGVkOgogCiBU
RVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGJhc2ljQ3JlYXRlQW5kRGVzdHJveSkKIHsKLSAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gdGVzdExheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7
CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHRlc3RMYXllciA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZTxDQ0xheWVySW1wbD4oKTsKICAgICBBU1NFUlRfVFJVRSh0ZXN0TGF5ZXIpOwogCiAgICAg
RVhQRUNUX0NBTEwoKm1fbGF5ZXJUcmVlSG9zdCwgc2V0TmVlZHNDb21taXQoKSkuVGltZXMoMCk7
CkBAIC0xNzMsOCArMTczLDggQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBiYXNpY0NyZWF0
ZUFuZERlc3Ryb3kpCiAKIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgYWRkQW5kUmVtb3ZlQ2hp
bGQpCiB7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNo
cm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogCiAgICAgLy8g
VXBvbiBjcmVhdGlvbiwgbGF5ZXJzIHNob3VsZCBub3QgaGF2ZSBjaGlsZHJlbiBvciBwYXJlbnQu
CiAgICAgQVNTRVJUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMCksIHBhcmVudC0+Y2hpbGRyZW4o
KS5zaXplKCkpOwpAQCAtMTk0LDExICsxOTQsMTEgQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0
LCBhZGRBbmRSZW1vdmVDaGlsZCkKIAogVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBpbnNlcnRD
aGlsZCkKIHsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMSA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQzID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxk
NCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBw
YXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IGNoaWxkMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1w
bD4oKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDMg
PSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IGNoaWxkNCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsK
IAogICAgIHBhcmVudC0+c2V0TGF5ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwog
CkBAIC0yNDAsOSArMjQwLDkgQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBpbnNlcnRDaGls
ZCkKIAogVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBpbnNlcnRDaGlsZFBhc3RFbmRPZkxpc3Qp
CiB7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDEgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gY2hpbGQxID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXll
ckltcGw+KCk7CiAKICAgICBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PigwKSwgcGFyZW50
LT5jaGlsZHJlbigpLnNpemUoKSk7CiAKQEAgLTI2Miw5ICsyNjIsOSBAQCBURVNUX0YoTGF5ZXJD
aHJvbWl1bVRlc3QsIGluc2VydENoaWxkUGFzdEVuZE9mTGlzdCkKIAogVEVTVF9GKExheWVyQ2hy
b21pdW1UZXN0LCBpbnNlcnRTYW1lQ2hpbGRUd2ljZSkKIHsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IGNoaWxkMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBjaGlsZDIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJ
bXBsPigpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDEgPSBMYXllckNocm9taXVt
OjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxk
MiA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKIAogICAgIHBhcmVudC0+
c2V0TGF5ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwogCkBAIC0yOTEsNyArMjkx
LDcgQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBpbnNlcnRTYW1lQ2hpbGRUd2ljZSkKIFRF
U1RfRihMYXllckNocm9taXVtVGVzdCwgcmVwbGFjZUNoaWxkV2l0aE5ld0NoaWxkKQogewogICAg
IGNyZWF0ZVNpbXBsZVRlc3RUcmVlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxk
NCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBj
aGlsZDQgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CiAKICAgICBFWFBF
Q1RfRkFMU0UoY2hpbGQ0LT5wYXJlbnQoKSk7CiAKQEAgLTMxMSw4ICszMTEsOCBAQCBURVNUX0Yo
TGF5ZXJDaHJvbWl1bVRlc3QsIHJlcGxhY2VDaGlsZFdpdGhOZXdDaGlsZFRoYXRIYXNPdGhlclBh
cmVudCkKICAgICBjcmVhdGVTaW1wbGVUZXN0VHJlZSgpOwogCiAgICAgLy8gY3JlYXRlIGFub3Ro
ZXIgc2ltcGxlIHRyZWUgd2l0aCB0ZXN0TGF5ZXIgYW5kIGNoaWxkNC4KLSAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gdGVzdExheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IGNoaWxkNCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8
Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkNCA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKICAgICB0ZXN0TGF5ZXItPmFkZENoaWxk
KGNoaWxkNCk7CiAgICAgQVNTRVJUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMSksIHRlc3RMYXll
ci0+Y2hpbGRyZW4oKS5zaXplKCkpOwogICAgIEVYUEVDVF9FUShjaGlsZDQsIHRlc3RMYXllci0+
Y2hpbGRyZW4oKVswXSk7CkBAIC0zNTYsMTEgKzM1NiwxMSBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1
bVRlc3QsIHJlbW92ZUFsbENoaWxkcmVuKQogCiBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIHNl
dENoaWxkcmVuKQogewotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBvbGRQYXJlbnQgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbmV3UGFyZW50
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG9s
ZFBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gbmV3UGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5
ZXJJbXBsPigpOwogCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMSA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQxID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBjaGlsZDIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CiAK
ICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gbmV3Q2hpbGRyZW47CiAgICAgbmV3
Q2hpbGRyZW4uYXBwZW5kKGNoaWxkMSk7CkBAIC0zOTAsNyArMzkwLDcgQEAgVEVTVF9GKExheWVy
Q2hyb21pdW1UZXN0LCBnZXRSb290TGF5ZXJBZnRlclRyZWVNYW5pcHVsYXRpb25zKQogICAgIC8v
IEZvciB0aGlzIHRlc3Qgd2UgZG9uJ3QgY2FyZSBhYm91dCBzZXROZWVkc0NvbW1pdCBjYWxscy4K
ICAgICBFWFBFQ1RfQ0FMTCgqbV9sYXllclRyZWVIb3N0LCBzZXROZWVkc0NvbW1pdCgpKS5UaW1l
cyhBdExlYXN0KDEpKTsKIAotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDQgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQ0ID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogCiAgICAgRVhQRUNUX0VRKG1f
cGFyZW50LmdldCgpLCBtX3BhcmVudC0+cm9vdExheWVyKCkpOwogICAgIEVYUEVDVF9FUShtX3Bh
cmVudC5nZXQoKSwgbV9jaGlsZDEtPnJvb3RMYXllcigpKTsKQEAgLTQ0Myw3ICs0NDMsNyBAQCBU
RVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrU2V0TmVlZHNEaXNwbGF5Q2F1c2VzQ29ycmVj
dEJlaGF2aW9yKQogICAgIC8vICAgMS4gc2V0cyBuZWVkc0Rpc3BsYXkgZmxhZyBhcHByb3ByaWF0
ZWx5LgogICAgIC8vICAgMi4gaW5kaXJlY3RseSBjYWxscyBzZXROZWVkc0NvbW1pdCwgZXhhY3Rs
eSBvbmNlIGZvciBlYWNoIGNhbGwgdG8gc2V0TmVlZHNEaXNwbGF5LgogCi0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IHRlc3RMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NM
YXllckltcGw+KCk7CiAgICAgdGVzdExheWVyLT5zZXRMYXllclRyZWVIb3N0KG1fbGF5ZXJUcmVl
SG9zdC5nZXQoKSk7CiAKICAgICBJbnRTaXplIHRlc3RCb3VuZHMgPSBJbnRTaXplKDUwMSwgNTA4
KTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrU2V0
TmVlZHNEaXNwbGF5Q2F1c2VzQ29ycmVjdEJlaGF2aW9yKQogCiAgICAgLy8gVGhpcyBpcyBqdXN0
IGluaXRpYWxpemF0aW9uLCBidXQgc2V0TmVlZHNDb21taXQgYmVoYXZpb3IgaXMgdmVyaWZpZWQg
YW55d2F5IHRvIGF2b2lkIHdhcm5pbmdzLgogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVF
RFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0Qm91bmRzKHRlc3RCb3VuZHMpKTsK
LSAgICB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICB0ZXN0TGF5ZXIg
PSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CiAgICAgdGVzdExheWVyLT5z
ZXRMYXllclRyZWVIb3N0KG1fbGF5ZXJUcmVlSG9zdC5nZXQoKSk7CiAgICAgRVhQRUNUX0ZBTFNF
KHRlc3RMYXllci0+bmVlZHNEaXNwbGF5KCkpOwogCkBAIC00NzcsMTQgKzQ3NywxNCBAQCBURVNU
X0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrU2V0TmVlZHNEaXNwbGF5Q2F1c2VzQ29ycmVjdEJl
aGF2aW9yKQogICAgIEVYUEVDVF9UUlVFKHRlc3RMYXllci0+bmVlZHNEaXNwbGF5KCkpOwogCiAg
ICAgLy8gQ2FzZSA0OiBMYXllckNocm9taXVtIHNob3VsZCBhY2NlcHQgZGlydHkgcmVjdHMgdGhh
dCBnbyBiZXlvbmQgaXRzIGJvdW5kcy4KLSAgICB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoKTsKKyAgICB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllcklt
cGw+KCk7CiAgICAgdGVzdExheWVyLT5zZXRMYXllclRyZWVIb3N0KG1fbGF5ZXJUcmVlSG9zdC5n
ZXQoKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1Io
MSwgdGVzdExheWVyLT5zZXRCb3VuZHModGVzdEJvdW5kcykpOwogICAgIEVYRUNVVEVfQU5EX1ZF
UklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0TmVlZHNEaXNw
bGF5UmVjdChvdXRPZkJvdW5kc0RpcnR5UmVjdCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RMYXll
ci0+bmVlZHNEaXNwbGF5KCkpOwogCiAgICAgLy8gQ2FzZSA1OiBzZXROZWVkc0Rpc3BsYXkoKSB3
aXRob3V0IHRoZSBkaXJ0eSByZWN0IGFyZy4KLSAgICB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoKTsKKyAgICB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXll
ckltcGw+KCk7CiAgICAgdGVzdExheWVyLT5zZXRMYXllclRyZWVIb3N0KG1fbGF5ZXJUcmVlSG9z
dC5nZXQoKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJ
T1IoMSwgdGVzdExheWVyLT5zZXRCb3VuZHModGVzdEJvdW5kcykpOwogICAgIEVYRUNVVEVfQU5E
X1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0TmVlZHNE
aXNwbGF5KCkpOwpAQCAtNDkzLDEwICs0OTMsMTAgQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0
LCBjaGVja1NldE5lZWRzRGlzcGxheUNhdXNlc0NvcnJlY3RCZWhhdmlvcikKIAogVEVTVF9GKExh
eWVyQ2hyb21pdW1UZXN0LCBjaGVja1Byb3BlcnR5Q2hhbmdlQ2F1c2VzQ29ycmVjdEJlaGF2aW9y
KQogewotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gdGVzdExheWVyID0gTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogICAgIHRlc3RMYXllci0+c2V0TGF5ZXJU
cmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwogCi0gICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IGR1bW15TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsgLy8ganVzdCBhIGR1bW15
IGxheWVyIGZvciB0aGlzIHRlc3QgY2FzZS4KKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZHVt
bXlMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsgLy8ganVzdCBh
IGR1bW15IGxheWVyIGZvciB0aGlzIHRlc3QgY2FzZS4KIAogICAgIC8vIHNhbml0eSBjaGVjayBv
ZiBpbml0aWFsIHRlc3QgY29uZGl0aW9uCiAgICAgRVhQRUNUX0ZBTFNFKHRlc3RMYXllci0+bmVl
ZHNEaXNwbGF5KCkpOwpAQCAtNjEwLDExICs2MTAsMTEgQEAgdm9pZCBhc3NlcnRMYXllclRyZWVI
b3N0TWF0Y2hlc0ZvclN1YnRyZWUoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIENDTGF5ZXJUcmVlSG9z
dCoKIFRFU1QoTGF5ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0LCBlbnRlcmluZ1RyZWUpCiB7
CiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbWFzayA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2FNYXNrID0gTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hp
bGQgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IG1hc2sgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7
CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2EgPSBMYXllckNocm9taXVtOjpjcmVh
dGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2FNYXNr
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogCiAgICAgLy8gU2V0IHVw
IGEgZGV0YWNoZWQgdHJlZSBvZiBsYXllcnMuIFRoZSBob3N0IHBvaW50ZXIgc2hvdWxkIGJlIG5p
bCBmb3IgdGhlc2UgbGF5ZXJzLgogICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwpAQCAtNjQy
LDcgKzY0Miw3IEBAIFRFU1QoTGF5ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0LCBlbnRlcmlu
Z1RyZWUpCiBURVNUKExheWVyQ2hyb21pdW1MYXllclRyZWVIb3N0VGVzdCwgYWRkaW5nTGF5ZXJT
dWJ0cmVlKQogewogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKLSAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7
CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZTxDQ0xheWVySW1wbD4oKTsKICAgICBSZWZQdHI8RmFrZUNDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJU
cmVlSG9zdCA9IEZha2VDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOwogCiAgICAgbGF5ZXJUcmVl
SG9zdC0+c2V0Um9vdExheWVyKHBhcmVudC5nZXQoKSk7CkBAIC02NTAsMTYgKzY1MCwxNiBAQCBU
RVNUKExheWVyQ2hyb21pdW1MYXllclRyZWVIb3N0VGVzdCwgYWRkaW5nTGF5ZXJTdWJ0cmVlKQog
ICAgIEVYUEVDVF9FUShwYXJlbnQtPmxheWVyVHJlZUhvc3QoKSwgbGF5ZXJUcmVlSG9zdC5nZXQo
KSk7CiAKICAgICAvLyBBZGRpbmcgYSBzdWJ0cmVlIHRvIGEgbGF5ZXIgYWxyZWFkeSBhc3NvY2lh
dGVkIHdpdGggYSBob3N0IHNob3VsZCBzZXQgdGhlIGhvc3QgcG9pbnRlciBvbiBhbGwgbGF5ZXJz
IGluIHRoYXQgc3VidHJlZS4KLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGls
ZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBj
aGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVy
SW1wbD4oKTsKICAgICBjaGlsZC0+YWRkQ2hpbGQoZ3JhbmRDaGlsZCk7CiAKICAgICAvLyBNYXNr
cywgcmVwbGljYXMsIGFuZCByZXBsaWNhIG1hc2tzIHNob3VsZCBwaWNrIHVwIHRoZSBuZXcgaG9z
dCB0b28uCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkTWFzayA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZE1hc2sgPSBMYXll
ckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CiAgICAgY2hpbGQtPnNldE1hc2tMYXll
cihjaGlsZE1hc2suZ2V0KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZFJlcGxp
Y2EgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
Y2hpbGRSZXBsaWNhID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogICAg
IGNoaWxkLT5zZXRSZXBsaWNhTGF5ZXIoY2hpbGRSZXBsaWNhLmdldCgpKTsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gY2hpbGRSZXBsaWNhTWFzayA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgp
OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZFJlcGxpY2FNYXNrID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogICAgIGNoaWxkUmVwbGljYS0+c2V0TWFza0xh
eWVyKGNoaWxkUmVwbGljYU1hc2suZ2V0KCkpOwogCiAgICAgcGFyZW50LT5hZGRDaGlsZChjaGls
ZCk7CkBAIC02NzMsMTEgKzY3MywxMSBAQCBURVNUKExheWVyQ2hyb21pdW1MYXllclRyZWVIb3N0
VGVzdCwgYWRkaW5nTGF5ZXJTdWJ0cmVlKQogVEVTVChMYXllckNocm9taXVtTGF5ZXJUcmVlSG9z
dFRlc3QsIGNoYW5nZUhvc3QpCiB7CiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjppbml0aWFs
aXplKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbWFzayA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2FN
YXNrID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllcklt
cGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1hc2sgPSBMYXllckNocm9taXVtOjpj
cmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2Eg
PSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IHJlcGxpY2FNYXNrID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBs
PigpOwogCiAgICAgLy8gU2FtZSBzZXR1cCBhcyB0aGUgcHJldmlvdXMgdGVzdC4KICAgICBwYXJl
bnQtPmFkZENoaWxkKGNoaWxkKTsKQEAgLTcwNiwxMSArNzA2LDExIEBAIFRFU1QoTGF5ZXJDaHJv
bWl1bUxheWVyVHJlZUhvc3RUZXN0LCBjaGFuZ2VIb3N0KQogVEVTVChMYXllckNocm9taXVtTGF5
ZXJUcmVlSG9zdFRlc3QsIGNoYW5nZUhvc3RJblN1YnRyZWUpCiB7CiAgICAgV2ViS2l0OjpXZWJD
b21wb3NpdG9yOjppbml0aWFsaXplKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBmaXJz
dFBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiBmaXJzdENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IHNlY29uZFBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBzZWNvbmRDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBzZWNvbmRHcmFuZENoaWxkID0gTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGZpcnN0UGFyZW50
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBmaXJzdENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBs
PigpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBzZWNvbmRQYXJlbnQgPSBMYXllckNocm9t
aXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHNl
Y29uZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBzZWNvbmRHcmFuZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlPENDTGF5ZXJJbXBsPigpOwogCiAgICAgLy8gRmlyc3QgcHV0IGFsbCBjaGlsZHJlbiB1bmRl
ciB0aGUgZmlyc3QgcGFyZW50IGFuZCBzZXQgdGhlIGZpcnN0IGhvc3QuCiAgICAgZmlyc3RQYXJl
bnQtPmFkZENoaWxkKGZpcnN0Q2hpbGQpOwpAQCAtNzQzLDEzICs3NDMsMTMgQEAgVEVTVChMYXll
ckNocm9taXVtTGF5ZXJUcmVlSG9zdFRlc3QsIGNoYW5nZUhvc3RJblN1YnRyZWUpCiBURVNUKExh
eWVyQ2hyb21pdW1MYXllclRyZWVIb3N0VGVzdCwgcmVwbGFjZU1hc2tBbmRSZXBsaWNhTGF5ZXIp
CiB7CiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwotICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbWFzayA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1hc2tDaGlsZCA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhQ2hpbGQgPSBMYXllckNo
cm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbWFza1JlcGxhY2Vt
ZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IHJlcGxpY2FSZXBsYWNlbWVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllcklt
cGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1hc2sgPSBMYXllckNocm9taXVtOjpj
cmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2Eg
PSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IG1hc2tDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4o
KTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGljYUNoaWxkID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtYXNr
UmVwbGFjZW1lbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2FSZXBsYWNlbWVudCA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKIAogICAgIHBhcmVudC0+c2V0TWFza0xheWVyKG1hc2su
Z2V0KCkpOwogICAgIHBhcmVudC0+c2V0UmVwbGljYUxheWVyKHJlcGxpY2EuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1U
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKaW5kZXggMGRhYzNhYWY4YzY3YmZkYWExMGZlMWExYjZiZGQyZDc3NTk0MmIyNC4u
ZjZkODM2M2VmZWQ3YjQwNTkzNWVjNDAxYjA3NDkzNTRlY2JjMTI0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CkBAIC0xMzEsNiArMTMxLDE3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVGV4dHVyZU1hbmFn
ZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlTWFuYWdlcjsgfQog
CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXI+IGNyZWF0ZUNDTGF5ZXIoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIENDVGlsZWRMYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQpOworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXIqIGxheWVyKQor
ICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXM8Q0NMYXllckltcGw+
KHRoaXMsIGxheWVyKTsKKyAgICAgICAgcHVzaFByb3BlcnRpZXM8Q0NUaWxlZExheWVySW1wbD4o
dGhpcywgbGF5ZXIpOworICAgIH0KKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
VGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KikgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKaW5k
ZXggMTU1N2E3ZDkzMjJjYzZiZTIwNmJmNTBiMDBjMGY0NzA2M2M1NDc4Yi4uYWUxOTcyODc3ODAw
OTUxOTczZmM1YjEyNzhkNTQxYmIzYmQ1NjUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKQEAgLTY5LDE4ICs2OSwx
OSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Nb2NrTGF5ZXJDaHJvbWl1bSgpIHsgfQogCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpCisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXI+IGNyZWF0ZUNDTGF5ZXIoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIE1vY2tDQ0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGNjTGF5ZXIp
CisgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllciogY2NMYXllcikKICAg
ICB7Ci0gICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oY2NMYXllcik7Cisg
ICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzPE1vY2tDQ0xheWVySW1wbD4odGhp
cywgY2NMYXllcik7CiAKICAgICAgICAgTW9ja0NDTGF5ZXJJbXBsKiBtb2NrQ0NMYXllciA9IHN0
YXRpY19jYXN0PE1vY2tDQ0xheWVySW1wbCo+KGNjTGF5ZXIpOwogICAgICAgICBtb2NrQ0NMYXll
ci0+c2V0Q0NMYXllckRlc3RydWN0aW9uTGlzdChtX2NjTGF5ZXJEZXN0cnVjdGlvbkxpc3QpOwog
ICAgIH0KKwogcHJpdmF0ZToKICAgICBNb2NrTGF5ZXJDaHJvbWl1bShWZWN0b3I8aW50PiogY2NM
YXllckRlc3RydWN0aW9uTGlzdCkKICAgICAgICAgOiBMYXllckNocm9taXVtKCkKQEAgLTExOSw5
ICsxMjAsOSBAQCB2b2lkIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKExheWVyQ2hyb21pdW0qIGxh
eWVyLCBDQ0xheWVySW1wbCogY2NMYXllcikKIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5
bmNTaW1wbGVUcmVlRnJvbUVtcHR5KQogewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllclRyZWVSb290ID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKCk7Ci0gICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCkpOwotICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKExheWVyQ2hyb21pdW06
OmNyZWF0ZSgpKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVlUm9vdCA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBsYXllclRyZWVSb290LT5h
ZGRDaGlsZChMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCkpOworICAgIGxheWVy
VHJlZVJvb3QtPmFkZENoaWxkKExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKSk7
CiAKICAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJv
bml6ZXI6OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgMCk7CiAKQEAgLTE1
OCw5ICsxNTksOSBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZVJl
dXNpbmdMYXllcnMpCiBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUFu
ZFByb3BlcnRpZXMpCiB7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyVHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKLSAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChMYXllckNocm9taXVtOjpjcmVhdGUo
KSk7Ci0gICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkp
OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllclRyZWVSb290ID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKExh
eWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKSk7CisgICAgbGF5ZXJUcmVlUm9vdC0+
YWRkQ2hpbGQoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpKTsKIAogICAgIC8v
IFBpY2sgc29tZSByYW5kb20gcHJvcGVydGllcyB0byBzZXQuIFRoZSB2YWx1ZXMgYXJlIG5vdCBp
bXBvcnRhbnQsIHdlJ3JlIGp1c3QgdGVzdGluZyB0aGF0IGF0IGxlYXN0IHNvbWUgcHJvcGVydGll
cyBhcmUgbWFraW5nIGl0IHRocm91Z2guCiAgICAgRmxvYXRQb2ludCByb290UG9zaXRpb24gPSBG
bG9hdFBvaW50KDIuMywgNy40KTsKQEAgLTI1NCw3ICsyNTUsNyBAQCBURVNUKFRyZWVTeW5jaHJv
bml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZVRoZW5EZXN0cm95KQogICAgIG9sZExheWVyVHJlZVJv
b3QtPnJlbW92ZUFsbENoaWxkcmVuKCk7CiAKICAgICAvLyBTeW5jaHJvbml6ZSBhZ2Fpbi4gQWZ0
ZXIgdGhlIHN5bmMgYWxsIENDTGF5ZXJJbXBscyBmcm9tIHRoZSBvbGQgdHJlZSBzaG91bGQgYmUg
ZGVsZXRlZC4KLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbmV3TGF5ZXJUcmVlUm9vdCA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBuZXdMYXll
clRyZWVSb290ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogICAgIGNj
TGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMobmV3TGF5
ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LnJlbGVhc2UoKSk7CiAgICAgZXhwZWN0
VHJlZXNBcmVJZGVudGljYWwobmV3TGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290
LmdldCgpKTsKIApAQCAtMjY4LDIyICsyNjksMjIgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVz
dCwgc3luY1NpbXBsZVRyZWVUaGVuRGVzdHJveSkKIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3Qs
IHN5bmNNYXNrUmVwbGljYUFuZFJlcGxpY2FNYXNrTGF5ZXJzKQogewogICAgIERlYnVnU2NvcGVk
U2V0SW1wbFRocmVhZCBpbXBsOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllclRyZWVS
b290ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hp
bGQoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOwotICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxk
KExheWVyQ2hyb21pdW06OmNyZWF0ZSgpKTsKLSAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChM
YXllckNocm9taXVtOjpjcmVhdGUoKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVy
VHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgbGF5
ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigp
KTsKKyAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChMYXllckNocm9taXVtOjpjcmVhdGU8Q0NM
YXllckltcGw+KCkpOworICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKExheWVyQ2hyb21pdW06
OmNyZWF0ZTxDQ0xheWVySW1wbD4oKSk7CiAKICAgICAvLyBGaXJzdCBjaGlsZCBnZXRzIGEgbWFz
ayBsYXllci4KLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbWFza0xheWVyID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1hc2tMYXllciA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKICAgICBsYXllclRyZWVSb290LT5j
aGlsZHJlbigpWzBdLT5zZXRNYXNrTGF5ZXIobWFza0xheWVyLmdldCgpKTsKIAogICAgIC8vIFNl
Y29uZCBjaGlsZCBnZXRzIGEgcmVwbGljYSBsYXllci4KLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gcmVwbGljYUxheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IHJlcGxpY2FMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVy
SW1wbD4oKTsKICAgICBsYXllclRyZWVSb290LT5jaGlsZHJlbigpWzFdLT5zZXRSZXBsaWNhTGF5
ZXIocmVwbGljYUxheWVyLmdldCgpKTsKIAogICAgIC8vIFRoaXJkIGNoaWxkIGdldHMgYSByZXBs
aWNhIGxheWVyIHdpdGggYSBtYXNrIGxheWVyLgotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBy
ZXBsaWNhTGF5ZXJXaXRoTWFzayA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiByZXBsaWNhTWFza0xheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2FMYXllcldpdGhNYXNrID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiByZXBsaWNhTWFza0xheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBs
PigpOwogICAgIHJlcGxpY2FMYXllcldpdGhNYXNrLT5zZXRNYXNrTGF5ZXIocmVwbGljYU1hc2tM
YXllci5nZXQoKSk7CiAgICAgbGF5ZXJUcmVlUm9vdC0+Y2hpbGRyZW4oKVsyXS0+c2V0UmVwbGlj
YUxheWVyKHJlcGxpY2FMYXllcldpdGhNYXNrLmdldCgpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126663</attachid>
            <date>2012-02-11 18:34:12 -0800</date>
            <delta_ts>2012-10-08 16:11:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75272-20120211213410.patch</filename>
            <type>text/plain</type>
            <size>111489</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDA4ZWUyMGQwOTExYzBm
OGU2OTQ5ODFjNmZlOWUzNWZkZjcxZmU2Ny4uYmNlZTA2NjFjZDUzYmM5NjdlMzBiYmE4M2JhNGFi
NTY1ODQ5ZGU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAxMi0wMi0xMSAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
UmUtZmFjdG9yIGNvbXBvc2l0b3IgdHJlZSBzeW5jaHJvbml6YXRpb24gdG8gc3VwcG9ydCBidWZm
ZXJpbmcgYW5kIHNlcmlhbGl6YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NTI3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlbXBsYXRpemUgQ0NMYXllckltcGwgdHJlZSBjcmVhdGlvbiBzbyB0
aGF0IGl0J3MgcG9zc2libGUgdG8KKyAgICAgICAgc2VyaWFsaXplIG9yIGJ1ZmZlciB0aGUgbGF5
ZXIgdHJlZSBpbiBhIHRlbXBvcmFyeSBkYXRhIHN0cnVjdHVyZS4KKworICAgICAgICBObyBuZXcg
dGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAg
KENhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChTZXJpYWxpemFibGVDYW52YXMyRExh
eWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlQ2FudmFzMkRMYXll
ckNocm9taXVtOjpTZXJpYWxpemFibGVDYW52YXMyRExheWVyQ2hyb21pdW0pOgorICAgICAgICAo
V2ViQ29yZTo6U2VyaWFsaXphYmxlQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZUNhbnZhczJETGF5ZXJDaHJvbWl1bTo6
cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
czJETGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKENvbnRlbnRMYXllckNocm9taXVtKToKKyAgICAgICAgKFNlcmlhbGl6YWJsZUNv
bnRlbnRMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZUNvbnRl
bnRMYXllckNocm9taXVtOjpTZXJpYWxpemFibGVDb250ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVDb250ZW50TGF5ZXJDaHJvbWl1
bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEcmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpHcmFwaGljc0xheWVyQ2hyb21pdW0pOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclBy
ZXNlcnZlczNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxh
eWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoSW1hZ2VMYXllckNocm9taXVtKToKKyAgICAg
ICAgKFNlcmlhbGl6YWJsZUltYWdlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemFibGVJbWFnZUxheWVyQ2hyb21pdW06OlNlcmlhbGl6YWJsZUltYWdlTGF5ZXJDaHJv
bWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVJbWFnZUxheWVyQ2hyb21pdW06
OmNyZWF0ZUNDTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlSW1hZ2VMYXll
ckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAg
KExheWVyQ2hyb21pdW0pOgorICAgICAgICAoU2VyaWFsaXphYmxlTGF5ZXJDaHJvbWl1bSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVMYXllckNocm9taXVtOjpTZXJpYWxpemFibGVM
YXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZUxheWVyQ2hyb21p
dW06OmNyZWF0ZUNDTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlTGF5ZXJD
aHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
ckNocm9taXVtOjpwdXNoUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoUGx1
Z2luTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChTZXJpYWxpemFibGVQbHVnaW5MYXllckNocm9t
aXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZVBsdWdpbkxheWVyQ2hyb21pdW06
OlNlcmlhbGl6YWJsZVBsdWdpbkxheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
aWFsaXphYmxlUGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemFibGVQbHVnaW5MYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1Rv
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkxheWVyQ2hyb21pdW06OnB1
c2hQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xp
ZENvbG9yTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vU29saWRDb2xvckxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFNvbGlkQ29sb3JMYXll
ckNocm9taXVtKToKKyAgICAgICAgKFNlcmlhbGl6YWJsZVNvbGlkQ29sb3JMYXllckNocm9taXVt
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZVNvbGlkQ29sb3JMYXllckNocm9taXVt
OjpTZXJpYWxpemFibGVTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJpYWxpemFibGVTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bTo6cHVz
aFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
bGlkQ29sb3JMYXllckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoVXBkYXRhYmxlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpVcGRh
dGFibGVUaWxlOjpVcGRhdGFibGVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlVwZGF0YWJsZVRp
bGU6OnRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRhYmxlVGlsZTo6bWFuYWdlZFRl
eHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRhYmxlVGlsZTo6aXNEaXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpVcGRhdGFibGVUaWxlOjpjb3B5QW5kQ2xlYXJEaXJ0eSk6CisgICAgICAg
IChUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9t
aXVtOjpwdXNoUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVHJlZVN5bmNocm9uaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRyZWVTeW5jaHJvbml6ZXI6OmFkZENDTGF5ZXJzVG9NYXBSZWN1cnNpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlUmVjdXJzaXZl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXNJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6
ZVRyZWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hy
b25pemVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRyZWVTeW5jaHJvbml6ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNo
cm9taXVtLmg6CisgICAgICAgIChWaWRlb0xheWVyQ2hyb21pdW0pOgorICAgICAgICAoU2VyaWFs
aXphYmxlVmlkZW9MYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJs
ZVZpZGVvTGF5ZXJDaHJvbWl1bTo6U2VyaWFsaXphYmxlVmlkZW9MYXllckNocm9taXVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6YWJsZVZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemFibGVWaWRlb0xheWVyQ2hyb21pdW06
OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkdMTGF5
ZXJDaHJvbWl1bSk6CisgICAgICAgIChTZXJpYWxpemFibGVXZWJHTExheWVyQ2hyb21pdW0pOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxlV2ViR0xMYXllckNocm9taXVtOjpTZXJpYWxp
emFibGVXZWJHTExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXphYmxl
V2ViR0xMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cmlhbGl6YWJsZVdlYkdMTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXIuY3BwOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuaC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllcjo6Q0NMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyOjp+Q0NMYXllcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoQ0NMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVy
U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyk6CisK
IDIwMTItMDItMTEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBzaXplIGFzc2VydCBmb3IgTGVuZ3RoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDI3OGUyMDQ1YThkNWQzMWM1YTc0ODhhNThhM2E4MDE1ZTM4YmU2YjQuLjVkNjE2NDU5ZjY4MmE4
MGEzOWE4NTBjMjJmMTVkNDM1M2JhZDhkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzEgQEAKKzIwMTItMDItMTEgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFJlLWZhY3RvciBjb21wb3NpdG9yIHRyZWUg
c3luY2hyb25pemF0aW9uIHRvIHN1cHBvcnQgYnVmZmVyaW5nIGFuZCBzZXJpYWxpemF0aW9uLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUyNzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZW1wbGF0aXpl
IENDTGF5ZXJJbXBsIHRyZWUgY3JlYXRpb24gc28gdGhhdCBpdCdzIHBvc3NpYmxlIHRvCisgICAg
ICAgIHNlcmlhbGl6ZSBvciBidWZmZXIgdGhlIGxheWVyIHRyZWUgaW4gYSB0ZW1wb3JhcnkgZGF0
YSBzdHJ1Y3R1cmUuCisKKyAgICAgICAgKiBzcmMvV2ViQ29udGVudExheWVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGVudExheWVyOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9XZWJD
b250ZW50TGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViQ29udGVudExheWVySW1wbC5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb250ZW50TGF5ZXJJbXBsKToKKyAg
ICAgICAgKFNlcmlhbGl6YWJsZVdlYkNvbnRlbnRMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0
OjpTZXJpYWxpemFibGVXZWJDb250ZW50TGF5ZXJJbXBsOjpTZXJpYWxpemFibGVXZWJDb250ZW50
TGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U2VyaWFsaXphYmxlV2ViQ29udGVudExheWVy
SW1wbDo6Y3JlYXRlQ0NMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlNlcmlhbGl6YWJsZVdlYkNv
bnRlbnRMYXllckltcGw6OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBz
cmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRl
cm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKiBzcmMvV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsLmg6CisgICAgICAgIChXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwpOgorICAgICAgICAo
U2VyaWFsaXphYmxlV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6U2VyaWFsaXphYmxlV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpTZXJpYWxpemFibGVX
ZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpTZXJpYWxpemFi
bGVXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmNyZWF0ZUNDTGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpTZXJpYWxpemFibGVXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnB1c2hQcm9w
ZXJ0aWVzVG8pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9XZWJMYXllci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9XZWJM
YXllckltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJMYXllckltcGwuaDoKKyAgICAgICAgKFdl
YkxheWVySW1wbCk6CisgICAgICAgIChTZXJpYWxpemFibGVXZWJMYXllckltcGwpOgorICAgICAg
ICAoV2ViS2l0OjpTZXJpYWxpemFibGVXZWJMYXllckltcGw6OlNlcmlhbGl6YWJsZVdlYkxheWVy
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlNlcmlhbGl6YWJsZVdlYkxheWVySW1wbDo6Y3JlYXRl
Q0NMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlNlcmlhbGl6YWJsZVdlYkxheWVySW1wbDo6cHVz
aFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
YXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVhZHlT
dGF0ZUNoYW5nZWQpOgorICAgICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6V2ViUGx1Z2luQ29udGFp
bmVySW1wbCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdDo6ZG9CZWdpblRl
c3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zzo6Y3JlYXRlQ0NMYXllcik6CisgICAgICAgIChDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZyk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExh
eWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJv
bWl1bVRlc3Q6OmZ1bGxMaWZlY3ljbGVUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9MYXllckNocm9t
aXVtVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6
CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXIpOgor
ICAgICAgICAoRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXVEY6OkZha2VUaWxl
ZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHRlc3RzL1RyZWVT
eW5jaHJvbml6ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tMYXllckNocm9taXVt
OjpjcmVhdGVDQ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tMYXllckNocm9taXVtOjpw
dXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKE1vY2tMYXllckNocm9taXVtKToKKyAgICAgICAg
KFdlYkNvcmU6OlRFU1QpOgorCiAyMDEyLTAyLTEwICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBEaXNhYmxlIEluZGV4ZWREQiBwZXJtaXNzaW9ucyBjaGVj
ayBmcm9tIHNoYXJlZCB3b3JrZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNTA4ZjBlY2E2YTFhNWIy
Yzg5MTU5MjEyZDI0MGEwOWZhOThkNDMwYy4uMDNlODA1MTE1Mzc3YjQ3MzU4ZDRhZTI4NDM5OWY5
YjVhYWY4MTM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzI0Miw2ICszMjQyLDggQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1Vw
RGlzcGxheS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0lucHV0SGFuZGxlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBs
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDE0
ZmUzNWE1ODA1ZjZmZDA3ZjMzNzQzNGVmNDU5NWY0Nzk1NDc3NjAuLjhhZmExMTg0MTIyMDliMjI2
OGJmYTcwNzlkMTY0YjExMjgwMzExNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9t
aXVtLmNwcApAQCAtMzQsNyArMzQsNiBAQAogCiAjaW5jbHVkZSAiQ2FudmFzMkRMYXllckNocm9t
aXVtLmgiCiAKLSNpbmNsdWRlICJjYy9DQ0NhbnZhc0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNp
bmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgpAQCAtNDUsMTEgKzQ0LDYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gQ2Fu
dmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNv
bnN0IEludFNpemUmIHNpemUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXMyRExh
eWVyQ2hyb21pdW0oY29udGV4dCwgc2l6ZSkpOwotfQotCiBDYW52YXMyRExheWVyQ2hyb21pdW06
OkNhbnZhczJETGF5ZXJDaHJvbWl1bShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKICAgICA6IENhbnZhc0xheWVyQ2hyb21pdW0oKQogICAgICwgbV9jb250
ZXh0KGNvbnRleHQpCkBAIC0xNDksMTcgKzE0Myw2IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmZsdXNoKCkpOwogfQogCi12b2lkIENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCi17Ci0g
ICAgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhsYXllcik7Ci0KLSAgICBD
Q0NhbnZhc0xheWVySW1wbCogY2FudmFzTGF5ZXIgPSBzdGF0aWNfY2FzdDxDQ0NhbnZhc0xheWVy
SW1wbCo+KGxheWVyKTsKLSAgICBpZiAobV91c2VEb3VibGVCdWZmZXJpbmcpCi0gICAgICAgIGNh
bnZhc0xheWVyLT5zZXRUZXh0dXJlSWQobV9mcm9udFRleHR1cmUtPnRleHR1cmVJZCgpKTsKLSAg
ICBlbHNlCi0gICAgICAgIGNhbnZhc0xheWVyLT5zZXRUZXh0dXJlSWQobV9iYWNrVGV4dHVyZUlk
KTsKLX0KLQogdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVucmVzZXJ2ZUNvbnRlbnRzVGV4
dHVyZSgpCiB7CiAgICAgaWYgKG1fdXNlRG91YmxlQnVmZmVyaW5nKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9t
aXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMy
RExheWVyQ2hyb21pdW0uaAppbmRleCAxMWExYTk1MzkwY2Q4ZTlhZGE4ZmM4NGMxYjk5Yjc0YTBi
MzU2OGNhLi5mOTY1NGM3OGJiNDM2MWY5OTJlZmYwNTdhMjc0N2ZlMWZiMmVhYjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApAQCAtNDcsNyArNDcsOSBAQCBjbGFzcyBSZWdp
b247CiAvLyBBIGxheWVyIGNvbnRhaW5pbmcgYW4gYWNjZWxlcmF0ZWQgMmQgY2FudmFzCiBjbGFz
cyBDYW52YXMyRExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBjcmVh
dGUoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+
IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFNpemUmKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBMYXllclR5cGU+IHZvaWQgcHVzaFByb3BlcnRpZXMoY29uc3QgQ2FudmFzMkRM
YXllckNocm9taXVtKiBmcm9tLCBDQ0xheWVyKiB0byk7CisKICAgICB2aXJ0dWFsIH5DYW52YXMy
RExheWVyQ2hyb21pdW0oKTsKIAogICAgIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkKTsKQEAg
LTU5LDE0ICs2MSwxNCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVl
SG9zdChDQ0xheWVyVHJlZUhvc3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwogICAgIHZpcnR1YWwg
dm9pZCB1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKTsKIAogICAgIHZvaWQgc2V0Q2FudmFzKFNr
Q2FudmFzKik7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgQ2FudmFzMkRMYXllckNocm9t
aXVtKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYpOwogCitwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBDYW52YXMyRExheWVyQ2hyb21pdW1UZXN0OwogICAgIHZvaWQgc2V0VGV4
dHVyZU1hbmFnZXIoVGV4dHVyZU1hbmFnZXIqKTsKIApAQCAtODIsNiArODQsMzkgQEAgcHJpdmF0
ZToKICAgICBTa0NhbnZhcyogbV9jYW52YXM7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXll
clR5cGU+IGNsYXNzIFNlcmlhbGl6YWJsZUNhbnZhczJETGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBD
YW52YXMyRExheWVyQ2hyb21pdW0geworcHVibGljOgorICAgIFNlcmlhbGl6YWJsZUNhbnZhczJE
TGF5ZXJDaHJvbWl1bShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYg
c2l6ZSkgOiBDYW52YXMyRExheWVyQ2hyb21pdW0oY29udGV4dCwgc2l6ZSkgeyB9CisKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllcj4gY3JlYXRlQ0NMYXllcigpCisgICAgeworICAgICAg
ICByZXR1cm4gTGF5ZXJUeXBlOjpjcmVhdGUobV9sYXllcklkKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVyKiBsYXllcikKKyAgICB7CisgICAgICAg
IExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOwor
ICAgICAgICBwdXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CitQYXNzUmVmUHRyPENhbnZhczJETGF5
ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTZXJpYWxpemFibGVDYW52YXMyRExheWVyQ2hyb21pdW08TGF5ZXJUeXBlPihjb250ZXh0
LCBzaXplKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK3ZvaWQgQ2FudmFz
MkRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllcyhjb25zdCBDYW52YXMyRExheWVyQ2hyb21p
dW0qIGZyb20sIENDTGF5ZXIqIHRvKQoreworICAgIExheWVyVHlwZSogbGF5ZXIgPSBzdGF0aWNf
Y2FzdDxMYXllclR5cGUqPih0byk7CisKKyAgICBpZiAobV91c2VEb3VibGVCdWZmZXJpbmcpCisg
ICAgICAgIGxheWVyLT5zZXRUZXh0dXJlSWQobV9mcm9udFRleHR1cmUtPnRleHR1cmVJZCgpKTsK
KyAgICBlbHNlCisgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlSWQobV9iYWNrVGV4dHVyZUlkKTsK
K30KKwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXNMYXllckNocm9taXVtLmNwcAppbmRleCAxODFiYTRlNTgxMmNlODg3OGExNzkyMDI1
OGY4ZWRlOGRmYjQ2MjFlLi4yMzQ3M2M4YWNlZjhjMWJlMzAzZjQwZjExMWQxNjM0ZjJlMjU3Zjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXNMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmNwcApAQCAtMzQsNyArMzQsNiBAQAog
CiAjaW5jbHVkZSAiQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIgogCi0jaW5jbHVkZSAiY2MvQ0NMYXll
ckltcGwuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVy
UmVuZGVyZXJDaHJvbWl1bS5oIgogCkBAIC00NSwxMCArNDQsNSBAQCBDYW52YXNMYXllckNocm9t
aXVtOjpDYW52YXNMYXllckNocm9taXVtKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1w
bD4gQ2FudmFzTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQotewotICAgIHJldHVy
biBDQ0NhbnZhc0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7Ci19Ci0KIH0KICNlbmRpZiAv
LyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllckNocm9taXVt
LmgKaW5kZXggOWU4Y2U3ZDhjYzgyYWE4ODNjMzZhODU4NjMwOTQ0OGYzMzYyMDI3MS4uMTc0NjM3
MzBlZDNjZDM0NzEwNTM4N2RjMDBlNDQ3NTFiZDBjZWM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVy
Q2hyb21pdW0uaApAQCAtNDAsOSArNDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEJh
c2UgY2xhc3MgZm9yIFdlYkdMIGFuZCBhY2NlbGVyYXRlZCAyZCBjYW52YXNlcy4KIGNsYXNzIENh
bnZhc0xheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7Ci1wdWJsaWM6Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOwotCiBw
cm90ZWN0ZWQ6CiAgICAgQ2FudmFzTGF5ZXJDaHJvbWl1bSgpOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRl
bnRMYXllckNocm9taXVtLmNwcAppbmRleCBhYTdmYjVjZjQ2YjA2MjU3ZmY1YmYyMzVmYjNiZjA3
ODQ1MzU0OTlmLi4wNjU3YzZlN2NhYTY0ODgzNmM1YWEwMmQ1OWI2ZDNhMzNkNWRkMjc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC03MywxMSArNzMsNiBAQCBwcml2
YXRlOgogICAgIENvbnRlbnRMYXllckRlbGVnYXRlKiBtX2RlbGVnYXRlOwogfTsKIAotUGFzc1Jl
ZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bT4gQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZShD
b250ZW50TGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDb250ZW50TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkpOwotfQotCiBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6Q29udGVudExheWVyQ2hyb21pdW0oQ29udGVudExheWVyRGVsZWdhdGUqIGRlbGVnYXRl
KQogICAgIDogVGlsZWRMYXllckNocm9taXVtKCkKICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCAzZTg2ODZkMGEwZGJjZTJjMWU4
YzYxYjYwMTgxNDAyNjM3NjZiZjIzLi5jNGM4MjNmNmIyNmZmOTU2YjdjNDUxODZjZTU1MWY5MzNj
MTZjNGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAgLTM1LDcgKzM1LDYg
QEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJUaWxlZExh
eWVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsNyArNTEsNyBAQCBwdWJsaWM6CiAvLyBBIExheWVyIHRo
YXQgcmVxdWlyZXMgYSBHcmFwaGljc0NvbnRleHQgdG8gcmVuZGVyIGl0cyBjb250ZW50cy4KIGNs
YXNzIENvbnRlbnRMYXllckNocm9taXVtIDogcHVibGljIFRpbGVkTGF5ZXJDaHJvbWl1bSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+IGNyZWF0
ZShDb250ZW50TGF5ZXJEZWxlZ2F0ZSopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlw
ZT4gc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+IGNyZWF0ZShDb250ZW50
TGF5ZXJEZWxlZ2F0ZSopOwogCiAgICAgdmlydHVhbCB+Q29udGVudExheWVyQ2hyb21pdW0oKTsK
IApAQCAtNzYsNiArNzUsMjggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBk
YXRlcj4gbV90ZXh0dXJlVXBkYXRlcjsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlw
ZT4gY2xhc3MgU2VyaWFsaXphYmxlQ29udGVudExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ29udGVu
dExheWVyQ2hyb21pdW0geworcHVibGljOgorICAgIGV4cGxpY2l0IFNlcmlhbGl6YWJsZUNvbnRl
bnRMYXllckNocm9taXVtKENvbnRlbnRMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkgOiBDb250ZW50
TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkgeyB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NM
YXllcj4gY3JlYXRlQ0NMYXllcigpCisgICAgeworICAgICAgICByZXR1cm4gTGF5ZXJUeXBlOjpj
cmVhdGUobV9sYXllcklkKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRp
ZXNUbyhDQ0xheWVyKiBsYXllcikKKyAgICB7CisgICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgICAgICBUaWxlZExheWVyQ2hy
b21pdW06OnB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgIH0KK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK1Bhc3NSZWZQdHI8Q29udGVudExheWVy
Q2hyb21pdW0+IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGUoQ29udGVudExheWVyRGVsZWdh
dGUqIGRlbGVnYXRlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXphYmxlQ29u
dGVudExheWVyQ2hyb21pdW08TGF5ZXJUeXBlPihkZWxlZ2F0ZSkpOworfQorCiB9CiAjZW5kaWYg
Ly8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZl
ckNocm9taXVtLmNwcAppbmRleCA1NTFhZGY3Njk3NjI5NWM5OTYwMzIwNDIzZjk2MTk5NDIwYjU0
Nzk5Li45MDFmYTlkOTBhMjVhYzVlY2E2ZmFkNTIwNmZkZDVlNGQ2YmUxNjI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgi
CiAjaW5jbHVkZSAiV2ViR0xMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiY2MvQ0NDYW52YXNM
YXllckltcGwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNDMsNyArMTQ0LDcgQEAg
dm9pZCBEcmF3aW5nQnVmZmVyOjpwdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCkKIFBsYXRmb3JtTGF5
ZXIqIERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKQogewogICAgIGlmICghbV9wbGF0Zm9y
bUxheWVyKSB7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllciA9IFdlYkdMTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKCk7CisgICAgICAgIG1fcGxhdGZvcm1MYXllciA9IFdlYkdMTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlPENDQ2FudmFzTGF5ZXJJbXBsPigpOwogICAgICAgICBtX3BsYXRmb3JtTGF5ZXItPnNl
dERyYXdpbmdCdWZmZXIodGhpcyk7CiAgICAgICAgIG1fcGxhdGZvcm1MYXllci0+c2V0T3BhcXVl
KCFtX2NvbnRleHQtPmdldENvbnRleHRBdHRyaWJ1dGVzKCkuYWxwaGEpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNz
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGVhOTA1NWMzM2E0OGZjZmM0NTUy
YWVkMzllMDZjYWYzM2EyYWRhMzguLjRiOWEyYmI0YWRkMzkwYjZmMGU1MzVkNWNiZjczMWE2NmFm
NjAzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNTQsNiAr
NTQsNyBAQAogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgIlN5c3RlbVRpbWUuaCIKKyNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5
ZXJJbXBsLmgiCiAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
U3RyaW5nRXh0cmFzLmg+CkBAIC03NCw3ICs3NSw3IEBAIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
R3JhcGhpY3NMYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICAs
IG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvcihmYWxzZSkKICAgICAsIG1faW5TZXRD
aGlsZHJlbihmYWxzZSkKIHsKLSAgICBtX2xheWVyID0gQ29udGVudExheWVyQ2hyb21pdW06OmNy
ZWF0ZSh0aGlzKTsKKyAgICBtX2xheWVyID0gQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZTxD
Q1RpbGVkTGF5ZXJJbXBsPih0aGlzKTsKIAogICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwog
fQpAQCAtMzM1LDcgKzMzNiw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250
ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFs
c2U7CiAgICAgaWYgKGltYWdlKSB7CiAgICAgICAgIGlmICghbV9jb250ZW50c0xheWVyLmdldCgp
IHx8IG1fY29udGVudHNMYXllclB1cnBvc2UgIT0gQ29udGVudHNMYXllckZvckltYWdlKSB7Ci0g
ICAgICAgICAgICBSZWZQdHI8SW1hZ2VMYXllckNocm9taXVtPiBpbWFnZUxheWVyID0gSW1hZ2VM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJbWFnZUxheWVyQ2hy
b21pdW0+IGltYWdlTGF5ZXIgPSBJbWFnZUxheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ1RpbGVkTGF5
ZXJJbXBsPigpOwogICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKGltYWdlTGF5ZXIuZ2V0
KCkpOwogICAgICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJG
b3JJbWFnZTsKICAgICAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZCA9IHRydWU7CkBAIC01MzQsNyAr
NTM1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVz
M0QoKQogewogICAgIGlmIChtX3ByZXNlcnZlczNEICYmICFtX3RyYW5zZm9ybUxheWVyKSB7CiAg
ICAgICAgIC8vIENyZWF0ZSB0aGUgdHJhbnNmb3JtIGxheWVyLgotICAgICAgICBtX3RyYW5zZm9y
bUxheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5
ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CiAgICAgICAgIG1fdHJh
bnNmb3JtTGF5ZXItPnNldFByZXNlcnZlczNEKHRydWUpOwogCiAgICAgICAgIC8vIENvcHkgdGhl
IHBvc2l0aW9uIGZyb20gdGhpcyBsYXllci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IDFlNDRlODcwMjNmZWQ1ZjQ2OTM1ZGY3YzNmYmQzNjJlNTRhYjA0MjkuLmZhNWJjMzJk
NThkMzVhNzc0MDVlNDY5NDc2OGZjYjI2ZDNlNWI4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNo
cm9taXVtLmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0
ZXIuaCIKICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29s
b3IuaCIKLSNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJU
cmVlSG9zdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMjksMTEgKzEyOCw2IEBAIHBy
aXZhdGU6CiAgICAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgbV90ZXhTdWJJbWFnZTsKIH07CiAKLVBh
c3NSZWZQdHI8SW1hZ2VMYXllckNocm9taXVtPiBJbWFnZUxheWVyQ2hyb21pdW06OmNyZWF0ZSgp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUxheWVyQ2hyb21pdW0oKSk7Ci19Ci0K
IEltYWdlTGF5ZXJDaHJvbWl1bTo6SW1hZ2VMYXllckNocm9taXVtKCkKICAgICA6IFRpbGVkTGF5
ZXJDaHJvbWl1bSgpCiAgICAgLCBtX2ltYWdlRm9yQ3VycmVudEZyYW1lKDApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5oCmluZGV4IDIxMjdiODU3YzVjMGM5ZTFlZjBjNGVlMTkwNGVhYjdhYjFj
N2YyMWUuLmU3MmU1M2I0ODQ0MGUxNTAzMmY4MDdkMzFiNTJjOGViMzVlOGM3YzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC01MCw3ICs1MCw4IEBAIGNsYXNzIFJlZ2lvbjsKIC8v
IEEgTGF5ZXIgdGhhdCBjb250YWlucyBvbmx5IGFuIEltYWdlIGVsZW1lbnQuCiBjbGFzcyBJbWFn
ZUxheWVyQ2hyb21pdW0gOiBwdWJsaWMgVGlsZWRMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUxheWVyQ2hyb21pdW0+IGNyZWF0ZSgpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VMYXllckNo
cm9taXVtPiBjcmVhdGUoKTsKKwogICAgIHZpcnR1YWwgfkltYWdlTGF5ZXJDaHJvbWl1bSgpOwog
CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwpAQCAtNTksNyArNjAsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENvbnRlbnRzKEltYWdlKiBpbWFnZSk7CiAKLXByaXZh
dGU6Citwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2b2lkIHNl
dFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24pOwpAQCAtNzQsNiArNzUsMjggQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyPiBtX3RleHR1cmVVcGRhdGVyOwog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBjbGFzcyBTZXJpYWxpemFibGVJbWFn
ZUxheWVyQ2hyb21pdW0gOiBwdWJsaWMgSW1hZ2VMYXllckNocm9taXVtIHsKK3B1YmxpYzoKKyAg
ICBTZXJpYWxpemFibGVJbWFnZUxheWVyQ2hyb21pdW0oKSA6IEltYWdlTGF5ZXJDaHJvbWl1bSgp
IHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXI+IGNyZWF0ZUNDTGF5ZXIoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIExheWVyVHlwZTo6Y3JlYXRlKG1fbGF5ZXJJZCk7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllciogbGF5ZXIpCisg
ICAgeworICAgICAgICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxMYXllclR5cGU+KHRo
aXMsIGxheWVyKTsKKyAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxM
YXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBM
YXllclR5cGU+CitQYXNzUmVmUHRyPEltYWdlTGF5ZXJDaHJvbWl1bT4gSW1hZ2VMYXllckNocm9t
aXVtOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXphYmxlSW1h
Z2VMYXllckNocm9taXVtPExheWVyVHlwZT4oKSk7Cit9CisKIH0KICNlbmRpZiAvLyBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNGJjZjI5
N2ZmOTI0NjhjOTg0ZjViNGZjYzEyYmZmNTNiMjY2ZDY3NC4uNzA3MTM4ZDE3ZGRhZmNjMDhhNTcw
ZmYwMjM4ZjczYzQzZWY5YWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTMzLDcgKzMz
LDYgQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVkZSAiTGF5ZXJD
aHJvbWl1bS5oIgogCi0jaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9D
Q0xheWVyVHJlZUhvc3QuaCIKICNpZiBVU0UoU0tJQSkKICNpbmNsdWRlICJOYXRpdmVJbWFnZVNr
aWEuaCIKQEAgLTUwLDExICs0OSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIHN0YXRpYyBp
bnQgc19uZXh0TGF5ZXJJZCA9IDE7CiAKLVBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IExheWVyQ2hyb21p
dW0oKSk7Ci19Ci0KIExheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0oKQogICAgIDogbV9uZWVk
c0Rpc3BsYXkoZmFsc2UpCiAgICAgLCBtX2xheWVySWQoc19uZXh0TGF5ZXJJZCsrKQpAQCAtNDA3
LDQ5ICs0MDEsNiBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheVJlY3QoY29u
c3QgRmxvYXRSZWN0JiBkaXJ0eVJlY3QpCiAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIAotdm9p
ZCBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKLXsK
LSAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQobV9hbmNob3JQb2ludCk7Ci0gICAgbGF5ZXItPnNl
dEFuY2hvclBvaW50WihtX2FuY2hvclBvaW50Wik7Ci0gICAgbGF5ZXItPnNldEJhY2tncm91bmRD
b2xvcihtX2JhY2tncm91bmRDb2xvcik7Ci0gICAgbGF5ZXItPnNldEJhY2tncm91bmRDb3ZlcnNW
aWV3cG9ydChtX2JhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCk7Ci0gICAgbGF5ZXItPnNldEJvdW5k
cyhtX2JvdW5kcyk7Ci0gICAgbGF5ZXItPnNldENvbnRlbnRCb3VuZHMoY29udGVudEJvdW5kcygp
KTsKLSAgICBsYXllci0+c2V0RGVidWdCb3JkZXJDb2xvcihtX2RlYnVnQm9yZGVyQ29sb3IpOwot
ICAgIGxheWVyLT5zZXREZWJ1Z0JvcmRlcldpZHRoKG1fZGVidWdCb3JkZXJXaWR0aCk7Ci0gICAg
bGF5ZXItPnNldERvdWJsZVNpZGVkKG1fZG91YmxlU2lkZWQpOwotICAgIGxheWVyLT5zZXREcmF3
c0NvbnRlbnQoZHJhd3NDb250ZW50KCkpOwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMo
KSk7Ci0gICAgbGF5ZXItPnNldElzTm9uQ29tcG9zaXRlZENvbnRlbnQobV9pc05vbkNvbXBvc2l0
ZWRDb250ZW50KTsKLSAgICBsYXllci0+c2V0TWFza3NUb0JvdW5kcyhtX21hc2tzVG9Cb3VuZHMp
OwotICAgIGxheWVyLT5zZXRTY3JvbGxhYmxlKG1fc2Nyb2xsYWJsZSk7Ci0gICAgbGF5ZXItPnNl
dE5hbWUobV9uYW1lKTsKLSAgICBsYXllci0+c2V0T3BhcXVlKG1fb3BhcXVlKTsKLSAgICBsYXll
ci0+c2V0T3BhY2l0eShtX29wYWNpdHkpOwotICAgIGxheWVyLT5zZXRQb3NpdGlvbihtX3Bvc2l0
aW9uKTsKLSAgICBsYXllci0+c2V0UHJlc2VydmVzM0QocHJlc2VydmVzM0QoKSk7Ci0gICAgbGF5
ZXItPnNldFNjcm9sbFBvc2l0aW9uKG1fc2Nyb2xsUG9zaXRpb24pOwotICAgIGxheWVyLT5zZXRT
dWJsYXllclRyYW5zZm9ybShtX3N1YmxheWVyVHJhbnNmb3JtKTsKLSAgICBsYXllci0+c2V0VHJh
bnNmb3JtKG1fdHJhbnNmb3JtKTsKLSAgICBsYXllci0+c2V0VXBkYXRlUmVjdChtX3VwZGF0ZVJl
Y3QpOwotCi0gICAgbGF5ZXItPnNldFNjcm9sbERlbHRhKGxheWVyLT5zY3JvbGxEZWx0YSgpIC0g
bGF5ZXItPnNlbnRTY3JvbGxEZWx0YSgpKTsKLSAgICBsYXllci0+c2V0U2VudFNjcm9sbERlbHRh
KEludFNpemUoKSk7Ci0KLSAgICBpZiAobWFza0xheWVyKCkpCi0gICAgICAgIG1hc2tMYXllcigp
LT5wdXNoUHJvcGVydGllc1RvKGxheWVyLT5tYXNrTGF5ZXIoKSk7Ci0gICAgaWYgKHJlcGxpY2FM
YXllcigpKQotICAgICAgICByZXBsaWNhTGF5ZXIoKS0+cHVzaFByb3BlcnRpZXNUbyhsYXllci0+
cmVwbGljYUxheWVyKCkpOwotCi0gICAgLy8gUmVzZXQgYW55IHN0YXRlIHRoYXQgc2hvdWxkIGJl
IGNsZWFyZWQgZm9yIHRoZSBuZXh0IHVwZGF0ZS4KLSAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJl
Y3QoKTsKLX0KLQotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
Q0NMYXllckltcGwoKQotewotICAgIHJldHVybiBDQ0xheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJ
ZCk7Ci19Ci0KIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0RGVidWdCb3JkZXJDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpCiB7CiAgICAgbV9kZWJ1Z0JvcmRlckNvbG9yID0gY29sb3I7CkBAIC01MTQs
NiArNDY1LDE3IEBAIGJvb2wgTGF5ZXJDaHJvbWl1bTo6ZGVzY2VuZGFudERyYXdzQ29udGVudCgp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitQYXNzUmVmUHRyPENDTGF5ZXI+IExheWVyQ2hyb21p
dW06OmNyZWF0ZUNDTGF5ZXIoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBQYXNzUmVmUHRyPENDTGF5ZXI+KCk7Cit9CisKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVz
aFByb3BlcnRpZXNUbyhDQ0xheWVyKikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
Kwogdm9pZCBzb3J0TGF5ZXJzKFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPjo6aXRlcmF0
b3IsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPjo6aXRlcmF0b3IsIHZvaWQqKQogewog
ICAgIC8vIEN1cnJlbnRseSB3ZSBkb24ndCB1c2Ugei1vcmRlciB0byBkZWNpZGUgd2hhdCB0byBw
YWludCwgc28gdGhlcmUncyBubyBuZWVkIHRvIGFjdHVhbGx5IHNvcnQgTGF5ZXJDaHJvbWl1bXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmgKaW5kZXggM2ExZTk2YzVmZGE0OWU4MWI0NWRlN2M2YzQxMTllZDJi
Mzk4NjNmMS4uNjE0YmM1NDA4YThlMTBhMjg5ZDUzNmMzZDM5Y2I1ZDAwOGU5NjQ0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VD
aHJvbWl1bS5oIgogI2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhbnNm
b3JtYXRpb25NYXRyaXguaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVyLmgiCiAKICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTUyLDcgKzUzLDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIEND
TGF5ZXJUcmVlSG9zdDsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQzRDsKQEAgLTYzLDcgKzYzLDggQEAgY2xhc3MgUmVnaW9uOwogY2xhc3MgTGF5ZXJDaHJv
bWl1bSA6IHB1YmxpYyBSZWZDb3VudGVkPExheWVyQ2hyb21pdW0+IHsKICAgICBmcmllbmQgY2xh
c3MgTGF5ZXJUaWxlckNocm9taXVtOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExh
eWVyQ2hyb21pdW0+IGNyZWF0ZSgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4g
c3RhdGljIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY3JlYXRlKCk7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgdm9pZCBwdXNoUHJvcGVydGllcyhjb25zdCBMYXll
ckNocm9taXVtKiwgQ0NMYXllciopOwogCiAgICAgdmlydHVhbCB+TGF5ZXJDaHJvbWl1bSgpOwog
CkBAIC0xNzEsNyArMTcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGVidWdCb3JkZXJDb2xv
cihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0RGVidWdCb3JkZXJXaWR0aChmbG9hdCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOworICAgIHZp
cnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXIqKTsKIAogICAgIHR5cGVkZWYgUHJv
Z3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zLCBGcmFnbWVudFNoYWRlckNvbG9yPiBCb3JkZXJQ
cm9ncmFtOwogCkBAIC0yMTUsNiArMjE2LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWx3YXlz
UmVzZXJ2ZVRleHR1cmVzKGJvb2wgYWx3YXlzUmVzZXJ2ZVRleHR1cmVzKSB7IG1fYWx3YXlzUmVz
ZXJ2ZVRleHR1cmVzID0gYWx3YXlzUmVzZXJ2ZVRleHR1cmVzOyB9CiAgICAgYm9vbCBhbHdheXNS
ZXNlcnZlVGV4dHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c1Jlc2VydmVUZXh0dXJlczsg
fQogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXI+IGNyZWF0ZUNDTGF5ZXIoKTsKKwog
cHJvdGVjdGVkOgogICAgIExheWVyQ2hyb21pdW0oKTsKIApAQCAtMjMzLDEwICsyMzYsNiBAQCBw
cm90ZWN0ZWQ6CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9tYXNrTGF5ZXI7CiAKLSAg
ICBmcmllbmQgY2xhc3MgVHJlZVN5bmNocm9uaXplcjsKLSAgICBmcmllbmQgY2xhc3MgQ0NMYXll
ckltcGw7Ci0gICAgLy8gQ29uc3RydWN0cyBhIENDTGF5ZXJJbXBsIG9mIHRoZSBjb3JyZWN0IHJ1
bnRpbWUgdHlwZSBmb3IgdGhpcyBMYXllckNocm9taXVtIHR5cGUuCi0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOwogICAgIGludCBtX2xheWVy
SWQ7CiAKIHByaXZhdGU6CkBAIC0zMDMsNiArMzAyLDU5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X3BhZ2VTY2FsZURpcnR5OwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBjbGFz
cyBTZXJpYWxpemFibGVMYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0geworcHVi
bGljOgorICAgIFNlcmlhbGl6YWJsZUxheWVyQ2hyb21pdW0oKSA6IExheWVyQ2hyb21pdW0oKSB7
IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVyPiBjcmVhdGVDQ0xheWVyKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBMYXllclR5cGU6OmNyZWF0ZShtX2xheWVySWQpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXIqIGxheWVyKQorICAg
IHsKKyAgICAgICAgcHVzaFByb3BlcnRpZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAg
fQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgorUGFzc1JlZlB0cjxMYXllckNo
cm9taXVtPiBMYXllckNocm9taXVtOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU2VyaWFsaXphYmxlTGF5ZXJDaHJvbWl1bTxMYXllclR5cGU+KCkpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBMYXllclR5cGU+Cit2b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVz
KGNvbnN0IExheWVyQ2hyb21pdW0qIGZyb20sIENDTGF5ZXIqIHRvKQoreworICAgIExheWVyVHlw
ZSogbGF5ZXIgPSBzdGF0aWNfY2FzdDxMYXllclR5cGUqPih0byk7CisKKyAgICBsYXllci0+c2V0
QW5jaG9yUG9pbnQoZnJvbS0+bV9hbmNob3JQb2ludCk7CisgICAgbGF5ZXItPnNldEFuY2hvclBv
aW50Wihmcm9tLT5tX2FuY2hvclBvaW50Wik7CisgICAgbGF5ZXItPnNldEJhY2tncm91bmRDb2xv
cihmcm9tLT5tX2JhY2tncm91bmRDb2xvcik7CisgICAgbGF5ZXItPnNldEJvdW5kcyhmcm9tLT5t
X2JvdW5kcyk7CisgICAgbGF5ZXItPnNldENvbnRlbnRCb3VuZHMoZnJvbS0+Y29udGVudEJvdW5k
cygpKTsKKyAgICBsYXllci0+c2V0RGVidWdCb3JkZXJDb2xvcihmcm9tLT5tX2RlYnVnQm9yZGVy
Q29sb3IpOworICAgIGxheWVyLT5zZXREZWJ1Z0JvcmRlcldpZHRoKGZyb20tPm1fZGVidWdCb3Jk
ZXJXaWR0aCk7CisgICAgbGF5ZXItPnNldERvdWJsZVNpZGVkKGZyb20tPm1fZG91YmxlU2lkZWQp
OworICAgIGxheWVyLT5zZXREcmF3c0NvbnRlbnQoZnJvbS0+ZHJhd3NDb250ZW50KCkpOworICAg
IGxheWVyLT5zZXRGaWx0ZXJzKGZyb20tPmZpbHRlcnMoKSk7CisgICAgbGF5ZXItPnNldElzTm9u
Q29tcG9zaXRlZENvbnRlbnQoZnJvbS0+bV9pc05vbkNvbXBvc2l0ZWRDb250ZW50KTsKKyAgICBs
YXllci0+c2V0TWFza3NUb0JvdW5kcyhmcm9tLT5tX21hc2tzVG9Cb3VuZHMpOworICAgIGxheWVy
LT5zZXRTY3JvbGxhYmxlKGZyb20tPm1fc2Nyb2xsYWJsZSk7CisgICAgbGF5ZXItPnNldE5hbWUo
ZnJvbS0+bV9uYW1lKTsKKyAgICBsYXllci0+c2V0T3BhcXVlKGZyb20tPm1fb3BhcXVlKTsKKyAg
ICBsYXllci0+c2V0T3BhY2l0eShmcm9tLT5tX29wYWNpdHkpOworICAgIGxheWVyLT5zZXRQb3Np
dGlvbihmcm9tLT5tX3Bvc2l0aW9uKTsKKyAgICBsYXllci0+c2V0UHJlc2VydmVzM0QoZnJvbS0+
cHJlc2VydmVzM0QoKSk7CisgICAgbGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uKGZyb20tPm1fc2Ny
b2xsUG9zaXRpb24pOworICAgIGxheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShmcm9tLT5tX3N1
YmxheWVyVHJhbnNmb3JtKTsKKyAgICBsYXllci0+c2V0VHJhbnNmb3JtKGZyb20tPm1fdHJhbnNm
b3JtKTsKKyAgICBsYXllci0+c2V0VXBkYXRlUmVjdChmcm9tLT5tX3VwZGF0ZVJlY3QpOworCisg
ICAgbGF5ZXItPnNldFNjcm9sbERlbHRhKGxheWVyLT5zY3JvbGxEZWx0YSgpIC0gbGF5ZXItPnNl
bnRTY3JvbGxEZWx0YSgpKTsKKyAgICBsYXllci0+c2V0U2VudFNjcm9sbERlbHRhKEludFNpemUo
KSk7Cit9CisKIHZvaWQgc29ydExheWVycyhWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID46
Oml0ZXJhdG9yLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID46Oml0ZXJhdG9yLCB2b2lk
Kik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggYmVhNGJhYTQx
MGRkYzAwMDI1YjBhMGRjZGY0MWEyMjNkOGZhODIwZS4uODQ2OTlhY2I1ZDA5NmY2NzQ2ZmFiMzEy
MTFlNzQ5YzRlZmQ5Y2IwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAg
LTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJjYy9DQ0hlYWRzVXBEaXNwbGF5LmgiCiAjaW5jbHVk
ZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUGx1Z2luTGF5ZXJJ
bXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0ND
VmlkZW9MYXllckltcGwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcAppbmRleCAw
NzlhZDJlZGU5NTQ3NTU4MmI4NzA3MjlhNzFhNWQ2MWJkMjhhYjRiLi4wZjIxZDEwYTcyMDJjZjNj
NGE1YmQ3YTVkYmY1OTU2MGEyNjRiNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVt
LmNwcApAQCAtMzEsMTYgKzMxLDkgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgi
CiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCi0jaW5jbHVkZSAiY2MvQ0NMYXll
ckltcGwuaCIKLSNpbmNsdWRlICJjYy9DQ1BsdWdpbkxheWVySW1wbC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8UGx1Z2luTGF5ZXJDaHJvbWl1bT4gUGx1Z2luTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpbkxheWVy
Q2hyb21pdW0pOwotfQotCiBQbHVnaW5MYXllckNocm9taXVtOjpQbHVnaW5MYXllckNocm9taXVt
KCkKICAgICA6IExheWVyQ2hyb21pdW0oKQogICAgICwgbV90ZXh0dXJlSWQoMCkKQEAgLTYzLDEx
ICs1Niw2IEBAIHZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDCiAgICAgbV9kaXJ0eVJlY3QgPSBGbG9h
dFJlY3QoKTsKIH0KIAotUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gUGx1Z2luTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlQ0NMYXllckltcGwoKQotewotICAgIHJldHVybiBDQ1BsdWdpbkxheWVySW1wbDo6
Y3JlYXRlKG1fbGF5ZXJJZCk7Ci19Ci0KIHZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6c2V0VGV4
dHVyZUlkKHVuc2lnbmVkIGlkKQogewogICAgIG1fdGV4dHVyZUlkID0gaWQ7CkBAIC05OSwxNyAr
ODcsNiBAQCB1aW50MzJfdCBQbHVnaW5MYXllckNocm9taXVtOjpnZXRJT1N1cmZhY2VJZCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1faW9TdXJmYWNlSWQ7CiB9CiAKLXZvaWQgUGx1Z2luTGF5ZXJDaHJv
bWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCi17Ci0gICAgTGF5ZXJD
aHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhsYXllcik7Ci0KLSAgICBDQ1BsdWdpbkxheWVySW1w
bCogcGx1Z2luTGF5ZXIgPSBzdGF0aWNfY2FzdDxDQ1BsdWdpbkxheWVySW1wbCo+KGxheWVyKTsK
LSAgICBwbHVnaW5MYXllci0+c2V0VGV4dHVyZUlkKG1fdGV4dHVyZUlkKTsKLSAgICBwbHVnaW5M
YXllci0+c2V0RmxpcHBlZChtX2ZsaXBwZWQpOwotICAgIHBsdWdpbkxheWVyLT5zZXRVVlJlY3Qo
bV91dlJlY3QpOwotICAgIHBsdWdpbkxheWVyLT5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKG1faW9T
dXJmYWNlV2lkdGgsIG1faW9TdXJmYWNlSGVpZ2h0LCBtX2lvU3VyZmFjZUlkKTsKLX0KLQogdm9p
ZCBQbHVnaW5MYXllckNocm9taXVtOjppbnZhbGlkYXRlUmVjdChjb25zdCBGbG9hdFJlY3QmIGRp
cnR5UmVjdCkKIHsKICAgICBzZXROZWVkc0Rpc3BsYXlSZWN0KGRpcnR5UmVjdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXll
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Q
bHVnaW5MYXllckNocm9taXVtLmgKaW5kZXggODQzNjU2OTViYjFkZGM2NTIzMWFkZDA0ZjZmMGQ4
MzAwMDkxZTBkMC4uMTdiYmE4NjVhMDMwZjdlZGJkMTMzZGQ1Y2E4MjM4NDVlZTg2MGZhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2lu
TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaApAQCAtMzYsMTAgKzM2LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vIEEgTGF5ZXIgY29udGFpbmluZyBhIHRoZSByZW5kZXJlZCBvdXRwdXQg
b2YgYSBwbHVnaW4gaW5zdGFuY2UuCiBjbGFzcyBQbHVnaW5MYXllckNocm9taXVtIDogcHVibGlj
IExheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpbkxh
eWVyQ2hyb21pdW0+IGNyZWF0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luTGF5ZXJD
aHJvbWl1bT4gY3JlYXRlKCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0
aWMgdm9pZCBwdXNoUHJvcGVydGllcyhQbHVnaW5MYXllckNocm9taXVtKiwgQ0NMYXllciopOwog
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgp
OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogCiAgICAgLy8gQ29kZSBwYXRoIGZvciBwbHVn
aW5zIHdoaWNoIHN1cHBseSB0aGVpciBvd24gdGV4dHVyZSBJRC4KICAgICB2b2lkIHNldFRleHR1
cmVJZCh1bnNpZ25lZCB0ZXh0dXJlSWQpOwpAQCAtNTMsOCArNTMsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDMy
X3QgaW9TdXJmYWNlSWQpOwogICAgIHVpbnQzMl90IGdldElPU3VyZmFjZUlkKCkgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwotCiAgICAg
dm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCk7CiAKIHByb3Rl
Y3RlZDoKQEAgLTcwLDYgKzY4LDM5IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fZGlydHlS
ZWN0OwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBjbGFzcyBTZXJpYWxpemFi
bGVQbHVnaW5MYXllckNocm9taXVtIDogcHVibGljIFBsdWdpbkxheWVyQ2hyb21pdW0geworcHVi
bGljOgorICAgIFNlcmlhbGl6YWJsZVBsdWdpbkxheWVyQ2hyb21pdW0oKSA6IFBsdWdpbkxheWVy
Q2hyb21pdW0oKSB7IH0KKworICAgIFBhc3NSZWZQdHI8Q0NMYXllcj4gY3JlYXRlQ0NMYXllcigp
CisgICAgeworICAgICAgICByZXR1cm4gTGF5ZXJUeXBlOjpjcmVhdGUobV9sYXllcklkKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVyKiBsYXllcikK
KyAgICB7CisgICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzPExheWVyVHlwZT4o
dGhpcywgbGF5ZXIpOworICAgICAgICBwdXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxh
eWVyKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CitQYXNzUmVm
UHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IFBsdWdpbkxheWVyQ2hyb21pdW06OmNyZWF0ZSgpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVQbHVnaW5MYXllckNocm9taXVt
PExheWVyVHlwZT4oKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK3ZvaWQg
UGx1Z2luTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXMoUGx1Z2luTGF5ZXJDaHJvbWl1bSog
ZnJvbSwgQ0NMYXllciogdG8pCit7CisgICAgTGF5ZXJUeXBlKiBsYXllciA9IHN0YXRpY19jYXN0
PExheWVyVHlwZSo+KHRvKTsKKworICAgIGxheWVyLT5zZXRUZXh0dXJlSWQoZnJvbS0+bV90ZXh0
dXJlSWQpOworICAgIGxheWVyLT5zZXRGbGlwcGVkKGZyb20tPm1fZmxpcHBlZCk7CisgICAgbGF5
ZXItPnNldFVWUmVjdChmcm9tLT5tX3V2UmVjdCk7CisgICAgbGF5ZXItPnNldElPU3VyZmFjZVBy
b3BlcnRpZXMoZnJvbS0+bV9pb1N1cmZhY2VXaWR0aCwgZnJvbS0+bV9pb1N1cmZhY2VIZWlnaHQs
IGZyb20tPm1faW9TdXJmYWNlSWQpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggZWQxMzU0NmJhZTg3ZjQwNTFiMzBlMzQ5NGMwZjJmZGU4NTNmMWUzMy4uMmJlZDBlOWI0
ZGRlZDdiYTc1NjhmYmIzODYzMzEzZGU3NTMzMjg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU29saWRDb2xvckxheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NvbGlkQ29s
b3JMYXllckNocm9taXVtLmNwcApAQCAtMzMsMTYgKzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlQ0NMYXllckltcGwoKQotewotICAgIHJldHVybiBDQ1NvbGlkQ29sb3JMYXllckltcGw6
OmNyZWF0ZShpZCgpKTsKLX0KLQotUGFzc1JlZlB0cjxTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bT4g
U29saWRDb2xvckxheWVyQ2hyb21pdW06OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bSgpKTsKLX0KLQogU29saWRDb2xvckxheWVyQ2hy
b21pdW06OlNvbGlkQ29sb3JMYXllckNocm9taXVtKCkKICAgICA6IExheWVyQ2hyb21pdW0oKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U29saWRDb2xvckxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1NvbGlkQ29sb3JMYXllckNocm9taXVtLmgKaW5kZXggMWQxNDg5MGJkMGUx
ZjBjMjBjNjNjNmQyMzE3MTU5NDhkMjE4OTRmYy4uZmE0MTI1YmE5ODkxZGQ1OTNiM2IxYTNjNDU1
M2ZiOGYyNjZiNjg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU29saWRDb2xvckxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Tb2xpZENvbG9yTGF5ZXJDaHJvbWl1bS5oCkBA
IC0zOCw4ICszOCw3IEBAIGNsYXNzIExheWVyVGlsZXJDaHJvbWl1bTsKIC8vIHNldEJhY2tncm91
bmRDb2xvcigpIG9uIHRoZSBiYXNlIGNsYXNzLgogY2xhc3MgU29saWRDb2xvckxheWVyQ2hyb21p
dW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOwotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNvbGlkQ29sb3JMYXllckNocm9taXVtPiBjcmVhdGUoKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBMYXllclR5cGU+IHN0YXRpYyBQYXNzUmVmUHRyPFNvbGlkQ29sb3JMYXllckNocm9taXVt
PiBjcmVhdGUoKTsKIAogICAgIHZpcnR1YWwgflNvbGlkQ29sb3JMYXllckNocm9taXVtKCk7CiAK
QEAgLTQ3LDYgKzQ2LDI3IEBAIHByb3RlY3RlZDoKICAgICBTb2xpZENvbG9yTGF5ZXJDaHJvbWl1
bSgpOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBjbGFzcyBTZXJpYWxpemFi
bGVTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBTb2xpZENvbG9yTGF5ZXJDaHJvbWl1
bSB7CitwdWJsaWM6CisgICAgU2VyaWFsaXphYmxlU29saWRDb2xvckxheWVyQ2hyb21pdW0oKSA6
IFNvbGlkQ29sb3JMYXllckNocm9taXVtKCkgeyB9CisKKyAgICBQYXNzUmVmUHRyPENDTGF5ZXI+
IGNyZWF0ZUNDTGF5ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIExheWVyVHlwZTo6Y3JlYXRl
KG1fbGF5ZXJJZCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8o
Q0NMYXllciogbGF5ZXIpCisgICAgeworICAgICAgICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVy
dGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBMYXllclR5cGU+CitQYXNzUmVmUHRyPFNvbGlkQ29sb3JMYXllckNocm9taXVtPiBTb2xp
ZENvbG9yTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNlcmlhbGl6YWJsZVNvbGlkQ29sb3JMYXllckNocm9taXVtPExheWVyVHlwZT4oKSk7Cit9CisK
IH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDQzNGVkNjliNjcwM2Y1NTAxNGY5MDlhZGFlZDRmYjFl
ZmYwN2ZmZWUuLjY2ODVjYzc0MWNhZmI4OTlkODE4MDYzNzBjNjE2OWZhN2QwMTdmY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMzUsOSArMzUsNyBAQAogI2luY2x1ZGUg
Ik1hdGhFeHRyYXMuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCi0jaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVV
cGRhdGVyLmgiCi0jaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgogCiAvLyBTdGFydCB0aWxpbmcgd2hlbiB0aGUgd2lkdGggYW5kIGhl
aWdodCBvZiBhIGxheWVyIGFyZSBsYXJnZXIgdGhhbiB0aGlzIHNpemUuCkBAIC01MCwzMyArNDgs
NiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFVwZGF0YWJsZVRpbGUgOiBwdWJsaWMgQ0NMYXllclRpbGluZ0RhdGE6OlRpbGUgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFVwZGF0YWJsZVRpbGUpOwotcHVibGljOgotICAgIGV4cGxpY2l0
IFVwZGF0YWJsZVRpbGUoUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiB0
ZXh0dXJlKQotICAgICAgICA6IG1fcGFydGlhbFVwZGF0ZShmYWxzZSkKLSAgICAgICAgLCBtX3Rl
eHR1cmUodGV4dHVyZSkKLSAgICB7Ci0gICAgfQotCi0gICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQotICAgIE1hbmFn
ZWRUZXh0dXJlKiBtYW5hZ2VkVGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS0+dGV4dHVyZSgp
OyB9Ci0KLSAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiAhbV9kaXJ0eVJlY3QuaXNF
bXB0eSgpOyB9Ci0gICAgdm9pZCBjb3B5QW5kQ2xlYXJEaXJ0eSgpCi0gICAgewotICAgICAgICBt
X3VwZGF0ZVJlY3QgPSBtX2RpcnR5UmVjdDsKLSAgICAgICAgbV9kaXJ0eVJlY3QgPSBJbnRSZWN0
KCk7Ci0gICAgfQotCi0gICAgSW50UmVjdCBtX2RpcnR5UmVjdDsKLSAgICBJbnRSZWN0IG1fdXBk
YXRlUmVjdDsKLSAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsKLSAgICBib29sIG1fcGFydGlhbFVw
ZGF0ZTsKLXByaXZhdGU6Ci0gICAgT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+
IG1fdGV4dHVyZTsKLX07Ci0KIFRpbGVkTGF5ZXJDaHJvbWl1bTo6VGlsZWRMYXllckNocm9taXVt
KCkKICAgICA6IExheWVyQ2hyb21pdW0oKQogICAgICwgbV90ZXh0dXJlRm9ybWF0KEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX0VOVU0pCkBAIC05MiwxMSArNjMsNiBAQCBUaWxlZExheWVyQ2hy
b21pdW06On5UaWxlZExheWVyQ2hyb21pdW0oKQogewogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJ
bXBsPiBUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKLXsKLSAgICByZXR1
cm4gQ0NUaWxlZExheWVySW1wbDo6Y3JlYXRlKGlkKCkpOwotfQotCiB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKQogewogICAgIGNvbnN0IElu
dFNpemUgdGlsZVNpemUobWluKGRlZmF1bHRUaWxlU2l6ZSwgY29udGVudEJvdW5kcygpLndpZHRo
KCkpLCBtaW4oZGVmYXVsdFRpbGVTaXplLCBjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpKTsKQEAg
LTIzOSwzNCArMjA1LDYgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnNldElzTWFzayhib29s
IGlzTWFzaykKICAgICBzZXRUaWxpbmdPcHRpb24oaXNNYXNrID8gTmV2ZXJUaWxlIDogQXV0b1Rp
bGUpOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCogbGF5ZXIpCi17Ci0gICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhs
YXllcik7Ci0KLSAgICBDQ1RpbGVkTGF5ZXJJbXBsKiB0aWxlZExheWVyID0gc3RhdGljX2Nhc3Q8
Q0NUaWxlZExheWVySW1wbCo+KGxheWVyKTsKLQotICAgIHRpbGVkTGF5ZXItPnNldFNraXBzRHJh
dyhtX3NraXBzRHJhdyk7Ci0gICAgdGlsZWRMYXllci0+c2V0Q29udGVudHNTd2l6emxlZChtX3Nh
bXBsZWRUZXhlbEZvcm1hdCAhPSBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3Jt
YXRSR0JBKTsKLSAgICB0aWxlZExheWVyLT5zZXRUaWxpbmdEYXRhKCptX3RpbGVyKTsKLSAgICBW
ZWN0b3I8VXBkYXRhYmxlVGlsZSo+IGludmFsaWRUaWxlczsKLQotICAgIGZvciAoQ0NMYXllclRp
bGluZ0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3RpbGVyLT50aWxlcygp
LmJlZ2luKCk7IGl0ZXIgIT0gbV90aWxlci0+dGlsZXMoKS5lbmQoKTsgKytpdGVyKSB7Ci0gICAg
ICAgIGludCBpID0gaXRlci0+Zmlyc3QuZmlyc3Q7Ci0gICAgICAgIGludCBqID0gaXRlci0+Zmly
c3Quc2Vjb25kOwotICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gc3RhdGljX2Nhc3Q8VXBk
YXRhYmxlVGlsZSo+KGl0ZXItPnNlY29uZC5nZXQoKSk7Ci0gICAgICAgIGlmICghdGlsZS0+bWFu
YWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3Jt
YXQpKSB7Ci0gICAgICAgICAgICBpbnZhbGlkVGlsZXMuYXBwZW5kKHRpbGUpOwotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRpbGUtPmlzRGlydHkoKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHRpbGVkTGF5ZXItPnB1c2hUaWxlUHJvcGVy
dGllcyhpLCBqLCB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT50ZXh0dXJlSWQoKSwgdGlsZS0+bV9v
cGFxdWVSZWN0KTsKLSAgICB9Ci0gICAgZm9yIChWZWN0b3I8VXBkYXRhYmxlVGlsZSo+Ojpjb25z
dF9pdGVyYXRvciBpdGVyID0gaW52YWxpZFRpbGVzLmJlZ2luKCk7IGl0ZXIgIT0gaW52YWxpZFRp
bGVzLmVuZCgpOyArK2l0ZXIpCi0gICAgICAgIG1fdGlsZXItPnRha2VUaWxlKCgqaXRlciktPmko
KSwgKCppdGVyKS0+aigpKTsKLX0KLQogVGV4dHVyZU1hbmFnZXIqIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6dGV4dHVyZU1hbmFnZXIoKSBjb25zdAogewogICAgIGlmICghbGF5ZXJUcmVlSG9zdCgpKQpA
QCAtNDM5LDYgKzM3NywxNiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBk
YXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICAvLyBSZW1vdmUgdGlsZXMgZnJvbSB0aGUgdGlsZXIgd2hlbiB0aGV5IGFyZSBp
bnZhbGlkLgorICAgIFZlY3RvcjxVcGRhdGFibGVUaWxlKj4gaW52YWxpZFRpbGVzOworICAgIGZv
ciAoQ0NMYXllclRpbGluZ0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3Rp
bGVyLT50aWxlcygpLmJlZ2luKCk7IGl0ZXIgIT0gbV90aWxlci0+dGlsZXMoKS5lbmQoKTsgKytp
dGVyKSB7CisgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSBzdGF0aWNfY2FzdDxVcGRhdGFi
bGVUaWxlKj4oaXRlci0+c2Vjb25kLmdldCgpKTsKKyAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2Vk
VGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkp
CisgICAgICAgICAgICBpbnZhbGlkVGlsZXMuYXBwZW5kKHRpbGUpOworICAgIH0KKyAgICBmb3Ig
KFZlY3RvcjxVcGRhdGFibGVUaWxlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBpbnZhbGlkVGls
ZXMuYmVnaW4oKTsgaXRlciAhPSBpbnZhbGlkVGlsZXMuZW5kKCk7ICsraXRlcikKKyAgICAgICAg
bV90aWxlci0+dGFrZVRpbGUoKCppdGVyKS0+aSgpLCAoKml0ZXIpLT5qKCkpOworCiAgICAgbV9w
YWludFJlY3QgPSBkaXJ0eUxheWVyUmVjdDsKICAgICBpZiAoZGlydHlMYXllclJlY3QuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CkBAIC01NTYsNiArNTA0LDcgQEAgdm9pZCBUaWxlZExheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiAgICAg
bV9za2lwc0lkbGVQYWludCA9IGZhbHNlOwogICAgIG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0
ID0gSW50UmVjdCgpOwogICAgIG1fcGFpbnRSZWN0ID0gSW50UmVjdCgpOworICAgIG1fdXBkYXRl
UmVjdCA9IEZsb2F0UmVjdCgpOwogCiAgICAgdXBkYXRlQm91bmRzKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmgKaW5kZXggMmQ5OTk1MzY3YWQyNDM2YWZmYWZlNmRjYzMyM2FmOTUzYWVk
MzA3Mi4uMGJiZTRhZDA4NWYyYjkxYjVkMjkxMzYwYTdkOWI2NjIzN2Y2OTYwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmgKQEAgLTI5LDI2ICsyOSw1MSBAQAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRl
ICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRpbGluZ0RhdGEu
aCIKLSNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgTGF5ZXJUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIFJlZ2lvbjsKLWNsYXNzIFVw
ZGF0YWJsZVRpbGU7CisKK2NsYXNzIFVwZGF0YWJsZVRpbGUgOiBwdWJsaWMgQ0NMYXllclRpbGlu
Z0RhdGE6OlRpbGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVwZGF0YWJsZVRpbGUpOwor
cHVibGljOgorICAgIGV4cGxpY2l0IFVwZGF0YWJsZVRpbGUoUGFzc093blB0cjxMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlPiB0ZXh0dXJlKQorICAgICAgICA6IG1fcGFydGlhbFVwZGF0ZShm
YWxzZSkKKyAgICAgICAgLCBtX3RleHR1cmUodGV4dHVyZSkKKyAgICB7CisgICAgfQorCisgICAg
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVy
ZS5nZXQoKTsgfQorICAgIE1hbmFnZWRUZXh0dXJlKiBtYW5hZ2VkVGV4dHVyZSgpIHsgcmV0dXJu
IG1fdGV4dHVyZS0+dGV4dHVyZSgpOyB9CisKKyAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJl
dHVybiAhbV9kaXJ0eVJlY3QuaXNFbXB0eSgpOyB9CisgICAgdm9pZCBjb3B5QW5kQ2xlYXJEaXJ0
eSgpCisgICAgeworICAgICAgICBtX3VwZGF0ZVJlY3QgPSBtX2RpcnR5UmVjdDsKKyAgICAgICAg
bV9kaXJ0eVJlY3QgPSBJbnRSZWN0KCk7CisgICAgfQorCisgICAgSW50UmVjdCBtX2RpcnR5UmVj
dDsKKyAgICBJbnRSZWN0IG1fdXBkYXRlUmVjdDsKKyAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsK
KyAgICBib29sIG1fcGFydGlhbFVwZGF0ZTsKK3ByaXZhdGU6CisgICAgT3duUHRyPExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU+IG1fdGV4dHVyZTsKK307CiAKIGNsYXNzIFRpbGVkTGF5ZXJD
aHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1YmxpYzoKICAgICBlbnVtIFRpbGlu
Z09wdGlvbiB7IEFsd2F5c1RpbGUsIE5ldmVyVGlsZSwgQXV0b1RpbGUgfTsKIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIHZvaWQgcHVzaFByb3BlcnRpZXMoY29uc3Qg
VGlsZWRMYXllckNocm9taXVtKiwgQ0NMYXllciopOworCiAgICAgdmlydHVhbCB+VGlsZWRMYXll
ckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SXNNYXNrKGJvb2wpOwogCi0gICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8o
Q0NMYXllckltcGwqKTsKLQogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3Q7CiAKQEAgLTEwMiw4
ICsxMjcsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogdGV4dHVy
ZU1hbmFnZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NM
YXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7Ci0KICAgICB2b2lkIGNyZWF0ZVRpbGVySWZO
ZWVkZWQoKTsKICAgICB2b2lkIHNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24pOwogCkBAIC0x
MzIsNiArMTU1LDI4IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPENDTGF5ZXJUaWxpbmdEYXRhPiBt
X3RpbGVyOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgordm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzKGNvbnN0IFRpbGVkTGF5ZXJDaHJvbWl1bSogZnJv
bSwgQ0NMYXllciogdG8pCit7CisgICAgTGF5ZXJUeXBlKiBsYXllciA9IHN0YXRpY19jYXN0PExh
eWVyVHlwZSo+KHRvKTsKKworICAgIGxheWVyLT5zZXRTa2lwc0RyYXcoZnJvbS0+bV9za2lwc0Ry
YXcpOworICAgIGxheWVyLT5zZXRDb250ZW50c1N3aXp6bGVkKGZyb20tPm1fc2FtcGxlZFRleGVs
Rm9ybWF0ICE9IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEpOwor
ICAgIGxheWVyLT5zZXRUaWxpbmdEYXRhKCooZnJvbS0+bV90aWxlcikpOworCisgICAgZm9yIChD
Q0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGZyb20tPm1f
dGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBmcm9tLT5tX3RpbGVyLT50aWxlcygpLmVu
ZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgaW50IGkgPSBpdGVyLT5maXJzdC5maXJzdDsKKyAgICAg
ICAgaW50IGogPSBpdGVyLT5maXJzdC5zZWNvbmQ7CisgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRp
bGUgPSBzdGF0aWNfY2FzdDxVcGRhdGFibGVUaWxlKj4oaXRlci0+c2Vjb25kLmdldCgpKTsKKyAg
ICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5pc1ZhbGlkKGZyb20tPm1fdGlsZXIt
PnRpbGVTaXplKCksIGZyb20tPm1fdGV4dHVyZUZvcm1hdCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgaWYgKHRpbGUtPmlzRGlydHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIGxheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgdGlsZS0+bWFuYWdlZFRl
eHR1cmUoKS0+dGV4dHVyZUlkKCksIHRpbGUtPm1fb3BhcXVlUmVjdCk7CisgICAgfQorfQorCiB9
CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5j
aHJvbml6ZXIuY3BwCmluZGV4IGQwZmQwY2U1MjNkNjM4ODRiZTkzMmUxYmQ0MTY1ODJmMjU3NjJl
NDAuLjRkOWNlMTgwYTBiZWY5MTY2YzYyYjEwOTZmM2NhODk1ZWI5ODUyNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Ry
ZWVTeW5jaHJvbml6ZXIuY3BwCkBAIC0zMyw2MyArMzMsNzEgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi12b2lkIFRyZWVTeW5jaHJvbml6ZXI6OmFkZENDTGF5ZXJJbXBsc1RvTWFwUmVjdXJz
aXZlKENDTGF5ZXJJbXBsTWFwJiBtYXAsIENDTGF5ZXJJbXBsKiBjY0xheWVySW1wbCkKK3RlbXBs
YXRlPHR5cGVuYW1lIENDTGF5ZXJUeXBlPgordm9pZCBUcmVlU3luY2hyb25pemVyOjphZGRDQ0xh
eWVyc1RvTWFwUmVjdXJzaXZlKENDTGF5ZXJNYXAmIG1hcCwgQ0NMYXllclR5cGUqIGNjTGF5ZXIp
CiB7Ci0gICAgbWFwLnNldChjY0xheWVySW1wbC0+aWQoKSwgY2NMYXllckltcGwpOworICAgIG1h
cC5zZXQoY2NMYXllci0+aWQoKSwgY2NMYXllcik7CiAKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRy
PENDTGF5ZXJJbXBsPiA+JiBjaGlsZHJlbiA9IGNjTGF5ZXJJbXBsLT5jaGlsZHJlbigpOworICAg
IGNvbnN0IFZlY3RvcjxSZWZQdHI8Q0NMYXllclR5cGU+ID4mIGNoaWxkcmVuID0gY2NMYXllci0+
Y2hpbGRyZW4oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsg
KytpKQotICAgICAgICBhZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vyc2l2ZShtYXAsIGNoaWxkcmVu
W2ldLmdldCgpKTsKKyAgICAgICAgYWRkQ0NMYXllcnNUb01hcFJlY3Vyc2l2ZTxDQ0xheWVyVHlw
ZT4obWFwLCBjaGlsZHJlbltpXS5nZXQoKSk7CiAKLSAgICBpZiAoQ0NMYXllckltcGwqIG1hc2tM
YXllciA9IGNjTGF5ZXJJbXBsLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgYWRkQ0NMYXllckltcGxz
VG9NYXBSZWN1cnNpdmUobWFwLCBtYXNrTGF5ZXIpOworICAgIGlmIChDQ0xheWVyVHlwZSogbWFz
a0xheWVyID0gY2NMYXllci0+bWFza0xheWVyKCkpCisgICAgICAgIGFkZENDTGF5ZXJzVG9NYXBS
ZWN1cnNpdmU8Q0NMYXllclR5cGU+KG1hcCwgbWFza0xheWVyKTsKIAotICAgIGlmIChDQ0xheWVy
SW1wbCogcmVwbGljYUxheWVyID0gY2NMYXllckltcGwtPnJlcGxpY2FMYXllcigpKQotICAgICAg
ICBhZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vyc2l2ZShtYXAsIHJlcGxpY2FMYXllcik7CisgICAg
aWYgKENDTGF5ZXJUeXBlKiByZXBsaWNhTGF5ZXIgPSBjY0xheWVyLT5yZXBsaWNhTGF5ZXIoKSkK
KyAgICAgICAgYWRkQ0NMYXllcnNUb01hcFJlY3Vyc2l2ZTxDQ0xheWVyVHlwZT4obWFwLCByZXBs
aWNhTGF5ZXIpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVy
OjpzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIENDTGF5ZXJJ
bXBsTWFwJiBtYXApCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIENDTGF5
ZXJUeXBlPgorUGFzc1JlZlB0cjxDQ0xheWVyVHlwZT4gVHJlZVN5bmNocm9uaXplcjo6c3luY2hy
b25pemVUcmVlUmVjdXJzaXZlKExheWVyVHlwZSogbGF5ZXIsIENDTGF5ZXJNYXAmIG1hcCkKIHsK
LSAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJJbXBsOwotICAgIENDTGF5ZXJJbXBsTWFw
OjppdGVyYXRvciBpdCA9IG1hcC5maW5kKGxheWVyLT5pZCgpKTsKKyAgICBSZWZQdHI8Q0NMYXll
clR5cGU+IGNjTGF5ZXI7CisgICAgQ0NMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZChs
YXllci0+aWQoKSk7CiAgICAgaWYgKGl0ICE9IG1hcC5lbmQoKSkgewotICAgICAgICBjY0xheWVy
SW1wbCA9IGl0LT5zZWNvbmQ7IC8vIFdlIGFscmVhZHkgaGF2ZSBhbiBlbnRyeSBmb3IgdGhpcywg
d2UganVzdCBuZWVkIHRvIHJlcGFyZW50IGl0LgotICAgICAgICBjY0xheWVySW1wbC0+Y2xlYXJD
aGlsZExpc3QoKTsKKyAgICAgICAgY2NMYXllciA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8Q0NMYXll
clR5cGUsIENDTGF5ZXI+KGl0LT5zZWNvbmQpOyAvLyBXZSBhbHJlYWR5IGhhdmUgYW4gZW50cnkg
Zm9yIHRoaXMsIHdlIGp1c3QgbmVlZCB0byByZXBhcmVudCBpdC4KKyAgICAgICAgY2NMYXllci0+
Y2xlYXJDaGlsZExpc3QoKTsKICAgICB9IGVsc2UgewotICAgICAgICBjY0xheWVySW1wbCA9IGxh
eWVyLT5jcmVhdGVDQ0xheWVySW1wbCgpOwotICAgICAgICBtYXAuc2V0KGxheWVyLT5pZCgpLCBj
Y0xheWVySW1wbCk7IC8vIEFkZCBpdCB0byB0aGUgbWFwIHNvIG90aGVyIGxheWVycyByZWZlcmVu
Y2luZyB0aGlzIG9uZSBjYW4gcGljayBpdCB1cC4KKyAgICAgICAgY2NMYXllciA9IHN0YXRpY19w
b2ludGVyX2Nhc3Q8Q0NMYXllclR5cGUsIENDTGF5ZXI+KGxheWVyLT5jcmVhdGVDQ0xheWVyKCkp
OworICAgICAgICBtYXAuc2V0KGxheWVyLT5pZCgpLCBjY0xheWVyKTsgLy8gQWRkIGl0IHRvIHRo
ZSBtYXAgc28gb3RoZXIgbGF5ZXJzIHJlZmVyZW5jaW5nIHRoaXMgb25lIGNhbiBwaWNrIGl0IHVw
LgogICAgIH0KIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgY2hp
bGRyZW4gPSBsYXllci0+Y2hpbGRyZW4oKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVy
VHlwZT4gPiYgY2hpbGRyZW4gPSBsYXllci0+Y2hpbGRyZW4oKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKQotICAgICAgICBjY0xheWVySW1wbC0+YWRk
Q2hpbGQoc3luY2hyb25pemVUcmVlUmVjdXJzaXZlKGNoaWxkcmVuW2ldLmdldCgpLCBtYXApKTsK
KyAgICAgICAgY2NMYXllci0+YWRkQ2hpbGQoc3luY2hyb25pemVUcmVlUmVjdXJzaXZlPExheWVy
VHlwZSwgQ0NMYXllclR5cGU+KGNoaWxkcmVuW2ldLmdldCgpLCBtYXApKTsKIAotICAgIGlmIChM
YXllckNocm9taXVtKiBtYXNrTGF5ZXIgPSBsYXllci0+bWFza0xheWVyKCkpCi0gICAgICAgIGNj
TGF5ZXJJbXBsLT5zZXRNYXNrTGF5ZXIoc3luY2hyb25pemVUcmVlUmVjdXJzaXZlKG1hc2tMYXll
ciwgbWFwKSk7CisgICAgaWYgKExheWVyVHlwZSogbWFza0xheWVyID0gbGF5ZXItPm1hc2tMYXll
cigpKQorICAgICAgICBjY0xheWVyLT5zZXRNYXNrTGF5ZXIoc3luY2hyb25pemVUcmVlUmVjdXJz
aXZlPExheWVyVHlwZSwgQ0NMYXllclR5cGU+KG1hc2tMYXllciwgbWFwKSk7CiAgICAgZWxzZQot
ICAgICAgICBjY0xheWVySW1wbC0+c2V0TWFza0xheWVyKDApOworICAgICAgICBjY0xheWVyLT5z
ZXRNYXNrTGF5ZXIoMCk7CiAKLSAgICBpZiAoTGF5ZXJDaHJvbWl1bSogcmVwbGljYUxheWVyID0g
bGF5ZXItPnJlcGxpY2FMYXllcigpKQotICAgICAgICBjY0xheWVySW1wbC0+c2V0UmVwbGljYUxh
eWVyKHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShyZXBsaWNhTGF5ZXIsIG1hcCkpOworICAgIGlm
IChMYXllclR5cGUqIHJlcGxpY2FMYXllciA9IGxheWVyLT5yZXBsaWNhTGF5ZXIoKSkKKyAgICAg
ICAgY2NMYXllci0+c2V0UmVwbGljYUxheWVyKHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZTxMYXll
clR5cGUsIENDTGF5ZXJUeXBlPihyZXBsaWNhTGF5ZXIsIG1hcCkpOwogICAgIGVsc2UKLSAgICAg
ICAgY2NMYXllckltcGwtPnNldFJlcGxpY2FMYXllcigwKTsKKyAgICAgICAgY2NMYXllci0+c2V0
UmVwbGljYUxheWVyKDApOwogCi0gICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8oY2NMYXllcklt
cGwuZ2V0KCkpOwotICAgIHJldHVybiBjY0xheWVySW1wbC5yZWxlYXNlKCk7CisgICAgbGF5ZXIt
PnB1c2hQcm9wZXJ0aWVzVG8oY2NMYXllci5nZXQoKSk7CisgICAgcmV0dXJuIGNjTGF5ZXIucmVs
ZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVyOjpz
eW5jaHJvbml6ZVRyZWVzKExheWVyQ2hyb21pdW0qIGxheWVyQ2hyb21pdW1Sb290LCBQYXNzUmVm
UHRyPENDTGF5ZXJJbXBsPiBwcnBPbGRDQ0xheWVySW1wbFJvb3QpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBMYXllclR5cGUsIHR5cGVuYW1lIENDTGF5ZXJUeXBlPgorUGFzc1JlZlB0cjxDQ0xheWVyVHlw
ZT4gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlc0ludGVybmFsKExheWVyVHlwZSog
bGF5ZXJSb290LCBQYXNzUmVmUHRyPENDTGF5ZXJUeXBlPiBwcnBPbGRDQ0xheWVyUm9vdCkKIHsK
LSAgICBSZWZQdHI8Q0NMYXllckltcGw+IG9sZENDTGF5ZXJJbXBsUm9vdCA9IHBycE9sZENDTGF5
ZXJJbXBsUm9vdDsKLSAgICAvLyBCdWlsZCBhIG1hcCBmcm9tIGxheWVyIElEcyB0byBDQ0xheWVy
SW1wbHMgc28gd2UgY2FuIHJldXNlIGxheWVycyBmcm9tIHRoZSBvbGQgdHJlZS4KLSAgICBDQ0xh
eWVySW1wbE1hcCBtYXA7Ci0gICAgaWYgKG9sZENDTGF5ZXJJbXBsUm9vdCkKLSAgICAgICAgYWRk
Q0NMYXllckltcGxzVG9NYXBSZWN1cnNpdmUobWFwLCBvbGRDQ0xheWVySW1wbFJvb3QuZ2V0KCkp
OworICAgIFJlZlB0cjxDQ0xheWVyVHlwZT4gb2xkQ0NMYXllclJvb3QgPSBwcnBPbGRDQ0xheWVy
Um9vdDsKKyAgICAvLyBCdWlsZCBhIG1hcCBmcm9tIGxheWVyIElEcyB0byBDQ0xheWVycyBzbyB3
ZSBjYW4gcmV1c2UgbGF5ZXJzIGZyb20gdGhlIG9sZCB0cmVlLgorICAgIENDTGF5ZXJNYXAgbWFw
OworICAgIGlmIChvbGRDQ0xheWVyUm9vdCkKKyAgICAgICAgYWRkQ0NMYXllcnNUb01hcFJlY3Vy
c2l2ZTxDQ0xheWVyVHlwZT4obWFwLCBvbGRDQ0xheWVyUm9vdC5nZXQoKSk7CiAKICAgICAvLyBS
ZWN1cnNpdmVseSBidWlsZCB0aGUgbmV3IGxheWVyIHRyZWUuCi0gICAgUmVmUHRyPENDTGF5ZXJJ
bXBsPiBuZXdDQ0xheWVySW1wbFJvb3QgPSBzeW5jaHJvbml6ZVRyZWVSZWN1cnNpdmUobGF5ZXJD
aHJvbWl1bVJvb3QsIG1hcCk7CisgICAgUmVmUHRyPENDTGF5ZXJUeXBlPiBuZXdDQ0xheWVyUm9v
dCA9IHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZTxMYXllclR5cGUsIENDTGF5ZXJUeXBlPihsYXll
clJvb3QsIG1hcCk7CiAKLSAgICByZXR1cm4gbmV3Q0NMYXllckltcGxSb290LnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gbmV3Q0NMYXllclJvb3QucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPEND
TGF5ZXJJbXBsPiBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKExheWVyQ2hyb21p
dW0qIGxheWVyUm9vdCwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gb2xkQ0NMYXllckltcGxSb290
KQoreworICAgIHJldHVybiBzeW5jaHJvbml6ZVRyZWVzSW50ZXJuYWw8TGF5ZXJDaHJvbWl1bSwg
Q0NMYXllckltcGw+KGxheWVyUm9vdCwgb2xkQ0NMYXllckltcGxSb290KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5oCmluZGV4IGE0ZTQ5NDIxNzM5
NWU4ZDJlMTI5NmJkNjU2NjYyZTMyYjExOWFjZmYuLmQ1YjA5ZWQ5NTY3YWU4YzkyM2JlZTUyZTlh
YzFjYjg1OWRkOTMyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVyLmgKQEAgLTMyLDYgKzMyLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDQ0xheWVyOwogY2xhc3MgQ0NMYXll
ckltcGw7CiBjbGFzcyBMYXllckNocm9taXVtOwogCkBAIC00NSwxMSArNDYsMTUgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBUcmVlU3luY2hyb25pemVyKCk7IC8vIE5vdCBpbnN0YW50aWFibGUu
CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8Q0NMYXllckltcGw+ID4gQ0NMYXll
ckltcGxNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPENDTGF5ZXI+ID4gQ0NM
YXllck1hcDsKIAogICAgIC8vIERlY2xhcmVkIGFzIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zIHNv
IHRoZXkgY2FuIGFjY2VzcyBmdW5jdGlvbnMgb24gTGF5ZXJDaHJvbWl1bSBhcyBhIGZyaWVuZCBj
bGFzcy4KLSAgICBzdGF0aWMgdm9pZCBhZGRDQ0xheWVySW1wbHNUb01hcFJlY3Vyc2l2ZShDQ0xh
eWVySW1wbE1hcCYsIENDTGF5ZXJJbXBsKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NMYXll
ckltcGw+IHN5bmNocm9uaXplVHJlZVJlY3Vyc2l2ZShMYXllckNocm9taXVtKiwgQ0NMYXllcklt
cGxNYXAmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDQ0xheWVyVHlwZT4KKyAgICBzdGF0aWMg
dm9pZCBhZGRDQ0xheWVyc1RvTWFwUmVjdXJzaXZlKENDTGF5ZXJNYXAmLCBDQ0xheWVyVHlwZSop
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgQ0NMYXllclR5cGU+
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q0NMYXllclR5cGU+IHN5bmNocm9uaXplVHJlZVJlY3Vy
c2l2ZShMYXllclR5cGUqLCBDQ0xheWVyTWFwJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5
ZXJUeXBlLCB0eXBlbmFtZSBDQ0xheWVyVHlwZT4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ0xh
eWVyVHlwZT4gc3luY2hyb25pemVUcmVlc0ludGVybmFsKExheWVyVHlwZSosIFBhc3NSZWZQdHI8
Q0NMYXllclR5cGU+KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRl
b0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGFlMmFlOGM4MGUyMmExOTM4YWViNDlhNDY3OTNlMjMw
ZTI4YjgyOGEuLmYyNjc4N2RhYjc5MDYzZDUyYTg5ODEzMGQyY2EzM2U1N2E1YzExNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcApAQCAtMzIsMTUgKzMyLDkgQEAKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRlICJWaWRlb0xheWVyQ2hyb21pdW0u
aCIKLSNpbmNsdWRlICJjYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBWaWRlb0xheWVyQ2hyb21pdW0ocHJvdmlkZXIpKTsKLX0KLQogVmlkZW9MYXllckNo
cm9taXVtOjpWaWRlb0xheWVyQ2hyb21pdW0oVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlcikK
ICAgICA6IExheWVyQ2hyb21pdW0oKQogICAgICwgbV9wcm92aWRlcihwcm92aWRlcikKQEAgLTUy
LDExICs0Niw2IEBAIFZpZGVvTGF5ZXJDaHJvbWl1bTo6flZpZGVvTGF5ZXJDaHJvbWl1bSgpCiB7
CiB9CiAKLVBhc3NSZWZQdHI8Q0NMYXllckltcGw+IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
Q0NMYXllckltcGwoKQotewotICAgIHJldHVybiBDQ1ZpZGVvTGF5ZXJJbXBsOjpjcmVhdGUobV9s
YXllcklkLCBtX3Byb3ZpZGVyKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21p
dW0uaAppbmRleCA4Nzg4MDZlMjZkYjU0NzMwMjI0MTYyMzBlYzEwNWZhYmY5YjhlNjRhLi4zOGE1
ZmI4ZWJiM2VkOTI3MGQ4MmJjYzUzNmUzZWVmYjhhMDIyYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVy
Q2hyb21pdW0uaApAQCAtNDQsMTkgKzQ0LDM5IEBAIGNsYXNzIFZpZGVvRnJhbWVQcm92aWRlcjsK
IC8vIEEgTGF5ZXIgdGhhdCBjb250YWlucyBhIFZpZGVvIGVsZW1lbnQuCiBjbGFzcyBWaWRlb0xh
eWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21p
dW0+IGNyZWF0ZShWaWRlb0ZyYW1lUHJvdmlkZXIqID0gMCk7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgTGF5ZXJUeXBlPiBzdGF0aWMgdm9pZCBwdXNoUHJvcGVydGllcyhjb25zdCBWaWRlb0xheWVy
Q2hyb21pdW0qLCBDQ0xheWVyKik7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb0xheWVy
Q2hyb21pdW0+IGNyZWF0ZShWaWRlb0ZyYW1lUHJvdmlkZXIqID0gMCk7CiAgICAgdmlydHVhbCB+
VmlkZW9MYXllckNocm9taXVtKCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllcklt
cGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgVmlkZW9M
YXllckNocm9taXVtKFZpZGVvRnJhbWVQcm92aWRlciopOworcHJvdGVjdGVkOgorICAgIFZpZGVv
TGF5ZXJDaHJvbWl1bShWaWRlb0ZyYW1lUHJvdmlkZXIqKTsKIAogICAgIC8vIFRoaXMgcG9pbnRl
ciBpcyBvbmx5IGZvciBwYXNzaW5nIHRvIENDVmlkZW9MYXllckltcGwncyBjb25zdHJ1Y3Rvci4g
SXQgc2hvdWxkIG5ldmVyIGJlIGRlcmVmZXJlbmNlZCBieSB0aGlzIGNsYXNzLgogICAgIFZpZGVv
RnJhbWVQcm92aWRlciogbV9wcm92aWRlcjsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVy
VHlwZT4gY2xhc3MgU2VyaWFsaXphYmxlVmlkZW9MYXllckNocm9taXVtIDogcHVibGljIFZpZGVv
TGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgU2VyaWFsaXphYmxlVmlkZW9MYXllckNocm9t
aXVtKFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpIDogVmlkZW9MYXllckNocm9taXVtKHBy
b3ZpZGVyKSB7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVyPiBjcmVhdGVDQ0xh
eWVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBMYXllclR5cGU6OmNyZWF0ZShtX2xheWVySWQs
IG1fcHJvdmlkZXIpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1Rv
KENDTGF5ZXIqIGxheWVyKQorICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3Bl
cnRpZXM8TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgTGF5ZXJUeXBlPgorUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVWaWRlb0xheWVyQ2hyb21pdW08TGF5ZXJU
eXBlPihwcm92aWRlcikpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCA3NGRiN2YxM2Vj
NGY4ZjRjYWFmNjhlNWFkNzQ3NDViZTkzYjcyZjNiLi4xMGEyYjk3MDE1YTgxOWVkZjNkMmM4MDRm
YzBiYzYwYjhkNmQxZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQy
LDExICs0Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxXZWJHTExh
eWVyQ2hyb21pdW0+IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYkdMTGF5ZXJDaHJvbWl1bSgpKTsKLX0KLQogV2ViR0xMYXllckNocm9t
aXVtOjpXZWJHTExheWVyQ2hyb21pdW0oKQogICAgIDogQ2FudmFzTGF5ZXJDaHJvbWl1bSgpCiAg
ICAgLCBtX2hhc0FscGhhKHRydWUpCkBAIC05OCwxNiArOTMsNiBAQCB2b2lkIFdlYkdMTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVu
ZGVyZXJDbwogICAgIH0KIH0KIAotdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0
aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQotewotICAgIENhbnZhc0xheWVyQ2hyb21pdW06OnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwotCi0gICAgQ0NDYW52YXNMYXllckltcGwqIGNhbnZhc0xh
eWVyID0gc3RhdGljX2Nhc3Q8Q0NDYW52YXNMYXllckltcGwqPihsYXllcik7Ci0gICAgY2FudmFz
TGF5ZXItPnNldFRleHR1cmVJZChtX3RleHR1cmVJZCk7Ci0gICAgY2FudmFzTGF5ZXItPnNldEhh
c0FscGhhKG1faGFzQWxwaGEpOwotICAgIGNhbnZhc0xheWVyLT5zZXRQcmVtdWx0aXBsaWVkQWxw
aGEobV9wcmVtdWx0aXBsaWVkQWxwaGEpOwotfQotCiBib29sIFdlYkdMTGF5ZXJDaHJvbWl1bTo6
cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCiB7
CiAgICAgaWYgKG1fdGV4dHVyZVVwZGF0ZWQgfHwgIWxheWVyUmVuZGVyZXJDb250ZXh0KCkgfHwg
IWRyYXdzQ29udGVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCA0ZGM2OGEz
MzA4ZTNmMjMzN2I0YjI2NWM0NjVkNzVkYjJkYzZhN2ZhLi5iOGNlOGM3ZGM2NmY2NDY2ZThkNWU2
MGI1YTY3ZTM4ZjgzMjA0ZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtNDUs
NyArNDUsOCBAQCBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwogLy8gQSBM
YXllciBjb250YWluaW5nIGEgV2ViR0wgY2FudmFzCiBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW0g
OiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBjcmVhdGUoKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBMYXllclR5cGU+IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gY3JlYXRl
KCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPiBzdGF0aWMgdm9pZCBwdXNoUHJv
cGVydGllcyhjb25zdCBXZWJHTExheWVyQ2hyb21pdW0qIGZyb20sIENDTGF5ZXIqIHRvKTsKIAog
ICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwogCkBAIC01NCw3ICs1NSw2IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIEND
VGV4dHVyZVVwZGF0ZXImKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCopOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwogICAgIGJvb2wg
cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopOwogCkBAIC02Miw4ICs2
MiwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldERyYXdpbmdCdWZmZXIoRHJhd2luZ0J1ZmZl
ciopOwogICAgIERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X2RyYXdpbmdCdWZmZXI7IH0KLXByaXZhdGU6CisKK3Byb3RlY3RlZDoKICAgICBXZWJHTExheWVy
Q2hyb21pdW0oKTsKKworcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViR0xMYXllckNocm9t
aXVtUmF0ZUxpbWl0VGFzazsKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBsYXllclJlbmRlcmVy
Q29udGV4dCgpOwpAQCAtODAsNiArODMsMzggQEAgcHJpdmF0ZToKICAgICBEcmF3aW5nQnVmZmVy
KiBtX2RyYXdpbmdCdWZmZXI7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IGNs
YXNzIFNlcmlhbGl6YWJsZVdlYkdMTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBXZWJHTExheWVyQ2hy
b21pdW0geworcHVibGljOgorICAgIFNlcmlhbGl6YWJsZVdlYkdMTGF5ZXJDaHJvbWl1bSgpIDog
V2ViR0xMYXllckNocm9taXVtKCkgeyB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXll
cj4gY3JlYXRlQ0NMYXllcigpCisgICAgeworICAgICAgICByZXR1cm4gTGF5ZXJUeXBlOjpjcmVh
dGUobV9sYXllcklkKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNU
byhDQ0xheWVyKiBsYXllcikKKyAgICB7CisgICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9w
ZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgICAgICBwdXNoUHJvcGVydGllczxM
YXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBM
YXllclR5cGU+CitQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gV2ViR0xMYXllckNocm9t
aXVtOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXphYmxlV2Vi
R0xMYXllckNocm9taXVtPExheWVyVHlwZT4oKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIExh
eWVyVHlwZT4KK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllcyhjb25zdCBX
ZWJHTExheWVyQ2hyb21pdW0qIGZyb20sIENDTGF5ZXIqIHRvKQoreworICAgIExheWVyVHlwZSog
bGF5ZXIgPSBzdGF0aWNfY2FzdDxMYXllclR5cGUqPih0byk7CisKKyAgICBsYXllci0+c2V0VGV4
dHVyZUlkKGZyb20tPm1fdGV4dHVyZUlkKTsKKyAgICBsYXllci0+c2V0SGFzQWxwaGEoZnJvbS0+
bV9oYXNBbHBoYSk7CisgICAgbGF5ZXItPnNldFByZW11bHRpcGxpZWRBbHBoYShmcm9tLT5tX3By
ZW11bHRpcGxpZWRBbHBoYSk7Cit9CisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE5MWFhNjZhZTk2YTVjNzc3
YjgxYjE0ODRjOWUwNGY0ZDhiODhjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXIuY3BwCkBAIC0wLDAgKzEsNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCisKKyNpbmNsdWRlICJjYy9DQ0xheWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworQ0NMYXllcjo6Q0NMYXllcigpCit7Cit9CisKK0NDTGF5ZXI6On5DQ0xheWVyKCkKK3sK
K30KKworfQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg0ZjM5YjcxZDJhMWJjM2Q1MzkyYjU0ZmNkNDQwYTBmMmQyYjIzYTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NMYXll
cl9oCisjZGVmaW5lIENDTGF5ZXJfaAorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDQ0xheWVyIDogcHVibGljIFJlZkNvdW50ZWQ8
Q0NMYXllcj4geworcHVibGljOgorICAgIHZpcnR1YWwgfkNDTGF5ZXIoKTsKKworcHJvdGVjdGVk
OgorICAgIENDTGF5ZXIoKTsKK307CisKK30KKworI2VuZGlmIC8vIENDTGF5ZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmgKaW5kZXggOGZiYWJhZTg2YTZiZDZhYzhkNjVjYjdlN2UwNmNhNmM5YmU2OTE4
MC4uNjM5MDNiMjE5Y2E5OTg0ODI4NjJlYWI3OGI2YmU1MGExYTdlMTYxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1
ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorI2lu
Y2x1ZGUgImNjL0NDTGF5ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKICNpbmNs
dWRlICJjYy9DQ1JlbmRlclN1cmZhY2UuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC00
NSw3ICs0Niw3IEBAIGNsYXNzIENDTGF5ZXJTb3J0ZXI7CiBjbGFzcyBMYXllckNocm9taXVtOwog
Y2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwogCi1jbGFzcyBDQ0xheWVySW1wbCA6IHB1Ymxp
YyBSZWZDb3VudGVkPENDTGF5ZXJJbXBsPiB7CitjbGFzcyBDQ0xheWVySW1wbCA6IHB1YmxpYyBD
Q0xheWVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3Jl
YXRlKGludCBpZCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKaW5kZXggZTBiNTJhMzE4ZjlhODY5
OGRmMTA3OWU2NzI4ZmU5Y2FlNTRhZjI0Yy4uM2UyZTA3ZmE4NzJiZjYyMGNlOWI1NTI3ZmI2NzYz
MjViZDk2ODJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcApAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1
ZGUgIlNrR3B1RGV2aWNlLmgiCiAjaW5jbHVkZSAiU2tpYVV0aWxzLmgiCiAjaW5jbHVkZSAiV0VC
UEltYWdlRW5jb2Rlci5oIgorI2luY2x1ZGUgImNjL0NDQ2FudmFzTGF5ZXJJbXBsLmgiCiAKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMTEwLDcgKzExMSw3IEBAIHN0YXRp
YyBTa0NhbnZhcyogY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
SW1hZ2VCdWZmZXJEYXRhKiBkCiAgICAgICAgIGNhbnZhcyA9IG5ldyBTa0NhbnZhcyhkZXZpY2Uu
Z2V0KCkpOwogICAgIGRhdGEtPm1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dDNE
KGNvbnRleHQzRCk7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGRhdGEt
Pm1fcGxhdGZvcm1MYXllciA9IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKGNvbnRleHQz
RCwgc2l6ZSk7CisgICAgZGF0YS0+bV9wbGF0Zm9ybUxheWVyID0gQ2FudmFzMkRMYXllckNocm9t
aXVtOjpjcmVhdGU8Q0NDYW52YXNMYXllckltcGw+KGNvbnRleHQzRCwgc2l6ZSk7CiAgICAgZGF0
YS0+bV9wbGF0Zm9ybUxheWVyLT5zZXRUZXh0dXJlSWQodGV4dHVyZS5nZXQoKS0+Z2V0VGV4dHVy
ZUhhbmRsZSgpKTsKICAgICBkYXRhLT5tX3BsYXRmb3JtTGF5ZXItPnNldENhbnZhcyhjYW52YXMp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250
ZW50TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVy
LmNwcAppbmRleCA3YjM3MzMzZTU2MzA4YTA2OGI4NGMzYWNkZWVhNTMxOTVjOTNmZmQyLi42MGZk
M2I3NGM0ZTJhM2M5MDRiODMwYTE3Njk2ZDBhMGM1NmVjNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb250ZW50TGF5ZXIuaCIK
IAorI2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJXZWJDb250ZW50TGF5ZXJJbXBsLmgiCiAKQEAgLTMz
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkNvbnRlbnRMYXllciBXZWJDb250
ZW50TGF5ZXI6OmNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpCiB7
Ci0gICAgcmV0dXJuIFdlYkNvbnRlbnRMYXllcihXZWJDb250ZW50TGF5ZXJJbXBsOjpjcmVhdGUo
Y29udGVudENsaWVudCkpOworICAgIHJldHVybiBXZWJDb250ZW50TGF5ZXIoV2ViQ29udGVudExh
eWVySW1wbDo6Y3JlYXRlPFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw+KGNvbnRlbnRDbGllbnQp
KTsKIH0KIAogdm9pZCBXZWJDb250ZW50TGF5ZXI6OnNldERyYXdzQ29udGVudChib29sIGRyYXdz
Q29udGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRl
bnRMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExh
eWVySW1wbC5jcHAKaW5kZXggNGY2NGQ1NDcxZTM5NjY1MGY3Y2E3NWU5ZTE2MjVjNjZkNzJmMTFi
Ni4uMWU0ZTk5NzQ0ZGRmNjRjY2U2YWJmZGM4M2YyNjFkOWUzOTA4YjVjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAKQEAgLTM4
LDExICszOCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotUGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiBXZWJDb250ZW50TGF5ZXJJbXBs
OjpjcmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KQotewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGVudExheWVySW1wbChjb250ZW50Q2xpZW50KSk7Ci19
Ci0KIFdlYkNvbnRlbnRMYXllckltcGw6OldlYkNvbnRlbnRMYXllckltcGwoV2ViQ29udGVudExh
eWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KQogICAgIDogQ29udGVudExheWVyQ2hyb21pdW0odGhp
cykKICAgICAsIG1fY29udGVudENsaWVudChjb250ZW50Q2xpZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5oCmluZGV4IDUxZjM0NGY3Y2Fm
MTI3MTEyNmFjN2I0MjY4ZWQ1NDYxMjE0MjE5ZDguLmFiMzFhMWQ0MTgwNWFiZTgxMWZlNDdkNzJk
MGIyMGM5ZmQzNjE2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkNvbnRlbnRMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJD
b250ZW50TGF5ZXJJbXBsLmgKQEAgLTI5LDEyICsyOSwxNiBAQAogI2luY2x1ZGUgIkNvbnRlbnRM
YXllckNocm9taXVtLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAorbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgQ0NMYXllcjsKK307CisKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgV2ViQ29udGVudExheWVyQ2xpZW50OwogCiBjbGFzcyBXZWJDb250ZW50TGF5ZXJJbXBsIDog
cHVibGljIFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtLCBwdWJsaWMgV2ViQ29yZTo6Q29u
dGVudExheWVyRGVsZWdhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNv
bnRlbnRMYXllckltcGw+IGNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGll
bnQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIFBhc3NSZWZQdHI8
V2ViQ29udGVudExheWVySW1wbD4gY3JlYXRlKFdlYkNvbnRlbnRMYXllckNsaWVudCogY29udGVu
dENsaWVudCk7CiAKICAgICB2b2lkIHNldERyYXdzQ29udGVudChib29sKTsKIApAQCAtNDksNiAr
NTMsMjggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9kcmF3c0NvbnRlbnQ7CiB9OwogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IGNsYXNzIFNlcmlhbGl6YWJsZVdlYkNvbnRlbnRMYXll
ckltcGwgOiBwdWJsaWMgV2ViQ29udGVudExheWVySW1wbCB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgU2VyaWFsaXphYmxlV2ViQ29udGVudExheWVySW1wbChXZWJDb250ZW50TGF5ZXJDbGllbnQq
IGNvbnRlbnRDbGllbnQpIDogV2ViQ29udGVudExheWVySW1wbChjb250ZW50Q2xpZW50KSB7IH0K
KworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDQ0xheWVyPiBjcmVhdGVDQ0xheWVy
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBMYXllclR5cGU6OmNyZWF0ZShtX2xheWVySWQpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKFdlYkNvcmU6OkNDTGF5
ZXIqIGxheWVyKQorICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXM8
TGF5ZXJUeXBlPih0aGlzLCBsYXllcik7CisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpw
dXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CitQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+
IFdlYkNvbnRlbnRMYXllckltcGw6OmNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRl
bnRDbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemFibGVXZWJDb250
ZW50TGF5ZXJJbXBsPExheWVyVHlwZT4oY29udGVudENsaWVudCkpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdlYkNvbnRlbnRMYXllckltcGxfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3Bw
CmluZGV4IGIzYTMzMmIyYTIxNDJmNjczNWJjZTg0MjhmMDQyOWE1NjllZGM0NTQuLjZkZTMyOGZi
YjBiNDlmNWQzYTQ5YjQ0N2ZjZmQ4NTQ4ZWVjZjE1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAKQEAgLTI2LDE0
ICsyNiwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkV4
dGVybmFsVGV4dHVyZUxheWVyLmgiCiAKKyNpbmNsdWRlICJjYy9DQ1BsdWdpbkxheWVySW1wbC5o
IgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIldlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbC5oIgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIFdlYkV4dGVybmFsVGV4
dHVyZUxheWVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBXZWJFeHRlcm5hbFRleHR1cmVMYXll
cihXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpjcmVhdGU8
Q0NQbHVnaW5MYXllckltcGw+KCkpOwogfQogCiB2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
OjpzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcAppbmRleCBlYzZj
MjkwNjAwNTIzNTYzNjRkYmQ2MmU2M2M0YTE0MzM5MGMwNDk5Li4zNDU4Njc5Nzc0NDFkMmEwZDdm
M2UwMmUzZDlkOWY3ZTdlODJjNzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHAKQEAgLTMzLDExICsz
Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
UGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+IFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbDo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbCgpKTsKLX0KLQogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoKQogICAgIDogUGx1Z2luTGF5ZXJDaHJvbWl1
bSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbC5oCmluZGV4IDdiNzNlNzA4MGRkNmYxZjA1ODRjNGM2MjFkZjNh
NmVlMzRhNzViNWUuLmJjMWU2YTE5ZDBmOTQ5YzEyMmVlOTA1YTJhZTQzNzMxYTVlNTI3MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4
dHVyZUxheWVySW1wbC5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z2lu
TGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJJbXBsPiBjcmVhdGUoKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXll
clR5cGU+IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4gY3Jl
YXRlKCk7CiAKIHByb3RlY3RlZDoKICAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoKTsK
QEAgLTQxLDYgKzQxLDI4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250
ZW50KCkgY29uc3Q7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IGNsYXNzIFNl
cmlhbGl6YWJsZVdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCA6IHB1YmxpYyBXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGwgeworcHVibGljOgorICAgIFNlcmlhbGl6YWJsZVdlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbCgpIDogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKCkgeyB9CisK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q0NMYXllcj4gY3JlYXRlQ0NMYXllcigp
CisgICAgeworICAgICAgICByZXR1cm4gTGF5ZXJUeXBlOjpjcmVhdGUobV9sYXllcklkKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhXZWJDb3JlOjpDQ0xheWVy
KiBsYXllcikKKyAgICB7CisgICAgICAgIFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnB1c2hQcm9w
ZXJ0aWVzPExheWVyVHlwZT4odGhpcywgbGF5ZXIpOworICAgICAgICBXZWJDb3JlOjpQbHVnaW5M
YXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAg
ICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CitQYXNzUmVmUHRyPFdlYkV4
dGVybmFsVGV4dHVyZUxheWVySW1wbD4gV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpjcmVh
dGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXphYmxlV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJJbXBsPExheWVyVHlwZT4oKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAppbmRleCBmMzFjNWE4YzNlMzAwOTFiNGI2ZWM0ZDY4
ZmVkOGEyNjc2MjQxMDFhLi5iNDhmMGY5NTAwMDc4YWFjNTE2MWY4MzVhYjZlY2JhMDlkMWE3ZDU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXIuaCIK
IAorI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxv
YXRQb2ludC5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5o
IgpAQCAtNzYsNyArNzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViTGF5ZXIgV2ViTGF5
ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIFdlYkxheWVyKFdlYkxheWVySW1wbDo6Y3JlYXRl
KCkpOworICAgIHJldHVybiBXZWJMYXllcihXZWJMYXllckltcGw6OmNyZWF0ZTxDQ0xheWVySW1w
bD4oKSk7CiB9CiAKIHZvaWQgV2ViTGF5ZXI6OnJlc2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJMYXllckltcGwuY3BwCmluZGV4IDEzNzIxYmUwY2M1YTVjMzdmMTYzOWNhYjdh
NTFmOTQ2MGM0ZDU0ZTkuLmIyMDdmZDUzN2QzYTYxMzY0NTNkZGU5Y2NlMWI0MWEzNWY4MTRhMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcApAQCAtMzAs
MTEgKzMwLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1QYXNzUmVmUHRyPFdlYkxheWVySW1wbD4gV2ViTGF5ZXJJbXBsOjpjcmVhdGUoKQotewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViTGF5ZXJJbXBsKCkpOwotfQotCiBXZWJMYXllcklt
cGw6OldlYkxheWVySW1wbCgpCiAgICAgOiBMYXllckNocm9taXVtKCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKaW5kZXggMzg4NGM0MmJjZmFmNGNmYjVjMTMz
ZjhlMGUzMjE2YWU5OTg5MTg5ZC4uZmI0NjE3NjA2YjgzOWM1YjU2MWFiOGNjMWI5NjZkMGIyNjU2
MWQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKQEAgLTMz
LDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkxheWVySW1wbCA6IHB1
YmxpYyBXZWJDb3JlOjpMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJMYXllckltcGw+IGNyZWF0ZSgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVy
VHlwZT4gc3RhdGljIFBhc3NSZWZQdHI8V2ViTGF5ZXJJbXBsPiBjcmVhdGUoKTsKIAogcHJvdGVj
dGVkOgogICAgIFdlYkxheWVySW1wbCgpOwpAQCAtNDEsNiArNDEsMjcgQEAgcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXApOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUg
TGF5ZXJUeXBlPiBjbGFzcyBTZXJpYWxpemFibGVXZWJMYXllckltcGwgOiBwdWJsaWMgV2ViTGF5
ZXJJbXBsIHsKK3B1YmxpYzoKKyAgICBTZXJpYWxpemFibGVXZWJMYXllckltcGwoKSA6IFdlYkxh
eWVySW1wbCgpIHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkNDTGF5ZXI+
IGNyZWF0ZUNDTGF5ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIExheWVyVHlwZTo6Y3JlYXRl
KG1fbGF5ZXJJZCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8o
V2ViQ29yZTo6Q0NMYXllciogbGF5ZXIpCisgICAgeworICAgICAgICBMYXllckNocm9taXVtOjpw
dXNoUHJvcGVydGllczxMYXllclR5cGU+KHRoaXMsIGxheWVyKTsKKyAgICB9Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CitQYXNzUmVmUHRyPFdlYkxheWVySW1wbD4gV2ViTGF5
ZXJJbXBsOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXphYmxl
V2ViTGF5ZXJJbXBsPExheWVyVHlwZT4oKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gV2ViTGF5ZXJJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCmluZGV4IDk5NmU3MDcxMDBh
YTkxYjk2NjUzNWRjMDhjOTNjMTk1NTAzZjM5NTkuLjUxMWUzZDRlY2RmMmFjNTMzNTA4ODZlYTdl
M2MwMzMwYzRkZjA5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcApAQCAtOSw2ICs5LDcgQEAKIAogI2luY2x1
ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVy
Q2xpZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudC5oIgpAQCAtMTIwLDcgKzEyMSw3IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsOjpyZWFkeVN0YXRlQ2hhbmdlZCgpCiAgICAgbV9tZWRpYVBsYXllci0+cmVhZHlTdGF0ZUNo
YW5nZWQoKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKGhhc1Zp
ZGVvKCkgJiYgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmICFtX3ZpZGVvTGF5ZXIp
IHsKLSAgICAgICAgbV92aWRlb0xheWVyID0gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUodGhp
cyk7CisgICAgICAgIG1fdmlkZW9MYXllciA9IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPEND
VmlkZW9MYXllckltcGw+KHRoaXMpOwogICAgICAgICBtX3ZpZGVvTGF5ZXItPnNldE9wYXF1ZSht
X29wYXF1ZSk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCmluZGV4IDEyOTA4OGVmNGYxZjNmMzMy
NzI2YzIzYzI3Mjc3NTZmY2FjYjJhYjcuLmNlZGU5NWQxM2NhY2NmZDIxZDVhYWY2MTgxMDQzNzkz
NDk4MjM1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdp
bkNvbnRhaW5lckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBs
dWdpbkNvbnRhaW5lckltcGwuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIgogCisjaW5jbHVkZSAiY2Mv
Q0NQbHVnaW5MYXllckltcGwuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJv
bWVDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiUGx1Z2luTGF5ZXJDaHJvbWl1bS5oIgpAQCAtNTM3
LDcgKzUzOCw3IEBAIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OldlYlBsdWdpbkNvbnRhaW5lcklt
cGwoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lCiAgICAgLCBtX2VsZW1lbnQoZWxl
bWVudCkKICAgICAsIG1fd2ViUGx1Z2luKHdlYlBsdWdpbikKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCi0gICAgLCBtX3BsYXRmb3JtTGF5ZXIoUGx1Z2luTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKCkpCisgICAgLCBtX3BsYXRmb3JtTGF5ZXIoUGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlPENDUGx1Z2luTGF5ZXJJbXBsPigpKQogI2VuZGlmCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNw
cAppbmRleCBiMWZhNzI5MTg0MDFlMzI0MGU0MWQxM2QyZTBjMjdkMGM1NmFkN2M1Li5iOGI1OTRl
ZTQ3ZjBhNTMzZTIyODY2MTEzM2Q4M2ExYTg1ZTQwMWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAK
QEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisjaW5jbHVkZSAiY2Mv
Q0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKIAog
I2luY2x1ZGUgIkNDTGF5ZXJUcmVlVGVzdENvbW1vbi5oIgpAQCAtOTMsOSArOTQsOSBAQCBURVNU
KENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JOb09wTGF5ZXIp
CiAgICAgLy8gc2NyZWVuU3BhY2VUcmFuc2Zvcm0sIGFuZCB0aGUgaGllcmFyY2h5IHBhc3NlZCBv
biB0byBjaGlsZHJlbgogICAgIC8vIGxheWVycyBzaG91bGQgYWxzbyBiZSBpZGVudGl0eSB0cmFu
c2Zvcm1zLgogCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBncmFuZENoaWxkID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVu
dCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7
CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGdyYW5kQ2hpbGQgPSBMYXllckNocm9taXVtOjpj
cmVhdGU8Q0NMYXllckltcGw+KCk7CiAgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7
CiAgICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7CiAgICAgY2hpbGQtPmFkZENoaWxkKGdyYW5k
Q2hpbGQpOwpAQCAtMTIzLDcgKzEyNCw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVz
dCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclNpbmdsZUxheWVyKQogICAgIC8vIGRpZmZlcmVudCBwb3Np
dGlvbi4gV2hlbiB3ZSBpbml0aWFsaXplIGxheWVycyBmb3IgdGVzdGluZyBoZXJlLCB3ZSBuZWVk
IHRvIGluaXRpYWxpemUgdGhhdCB1bmludHV0aXZlIHBvc2l0aW9uIHZhbHVlLgogCiAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IGxheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IGxheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogICAg
IGxheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAKICAgICAvLyBDYXNlIDE6IHNldHRpbmcg
dGhlIHN1YmxheWVyIHRyYW5zZm9ybSBzaG91bGQgbm90IGFmZmVjdCB0aGlzIGxheWVyJ3MgZHJh
dyB0cmFuc2Zvcm0gb3Igc2NyZWVuLXNwYWNlIHRyYW5zZm9ybS4KQEAgLTE4OCw5ICsxODksOSBA
QCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JTaW5n
bGVMYXllcikKIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jt
c0ZvclNpbXBsZUhpZXJhcmNoeSkKIHsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0
eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGdyYW5kQ2hpbGQgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsK
KyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZCA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZTxDQ0xheWVySW1wbD4oKTsKICAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsK
ICAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKICAgICBjaGlsZC0+YWRkQ2hpbGQoZ3JhbmRD
aGlsZCk7CkBAIC0yNzAsOCArMjcxLDggQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0
LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yU2ltcGxlSGllcmFyY2h5KQogCiBURVNUKENDTGF5ZXJUcmVl
SG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JTaW5nbGVSZW5kZXJTdXJmYWNlKQog
ewotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGls
ZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKICAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGdyYW5kQ2hpbGQgPSBhZG9wdFJlZihu
ZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CiAgICAgcGFyZW50LT5j
cmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAgICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7CkBAIC0z
MjUsMTMgKzMyNiwxMyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRy
YW5zZm9ybXNGb3JSZW5kZXJTdXJmYWNlSGllcmFyY2h5KQogICAgIC8vICAgLSBTYW5pdHkgY2hl
Y2sgb24gcmVjdXJzaW9uOiB2ZXJpZnkgdHJhbnNmb3JtcyBvZiBsYXllcnMgZGVzY3JpYmVkIHcu
ci50LiBhIHJlbmRlciBzdXJmYWNlIHRoYXQgaXMgZGVzY3JpYmVkIHcuci50LiBhbiBhbmNlc3Rv
ciByZW5kZXIgc3VyZmFjZS4KICAgICAvLyAgIC0gdmVyaWZ5aW5nIHRoYXQgZWFjaCBsYXllciBo
YXMgYSByZWZlcmVuY2UgdG8gdGhlIGNvcnJlY3QgcmVuZGVyU3VyZmFjZSBhbmQgdGFyZ2V0UmVu
ZGVyU3VyZmFjZSB2YWx1ZXMuCiAKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlbmRl
clN1cmZhY2UxID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IHJlbmRlclN1cmZhY2UyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IGNoaWxkT2ZSb290ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkT2ZSUzEgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGRPZlJTMiA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBncmFuZENoaWxkT2ZS
b290ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gcmVuZGVyU3VyZmFjZTEgPSBMYXllckNocm9taXVtOjpjcmVhdGU8
Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlbmRlclN1cmZhY2Uy
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBjaGlsZE9mUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1w
bD4oKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGRPZlJTMSA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hp
bGRPZlJTMiA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZE9mUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZTxDQ0xheWVySW1wbD4oKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQ+IGdyYW5kQ2hpbGRPZlJTMSA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0
aEZvcmNlZERyYXdzQ29udGVudCgpKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3Jj
ZWREcmF3c0NvbnRlbnQ+IGdyYW5kQ2hpbGRPZlJTMiA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9t
aXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKICAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1
cmZhY2UoKTsKQEAgLTQ2MSw4ICs0NjIsOCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRl
c3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JSZW5kZXJTdXJmYWNlSGllcmFyY2h5KQogCiBURVNUKEND
TGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVJlbmRlclN1cmZhY2VMaXN0Rm9yQ2xpcExh
eWVyKQogewotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVuZGVyU3VyZmFjZTEgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiByZW5kZXJTdXJmYWNlMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVy
SW1wbD4oKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+
IGNoaWxkID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50
KCkpOwogICAgIHJlbmRlclN1cmZhY2UxLT5zZXRPcGFjaXR5KDAuOSk7CiAKQEAgLTQ5MCw4ICs0
OTEsOCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVJlbmRlclN1cmZh
Y2VMaXN0Rm9yQ2xpcExheWVyKQogCiBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZl
cmlmeVJlbmRlclN1cmZhY2VMaXN0Rm9yVHJhbnNwYXJlbnRDaGlsZCkKIHsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IHJlbmRlclN1cmZhY2UxID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVuZGVyU3Vy
ZmFjZTEgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CiAgICAgUmVmUHRy
PExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBjaGlsZCA9IGFkb3B0UmVmKG5l
dyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKICAgICByZW5kZXJTdXJm
YWNlMS0+c2V0T3BhY2l0eSgwKTsKIApAQCAtNTMzLDEwICs1MzQsMTAgQEAgVEVTVChDQ0xheWVy
VHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlDbGlwUmVjdEN1bGxzUmVuZGVyU3VyZmFjZXMpCiAg
ICAgLy8KIAogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4Owot
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBncmVhdEdyYW5kQ2hpbGQg
PSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFy
ZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4o
KTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZCA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JlYXRH
cmFuZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogICAgIFJl
ZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGVhZk5vZGUxID0gYWRv
cHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwogICAgIFJl
ZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGVhZk5vZGUyID0gYWRv
cHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwogICAgIHBh
cmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwpAQCAtNjA3LDcgKzYwOCw3IEBAIFRFU1QoQ0NM
YXllclRyZWVIb3N0Q29tbW9uVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAg
ICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2Vk
LgogICAgIFJlZ2lvbiBvY2NsdWRlZDsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBp
ZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hy
b21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwogICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVy
U3VyZmFjZSgpOwogICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwpAQCAtNjM5LDcgKzY0MCw3
IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVk
ZWRSZWdpb25XaXRoUm90YXRpb24pCiAgICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0
cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgogICAgIFJlZ2lvbiBvY2NsdWRlZDsKICAgICBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4o
KTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVy
ID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwog
ICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwogICAgIHBhcmVudC0+YWRkQ2hpbGQo
bGF5ZXIpOwpAQCAtNjc2LDcgKzY3Nyw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVz
dCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb25XaXRoVHJhbnNsYXRpb24pCiAgICAgLy8g
VGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgogICAg
IFJlZ2lvbiBvY2NsdWRlZDsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0
eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdp
dGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwogICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFj
ZSgpOwogICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwpAQCAtNzExLDggKzcxMiw4IEBAIFRF
U1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdp
b25XaXRoUm90YXRlZFN1cmZhY2UpCiAgICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0
cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgogICAgIFJlZ2lvbiBvY2NsdWRlZDsKICAgICBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1w
bD4oKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpj
cmVhdGU8Q0NMYXllckltcGw+KCk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2Vk
RHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNl
ZERyYXdzQ29udGVudCgpKTsKICAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKICAg
ICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDA0ZmNjNzU2ZTA5ZWUxYjdj
OTYxYTVlNTA0ODIxZjAxZjkzN2I0NmEuLjY1ZmZiYmVlMzFiYjNkOWNjNzEwZWJiMTc3Y2FkYzNk
ZjAyMWQ0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMzQsMTEgKzM0LDExIEBACiAjaW5jbHVkZSAiVGV4dHVy
ZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiV2ViS2l0
LmgiCi0jaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oIgogI2luY2x1
ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIK
KyNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
S2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVGhyZWFkLmgiCiAj
aW5jbHVkZSA8Z21vY2svZ21vY2suaD4KQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdFRlc3Q6OmRvQmVnaW5UZXN0KCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIG1fY2xpZW50ID0gTW9ja0xheWVyVHJlZUhvc3RDbGllbnQ6OmNyZWF0ZSh0aGlzKTsKIAot
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByb290TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogICAgIG1fbGF5ZXJUcmVlSG9zdCA9IE1vY2tMYXll
clRyZWVIb3N0OjpjcmVhdGUodGhpcywgbV9jbGllbnQuZ2V0KCksIHJvb3RMYXllciwgbV9zZXR0
aW5ncyk7CiAgICAgQVNTRVJUX1RSVUUobV9sYXllclRyZWVIb3N0KTsKICAgICByb290TGF5ZXIt
PnNldExheWVyVHJlZUhvc3QobV9sYXllclRyZWVIb3N0LmdldCgpKTsKQEAgLTEwOTMsNiArMTA5
MywxNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fdXBkYXRlQ291bnQrKzsKICAgICB9CiAKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllcj4gY3JlYXRlQ0NMYXllcigpCisgICAgeworICAgICAg
ICByZXR1cm4gQ0NUaWxlZExheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllciogY2NMYXllcikKKyAgICB7
CisgICAgICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzPENDVGlsZWRMYXllckltcGw+
KHRoaXMsIGNjTGF5ZXIpOworICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0
aWVzPENDVGlsZWRMYXllckltcGw+KHRoaXMsIGNjTGF5ZXIpOworICAgIH0KKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhDb250
ZW50TGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgICAgIDogQ29udGVudExheWVyQ2hyb21p
dW0oZGVsZWdhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Nh
bnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA0YjNkZDI3ZDMxZDg4MjEwNGM3
MGNmZmY1MDI0ZmI4MDQ0N2VhMTQxLi5kODlhMDYyYzI4NzlmM2YwZDk2NmM3NTNiMTEzZjZmZjk5
Y2Q1NTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8Q2FudmFzMkRM
YXllckNocm9taXVtPiBjYW52YXMgPSBDYW52YXMyRExheWVyQ2hyb21pdW06OmNyZWF0ZShtYWlu
Q29udGV4dC5nZXQoKSwgc2l6ZSk7CisgICAgICAgIFJlZlB0cjxDYW52YXMyRExheWVyQ2hyb21p
dW0+IGNhbnZhcyA9IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDQ2FudmFzTGF5ZXJJ
bXBsPihtYWluQ29udGV4dC5nZXQoKSwgc2l6ZSk7CiAgICAgICAgIGNhbnZhcy0+c2V0SXNEcmF3
YWJsZSh0cnVlKTsKICAgICAgICAgY2FudmFzLT5zZXRUZXh0dXJlTWFuYWdlcih0ZXh0dXJlTWFu
YWdlci5nZXQoKSk7CiAgICAgICAgIGNhbnZhcy0+c2V0Qm91bmRzKEludFNpemUoNjAwLCAzMDAp
KTsKQEAgLTEzOSwxNiArMTM5LDE2IEBAIHByb3RlY3RlZDoKICAgICAgICAgewogICAgICAgICAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNjb3BlZEltcGxUaHJlYWQ7CiAKLSAgICAgICAg
ICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbGF5ZXJJbXBsID0gY2FudmFzLT5jcmVhdGVDQ0xheWVy
SW1wbCgpOwotICAgICAgICAgICAgRVhQRUNUX0VRKDB1LCBzdGF0aWNfY2FzdDxDQ0NhbnZhc0xh
eWVySW1wbCo+KGxheWVySW1wbC5nZXQoKSktPnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAgIFJl
ZlB0cjxDQ0xheWVyPiBsYXllciA9IGNhbnZhcy0+Y3JlYXRlQ0NMYXllcigpOworICAgICAgICAg
ICAgRVhQRUNUX0VRKDB1LCBzdGF0aWNfY2FzdDxDQ0NhbnZhc0xheWVySW1wbCo+KGxheWVyLmdl
dCgpKS0+dGV4dHVyZUlkKCkpOwogCiAgICAgICAgICAgICBjYW52YXMtPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoaW1wbENvbnRleHQuZ2V0KCksIHVwZGF0ZXIpOwotICAgICAgICAgICAgY2Fu
dmFzLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CisgICAgICAgICAgICBjYW52
YXMtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIuZ2V0KCkpOwogCiAgICAgICAgICAgICBpZiAodGhy
ZWFkZWQpCi0gICAgICAgICAgICAgICAgRVhQRUNUX0VRKGZyb250VGV4dHVyZUlkLCBzdGF0aWNf
Y2FzdDxDQ0NhbnZhc0xheWVySW1wbCo+KGxheWVySW1wbC5nZXQoKSktPnRleHR1cmVJZCgpKTsK
KyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoZnJvbnRUZXh0dXJlSWQsIHN0YXRpY19jYXN0PEND
Q2FudmFzTGF5ZXJJbXBsKj4obGF5ZXIuZ2V0KCkpLT50ZXh0dXJlSWQoKSk7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgRVhQRUNUX0VRKGJhY2tUZXh0dXJlSWQsIHN0YXRpY19j
YXN0PENDQ2FudmFzTGF5ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOwor
ICAgICAgICAgICAgICAgIEVYUEVDVF9FUShiYWNrVGV4dHVyZUlkLCBzdGF0aWNfY2FzdDxDQ0Nh
bnZhc0xheWVySW1wbCo+KGxheWVyLmdldCgpKS0+dGV4dHVyZUlkKCkpOwogICAgICAgICB9CiAg
ICAgICAgIGNhbnZhcy5jbGVhcigpOwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVt
b3J5VG9MaW1pdCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXll
ckNocm9taXVtVGVzdC5jcHAKaW5kZXggNDMwODNhMWQ3YWJiMWI0ODU4YmNhODFmOGM3MWYyMmM2
NzA0NDg1My4uMTVkZTdlYTRlZDRlMmMyYTM5MDBhOWVjYjRhZjFhZWU5YzczYTY1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKIAorI2luY2x1
ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAj
aW5jbHVkZSAiQ0NMYXllclRyZWVUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZUNDTGF5ZXJU
cmVlSG9zdENsaWVudC5oIgpAQCAtNzAsNyArNzEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKSB7IH0KIH07CiAKLQog
Y2xhc3MgTGF5ZXJDaHJvbWl1bVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKQEAgLTEyMiwxMyArMTIyLDEzIEBAIHByb3Rl
Y3RlZDoKIAogICAgIHZvaWQgY3JlYXRlU2ltcGxlVGVzdFRyZWUoKQogICAgIHsKLSAgICAgICAg
bV9wYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICAgICAgbV9jaGlsZDEgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICAgICAgbV9jaGlsZDIgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoKTsKLSAgICAgICAgbV9jaGlsZDMgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsK
LSAgICAgICAgbV9ncmFuZENoaWxkMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgICAg
ICBtX2dyYW5kQ2hpbGQyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fZ3Jh
bmRDaGlsZDMgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICAgICAgbV9wYXJlbnQgPSBM
YXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgICAgIG1fY2hpbGQxID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgICAgICBtX2NoaWxkMiA9
IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICAgICAgbV9jaGlsZDMg
PSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgICAgIG1fZ3JhbmRD
aGlsZDEgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgICAgIG1f
Z3JhbmRDaGlsZDIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAg
ICAgIG1fZ3JhbmRDaGlsZDMgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7
CiAKICAgICAgICAgRVhQRUNUX0NBTEwoKm1fbGF5ZXJUcmVlSG9zdCwgc2V0TmVlZHNDb21taXQo
KSkuVGltZXMoQW55TnVtYmVyKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RM
YXllcihtX3BhcmVudCk7CkBAIC0xNTEsNyArMTUxLDcgQEAgcHJvdGVjdGVkOgogCiBURVNUX0Yo
TGF5ZXJDaHJvbWl1bVRlc3QsIGJhc2ljQ3JlYXRlQW5kRGVzdHJveSkKIHsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gdGVzdExheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IHRlc3RMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxD
Q0xheWVySW1wbD4oKTsKICAgICBBU1NFUlRfVFJVRSh0ZXN0TGF5ZXIpOwogCiAgICAgRVhQRUNU
X0NBTEwoKm1fbGF5ZXJUcmVlSG9zdCwgc2V0TmVlZHNDb21taXQoKSkuVGltZXMoMCk7CkBAIC0x
NjAsOCArMTYwLDggQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBiYXNpY0NyZWF0ZUFuZERl
c3Ryb3kpCiAKIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgYWRkQW5kUmVtb3ZlQ2hpbGQpCiB7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVt
OjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxk
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogCiAgICAgLy8gVXBvbiBj
cmVhdGlvbiwgbGF5ZXJzIHNob3VsZCBub3QgaGF2ZSBjaGlsZHJlbiBvciBwYXJlbnQuCiAgICAg
QVNTRVJUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMCksIHBhcmVudC0+Y2hpbGRyZW4oKS5zaXpl
KCkpOwpAQCAtMTgxLDExICsxODEsMTEgQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBhZGRB
bmRSZW1vdmVDaGlsZCkKIAogVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBpbnNlcnRDaGlsZCkK
IHsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMSA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQzID0gTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkNCA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQg
PSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IGNoaWxkMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsK
KyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
PENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDMgPSBMYXll
ckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IGNoaWxkNCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKIAogICAg
IHBhcmVudC0+c2V0TGF5ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwogCkBAIC0y
MjcsOSArMjI3LDkgQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBpbnNlcnRDaGlsZCkKIAog
VEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBpbnNlcnRDaGlsZFBhc3RFbmRPZkxpc3QpCiB7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgp
OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDEgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hp
bGQxID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBjaGlsZDIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+
KCk7CiAKICAgICBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PigwKSwgcGFyZW50LT5jaGls
ZHJlbigpLnNpemUoKSk7CiAKQEAgLTI0OSw5ICsyNDksOSBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1
bVRlc3QsIGluc2VydENoaWxkUGFzdEVuZE9mTGlzdCkKIAogVEVTVF9GKExheWVyQ2hyb21pdW1U
ZXN0LCBpbnNlcnRTYW1lQ2hpbGRUd2ljZSkKIHsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
cGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IGNoaWxkMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBjaGlsZDIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigp
OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDEgPSBMYXllckNocm9taXVtOjpjcmVh
dGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMiA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKIAogICAgIHBhcmVudC0+c2V0TGF5
ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwogCkBAIC0yNzgsNyArMjc4LDcgQEAg
VEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBpbnNlcnRTYW1lQ2hpbGRUd2ljZSkKIFRFU1RfRihM
YXllckNocm9taXVtVGVzdCwgcmVwbGFjZUNoaWxkV2l0aE5ld0NoaWxkKQogewogICAgIGNyZWF0
ZVNpbXBsZVRlc3RUcmVlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkNCA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDQg
PSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CiAKICAgICBFWFBFQ1RfRkFM
U0UoY2hpbGQ0LT5wYXJlbnQoKSk7CiAKQEAgLTI5OCw4ICsyOTgsOCBAQCBURVNUX0YoTGF5ZXJD
aHJvbWl1bVRlc3QsIHJlcGxhY2VDaGlsZFdpdGhOZXdDaGlsZFRoYXRIYXNPdGhlclBhcmVudCkK
ICAgICBjcmVhdGVTaW1wbGVUZXN0VHJlZSgpOwogCiAgICAgLy8gY3JlYXRlIGFub3RoZXIgc2lt
cGxlIHRyZWUgd2l0aCB0ZXN0TGF5ZXIgYW5kIGNoaWxkNC4KLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gdGVzdExheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IGNoaWxkNCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXll
ckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkNCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKICAgICB0ZXN0TGF5ZXItPmFkZENoaWxkKGNoaWxk
NCk7CiAgICAgQVNTRVJUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMSksIHRlc3RMYXllci0+Y2hp
bGRyZW4oKS5zaXplKCkpOwogICAgIEVYUEVDVF9FUShjaGlsZDQsIHRlc3RMYXllci0+Y2hpbGRy
ZW4oKVswXSk7CkBAIC0zNDMsMTEgKzM0MywxMSBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3Qs
IHJlbW92ZUFsbENoaWxkcmVuKQogCiBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIHNldENoaWxk
cmVuKQogewotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBvbGRQYXJlbnQgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbmV3UGFyZW50ID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG9sZFBhcmVu
dCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gbmV3UGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBs
PigpOwogCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMSA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQxID0gTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBjaGlsZDIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CiAKICAgICBW
ZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gbmV3Q2hpbGRyZW47CiAgICAgbmV3Q2hpbGRy
ZW4uYXBwZW5kKGNoaWxkMSk7CkBAIC0zNzcsNyArMzc3LDcgQEAgVEVTVF9GKExheWVyQ2hyb21p
dW1UZXN0LCBnZXRSb290TGF5ZXJBZnRlclRyZWVNYW5pcHVsYXRpb25zKQogICAgIC8vIEZvciB0
aGlzIHRlc3Qgd2UgZG9uJ3QgY2FyZSBhYm91dCBzZXROZWVkc0NvbW1pdCBjYWxscy4KICAgICBF
WFBFQ1RfQ0FMTCgqbV9sYXllclRyZWVIb3N0LCBzZXROZWVkc0NvbW1pdCgpKS5UaW1lcyhBdExl
YXN0KDEpKTsKIAotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDQgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQ0ID0gTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogCiAgICAgRVhQRUNUX0VRKG1fcGFyZW50
LmdldCgpLCBtX3BhcmVudC0+cm9vdExheWVyKCkpOwogICAgIEVYUEVDVF9FUShtX3BhcmVudC5n
ZXQoKSwgbV9jaGlsZDEtPnJvb3RMYXllcigpKTsKQEAgLTQzMCw3ICs0MzAsNyBAQCBURVNUX0Yo
TGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrU2V0TmVlZHNEaXNwbGF5Q2F1c2VzQ29ycmVjdEJlaGF2
aW9yKQogICAgIC8vICAgMS4gc2V0cyBuZWVkc0Rpc3BsYXkgZmxhZyBhcHByb3ByaWF0ZWx5Lgog
ICAgIC8vICAgMi4gaW5kaXJlY3RseSBjYWxscyBzZXROZWVkc0NvbW1pdCwgZXhhY3RseSBvbmNl
IGZvciBlYWNoIGNhbGwgdG8gc2V0TmVlZHNEaXNwbGF5LgogCi0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IHRlc3RMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllcklt
cGw+KCk7CiAgICAgdGVzdExheWVyLT5zZXRMYXllclRyZWVIb3N0KG1fbGF5ZXJUcmVlSG9zdC5n
ZXQoKSk7CiAKICAgICBJbnRTaXplIHRlc3RCb3VuZHMgPSBJbnRTaXplKDUwMSwgNTA4KTsKQEAg
LTQ0NSw3ICs0NDUsNyBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrU2V0TmVlZHNE
aXNwbGF5Q2F1c2VzQ29ycmVjdEJlaGF2aW9yKQogCiAgICAgLy8gVGhpcyBpcyBqdXN0IGluaXRp
YWxpemF0aW9uLCBidXQgc2V0TmVlZHNDb21taXQgYmVoYXZpb3IgaXMgdmVyaWZpZWQgYW55d2F5
IHRvIGF2b2lkIHdhcm5pbmdzLgogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09N
TUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0Qm91bmRzKHRlc3RCb3VuZHMpKTsKLSAgICB0
ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICB0ZXN0TGF5ZXIgPSBMYXll
ckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CiAgICAgdGVzdExheWVyLT5zZXRMYXll
clRyZWVIb3N0KG1fbGF5ZXJUcmVlSG9zdC5nZXQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHRlc3RM
YXllci0+bmVlZHNEaXNwbGF5KCkpOwogCkBAIC00NjQsMTQgKzQ2NCwxNCBAQCBURVNUX0YoTGF5
ZXJDaHJvbWl1bVRlc3QsIGNoZWNrU2V0TmVlZHNEaXNwbGF5Q2F1c2VzQ29ycmVjdEJlaGF2aW9y
KQogICAgIEVYUEVDVF9UUlVFKHRlc3RMYXllci0+bmVlZHNEaXNwbGF5KCkpOwogCiAgICAgLy8g
Q2FzZSA0OiBMYXllckNocm9taXVtIHNob3VsZCBhY2NlcHQgZGlydHkgcmVjdHMgdGhhdCBnbyBi
ZXlvbmQgaXRzIGJvdW5kcy4KLSAgICB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKKyAgICB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7
CiAgICAgdGVzdExheWVyLT5zZXRMYXllclRyZWVIb3N0KG1fbGF5ZXJUcmVlSG9zdC5nZXQoKSk7
CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVz
dExheWVyLT5zZXRCb3VuZHModGVzdEJvdW5kcykpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9T
RVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0TmVlZHNEaXNwbGF5UmVj
dChvdXRPZkJvdW5kc0RpcnR5UmVjdCkpOwogICAgIEVYUEVDVF9UUlVFKHRlc3RMYXllci0+bmVl
ZHNEaXNwbGF5KCkpOwogCiAgICAgLy8gQ2FzZSA1OiBzZXROZWVkc0Rpc3BsYXkoKSB3aXRob3V0
IHRoZSBkaXJ0eSByZWN0IGFyZy4KLSAgICB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKKyAgICB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+
KCk7CiAgICAgdGVzdExheWVyLT5zZXRMYXllclRyZWVIb3N0KG1fbGF5ZXJUcmVlSG9zdC5nZXQo
KSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwg
dGVzdExheWVyLT5zZXRCb3VuZHModGVzdEJvdW5kcykpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklG
WV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0TmVlZHNEaXNwbGF5
KCkpOwpAQCAtNDgwLDEwICs0ODAsMTAgQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBjaGVj
a1NldE5lZWRzRGlzcGxheUNhdXNlc0NvcnJlY3RCZWhhdmlvcikKIAogVEVTVF9GKExheWVyQ2hy
b21pdW1UZXN0LCBjaGVja1Byb3BlcnR5Q2hhbmdlQ2F1c2VzQ29ycmVjdEJlaGF2aW9yKQogewot
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiB0ZXN0TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gdGVzdExheWVyID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogICAgIHRlc3RMYXllci0+c2V0TGF5ZXJUcmVlSG9z
dChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwogCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGR1
bW15TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsgLy8ganVzdCBhIGR1bW15IGxheWVy
IGZvciB0aGlzIHRlc3QgY2FzZS4KKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZHVtbXlMYXll
ciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsgLy8ganVzdCBhIGR1bW15
IGxheWVyIGZvciB0aGlzIHRlc3QgY2FzZS4KIAogICAgIC8vIHNhbml0eSBjaGVjayBvZiBpbml0
aWFsIHRlc3QgY29uZGl0aW9uCiAgICAgRVhQRUNUX0ZBTFNFKHRlc3RMYXllci0+bmVlZHNEaXNw
bGF5KCkpOwpAQCAtNTk3LDExICs1OTcsMTEgQEAgdm9pZCBhc3NlcnRMYXllclRyZWVIb3N0TWF0
Y2hlc0ZvclN1YnRyZWUoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIENDTGF5ZXJUcmVlSG9zdCoKIFRF
U1QoTGF5ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0LCBlbnRlcmluZ1RyZWUpCiB7CiAgICAg
V2ViS2l0OjpXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwotICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gbWFzayA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiByZXBsaWNhID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2FNYXNrID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBM
YXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IG1hc2sgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2EgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NM
YXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2FNYXNrID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogCiAgICAgLy8gU2V0IHVwIGEgZGV0
YWNoZWQgdHJlZSBvZiBsYXllcnMuIFRoZSBob3N0IHBvaW50ZXIgc2hvdWxkIGJlIG5pbCBmb3Ig
dGhlc2UgbGF5ZXJzLgogICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwpAQCAtNjI5LDcgKzYy
OSw3IEBAIFRFU1QoTGF5ZXJDaHJvbWl1bUxheWVyVHJlZUhvc3RUZXN0LCBlbnRlcmluZ1RyZWUp
CiBURVNUKExheWVyQ2hyb21pdW1MYXllclRyZWVIb3N0VGVzdCwgYWRkaW5nTGF5ZXJTdWJ0cmVl
KQogewogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xh
eWVySW1wbD4oKTsKICAgICBSZWZQdHI8RmFrZUNDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9z
dCA9IEZha2VDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOwogCiAgICAgbGF5ZXJUcmVlSG9zdC0+
c2V0Um9vdExheWVyKHBhcmVudC5nZXQoKSk7CkBAIC02MzcsMTYgKzYzNywxNiBAQCBURVNUKExh
eWVyQ2hyb21pdW1MYXllclRyZWVIb3N0VGVzdCwgYWRkaW5nTGF5ZXJTdWJ0cmVlKQogICAgIEVY
UEVDVF9FUShwYXJlbnQtPmxheWVyVHJlZUhvc3QoKSwgbGF5ZXJUcmVlSG9zdC5nZXQoKSk7CiAK
ICAgICAvLyBBZGRpbmcgYSBzdWJ0cmVlIHRvIGEgbGF5ZXIgYWxyZWFkeSBhc3NvY2lhdGVkIHdp
dGggYSBob3N0IHNob3VsZCBzZXQgdGhlIGhvc3QgcG9pbnRlciBvbiBhbGwgbGF5ZXJzIGluIHRo
YXQgc3VidHJlZS4KLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZCA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9
IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gZ3JhbmRDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4o
KTsKICAgICBjaGlsZC0+YWRkQ2hpbGQoZ3JhbmRDaGlsZCk7CiAKICAgICAvLyBNYXNrcywgcmVw
bGljYXMsIGFuZCByZXBsaWNhIG1hc2tzIHNob3VsZCBwaWNrIHVwIHRoZSBuZXcgaG9zdCB0b28u
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkTWFzayA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZE1hc2sgPSBMYXllckNocm9t
aXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CiAgICAgY2hpbGQtPnNldE1hc2tMYXllcihjaGls
ZE1hc2suZ2V0KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZFJlcGxpY2EgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGRS
ZXBsaWNhID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogICAgIGNoaWxk
LT5zZXRSZXBsaWNhTGF5ZXIoY2hpbGRSZXBsaWNhLmdldCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gY2hpbGRSZXBsaWNhTWFzayA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZFJlcGxpY2FNYXNrID0gTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwogICAgIGNoaWxkUmVwbGljYS0+c2V0TWFza0xheWVyKGNo
aWxkUmVwbGljYU1hc2suZ2V0KCkpOwogCiAgICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7CkBA
IC02NjAsMTEgKzY2MCwxMSBAQCBURVNUKExheWVyQ2hyb21pdW1MYXllclRyZWVIb3N0VGVzdCwg
YWRkaW5nTGF5ZXJTdWJ0cmVlKQogVEVTVChMYXllckNocm9taXVtTGF5ZXJUcmVlSG9zdFRlc3Qs
IGNoYW5nZUhvc3QpCiB7CiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDAp
OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbWFzayA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2FNYXNrID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVu
dCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7
CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1hc2sgPSBMYXllckNocm9taXVtOjpjcmVhdGU8
Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2EgPSBMYXll
ckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IHJlcGxpY2FNYXNrID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwog
CiAgICAgLy8gU2FtZSBzZXR1cCBhcyB0aGUgcHJldmlvdXMgdGVzdC4KICAgICBwYXJlbnQtPmFk
ZENoaWxkKGNoaWxkKTsKQEAgLTY5MywxMSArNjkzLDExIEBAIFRFU1QoTGF5ZXJDaHJvbWl1bUxh
eWVyVHJlZUhvc3RUZXN0LCBjaGFuZ2VIb3N0KQogVEVTVChMYXllckNocm9taXVtTGF5ZXJUcmVl
SG9zdFRlc3QsIGNoYW5nZUhvc3RJblN1YnRyZWUpCiB7CiAgICAgV2ViS2l0OjpXZWJDb21wb3Np
dG9yOjppbml0aWFsaXplKDApOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBmaXJzdFBhcmVu
dCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBm
aXJzdENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IHNlY29uZFBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiBzZWNvbmRDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwot
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBzZWNvbmRHcmFuZENoaWxkID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGZpcnN0UGFyZW50ID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiBmaXJzdENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOwor
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBzZWNvbmRQYXJlbnQgPSBMYXllckNocm9taXVtOjpj
cmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHNlY29uZENo
aWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBzZWNvbmRHcmFuZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPEND
TGF5ZXJJbXBsPigpOwogCiAgICAgLy8gRmlyc3QgcHV0IGFsbCBjaGlsZHJlbiB1bmRlciB0aGUg
Zmlyc3QgcGFyZW50IGFuZCBzZXQgdGhlIGZpcnN0IGhvc3QuCiAgICAgZmlyc3RQYXJlbnQtPmFk
ZENoaWxkKGZpcnN0Q2hpbGQpOwpAQCAtNzMwLDEzICs3MzAsMTMgQEAgVEVTVChMYXllckNocm9t
aXVtTGF5ZXJUcmVlSG9zdFRlc3QsIGNoYW5nZUhvc3RJblN1YnRyZWUpCiBURVNUKExheWVyQ2hy
b21pdW1MYXllclRyZWVIb3N0VGVzdCwgcmVwbGFjZU1hc2tBbmRSZXBsaWNhTGF5ZXIpCiB7CiAg
ICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gbWFzayA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiByZXBsaWNhID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IG1hc2tDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgp
OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhQ2hpbGQgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbWFza1JlcGxhY2VtZW50ID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxp
Y2FSZXBsYWNlbWVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7
CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1hc2sgPSBMYXllckNocm9taXVtOjpjcmVhdGU8
Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2EgPSBMYXll
ckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IG1hc2tDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGljYUNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlPENDTGF5ZXJJbXBsPigpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtYXNrUmVwbGFj
ZW1lbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IHJlcGxpY2FSZXBsYWNlbWVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZTxDQ0xheWVySW1wbD4oKTsKIAogICAgIHBhcmVudC0+c2V0TWFza0xheWVyKG1hc2suZ2V0KCkp
OwogICAgIHBhcmVudC0+c2V0UmVwbGljYUxheWVyKHJlcGxpY2EuZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5j
cHAKaW5kZXggZmNkMzg3OGE2NmE2M2I4Zjk2MDZiOTU0M2FmNzExMjY5MjFjNWU0YS4uNDdhMDUx
MjIyMjAyNDUxOGJjNmY1M2QyNjQ4YmRhN2NiNGU4NWQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0x
NzEsNiArMTcxLDE3IEBAIHB1YmxpYzoKICAgICAgICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVM
YXllclJlY3QoKSk7CiAgICAgfQogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXI+IGNy
ZWF0ZUNDTGF5ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIENDVGlsZWRMYXllckltcGw6OmNy
ZWF0ZShtX2xheWVySWQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGll
c1RvKENDTGF5ZXIqIGxheWVyKQorICAgIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFBy
b3BlcnRpZXM8Q0NMYXllckltcGw+KHRoaXMsIGxheWVyKTsKKyAgICAgICAgcHVzaFByb3BlcnRp
ZXM8Q0NUaWxlZExheWVySW1wbD4odGhpcywgbGF5ZXIpOworICAgIH0KKwogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3QKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJv
bml6ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5bmNocm9u
aXplclRlc3QuY3BwCmluZGV4IDE1NTdhN2Q5MzIyY2M2YmUyMDZiZjUwYjAwYzBmNDcwNjNjNTQ3
OGIuLmFlMTk3Mjg3NzgwMDk1MTk3M2ZjNWIxMjc4ZDU0MWJiM2JkNTY1MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3QuY3Bw
CkBAIC02OSwxOCArNjksMTkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TW9ja0xheWVyQ2hy
b21pdW0oKSB7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRl
Q0NMYXllckltcGwoKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVyPiBjcmVhdGVDQ0xh
eWVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiBNb2NrQ0NMYXllckltcGw6OmNyZWF0ZShtX2xh
eWVySWQpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5
ZXJJbXBsKiBjY0xheWVyKQorICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5
ZXIqIGNjTGF5ZXIpCiAgICAgewotICAgICAgICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGll
c1RvKGNjTGF5ZXIpOworICAgICAgICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllczxNb2Nr
Q0NMYXllckltcGw+KHRoaXMsIGNjTGF5ZXIpOwogCiAgICAgICAgIE1vY2tDQ0xheWVySW1wbCog
bW9ja0NDTGF5ZXIgPSBzdGF0aWNfY2FzdDxNb2NrQ0NMYXllckltcGwqPihjY0xheWVyKTsKICAg
ICAgICAgbW9ja0NDTGF5ZXItPnNldENDTGF5ZXJEZXN0cnVjdGlvbkxpc3QobV9jY0xheWVyRGVz
dHJ1Y3Rpb25MaXN0KTsKICAgICB9CisKIHByaXZhdGU6CiAgICAgTW9ja0xheWVyQ2hyb21pdW0o
VmVjdG9yPGludD4qIGNjTGF5ZXJEZXN0cnVjdGlvbkxpc3QpCiAgICAgICAgIDogTGF5ZXJDaHJv
bWl1bSgpCkBAIC0xMTksOSArMTIwLDkgQEAgdm9pZCBleHBlY3RUcmVlc0FyZUlkZW50aWNhbChM
YXllckNocm9taXVtKiBsYXllciwgQ0NMYXllckltcGwqIGNjTGF5ZXIpCiBURVNUKFRyZWVTeW5j
aHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUZyb21FbXB0eSkKIHsKICAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVl
Um9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIGxheWVyVHJlZVJvb3QtPmFkZENo
aWxkKExheWVyQ2hyb21pdW06OmNyZWF0ZSgpKTsKLSAgICBsYXllclRyZWVSb290LT5hZGRDaGls
ZChMYXllckNocm9taXVtOjpjcmVhdGUoKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxh
eWVyVHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CisgICAg
bGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBs
PigpKTsKKyAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChMYXllckNocm9taXVtOjpjcmVhdGU8
Q0NMYXllckltcGw+KCkpOwogCiAgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJv
b3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0
KCksIDApOwogCkBAIC0xNTgsOSArMTU5LDkgQEAgVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwg
c3luY1NpbXBsZVRyZWVSZXVzaW5nTGF5ZXJzKQogVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwg
c3luY1NpbXBsZVRyZWVBbmRQcm9wZXJ0aWVzKQogewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZCBpbXBsOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllclRyZWVSb290ID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKCkpOwotICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKExheWVyQ2hy
b21pdW06OmNyZWF0ZSgpKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVlUm9v
dCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBsYXllclRyZWVS
b290LT5hZGRDaGlsZChMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCkpOworICAg
IGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1w
bD4oKSk7CiAKICAgICAvLyBQaWNrIHNvbWUgcmFuZG9tIHByb3BlcnRpZXMgdG8gc2V0LiBUaGUg
dmFsdWVzIGFyZSBub3QgaW1wb3J0YW50LCB3ZSdyZSBqdXN0IHRlc3RpbmcgdGhhdCBhdCBsZWFz
dCBzb21lIHByb3BlcnRpZXMgYXJlIG1ha2luZyBpdCB0aHJvdWdoLgogICAgIEZsb2F0UG9pbnQg
cm9vdFBvc2l0aW9uID0gRmxvYXRQb2ludCgyLjMsIDcuNCk7CkBAIC0yNTQsNyArMjU1LDcgQEAg
VEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVUaGVuRGVzdHJveSkKICAg
ICBvbGRMYXllclRyZWVSb290LT5yZW1vdmVBbGxDaGlsZHJlbigpOwogCiAgICAgLy8gU3luY2hy
b25pemUgYWdhaW4uIEFmdGVyIHRoZSBzeW5jIGFsbCBDQ0xheWVySW1wbHMgZnJvbSB0aGUgb2xk
IHRyZWUgc2hvdWxkIGJlIGRlbGV0ZWQuCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG5ld0xh
eWVyVHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gbmV3TGF5ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVy
SW1wbD4oKTsKICAgICBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJv
bml6ZVRyZWVzKG5ld0xheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5yZWxlYXNl
KCkpOwogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKG5ld0xheWVyVHJlZVJvb3QuZ2V0KCks
IGNjTGF5ZXJUcmVlUm9vdC5nZXQoKSk7CiAKQEAgLTI2OCwyMiArMjY5LDIyIEBAIFRFU1QoVHJl
ZVN5bmNocm9uaXplclRlc3QsIHN5bmNTaW1wbGVUcmVlVGhlbkRlc3Ryb3kpCiBURVNUKFRyZWVT
eW5jaHJvbml6ZXJUZXN0LCBzeW5jTWFza1JlcGxpY2FBbmRSZXBsaWNhTWFza0xheWVycykKIHsK
ICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gbGF5ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIGxheWVy
VHJlZVJvb3QtPmFkZENoaWxkKExheWVyQ2hyb21pdW06OmNyZWF0ZSgpKTsKLSAgICBsYXllclRy
ZWVSb290LT5hZGRDaGlsZChMYXllckNocm9taXVtOjpjcmVhdGUoKSk7Ci0gICAgbGF5ZXJUcmVl
Um9vdC0+YWRkQ2hpbGQoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOworICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBsYXllclRyZWVSb290ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlPENDTGF5ZXJJ
bXBsPigpOworICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKExheWVyQ2hyb21pdW06OmNyZWF0
ZTxDQ0xheWVySW1wbD4oKSk7CisgICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlPENDTGF5ZXJJbXBsPigpKTsKKyAgICBsYXllclRyZWVSb290LT5hZGRDaGls
ZChMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCkpOwogCiAgICAgLy8gRmlyc3Qg
Y2hpbGQgZ2V0cyBhIG1hc2sgbGF5ZXIuCi0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1hc2tM
YXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBtYXNrTGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CiAgICAg
bGF5ZXJUcmVlUm9vdC0+Y2hpbGRyZW4oKVswXS0+c2V0TWFza0xheWVyKG1hc2tMYXllci5nZXQo
KSk7CiAKICAgICAvLyBTZWNvbmQgY2hpbGQgZ2V0cyBhIHJlcGxpY2EgbGF5ZXIuCi0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IHJlcGxpY2FMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgp
OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhTGF5ZXIgPSBMYXllckNocm9taXVt
OjpjcmVhdGU8Q0NMYXllckltcGw+KCk7CiAgICAgbGF5ZXJUcmVlUm9vdC0+Y2hpbGRyZW4oKVsx
XS0+c2V0UmVwbGljYUxheWVyKHJlcGxpY2FMYXllci5nZXQoKSk7CiAKICAgICAvLyBUaGlyZCBj
aGlsZCBnZXRzIGEgcmVwbGljYSBsYXllciB3aXRoIGEgbWFzayBsYXllci4KLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gcmVwbGljYUxheWVyV2l0aE1hc2sgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGljYU1hc2tMYXllciA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhTGF5
ZXJXaXRoTWFzayA9IExheWVyQ2hyb21pdW06OmNyZWF0ZTxDQ0xheWVySW1wbD4oKTsKKyAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcmVwbGljYU1hc2tMYXllciA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZTxDQ0xheWVySW1wbD4oKTsKICAgICByZXBsaWNhTGF5ZXJXaXRoTWFzay0+c2V0TWFza0xh
eWVyKHJlcGxpY2FNYXNrTGF5ZXIuZ2V0KCkpOwogICAgIGxheWVyVHJlZVJvb3QtPmNoaWxkcmVu
KClbMl0tPnNldFJlcGxpY2FMYXllcihyZXBsaWNhTGF5ZXJXaXRoTWFzay5nZXQoKSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>