<?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>219946</bug_id>
          
          <creation_ts>2020-12-16 06:38:51 -0800</creation_ts>
          <short_desc>REGRESSION (r268386): Snapshots of WebGL content in the tab picker don&apos;t work (black map on Google Maps)</short_desc>
          <delta_ts>2020-12-17 23:06:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1715098</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-16 06:38:51 -0800</bug_when>
    <thetext>REGRESSION (r268386): Snapshots of WebGL content in the tab picker don&apos;t work (black map on Google Maps)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715099</commentid>
    <comment_count>1</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-16 06:39:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/72013784&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715347</commentid>
    <comment_count>2</comment_count>
      <attachid>416405</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-17 02:31:11 -0800</bug_when>
    <thetext>Created attachment 416405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715348</commentid>
    <comment_count>3</comment_count>
      <attachid>416406</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-17 02:35:32 -0800</bug_when>
    <thetext>Created attachment 416406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715353</commentid>
    <comment_count>4</comment_count>
      <attachid>416408</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-17 02:42:35 -0800</bug_when>
    <thetext>Created attachment 416408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715363</commentid>
    <comment_count>5</comment_count>
      <attachid>416411</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-17 03:39:10 -0800</bug_when>
    <thetext>Created attachment 416411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715364</commentid>
    <comment_count>6</comment_count>
      <attachid>416412</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-17 03:42:10 -0800</bug_when>
    <thetext>Created attachment 416412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715365</commentid>
    <comment_count>7</comment_count>
      <attachid>416413</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-17 03:56:08 -0800</bug_when>
    <thetext>Created attachment 416413
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715366</commentid>
    <comment_count>8</comment_count>
      <attachid>416414</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-17 04:07:06 -0800</bug_when>
    <thetext>Created attachment 416414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715368</commentid>
    <comment_count>9</comment_count>
      <attachid>416415</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-17 04:20:31 -0800</bug_when>
    <thetext>Created attachment 416415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715369</commentid>
    <comment_count>10</comment_count>
      <attachid>416416</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-17 04:28:54 -0800</bug_when>
    <thetext>Created attachment 416416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715467</commentid>
    <comment_count>11</comment_count>
      <attachid>416416</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-12-17 11:37:03 -0800</bug_when>
    <thetext>Comment on attachment 416416
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Fix case where WebGL would first be displayed with hardware code path
&gt; +        and then displayed with software code path (painting from the paint
&gt; +        tree). Former happens when user looks at the page and latter happens

I had some concerns when this was first landed :| I should have spoken up more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715661</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-17 23:05:28 -0800</bug_when>
    <thetext>Committed r270964: &lt;https://trac.webkit.org/changeset/270964&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416416.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715662</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-17 23:06:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/72456551&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416405</attachid>
            <date>2020-12-17 02:31:11 -0800</date>
            <delta_ts>2020-12-17 02:49:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219946-20201217123109.patch</filename>
            <type>text/plain</type>
            <size>63480</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMwMGNiMzk4NTY1MjRm
YzAxZWY4N2I5ZDkxYWQ4NWRjZmU3YTY5ZS4uN2IyZTM4NjdmYjQ1ZWUyMzI3MmRhNzZkMmM1ZmI5
YTU5OTk4NGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAyMC0xMi0xNyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04g
KHIyNjgzODYpOiBTbmFwc2hvdHMgb2YgV2ViR0wgY29udGVudCBpbiB0aGUgdGFiIHBpY2tlciBk
b24ndCB3b3JrIChibGFjayBtYXAgb24gR29vZ2xlIE1hcHMpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcyMDEzNzg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZpeCBjYXNlIHdoZXJlIFdlYkdMIHdvdWxkIGZpcnN0IGJlIGRpc3BsYXllZCB3aXRo
IGhhcmR3YXJlIGNvZGUgcGF0aAorICAgICAgICBhbmQgdGhlbiBkaXNwbGF5ZWQgd2l0aCBzb2Z0
d2FyZSBjb2RlIHBhdGggKHBhaW50aW5nIGZyb20gdGhlIHBhaW50CisgICAgICAgIHRyZWUpLiBG
b3JtZXIgaGFwcGVucyB3aGVuIHVzZXIgbG9va3MgYXQgdGhlIHBhZ2UgYW5kIGxhdHRlciBoYXBw
ZW5zCisgICAgICAgIHdoZW4gcHJpbnRpbmcgb3Igd2hlbiBTYWZhcmkgdGFrZXMgYSBzbmFwc2hv
dC4KKworICAgICAgICBUaGlzIGlzIG5vdCBhIHJlYWwgcmVncmVzc2lvbiBvZiByMjY4Mzg2LiBQ
cmlvciB0byB0aGF0LCB0aGUgc29mdHdhcmUKKyAgICAgICAgZGlzcGxheSB3b3VsZCBoYXZlIHVz
ZWQgdW5pbml0aWFsaXplZCBJT1N1cmZhY2UgY29udGVudHMgb3IgY29udGVudHMgb2YKKyAgICAg
ICAgMS0yIGZyYW1lcyBwcmlvciBhbmQgd291bGQgbGVhdmUgdGhlIGhhcmR3YXJlIGRpc3BsYXkg
YnVmZmVyIG5vdAorICAgICAgICB1cGRhdGVkLgorCisgICAgICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaXMgdXNlZCBmb3IgdHdvCisg
ICAgICAgIHB1cnBvc2VzOgorICAgICAgICAgIDEpIEltYWdlIGV4dHJhY3Rpb24gdXNlcywgc3Vj
aCBhcyB0b0RhdGEoKSBvcgorICAgICAgICAgICAgIGNvbnN0cnVjdGluZyBhbiBJbWFnZSBvdXQg
b2YgdGhlIGNvbnRlbnRzLgorICAgICAgICAgIDIpIFBhaW50aW5nIHRoZSByZW5kZXJpbmcgdG8g
dGhlIGRvY3VtZW50IGR1cmluZyBzb2Z0d2FyZSBkaXNwbGF5LgorCisgICAgICAgIFRoZSAxKSBj
YXNlIHVzZXMgYWx3YXlzIHRoZSBkcmF3aW5nIGJ1ZmZlci4KKworICAgICAgICBUaGUgMikgY2Fz
ZSBwcmVzZW50cyB0aGUgZHJhd2luZyBidWZmZXIgYXMgdGhlIG5ldyBkaXNwbGF5IGJ1ZmZlciBp
ZgorICAgICAgICB0aGVyZSBhcmUgY2hhbmdlcyB0byB0aGUgZHJhd2luZyBidWZmZXIgYW5kIHVz
ZXMgdGhlIHBvdGVudGlhbGx5IG5ldworICAgICAgICBkaXNwbGF5IGJ1ZmZlciB0byBkaXNwbGF5
LgorCisgICAgICAgIEZvciAyRCBjYW52YXMsIHRoZXNlIHR3byBjYXNlcyBhcmUgdGhlIHNhbWUg
Y2FzZS4gRm9yIFdlYkdMIHRoZXkgYXJlCisgICAgICAgIGRpZmZlcmVudC4KKworICAgICAgICBU
aGUgZGlzcGxheSBpcyBkZXN0cnVjdGl2ZSBmb3IgV2ViR0wgZHJhd2luZyBidWZmZXIgd2hlbgor
ICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPT0gZmFsc2UuIFRoaXMgbWVhbnMgdGhhdCBp
ZiBoYXJkd2FyZSBkaXNwbGF5IGhhcworICAgICAgICBoYXBwZW5lZCwgd2UgbXVzdCByZWFkIHRo
ZSBkaXNwbGF5IGJ1ZmZlciBkdXJpbmcgY2FzZSAyLiBUaGlzIGNvZGUgd2FzCisgICAgICAgIG1p
c3NpbmcsIHNvIHRoZSBzY2VuYXJpbyBjb3VsZCBub3QgaGF2ZSBldmVyIHdvcmtlZC4KKworICAg
ICAgICBUaGUgcHJldmlvdXMgY29kZSB0cmllZCB0byB3b3JrYXJvdW5kIHRoaXMgYnkgdGhlCisg
ICAgICAgIFdlYkdMR3JhcGhpY3NDb250ZXh0QmFzZSB0byBkZXRlY3Qgd2hhdCB0aGUgb3duZXIg
aW50ZW5kZWQgd2l0aCB0aGUKKyAgICAgICAgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMs
IHRoZW4gc2tpcCB0aGUgcG90ZW50aWFsIGRyYXdpbmcgYnVmZmVyCisgICAgICAgIGNsZWFyLCBy
ZWFkIHRoZSBkcmF3aW5nIGJ1ZmZlciBhbmQgcHV0IHRoYXQgZGF0YSB0byB0aGUgInByZXNlbnRh
dGlvbgorICAgICAgICBjb3B5IiBvZiB0aGUgSFRNTEVsZW1lbnQuIFRoaXMgaXMgbm90IG9rLCBh
cyB0aGUgdW5jbGVhcmVkIGRyYXdpbmcKKyAgICAgICAgYnVmZmVyIGhhcyBub24tZGV0ZXJtaW5p
c3RpYyBjb250ZW50cyBpbiBjYXNlIHRoZSBjb250ZXh0IGhhcyBkaXNwbGF5ZWQKKyAgICAgICAg
YW5kIHRoZSBjbGllbnQgaGFzIG5vdCBkcmF3biBuZXcgY29udGVudCB0byB0aGUgZHJhd2luZyBi
dWZmZXIuCisKKyAgICAgICAgRml4IGJ5IHJlbW92aW5nIHRoZSAicHJlc2VudGF0aW9uIGNvcHki
IG9mIHRoZSBIVE1MQ2FudmFzLiBUaGUKKyAgICAgICAgcHJlc2VudGF0aW9uIGltYWdlIGNhbiBh
bHdheXMgYmUgZHJhd24gdG8gdGhlIENhbnZhc0Jhc2U6OmJ1ZmZlcigpOgorICAgICAgICAgLSBU
aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGlzIHRoZSBwcmVzZW50YXRpb24gaW1h
Z2UgaWYgdGhlCisgICAgICAgICAgIGNvbnRleHQgaGFzIG5vdCBjaGFuZ2VkIHNpbmNlIHVwZGF0
aW5nIHRoZSBidWZmZXIgd2l0aCBlaXRoZXIgZHJhd2luZworICAgICAgICAgICBidWZmZXIgb3Ig
cHJldmlvdXMgZGlzcGxheSBidWZmZXIuCisgICAgICAgICAtIElmIHRoZSBjb250ZXh0IGhhcyBj
aGFuZ2VkLCB3ZSBtdXN0IHByZXNlbnQgYW5kIHB1dCB0aGUgbmV3IGRpc3BsYXkKKyAgICAgICAg
ICAgYnVmZmVyIHRvIHRoZSBDYW52YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgLSBUaGlzIGlz
IGFsc28gY29ycmVjdCBjb250ZW50cyBmb3IgdGhlIHBvdGVudGlhbCBuZXh0IGltYWdlIGV4dHJh
Y3Rpb24KKyAgICAgICAgICAgdXNlcywgdXAgdG8gYSBwb2ludCB3aGVuIGNvbnRleHQgY2hhbmdl
cy4KKyAgICAgICAgIC0gSWYgdGhlIGNvbnRleHQgY2hhbmdlcyBiZWZvcmUgYW4gaW1hZ2UgZXh0
cmFjdGlvbiB1c2UsIENhbnZhc0Jhc2U6OmJ1ZmZlcigpIGlzCisgICAgICAgICAgIHVwZGF0ZWQg
d2l0aCB0aGUgbm9ybWFsIGxvZ2ljLCB0aGUgc2FtZSBhcyB3aGF0IGhhcHBlbnMgd2hlbiBDYW52
YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgICBpcyB1cGRhdGVkIGJldHdlZW4gdHdvIGltYWdl
IGV4dHJhY3Rpb24gdXNlcy4KKworICAgICAgICBQcmlvciB0byB0aGlzLCB0aGVyZSB3YXMgYW4g
dW5uZWVkZWQgYW5kIGluY29ycmVjdGx5IGltcGxlbWVudGVkCisgICAgICAgIEdQVUNhbnZhc0Nv
bnRleHQ6Om1hcmtMYXllckNvbXBvc2l0ZWQoKS4gVGhlIHNlcXVlbmNlIHdvdWxkIGJlOgorCisg
ICAgICAgIEhUTUxDYW52YXNFbGVtZW50OjpwYWludCgpOgorICAgICAgICAgICBjYW52YXNDb250
ZXh0KCkucGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoYnVmZmVyKCkpOworICAgICAgICAg
ICBjb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlcigpKTsKKyAgICAgICAgICAgY2FudmFz
Q29udGV4dCgpLm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKworICAgICAgICBUaGUgbWFya0xheWVy
Q29tcG9zaXRlZCgpIHdvdWxkIGluY29ycmVjdGx5IG1hcmsgdGhlIFdlYkdMIGNvbnRleHQgY29t
cG9zaXRpbmcKKyAgICAgICAgYmVpbmcgZG9uZSwgYnV0IHRoZXJlIHdhcyBubyBjb21wb3NpdGlu
ZyBhY3R1YWxseSBoYXBwZW5pbmcuIFRoZSBHUFUtc2lkZQorICAgICAgICBkaXNwbGF5IGJ1ZmZl
ciB3b3VsZCBiZSBpbmNvcnJlY3QuIEFsc28sIHRoZXJlIGlzIG5vdGhpbmcgdG8gYmUgZG9uZSBh
dAorICAgICAgICB0aGlzIHN0YWdlLCBhcyB0aGUgY29tcG9zaXRpbmcgb2YgV2ViR0wgY29udGV4
dCBpdHNlbGYgaXMgYWxyZWFkeQorICAgICAgICBmaW5pc2hlZCBhdCBXZWJHTCBjb250ZXh0IHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgcmV0dXJuLgorCisgICAgICAgIEluc3RlYWQs
IGFkZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgp
IHdoaWNoIHNpZ25hbHMgdGhhdCBuZXh0CisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKCkgaXMgYSBkaXNwbGF5IG9wZXJhdGlvbi4gVGhpcyBjYW4gYmUgdXNlZCB0byB0byBk
ZXRlY3QgdGhlCisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaW4gd2hp
Y2ggd2UgbXVzdCBwcmVzZW50IHRoZSBkcmF3aW5nIGJ1ZmZlciBhcworICAgICAgICBkaXNwbGF5
IGJ1ZmZlci4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGRpc3BsYXkgYnVmZmVyIHJlYWQgd2l0
aCBPcGVuR0wuCisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGRyYXdpbmcgYnVmZmVyIHJlYWQgY29k
ZSB0byBiZSBhYmxlIHRvIHJldXNlIHRoZSByZWFkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBkaXNw
bGF5IGJ1ZmZlciByZWFkLiBUaGUgcmVmYWN0b3JlZCBjb2RlIHJlZHVjZXMgcmVkdW5kYW50IHRo
ZQorICAgICAgICBhbGxvY2F0aW9ucyBvZiBmdWxsLXNjcmVlbiBtYWxsb2MgYnVmZmVycyBhbmQg
ZW5zdXJlcyBhbGxvY2F0aW9uIHJlc3VsdHMgYXJlCisgICAgICAgIGNoZWNrZWQgaW5zdGVhZCBv
ZiBjcmFzaGluZyB3aXRoIG51bGxwdHIgZGVyZWZzIHdoZW4gT09NIGhhcHBlbnMuIEZpeGVzCisg
ICAgICAgIGVycm9ycyBzdWNoIGFzIHJkYXI6Ly82NzU1MzUzMSAoQ3Jhc2hUcmFjZXI6IGNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdAorICAgICAgICBXZWJDb3JlOiBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpLgorICAg
ICAgICBSZW1vdmVzIFJHQkEtPkJHUkEtPlJHQkEgY29udmVyc2lvbnMgZnJvbQorICAgICAgICBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEo
KS4KKyAgICAgICAgUmVtb3ZlcyBtYW51YWwgYWxwaGEgcHJlbXVsdGlwbGljYXRpb24gYW5kIG1h
a2VzIENHIGRyYXcgd2l0aCB1bnByZW11bHRpcGxpZWQKKyAgICAgICAgYWxwaGEuCisgICAgICAg
IENoYW5nZXMgQ2Fpcm8gdmFyaWFudCBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB0byBjb252
ZXJ0IG1hbnVhbGx5IFJHQkEtPkJHUkEKKyAgICAgICAgaW5zdGVhZCBvZiAoYmlnKSBPcGVuR0wg
ZHJpdmVyIGRvaW5nIGl0IGluIGNhc2Ugb2Ygbm9uLU5WSURJQSBwbGF0Zm9ybXMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCB0aGUgc25hcHNob3QgLyBzdytodyBkcmF3aW5nIGlzIG5vdCB0ZXN0
YWJsZSBhdCB0aGUgbW9tZW50LgorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHUFVDYW52YXNDb250ZXh0Ojpjb25maWd1
cmVTd2FwQ2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4dDo6cHJlcGFy
ZUZvckRpc3BsYXlXaXRoUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4
dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L0dQVUNhbnZhc0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYWludCk6CisgICAg
ICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9HUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByZXBhcmVGb3JEaXNwbGF5V2l0
aFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUluZGV4QXJyYXlQcmVj
aXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlRHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZlcnRleEF0dHJpYmZ2SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjppbml0VmVydGV4QXR0cmliMCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVz
dWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJl
bmRlcmluZ1Jlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmc6OlNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRCdWZmZXJCaW5kaW5nOjpTY29wZWRCdWZmZXJC
aW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6On5TY29wZWRC
dWZmZXJCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6OnF1
ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZzo6bWFya0JpbmRpbmdDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUmVzdG9yZVJl
YWRGcmFtZWJ1ZmZlckJpbmRpbmc6On5TY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRQaXhlbFN0b3JhZ2VNb2RlOjpTY29wZWRQaXhl
bFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVsU3RvcmFnZU1vZGU6
On5TY29wZWRQaXhlbFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVs
U3RvcmFnZU1vZGU6OnBpeGVsU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUGl4ZWxT
dG9yYWdlTW9kZTo6b3BlcmF0b3IgR0xpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nv
cGVkVGV4dHVyZTo6U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0
dXJlOjp+U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0dXJlOjpv
cGVyYXRvciBHTHVpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVidWZm
ZXI6OlNjb3BlZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lYnVm
ZmVyOjp+U2NvcGVkRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVi
dWZmZXI6Om9wZXJhdG9yIEdMdWludCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZWxlYXNlSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVy
ZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkQ29tcG9zaXRlZFJlc3VsdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9y
UGFpbnRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYkltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om9y
aWdpbmFsU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6bWFwcGVkU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5m
b0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cyk6CisKIDIwMjAtMTItMTQg
IExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU1NJT04o
MjcwNDM1KSBbR1N0cmVhbWVyXSBNYW55IG1lZGlhIHNvdXJjZSB0ZXN0cyBmYWlsaW5nIGFuZCB0
aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwMzI4Y2Y2ZTg0NWY3NTNlNjQyYjQ1M2I4NjMxMTgxN2Q0
YzA2YzkuLmUwODk5YTkyYmMyMGMzNTliYTgwN2IyODEwYjBkZDg5ZWIyMmRjOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTItMTcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVu
QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjY4Mzg2KTogU25hcHNob3RzIG9m
IFdlYkdMIGNvbnRlbnQgaW4gdGhlIHRhYiBwaWNrZXIgZG9uJ3Qgd29yayAoYmxhY2sgbWFwIG9u
IEdvb2dsZSBNYXBzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5OTQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjAxMzc4ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZHVtbXkgaW1wbGVt
ZW50YXRpb25zIG9mIEdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9D
YW52YXMuCisgICAgICAgIFBhaW50aW5nIHRvIGNhbnZhcyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0
IGZvciB0aGUgcmVtb3RlIEdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6ZGlzcGxh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oOgorCiAyMDIwLTEyLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gSW50cm9kdWNlIHZtRW50cnlDdXN0b21BY2Nlc3NvciBhbmQgdm1FbnRy
eUhvc3RGdW5jdGlvbiBmb3IgSklUQ2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcAppbmRleCBlMzAzNTBiNDYyYTBmZWQ0NDY2OGJm
ODk2MDI5MjkzZTExNzhlODg3Li4zOGIxNTI4ZmZjM2E5NTI1ODUwYTk0ZDY1ZWQyNzk0YTRkODA0
YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcApAQCAtOTAsMTAgKzkwLDE4IEBAIHZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgbm90aWZ5Q2FudmFzQ29udGVudENoYW5n
ZWQoKTsKIH0KIAotdm9pZCBHUFVDYW52YXNDb250ZXh0OjptYXJrTGF5ZXJDb21wb3NpdGVkKCkK
K3ZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQogewot
ICAgIGlmIChtX3N3YXBDaGFpbiAmJiBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCkpCisgICAgbV9p
c0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSB0cnVlOworfQorCit2b2lkIEdQVUNhbnZhc0NvbnRleHQ6
OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKK3sKKyAgICAvLyBGSVhNRTogVW5pbXBs
ZW1lbnRlZC4KKyAgICBpZiAobV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgJiYgbV9zd2FwQ2hhaW4g
JiYgbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpKSB7CiAgICAgICAgIG1fc3dhcENoYWluLT5zd2Fw
Q2hhaW4oKS0+cHJlc2VudCgpOworICAgICAgICBtX2lzRGlzcGxheWluZ1dpdGhQYWludCA9IGZh
bHNlOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oCmluZGV4IDZkZjIwYjRhNjQ3
ZjZhMTg3OGIzODE1NmMyZDA3MTA3NjU0MzJhOGQuLjliMGZlN2IwZDA4Y2U5M2M3ZWNhODY5NGEw
MGQxNjMyZTEzZDBjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUNhbnZhc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVDYW52YXNDb250ZXh0LmgKQEAgLTUzLDEzICs1MywxNSBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNXZWJHUFUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpIGZpbmFsOwotICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZp
bmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSBmaW5hbDsKKyAgICB2
b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgZmluYWw7CiAKICAgICAvLyBBY3Rp
dmVET01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJHUFVDYW52YXNDb250ZXh0IjsgfQogICAgIC8vIEZJWE1FOiBTdHVi
cy4KICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IH0KIAorICAgIGJvb2wgbV9pc0Rpc3BsYXlpbmdX
aXRoUGFpbnQgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxXZWJHUFVTd2FwQ2hhaW4+IG1fc3dhcENo
YWluOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRl
eCAxNjljYWE5MDAyNGQyNjc3MjMwNTA2MmY1OThkMTJjY2RkYmFiM2ZmLi5kNzBiZGQxMDdkNTA2
NTgzZDM3YTVkNzUxMDhkMGM1YmZiNzIzZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcApAQCAtNjQyLDIwICs2NDIsMTcgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBy
KQogCiAgICAgICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgICAgIHNob3VsZFBhaW50ID0g
cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIHx8IGRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCBtX2lz
U25hcHNob3R0aW5nOwotICAgICAgICAgICAgaWYgKHNob3VsZFBhaW50KQorICAgICAgICAgICAg
aWYgKHNob3VsZFBhaW50KSB7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9y
RGlzcGxheVdpdGhQYWludCgpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAg
aWYgKHNob3VsZFBhaW50KSB7CiAgICAgICAgICAgICBpZiAoaGFzQ3JlYXRlZEltYWdlQnVmZmVy
KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9wcmVzZW50ZWRJbWFnZSkKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKm1fcHJlc2VudGVkSW1hZ2UsIHNuYXBwZWRJbnRS
ZWN0KHIpLCByZW5kZXJlcigpLT5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgICAgICAgICAgICAg
IGVsc2UgaWYgKEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGJ1ZmZlcigpKQorICAgICAgICAg
ICAgICAgIGlmIChJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBidWZmZXIoKSkKICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBzbmFwcGVk
SW50UmVjdChyKSk7CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChpc0dQVUJhc2Vk
KCkpCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8R1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250
ZXh0PigqbV9jb250ZXh0KS5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTY2OCwxOSArNjY1LDYgQEAgYm9vbCBIVE1MQ2FudmFzRWxlbWVudDo6aXNHUFVCYXNl
ZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dCAmJiBtX2NvbnRleHQtPmlzR1BVQmFzZWQo
KTsKIH0KIAotdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6bWFrZVByZXNlbnRhdGlvbkNvcHkoKQot
ewotICAgIGlmICghbV9wcmVzZW50ZWRJbWFnZSkgewotICAgICAgICAvLyBUaGUgYnVmZmVyIGNv
bnRhaW5zIHRoZSBsYXN0IHByZXNlbnRlZCBkYXRhLCBzbyBzYXZlIGEgY29weSBvZiBpdC4KLSAg
ICAgICAgbV9wcmVzZW50ZWRJbWFnZSA9IGJ1ZmZlcigpLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdT
dG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpOwotICAgIH0KLX0KLQotdm9pZCBIVE1MQ2Fu
dmFzRWxlbWVudDo6Y2xlYXJQcmVzZW50YXRpb25Db3B5KCkKLXsKLSAgICBtX3ByZXNlbnRlZElt
YWdlID0gbnVsbHB0cjsKLX0KLQogdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0U3VyZmFjZVNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBDYW52YXNCYXNlOjpzZXRTaXplKHNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCmluZGV4IGFlYjAxODk3NDli
NTgzMzM3NDg0MDRjOTViYWZlZDA0NTI4ZjljZWYuLjljOTIzMGY1ZmJiN2U2ZGU0YjY5ZmQ1Yzg2
YmVlZTQwNjRiNDQyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgK
QEAgLTExNSw4ICsxMTUsNiBAQCBwdWJsaWM6CiAgICAgSW1hZ2UqIGNvcGllZEltYWdlKCkgY29u
c3QgZmluYWw7CiAgICAgdm9pZCBjbGVhckNvcGllZEltYWdlKCkgY29uc3QgZmluYWw7CiAgICAg
UmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKCk7Ci0gICAgdm9pZCBtYWtlUHJlc2VudGF0
aW9uQ29weSgpOwotICAgIHZvaWQgY2xlYXJQcmVzZW50YXRpb25Db3B5KCk7CiAKICAgICBTZWN1
cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdCBmaW5hbDsKIApAQCAtMTk5LDcgKzE5
Nyw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNTbmFwc2hvdHRpbmcgeyBmYWxzZSB9Owog
Ci0gICAgbXV0YWJsZSBSZWZQdHI8SW1hZ2U+IG1fcHJlc2VudGVkSW1hZ2U7CiAgICAgbXV0YWJs
ZSBSZWZQdHI8SW1hZ2U+IG1fY29waWVkSW1hZ2U7IC8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFy
eSBmb3IgcGxhdGZvcm1zIHRoYXQgaGF2ZSB0byBjb3B5IHRoZSBpbWFnZSBidWZmZXIgdG8gcmVu
ZGVyIChhbmQgZm9yIENTU0NhbnZhc1ZhbHVlKS4KIH07CiAKQEAgLTIxNiw0ICsyMTMsMyBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBXZWJDb3JlOjpFdmVu
dFRhcmdldCYgdGFyZ2V0KSB7IHJldHVybiBpczxXZWJDb3JlOjpOb2RlPih0YXJnZXQpICYmIGNo
ZWNrVGFnTmFtZShkb3duY2FzdDxXZWJDb3JlOjpOb2RlPih0YXJnZXQpKTsgfQogfTsKIH0KLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oCmluZGV4IGFjZjgzYmI3MmRjYTcwMWMwZmNjNjczOGMxZDg2Y2ExMTc4ZmQ0OTQuLmYzODg2
M2Y3OGZlZTNmZjg5OTI5Yzc0YzQ3Y2EyZTUzNDE5OTAwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTcxLDYgKzcx
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc09mZnNjcmVlbjJkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQYWludCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKKyAgICAvLyBDYWxsZWQgYmVmb3JlIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzIGlmIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzIGlzCisgICAgLy8gdXNlZCBm
b3IgY29tcG9zaXRpbmcgcHVycG9zZXMuCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEaXNw
bGF5V2l0aFBhaW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKCkge30KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggNDdhMDJl
YjcwNmNlNDVkODhmMTk3NTRiYjdkOGJlZmY5YjFmOTQyYy4uODkwY2Q3MjM1MDFlMDRlMjhlODJm
NzdhMGI2OWRiZWQ1OWE0ODU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTUwLDggKzUw
LDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCByZXNoYXBlKGludCB3aWR0
aCwgaW50IGhlaWdodCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVk
KCkgPSAwOwotCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgR1BVQmFzZWRDYW52YXNSZW5kZXJp
bmdDb250ZXh0KENhbnZhc0Jhc2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAwMTNiODlhZjQ4
ODhiODdjMGY2NDhlNTJjYjU2MWNkYjkxYzU0OTczLi4zMGQ5ZTdlOTFhNDNjMzllODEyZjdiYjUy
YjUxMDY4YmM5MzY3NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMTE5OSwxMSArMTE5OSwxMCBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlc3RvcmVTdGF0ZUFmdGVyQ2xlYXIo
KQogICAgIG1fY29udGV4dC0+ZGVwdGhNYXNrKG1fZGVwdGhNYXNrKTsKIH0KIAotdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKKwordm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgpCiB7Ci0g
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1f
Y29udGV4dC0+bWFya0xheWVyQ29tcG9zaXRlZCgpOworICAgIG1faXNEaXNwbGF5aW5nV2l0aFBh
aW50ID0gdHJ1ZTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpCkBAIC0xMjExLDE4ICsxMjEwLDE3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQog
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChhdXRvKiBjYW52YXMgPSBodG1sQ2FudmFzKCkpIHsKLSAgICAgICAgaWYgKGNhbnZhcy0+
ZG9jdW1lbnQoKS5wcmludGluZygpIHx8IChjYW52YXMtPmlzU25hcHNob3R0aW5nKCkgJiYgY2Fu
dmFzLT5kb2N1bWVudCgpLnBhZ2UoKS0+aXNWaXNpYmxlKCkpKQotICAgICAgICAgICAgY2FudmFz
LT5jbGVhclByZXNlbnRhdGlvbkNvcHkoKTsKLQotICAgICAgICAvLyBVbnRpbCB0aGUgY2FudmFz
IGlzIHdyaXR0ZW4gdG8gYnkgdGhlIGFwcGxpY2F0aW9uLCB0aGUgY2xlYXIgdGhhdAotICAgICAg
ICAvLyBoYXBwZW5lZCBhZnRlciBpdCB3YXMgY29tcG9zaXRlZCBzaG91bGQgYmUgaWdub3JlZCBi
eSB0aGUgY29tcG9zaXRvci4KLSAgICAgICAgaWYgKG1fY29udGV4dC0+bGF5ZXJDb21wb3NpdGVk
KCkgJiYgIW1fYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsKLSAgICAgICAgICAg
IG1fY29udGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoY2FudmFzLT5idWZmZXIo
KSk7Ci0KLSAgICAgICAgICAgIGNhbnZhcy0+bWFrZVByZXNlbnRhdGlvbkNvcHkoKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBjYW52YXMtPmNsZWFyUHJlc2VudGF0aW9uQ29weSgpOwor
ICAgIGlmIChtX2lzRGlzcGxheWluZ1dpdGhQYWludCkgeworICAgICAgICBib29sIGNhbnZhc0Nv
bnRhaW5zRGlzcGxheUJ1ZmZlciA9ICFtX21hcmtlZENhbnZhc0RpcnR5OworICAgICAgICBwcmVw
YXJlRm9yRGlzcGxheSgpOworICAgICAgICBtX2lzRGlzcGxheWluZ1dpdGhQYWludCA9IGZhbHNl
OworICAgICAgICBpZiAoIWNhbnZhc0NvbnRhaW5zRGlzcGxheUJ1ZmZlcikgeworICAgICAgICAg
ICAgYXV0byYgYmFzZSA9IGNhbnZhc0Jhc2UoKTsKKyAgICAgICAgICAgIGJhc2UuY2xlYXJDb3Bp
ZWRJbWFnZSgpOworICAgICAgICAgICAgbV9tYXJrZWRDYW52YXNEaXJ0eSA9IGZhbHNlOworICAg
ICAgICAgICAgbV9jb250ZXh0LT5wYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoYmFzZS5i
dWZmZXIoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNsZWFy
SWZDb21wb3NpdGVkKENsZWFyQ2FsbGVyT3RoZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDMwYTg1NTdk
ODY4OGUyZWE0OTVkYjcxNmYwOGJlNjA5ZWMzYjRlOGEuLmU4ZTkwY2ZiYTE2YjE0ZGQxNDhjOThl
MDY5ZTUwMGVjZGUyYjU1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTM4NCw4ICszODQsOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBvdmVycmlkZTsK
IAotICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOwotICAgIHZvaWQgcGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHByZXBhcmVGb3JE
aXNwbGF5V2l0aFBhaW50KCkgZmluYWw7CisgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b0NhbnZhcygpIGZpbmFsOwogICAgIFJlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvSW1hZ2VEYXRhKCk7CiAKICAgICB2b2lkIHJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNo
YXJlZE9iamVjdCYpOwpAQCAtNjY4LDYgKzY2OCw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKTsKIAogICAgIGJvb2wgbV9jb21wb3NpdGluZ1Jlc3VsdHNO
ZWVkVXBkYXRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQg
eyBmYWxzZSB9OwogCiAgICAgLy8gRW5hYmxlZCBleHRlbnNpb24gb2JqZWN0cy4KICAgICAvLyBG
SVhNRTogTW92ZSBzb21lIG9mIHRoZXNlIHRvIFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgdGhlIG9u
ZXMgbm90IG5lZWRlZCBmb3IgV2ViR0wyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCAyMjNhNWM5YmYxNjk3ZjI1ZjEx
MmRiY2MxODZmODE5YjdjZTFkZTQ1Li5hYThmZjIzNjhkZmZkODljZWFiNmE0NDMzMzBkYjQ1MTZh
MThmOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmgKQEAgLTEyOTIsNyArMTI5Miw3IEBAIHB1YmxpYzoKICAgICAvLyB0
aGUgY29udGV4dC4KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoSW1hZ2VCdWZmZXIqKSA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VEYXRhPiBwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSA9IDA7
CiAKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZC4gVGhlIGxheWVyIHNob3Vs
ZCBiZSBtYXJrZWQgY29tcG9zaXRlZCBieQogICAgIC8vIHByZXBhcmluZyBmb3IgZGlzcGxheSwg
c28gdGhhdCBjYW52YXMgaW1hZ2UgYnVmZmVyIGFuZCB0aGUgbGF5ZXIgYWdyZWUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCA2MGY3YTk0N2VmY2JiMzcxNTZj
MDk4ZTBiNWVlMzNjM2I2MmI4NDliLi4zNmZhYWE3ZTQ2NjIyYmFmM2ExMjNmYmU5NWVlOTRiZTY0
MDlkNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC05
OSwxMSArOTksNiBAQCBHQ0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fYnVmZmVyc1Rv
QXV0b0NsZWFyOwogfQogCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQotewotICAgIHJldHVy
biBmYWxzZTsKLX0KLQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5h
YmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkKIHsKICAgICAvLyBSZWRlY2xhcmVkIGZvciBleHBv
cnQgcmVhc29ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCmluZGV4IDcy
NmFhZjZjNmEwZjYyZmYyODJlNWI4ZDIwMmExMjk0ZTFkZTg1NzEuLjI0NzFkNGUyNWM5YWEyMDBl
Yzc0M2IxZmUwYzY0NjhiMGM5YTUwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaApAQCAtNjcsNyArNjcsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBsYXllckNvbXBvc2l0
ZWQoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0
ZmllbGQpIGZpbmFsOwogICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBj
b25zdCBmaW5hbDsKLSAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFn
ZUJ1ZmZlciopIGZpbmFsOwogICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOwog
ICAgIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkgZmluYWw7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4
dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMzA5YTUzMDliNjQwYTNkNmEyODE0MWNhN2Ix
YTc1ZGI0NmU5Zjk1MS4uYjUwNDNiNzQ2MzZmNzg4NWM1ZDgwYzA3NzM1NTVkNzEyMDAwMjNkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAog
I2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTEFOR0xFLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgpAQCAtNDYsOSArNDcsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLSNpZiBVU0UoQUNDRUxFUkFURSkK
LSNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUuaD4KLSNlbmRpZgogCiAjaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5oIgpAQCAtNjQsMzAgKzYyLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2kKIAog
bmFtZXNwYWNlIHsKIAotY2xhc3MgU2NvcGVkUmVzZXRCdWZmZXJCaW5kaW5nIHsKLSAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTY29wZWRSZXNldEJ1ZmZlckJpbmRpbmcpOwotcHVibGljOgotICAg
IFNjb3BlZFJlc2V0QnVmZmVyQmluZGluZyhib29sIHNob3VsZERvV29yaywgR0xlbnVtIGJpbmRp
bmdQb2ludFF1ZXJ5LCBHTGVudW0gYmluZGluZ1BvaW50KQotICAgICAgICA6IG1fYmluZGluZ1Bv
aW50UXVlcnkoYmluZGluZ1BvaW50UXVlcnkpCi0gICAgICAgICwgbV9iaW5kaW5nUG9pbnQoYmlu
ZGluZ1BvaW50KQotICAgIHsKLSAgICAgICAgaWYgKHNob3VsZERvV29yaykKLSAgICAgICAgICAg
IGdsOjpHZXRJbnRlZ2VydihtX2JpbmRpbmdQb2ludFF1ZXJ5LCAmbV9iaW5kaW5nVmFsdWUpOwot
ICAgICAgICBpZiAobV9iaW5kaW5nVmFsdWUpCi0gICAgICAgICAgICBnbDo6QmluZEJ1ZmZlciht
X2JpbmRpbmdQb2ludCwgMCk7Ci0gICAgfQotCi0gICAgflNjb3BlZFJlc2V0QnVmZmVyQmluZGlu
ZygpCi0gICAgewotICAgICAgICBpZiAobV9iaW5kaW5nVmFsdWUpCi0gICAgICAgICAgICBnbDo6
QmluZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBHTGludCBtX2JpbmRpbmdQb2ludFF1ZXJ5IHsgMCB9OwotICAgIEdMaW50IG1f
YmluZGluZ1BvaW50IHsgMCB9OwotICAgIEdMaW50IG1fYmluZGluZ1ZhbHVlIHsgMCB9OwotfTsK
IAogfSAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCiAKQEAgLTEwMiwzNiArNzYsMjkgQEAgc3RhdGlj
IHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1
bnNpZ25lZCBjaGFyKiBwaXgKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVjZXNzYXJ5KGludCB4LCBpbnQgeSwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFyKiBwaXhlbHMpCi17Ci0gICAgLy8g
TlZJRElBIGRyaXZlcnMgaGF2ZSBhIGJ1ZyB3aGVyZSBjYWxsaW5nIHJlYWRQaXhlbHMgaW4gQkdS
QSBjYW4gcmV0dXJuIHRoZSB3cm9uZyB2YWx1ZXMgZm9yIHRoZSBhbHBoYSBjaGFubmVsIHdoZW4g
dGhlIGFscGhhIGlzIG9mZiBmb3IgdGhlIGNvbnRleHQuCi0gICAgZ2w6OlJlYWRQaXhlbHMoeCwg
eSwgd2lkdGgsIGhlaWdodCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKLSNp
ZiBVU0UoQUNDRUxFUkFURSkKLSAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKLSAgICBzcmMuaGVpZ2h0
ID0gaGVpZ2h0OwotICAgIHNyYy53aWR0aCA9IHdpZHRoOwotICAgIHNyYy5yb3dCeXRlcyA9IHdp
ZHRoICogNDsKLSAgICBzcmMuZGF0YSA9IHBpeGVsczsKLQotICAgIHZJbWFnZV9CdWZmZXIgZGVz
dDsKLSAgICBkZXN0LmhlaWdodCA9IGhlaWdodDsKLSAgICBkZXN0LndpZHRoID0gd2lkdGg7Ci0g
ICAgZGVzdC5yb3dCeXRlcyA9IHdpZHRoICogNDsKLSAgICBkZXN0LmRhdGEgPSBwaXhlbHM7Ci0K
LSAgICAvLyBTd2FwIHBpeGVsIGNoYW5uZWxzIGZyb20gUkdCQSB0byBCR1JBLgotICAgIGNvbnN0
IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAxLCAwLCAzIH07Ci0gICAgdkltYWdlUGVybXV0ZUNoYW5u
ZWxzX0FSR0I4ODg4KCZzcmMsICZkZXN0LCBtYXAsIGt2SW1hZ2VOb0ZsYWdzKTsKLSNlbHNlCi0g
ICAgaW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAgIHN0ZDo6c3dhcChwaXhlbHNbaV0s
IHBpeGVsc1tpICsgMl0pOwotI2VuZGlmCi0KK1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKK3sKKyAgICBhdXRvIGlt
YWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkp
OworICAgIGlmICghaW1hZ2VEYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBTY29w
ZWRQaXhlbFN0b3JhZ2VNb2RlIHBhY2tBbGlnbm1lbnQoR0xfUEFDS19BTElHTk1FTlQpOworICAg
IGlmIChwYWNrQWxpZ25tZW50ID4gNCkKKyAgICAgICAgcGFja0FsaWdubWVudC5waXhlbFN0b3Jl
KDQpOworICAgIFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUgcGFja1Jvd0xlbmd0aChHTF9QQUNLX1JP
V19MRU5HVEgsIDAsIG1faXNGb3JXZWJHTDIpOworICAgIFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUg
cGFja1NraXBSb3dzKEdMX1BBQ0tfU0tJUF9ST1dTLCAwLCBtX2lzRm9yV2ViR0wyKTsKKyAgICBT
Y29wZWRQaXhlbFN0b3JhZ2VNb2RlIHBhY2tTa2lwUGl4ZWxzKEdMX1BBQ0tfU0tJUF9QSVhFTFMs
IDAsIG1faXNGb3JXZWJHTDIpOworICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcgc2NvcGVkUGl4ZWxQ
YWNrQnVmZmVyUmVzZXQoR0xfUElYRUxfUEFDS19CVUZGRVIsIDAsIG1faXNGb3JXZWJHTDIpOwor
CisgICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoMCwgMCwgaW1hZ2VEYXRhLT53aWR0aCgp
LCBpbWFnZURhdGEtPmhlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBpbWFnZURh
dGEtPmRhdGEoKS0+Ynl0ZUxlbmd0aCgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBpbWFn
ZURhdGEtPmRhdGEoKS0+ZGF0YSgpKTsKKyAgICAvLyBGSVhNRTogUmVuZGVyaW5nIHRvIEdMX1JH
QiB0ZXh0dXJlcyB3aXRoIGEgSU9TdXJmYWNlIGJvdW5kIHRvIHRoZSB0ZXh0dXJlIGltYWdlIGxl
YXZlcworICAgIC8vIHRoZSBhbHBoYSBpbiB0aGUgSU9TdXJmYWNlIGluIGluY29ycmVjdCBzdGF0
ZS4gQWxzbyBBTkdMRSBnbDo6UmVhZFBpeGVscyB3aWxsIGluIHNvbWUKKyAgICAvLyBjYXNlcyBl
eHBvc2UgdGhlIG5vbi0yNTUgdmFsdWVzLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTU4MDQKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKCFjb250ZXh0QXR0cmlidXRlcygpLmFscGhhKQotICAgICAgICB3
aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBwaXhlbHMpOworICAgICAg
ICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhpbWFnZURhdGEtPndpZHRoKCksIGltYWdlRGF0
YS0+aGVpZ2h0KCksIGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCkpOwogI2VuZGlmCisgICAgcmV0
dXJuIGltYWdlRGF0YTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRh
dGVBdHRyaWJ1dGVzKCkKQEAgLTUxMCw2NCArNDc3LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2kKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKLXsKLSAgICBDaGVj
a2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IHJvd0J5dGVzID0gQ2hlY2tlZDxpbnQsIFJlY29yZE92
ZXJmbG93PihtX2N1cnJlbnRXaWR0aCkgKiA0OwotICAgIGlmIChyb3dCeXRlcy5oYXNPdmVyZmxv
d2VkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxv
dz4gdG90YWxCeXRlc0NoZWNrZWQgPSByb3dCeXRlcyAqIG1fY3VycmVudEhlaWdodDsKLSAgICBp
ZiAodG90YWxCeXRlc0NoZWNrZWQuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm47Ci0g
ICAgaW50IHRvdGFsQnl0ZXMgPSB0b3RhbEJ5dGVzQ2hlY2tlZC51bnNhZmVHZXQoKTsKLQotICAg
IGF1dG8gcGl4ZWxzID0gbWFrZVVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+KHRvdGFsQnl0ZXMp
OwotICAgIGlmICghcGl4ZWxzKQotICAgICAgICByZXR1cm47Ci0KLSAgICByZWFkUmVuZGVyaW5n
UmVzdWx0cyhwaXhlbHMuZ2V0KCksIHRvdGFsQnl0ZXMpOwotCi0gICAgaWYgKCFjb250ZXh0QXR0
cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkgewotICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkgewotICAgICAgICAgICAgLy8gUHJlbXVsdGlwbHkgYWxw
aGEuCi0gICAgICAgICAgICBwaXhlbHNbaSArIDBdID0gc3RkOjptaW4oMjU1LCBwaXhlbHNbaSAr
IDBdICogcGl4ZWxzW2kgKyAzXSAvIDI1NSk7Ci0gICAgICAgICAgICBwaXhlbHNbaSArIDFdID0g
c3RkOjptaW4oMjU1LCBwaXhlbHNbaSArIDFdICogcGl4ZWxzW2kgKyAzXSAvIDI1NSk7Ci0gICAg
ICAgICAgICBwaXhlbHNbaSArIDJdID0gc3RkOjptaW4oMjU1LCBwaXhlbHNbaSArIDJdICogcGl4
ZWxzW2kgKyAzXSAvIDI1NSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwYWludFRvQ2FudmFz
KHBpeGVscy5nZXQoKSwgSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSwg
aW1hZ2VCdWZmZXItPmJhY2tlbmRTaXplKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwotfQot
Ci1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9D
YW52YXMoSW1hZ2VCdWZmZXIqKQotewotICAgIC8vIE5vdCBuZWVkZWQgYXQgdGhlIG1vbWVudCwg
c28gcmV0dXJuIHRoYXQgbm90aGluZyB3YXMgZG9uZS4KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LVJlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpCi17Ci0gICAgLy8gUmVhZGluZyBwcmVtdWx0aXBsaWVkIGFs
cGhhIHdvdWxkIGludm9sdmUgdW5wcmVtdWx0aXBseWluZywgd2hpY2ggaXMKLSAgICAvLyBsb3Nz
eS4KLSAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNy
ZWF0ZShJbnRTaXplKG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpKTsKLSAgICB1bnNp
Z25lZCBjaGFyKiBwaXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwotICAgIENoZWNr
ZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4gdG90YWxCeXRlc0NoZWNrZWQgPSA0ICogQ2hlY2tlZDxp
bnQsIFJlY29yZE92ZXJmbG93PihtX2N1cnJlbnRXaWR0aCkgKiBDaGVja2VkPGludCwgUmVjb3Jk
T3ZlcmZsb3c+KG1fY3VycmVudEhlaWdodCk7Ci0gICAgaWYgKHRvdGFsQnl0ZXNDaGVja2VkLmhh
c092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIGltYWdlRGF0YTsKLSAgICBpbnQgdG90YWxC
eXRlcyA9IHRvdGFsQnl0ZXNDaGVja2VkLnVuc2FmZUdldCgpOwotCi0gICAgcmVhZFJlbmRlcmlu
Z1Jlc3VsdHMocGl4ZWxzLCB0b3RhbEJ5dGVzKTsKLQotICAgIC8vIENvbnZlcnQgdG8gUkdCQS4K
LSAgICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkKLSAgICAgICAgc3Rk
Ojpzd2FwKHBpeGVsc1tpXSwgcGl4ZWxzW2kgKyAyXSk7Ci0KLSAgICByZXR1cm4gaW1hZ2VEYXRh
OwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlVGV4dHVyZSgpCiB7
CiAgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKQpAQCAtNjIwLDY1ICs1MjksMTUgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZVRleHR1cmVJbXBsKCkKICNlbmRpZgogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNp
Z25lZCBjaGFyICpwaXhlbHMsIGludCBwaXhlbHNTaXplKQorUmVmUHRyPEltYWdlRGF0YT4gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKCkKIHsKLSAgICBpZiAo
cGl4ZWxzU2l6ZSA8IG1fY3VycmVudFdpZHRoICogbV9jdXJyZW50SGVpZ2h0ICogNCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0KLSAgICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1faXNGb3JXZWJHTDIg
PyBHcmFwaGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZFUiA6IEdyYXBoaWNzQ29udGV4dEdM
OjpGUkFNRUJVRkZFUjsKLQotICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKKyAgICBT
Y29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyBmYm9CaW5kaW5nKG1faXNGb3JXZWJH
TDIsIG1fc3RhdGUuYm91bmRSZWFkRkJPKTsKICAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5h
bnRpYWxpYXMpIHsKICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeSgpOwot
ICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX2Zibyk7Ci0g
ICAgICAgIG11c3RSZXN0b3JlRkJPID0gdHJ1ZTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAo
bV9zdGF0ZS5ib3VuZFJlYWRGQk8gIT0gbV9mYm8pIHsKLSAgICAgICAgICAgIG11c3RSZXN0b3Jl
RkJPID0gdHJ1ZTsKLSAgICAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJU
YXJnZXQsIG1fZmJvKTsKLSAgICAgICAgfQorICAgICAgICBmYm9CaW5kaW5nLm1hcmtCaW5kaW5n
Q2hhbmdlZCgpOwogICAgIH0KLQotICAgIEdMaW50IHBhY2tBbGlnbm1lbnQgPSA0OwotICAgIGJv
b2wgbXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gZmFsc2U7Ci0gICAgZ2w6OkdldEludGVnZXJ2
KEdMX1BBQ0tfQUxJR05NRU5ULCAmcGFja0FsaWdubWVudCk7Ci0gICAgaWYgKHBhY2tBbGlnbm1l
bnQgPiA0KSB7Ci0gICAgICAgIGdsOjpQaXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgNCk7
Ci0gICAgICAgIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IHRydWU7Ci0gICAgfQotICAgIEdM
aW50IHBhY2tSb3dMZW5ndGggPSAwOwotICAgIEdMaW50IHBhY2tTa2lwUm93cyA9IDA7Ci0gICAg
R0xpbnQgcGFja1NraXBQaXhlbHMgPSAwOwotICAgIFNjb3BlZFJlc2V0QnVmZmVyQmluZGluZyBz
Y29wZWRQaXhlbFBhY2tCdWZmZXJSZXNldChtX2lzRm9yV2ViR0wyLCBHTF9QSVhFTF9QQUNLX0JV
RkZFUl9CSU5ESU5HLCBHTF9QSVhFTF9QQUNLX0JVRkZFUik7Ci0gICAgaWYgKG1faXNGb3JXZWJH
TDIpIHsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX1BBQ0tfUk9XX0xFTkdUSCwgJnBhY2tS
b3dMZW5ndGgpOwotICAgICAgICBpZiAocGFja1Jvd0xlbmd0aCA+IDApCi0gICAgICAgICAgICBn
bDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19ST1dfTEVOR1RILCAwKTsKLSAgICAgICAgZ2w6OkdldElu
dGVnZXJ2KEdMX1BBQ0tfU0tJUF9ST1dTLCAmcGFja1NraXBSb3dzKTsKLSAgICAgICAgaWYgKHBh
Y2tTa2lwUm93cyA+IDApCi0gICAgICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19TS0lQ
X1JPV1MsIDApOwotICAgICAgICBnbDo6R2V0SW50ZWdlcnYoR0xfUEFDS19TS0lQX1BJWEVMUywg
JnBhY2tTa2lwUGl4ZWxzKTsKLSAgICAgICAgaWYgKHBhY2tTa2lwUGl4ZWxzID4gMCkKLSAgICAg
ICAgICAgIGdsOjpQaXhlbFN0b3JlaShHTF9QQUNLX1NLSVBfUElYRUxTLCAwKTsKLSAgICB9Ci0K
LSAgICByZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVjZXNzYXJ5KDAsIDAsIG1fY3VycmVu
dFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIHBpeGVscyk7Ci0KLSAgICBpZiAobXVzdFJlc3RvcmVQ
YWNrQWxpZ25tZW50KQotICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQs
IHBhY2tBbGlnbm1lbnQpOwotICAgIGlmIChwYWNrUm93TGVuZ3RoID4gMCkKLSAgICAgICAgZ2w6
OlBpeGVsU3RvcmVpKEdMX1BBQ0tfUk9XX0xFTkdUSCwgcGFja1Jvd0xlbmd0aCk7Ci0gICAgaWYg
KHBhY2tTa2lwUm93cyA+IDApCi0gICAgICAgIGdsOjpQaXhlbFN0b3JlaShHTF9QQUNLX1NLSVBf
Uk9XUywgcGFja1NraXBSb3dzKTsKLSAgICBpZiAocGFja1NraXBQaXhlbHMgPiAwKQotICAgICAg
ICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19TS0lQX1BJWEVMUywgcGFja1NraXBQaXhlbHMpOwot
Ci0gICAgaWYgKG11c3RSZXN0b3JlRkJPKQotICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZy
YW1lYnVmZmVyVGFyZ2V0LCBtX3N0YXRlLmJvdW5kUmVhZEZCTyk7CisgICAgZmJvQmluZGluZy5i
aW5kRnJhbWVidWZmZXIobV9mYm8pOworICAgIHJldHVybiByZWFkUGl4ZWxzRm9yUGFpbnRSZXN1
bHRzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQpAQCAtNzA0LDcgKzU2Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAgICAgVGVtcG9yYXJ5
QU5HTEVTZXR0aW5nIHNjb3BlZFNjaXNzb3IoR0xfU0NJU1NPUl9URVNULCBHTF9GQUxTRSk7CiAg
ICAgVGVtcG9yYXJ5QU5HTEVTZXR0aW5nIHNjb3BlZERpdGhlcihHTF9ESVRIRVIsIEdMX0ZBTFNF
KTsKLSAgICBTY29wZWRSZXNldEJ1ZmZlckJpbmRpbmcgc2NvcGVkUGl4ZWxVbnBhY2tCdWZmZXJS
ZXNldChtX2lzRm9yV2ViR0wyLCBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcsIEdMX1BJ
WEVMX1VOUEFDS19CVUZGRVIpOworICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcgc2NvcGVkUGl4ZWxV
bnBhY2tCdWZmZXJSZXNldChHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBtX2lzRm9yV2ViR0wy
KTsKIAogICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSByZXNoYXBlRkJPcyhJbnRTaXplKHdpZHRo
LCBoZWlnaHQpKTsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaAppbmRleCAyMTMyN2RkYWZj
M2RiNWZlZDJlODEzMjZiMWZhMjJjNTI4NjlmMTUxLi40OTQyYTk1NTQ1NmJmOTQ0ODQwMWMyZTI2
YjU3ZmRiODIxY2Q0YzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0
aWxpdGllcy5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNj
b3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2Nv
cGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nKTsKIHB1YmxpYzoKLSAgICBTY29wZWRSZXN0b3JlVGV4
dHVyZUJpbmRpbmcoR0NHTGVudW0gYmluZGluZ1BvaW50UXVlcnksIEdDR0xlbnVtIGJpbmRpbmdQ
b2ludCwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQorICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmlu
ZGluZyhHTGVudW0gYmluZGluZ1BvaW50UXVlcnksIEdMZW51bSBiaW5kaW5nUG9pbnQsIGJvb2wg
Y29uZGl0aW9uID0gdHJ1ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChiaW5kaW5nUG9pbnQgIT0g
c3RhdGljX2Nhc3Q8R0NHTGVudW0+KDB1KSk7CisgICAgICAgIEFTU0VSVChiaW5kaW5nUG9pbnQg
IT0gc3RhdGljX2Nhc3Q8R0xlbnVtPigwdSkpOwogICAgICAgICBpZiAoY29uZGl0aW9uKSB7CiAg
ICAgICAgICAgICBtX2JpbmRpbmdQb2ludCA9IGJpbmRpbmdQb2ludDsKICAgICAgICAgICAgIGds
OjpHZXRJbnRlZ2VydihiaW5kaW5nUG9pbnRRdWVyeSwgcmVpbnRlcnByZXRfY2FzdDxHTGludCo+
KCZtX2JpbmRpbmdWYWx1ZSkpOwpAQCAtNTYsNiArNTYsMTUzIEBAIHByaXZhdGU6CiAgICAgR0x1
aW50IG1fYmluZGluZ1ZhbHVlIHsgMHUgfTsKIH07CiAKKworY2xhc3MgU2NvcGVkQnVmZmVyQmlu
ZGluZyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkQnVmZmVyQmluZGluZyk7Citw
dWJsaWM6CisgICAgU2NvcGVkQnVmZmVyQmluZGluZyhHTGVudW0gYmluZGluZ1BvaW50LCBHTHVp
bnQgYmluZGluZ1ZhbHVlLCBib29sIGNvbmRpdGlvbiA9IHRydWUpCisgICAgeworICAgICAgICBp
ZiAoIWNvbmRpdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ2w6OkdldEludGVn
ZXJ2KHF1ZXJ5KGJpbmRpbmdQb2ludCksIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQqPigmbV9iaW5k
aW5nVmFsdWUpKTsKKyAgICAgICAgaWYgKGJpbmRpbmdWYWx1ZSA9PSBtX2JpbmRpbmdWYWx1ZSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9iaW5kaW5nUG9pbnQgPSBiaW5kaW5nUG9p
bnQ7CisgICAgICAgIGdsOjpCaW5kQnVmZmVyKG1fYmluZGluZ1BvaW50LCBiaW5kaW5nVmFsdWUp
OworICAgIH0KKworICAgIH5TY29wZWRCdWZmZXJCaW5kaW5nKCkKKyAgICB7CisgICAgICAgIGlm
IChtX2JpbmRpbmdQb2ludCkKKyAgICAgICAgICAgIGdsOjpCaW5kQnVmZmVyKG1fYmluZGluZ1Bv
aW50LCBtX2JpbmRpbmdWYWx1ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBjb25z
dGV4cHIgR0xlbnVtIHF1ZXJ5KEdMZW51bSBiaW5kaW5nUG9pbnQpCisgICAgeworICAgICAgICBp
ZiAoYmluZGluZ1BvaW50ID09IEdMX1BJWEVMX1BBQ0tfQlVGRkVSKQorICAgICAgICAgICAgcmV0
dXJuIEdMX1BJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkc7CisgICAgICAgIEFTU0VSVChiaW5kaW5n
UG9pbnQgPT0gR0xfUElYRUxfVU5QQUNLX0JVRkZFUik7CisgICAgICAgIHJldHVybiBHTF9QSVhF
TF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkc7CisgICAgfQorICAgIEdMaW50IG1fYmluZGluZ1BvaW50
IHsgMCB9OworICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07Cit9OworY2xhc3MgU2Nv
cGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKTsKK3B1YmxpYzoKKyAgICBT
Y29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyhib29sIGlzRm9yV2ViR0wyLCBHTHVp
bnQgcmVzdG9yZVZhbHVlKQorICAgICAgICA6IG1fZnJhbWVidWZmZXJUYXJnZXQoaXNGb3JXZWJH
TDIgPyBHTF9SRUFEX0ZSQU1FQlVGRkVSIDogR0xfRlJBTUVCVUZGRVIpCisgICAgICAgICwgbV9i
aW5kaW5nVmFsdWUocmVzdG9yZVZhbHVlKQorICAgIHsKKyAgICB9CisgICAgU2NvcGVkUmVzdG9y
ZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoYm9vbCBpc0ZvcldlYkdMMiwgR0x1aW50IHJlc3RvcmVW
YWx1ZSwgR0x1aW50IHZhbHVlKQorICAgICAgICA6IG1fZnJhbWVidWZmZXJUYXJnZXQoaXNGb3JX
ZWJHTDIgPyBHTF9SRUFEX0ZSQU1FQlVGRkVSIDogR0xfRlJBTUVCVUZGRVIpCisgICAgICAgICwg
bV9iaW5kaW5nVmFsdWUocmVzdG9yZVZhbHVlKQorICAgIHsKKyAgICAgICAgYmluZEZyYW1lYnVm
ZmVyKHZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBtYXJrQmluZGluZ0NoYW5nZWQoKQorICAgIHsK
KyAgICAgICAgbV9iaW5kaW5nQ2hhbmdlZCA9IHRydWU7CisgICAgfQorICAgIHZvaWQgYmluZEZy
YW1lYnVmZmVyKEdMdWludCBiaW5kaW5nVmFsdWUpCisgICAgeworICAgICAgICBpZiAoIW1fYmlu
ZGluZ0NoYW5nZWQgJiYgbV9iaW5kaW5nVmFsdWUgPT0gYmluZGluZ1ZhbHVlKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXJUYXJn
ZXQsIGJpbmRpbmdWYWx1ZSk7CisgICAgICAgIG1fYmluZGluZ0NoYW5nZWQgPSBtX2JpbmRpbmdW
YWx1ZSAhPSBiaW5kaW5nVmFsdWU7CisgICAgfQorICAgIH5TY29wZWRSZXN0b3JlUmVhZEZyYW1l
YnVmZmVyQmluZGluZygpCisgICAgeworICAgICAgICBpZiAobV9iaW5kaW5nQ2hhbmdlZCkKKyAg
ICAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlclRhcmdldCwgbV9iaW5k
aW5nVmFsdWUpOworICAgIH0KK3ByaXZhdGU6CisgICAgY29uc3QgR0xlbnVtIG1fZnJhbWVidWZm
ZXJUYXJnZXQ7CisgICAgR0x1aW50IG1fYmluZGluZ1ZhbHVlIHsgMHUgfTsKKyAgICBib29sIG1f
YmluZGluZ0NoYW5nZWQgeyBmYWxzZSB9OworfTsKKworY2xhc3MgU2NvcGVkUGl4ZWxTdG9yYWdl
TW9kZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSk7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZShHTGVudW0gbmFt
ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQorICAgICAgICA6IG1fbmFtZShjb25kaXRpb24gPyBu
YW1lIDogMCkKKyAgICB7CisgICAgICAgIGlmIChtX25hbWUpCisgICAgICAgICAgICBnbDo6R2V0
SW50ZWdlcnYobV9uYW1lLCAmbV9vcmlnaW5hbFZhbHVlKTsKKyAgICB9CisgICAgU2NvcGVkUGl4
ZWxTdG9yYWdlTW9kZShHTGVudW0gbmFtZSwgR0xpbnQgdmFsdWUsIGJvb2wgY29uZGl0aW9uID0g
dHJ1ZSkKKyAgICAgICAgOiBtX25hbWUoY29uZGl0aW9uID8gbmFtZSA6IDApCisgICAgeworICAg
ICAgICBpZiAobV9uYW1lKSB7CisgICAgICAgICAgICBnbDo6R2V0SW50ZWdlcnYobV9uYW1lLCAm
bV9vcmlnaW5hbFZhbHVlKTsKKyAgICAgICAgICAgIHBpeGVsU3RvcmUodmFsdWUpOworICAgICAg
ICB9CisgICAgfQorICAgIH5TY29wZWRQaXhlbFN0b3JhZ2VNb2RlKCkKKyAgICB7CisgICAgICAg
IGlmIChtX25hbWUgJiYgbV92YWx1ZUNoYW5nZWQpCisgICAgICAgICAgICBnbDo6UGl4ZWxTdG9y
ZWkobV9uYW1lLCBtX29yaWdpbmFsVmFsdWUpOworICAgIH0KKyAgICB2b2lkIHBpeGVsU3RvcmUo
R0xpbnQgdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobV9uYW1lKTsKKyAgICAgICAgaWYg
KCFtX3ZhbHVlQ2hhbmdlZCAmJiBtX29yaWdpbmFsVmFsdWUgPT0gdmFsdWUpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGdsOjpQaXhlbFN0b3JlaShtX25hbWUsIHZhbHVlKTsKKyAgICAg
ICAgbV92YWx1ZUNoYW5nZWQgPSBtX29yaWdpbmFsVmFsdWUgIT0gdmFsdWU7CisgICAgfQorICAg
IG9wZXJhdG9yIEdMaW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX25hbWUgJiYg
IW1fdmFsdWVDaGFuZ2VkKTsKKyAgICAgICAgcmV0dXJuIG1fb3JpZ2luYWxWYWx1ZTsKKyAgICB9
Citwcml2YXRlOgorICAgIGNvbnN0IEdMZW51bSBtX25hbWU7CisgICAgYm9vbCBtX3ZhbHVlQ2hh
bmdlZCB7IGZhbHNlIH07CisgICAgR0xpbnQgbV9vcmlnaW5hbFZhbHVlIHsgMCB9OworfTsKKwor
Y2xhc3MgU2NvcGVkVGV4dHVyZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkVGV4
dHVyZSk7CitwdWJsaWM6CisgICAgU2NvcGVkVGV4dHVyZSgpCisgICAgeworICAgICAgICBnbDo6
R2VuVGV4dHVyZXMoMSwgJm1fb2JqZWN0KTsKKyAgICB9CisgICAgflNjb3BlZFRleHR1cmUoKQor
ICAgIHsKKyAgICAgICAgZ2w6OkRlbGV0ZVRleHR1cmVzKDEsICZtX29iamVjdCk7CisgICAgfQor
ICAgIG9wZXJhdG9yIEdMdWludCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmpl
Y3Q7CisgICAgfQorcHJpdmF0ZToKKyAgICBHTHVpbnQgbV9vYmplY3QgeyAwdSB9OworfTsKKwor
Y2xhc3MgU2NvcGVkRnJhbWVidWZmZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3Bl
ZEZyYW1lYnVmZmVyKTsKK3B1YmxpYzoKKyAgICBTY29wZWRGcmFtZWJ1ZmZlcigpCisgICAgewor
ICAgICAgICBnbDo6R2VuRnJhbWVidWZmZXJzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIH5T
Y29wZWRGcmFtZWJ1ZmZlcigpCisgICAgeworICAgICAgICBnbDo6RGVsZXRlRnJhbWVidWZmZXJz
KDEsICZtX29iamVjdCk7CisgICAgfQorICAgIG9wZXJhdG9yIEdMdWludCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9vYmplY3Q7CisgICAgfQorcHJpdmF0ZToKKyAgICBHTHVpbnQg
bV9vYmplY3QgeyAwIH07Cit9OworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRH
TENhaXJvLmNwcAppbmRleCA0M2NkYWM4YjAxY2RhMGRmMDYyMTg2ZjE1MDAzZWEzMDhmYTIwY2Q2
Li4xZmUyNDM1MTc0N2IxZjNiMWQ5MGFkMTM5OGViNGIxYjNkY2Q4NWQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRHTENh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRHTENhaXJvLmNwcApAQCAtMTA1LDE1ICsxMDUsMzAgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywg
Y29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWlu
dFRvQ2FudmFzKFJlZjxJbWFnZURhdGE+JiYgaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBjYW52
YXNTaXplLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKCFpbWFnZVBpeGVs
cyB8fCBpbWFnZVNpemUuaXNFbXB0eSgpIHx8IGNhbnZhc1NpemUuaXNFbXB0eSgpKQorICAgIEFT
U0VSVCghaW1hZ2VEYXRhLT5zaXplKCkuaXNFbXB0eSgpKTsKKyAgICBpZiAoY2FudmFzU2l6ZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBsYXRmb3JtQ29udGV4dENhaXJvKiBw
bGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmICghcGxh
dGZvcm1Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBDb252ZXJ0IFJHQkEgdG8g
QkdSQS4gQkdSQSBpcyBDQUlST19GT1JNQVRfQVJHQjMyIG9uIGxpdHRsZS1lbmRpYW4gYXJjaGl0
ZWN0dXJlcy4KKyAgICBzaXplX3QgdG90YWxCeXRlcyA9IGltYWdlRGF0YS5kYXRhKCktPmJ5dGVM
ZW5ndGgoKTsKKyAgICB1aW50OF90KiBwaXhlbHMgPSBpbWFnZURhdGEuZGF0YSgpLT5kYXRhKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCisgICAgICAg
IHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOworCisgICAgaWYgKCFjb250ZXh0
QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkgeworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkgeworICAgICAgICAgICAgcGl4ZWxzW2kgKyAw
XSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAwXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwor
ICAgICAgICAgICAgcGl4ZWxzW2kgKyAxXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAxXSAq
IHBpeGVsc1tpICsgM10gLyAyNTUpOworICAgICAgICAgICAgcGl4ZWxzW2kgKyAyXSA9IHN0ZDo6
bWluKDI1NSwgcGl4ZWxzW2kgKyAyXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOworICAgICAgICB9
CisgICAgfQorCiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQtPmNyKCk7CiAgICAg
cGxhdGZvcm1Db250ZXh0LT5zYXZlKCk7CiAKQEAgLTEyMiw3ICsxMzcsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlt
YWdlUGl4ZWxzLCBjbwogICAgIGNhaXJvX3BhaW50KGNyKTsKIAogICAgIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IGltYWdlU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3Jl
YXRlX2Zvcl9kYXRhKAotICAgICAgICBjb25zdF9jYXN0PHVuc2lnbmVkIGNoYXIqPihpbWFnZVBp
eGVscyksIENBSVJPX0ZPUk1BVF9BUkdCMzIsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUu
aGVpZ2h0KCksIGltYWdlU2l6ZS53aWR0aCgpICogNCkpOworICAgICAgICBpbWFnZURhdGEtPmRh
dGEoKS0+ZGF0YSgpLCBDQUlST19GT1JNQVRfQVJHQjMyLCBpbWFnZURhdGEtPndpZHRoKCksIGlt
YWdlRGF0YS0+aGVpZ2h0KCksIGltYWdlRGF0YS0+d2lkdGgoKSAqIDQpKTsKIAogICAgIC8vIE9w
ZW5HTCBrZWVwcyB0aGUgcGl4ZWxzIHN0b3JlZCBib3R0b20gdXAsIHNvIHdlIG5lZWQgdG8gZmxp
cCB0aGUgaW1hZ2UgaGVyZS4KICAgICBjYWlyb190cmFuc2xhdGUoY3IsIDAsIGltYWdlU2l6ZS5o
ZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRHTENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCmluZGV4IDY4ZDVhYzgzZDkxMmU4NmVmZWJm
ZjQyMzlkZmEwNjQ2NjMwMGYxYjQuLmUyZTUxZmQwYTA2MGRhZDIxYjJkMjFhNTI4NWQ0MGQ0NzNi
YzUyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dEdMQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCkBAIC01MDUsMzYgKzUwNSwzNSBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBy
ZWxlYXNlSW1hZ2VEYXRhKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpCitzdGF0aWMg
dm9pZCByZWxlYXNlSW1hZ2VEYXRhKHZvaWQqIGltYWdlRGF0YSwgY29uc3Qgdm9pZCosIHNpemVf
dCkKIHsKLSAgICBmYXN0RnJlZShjb25zdF9jYXN0PHZvaWQqPihkYXRhKSk7CisgICAgcmVpbnRl
cnByZXRfY2FzdDxJbWFnZURhdGEqPihpbWFnZURhdGEpLT5kZXJlZigpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGltYWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNh
bnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBhaW50VG9DYW52YXMoUmVmPEltYWdlRGF0YT4mJiBpbWFnZURhdGEsIGNvbnN0
IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBp
ZiAoIWltYWdlUGl4ZWxzIHx8IGltYWdlU2l6ZS5pc0VtcHR5KCkgfHwgY2FudmFzU2l6ZS5pc0Vt
cHR5KCkpCisgICAgQVNTRVJUKCFpbWFnZURhdGEtPnNpemUoKS5pc0VtcHR5KCkpOworICAgIGlm
IChjYW52YXNTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOworICAgIGF1dG8gYXR0cnMg
PSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIC8vIElucHV0IGlzIEdMX1JHQkEgPT0ga0NHQml0
bWFwQnl0ZU9yZGVyMzJCaWcgfCBrQ0dJbWFnZUFscGhhKkxhc3QuCisgICAgLy8gR0xfQkdSQSB3
b3VsZCBiZSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGEqRmlyc3Qu
CisgICAgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZzsK
KyAgICBpZiAoIWF0dHJzLmFscGhhKQorICAgICAgICBiaXRtYXBJbmZvIHw9IGtDR0ltYWdlQWxw
aGFOb25lU2tpcExhc3Q7CisgICAgZWxzZSBpZiAoYXR0cnMucHJlbXVsdGlwbGllZEFscGhhKQor
ICAgICAgICBiaXRtYXBJbmZvIHw9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdDsKKyAg
ICBlbHNlCisgICAgICAgIGJpdG1hcEluZm8gfD0ga0NHSW1hZ2VBbHBoYUxhc3Q7CisKKyAgICBh
dXRvIGltYWdlU2l6ZSA9IGltYWdlRGF0YS0+c2l6ZSgpOwogICAgIGludCByb3dCeXRlcyA9IGlt
YWdlU2l6ZS53aWR0aCgpICogNDsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlcjsKLQotICAgIGlmIChjb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsK
LSAgICAgICAgdW5zaWduZWQgY2hhciogY29waWVkUGl4ZWxzOwotCi0gICAgICAgIGlmICghdHJ5
RmFzdENhbGxvYyhpbWFnZVNpemUuaGVpZ2h0KCksIHJvd0J5dGVzKS5nZXRWYWx1ZShjb3BpZWRQ
aXhlbHMpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1lbWNweShjb3BpZWRQaXhl
bHMsIGltYWdlUGl4ZWxzLCByb3dCeXRlcyAqIGltYWdlU2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICAg
ICAgc2l6ZV90IGRhdGFTaXplID0gcm93Qnl0ZXMgKiBpbWFnZVNpemUuaGVpZ2h0KCk7Ci0gICAg
ICAgIHZlcmlmeUltYWdlQnVmZmVySXNCaWdFbm91Z2goY29waWVkUGl4ZWxzLCBkYXRhU2l6ZSk7
Ci0gICAgICAgIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRo
RGF0YSgwLCBjb3BpZWRQaXhlbHMsIGRhdGFTaXplLCByZWxlYXNlSW1hZ2VEYXRhKSk7Ci0gICAg
fSBlbHNlIHsKICAgICAgICAgc2l6ZV90IGRhdGFTaXplID0gcm93Qnl0ZXMgKiBpbWFnZVNpemUu
aGVpZ2h0KCk7CisgICAgdWludDhfdCogaW1hZ2VQaXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+
ZGF0YSgpOwogICAgICAgICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGltYWdlUGl4ZWxz
LCBkYXRhU2l6ZSk7Ci0gICAgICAgIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlk
ZXJDcmVhdGVXaXRoRGF0YSgwLCBpbWFnZVBpeGVscywgZGF0YVNpemUsIDApKTsKLSAgICB9Cisg
ICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoJmltYWdlRGF0YS5sZWFrUmVmKCksIGltYWdlUGl4
ZWxzLCBkYXRhU2l6ZSwgcmVsZWFzZUltYWdlRGF0YSkpOwogCi0gICAgYXV0byBpbWFnZSA9IE5h
dGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCByb3dCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYo
KSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMy
SG9zdCwKKyAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1h
Z2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIHJv
d0J5dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBiaXRtYXBJbmZvLAogICAgICAgICBkYXRhUHJv
dmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkpOwogCiAg
ICAgLy8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRoZSBjYW52YXMncyBjb250ZW50IHRvIGJlIHJl
c2l6ZWQgb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5oCmluZGV4IGQ1ZTQxNjhlMzFiZWI4ZjJiYjc3NGNmN2RlMWU5NWY4ZDBiOTk2MTkuLjRk
ZWQ4ZTVmOTQ5ODI2NzE3NDZjOWU3ZjUzM2FhYzZiMThhYzZiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaApAQCAtNjMsNiArNjMsMTAg
QEAgcHVibGljOgogICAgIC8vIFByZXBhcmVzIHRoZSB0YXJnZXQgZm9yIGRpc3BsYXkgd2l0aCBh
IGNvbnRlbnRzIGJ1ZmZlci4KICAgICB2aXJ0dWFsIHZvaWQgcHJlc2VudChCdWZmZXIpID0gMDsK
IAorICAgIC8vIFJldHVybnMgdGhlIG1vc3QgcmVjZW50IHByZXNlbnRlZCBkaXNwbGF5IGJ1ZmZl
ci4gVGhlIHJlZmVyZW5jZSBpcyB2YWxpZCB1bnRpbAorICAgIC8vIG5leHQgcHJlc2VudCwgcmVj
eWNsZUJ1ZmZlciBvciBkZXRhY2hDbGllbnQgY2FsbC4KKyAgICB2aXJ0dWFsIGNvbnN0IEJ1ZmZl
ciYgZGlzcGxheUJ1ZmZlcigpIGNvbnN0ID0gMDsKKwogICAgIC8vIERldGFjaGVzIHRoZSBjbGll
bnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRs
ZS4KICAgICAvLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJlZW4gc3VibWl0dGVkLCBy
ZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUgY2FsbGluZwogICAgIC8v
IHRoaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCA4
OTFlOTc4M2UyNWZkNDc4NGUzNjg2M2IzZTZlNjgyYzI5NWNiNDI0Li5kYmU5YzA1ZDMyOGI2NWMy
NzVlYzk1MTIwNDYwMjRmM2RhNDBjODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0KQEAgLTczMCw2ICs3MzAsMzcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsK
IH0KIAorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21w
b3NpdGVkUmVzdWx0cygpCit7CisgICAgYXV0byYgZGlzcGxheUJ1ZmZlciA9IG1fc3dhcENoYWlu
LT5kaXNwbGF5QnVmZmVyKCk7CisgICAgaWYgKCFkaXNwbGF5QnVmZmVyLnN1cmZhY2UgfHwgIWRp
c3BsYXlCdWZmZXIuaGFuZGxlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoZGlz
cGxheUJ1ZmZlci5zdXJmYWNlLT5zaXplKCkgIT0gZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gTm90ZTogV2UgYXJlIHVzaW5nIEdM
IHRvIHJlYWQgdGhlIElPU3VyZmFjZS4gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywgdGhlcmUgYXJl
IG5vIGNvbnZpbmllbnQKKyAgICAvLyBmdW5jdGlvbnMgdG8gY29udmVydCB0aGUgSU9TdXJmYWNl
IHBpeGVsIGRhdGEgdG8gSW1hZ2VEYXRhLiBUaGUgaW1hZ2UgZGF0YSBlbmRzIHVwIGJlaW5nCisg
ICAgLy8gZHJhd24gdG8gYSBJbWFnZUJ1ZmZlciwgYnV0IGF0IHRoZSB0aW1lIHRoZXJlJ3Mgbm8g
ZnVuY3Rpb25zIHRvIGNvbnN0cnVjdCBhIE5hdGl2ZUltYWdlCisgICAgLy8gb3V0IG9mIGFuIElP
U3VyZmFjZSBpbiBzdWNoIGEgd2F5IHRoYXQgZHJhd2luZyB0aGUgTmF0aXZlSW1hZ2Ugd291bGQg
YmUgZ3VhcmFudGVlZCBsZWF2ZQorICAgIC8vIHRoZSBJT1N1cmZhY2UgYmUgdW5yZWZlbmNlZCBh
ZnRlciB0aGUgZHJhdyBjYWxsIGZpbmlzaGVzLgorICAgIFNjb3BlZFRleHR1cmUgdGV4dHVyZTsK
KyAgICBHQ0dMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQo
KTsKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJhd2lu
Z0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeSgpLCB0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0
ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7CisgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVU
YXJnZXQsIHRleHR1cmUpOworICAgIGlmICghRUdMX0JpbmRUZXhJbWFnZShtX2Rpc3BsYXlPYmos
IGRpc3BsYXlCdWZmZXIuaGFuZGxlLCBFR0xfQkFDS19CVUZGRVIpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgU2NvcGVkRnJhbWVidWZmZXIgZmJvOworICAg
IFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIGZib0JpbmRpbmcobV9pc0Zvcldl
YkdMMiwgbV9zdGF0ZS5ib3VuZFJlYWRGQk8sIGZibyk7CisgICAgZ2w6OkZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZVRhcmdl
dCwgdGV4dHVyZSwgMCk7CisgICAgQVNTRVJUKGdsOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdM
X0ZSQU1FQlVGRkVSKSA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSk7CisKKyAgICBhdXRvIHJl
c3VsdCA9IHJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKTsKKworICAgIEVHTEJvb2xlYW4gcmVs
ZWFzZU9rID0gRUdMX1JlbGVhc2VUZXhJbWFnZShtX2Rpc3BsYXlPYmosIGRpc3BsYXlCdWZmZXIu
aGFuZGxlLCBFR0xfQkFDS19CVUZGRVIpOworICAgIEFTU0VSVF9VTlVTRUQocmVsZWFzZU9rLCBy
ZWxlYXNlT2spOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJHTExheWVyLm1tCmluZGV4IDM4NTk3ZTRhOGY2MzNhNWVlNWRiNzQ5MzMwMjJkYzIzN2Zl
N2U0N2MuLjAzMTM4ZWYxNDMwOTg4ZDcxNWE5OGI3Nzc3ZDNhNTM4OGEzMjk5YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5t
bQpAQCAtMzksNiArMzksMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMTGF5ZXJTd2Fw
Q2hhaW4oV2ViR0xMYXllciogbGF5ZXIpICA6IG1fbGF5ZXIobGF5ZXIpIHsgfTsKICAgICB+V2Vi
R0xMYXllclN3YXBDaGFpbigpIG92ZXJyaWRlID0gZGVmYXVsdDsKICAgICB2b2lkIHByZXNlbnQo
QnVmZmVyKSBvdmVycmlkZTsKKyAgICBjb25zdCBCdWZmZXImIGRpc3BsYXlCdWZmZXIoKSBjb25z
dCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlcjsKKyAgICB9
CiAgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYg
KG1fc3BhcmVCdWZmZXIuc3VyZmFjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5jcHAKaW5kZXggMDY5ZDI4NmNlNGViYTQ4MjllMGM3MzgzZTJmM2U4YmVlNzJmZTI5Mi4uMmZl
Yjc0YzJmYWQxYjJhNjJmZjYwYzYxMjVkMWI4ZmNjZjVkYjU2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaWYgRU5BQkxFKFdFQkdM
KQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
KyNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTk0LDYgKzE5Niw1MCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB9CiAjZW5kaWYKIAordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGltYWdlRGF0YSA9IHJlYWRSZW5kZXJp
bmdSZXN1bHRzKCk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBw
YWludFRvQ2FudmFzKGltYWdlRGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBpbWFnZUJ1ZmZlci0+YmFj
a2VuZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciogaW1hZ2VCdWZmZXIpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGlmIChnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gaW1hZ2VEYXRhID0gcmVhZENvbXBvc2l0ZWRS
ZXN1bHRzKCk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBwYWlu
dFRvQ2FudmFzKGltYWdlRGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBpbWFnZUJ1ZmZlci0+YmFja2Vu
ZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0
YSgpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgaWYgKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxw
aGEgd291bGQgaW52b2x2ZSB1bnByZW11bHRpcGx5aW5nLCB3aGljaCBpcworICAgIC8vIGxvc3N5
LgorICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7Cit9
CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGY1MjRkZTky
ZGNkOWE1OThiMGZiZWY4ZDMzYjljNDQwOWI4Y2QxYjAuLjc4MDk2ZTJlYjA4NzZmOTUyN2M4NTQ3
OTBkMWFmYTczNTEyMGM4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBA
IC00MjgsOSArNDI4LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCiAgICAgLy8gSGVscGVy
IG1ldGhvZHMuCi0KLSAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciog
aW1hZ2VQaXhlbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50U2l6ZSYgY2Fu
dmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7Ci0KICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdl
ZCgpIGZpbmFsOwogICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOwogICAgIGJv
b2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CkBAIC00NTAsNyArNDQ3LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciopIGZpbmFsOwogICAgIFJlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
SW1hZ2VEYXRhKCkgZmluYWw7Ci0gICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52
YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b0NhbnZhcyhJbWFnZUJ1ZmZlciopIGZpbmFsOwogCiAjaWYgVVNFKE9QRU5HTCkgJiYgRU5BQkxF
KFdFQkdMMikKICAgICB2b2lkIHByaW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCk7CkBAIC01
MzAsMTAgKzUyNywxMSBAQCBwcml2YXRlOgogICAgIC8vIERpZCB0aGUgbW9zdCByZWNlbnQgZHJh
d2luZyBvcGVyYXRpb24gbGVhdmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0YXRlPwogICAg
IHZvaWQgY2hlY2tHUFVTdGF0dXMoKTsKIAotICAgIC8vIFJlYWQgcmVuZGVyaW5nIHJlc3VsdHMg
aW50byBhIHBpeGVsIGFycmF5IHdpdGggdGhlIHNhbWUgZm9ybWF0IGFzIHRoZQotICAgIC8vIGJh
Y2tidWZmZXIuCi0gICAgdm9pZCByZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25lZCBjaGFyKiBw
aXhlbHMsIGludCBwaXhlbHNTaXplKTsKLSAgICB2b2lkIHJlYWRQaXhlbHNBbmRDb252ZXJ0VG9C
R1JBSWZOZWNlc3NhcnkoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2ln
bmVkIGNoYXIqIHBpeGVscyk7CisKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiByZWFkUmVuZGVyaW5n
UmVzdWx0cygpOworICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlYWRDb21wb3NpdGVkUmVzdWx0cygp
OworICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKTsKKyAg
ICB2b2lkIHBhaW50VG9DYW52YXMoUmVmPEltYWdlRGF0YT4mJiwgY29uc3QgSW50U2l6ZSYgY2Fu
dmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBib29sIHJlc2hhcGVGQk9zKGNvbnN0
IEludFNpemUmKTsKICAgICB2b2lkIHByZXBhcmVUZXh0dXJlSW1wbCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCBmNDE0ZjljOTYzNGQ2MWI4ZDkw
MTVkNWE2YWZhNTI3Y2MzNDJiZThmLi41N2NhY2I3YmM4OTZhMWNiNTA0NmFlMGE1ZWIyNTdjYjMz
YjFlZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApA
QCAtNjEsMzcgKzYxLDI2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeShp
bnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxz
KQorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNG
b3JQYWludFJlc3VsdHMoKQogewotICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygp
OworICAgIGF1dG8gaW1hZ2VEYXRhID0gY3JlYXRlSW1hZ2VEYXRhRm9yUmVhZFJlc3VsdHMoKTsK
KyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBHTGlu
dCBwYWNrQWxpZ25tZW50ID0gNDsKKyAgICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9
IGZhbHNlOworICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9QQUNLX0FMSUdOTUVOVCwgJnBhY2tBbGln
bm1lbnQpOworICAgIGlmIChwYWNrQWxpZ25tZW50ID4gNCkgeworICAgICAgICA6OmdsUGl4ZWxT
dG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIDQpOworICAgICAgICBtdXN0UmVzdG9yZVBhY2tBbGln
bm1lbnQgPSB0cnVlOworICAgIH0KIAotICAgIC8vIE5WSURJQSBkcml2ZXJzIGhhdmUgYSBidWcg
d2hlcmUgY2FsbGluZyByZWFkUGl4ZWxzIGluIEJHUkEgY2FuIHJldHVybiB0aGUgd3JvbmcgdmFs
dWVzIGZvciB0aGUgYWxwaGEgY2hhbm5lbCB3aGVuIHRoZSBhbHBoYSBpcyBvZmYgZm9yIHRoZSBj
b250ZXh0LgotICAgIGlmICghYXR0cnMuYWxwaGEgJiYgZ2V0RXh0ZW5zaW9ucygpLmlzTlZJRElB
KCkpIHsKLSAgICAgICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKLSNpZiBVU0UoQUNDRUxFUkFURSkKLSAgICAg
ICAgdkltYWdlX0J1ZmZlciBzcmM7Ci0gICAgICAgIHNyYy5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAg
ICAgIHNyYy53aWR0aCA9IHdpZHRoOwotICAgICAgICBzcmMucm93Qnl0ZXMgPSB3aWR0aCAqIDQ7
Ci0gICAgICAgIHNyYy5kYXRhID0gcGl4ZWxzOwotCi0gICAgICAgIHZJbWFnZV9CdWZmZXIgZGVz
dDsKLSAgICAgICAgZGVzdC5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgICAgIGRlc3Qud2lkdGggPSB3
aWR0aDsKLSAgICAgICAgZGVzdC5yb3dCeXRlcyA9IHdpZHRoICogNDsKLSAgICAgICAgZGVzdC5k
YXRhID0gcGl4ZWxzOwotCi0gICAgICAgIC8vIFN3YXAgcGl4ZWwgY2hhbm5lbHMgZnJvbSBSR0JB
IHRvIEJHUkEuCi0gICAgICAgIGNvbnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAxLCAwLCAzIH07
Ci0gICAgICAgIHZJbWFnZVBlcm11dGVDaGFubmVsc19BUkdCODg4OCgmc3JjLCAmZGVzdCwgbWFw
LCBrdkltYWdlTm9GbGFncyk7Ci0jZWxzZQotICAgICAgICBpbnQgdG90YWxCeXRlcyA9IHdpZHRo
ICogaGVpZ2h0ICogNDsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBp
ICs9IDQpCi0gICAgICAgICAgICBzdGQ6OnN3YXAocGl4ZWxzW2ldLCBwaXhlbHNbaSArIDJdKTsK
LSNlbmRpZgotICAgIH0gZWxzZQotICAgICAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBHTF9CR1JBLCBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVYsIHBpeGVscyk7Cisg
ICAgOjpnbFJlYWRQaXhlbHMoMCwgMCwgaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFnZURhdGEtPmhl
aWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0
YSgpKTsKKworICAgIGlmIChtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQpCisgICAgICAgIDo6Z2xQ
aXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgcGFja0FsaWdubWVudCk7CiAKKyAgICByZXR1
cm4gaW1hZ2VEYXRhOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0
ZUF0dHJpYnV0ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1v
bi5jcHAKaW5kZXggMmRlMTg1YTY2ODEzMGEzNjJjMTI3NjdmMzgzZjU3ZjEzNDlkZDQ4MS4uYjI1
ZTFkYTlhMTZiYTJlMTM0MjU2OGFiMGJmZDRlMmZmODc0NjZjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0xMzcsNjQgKzEzNyw2IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNo
YXIqIHBhY2tlZERlcHRoU3RlbmNpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VC
dWZmZXIpCi17Ci0gICAgQ2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PiByb3dCeXRlcyA9IENo
ZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4obV9jdXJyZW50V2lkdGgpICogNDsKLSAgICBpZiAo
cm93Qnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDaGVja2Vk
PGludCwgUmVjb3JkT3ZlcmZsb3c+IHRvdGFsQnl0ZXNDaGVja2VkID0gcm93Qnl0ZXMgKiBtX2N1
cnJlbnRIZWlnaHQ7Ci0gICAgaWYgKHRvdGFsQnl0ZXNDaGVja2VkLmhhc092ZXJmbG93ZWQoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIGludCB0b3RhbEJ5dGVzID0gdG90YWxCeXRlc0NoZWNrZWQu
dW5zYWZlR2V0KCk7Ci0KLSAgICBhdXRvIHBpeGVscyA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25l
ZCBjaGFyPih0b3RhbEJ5dGVzKTsKLSAgICBpZiAoIXBpeGVscykKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgcmVhZFJlbmRlcmluZ1Jlc3VsdHMocGl4ZWxzLmdldCgpLCB0b3RhbEJ5dGVzKTsKLQot
ICAgIGlmICghY29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpIHsKLSAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpIHsKLSAgICAgICAgICAg
IC8vIFByZW11bHRpcGx5IGFscGhhLgotICAgICAgICAgICAgcGl4ZWxzW2kgKyAwXSA9IHN0ZDo6
bWluKDI1NSwgcGl4ZWxzW2kgKyAwXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICAg
ICAgcGl4ZWxzW2kgKyAxXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAxXSAqIHBpeGVsc1tp
ICsgM10gLyAyNTUpOwotICAgICAgICAgICAgcGl4ZWxzW2kgKyAyXSA9IHN0ZDo6bWluKDI1NSwg
cGl4ZWxzW2kgKyAyXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcGFpbnRUb0NhbnZhcyhwaXhlbHMuZ2V0KCksIEludFNpemUobV9jdXJyZW50V2lkdGgs
IG1fY3VycmVudEhlaWdodCksIGltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpLCBpbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpKTsKLX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKLXsKLSAgICAvLyBOb3QgbmVl
ZGVkIGF0IHRoZSBtb21lbnQsIHNvIHJldHVybiB0aGF0IG5vdGhpbmcgd2FzIGRvbmUuCi0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi1SZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQotewotICAgIC8vIFJlYWRp
bmcgcHJlbXVsdGlwbGllZCBhbHBoYSB3b3VsZCBpbnZvbHZlIHVucHJlbXVsdGlwbHlpbmcsIHdo
aWNoIGlzCi0gICAgLy8gbG9zc3kuCi0gICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVs
dGlwbGllZEFscGhhKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gaW1hZ2VE
YXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50
SGVpZ2h0KSk7Ci0gICAgdW5zaWduZWQgY2hhciogcGl4ZWxzID0gaW1hZ2VEYXRhLT5kYXRhKCkt
PmRhdGEoKTsKLSAgICBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IHRvdGFsQnl0ZXNDaGVj
a2VkID0gNCAqIENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4obV9jdXJyZW50V2lkdGgpICog
Q2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PihtX2N1cnJlbnRIZWlnaHQpOwotICAgIGlmICh0
b3RhbEJ5dGVzQ2hlY2tlZC5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBpbWFnZURh
dGE7Ci0gICAgaW50IHRvdGFsQnl0ZXMgPSB0b3RhbEJ5dGVzQ2hlY2tlZC51bnNhZmVHZXQoKTsK
LQotICAgIHJlYWRSZW5kZXJpbmdSZXN1bHRzKHBpeGVscywgdG90YWxCeXRlcyk7Ci0KLSAgICAv
LyBDb252ZXJ0IHRvIFJHQkEuCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBp
ICs9IDQpCi0gICAgICAgIHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOwotCi0g
ICAgcmV0dXJuIGltYWdlRGF0YTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cHJlcGFyZVRleHR1cmUoKQogewogICAgIGlmIChtX2xheWVyQ29tcG9zaXRlZCkKQEAgLTIzNiwx
NSArMTc4LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZVRleHR1cmUo
KQogICAgIDo6Z2xGbHVzaCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25lZCBjaGFyICpwaXhlbHMsIGludCBwaXhlbHNTaXpl
KQorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJp
bmdSZXN1bHRzKERhdGFGb3JtYXQgZm9ybWF0KQogewotICAgIGlmIChwaXhlbHNTaXplIDwgbV9j
dXJyZW50V2lkdGggKiBtX2N1cnJlbnRIZWlnaHQgKiA0KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLQogICAgIGJv
b2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKICAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5h
bnRpYWxpYXMpIHsKICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeSgpOwpA
QCAtMjU3LDIyICsxOTIsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJl
bmRlcmluZ1Jlc3VsdHModW5zaWduZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGkKICAgICAgICAgICAg
IDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBt
X2Zibyk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBHTGludCBwYWNrQWxpZ25tZW50ID0gNDsK
LSAgICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOwotICAgIDo6Z2xHZXRJ
bnRlZ2VydihHTF9QQUNLX0FMSUdOTUVOVCwgJnBhY2tBbGlnbm1lbnQpOwotICAgIGlmIChwYWNr
QWxpZ25tZW50ID4gNCkgewotICAgICAgICA6OmdsUGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1F
TlQsIDQpOwotICAgICAgICBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSB0cnVlOwotICAgIH0K
LQotICAgIHJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZOZWNlc3NhcnkoMCwgMCwgbV9jdXJy
ZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgcGl4ZWxzKTsKLQotICAgIGlmIChtdXN0UmVzdG9y
ZVBhY2tBbGlnbm1lbnQpCi0gICAgICAgIDo6Z2xQaXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVO
VCwgcGFja0FsaWdubWVudCk7Ci0KKyAgICBhdXRvIHJlc3VsdCA9IHJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoZm9ybWF0KTsKICAgICBpZiAobXVzdFJlc3RvcmVGQk8pCiAgICAgICAgIDo6Z2xC
aW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX3N0YXRl
LmJvdW5kRHJhd0ZCTyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggMGQ0NzZjMjI5ZDZmNmVlOTZjY2Y5
OTNkODFkNWMzZGQ2NTIxNWU0OC4uNTAxODEwNTYzYTBlZTEyNjVlMmIxYTMzMzY0ODYzN2NkODRh
ODE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtNjQs
MTYgKzY0LDI3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxzKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgICAgIDo6Z2xCaW5kRnJh
bWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVjZXNz
YXJ5KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFyKiBw
aXhlbHMpCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBp
eGVsc0ZvclBhaW50UmVzdWx0cygpCiB7Ci0gICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgs
IGhlaWdodCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKLSAgICBpbnQgdG90
YWxCeXRlcyA9IHdpZHRoICogaGVpZ2h0ICogNDsKLSAgICBpZiAoaXNHTEVTMkNvbXBsaWFudCgp
KSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAg
ICAgICAgICAgc3RkOjpzd2FwKHBpeGVsc1tpXSwgcGl4ZWxzW2kgKyAyXSk7IC8vIENvbnZlcnQg
dG8gQkdSQS4KLSAgICB9CisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShn
ZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKKyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBHTGludCBwYWNrQWxpZ25tZW50ID0gNDsKKyAgICBi
b29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOworICAgIDo6Z2xHZXRJbnRlZ2Vy
dihHTF9QQUNLX0FMSUdOTUVOVCwgJnBhY2tBbGlnbm1lbnQpOworICAgIGlmIChwYWNrQWxpZ25t
ZW50ID4gNCkgeworICAgICAgICA6OmdsUGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIDQp
OworICAgICAgICBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSB0cnVlOwogfQogCisgICAgOjpn
bFJlYWRQaXhlbHMoMCwgMCwgaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFnZURhdGEtPmhlaWdodCgp
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpKTsK
KworICAgIGlmIChtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQpCisgICAgICAgIDo6Z2xQaXhlbFN0
b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgcGFja0FsaWdubWVudCk7CisKKyAgICByZXR1cm4gaW1h
Z2VEYXRhOworCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25z
dCBJbnRTaXplJiBzaXplKQogewogICAgIGNvbnN0IGludCB3aWR0aCA9IHNpemUud2lkdGgoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAppbmRleCBlN2M0MGM5ODVjYjdkMjcy
Mjg2OWE1ZGZmOTY5MTk0NzA3N2FmNDZjLi44ZTJkMWZjNjUxODYyODM5NWU5NzQxYzQ0ZTdhYzg1
MWIwOGVmNjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC00OCw2
ICs0OCw3IEBAIHB1YmxpYzoKICAgICAvLyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiBvdmVycmlkZXMuCiAgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBmaW5hbDsKICAgICB2
b2lkIHByZXNlbnQoQnVmZmVyKSBmaW5hbDsKKyAgICBjb25zdCBCdWZmZXImIGRpc3BsYXlCdWZm
ZXIoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBmaW5hbDsKIHByaXZh
dGU6CiAgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBtX2Rp
c3BsYXlCdWZmZXI7CkBAIC03Niw2ICs3NywxMSBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMQ29jb2E6OnByZXNlbnQoQnVmZmVyIGJ1ZmZlcikKICAgICBtX2Rpc3BsYXlCdWZmZXIgPSBX
VEZNb3ZlKGJ1ZmZlcik7CiB9CiAKK2NvbnN0IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluOjpCdWZmZXImIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmRpc3BsYXlCdWZm
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2Rpc3BsYXlCdWZmZXI7Cit9CisKIHZvaWQqIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmRldGFjaENsaWVudCgpCiB7CiAgICAgcmV0dXJu
IHN0ZDo6ZXhjaGFuZ2UobV9kaXNwbGF5QnVmZmVyLmhhbmRsZSwgbnVsbHB0cik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAppbmRleCAzNGEwNmZiMDA3NmFjZDNm
ZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Li41M2RiNjE1MGMxZDhlYzgyNWUyM2FiZWY2NTFlNWIz
Yjk3OTkyNDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAK
QEAgLTEyMSw2ICsxMjEsMTEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludENv
bXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKIFJlZlB0cjxJbWFnZURhdGE+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRleCBkOTll
ZGEyOWY2ZGI1ZTE4MTk3MTMxNzhmMmFhNTMxYjRmNWRkNmUwLi5hMTQzOTM0N2Q4OWUwYWRiZjA4
YTQyYTQyNTkxYmJiM2RiZWIyMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaW11bGF0ZUNvbnRl
eHRDaGFuZ2VkKCkgZmluYWw7CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciopIGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkgZmluYWw7CisgICAgdm9p
ZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXIqKSBm
aW5hbDsKIAogICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9u
LiBUaGlzIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KICAgICB2
b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsK
</data>
<flag name="commit-queue"
          id="433925"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416406</attachid>
            <date>2020-12-17 02:35:32 -0800</date>
            <delta_ts>2020-12-17 02:43:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219946-20201217123530.patch</filename>
            <type>text/plain</type>
            <size>63657</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMwMGNiMzk4NTY1MjRm
YzAxZWY4N2I5ZDkxYWQ4NWRjZmU3YTY5ZS4uN2IyZTM4NjdmYjQ1ZWUyMzI3MmRhNzZkMmM1ZmI5
YTU5OTk4NGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAyMC0xMi0xNyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04g
KHIyNjgzODYpOiBTbmFwc2hvdHMgb2YgV2ViR0wgY29udGVudCBpbiB0aGUgdGFiIHBpY2tlciBk
b24ndCB3b3JrIChibGFjayBtYXAgb24gR29vZ2xlIE1hcHMpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcyMDEzNzg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZpeCBjYXNlIHdoZXJlIFdlYkdMIHdvdWxkIGZpcnN0IGJlIGRpc3BsYXllZCB3aXRo
IGhhcmR3YXJlIGNvZGUgcGF0aAorICAgICAgICBhbmQgdGhlbiBkaXNwbGF5ZWQgd2l0aCBzb2Z0
d2FyZSBjb2RlIHBhdGggKHBhaW50aW5nIGZyb20gdGhlIHBhaW50CisgICAgICAgIHRyZWUpLiBG
b3JtZXIgaGFwcGVucyB3aGVuIHVzZXIgbG9va3MgYXQgdGhlIHBhZ2UgYW5kIGxhdHRlciBoYXBw
ZW5zCisgICAgICAgIHdoZW4gcHJpbnRpbmcgb3Igd2hlbiBTYWZhcmkgdGFrZXMgYSBzbmFwc2hv
dC4KKworICAgICAgICBUaGlzIGlzIG5vdCBhIHJlYWwgcmVncmVzc2lvbiBvZiByMjY4Mzg2LiBQ
cmlvciB0byB0aGF0LCB0aGUgc29mdHdhcmUKKyAgICAgICAgZGlzcGxheSB3b3VsZCBoYXZlIHVz
ZWQgdW5pbml0aWFsaXplZCBJT1N1cmZhY2UgY29udGVudHMgb3IgY29udGVudHMgb2YKKyAgICAg
ICAgMS0yIGZyYW1lcyBwcmlvciBhbmQgd291bGQgbGVhdmUgdGhlIGhhcmR3YXJlIGRpc3BsYXkg
YnVmZmVyIG5vdAorICAgICAgICB1cGRhdGVkLgorCisgICAgICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaXMgdXNlZCBmb3IgdHdvCisg
ICAgICAgIHB1cnBvc2VzOgorICAgICAgICAgIDEpIEltYWdlIGV4dHJhY3Rpb24gdXNlcywgc3Vj
aCBhcyB0b0RhdGEoKSBvcgorICAgICAgICAgICAgIGNvbnN0cnVjdGluZyBhbiBJbWFnZSBvdXQg
b2YgdGhlIGNvbnRlbnRzLgorICAgICAgICAgIDIpIFBhaW50aW5nIHRoZSByZW5kZXJpbmcgdG8g
dGhlIGRvY3VtZW50IGR1cmluZyBzb2Z0d2FyZSBkaXNwbGF5LgorCisgICAgICAgIFRoZSAxKSBj
YXNlIHVzZXMgYWx3YXlzIHRoZSBkcmF3aW5nIGJ1ZmZlci4KKworICAgICAgICBUaGUgMikgY2Fz
ZSBwcmVzZW50cyB0aGUgZHJhd2luZyBidWZmZXIgYXMgdGhlIG5ldyBkaXNwbGF5IGJ1ZmZlciBp
ZgorICAgICAgICB0aGVyZSBhcmUgY2hhbmdlcyB0byB0aGUgZHJhd2luZyBidWZmZXIgYW5kIHVz
ZXMgdGhlIHBvdGVudGlhbGx5IG5ldworICAgICAgICBkaXNwbGF5IGJ1ZmZlciB0byBkaXNwbGF5
LgorCisgICAgICAgIEZvciAyRCBjYW52YXMsIHRoZXNlIHR3byBjYXNlcyBhcmUgdGhlIHNhbWUg
Y2FzZS4gRm9yIFdlYkdMIHRoZXkgYXJlCisgICAgICAgIGRpZmZlcmVudC4KKworICAgICAgICBU
aGUgZGlzcGxheSBpcyBkZXN0cnVjdGl2ZSBmb3IgV2ViR0wgZHJhd2luZyBidWZmZXIgd2hlbgor
ICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPT0gZmFsc2UuIFRoaXMgbWVhbnMgdGhhdCBp
ZiBoYXJkd2FyZSBkaXNwbGF5IGhhcworICAgICAgICBoYXBwZW5lZCwgd2UgbXVzdCByZWFkIHRo
ZSBkaXNwbGF5IGJ1ZmZlciBkdXJpbmcgY2FzZSAyLiBUaGlzIGNvZGUgd2FzCisgICAgICAgIG1p
c3NpbmcsIHNvIHRoZSBzY2VuYXJpbyBjb3VsZCBub3QgaGF2ZSBldmVyIHdvcmtlZC4KKworICAg
ICAgICBUaGUgcHJldmlvdXMgY29kZSB0cmllZCB0byB3b3JrYXJvdW5kIHRoaXMgYnkgdGhlCisg
ICAgICAgIFdlYkdMR3JhcGhpY3NDb250ZXh0QmFzZSB0byBkZXRlY3Qgd2hhdCB0aGUgb3duZXIg
aW50ZW5kZWQgd2l0aCB0aGUKKyAgICAgICAgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMs
IHRoZW4gc2tpcCB0aGUgcG90ZW50aWFsIGRyYXdpbmcgYnVmZmVyCisgICAgICAgIGNsZWFyLCBy
ZWFkIHRoZSBkcmF3aW5nIGJ1ZmZlciBhbmQgcHV0IHRoYXQgZGF0YSB0byB0aGUgInByZXNlbnRh
dGlvbgorICAgICAgICBjb3B5IiBvZiB0aGUgSFRNTEVsZW1lbnQuIFRoaXMgaXMgbm90IG9rLCBh
cyB0aGUgdW5jbGVhcmVkIGRyYXdpbmcKKyAgICAgICAgYnVmZmVyIGhhcyBub24tZGV0ZXJtaW5p
c3RpYyBjb250ZW50cyBpbiBjYXNlIHRoZSBjb250ZXh0IGhhcyBkaXNwbGF5ZWQKKyAgICAgICAg
YW5kIHRoZSBjbGllbnQgaGFzIG5vdCBkcmF3biBuZXcgY29udGVudCB0byB0aGUgZHJhd2luZyBi
dWZmZXIuCisKKyAgICAgICAgRml4IGJ5IHJlbW92aW5nIHRoZSAicHJlc2VudGF0aW9uIGNvcHki
IG9mIHRoZSBIVE1MQ2FudmFzLiBUaGUKKyAgICAgICAgcHJlc2VudGF0aW9uIGltYWdlIGNhbiBh
bHdheXMgYmUgZHJhd24gdG8gdGhlIENhbnZhc0Jhc2U6OmJ1ZmZlcigpOgorICAgICAgICAgLSBU
aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGlzIHRoZSBwcmVzZW50YXRpb24gaW1h
Z2UgaWYgdGhlCisgICAgICAgICAgIGNvbnRleHQgaGFzIG5vdCBjaGFuZ2VkIHNpbmNlIHVwZGF0
aW5nIHRoZSBidWZmZXIgd2l0aCBlaXRoZXIgZHJhd2luZworICAgICAgICAgICBidWZmZXIgb3Ig
cHJldmlvdXMgZGlzcGxheSBidWZmZXIuCisgICAgICAgICAtIElmIHRoZSBjb250ZXh0IGhhcyBj
aGFuZ2VkLCB3ZSBtdXN0IHByZXNlbnQgYW5kIHB1dCB0aGUgbmV3IGRpc3BsYXkKKyAgICAgICAg
ICAgYnVmZmVyIHRvIHRoZSBDYW52YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgLSBUaGlzIGlz
IGFsc28gY29ycmVjdCBjb250ZW50cyBmb3IgdGhlIHBvdGVudGlhbCBuZXh0IGltYWdlIGV4dHJh
Y3Rpb24KKyAgICAgICAgICAgdXNlcywgdXAgdG8gYSBwb2ludCB3aGVuIGNvbnRleHQgY2hhbmdl
cy4KKyAgICAgICAgIC0gSWYgdGhlIGNvbnRleHQgY2hhbmdlcyBiZWZvcmUgYW4gaW1hZ2UgZXh0
cmFjdGlvbiB1c2UsIENhbnZhc0Jhc2U6OmJ1ZmZlcigpIGlzCisgICAgICAgICAgIHVwZGF0ZWQg
d2l0aCB0aGUgbm9ybWFsIGxvZ2ljLCB0aGUgc2FtZSBhcyB3aGF0IGhhcHBlbnMgd2hlbiBDYW52
YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgICBpcyB1cGRhdGVkIGJldHdlZW4gdHdvIGltYWdl
IGV4dHJhY3Rpb24gdXNlcy4KKworICAgICAgICBQcmlvciB0byB0aGlzLCB0aGVyZSB3YXMgYW4g
dW5uZWVkZWQgYW5kIGluY29ycmVjdGx5IGltcGxlbWVudGVkCisgICAgICAgIEdQVUNhbnZhc0Nv
bnRleHQ6Om1hcmtMYXllckNvbXBvc2l0ZWQoKS4gVGhlIHNlcXVlbmNlIHdvdWxkIGJlOgorCisg
ICAgICAgIEhUTUxDYW52YXNFbGVtZW50OjpwYWludCgpOgorICAgICAgICAgICBjYW52YXNDb250
ZXh0KCkucGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoYnVmZmVyKCkpOworICAgICAgICAg
ICBjb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlcigpKTsKKyAgICAgICAgICAgY2FudmFz
Q29udGV4dCgpLm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKworICAgICAgICBUaGUgbWFya0xheWVy
Q29tcG9zaXRlZCgpIHdvdWxkIGluY29ycmVjdGx5IG1hcmsgdGhlIFdlYkdMIGNvbnRleHQgY29t
cG9zaXRpbmcKKyAgICAgICAgYmVpbmcgZG9uZSwgYnV0IHRoZXJlIHdhcyBubyBjb21wb3NpdGlu
ZyBhY3R1YWxseSBoYXBwZW5pbmcuIFRoZSBHUFUtc2lkZQorICAgICAgICBkaXNwbGF5IGJ1ZmZl
ciB3b3VsZCBiZSBpbmNvcnJlY3QuIEFsc28sIHRoZXJlIGlzIG5vdGhpbmcgdG8gYmUgZG9uZSBh
dAorICAgICAgICB0aGlzIHN0YWdlLCBhcyB0aGUgY29tcG9zaXRpbmcgb2YgV2ViR0wgY29udGV4
dCBpdHNlbGYgaXMgYWxyZWFkeQorICAgICAgICBmaW5pc2hlZCBhdCBXZWJHTCBjb250ZXh0IHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgcmV0dXJuLgorCisgICAgICAgIEluc3RlYWQs
IGFkZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgp
IHdoaWNoIHNpZ25hbHMgdGhhdCBuZXh0CisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKCkgaXMgYSBkaXNwbGF5IG9wZXJhdGlvbi4gVGhpcyBjYW4gYmUgdXNlZCB0byB0byBk
ZXRlY3QgdGhlCisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaW4gd2hp
Y2ggd2UgbXVzdCBwcmVzZW50IHRoZSBkcmF3aW5nIGJ1ZmZlciBhcworICAgICAgICBkaXNwbGF5
IGJ1ZmZlci4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGRpc3BsYXkgYnVmZmVyIHJlYWQgd2l0
aCBPcGVuR0wuCisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGRyYXdpbmcgYnVmZmVyIHJlYWQgY29k
ZSB0byBiZSBhYmxlIHRvIHJldXNlIHRoZSByZWFkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBkaXNw
bGF5IGJ1ZmZlciByZWFkLiBUaGUgcmVmYWN0b3JlZCBjb2RlIHJlZHVjZXMgcmVkdW5kYW50IHRo
ZQorICAgICAgICBhbGxvY2F0aW9ucyBvZiBmdWxsLXNjcmVlbiBtYWxsb2MgYnVmZmVycyBhbmQg
ZW5zdXJlcyBhbGxvY2F0aW9uIHJlc3VsdHMgYXJlCisgICAgICAgIGNoZWNrZWQgaW5zdGVhZCBv
ZiBjcmFzaGluZyB3aXRoIG51bGxwdHIgZGVyZWZzIHdoZW4gT09NIGhhcHBlbnMuIEZpeGVzCisg
ICAgICAgIGVycm9ycyBzdWNoIGFzIHJkYXI6Ly82NzU1MzUzMSAoQ3Jhc2hUcmFjZXI6IGNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdAorICAgICAgICBXZWJDb3JlOiBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpLgorICAg
ICAgICBSZW1vdmVzIFJHQkEtPkJHUkEtPlJHQkEgY29udmVyc2lvbnMgZnJvbQorICAgICAgICBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEo
KS4KKyAgICAgICAgUmVtb3ZlcyBtYW51YWwgYWxwaGEgcHJlbXVsdGlwbGljYXRpb24gYW5kIG1h
a2VzIENHIGRyYXcgd2l0aCB1bnByZW11bHRpcGxpZWQKKyAgICAgICAgYWxwaGEuCisgICAgICAg
IENoYW5nZXMgQ2Fpcm8gdmFyaWFudCBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB0byBjb252
ZXJ0IG1hbnVhbGx5IFJHQkEtPkJHUkEKKyAgICAgICAgaW5zdGVhZCBvZiAoYmlnKSBPcGVuR0wg
ZHJpdmVyIGRvaW5nIGl0IGluIGNhc2Ugb2Ygbm9uLU5WSURJQSBwbGF0Zm9ybXMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCB0aGUgc25hcHNob3QgLyBzdytodyBkcmF3aW5nIGlzIG5vdCB0ZXN0
YWJsZSBhdCB0aGUgbW9tZW50LgorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHUFVDYW52YXNDb250ZXh0Ojpjb25maWd1
cmVTd2FwQ2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4dDo6cHJlcGFy
ZUZvckRpc3BsYXlXaXRoUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4
dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L0dQVUNhbnZhc0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYWludCk6CisgICAg
ICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9HUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByZXBhcmVGb3JEaXNwbGF5V2l0
aFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUluZGV4QXJyYXlQcmVj
aXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlRHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZlcnRleEF0dHJpYmZ2SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjppbml0VmVydGV4QXR0cmliMCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVz
dWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJl
bmRlcmluZ1Jlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmc6OlNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRCdWZmZXJCaW5kaW5nOjpTY29wZWRCdWZmZXJC
aW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6On5TY29wZWRC
dWZmZXJCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6OnF1
ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZzo6bWFya0JpbmRpbmdDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUmVzdG9yZVJl
YWRGcmFtZWJ1ZmZlckJpbmRpbmc6On5TY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRQaXhlbFN0b3JhZ2VNb2RlOjpTY29wZWRQaXhl
bFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVsU3RvcmFnZU1vZGU6
On5TY29wZWRQaXhlbFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVs
U3RvcmFnZU1vZGU6OnBpeGVsU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUGl4ZWxT
dG9yYWdlTW9kZTo6b3BlcmF0b3IgR0xpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nv
cGVkVGV4dHVyZTo6U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0
dXJlOjp+U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0dXJlOjpv
cGVyYXRvciBHTHVpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVidWZm
ZXI6OlNjb3BlZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lYnVm
ZmVyOjp+U2NvcGVkRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVi
dWZmZXI6Om9wZXJhdG9yIEdMdWludCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZWxlYXNlSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVy
ZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkQ29tcG9zaXRlZFJlc3VsdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9y
UGFpbnRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYkltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om9y
aWdpbmFsU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6bWFwcGVkU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5m
b0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cyk6CisKIDIwMjAtMTItMTQg
IExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU1NJT04o
MjcwNDM1KSBbR1N0cmVhbWVyXSBNYW55IG1lZGlhIHNvdXJjZSB0ZXN0cyBmYWlsaW5nIGFuZCB0
aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwMzI4Y2Y2ZTg0NWY3NTNlNjQyYjQ1M2I4NjMxMTgxN2Q0
YzA2YzkuLmUwODk5YTkyYmMyMGMzNTliYTgwN2IyODEwYjBkZDg5ZWIyMmRjOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTItMTcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVu
QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjY4Mzg2KTogU25hcHNob3RzIG9m
IFdlYkdMIGNvbnRlbnQgaW4gdGhlIHRhYiBwaWNrZXIgZG9uJ3Qgd29yayAoYmxhY2sgbWFwIG9u
IEdvb2dsZSBNYXBzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5OTQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjAxMzc4ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZHVtbXkgaW1wbGVt
ZW50YXRpb25zIG9mIEdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9D
YW52YXMuCisgICAgICAgIFBhaW50aW5nIHRvIGNhbnZhcyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0
IGZvciB0aGUgcmVtb3RlIEdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6ZGlzcGxh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oOgorCiAyMDIwLTEyLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gSW50cm9kdWNlIHZtRW50cnlDdXN0b21BY2Nlc3NvciBhbmQgdm1FbnRy
eUhvc3RGdW5jdGlvbiBmb3IgSklUQ2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcAppbmRleCBlMzAzNTBiNDYyYTBmZWQ0NDY2OGJm
ODk2MDI5MjkzZTExNzhlODg3Li4zOGIxNTI4ZmZjM2E5NTI1ODUwYTk0ZDY1ZWQyNzk0YTRkODA0
YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcApAQCAtOTAsMTAgKzkwLDE4IEBAIHZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgbm90aWZ5Q2FudmFzQ29udGVudENoYW5n
ZWQoKTsKIH0KIAotdm9pZCBHUFVDYW52YXNDb250ZXh0OjptYXJrTGF5ZXJDb21wb3NpdGVkKCkK
K3ZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQogewot
ICAgIGlmIChtX3N3YXBDaGFpbiAmJiBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCkpCisgICAgbV9p
c0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSB0cnVlOworfQorCit2b2lkIEdQVUNhbnZhc0NvbnRleHQ6
OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKK3sKKyAgICAvLyBGSVhNRTogVW5pbXBs
ZW1lbnRlZC4KKyAgICBpZiAobV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgJiYgbV9zd2FwQ2hhaW4g
JiYgbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpKSB7CiAgICAgICAgIG1fc3dhcENoYWluLT5zd2Fw
Q2hhaW4oKS0+cHJlc2VudCgpOworICAgICAgICBtX2lzRGlzcGxheWluZ1dpdGhQYWludCA9IGZh
bHNlOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oCmluZGV4IDZkZjIwYjRhNjQ3
ZjZhMTg3OGIzODE1NmMyZDA3MTA3NjU0MzJhOGQuLjliMGZlN2IwZDA4Y2U5M2M3ZWNhODY5NGEw
MGQxNjMyZTEzZDBjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUNhbnZhc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVDYW52YXNDb250ZXh0LmgKQEAgLTUzLDEzICs1MywxNSBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNXZWJHUFUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpIGZpbmFsOwotICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZp
bmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSBmaW5hbDsKKyAgICB2
b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgZmluYWw7CiAKICAgICAvLyBBY3Rp
dmVET01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJHUFVDYW52YXNDb250ZXh0IjsgfQogICAgIC8vIEZJWE1FOiBTdHVi
cy4KICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IH0KIAorICAgIGJvb2wgbV9pc0Rpc3BsYXlpbmdX
aXRoUGFpbnQgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxXZWJHUFVTd2FwQ2hhaW4+IG1fc3dhcENo
YWluOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRl
eCAxNjljYWE5MDAyNGQyNjc3MjMwNTA2MmY1OThkMTJjY2RkYmFiM2ZmLi5kNzBiZGQxMDdkNTA2
NTgzZDM3YTVkNzUxMDhkMGM1YmZiNzIzZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcApAQCAtNjQyLDIwICs2NDIsMTcgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBy
KQogCiAgICAgICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgICAgIHNob3VsZFBhaW50ID0g
cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIHx8IGRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCBtX2lz
U25hcHNob3R0aW5nOwotICAgICAgICAgICAgaWYgKHNob3VsZFBhaW50KQorICAgICAgICAgICAg
aWYgKHNob3VsZFBhaW50KSB7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9y
RGlzcGxheVdpdGhQYWludCgpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAg
aWYgKHNob3VsZFBhaW50KSB7CiAgICAgICAgICAgICBpZiAoaGFzQ3JlYXRlZEltYWdlQnVmZmVy
KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9wcmVzZW50ZWRJbWFnZSkKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKm1fcHJlc2VudGVkSW1hZ2UsIHNuYXBwZWRJbnRS
ZWN0KHIpLCByZW5kZXJlcigpLT5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgICAgICAgICAgICAg
IGVsc2UgaWYgKEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGJ1ZmZlcigpKQorICAgICAgICAg
ICAgICAgIGlmIChJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBidWZmZXIoKSkKICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBzbmFwcGVk
SW50UmVjdChyKSk7CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChpc0dQVUJhc2Vk
KCkpCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8R1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250
ZXh0PigqbV9jb250ZXh0KS5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTY2OCwxOSArNjY1LDYgQEAgYm9vbCBIVE1MQ2FudmFzRWxlbWVudDo6aXNHUFVCYXNl
ZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dCAmJiBtX2NvbnRleHQtPmlzR1BVQmFzZWQo
KTsKIH0KIAotdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6bWFrZVByZXNlbnRhdGlvbkNvcHkoKQot
ewotICAgIGlmICghbV9wcmVzZW50ZWRJbWFnZSkgewotICAgICAgICAvLyBUaGUgYnVmZmVyIGNv
bnRhaW5zIHRoZSBsYXN0IHByZXNlbnRlZCBkYXRhLCBzbyBzYXZlIGEgY29weSBvZiBpdC4KLSAg
ICAgICAgbV9wcmVzZW50ZWRJbWFnZSA9IGJ1ZmZlcigpLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdT
dG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpOwotICAgIH0KLX0KLQotdm9pZCBIVE1MQ2Fu
dmFzRWxlbWVudDo6Y2xlYXJQcmVzZW50YXRpb25Db3B5KCkKLXsKLSAgICBtX3ByZXNlbnRlZElt
YWdlID0gbnVsbHB0cjsKLX0KLQogdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0U3VyZmFjZVNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBDYW52YXNCYXNlOjpzZXRTaXplKHNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCmluZGV4IGFlYjAxODk3NDli
NTgzMzM3NDg0MDRjOTViYWZlZDA0NTI4ZjljZWYuLjljOTIzMGY1ZmJiN2U2ZGU0YjY5ZmQ1Yzg2
YmVlZTQwNjRiNDQyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgK
QEAgLTExNSw4ICsxMTUsNiBAQCBwdWJsaWM6CiAgICAgSW1hZ2UqIGNvcGllZEltYWdlKCkgY29u
c3QgZmluYWw7CiAgICAgdm9pZCBjbGVhckNvcGllZEltYWdlKCkgY29uc3QgZmluYWw7CiAgICAg
UmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKCk7Ci0gICAgdm9pZCBtYWtlUHJlc2VudGF0
aW9uQ29weSgpOwotICAgIHZvaWQgY2xlYXJQcmVzZW50YXRpb25Db3B5KCk7CiAKICAgICBTZWN1
cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdCBmaW5hbDsKIApAQCAtMTk5LDcgKzE5
Nyw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNTbmFwc2hvdHRpbmcgeyBmYWxzZSB9Owog
Ci0gICAgbXV0YWJsZSBSZWZQdHI8SW1hZ2U+IG1fcHJlc2VudGVkSW1hZ2U7CiAgICAgbXV0YWJs
ZSBSZWZQdHI8SW1hZ2U+IG1fY29waWVkSW1hZ2U7IC8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFy
eSBmb3IgcGxhdGZvcm1zIHRoYXQgaGF2ZSB0byBjb3B5IHRoZSBpbWFnZSBidWZmZXIgdG8gcmVu
ZGVyIChhbmQgZm9yIENTU0NhbnZhc1ZhbHVlKS4KIH07CiAKQEAgLTIxNiw0ICsyMTMsMyBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBXZWJDb3JlOjpFdmVu
dFRhcmdldCYgdGFyZ2V0KSB7IHJldHVybiBpczxXZWJDb3JlOjpOb2RlPih0YXJnZXQpICYmIGNo
ZWNrVGFnTmFtZShkb3duY2FzdDxXZWJDb3JlOjpOb2RlPih0YXJnZXQpKTsgfQogfTsKIH0KLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oCmluZGV4IGFjZjgzYmI3MmRjYTcwMWMwZmNjNjczOGMxZDg2Y2ExMTc4ZmQ0OTQuLmYzODg2
M2Y3OGZlZTNmZjg5OTI5Yzc0YzQ3Y2EyZTUzNDE5OTAwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTcxLDYgKzcx
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc09mZnNjcmVlbjJkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQYWludCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKKyAgICAvLyBDYWxsZWQgYmVmb3JlIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzIGlmIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzIGlzCisgICAgLy8gdXNlZCBm
b3IgY29tcG9zaXRpbmcgcHVycG9zZXMuCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEaXNw
bGF5V2l0aFBhaW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKCkge30KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggNDdhMDJl
YjcwNmNlNDVkODhmMTk3NTRiYjdkOGJlZmY5YjFmOTQyYy4uODkwY2Q3MjM1MDFlMDRlMjhlODJm
NzdhMGI2OWRiZWQ1OWE0ODU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTUwLDggKzUw
LDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCByZXNoYXBlKGludCB3aWR0
aCwgaW50IGhlaWdodCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVk
KCkgPSAwOwotCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgR1BVQmFzZWRDYW52YXNSZW5kZXJp
bmdDb250ZXh0KENhbnZhc0Jhc2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAwMTNiODlhZjQ4
ODhiODdjMGY2NDhlNTJjYjU2MWNkYjkxYzU0OTczLi4zMGQ5ZTdlOTFhNDNjMzllODEyZjdiYjUy
YjUxMDY4YmM5MzY3NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMTE5OSwxMSArMTE5OSwxMCBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlc3RvcmVTdGF0ZUFmdGVyQ2xlYXIo
KQogICAgIG1fY29udGV4dC0+ZGVwdGhNYXNrKG1fZGVwdGhNYXNrKTsKIH0KIAotdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKKwordm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgpCiB7Ci0g
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1f
Y29udGV4dC0+bWFya0xheWVyQ29tcG9zaXRlZCgpOworICAgIG1faXNEaXNwbGF5aW5nV2l0aFBh
aW50ID0gdHJ1ZTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpCkBAIC0xMjExLDE4ICsxMjEwLDE3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQog
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChhdXRvKiBjYW52YXMgPSBodG1sQ2FudmFzKCkpIHsKLSAgICAgICAgaWYgKGNhbnZhcy0+
ZG9jdW1lbnQoKS5wcmludGluZygpIHx8IChjYW52YXMtPmlzU25hcHNob3R0aW5nKCkgJiYgY2Fu
dmFzLT5kb2N1bWVudCgpLnBhZ2UoKS0+aXNWaXNpYmxlKCkpKQotICAgICAgICAgICAgY2FudmFz
LT5jbGVhclByZXNlbnRhdGlvbkNvcHkoKTsKLQotICAgICAgICAvLyBVbnRpbCB0aGUgY2FudmFz
IGlzIHdyaXR0ZW4gdG8gYnkgdGhlIGFwcGxpY2F0aW9uLCB0aGUgY2xlYXIgdGhhdAotICAgICAg
ICAvLyBoYXBwZW5lZCBhZnRlciBpdCB3YXMgY29tcG9zaXRlZCBzaG91bGQgYmUgaWdub3JlZCBi
eSB0aGUgY29tcG9zaXRvci4KLSAgICAgICAgaWYgKG1fY29udGV4dC0+bGF5ZXJDb21wb3NpdGVk
KCkgJiYgIW1fYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsKLSAgICAgICAgICAg
IG1fY29udGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoY2FudmFzLT5idWZmZXIo
KSk7Ci0KLSAgICAgICAgICAgIGNhbnZhcy0+bWFrZVByZXNlbnRhdGlvbkNvcHkoKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBjYW52YXMtPmNsZWFyUHJlc2VudGF0aW9uQ29weSgpOwor
ICAgIGlmIChtX2lzRGlzcGxheWluZ1dpdGhQYWludCkgeworICAgICAgICBib29sIGNhbnZhc0Nv
bnRhaW5zRGlzcGxheUJ1ZmZlciA9ICFtX21hcmtlZENhbnZhc0RpcnR5OworICAgICAgICBwcmVw
YXJlRm9yRGlzcGxheSgpOworICAgICAgICBtX2lzRGlzcGxheWluZ1dpdGhQYWludCA9IGZhbHNl
OworICAgICAgICBpZiAoIWNhbnZhc0NvbnRhaW5zRGlzcGxheUJ1ZmZlcikgeworICAgICAgICAg
ICAgYXV0byYgYmFzZSA9IGNhbnZhc0Jhc2UoKTsKKyAgICAgICAgICAgIGJhc2UuY2xlYXJDb3Bp
ZWRJbWFnZSgpOworICAgICAgICAgICAgbV9tYXJrZWRDYW52YXNEaXJ0eSA9IGZhbHNlOworICAg
ICAgICAgICAgbV9jb250ZXh0LT5wYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoYmFzZS5i
dWZmZXIoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNsZWFy
SWZDb21wb3NpdGVkKENsZWFyQ2FsbGVyT3RoZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDMwYTg1NTdk
ODY4OGUyZWE0OTVkYjcxNmYwOGJlNjA5ZWMzYjRlOGEuLmU4ZTkwY2ZiYTE2YjE0ZGQxNDhjOThl
MDY5ZTUwMGVjZGUyYjU1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTM4NCw4ICszODQsOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBvdmVycmlkZTsK
IAotICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOwotICAgIHZvaWQgcGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHByZXBhcmVGb3JE
aXNwbGF5V2l0aFBhaW50KCkgZmluYWw7CisgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b0NhbnZhcygpIGZpbmFsOwogICAgIFJlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvSW1hZ2VEYXRhKCk7CiAKICAgICB2b2lkIHJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNo
YXJlZE9iamVjdCYpOwpAQCAtNjY4LDYgKzY2OCw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKTsKIAogICAgIGJvb2wgbV9jb21wb3NpdGluZ1Jlc3VsdHNO
ZWVkVXBkYXRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQg
eyBmYWxzZSB9OwogCiAgICAgLy8gRW5hYmxlZCBleHRlbnNpb24gb2JqZWN0cy4KICAgICAvLyBG
SVhNRTogTW92ZSBzb21lIG9mIHRoZXNlIHRvIFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgdGhlIG9u
ZXMgbm90IG5lZWRlZCBmb3IgV2ViR0wyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCAyMjNhNWM5YmYxNjk3ZjI1ZjEx
MmRiY2MxODZmODE5YjdjZTFkZTQ1Li5hYThmZjIzNjhkZmZkODljZWFiNmE0NDMzMzBkYjQ1MTZh
MThmOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmgKQEAgLTEyOTIsNyArMTI5Miw3IEBAIHB1YmxpYzoKICAgICAvLyB0
aGUgY29udGV4dC4KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoSW1hZ2VCdWZmZXIqKSA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VEYXRhPiBwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSA9IDA7
CiAKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZC4gVGhlIGxheWVyIHNob3Vs
ZCBiZSBtYXJrZWQgY29tcG9zaXRlZCBieQogICAgIC8vIHByZXBhcmluZyBmb3IgZGlzcGxheSwg
c28gdGhhdCBjYW52YXMgaW1hZ2UgYnVmZmVyIGFuZCB0aGUgbGF5ZXIgYWdyZWUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCA2MGY3YTk0N2VmY2JiMzcxNTZj
MDk4ZTBiNWVlMzNjM2I2MmI4NDliLi4zNmZhYWE3ZTQ2NjIyYmFmM2ExMjNmYmU5NWVlOTRiZTY0
MDlkNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC05
OSwxMSArOTksNiBAQCBHQ0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fYnVmZmVyc1Rv
QXV0b0NsZWFyOwogfQogCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQotewotICAgIHJldHVy
biBmYWxzZTsKLX0KLQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5h
YmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkKIHsKICAgICAvLyBSZWRlY2xhcmVkIGZvciBleHBv
cnQgcmVhc29ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCmluZGV4IDcy
NmFhZjZjNmEwZjYyZmYyODJlNWI4ZDIwMmExMjk0ZTFkZTg1NzEuLjI0NzFkNGUyNWM5YWEyMDBl
Yzc0M2IxZmUwYzY0NjhiMGM5YTUwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaApAQCAtNjcsNyArNjcsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBsYXllckNvbXBvc2l0
ZWQoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0
ZmllbGQpIGZpbmFsOwogICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBj
b25zdCBmaW5hbDsKLSAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFn
ZUJ1ZmZlciopIGZpbmFsOwogICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOwog
ICAgIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkgZmluYWw7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4
dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMzA5YTUzMDliNjQwYTNkNmEyODE0MWNhN2Ix
YTc1ZGI0NmU5Zjk1MS4uYjUwNDNiNzQ2MzZmNzg4NWM1ZDgwYzA3NzM1NTVkNzEyMDAwMjNkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAog
I2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTEFOR0xFLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgpAQCAtNDYsOSArNDcsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLSNpZiBVU0UoQUNDRUxFUkFURSkK
LSNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUuaD4KLSNlbmRpZgogCiAjaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5oIgpAQCAtNjQsMzAgKzYyLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2kKIAog
bmFtZXNwYWNlIHsKIAotY2xhc3MgU2NvcGVkUmVzZXRCdWZmZXJCaW5kaW5nIHsKLSAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTY29wZWRSZXNldEJ1ZmZlckJpbmRpbmcpOwotcHVibGljOgotICAg
IFNjb3BlZFJlc2V0QnVmZmVyQmluZGluZyhib29sIHNob3VsZERvV29yaywgR0xlbnVtIGJpbmRp
bmdQb2ludFF1ZXJ5LCBHTGVudW0gYmluZGluZ1BvaW50KQotICAgICAgICA6IG1fYmluZGluZ1Bv
aW50UXVlcnkoYmluZGluZ1BvaW50UXVlcnkpCi0gICAgICAgICwgbV9iaW5kaW5nUG9pbnQoYmlu
ZGluZ1BvaW50KQotICAgIHsKLSAgICAgICAgaWYgKHNob3VsZERvV29yaykKLSAgICAgICAgICAg
IGdsOjpHZXRJbnRlZ2VydihtX2JpbmRpbmdQb2ludFF1ZXJ5LCAmbV9iaW5kaW5nVmFsdWUpOwot
ICAgICAgICBpZiAobV9iaW5kaW5nVmFsdWUpCi0gICAgICAgICAgICBnbDo6QmluZEJ1ZmZlciht
X2JpbmRpbmdQb2ludCwgMCk7Ci0gICAgfQotCi0gICAgflNjb3BlZFJlc2V0QnVmZmVyQmluZGlu
ZygpCi0gICAgewotICAgICAgICBpZiAobV9iaW5kaW5nVmFsdWUpCi0gICAgICAgICAgICBnbDo6
QmluZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBHTGludCBtX2JpbmRpbmdQb2ludFF1ZXJ5IHsgMCB9OwotICAgIEdMaW50IG1f
YmluZGluZ1BvaW50IHsgMCB9OwotICAgIEdMaW50IG1fYmluZGluZ1ZhbHVlIHsgMCB9OwotfTsK
IAogfSAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCiAKQEAgLTEwMiwzNiArNzYsMjkgQEAgc3RhdGlj
IHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1
bnNpZ25lZCBjaGFyKiBwaXgKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVjZXNzYXJ5KGludCB4LCBpbnQgeSwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFyKiBwaXhlbHMpCi17Ci0gICAgLy8g
TlZJRElBIGRyaXZlcnMgaGF2ZSBhIGJ1ZyB3aGVyZSBjYWxsaW5nIHJlYWRQaXhlbHMgaW4gQkdS
QSBjYW4gcmV0dXJuIHRoZSB3cm9uZyB2YWx1ZXMgZm9yIHRoZSBhbHBoYSBjaGFubmVsIHdoZW4g
dGhlIGFscGhhIGlzIG9mZiBmb3IgdGhlIGNvbnRleHQuCi0gICAgZ2w6OlJlYWRQaXhlbHMoeCwg
eSwgd2lkdGgsIGhlaWdodCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKLSNp
ZiBVU0UoQUNDRUxFUkFURSkKLSAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKLSAgICBzcmMuaGVpZ2h0
ID0gaGVpZ2h0OwotICAgIHNyYy53aWR0aCA9IHdpZHRoOwotICAgIHNyYy5yb3dCeXRlcyA9IHdp
ZHRoICogNDsKLSAgICBzcmMuZGF0YSA9IHBpeGVsczsKLQotICAgIHZJbWFnZV9CdWZmZXIgZGVz
dDsKLSAgICBkZXN0LmhlaWdodCA9IGhlaWdodDsKLSAgICBkZXN0LndpZHRoID0gd2lkdGg7Ci0g
ICAgZGVzdC5yb3dCeXRlcyA9IHdpZHRoICogNDsKLSAgICBkZXN0LmRhdGEgPSBwaXhlbHM7Ci0K
LSAgICAvLyBTd2FwIHBpeGVsIGNoYW5uZWxzIGZyb20gUkdCQSB0byBCR1JBLgotICAgIGNvbnN0
IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAxLCAwLCAzIH07Ci0gICAgdkltYWdlUGVybXV0ZUNoYW5u
ZWxzX0FSR0I4ODg4KCZzcmMsICZkZXN0LCBtYXAsIGt2SW1hZ2VOb0ZsYWdzKTsKLSNlbHNlCi0g
ICAgaW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAgIHN0ZDo6c3dhcChwaXhlbHNbaV0s
IHBpeGVsc1tpICsgMl0pOwotI2VuZGlmCi0KK1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKK3sKKyAgICBhdXRvIGlt
YWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkp
OworICAgIGlmICghaW1hZ2VEYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBTY29w
ZWRQaXhlbFN0b3JhZ2VNb2RlIHBhY2tBbGlnbm1lbnQoR0xfUEFDS19BTElHTk1FTlQpOworICAg
IGlmIChwYWNrQWxpZ25tZW50ID4gNCkKKyAgICAgICAgcGFja0FsaWdubWVudC5waXhlbFN0b3Jl
KDQpOworICAgIFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUgcGFja1Jvd0xlbmd0aChHTF9QQUNLX1JP
V19MRU5HVEgsIDAsIG1faXNGb3JXZWJHTDIpOworICAgIFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUg
cGFja1NraXBSb3dzKEdMX1BBQ0tfU0tJUF9ST1dTLCAwLCBtX2lzRm9yV2ViR0wyKTsKKyAgICBT
Y29wZWRQaXhlbFN0b3JhZ2VNb2RlIHBhY2tTa2lwUGl4ZWxzKEdMX1BBQ0tfU0tJUF9QSVhFTFMs
IDAsIG1faXNGb3JXZWJHTDIpOworICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcgc2NvcGVkUGl4ZWxQ
YWNrQnVmZmVyUmVzZXQoR0xfUElYRUxfUEFDS19CVUZGRVIsIDAsIG1faXNGb3JXZWJHTDIpOwor
CisgICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoMCwgMCwgaW1hZ2VEYXRhLT53aWR0aCgp
LCBpbWFnZURhdGEtPmhlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBpbWFnZURh
dGEtPmRhdGEoKS0+Ynl0ZUxlbmd0aCgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBpbWFn
ZURhdGEtPmRhdGEoKS0+ZGF0YSgpKTsKKyAgICAvLyBGSVhNRTogUmVuZGVyaW5nIHRvIEdMX1JH
QiB0ZXh0dXJlcyB3aXRoIGEgSU9TdXJmYWNlIGJvdW5kIHRvIHRoZSB0ZXh0dXJlIGltYWdlIGxl
YXZlcworICAgIC8vIHRoZSBhbHBoYSBpbiB0aGUgSU9TdXJmYWNlIGluIGluY29ycmVjdCBzdGF0
ZS4gQWxzbyBBTkdMRSBnbDo6UmVhZFBpeGVscyB3aWxsIGluIHNvbWUKKyAgICAvLyBjYXNlcyBl
eHBvc2UgdGhlIG5vbi0yNTUgdmFsdWVzLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTU4MDQKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKCFjb250ZXh0QXR0cmlidXRlcygpLmFscGhhKQotICAgICAgICB3
aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBwaXhlbHMpOworICAgICAg
ICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhpbWFnZURhdGEtPndpZHRoKCksIGltYWdlRGF0
YS0+aGVpZ2h0KCksIGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCkpOwogI2VuZGlmCisgICAgcmV0
dXJuIGltYWdlRGF0YTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRh
dGVBdHRyaWJ1dGVzKCkKQEAgLTUxMCw2NCArNDc3LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2kKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKLXsKLSAgICBDaGVj
a2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IHJvd0J5dGVzID0gQ2hlY2tlZDxpbnQsIFJlY29yZE92
ZXJmbG93PihtX2N1cnJlbnRXaWR0aCkgKiA0OwotICAgIGlmIChyb3dCeXRlcy5oYXNPdmVyZmxv
d2VkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxv
dz4gdG90YWxCeXRlc0NoZWNrZWQgPSByb3dCeXRlcyAqIG1fY3VycmVudEhlaWdodDsKLSAgICBp
ZiAodG90YWxCeXRlc0NoZWNrZWQuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm47Ci0g
ICAgaW50IHRvdGFsQnl0ZXMgPSB0b3RhbEJ5dGVzQ2hlY2tlZC51bnNhZmVHZXQoKTsKLQotICAg
IGF1dG8gcGl4ZWxzID0gbWFrZVVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+KHRvdGFsQnl0ZXMp
OwotICAgIGlmICghcGl4ZWxzKQotICAgICAgICByZXR1cm47Ci0KLSAgICByZWFkUmVuZGVyaW5n
UmVzdWx0cyhwaXhlbHMuZ2V0KCksIHRvdGFsQnl0ZXMpOwotCi0gICAgaWYgKCFjb250ZXh0QXR0
cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkgewotICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkgewotICAgICAgICAgICAgLy8gUHJlbXVsdGlwbHkgYWxw
aGEuCi0gICAgICAgICAgICBwaXhlbHNbaSArIDBdID0gc3RkOjptaW4oMjU1LCBwaXhlbHNbaSAr
IDBdICogcGl4ZWxzW2kgKyAzXSAvIDI1NSk7Ci0gICAgICAgICAgICBwaXhlbHNbaSArIDFdID0g
c3RkOjptaW4oMjU1LCBwaXhlbHNbaSArIDFdICogcGl4ZWxzW2kgKyAzXSAvIDI1NSk7Ci0gICAg
ICAgICAgICBwaXhlbHNbaSArIDJdID0gc3RkOjptaW4oMjU1LCBwaXhlbHNbaSArIDJdICogcGl4
ZWxzW2kgKyAzXSAvIDI1NSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwYWludFRvQ2FudmFz
KHBpeGVscy5nZXQoKSwgSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSwg
aW1hZ2VCdWZmZXItPmJhY2tlbmRTaXplKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwotfQot
Ci1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9D
YW52YXMoSW1hZ2VCdWZmZXIqKQotewotICAgIC8vIE5vdCBuZWVkZWQgYXQgdGhlIG1vbWVudCwg
c28gcmV0dXJuIHRoYXQgbm90aGluZyB3YXMgZG9uZS4KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LVJlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpCi17Ci0gICAgLy8gUmVhZGluZyBwcmVtdWx0aXBsaWVkIGFs
cGhhIHdvdWxkIGludm9sdmUgdW5wcmVtdWx0aXBseWluZywgd2hpY2ggaXMKLSAgICAvLyBsb3Nz
eS4KLSAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNy
ZWF0ZShJbnRTaXplKG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpKTsKLSAgICB1bnNp
Z25lZCBjaGFyKiBwaXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwotICAgIENoZWNr
ZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4gdG90YWxCeXRlc0NoZWNrZWQgPSA0ICogQ2hlY2tlZDxp
bnQsIFJlY29yZE92ZXJmbG93PihtX2N1cnJlbnRXaWR0aCkgKiBDaGVja2VkPGludCwgUmVjb3Jk
T3ZlcmZsb3c+KG1fY3VycmVudEhlaWdodCk7Ci0gICAgaWYgKHRvdGFsQnl0ZXNDaGVja2VkLmhh
c092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIGltYWdlRGF0YTsKLSAgICBpbnQgdG90YWxC
eXRlcyA9IHRvdGFsQnl0ZXNDaGVja2VkLnVuc2FmZUdldCgpOwotCi0gICAgcmVhZFJlbmRlcmlu
Z1Jlc3VsdHMocGl4ZWxzLCB0b3RhbEJ5dGVzKTsKLQotICAgIC8vIENvbnZlcnQgdG8gUkdCQS4K
LSAgICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkKLSAgICAgICAgc3Rk
Ojpzd2FwKHBpeGVsc1tpXSwgcGl4ZWxzW2kgKyAyXSk7Ci0KLSAgICByZXR1cm4gaW1hZ2VEYXRh
OwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlVGV4dHVyZSgpCiB7
CiAgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKQpAQCAtNjIwLDY1ICs1MjksMTUgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZVRleHR1cmVJbXBsKCkKICNlbmRpZgogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNp
Z25lZCBjaGFyICpwaXhlbHMsIGludCBwaXhlbHNTaXplKQorUmVmUHRyPEltYWdlRGF0YT4gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKCkKIHsKLSAgICBpZiAo
cGl4ZWxzU2l6ZSA8IG1fY3VycmVudFdpZHRoICogbV9jdXJyZW50SGVpZ2h0ICogNCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0KLSAgICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1faXNGb3JXZWJHTDIg
PyBHcmFwaGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZFUiA6IEdyYXBoaWNzQ29udGV4dEdM
OjpGUkFNRUJVRkZFUjsKLQotICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKKyAgICBT
Y29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyBmYm9CaW5kaW5nKG1faXNGb3JXZWJH
TDIsIG1fc3RhdGUuYm91bmRSZWFkRkJPKTsKICAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5h
bnRpYWxpYXMpIHsKICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeSgpOwot
ICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX2Zibyk7Ci0g
ICAgICAgIG11c3RSZXN0b3JlRkJPID0gdHJ1ZTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAo
bV9zdGF0ZS5ib3VuZFJlYWRGQk8gIT0gbV9mYm8pIHsKLSAgICAgICAgICAgIG11c3RSZXN0b3Jl
RkJPID0gdHJ1ZTsKLSAgICAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJU
YXJnZXQsIG1fZmJvKTsKLSAgICAgICAgfQorICAgICAgICBmYm9CaW5kaW5nLm1hcmtCaW5kaW5n
Q2hhbmdlZCgpOwogICAgIH0KLQotICAgIEdMaW50IHBhY2tBbGlnbm1lbnQgPSA0OwotICAgIGJv
b2wgbXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gZmFsc2U7Ci0gICAgZ2w6OkdldEludGVnZXJ2
KEdMX1BBQ0tfQUxJR05NRU5ULCAmcGFja0FsaWdubWVudCk7Ci0gICAgaWYgKHBhY2tBbGlnbm1l
bnQgPiA0KSB7Ci0gICAgICAgIGdsOjpQaXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgNCk7
Ci0gICAgICAgIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IHRydWU7Ci0gICAgfQotICAgIEdM
aW50IHBhY2tSb3dMZW5ndGggPSAwOwotICAgIEdMaW50IHBhY2tTa2lwUm93cyA9IDA7Ci0gICAg
R0xpbnQgcGFja1NraXBQaXhlbHMgPSAwOwotICAgIFNjb3BlZFJlc2V0QnVmZmVyQmluZGluZyBz
Y29wZWRQaXhlbFBhY2tCdWZmZXJSZXNldChtX2lzRm9yV2ViR0wyLCBHTF9QSVhFTF9QQUNLX0JV
RkZFUl9CSU5ESU5HLCBHTF9QSVhFTF9QQUNLX0JVRkZFUik7Ci0gICAgaWYgKG1faXNGb3JXZWJH
TDIpIHsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX1BBQ0tfUk9XX0xFTkdUSCwgJnBhY2tS
b3dMZW5ndGgpOwotICAgICAgICBpZiAocGFja1Jvd0xlbmd0aCA+IDApCi0gICAgICAgICAgICBn
bDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19ST1dfTEVOR1RILCAwKTsKLSAgICAgICAgZ2w6OkdldElu
dGVnZXJ2KEdMX1BBQ0tfU0tJUF9ST1dTLCAmcGFja1NraXBSb3dzKTsKLSAgICAgICAgaWYgKHBh
Y2tTa2lwUm93cyA+IDApCi0gICAgICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19TS0lQ
X1JPV1MsIDApOwotICAgICAgICBnbDo6R2V0SW50ZWdlcnYoR0xfUEFDS19TS0lQX1BJWEVMUywg
JnBhY2tTa2lwUGl4ZWxzKTsKLSAgICAgICAgaWYgKHBhY2tTa2lwUGl4ZWxzID4gMCkKLSAgICAg
ICAgICAgIGdsOjpQaXhlbFN0b3JlaShHTF9QQUNLX1NLSVBfUElYRUxTLCAwKTsKLSAgICB9Ci0K
LSAgICByZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVjZXNzYXJ5KDAsIDAsIG1fY3VycmVu
dFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIHBpeGVscyk7Ci0KLSAgICBpZiAobXVzdFJlc3RvcmVQ
YWNrQWxpZ25tZW50KQotICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQs
IHBhY2tBbGlnbm1lbnQpOwotICAgIGlmIChwYWNrUm93TGVuZ3RoID4gMCkKLSAgICAgICAgZ2w6
OlBpeGVsU3RvcmVpKEdMX1BBQ0tfUk9XX0xFTkdUSCwgcGFja1Jvd0xlbmd0aCk7Ci0gICAgaWYg
KHBhY2tTa2lwUm93cyA+IDApCi0gICAgICAgIGdsOjpQaXhlbFN0b3JlaShHTF9QQUNLX1NLSVBf
Uk9XUywgcGFja1NraXBSb3dzKTsKLSAgICBpZiAocGFja1NraXBQaXhlbHMgPiAwKQotICAgICAg
ICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19TS0lQX1BJWEVMUywgcGFja1NraXBQaXhlbHMpOwot
Ci0gICAgaWYgKG11c3RSZXN0b3JlRkJPKQotICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZy
YW1lYnVmZmVyVGFyZ2V0LCBtX3N0YXRlLmJvdW5kUmVhZEZCTyk7CisgICAgZmJvQmluZGluZy5i
aW5kRnJhbWVidWZmZXIobV9mYm8pOworICAgIHJldHVybiByZWFkUGl4ZWxzRm9yUGFpbnRSZXN1
bHRzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQpAQCAtNzA0LDcgKzU2Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAgICAgVGVtcG9yYXJ5
QU5HTEVTZXR0aW5nIHNjb3BlZFNjaXNzb3IoR0xfU0NJU1NPUl9URVNULCBHTF9GQUxTRSk7CiAg
ICAgVGVtcG9yYXJ5QU5HTEVTZXR0aW5nIHNjb3BlZERpdGhlcihHTF9ESVRIRVIsIEdMX0ZBTFNF
KTsKLSAgICBTY29wZWRSZXNldEJ1ZmZlckJpbmRpbmcgc2NvcGVkUGl4ZWxVbnBhY2tCdWZmZXJS
ZXNldChtX2lzRm9yV2ViR0wyLCBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcsIEdMX1BJ
WEVMX1VOUEFDS19CVUZGRVIpOworICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcgc2NvcGVkUGl4ZWxV
bnBhY2tCdWZmZXJSZXNldChHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBtX2lzRm9yV2ViR0wy
KTsKIAogICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSByZXNoYXBlRkJPcyhJbnRTaXplKHdpZHRo
LCBoZWlnaHQpKTsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaAppbmRleCAyMTMyN2RkYWZj
M2RiNWZlZDJlODEzMjZiMWZhMjJjNTI4NjlmMTUxLi40OTQyYTk1NTQ1NmJmOTQ0ODQwMWMyZTI2
YjU3ZmRiODIxY2Q0YzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0
aWxpdGllcy5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNj
b3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2Nv
cGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nKTsKIHB1YmxpYzoKLSAgICBTY29wZWRSZXN0b3JlVGV4
dHVyZUJpbmRpbmcoR0NHTGVudW0gYmluZGluZ1BvaW50UXVlcnksIEdDR0xlbnVtIGJpbmRpbmdQ
b2ludCwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQorICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmlu
ZGluZyhHTGVudW0gYmluZGluZ1BvaW50UXVlcnksIEdMZW51bSBiaW5kaW5nUG9pbnQsIGJvb2wg
Y29uZGl0aW9uID0gdHJ1ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChiaW5kaW5nUG9pbnQgIT0g
c3RhdGljX2Nhc3Q8R0NHTGVudW0+KDB1KSk7CisgICAgICAgIEFTU0VSVChiaW5kaW5nUG9pbnQg
IT0gc3RhdGljX2Nhc3Q8R0xlbnVtPigwdSkpOwogICAgICAgICBpZiAoY29uZGl0aW9uKSB7CiAg
ICAgICAgICAgICBtX2JpbmRpbmdQb2ludCA9IGJpbmRpbmdQb2ludDsKICAgICAgICAgICAgIGds
OjpHZXRJbnRlZ2VydihiaW5kaW5nUG9pbnRRdWVyeSwgcmVpbnRlcnByZXRfY2FzdDxHTGludCo+
KCZtX2JpbmRpbmdWYWx1ZSkpOwpAQCAtNTYsNiArNTYsMTUzIEBAIHByaXZhdGU6CiAgICAgR0x1
aW50IG1fYmluZGluZ1ZhbHVlIHsgMHUgfTsKIH07CiAKKworY2xhc3MgU2NvcGVkQnVmZmVyQmlu
ZGluZyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkQnVmZmVyQmluZGluZyk7Citw
dWJsaWM6CisgICAgU2NvcGVkQnVmZmVyQmluZGluZyhHTGVudW0gYmluZGluZ1BvaW50LCBHTHVp
bnQgYmluZGluZ1ZhbHVlLCBib29sIGNvbmRpdGlvbiA9IHRydWUpCisgICAgeworICAgICAgICBp
ZiAoIWNvbmRpdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ2w6OkdldEludGVn
ZXJ2KHF1ZXJ5KGJpbmRpbmdQb2ludCksIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQqPigmbV9iaW5k
aW5nVmFsdWUpKTsKKyAgICAgICAgaWYgKGJpbmRpbmdWYWx1ZSA9PSBtX2JpbmRpbmdWYWx1ZSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9iaW5kaW5nUG9pbnQgPSBiaW5kaW5nUG9p
bnQ7CisgICAgICAgIGdsOjpCaW5kQnVmZmVyKG1fYmluZGluZ1BvaW50LCBiaW5kaW5nVmFsdWUp
OworICAgIH0KKworICAgIH5TY29wZWRCdWZmZXJCaW5kaW5nKCkKKyAgICB7CisgICAgICAgIGlm
IChtX2JpbmRpbmdQb2ludCkKKyAgICAgICAgICAgIGdsOjpCaW5kQnVmZmVyKG1fYmluZGluZ1Bv
aW50LCBtX2JpbmRpbmdWYWx1ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBjb25z
dGV4cHIgR0xlbnVtIHF1ZXJ5KEdMZW51bSBiaW5kaW5nUG9pbnQpCisgICAgeworICAgICAgICBp
ZiAoYmluZGluZ1BvaW50ID09IEdMX1BJWEVMX1BBQ0tfQlVGRkVSKQorICAgICAgICAgICAgcmV0
dXJuIEdMX1BJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkc7CisgICAgICAgIEFTU0VSVChiaW5kaW5n
UG9pbnQgPT0gR0xfUElYRUxfVU5QQUNLX0JVRkZFUik7CisgICAgICAgIHJldHVybiBHTF9QSVhF
TF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkc7CisgICAgfQorICAgIEdMaW50IG1fYmluZGluZ1BvaW50
IHsgMCB9OworICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07Cit9OworY2xhc3MgU2Nv
cGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKTsKK3B1YmxpYzoKKyAgICBT
Y29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyhib29sIGlzRm9yV2ViR0wyLCBHTHVp
bnQgcmVzdG9yZVZhbHVlKQorICAgICAgICA6IG1fZnJhbWVidWZmZXJUYXJnZXQoaXNGb3JXZWJH
TDIgPyBHTF9SRUFEX0ZSQU1FQlVGRkVSIDogR0xfRlJBTUVCVUZGRVIpCisgICAgICAgICwgbV9i
aW5kaW5nVmFsdWUocmVzdG9yZVZhbHVlKQorICAgIHsKKyAgICB9CisgICAgU2NvcGVkUmVzdG9y
ZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoYm9vbCBpc0ZvcldlYkdMMiwgR0x1aW50IHJlc3RvcmVW
YWx1ZSwgR0x1aW50IHZhbHVlKQorICAgICAgICA6IG1fZnJhbWVidWZmZXJUYXJnZXQoaXNGb3JX
ZWJHTDIgPyBHTF9SRUFEX0ZSQU1FQlVGRkVSIDogR0xfRlJBTUVCVUZGRVIpCisgICAgICAgICwg
bV9iaW5kaW5nVmFsdWUocmVzdG9yZVZhbHVlKQorICAgIHsKKyAgICAgICAgYmluZEZyYW1lYnVm
ZmVyKHZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBtYXJrQmluZGluZ0NoYW5nZWQoKQorICAgIHsK
KyAgICAgICAgbV9iaW5kaW5nQ2hhbmdlZCA9IHRydWU7CisgICAgfQorICAgIHZvaWQgYmluZEZy
YW1lYnVmZmVyKEdMdWludCBiaW5kaW5nVmFsdWUpCisgICAgeworICAgICAgICBpZiAoIW1fYmlu
ZGluZ0NoYW5nZWQgJiYgbV9iaW5kaW5nVmFsdWUgPT0gYmluZGluZ1ZhbHVlKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXJUYXJn
ZXQsIGJpbmRpbmdWYWx1ZSk7CisgICAgICAgIG1fYmluZGluZ0NoYW5nZWQgPSBtX2JpbmRpbmdW
YWx1ZSAhPSBiaW5kaW5nVmFsdWU7CisgICAgfQorICAgIH5TY29wZWRSZXN0b3JlUmVhZEZyYW1l
YnVmZmVyQmluZGluZygpCisgICAgeworICAgICAgICBpZiAobV9iaW5kaW5nQ2hhbmdlZCkKKyAg
ICAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlclRhcmdldCwgbV9iaW5k
aW5nVmFsdWUpOworICAgIH0KK3ByaXZhdGU6CisgICAgY29uc3QgR0xlbnVtIG1fZnJhbWVidWZm
ZXJUYXJnZXQ7CisgICAgR0x1aW50IG1fYmluZGluZ1ZhbHVlIHsgMHUgfTsKKyAgICBib29sIG1f
YmluZGluZ0NoYW5nZWQgeyBmYWxzZSB9OworfTsKKworY2xhc3MgU2NvcGVkUGl4ZWxTdG9yYWdl
TW9kZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSk7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZShHTGVudW0gbmFt
ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQorICAgICAgICA6IG1fbmFtZShjb25kaXRpb24gPyBu
YW1lIDogMCkKKyAgICB7CisgICAgICAgIGlmIChtX25hbWUpCisgICAgICAgICAgICBnbDo6R2V0
SW50ZWdlcnYobV9uYW1lLCAmbV9vcmlnaW5hbFZhbHVlKTsKKyAgICB9CisgICAgU2NvcGVkUGl4
ZWxTdG9yYWdlTW9kZShHTGVudW0gbmFtZSwgR0xpbnQgdmFsdWUsIGJvb2wgY29uZGl0aW9uID0g
dHJ1ZSkKKyAgICAgICAgOiBtX25hbWUoY29uZGl0aW9uID8gbmFtZSA6IDApCisgICAgeworICAg
ICAgICBpZiAobV9uYW1lKSB7CisgICAgICAgICAgICBnbDo6R2V0SW50ZWdlcnYobV9uYW1lLCAm
bV9vcmlnaW5hbFZhbHVlKTsKKyAgICAgICAgICAgIHBpeGVsU3RvcmUodmFsdWUpOworICAgICAg
ICB9CisgICAgfQorICAgIH5TY29wZWRQaXhlbFN0b3JhZ2VNb2RlKCkKKyAgICB7CisgICAgICAg
IGlmIChtX25hbWUgJiYgbV92YWx1ZUNoYW5nZWQpCisgICAgICAgICAgICBnbDo6UGl4ZWxTdG9y
ZWkobV9uYW1lLCBtX29yaWdpbmFsVmFsdWUpOworICAgIH0KKyAgICB2b2lkIHBpeGVsU3RvcmUo
R0xpbnQgdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobV9uYW1lKTsKKyAgICAgICAgaWYg
KCFtX3ZhbHVlQ2hhbmdlZCAmJiBtX29yaWdpbmFsVmFsdWUgPT0gdmFsdWUpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGdsOjpQaXhlbFN0b3JlaShtX25hbWUsIHZhbHVlKTsKKyAgICAg
ICAgbV92YWx1ZUNoYW5nZWQgPSBtX29yaWdpbmFsVmFsdWUgIT0gdmFsdWU7CisgICAgfQorICAg
IG9wZXJhdG9yIEdMaW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX25hbWUgJiYg
IW1fdmFsdWVDaGFuZ2VkKTsKKyAgICAgICAgcmV0dXJuIG1fb3JpZ2luYWxWYWx1ZTsKKyAgICB9
Citwcml2YXRlOgorICAgIGNvbnN0IEdMZW51bSBtX25hbWU7CisgICAgYm9vbCBtX3ZhbHVlQ2hh
bmdlZCB7IGZhbHNlIH07CisgICAgR0xpbnQgbV9vcmlnaW5hbFZhbHVlIHsgMCB9OworfTsKKwor
Y2xhc3MgU2NvcGVkVGV4dHVyZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkVGV4
dHVyZSk7CitwdWJsaWM6CisgICAgU2NvcGVkVGV4dHVyZSgpCisgICAgeworICAgICAgICBnbDo6
R2VuVGV4dHVyZXMoMSwgJm1fb2JqZWN0KTsKKyAgICB9CisgICAgflNjb3BlZFRleHR1cmUoKQor
ICAgIHsKKyAgICAgICAgZ2w6OkRlbGV0ZVRleHR1cmVzKDEsICZtX29iamVjdCk7CisgICAgfQor
ICAgIG9wZXJhdG9yIEdMdWludCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmpl
Y3Q7CisgICAgfQorcHJpdmF0ZToKKyAgICBHTHVpbnQgbV9vYmplY3QgeyAwdSB9OworfTsKKwor
Y2xhc3MgU2NvcGVkRnJhbWVidWZmZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3Bl
ZEZyYW1lYnVmZmVyKTsKK3B1YmxpYzoKKyAgICBTY29wZWRGcmFtZWJ1ZmZlcigpCisgICAgewor
ICAgICAgICBnbDo6R2VuRnJhbWVidWZmZXJzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIH5T
Y29wZWRGcmFtZWJ1ZmZlcigpCisgICAgeworICAgICAgICBnbDo6RGVsZXRlRnJhbWVidWZmZXJz
KDEsICZtX29iamVjdCk7CisgICAgfQorICAgIG9wZXJhdG9yIEdMdWludCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9vYmplY3Q7CisgICAgfQorcHJpdmF0ZToKKyAgICBHTHVpbnQg
bV9vYmplY3QgeyAwIH07Cit9OworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRH
TENhaXJvLmNwcAppbmRleCA0M2NkYWM4YjAxY2RhMGRmMDYyMTg2ZjE1MDAzZWEzMDhmYTIwY2Q2
Li4xZmUyNDM1MTc0N2IxZjNiMWQ5MGFkMTM5OGViNGIxYjNkY2Q4NWQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRHTENh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRHTENhaXJvLmNwcApAQCAtMTA1LDE1ICsxMDUsMzAgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywg
Y29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWlu
dFRvQ2FudmFzKFJlZjxJbWFnZURhdGE+JiYgaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBjYW52
YXNTaXplLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKCFpbWFnZVBpeGVs
cyB8fCBpbWFnZVNpemUuaXNFbXB0eSgpIHx8IGNhbnZhc1NpemUuaXNFbXB0eSgpKQorICAgIEFT
U0VSVCghaW1hZ2VEYXRhLT5zaXplKCkuaXNFbXB0eSgpKTsKKyAgICBpZiAoY2FudmFzU2l6ZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBsYXRmb3JtQ29udGV4dENhaXJvKiBw
bGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmICghcGxh
dGZvcm1Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBDb252ZXJ0IFJHQkEgdG8g
QkdSQS4gQkdSQSBpcyBDQUlST19GT1JNQVRfQVJHQjMyIG9uIGxpdHRsZS1lbmRpYW4gYXJjaGl0
ZWN0dXJlcy4KKyAgICBzaXplX3QgdG90YWxCeXRlcyA9IGltYWdlRGF0YS5kYXRhKCktPmJ5dGVM
ZW5ndGgoKTsKKyAgICB1aW50OF90KiBwaXhlbHMgPSBpbWFnZURhdGEuZGF0YSgpLT5kYXRhKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCisgICAgICAg
IHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOworCisgICAgaWYgKCFjb250ZXh0
QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkgeworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkgeworICAgICAgICAgICAgcGl4ZWxzW2kgKyAw
XSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAwXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwor
ICAgICAgICAgICAgcGl4ZWxzW2kgKyAxXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAxXSAq
IHBpeGVsc1tpICsgM10gLyAyNTUpOworICAgICAgICAgICAgcGl4ZWxzW2kgKyAyXSA9IHN0ZDo6
bWluKDI1NSwgcGl4ZWxzW2kgKyAyXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOworICAgICAgICB9
CisgICAgfQorCiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQtPmNyKCk7CiAgICAg
cGxhdGZvcm1Db250ZXh0LT5zYXZlKCk7CiAKQEAgLTEyMiw3ICsxMzcsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlt
YWdlUGl4ZWxzLCBjbwogICAgIGNhaXJvX3BhaW50KGNyKTsKIAogICAgIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IGltYWdlU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3Jl
YXRlX2Zvcl9kYXRhKAotICAgICAgICBjb25zdF9jYXN0PHVuc2lnbmVkIGNoYXIqPihpbWFnZVBp
eGVscyksIENBSVJPX0ZPUk1BVF9BUkdCMzIsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUu
aGVpZ2h0KCksIGltYWdlU2l6ZS53aWR0aCgpICogNCkpOworICAgICAgICBpbWFnZURhdGEtPmRh
dGEoKS0+ZGF0YSgpLCBDQUlST19GT1JNQVRfQVJHQjMyLCBpbWFnZURhdGEtPndpZHRoKCksIGlt
YWdlRGF0YS0+aGVpZ2h0KCksIGltYWdlRGF0YS0+d2lkdGgoKSAqIDQpKTsKIAogICAgIC8vIE9w
ZW5HTCBrZWVwcyB0aGUgcGl4ZWxzIHN0b3JlZCBib3R0b20gdXAsIHNvIHdlIG5lZWQgdG8gZmxp
cCB0aGUgaW1hZ2UgaGVyZS4KICAgICBjYWlyb190cmFuc2xhdGUoY3IsIDAsIGltYWdlU2l6ZS5o
ZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRHTENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCmluZGV4IDY4ZDVhYzgzZDkxMmU4NmVmZWJm
ZjQyMzlkZmEwNjQ2NjMwMGYxYjQuLmUyZTUxZmQwYTA2MGRhZDIxYjJkMjFhNTI4NWQ0MGQ0NzNi
YzUyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dEdMQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCkBAIC01MDUsMzYgKzUwNSwzNSBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBy
ZWxlYXNlSW1hZ2VEYXRhKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpCitzdGF0aWMg
dm9pZCByZWxlYXNlSW1hZ2VEYXRhKHZvaWQqIGltYWdlRGF0YSwgY29uc3Qgdm9pZCosIHNpemVf
dCkKIHsKLSAgICBmYXN0RnJlZShjb25zdF9jYXN0PHZvaWQqPihkYXRhKSk7CisgICAgcmVpbnRl
cnByZXRfY2FzdDxJbWFnZURhdGEqPihpbWFnZURhdGEpLT5kZXJlZigpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGltYWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNh
bnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBhaW50VG9DYW52YXMoUmVmPEltYWdlRGF0YT4mJiBpbWFnZURhdGEsIGNvbnN0
IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBp
ZiAoIWltYWdlUGl4ZWxzIHx8IGltYWdlU2l6ZS5pc0VtcHR5KCkgfHwgY2FudmFzU2l6ZS5pc0Vt
cHR5KCkpCisgICAgQVNTRVJUKCFpbWFnZURhdGEtPnNpemUoKS5pc0VtcHR5KCkpOworICAgIGlm
IChjYW52YXNTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOworICAgIGF1dG8gYXR0cnMg
PSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIC8vIElucHV0IGlzIEdMX1JHQkEgPT0ga0NHQml0
bWFwQnl0ZU9yZGVyMzJCaWcgfCBrQ0dJbWFnZUFscGhhKkxhc3QuCisgICAgLy8gR0xfQkdSQSB3
b3VsZCBiZSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGEqRmlyc3Qu
CisgICAgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZzsK
KyAgICBpZiAoIWF0dHJzLmFscGhhKQorICAgICAgICBiaXRtYXBJbmZvIHw9IGtDR0ltYWdlQWxw
aGFOb25lU2tpcExhc3Q7CisgICAgZWxzZSBpZiAoYXR0cnMucHJlbXVsdGlwbGllZEFscGhhKQor
ICAgICAgICBiaXRtYXBJbmZvIHw9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdDsKKyAg
ICBlbHNlCisgICAgICAgIGJpdG1hcEluZm8gfD0ga0NHSW1hZ2VBbHBoYUxhc3Q7CisKKyAgICBh
dXRvIGltYWdlU2l6ZSA9IGltYWdlRGF0YS0+c2l6ZSgpOwogICAgIGludCByb3dCeXRlcyA9IGlt
YWdlU2l6ZS53aWR0aCgpICogNDsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlcjsKLQotICAgIGlmIChjb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsK
LSAgICAgICAgdW5zaWduZWQgY2hhciogY29waWVkUGl4ZWxzOwotCi0gICAgICAgIGlmICghdHJ5
RmFzdENhbGxvYyhpbWFnZVNpemUuaGVpZ2h0KCksIHJvd0J5dGVzKS5nZXRWYWx1ZShjb3BpZWRQ
aXhlbHMpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1lbWNweShjb3BpZWRQaXhl
bHMsIGltYWdlUGl4ZWxzLCByb3dCeXRlcyAqIGltYWdlU2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICAg
ICAgc2l6ZV90IGRhdGFTaXplID0gcm93Qnl0ZXMgKiBpbWFnZVNpemUuaGVpZ2h0KCk7Ci0gICAg
ICAgIHZlcmlmeUltYWdlQnVmZmVySXNCaWdFbm91Z2goY29waWVkUGl4ZWxzLCBkYXRhU2l6ZSk7
Ci0gICAgICAgIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRo
RGF0YSgwLCBjb3BpZWRQaXhlbHMsIGRhdGFTaXplLCByZWxlYXNlSW1hZ2VEYXRhKSk7Ci0gICAg
fSBlbHNlIHsKICAgICAgICAgc2l6ZV90IGRhdGFTaXplID0gcm93Qnl0ZXMgKiBpbWFnZVNpemUu
aGVpZ2h0KCk7CisgICAgdWludDhfdCogaW1hZ2VQaXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+
ZGF0YSgpOwogICAgICAgICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGltYWdlUGl4ZWxz
LCBkYXRhU2l6ZSk7Ci0gICAgICAgIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlk
ZXJDcmVhdGVXaXRoRGF0YSgwLCBpbWFnZVBpeGVscywgZGF0YVNpemUsIDApKTsKLSAgICB9Cisg
ICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoJmltYWdlRGF0YS5sZWFrUmVmKCksIGltYWdlUGl4
ZWxzLCBkYXRhU2l6ZSwgcmVsZWFzZUltYWdlRGF0YSkpOwogCi0gICAgYXV0byBpbWFnZSA9IE5h
dGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCByb3dCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYo
KSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMy
SG9zdCwKKyAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1h
Z2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIHJv
d0J5dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBiaXRtYXBJbmZvLAogICAgICAgICBkYXRhUHJv
dmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkpOwogCiAg
ICAgLy8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRoZSBjYW52YXMncyBjb250ZW50IHRvIGJlIHJl
c2l6ZWQgb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5oCmluZGV4IGQ1ZTQxNjhlMzFiZWI4ZjJiYjc3NGNmN2RlMWU5NWY4ZDBiOTk2MTkuLjRk
ZWQ4ZTVmOTQ5ODI2NzE3NDZjOWU3ZjUzM2FhYzZiMThhYzZiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaApAQCAtNjMsNiArNjMsMTAg
QEAgcHVibGljOgogICAgIC8vIFByZXBhcmVzIHRoZSB0YXJnZXQgZm9yIGRpc3BsYXkgd2l0aCBh
IGNvbnRlbnRzIGJ1ZmZlci4KICAgICB2aXJ0dWFsIHZvaWQgcHJlc2VudChCdWZmZXIpID0gMDsK
IAorICAgIC8vIFJldHVybnMgdGhlIG1vc3QgcmVjZW50IHByZXNlbnRlZCBkaXNwbGF5IGJ1ZmZl
ci4gVGhlIHJlZmVyZW5jZSBpcyB2YWxpZCB1bnRpbAorICAgIC8vIG5leHQgcHJlc2VudCwgcmVj
eWNsZUJ1ZmZlciBvciBkZXRhY2hDbGllbnQgY2FsbC4KKyAgICB2aXJ0dWFsIGNvbnN0IEJ1ZmZl
ciYgZGlzcGxheUJ1ZmZlcigpIGNvbnN0ID0gMDsKKwogICAgIC8vIERldGFjaGVzIHRoZSBjbGll
bnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRs
ZS4KICAgICAvLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJlZW4gc3VibWl0dGVkLCBy
ZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUgY2FsbGluZwogICAgIC8v
IHRoaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCA4
OTFlOTc4M2UyNWZkNDc4NGUzNjg2M2IzZTZlNjgyYzI5NWNiNDI0Li5kYmU5YzA1ZDMyOGI2NWMy
NzVlYzk1MTIwNDYwMjRmM2RhNDBjODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0KQEAgLTczMCw2ICs3MzAsMzcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsK
IH0KIAorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21w
b3NpdGVkUmVzdWx0cygpCit7CisgICAgYXV0byYgZGlzcGxheUJ1ZmZlciA9IG1fc3dhcENoYWlu
LT5kaXNwbGF5QnVmZmVyKCk7CisgICAgaWYgKCFkaXNwbGF5QnVmZmVyLnN1cmZhY2UgfHwgIWRp
c3BsYXlCdWZmZXIuaGFuZGxlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoZGlz
cGxheUJ1ZmZlci5zdXJmYWNlLT5zaXplKCkgIT0gZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gTm90ZTogV2UgYXJlIHVzaW5nIEdM
IHRvIHJlYWQgdGhlIElPU3VyZmFjZS4gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywgdGhlcmUgYXJl
IG5vIGNvbnZpbmllbnQKKyAgICAvLyBmdW5jdGlvbnMgdG8gY29udmVydCB0aGUgSU9TdXJmYWNl
IHBpeGVsIGRhdGEgdG8gSW1hZ2VEYXRhLiBUaGUgaW1hZ2UgZGF0YSBlbmRzIHVwIGJlaW5nCisg
ICAgLy8gZHJhd24gdG8gYSBJbWFnZUJ1ZmZlciwgYnV0IGF0IHRoZSB0aW1lIHRoZXJlJ3Mgbm8g
ZnVuY3Rpb25zIHRvIGNvbnN0cnVjdCBhIE5hdGl2ZUltYWdlCisgICAgLy8gb3V0IG9mIGFuIElP
U3VyZmFjZSBpbiBzdWNoIGEgd2F5IHRoYXQgZHJhd2luZyB0aGUgTmF0aXZlSW1hZ2Ugd291bGQg
YmUgZ3VhcmFudGVlZCBsZWF2ZQorICAgIC8vIHRoZSBJT1N1cmZhY2UgYmUgdW5yZWZlbmNlZCBh
ZnRlciB0aGUgZHJhdyBjYWxsIGZpbmlzaGVzLgorICAgIFNjb3BlZFRleHR1cmUgdGV4dHVyZTsK
KyAgICBHQ0dMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQo
KTsKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJhd2lu
Z0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeSgpLCB0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0
ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7CisgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVU
YXJnZXQsIHRleHR1cmUpOworICAgIGlmICghRUdMX0JpbmRUZXhJbWFnZShtX2Rpc3BsYXlPYmos
IGRpc3BsYXlCdWZmZXIuaGFuZGxlLCBFR0xfQkFDS19CVUZGRVIpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgU2NvcGVkRnJhbWVidWZmZXIgZmJvOworICAg
IFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIGZib0JpbmRpbmcobV9pc0Zvcldl
YkdMMiwgbV9zdGF0ZS5ib3VuZFJlYWRGQk8sIGZibyk7CisgICAgZ2w6OkZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZVRhcmdl
dCwgdGV4dHVyZSwgMCk7CisgICAgQVNTRVJUKGdsOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdM
X0ZSQU1FQlVGRkVSKSA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSk7CisKKyAgICBhdXRvIHJl
c3VsdCA9IHJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKTsKKworICAgIEVHTEJvb2xlYW4gcmVs
ZWFzZU9rID0gRUdMX1JlbGVhc2VUZXhJbWFnZShtX2Rpc3BsYXlPYmosIGRpc3BsYXlCdWZmZXIu
aGFuZGxlLCBFR0xfQkFDS19CVUZGRVIpOworICAgIEFTU0VSVF9VTlVTRUQocmVsZWFzZU9rLCBy
ZWxlYXNlT2spOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJHTExheWVyLm1tCmluZGV4IDM4NTk3ZTRhOGY2MzNhNWVlNWRiNzQ5MzMwMjJkYzIzN2Zl
N2U0N2MuLjAzMTM4ZWYxNDMwOTg4ZDcxNWE5OGI3Nzc3ZDNhNTM4OGEzMjk5YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5t
bQpAQCAtMzksNiArMzksMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMTGF5ZXJTd2Fw
Q2hhaW4oV2ViR0xMYXllciogbGF5ZXIpICA6IG1fbGF5ZXIobGF5ZXIpIHsgfTsKICAgICB+V2Vi
R0xMYXllclN3YXBDaGFpbigpIG92ZXJyaWRlID0gZGVmYXVsdDsKICAgICB2b2lkIHByZXNlbnQo
QnVmZmVyKSBvdmVycmlkZTsKKyAgICBjb25zdCBCdWZmZXImIGRpc3BsYXlCdWZmZXIoKSBjb25z
dCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlcjsKKyAgICB9
CiAgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYg
KG1fc3BhcmVCdWZmZXIuc3VyZmFjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5jcHAKaW5kZXggMDY5ZDI4NmNlNGViYTQ4MjllMGM3MzgzZTJmM2U4YmVlNzJmZTI5Mi4uMmZl
Yjc0YzJmYWQxYjJhNjJmZjYwYzYxMjVkMWI4ZmNjZjVkYjU2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaWYgRU5BQkxFKFdFQkdM
KQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
KyNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTk0LDYgKzE5Niw1MCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB9CiAjZW5kaWYKIAordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGltYWdlRGF0YSA9IHJlYWRSZW5kZXJp
bmdSZXN1bHRzKCk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBw
YWludFRvQ2FudmFzKGltYWdlRGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBpbWFnZUJ1ZmZlci0+YmFj
a2VuZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciogaW1hZ2VCdWZmZXIpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGlmIChnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gaW1hZ2VEYXRhID0gcmVhZENvbXBvc2l0ZWRS
ZXN1bHRzKCk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBwYWlu
dFRvQ2FudmFzKGltYWdlRGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBpbWFnZUJ1ZmZlci0+YmFja2Vu
ZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0
YSgpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgaWYgKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxw
aGEgd291bGQgaW52b2x2ZSB1bnByZW11bHRpcGx5aW5nLCB3aGljaCBpcworICAgIC8vIGxvc3N5
LgorICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7Cit9
CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGY1MjRkZTky
ZGNkOWE1OThiMGZiZWY4ZDMzYjljNDQwOWI4Y2QxYjAuLjc4MDk2ZTJlYjA4NzZmOTUyN2M4NTQ3
OTBkMWFmYTczNTEyMGM4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBA
IC00MjgsOSArNDI4LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCiAgICAgLy8gSGVscGVy
IG1ldGhvZHMuCi0KLSAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciog
aW1hZ2VQaXhlbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50U2l6ZSYgY2Fu
dmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7Ci0KICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdl
ZCgpIGZpbmFsOwogICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOwogICAgIGJv
b2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CkBAIC00NTAsNyArNDQ3LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciopIGZpbmFsOwogICAgIFJlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
SW1hZ2VEYXRhKCkgZmluYWw7Ci0gICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52
YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b0NhbnZhcyhJbWFnZUJ1ZmZlciopIGZpbmFsOwogCiAjaWYgVVNFKE9QRU5HTCkgJiYgRU5BQkxF
KFdFQkdMMikKICAgICB2b2lkIHByaW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCk7CkBAIC01
MzAsMTAgKzUyNywxMSBAQCBwcml2YXRlOgogICAgIC8vIERpZCB0aGUgbW9zdCByZWNlbnQgZHJh
d2luZyBvcGVyYXRpb24gbGVhdmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0YXRlPwogICAg
IHZvaWQgY2hlY2tHUFVTdGF0dXMoKTsKIAotICAgIC8vIFJlYWQgcmVuZGVyaW5nIHJlc3VsdHMg
aW50byBhIHBpeGVsIGFycmF5IHdpdGggdGhlIHNhbWUgZm9ybWF0IGFzIHRoZQotICAgIC8vIGJh
Y2tidWZmZXIuCi0gICAgdm9pZCByZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25lZCBjaGFyKiBw
aXhlbHMsIGludCBwaXhlbHNTaXplKTsKLSAgICB2b2lkIHJlYWRQaXhlbHNBbmRDb252ZXJ0VG9C
R1JBSWZOZWNlc3NhcnkoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2ln
bmVkIGNoYXIqIHBpeGVscyk7CisKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiByZWFkUmVuZGVyaW5n
UmVzdWx0cygpOworICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlYWRDb21wb3NpdGVkUmVzdWx0cygp
OworICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKTsKKyAg
ICB2b2lkIHBhaW50VG9DYW52YXMoUmVmPEltYWdlRGF0YT4mJiwgY29uc3QgSW50U2l6ZSYgY2Fu
dmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBib29sIHJlc2hhcGVGQk9zKGNvbnN0
IEludFNpemUmKTsKICAgICB2b2lkIHByZXBhcmVUZXh0dXJlSW1wbCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCBmNDE0ZjljOTYzNGQ2MWI4ZDkw
MTVkNWE2YWZhNTI3Y2MzNDJiZThmLi40NTBmYTAyYjQ5YmFhYWI4MWU4ZGI4ZmE5ZGZlNDllZTlk
ZWYzZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2lmIEVOQUJMRShXRUJHTCkgJiYgVVNFKE9QRU5HTCkKIAogI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgpAQCAtNjEsMzcgKzYyLDI2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vz
c2FyeShpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciog
cGl4ZWxzKQorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQ
aXhlbHNGb3JQYWludFJlc3VsdHMoKQogewotICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmli
dXRlcygpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gY3JlYXRlSW1hZ2VEYXRhRm9yUmVhZFJlc3Vs
dHMoKTsKKyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBHTGludCBwYWNrQWxpZ25tZW50ID0gNDsKKyAgICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdu
bWVudCA9IGZhbHNlOworICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9QQUNLX0FMSUdOTUVOVCwgJnBh
Y2tBbGlnbm1lbnQpOworICAgIGlmIChwYWNrQWxpZ25tZW50ID4gNCkgeworICAgICAgICA6Omds
UGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIDQpOworICAgICAgICBtdXN0UmVzdG9yZVBh
Y2tBbGlnbm1lbnQgPSB0cnVlOworICAgIH0KIAotICAgIC8vIE5WSURJQSBkcml2ZXJzIGhhdmUg
YSBidWcgd2hlcmUgY2FsbGluZyByZWFkUGl4ZWxzIGluIEJHUkEgY2FuIHJldHVybiB0aGUgd3Jv
bmcgdmFsdWVzIGZvciB0aGUgYWxwaGEgY2hhbm5lbCB3aGVuIHRoZSBhbHBoYSBpcyBvZmYgZm9y
IHRoZSBjb250ZXh0LgotICAgIGlmICghYXR0cnMuYWxwaGEgJiYgZ2V0RXh0ZW5zaW9ucygpLmlz
TlZJRElBKCkpIHsKLSAgICAgICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKLSNpZiBVU0UoQUNDRUxFUkFURSkK
LSAgICAgICAgdkltYWdlX0J1ZmZlciBzcmM7Ci0gICAgICAgIHNyYy5oZWlnaHQgPSBoZWlnaHQ7
Ci0gICAgICAgIHNyYy53aWR0aCA9IHdpZHRoOwotICAgICAgICBzcmMucm93Qnl0ZXMgPSB3aWR0
aCAqIDQ7Ci0gICAgICAgIHNyYy5kYXRhID0gcGl4ZWxzOwotCi0gICAgICAgIHZJbWFnZV9CdWZm
ZXIgZGVzdDsKLSAgICAgICAgZGVzdC5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgICAgIGRlc3Qud2lk
dGggPSB3aWR0aDsKLSAgICAgICAgZGVzdC5yb3dCeXRlcyA9IHdpZHRoICogNDsKLSAgICAgICAg
ZGVzdC5kYXRhID0gcGl4ZWxzOwotCi0gICAgICAgIC8vIFN3YXAgcGl4ZWwgY2hhbm5lbHMgZnJv
bSBSR0JBIHRvIEJHUkEuCi0gICAgICAgIGNvbnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAxLCAw
LCAzIH07Ci0gICAgICAgIHZJbWFnZVBlcm11dGVDaGFubmVsc19BUkdCODg4OCgmc3JjLCAmZGVz
dCwgbWFwLCBrdkltYWdlTm9GbGFncyk7Ci0jZWxzZQotICAgICAgICBpbnQgdG90YWxCeXRlcyA9
IHdpZHRoICogaGVpZ2h0ICogNDsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5
dGVzOyBpICs9IDQpCi0gICAgICAgICAgICBzdGQ6OnN3YXAocGl4ZWxzW2ldLCBwaXhlbHNbaSAr
IDJdKTsKLSNlbmRpZgotICAgIH0gZWxzZQotICAgICAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3
aWR0aCwgaGVpZ2h0LCBHTF9CR1JBLCBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVYsIHBpeGVs
cyk7CisgICAgOjpnbFJlYWRQaXhlbHMoMCwgMCwgaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFnZURh
dGEtPmhlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBpbWFnZURhdGEtPmRhdGEo
KS0+ZGF0YSgpKTsKKworICAgIGlmIChtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQpCisgICAgICAg
IDo6Z2xQaXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgcGFja0FsaWdubWVudCk7CiAKKyAg
ICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
YWxpZGF0ZUF0dHJpYnV0ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvbW1vbi5jcHAKaW5kZXggMmRlMTg1YTY2ODEzMGEzNjJjMTI3NjdmMzgzZjU3ZjEzNDlkZDQ4
MS4uYjI1ZTFkYTlhMTZiYTJlMTM0MjU2OGFiMGJmZDRlMmZmODc0NjZjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0xMzcsNjQgKzEzNyw2
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNv
bnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciog
aW1hZ2VCdWZmZXIpCi17Ci0gICAgQ2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PiByb3dCeXRl
cyA9IENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4obV9jdXJyZW50V2lkdGgpICogNDsKLSAg
ICBpZiAocm93Qnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBD
aGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IHRvdGFsQnl0ZXNDaGVja2VkID0gcm93Qnl0ZXMg
KiBtX2N1cnJlbnRIZWlnaHQ7Ci0gICAgaWYgKHRvdGFsQnl0ZXNDaGVja2VkLmhhc092ZXJmbG93
ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGludCB0b3RhbEJ5dGVzID0gdG90YWxCeXRlc0No
ZWNrZWQudW5zYWZlR2V0KCk7Ci0KLSAgICBhdXRvIHBpeGVscyA9IG1ha2VVbmlxdWVBcnJheTx1
bnNpZ25lZCBjaGFyPih0b3RhbEJ5dGVzKTsKLSAgICBpZiAoIXBpeGVscykKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgcmVhZFJlbmRlcmluZ1Jlc3VsdHMocGl4ZWxzLmdldCgpLCB0b3RhbEJ5dGVz
KTsKLQotICAgIGlmICghY29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpIHsK
LSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpIHsKLSAgICAg
ICAgICAgIC8vIFByZW11bHRpcGx5IGFscGhhLgotICAgICAgICAgICAgcGl4ZWxzW2kgKyAwXSA9
IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAwXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAg
ICAgICAgICAgcGl4ZWxzW2kgKyAxXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAxXSAqIHBp
eGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICAgICAgcGl4ZWxzW2kgKyAyXSA9IHN0ZDo6bWlu
KDI1NSwgcGl4ZWxzW2kgKyAyXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgcGFpbnRUb0NhbnZhcyhwaXhlbHMuZ2V0KCksIEludFNpemUobV9jdXJyZW50
V2lkdGgsIG1fY3VycmVudEhlaWdodCksIGltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKLX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKLXsKLSAgICAvLyBO
b3QgbmVlZGVkIGF0IHRoZSBtb21lbnQsIHNvIHJldHVybiB0aGF0IG5vdGhpbmcgd2FzIGRvbmUu
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1SZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQotewotICAgIC8v
IFJlYWRpbmcgcHJlbXVsdGlwbGllZCBhbHBoYSB3b3VsZCBpbnZvbHZlIHVucHJlbXVsdGlwbHlp
bmcsIHdoaWNoIGlzCi0gICAgLy8gbG9zc3kuCi0gICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCku
cHJlbXVsdGlwbGllZEFscGhhKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8g
aW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9j
dXJyZW50SGVpZ2h0KSk7Ci0gICAgdW5zaWduZWQgY2hhciogcGl4ZWxzID0gaW1hZ2VEYXRhLT5k
YXRhKCktPmRhdGEoKTsKLSAgICBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IHRvdGFsQnl0
ZXNDaGVja2VkID0gNCAqIENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4obV9jdXJyZW50V2lk
dGgpICogQ2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PihtX2N1cnJlbnRIZWlnaHQpOwotICAg
IGlmICh0b3RhbEJ5dGVzQ2hlY2tlZC5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBp
bWFnZURhdGE7Ci0gICAgaW50IHRvdGFsQnl0ZXMgPSB0b3RhbEJ5dGVzQ2hlY2tlZC51bnNhZmVH
ZXQoKTsKLQotICAgIHJlYWRSZW5kZXJpbmdSZXN1bHRzKHBpeGVscywgdG90YWxCeXRlcyk7Ci0K
LSAgICAvLyBDb252ZXJ0IHRvIFJHQkEuCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5
dGVzOyBpICs9IDQpCi0gICAgICAgIHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0p
OwotCi0gICAgcmV0dXJuIGltYWdlRGF0YTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cHJlcGFyZVRleHR1cmUoKQogewogICAgIGlmIChtX2xheWVyQ29tcG9zaXRlZCkKQEAg
LTIzNiwxNSArMTc4LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZVRl
eHR1cmUoKQogICAgIDo6Z2xGbHVzaCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25lZCBjaGFyICpwaXhlbHMsIGludCBwaXhl
bHNTaXplKQorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRS
ZW5kZXJpbmdSZXN1bHRzKERhdGFGb3JtYXQgZm9ybWF0KQogewotICAgIGlmIChwaXhlbHNTaXpl
IDwgbV9jdXJyZW50V2lkdGggKiBtX2N1cnJlbnRIZWlnaHQgKiA0KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLQog
ICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKICAgICBpZiAoY29udGV4dEF0dHJpYnV0
ZXMoKS5hbnRpYWxpYXMpIHsKICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2Fy
eSgpOwpAQCAtMjU3LDIyICsxOTIsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVhZFJlbmRlcmluZ1Jlc3VsdHModW5zaWduZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGkKICAgICAg
ICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVG
RkVSLCBtX2Zibyk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBHTGludCBwYWNrQWxpZ25tZW50
ID0gNDsKLSAgICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOwotICAgIDo6
Z2xHZXRJbnRlZ2VydihHTF9QQUNLX0FMSUdOTUVOVCwgJnBhY2tBbGlnbm1lbnQpOwotICAgIGlm
IChwYWNrQWxpZ25tZW50ID4gNCkgewotICAgICAgICA6OmdsUGl4ZWxTdG9yZWkoR0xfUEFDS19B
TElHTk1FTlQsIDQpOwotICAgICAgICBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSB0cnVlOwot
ICAgIH0KLQotICAgIHJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZOZWNlc3NhcnkoMCwgMCwg
bV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgcGl4ZWxzKTsKLQotICAgIGlmIChtdXN0
UmVzdG9yZVBhY2tBbGlnbm1lbnQpCi0gICAgICAgIDo6Z2xQaXhlbFN0b3JlaShHTF9QQUNLX0FM
SUdOTUVOVCwgcGFja0FsaWdubWVudCk7Ci0KKyAgICBhdXRvIHJlc3VsdCA9IHJlYWRQaXhlbHNG
b3JQYWludFJlc3VsdHMoZm9ybWF0KTsKICAgICBpZiAobXVzdFJlc3RvcmVGQk8pCiAgICAgICAg
IDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBt
X3N0YXRlLmJvdW5kRHJhd0ZCTyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggMGQ0NzZjMjI5ZDZmNmVl
OTZjY2Y5OTNkODFkNWMzZGQ2NTIxNWU0OC4uNTAxODEwNTYzYTBlZTEyNjVlMmIxYTMzMzY0ODYz
N2NkODRhODE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApA
QCAtNjQsMTYgKzY0LDI3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4
ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgICAgIDo6Z2xC
aW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlm
TmVjZXNzYXJ5KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBj
aGFyKiBwaXhlbHMpCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7Ci0gICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwg
d2lkdGgsIGhlaWdodCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKLSAgICBp
bnQgdG90YWxCeXRlcyA9IHdpZHRoICogaGVpZ2h0ICogNDsKLSAgICBpZiAoaXNHTEVTMkNvbXBs
aWFudCgpKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0
KQotICAgICAgICAgICAgc3RkOjpzd2FwKHBpeGVsc1tpXSwgcGl4ZWxzW2kgKyAyXSk7IC8vIENv
bnZlcnQgdG8gQkdSQS4KLSAgICB9CisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNy
ZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKKyAgICBpZiAoIWltYWdlRGF0YSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBHTGludCBwYWNrQWxpZ25tZW50ID0gNDsK
KyAgICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOworICAgIDo6Z2xHZXRJ
bnRlZ2VydihHTF9QQUNLX0FMSUdOTUVOVCwgJnBhY2tBbGlnbm1lbnQpOworICAgIGlmIChwYWNr
QWxpZ25tZW50ID4gNCkgeworICAgICAgICA6OmdsUGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1F
TlQsIDQpOworICAgICAgICBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSB0cnVlOwogfQogCisg
ICAgOjpnbFJlYWRQaXhlbHMoMCwgMCwgaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFnZURhdGEtPmhl
aWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0
YSgpKTsKKworICAgIGlmIChtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQpCisgICAgICAgIDo6Z2xQ
aXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgcGFja0FsaWdubWVudCk7CisKKyAgICByZXR1
cm4gaW1hZ2VEYXRhOworCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJP
cyhjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIGNvbnN0IGludCB3aWR0aCA9IHNpemUud2lk
dGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAppbmRleCBlN2M0MGM5ODVj
YjdkMjcyMjg2OWE1ZGZmOTY5MTk0NzA3N2FmNDZjLi44ZTJkMWZjNjUxODYyODM5NWU5NzQxYzQ0
ZTdhYzg1MWIwOGVmNjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBA
IC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICAvLyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbiBvdmVycmlkZXMuCiAgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBmaW5hbDsK
ICAgICB2b2lkIHByZXNlbnQoQnVmZmVyKSBmaW5hbDsKKyAgICBjb25zdCBCdWZmZXImIGRpc3Bs
YXlCdWZmZXIoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBmaW5hbDsK
IHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZl
ciBtX2Rpc3BsYXlCdWZmZXI7CkBAIC03Niw2ICs3NywxMSBAQCB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OnByZXNlbnQoQnVmZmVyIGJ1ZmZlcikKICAgICBtX2Rpc3BsYXlCdWZm
ZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CiB9CiAKK2NvbnN0IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluOjpCdWZmZXImIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmRpc3Bs
YXlCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2Rpc3BsYXlCdWZmZXI7Cit9CisKIHZv
aWQqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmRldGFjaENsaWVudCgpCiB7CiAgICAg
cmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9kaXNwbGF5QnVmZmVyLmhhbmRsZSwgbnVsbHB0cik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAppbmRleCAzNGEwNmZiMDA3
NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Li41M2RiNjE1MGMxZDhlYzgyNWUyM2FiZWY2
NTFlNWIzYjk3OTkyNDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHAKQEAgLTEyMSw2ICsxMjEsMTEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKIFJlZlB0cjxJbWFnZURhdGE+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRl
eCBkOTllZGEyOWY2ZGI1ZTE4MTk3MTMxNzhmMmFhNTMxYjRmNWRkNmUwLi5hMTQzOTM0N2Q4OWUw
YWRiZjA4YTQyYTQyNTkxYmJiM2RiZWIyMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaW11bGF0
ZUNvbnRleHRDaGFuZ2VkKCkgZmluYWw7CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciopIGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkgZmluYWw7Cisg
ICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXIqKSBmaW5hbDsKIAogICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVu
dGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4K
ICAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsK
</data>
<flag name="commit-queue"
          id="433924"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416408</attachid>
            <date>2020-12-17 02:42:35 -0800</date>
            <delta_ts>2020-12-17 03:50:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219946-20201217124233.patch</filename>
            <type>text/plain</type>
            <size>63636</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMwMGNiMzk4NTY1MjRm
YzAxZWY4N2I5ZDkxYWQ4NWRjZmU3YTY5ZS4uN2IyZTM4NjdmYjQ1ZWUyMzI3MmRhNzZkMmM1ZmI5
YTU5OTk4NGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAyMC0xMi0xNyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04g
KHIyNjgzODYpOiBTbmFwc2hvdHMgb2YgV2ViR0wgY29udGVudCBpbiB0aGUgdGFiIHBpY2tlciBk
b24ndCB3b3JrIChibGFjayBtYXAgb24gR29vZ2xlIE1hcHMpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcyMDEzNzg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZpeCBjYXNlIHdoZXJlIFdlYkdMIHdvdWxkIGZpcnN0IGJlIGRpc3BsYXllZCB3aXRo
IGhhcmR3YXJlIGNvZGUgcGF0aAorICAgICAgICBhbmQgdGhlbiBkaXNwbGF5ZWQgd2l0aCBzb2Z0
d2FyZSBjb2RlIHBhdGggKHBhaW50aW5nIGZyb20gdGhlIHBhaW50CisgICAgICAgIHRyZWUpLiBG
b3JtZXIgaGFwcGVucyB3aGVuIHVzZXIgbG9va3MgYXQgdGhlIHBhZ2UgYW5kIGxhdHRlciBoYXBw
ZW5zCisgICAgICAgIHdoZW4gcHJpbnRpbmcgb3Igd2hlbiBTYWZhcmkgdGFrZXMgYSBzbmFwc2hv
dC4KKworICAgICAgICBUaGlzIGlzIG5vdCBhIHJlYWwgcmVncmVzc2lvbiBvZiByMjY4Mzg2LiBQ
cmlvciB0byB0aGF0LCB0aGUgc29mdHdhcmUKKyAgICAgICAgZGlzcGxheSB3b3VsZCBoYXZlIHVz
ZWQgdW5pbml0aWFsaXplZCBJT1N1cmZhY2UgY29udGVudHMgb3IgY29udGVudHMgb2YKKyAgICAg
ICAgMS0yIGZyYW1lcyBwcmlvciBhbmQgd291bGQgbGVhdmUgdGhlIGhhcmR3YXJlIGRpc3BsYXkg
YnVmZmVyIG5vdAorICAgICAgICB1cGRhdGVkLgorCisgICAgICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaXMgdXNlZCBmb3IgdHdvCisg
ICAgICAgIHB1cnBvc2VzOgorICAgICAgICAgIDEpIEltYWdlIGV4dHJhY3Rpb24gdXNlcywgc3Vj
aCBhcyB0b0RhdGEoKSBvcgorICAgICAgICAgICAgIGNvbnN0cnVjdGluZyBhbiBJbWFnZSBvdXQg
b2YgdGhlIGNvbnRlbnRzLgorICAgICAgICAgIDIpIFBhaW50aW5nIHRoZSByZW5kZXJpbmcgdG8g
dGhlIGRvY3VtZW50IGR1cmluZyBzb2Z0d2FyZSBkaXNwbGF5LgorCisgICAgICAgIFRoZSAxKSBj
YXNlIHVzZXMgYWx3YXlzIHRoZSBkcmF3aW5nIGJ1ZmZlci4KKworICAgICAgICBUaGUgMikgY2Fz
ZSBwcmVzZW50cyB0aGUgZHJhd2luZyBidWZmZXIgYXMgdGhlIG5ldyBkaXNwbGF5IGJ1ZmZlciBp
ZgorICAgICAgICB0aGVyZSBhcmUgY2hhbmdlcyB0byB0aGUgZHJhd2luZyBidWZmZXIgYW5kIHVz
ZXMgdGhlIHBvdGVudGlhbGx5IG5ldworICAgICAgICBkaXNwbGF5IGJ1ZmZlciB0byBkaXNwbGF5
LgorCisgICAgICAgIEZvciAyRCBjYW52YXMsIHRoZXNlIHR3byBjYXNlcyBhcmUgdGhlIHNhbWUg
Y2FzZS4gRm9yIFdlYkdMIHRoZXkgYXJlCisgICAgICAgIGRpZmZlcmVudC4KKworICAgICAgICBU
aGUgZGlzcGxheSBpcyBkZXN0cnVjdGl2ZSBmb3IgV2ViR0wgZHJhd2luZyBidWZmZXIgd2hlbgor
ICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPT0gZmFsc2UuIFRoaXMgbWVhbnMgdGhhdCBp
ZiBoYXJkd2FyZSBkaXNwbGF5IGhhcworICAgICAgICBoYXBwZW5lZCwgd2UgbXVzdCByZWFkIHRo
ZSBkaXNwbGF5IGJ1ZmZlciBkdXJpbmcgY2FzZSAyLiBUaGlzIGNvZGUgd2FzCisgICAgICAgIG1p
c3NpbmcsIHNvIHRoZSBzY2VuYXJpbyBjb3VsZCBub3QgaGF2ZSBldmVyIHdvcmtlZC4KKworICAg
ICAgICBUaGUgcHJldmlvdXMgY29kZSB0cmllZCB0byB3b3JrYXJvdW5kIHRoaXMgYnkgdGhlCisg
ICAgICAgIFdlYkdMR3JhcGhpY3NDb250ZXh0QmFzZSB0byBkZXRlY3Qgd2hhdCB0aGUgb3duZXIg
aW50ZW5kZWQgd2l0aCB0aGUKKyAgICAgICAgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMs
IHRoZW4gc2tpcCB0aGUgcG90ZW50aWFsIGRyYXdpbmcgYnVmZmVyCisgICAgICAgIGNsZWFyLCBy
ZWFkIHRoZSBkcmF3aW5nIGJ1ZmZlciBhbmQgcHV0IHRoYXQgZGF0YSB0byB0aGUgInByZXNlbnRh
dGlvbgorICAgICAgICBjb3B5IiBvZiB0aGUgSFRNTEVsZW1lbnQuIFRoaXMgaXMgbm90IG9rLCBh
cyB0aGUgdW5jbGVhcmVkIGRyYXdpbmcKKyAgICAgICAgYnVmZmVyIGhhcyBub24tZGV0ZXJtaW5p
c3RpYyBjb250ZW50cyBpbiBjYXNlIHRoZSBjb250ZXh0IGhhcyBkaXNwbGF5ZWQKKyAgICAgICAg
YW5kIHRoZSBjbGllbnQgaGFzIG5vdCBkcmF3biBuZXcgY29udGVudCB0byB0aGUgZHJhd2luZyBi
dWZmZXIuCisKKyAgICAgICAgRml4IGJ5IHJlbW92aW5nIHRoZSAicHJlc2VudGF0aW9uIGNvcHki
IG9mIHRoZSBIVE1MQ2FudmFzLiBUaGUKKyAgICAgICAgcHJlc2VudGF0aW9uIGltYWdlIGNhbiBh
bHdheXMgYmUgZHJhd24gdG8gdGhlIENhbnZhc0Jhc2U6OmJ1ZmZlcigpOgorICAgICAgICAgLSBU
aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGlzIHRoZSBwcmVzZW50YXRpb24gaW1h
Z2UgaWYgdGhlCisgICAgICAgICAgIGNvbnRleHQgaGFzIG5vdCBjaGFuZ2VkIHNpbmNlIHVwZGF0
aW5nIHRoZSBidWZmZXIgd2l0aCBlaXRoZXIgZHJhd2luZworICAgICAgICAgICBidWZmZXIgb3Ig
cHJldmlvdXMgZGlzcGxheSBidWZmZXIuCisgICAgICAgICAtIElmIHRoZSBjb250ZXh0IGhhcyBj
aGFuZ2VkLCB3ZSBtdXN0IHByZXNlbnQgYW5kIHB1dCB0aGUgbmV3IGRpc3BsYXkKKyAgICAgICAg
ICAgYnVmZmVyIHRvIHRoZSBDYW52YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgLSBUaGlzIGlz
IGFsc28gY29ycmVjdCBjb250ZW50cyBmb3IgdGhlIHBvdGVudGlhbCBuZXh0IGltYWdlIGV4dHJh
Y3Rpb24KKyAgICAgICAgICAgdXNlcywgdXAgdG8gYSBwb2ludCB3aGVuIGNvbnRleHQgY2hhbmdl
cy4KKyAgICAgICAgIC0gSWYgdGhlIGNvbnRleHQgY2hhbmdlcyBiZWZvcmUgYW4gaW1hZ2UgZXh0
cmFjdGlvbiB1c2UsIENhbnZhc0Jhc2U6OmJ1ZmZlcigpIGlzCisgICAgICAgICAgIHVwZGF0ZWQg
d2l0aCB0aGUgbm9ybWFsIGxvZ2ljLCB0aGUgc2FtZSBhcyB3aGF0IGhhcHBlbnMgd2hlbiBDYW52
YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgICBpcyB1cGRhdGVkIGJldHdlZW4gdHdvIGltYWdl
IGV4dHJhY3Rpb24gdXNlcy4KKworICAgICAgICBQcmlvciB0byB0aGlzLCB0aGVyZSB3YXMgYW4g
dW5uZWVkZWQgYW5kIGluY29ycmVjdGx5IGltcGxlbWVudGVkCisgICAgICAgIEdQVUNhbnZhc0Nv
bnRleHQ6Om1hcmtMYXllckNvbXBvc2l0ZWQoKS4gVGhlIHNlcXVlbmNlIHdvdWxkIGJlOgorCisg
ICAgICAgIEhUTUxDYW52YXNFbGVtZW50OjpwYWludCgpOgorICAgICAgICAgICBjYW52YXNDb250
ZXh0KCkucGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoYnVmZmVyKCkpOworICAgICAgICAg
ICBjb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlcigpKTsKKyAgICAgICAgICAgY2FudmFz
Q29udGV4dCgpLm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKworICAgICAgICBUaGUgbWFya0xheWVy
Q29tcG9zaXRlZCgpIHdvdWxkIGluY29ycmVjdGx5IG1hcmsgdGhlIFdlYkdMIGNvbnRleHQgY29t
cG9zaXRpbmcKKyAgICAgICAgYmVpbmcgZG9uZSwgYnV0IHRoZXJlIHdhcyBubyBjb21wb3NpdGlu
ZyBhY3R1YWxseSBoYXBwZW5pbmcuIFRoZSBHUFUtc2lkZQorICAgICAgICBkaXNwbGF5IGJ1ZmZl
ciB3b3VsZCBiZSBpbmNvcnJlY3QuIEFsc28sIHRoZXJlIGlzIG5vdGhpbmcgdG8gYmUgZG9uZSBh
dAorICAgICAgICB0aGlzIHN0YWdlLCBhcyB0aGUgY29tcG9zaXRpbmcgb2YgV2ViR0wgY29udGV4
dCBpdHNlbGYgaXMgYWxyZWFkeQorICAgICAgICBmaW5pc2hlZCBhdCBXZWJHTCBjb250ZXh0IHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgcmV0dXJuLgorCisgICAgICAgIEluc3RlYWQs
IGFkZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgp
IHdoaWNoIHNpZ25hbHMgdGhhdCBuZXh0CisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKCkgaXMgYSBkaXNwbGF5IG9wZXJhdGlvbi4gVGhpcyBjYW4gYmUgdXNlZCB0byB0byBk
ZXRlY3QgdGhlCisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaW4gd2hp
Y2ggd2UgbXVzdCBwcmVzZW50IHRoZSBkcmF3aW5nIGJ1ZmZlciBhcworICAgICAgICBkaXNwbGF5
IGJ1ZmZlci4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGRpc3BsYXkgYnVmZmVyIHJlYWQgd2l0
aCBPcGVuR0wuCisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGRyYXdpbmcgYnVmZmVyIHJlYWQgY29k
ZSB0byBiZSBhYmxlIHRvIHJldXNlIHRoZSByZWFkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBkaXNw
bGF5IGJ1ZmZlciByZWFkLiBUaGUgcmVmYWN0b3JlZCBjb2RlIHJlZHVjZXMgcmVkdW5kYW50IHRo
ZQorICAgICAgICBhbGxvY2F0aW9ucyBvZiBmdWxsLXNjcmVlbiBtYWxsb2MgYnVmZmVycyBhbmQg
ZW5zdXJlcyBhbGxvY2F0aW9uIHJlc3VsdHMgYXJlCisgICAgICAgIGNoZWNrZWQgaW5zdGVhZCBv
ZiBjcmFzaGluZyB3aXRoIG51bGxwdHIgZGVyZWZzIHdoZW4gT09NIGhhcHBlbnMuIEZpeGVzCisg
ICAgICAgIGVycm9ycyBzdWNoIGFzIHJkYXI6Ly82NzU1MzUzMSAoQ3Jhc2hUcmFjZXI6IGNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdAorICAgICAgICBXZWJDb3JlOiBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpLgorICAg
ICAgICBSZW1vdmVzIFJHQkEtPkJHUkEtPlJHQkEgY29udmVyc2lvbnMgZnJvbQorICAgICAgICBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEo
KS4KKyAgICAgICAgUmVtb3ZlcyBtYW51YWwgYWxwaGEgcHJlbXVsdGlwbGljYXRpb24gYW5kIG1h
a2VzIENHIGRyYXcgd2l0aCB1bnByZW11bHRpcGxpZWQKKyAgICAgICAgYWxwaGEuCisgICAgICAg
IENoYW5nZXMgQ2Fpcm8gdmFyaWFudCBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB0byBjb252
ZXJ0IG1hbnVhbGx5IFJHQkEtPkJHUkEKKyAgICAgICAgaW5zdGVhZCBvZiAoYmlnKSBPcGVuR0wg
ZHJpdmVyIGRvaW5nIGl0IGluIGNhc2Ugb2Ygbm9uLU5WSURJQSBwbGF0Zm9ybXMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCB0aGUgc25hcHNob3QgLyBzdytodyBkcmF3aW5nIGlzIG5vdCB0ZXN0
YWJsZSBhdCB0aGUgbW9tZW50LgorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHUFVDYW52YXNDb250ZXh0Ojpjb25maWd1
cmVTd2FwQ2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4dDo6cHJlcGFy
ZUZvckRpc3BsYXlXaXRoUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4
dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L0dQVUNhbnZhc0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYWludCk6CisgICAg
ICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9HUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByZXBhcmVGb3JEaXNwbGF5V2l0
aFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUluZGV4QXJyYXlQcmVj
aXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlRHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZlcnRleEF0dHJpYmZ2SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjppbml0VmVydGV4QXR0cmliMCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVz
dWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJl
bmRlcmluZ1Jlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmc6OlNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRCdWZmZXJCaW5kaW5nOjpTY29wZWRCdWZmZXJC
aW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6On5TY29wZWRC
dWZmZXJCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6OnF1
ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZzo6bWFya0JpbmRpbmdDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUmVzdG9yZVJl
YWRGcmFtZWJ1ZmZlckJpbmRpbmc6On5TY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRQaXhlbFN0b3JhZ2VNb2RlOjpTY29wZWRQaXhl
bFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVsU3RvcmFnZU1vZGU6
On5TY29wZWRQaXhlbFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVs
U3RvcmFnZU1vZGU6OnBpeGVsU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUGl4ZWxT
dG9yYWdlTW9kZTo6b3BlcmF0b3IgR0xpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nv
cGVkVGV4dHVyZTo6U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0
dXJlOjp+U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0dXJlOjpv
cGVyYXRvciBHTHVpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVidWZm
ZXI6OlNjb3BlZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lYnVm
ZmVyOjp+U2NvcGVkRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVi
dWZmZXI6Om9wZXJhdG9yIEdMdWludCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZWxlYXNlSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVy
ZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkQ29tcG9zaXRlZFJlc3VsdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9y
UGFpbnRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYkltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om9y
aWdpbmFsU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6bWFwcGVkU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5m
b0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cyk6CisKIDIwMjAtMTItMTQg
IExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU1NJT04o
MjcwNDM1KSBbR1N0cmVhbWVyXSBNYW55IG1lZGlhIHNvdXJjZSB0ZXN0cyBmYWlsaW5nIGFuZCB0
aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwMzI4Y2Y2ZTg0NWY3NTNlNjQyYjQ1M2I4NjMxMTgxN2Q0
YzA2YzkuLmUwODk5YTkyYmMyMGMzNTliYTgwN2IyODEwYjBkZDg5ZWIyMmRjOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTItMTcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVu
QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjY4Mzg2KTogU25hcHNob3RzIG9m
IFdlYkdMIGNvbnRlbnQgaW4gdGhlIHRhYiBwaWNrZXIgZG9uJ3Qgd29yayAoYmxhY2sgbWFwIG9u
IEdvb2dsZSBNYXBzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5OTQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjAxMzc4ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZHVtbXkgaW1wbGVt
ZW50YXRpb25zIG9mIEdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9D
YW52YXMuCisgICAgICAgIFBhaW50aW5nIHRvIGNhbnZhcyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0
IGZvciB0aGUgcmVtb3RlIEdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6ZGlzcGxh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oOgorCiAyMDIwLTEyLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gSW50cm9kdWNlIHZtRW50cnlDdXN0b21BY2Nlc3NvciBhbmQgdm1FbnRy
eUhvc3RGdW5jdGlvbiBmb3IgSklUQ2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcAppbmRleCBlMzAzNTBiNDYyYTBmZWQ0NDY2OGJm
ODk2MDI5MjkzZTExNzhlODg3Li4zOGIxNTI4ZmZjM2E5NTI1ODUwYTk0ZDY1ZWQyNzk0YTRkODA0
YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcApAQCAtOTAsMTAgKzkwLDE4IEBAIHZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgbm90aWZ5Q2FudmFzQ29udGVudENoYW5n
ZWQoKTsKIH0KIAotdm9pZCBHUFVDYW52YXNDb250ZXh0OjptYXJrTGF5ZXJDb21wb3NpdGVkKCkK
K3ZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQogewot
ICAgIGlmIChtX3N3YXBDaGFpbiAmJiBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCkpCisgICAgbV9p
c0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSB0cnVlOworfQorCit2b2lkIEdQVUNhbnZhc0NvbnRleHQ6
OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKK3sKKyAgICAvLyBGSVhNRTogVW5pbXBs
ZW1lbnRlZC4KKyAgICBpZiAobV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgJiYgbV9zd2FwQ2hhaW4g
JiYgbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpKSB7CiAgICAgICAgIG1fc3dhcENoYWluLT5zd2Fw
Q2hhaW4oKS0+cHJlc2VudCgpOworICAgICAgICBtX2lzRGlzcGxheWluZ1dpdGhQYWludCA9IGZh
bHNlOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oCmluZGV4IDZkZjIwYjRhNjQ3
ZjZhMTg3OGIzODE1NmMyZDA3MTA3NjU0MzJhOGQuLjliMGZlN2IwZDA4Y2U5M2M3ZWNhODY5NGEw
MGQxNjMyZTEzZDBjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUNhbnZhc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVDYW52YXNDb250ZXh0LmgKQEAgLTUzLDEzICs1MywxNSBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNXZWJHUFUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpIGZpbmFsOwotICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZp
bmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSBmaW5hbDsKKyAgICB2
b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgZmluYWw7CiAKICAgICAvLyBBY3Rp
dmVET01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJHUFVDYW52YXNDb250ZXh0IjsgfQogICAgIC8vIEZJWE1FOiBTdHVi
cy4KICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IH0KIAorICAgIGJvb2wgbV9pc0Rpc3BsYXlpbmdX
aXRoUGFpbnQgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxXZWJHUFVTd2FwQ2hhaW4+IG1fc3dhcENo
YWluOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRl
eCAxNjljYWE5MDAyNGQyNjc3MjMwNTA2MmY1OThkMTJjY2RkYmFiM2ZmLi5kNzBiZGQxMDdkNTA2
NTgzZDM3YTVkNzUxMDhkMGM1YmZiNzIzZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcApAQCAtNjQyLDIwICs2NDIsMTcgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBy
KQogCiAgICAgICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgICAgIHNob3VsZFBhaW50ID0g
cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIHx8IGRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCBtX2lz
U25hcHNob3R0aW5nOwotICAgICAgICAgICAgaWYgKHNob3VsZFBhaW50KQorICAgICAgICAgICAg
aWYgKHNob3VsZFBhaW50KSB7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9y
RGlzcGxheVdpdGhQYWludCgpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAg
aWYgKHNob3VsZFBhaW50KSB7CiAgICAgICAgICAgICBpZiAoaGFzQ3JlYXRlZEltYWdlQnVmZmVy
KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9wcmVzZW50ZWRJbWFnZSkKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKm1fcHJlc2VudGVkSW1hZ2UsIHNuYXBwZWRJbnRS
ZWN0KHIpLCByZW5kZXJlcigpLT5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgICAgICAgICAgICAg
IGVsc2UgaWYgKEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGJ1ZmZlcigpKQorICAgICAgICAg
ICAgICAgIGlmIChJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBidWZmZXIoKSkKICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBzbmFwcGVk
SW50UmVjdChyKSk7CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChpc0dQVUJhc2Vk
KCkpCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8R1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250
ZXh0PigqbV9jb250ZXh0KS5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTY2OCwxOSArNjY1LDYgQEAgYm9vbCBIVE1MQ2FudmFzRWxlbWVudDo6aXNHUFVCYXNl
ZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dCAmJiBtX2NvbnRleHQtPmlzR1BVQmFzZWQo
KTsKIH0KIAotdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6bWFrZVByZXNlbnRhdGlvbkNvcHkoKQot
ewotICAgIGlmICghbV9wcmVzZW50ZWRJbWFnZSkgewotICAgICAgICAvLyBUaGUgYnVmZmVyIGNv
bnRhaW5zIHRoZSBsYXN0IHByZXNlbnRlZCBkYXRhLCBzbyBzYXZlIGEgY29weSBvZiBpdC4KLSAg
ICAgICAgbV9wcmVzZW50ZWRJbWFnZSA9IGJ1ZmZlcigpLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdT
dG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpOwotICAgIH0KLX0KLQotdm9pZCBIVE1MQ2Fu
dmFzRWxlbWVudDo6Y2xlYXJQcmVzZW50YXRpb25Db3B5KCkKLXsKLSAgICBtX3ByZXNlbnRlZElt
YWdlID0gbnVsbHB0cjsKLX0KLQogdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0U3VyZmFjZVNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBDYW52YXNCYXNlOjpzZXRTaXplKHNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCmluZGV4IGFlYjAxODk3NDli
NTgzMzM3NDg0MDRjOTViYWZlZDA0NTI4ZjljZWYuLjljOTIzMGY1ZmJiN2U2ZGU0YjY5ZmQ1Yzg2
YmVlZTQwNjRiNDQyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgK
QEAgLTExNSw4ICsxMTUsNiBAQCBwdWJsaWM6CiAgICAgSW1hZ2UqIGNvcGllZEltYWdlKCkgY29u
c3QgZmluYWw7CiAgICAgdm9pZCBjbGVhckNvcGllZEltYWdlKCkgY29uc3QgZmluYWw7CiAgICAg
UmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKCk7Ci0gICAgdm9pZCBtYWtlUHJlc2VudGF0
aW9uQ29weSgpOwotICAgIHZvaWQgY2xlYXJQcmVzZW50YXRpb25Db3B5KCk7CiAKICAgICBTZWN1
cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdCBmaW5hbDsKIApAQCAtMTk5LDcgKzE5
Nyw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNTbmFwc2hvdHRpbmcgeyBmYWxzZSB9Owog
Ci0gICAgbXV0YWJsZSBSZWZQdHI8SW1hZ2U+IG1fcHJlc2VudGVkSW1hZ2U7CiAgICAgbXV0YWJs
ZSBSZWZQdHI8SW1hZ2U+IG1fY29waWVkSW1hZ2U7IC8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFy
eSBmb3IgcGxhdGZvcm1zIHRoYXQgaGF2ZSB0byBjb3B5IHRoZSBpbWFnZSBidWZmZXIgdG8gcmVu
ZGVyIChhbmQgZm9yIENTU0NhbnZhc1ZhbHVlKS4KIH07CiAKQEAgLTIxNiw0ICsyMTMsMyBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBXZWJDb3JlOjpFdmVu
dFRhcmdldCYgdGFyZ2V0KSB7IHJldHVybiBpczxXZWJDb3JlOjpOb2RlPih0YXJnZXQpICYmIGNo
ZWNrVGFnTmFtZShkb3duY2FzdDxXZWJDb3JlOjpOb2RlPih0YXJnZXQpKTsgfQogfTsKIH0KLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oCmluZGV4IGFjZjgzYmI3MmRjYTcwMWMwZmNjNjczOGMxZDg2Y2ExMTc4ZmQ0OTQuLmYzODg2
M2Y3OGZlZTNmZjg5OTI5Yzc0YzQ3Y2EyZTUzNDE5OTAwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTcxLDYgKzcx
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc09mZnNjcmVlbjJkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQYWludCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKKyAgICAvLyBDYWxsZWQgYmVmb3JlIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzIGlmIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzIGlzCisgICAgLy8gdXNlZCBm
b3IgY29tcG9zaXRpbmcgcHVycG9zZXMuCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEaXNw
bGF5V2l0aFBhaW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKCkge30KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggNDdhMDJl
YjcwNmNlNDVkODhmMTk3NTRiYjdkOGJlZmY5YjFmOTQyYy4uODkwY2Q3MjM1MDFlMDRlMjhlODJm
NzdhMGI2OWRiZWQ1OWE0ODU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTUwLDggKzUw
LDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCByZXNoYXBlKGludCB3aWR0
aCwgaW50IGhlaWdodCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVk
KCkgPSAwOwotCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgR1BVQmFzZWRDYW52YXNSZW5kZXJp
bmdDb250ZXh0KENhbnZhc0Jhc2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAwMTNiODlhZjQ4
ODhiODdjMGY2NDhlNTJjYjU2MWNkYjkxYzU0OTczLi4zMGQ5ZTdlOTFhNDNjMzllODEyZjdiYjUy
YjUxMDY4YmM5MzY3NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMTE5OSwxMSArMTE5OSwxMCBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlc3RvcmVTdGF0ZUFmdGVyQ2xlYXIo
KQogICAgIG1fY29udGV4dC0+ZGVwdGhNYXNrKG1fZGVwdGhNYXNrKTsKIH0KIAotdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKKwordm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgpCiB7Ci0g
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1f
Y29udGV4dC0+bWFya0xheWVyQ29tcG9zaXRlZCgpOworICAgIG1faXNEaXNwbGF5aW5nV2l0aFBh
aW50ID0gdHJ1ZTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpCkBAIC0xMjExLDE4ICsxMjEwLDE3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQog
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChhdXRvKiBjYW52YXMgPSBodG1sQ2FudmFzKCkpIHsKLSAgICAgICAgaWYgKGNhbnZhcy0+
ZG9jdW1lbnQoKS5wcmludGluZygpIHx8IChjYW52YXMtPmlzU25hcHNob3R0aW5nKCkgJiYgY2Fu
dmFzLT5kb2N1bWVudCgpLnBhZ2UoKS0+aXNWaXNpYmxlKCkpKQotICAgICAgICAgICAgY2FudmFz
LT5jbGVhclByZXNlbnRhdGlvbkNvcHkoKTsKLQotICAgICAgICAvLyBVbnRpbCB0aGUgY2FudmFz
IGlzIHdyaXR0ZW4gdG8gYnkgdGhlIGFwcGxpY2F0aW9uLCB0aGUgY2xlYXIgdGhhdAotICAgICAg
ICAvLyBoYXBwZW5lZCBhZnRlciBpdCB3YXMgY29tcG9zaXRlZCBzaG91bGQgYmUgaWdub3JlZCBi
eSB0aGUgY29tcG9zaXRvci4KLSAgICAgICAgaWYgKG1fY29udGV4dC0+bGF5ZXJDb21wb3NpdGVk
KCkgJiYgIW1fYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpIHsKLSAgICAgICAgICAg
IG1fY29udGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoY2FudmFzLT5idWZmZXIo
KSk7Ci0KLSAgICAgICAgICAgIGNhbnZhcy0+bWFrZVByZXNlbnRhdGlvbkNvcHkoKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBjYW52YXMtPmNsZWFyUHJlc2VudGF0aW9uQ29weSgpOwor
ICAgIGlmIChtX2lzRGlzcGxheWluZ1dpdGhQYWludCkgeworICAgICAgICBib29sIGNhbnZhc0Nv
bnRhaW5zRGlzcGxheUJ1ZmZlciA9ICFtX21hcmtlZENhbnZhc0RpcnR5OworICAgICAgICBwcmVw
YXJlRm9yRGlzcGxheSgpOworICAgICAgICBtX2lzRGlzcGxheWluZ1dpdGhQYWludCA9IGZhbHNl
OworICAgICAgICBpZiAoIWNhbnZhc0NvbnRhaW5zRGlzcGxheUJ1ZmZlcikgeworICAgICAgICAg
ICAgYXV0byYgYmFzZSA9IGNhbnZhc0Jhc2UoKTsKKyAgICAgICAgICAgIGJhc2UuY2xlYXJDb3Bp
ZWRJbWFnZSgpOworICAgICAgICAgICAgbV9tYXJrZWRDYW52YXNEaXJ0eSA9IGZhbHNlOworICAg
ICAgICAgICAgbV9jb250ZXh0LT5wYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoYmFzZS5i
dWZmZXIoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNsZWFy
SWZDb21wb3NpdGVkKENsZWFyQ2FsbGVyT3RoZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDMwYTg1NTdk
ODY4OGUyZWE0OTVkYjcxNmYwOGJlNjA5ZWMzYjRlOGEuLmU4ZTkwY2ZiYTE2YjE0ZGQxNDhjOThl
MDY5ZTUwMGVjZGUyYjU1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTM4NCw4ICszODQsOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBvdmVycmlkZTsK
IAotICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOwotICAgIHZvaWQgcGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHByZXBhcmVGb3JE
aXNwbGF5V2l0aFBhaW50KCkgZmluYWw7CisgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b0NhbnZhcygpIGZpbmFsOwogICAgIFJlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvSW1hZ2VEYXRhKCk7CiAKICAgICB2b2lkIHJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNo
YXJlZE9iamVjdCYpOwpAQCAtNjY4LDYgKzY2OCw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKTsKIAogICAgIGJvb2wgbV9jb21wb3NpdGluZ1Jlc3VsdHNO
ZWVkVXBkYXRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQg
eyBmYWxzZSB9OwogCiAgICAgLy8gRW5hYmxlZCBleHRlbnNpb24gb2JqZWN0cy4KICAgICAvLyBG
SVhNRTogTW92ZSBzb21lIG9mIHRoZXNlIHRvIFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgdGhlIG9u
ZXMgbm90IG5lZWRlZCBmb3IgV2ViR0wyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCAyMjNhNWM5YmYxNjk3ZjI1ZjEx
MmRiY2MxODZmODE5YjdjZTFkZTQ1Li5hYThmZjIzNjhkZmZkODljZWFiNmE0NDMzMzBkYjQ1MTZh
MThmOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmgKQEAgLTEyOTIsNyArMTI5Miw3IEBAIHB1YmxpYzoKICAgICAvLyB0
aGUgY29udGV4dC4KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoSW1hZ2VCdWZmZXIqKSA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VEYXRhPiBwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSA9IDA7
CiAKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZC4gVGhlIGxheWVyIHNob3Vs
ZCBiZSBtYXJrZWQgY29tcG9zaXRlZCBieQogICAgIC8vIHByZXBhcmluZyBmb3IgZGlzcGxheSwg
c28gdGhhdCBjYW52YXMgaW1hZ2UgYnVmZmVyIGFuZCB0aGUgbGF5ZXIgYWdyZWUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCA2MGY3YTk0N2VmY2JiMzcxNTZj
MDk4ZTBiNWVlMzNjM2I2MmI4NDliLi4zNmZhYWE3ZTQ2NjIyYmFmM2ExMjNmYmU5NWVlOTRiZTY0
MDlkNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC05
OSwxMSArOTksNiBAQCBHQ0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fYnVmZmVyc1Rv
QXV0b0NsZWFyOwogfQogCi1ib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQotewotICAgIHJldHVy
biBmYWxzZTsKLX0KLQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6ZW5h
YmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkKIHsKICAgICAvLyBSZWRlY2xhcmVkIGZvciBleHBv
cnQgcmVhc29ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCmluZGV4IDcy
NmFhZjZjNmEwZjYyZmYyODJlNWI4ZDIwMmExMjk0ZTFkZTg1NzEuLjI0NzFkNGUyNWM5YWEyMDBl
Yzc0M2IxZmUwYzY0NjhiMGM5YTUwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaApAQCAtNjcsNyArNjcsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBsYXllckNvbXBvc2l0
ZWQoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0
ZmllbGQpIGZpbmFsOwogICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBj
b25zdCBmaW5hbDsKLSAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFn
ZUJ1ZmZlciopIGZpbmFsOwogICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOwog
ICAgIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkgZmluYWw7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4
dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMzA5YTUzMDliNjQwYTNkNmEyODE0MWNhN2Ix
YTc1ZGI0NmU5Zjk1MS4uYjUwNDNiNzQ2MzZmNzg4NWM1ZDgwYzA3NzM1NTVkNzEyMDAwMjNkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAog
I2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTEFOR0xFLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgpAQCAtNDYsOSArNDcsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLSNpZiBVU0UoQUNDRUxFUkFURSkK
LSNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUuaD4KLSNlbmRpZgogCiAjaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5oIgpAQCAtNjQsMzAgKzYyLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2kKIAog
bmFtZXNwYWNlIHsKIAotY2xhc3MgU2NvcGVkUmVzZXRCdWZmZXJCaW5kaW5nIHsKLSAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTY29wZWRSZXNldEJ1ZmZlckJpbmRpbmcpOwotcHVibGljOgotICAg
IFNjb3BlZFJlc2V0QnVmZmVyQmluZGluZyhib29sIHNob3VsZERvV29yaywgR0xlbnVtIGJpbmRp
bmdQb2ludFF1ZXJ5LCBHTGVudW0gYmluZGluZ1BvaW50KQotICAgICAgICA6IG1fYmluZGluZ1Bv
aW50UXVlcnkoYmluZGluZ1BvaW50UXVlcnkpCi0gICAgICAgICwgbV9iaW5kaW5nUG9pbnQoYmlu
ZGluZ1BvaW50KQotICAgIHsKLSAgICAgICAgaWYgKHNob3VsZERvV29yaykKLSAgICAgICAgICAg
IGdsOjpHZXRJbnRlZ2VydihtX2JpbmRpbmdQb2ludFF1ZXJ5LCAmbV9iaW5kaW5nVmFsdWUpOwot
ICAgICAgICBpZiAobV9iaW5kaW5nVmFsdWUpCi0gICAgICAgICAgICBnbDo6QmluZEJ1ZmZlciht
X2JpbmRpbmdQb2ludCwgMCk7Ci0gICAgfQotCi0gICAgflNjb3BlZFJlc2V0QnVmZmVyQmluZGlu
ZygpCi0gICAgewotICAgICAgICBpZiAobV9iaW5kaW5nVmFsdWUpCi0gICAgICAgICAgICBnbDo6
QmluZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBHTGludCBtX2JpbmRpbmdQb2ludFF1ZXJ5IHsgMCB9OwotICAgIEdMaW50IG1f
YmluZGluZ1BvaW50IHsgMCB9OwotICAgIEdMaW50IG1fYmluZGluZ1ZhbHVlIHsgMCB9OwotfTsK
IAogfSAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCiAKQEAgLTEwMiwzNiArNzYsMjkgQEAgc3RhdGlj
IHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1
bnNpZ25lZCBjaGFyKiBwaXgKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVjZXNzYXJ5KGludCB4LCBpbnQgeSwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFyKiBwaXhlbHMpCi17Ci0gICAgLy8g
TlZJRElBIGRyaXZlcnMgaGF2ZSBhIGJ1ZyB3aGVyZSBjYWxsaW5nIHJlYWRQaXhlbHMgaW4gQkdS
QSBjYW4gcmV0dXJuIHRoZSB3cm9uZyB2YWx1ZXMgZm9yIHRoZSBhbHBoYSBjaGFubmVsIHdoZW4g
dGhlIGFscGhhIGlzIG9mZiBmb3IgdGhlIGNvbnRleHQuCi0gICAgZ2w6OlJlYWRQaXhlbHMoeCwg
eSwgd2lkdGgsIGhlaWdodCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKLSNp
ZiBVU0UoQUNDRUxFUkFURSkKLSAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKLSAgICBzcmMuaGVpZ2h0
ID0gaGVpZ2h0OwotICAgIHNyYy53aWR0aCA9IHdpZHRoOwotICAgIHNyYy5yb3dCeXRlcyA9IHdp
ZHRoICogNDsKLSAgICBzcmMuZGF0YSA9IHBpeGVsczsKLQotICAgIHZJbWFnZV9CdWZmZXIgZGVz
dDsKLSAgICBkZXN0LmhlaWdodCA9IGhlaWdodDsKLSAgICBkZXN0LndpZHRoID0gd2lkdGg7Ci0g
ICAgZGVzdC5yb3dCeXRlcyA9IHdpZHRoICogNDsKLSAgICBkZXN0LmRhdGEgPSBwaXhlbHM7Ci0K
LSAgICAvLyBTd2FwIHBpeGVsIGNoYW5uZWxzIGZyb20gUkdCQSB0byBCR1JBLgotICAgIGNvbnN0
IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAxLCAwLCAzIH07Ci0gICAgdkltYWdlUGVybXV0ZUNoYW5u
ZWxzX0FSR0I4ODg4KCZzcmMsICZkZXN0LCBtYXAsIGt2SW1hZ2VOb0ZsYWdzKTsKLSNlbHNlCi0g
ICAgaW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAgIHN0ZDo6c3dhcChwaXhlbHNbaV0s
IHBpeGVsc1tpICsgMl0pOwotI2VuZGlmCi0KK1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKK3sKKyAgICBhdXRvIGlt
YWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkp
OworICAgIGlmICghaW1hZ2VEYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBTY29w
ZWRQaXhlbFN0b3JhZ2VNb2RlIHBhY2tBbGlnbm1lbnQoR0xfUEFDS19BTElHTk1FTlQpOworICAg
IGlmIChwYWNrQWxpZ25tZW50ID4gNCkKKyAgICAgICAgcGFja0FsaWdubWVudC5waXhlbFN0b3Jl
KDQpOworICAgIFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUgcGFja1Jvd0xlbmd0aChHTF9QQUNLX1JP
V19MRU5HVEgsIDAsIG1faXNGb3JXZWJHTDIpOworICAgIFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUg
cGFja1NraXBSb3dzKEdMX1BBQ0tfU0tJUF9ST1dTLCAwLCBtX2lzRm9yV2ViR0wyKTsKKyAgICBT
Y29wZWRQaXhlbFN0b3JhZ2VNb2RlIHBhY2tTa2lwUGl4ZWxzKEdMX1BBQ0tfU0tJUF9QSVhFTFMs
IDAsIG1faXNGb3JXZWJHTDIpOworICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcgc2NvcGVkUGl4ZWxQ
YWNrQnVmZmVyUmVzZXQoR0xfUElYRUxfUEFDS19CVUZGRVIsIDAsIG1faXNGb3JXZWJHTDIpOwor
CisgICAgZ2w6OlJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoMCwgMCwgaW1hZ2VEYXRhLT53aWR0aCgp
LCBpbWFnZURhdGEtPmhlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBpbWFnZURh
dGEtPmRhdGEoKS0+Ynl0ZUxlbmd0aCgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBpbWFn
ZURhdGEtPmRhdGEoKS0+ZGF0YSgpKTsKKyAgICAvLyBGSVhNRTogUmVuZGVyaW5nIHRvIEdMX1JH
QiB0ZXh0dXJlcyB3aXRoIGEgSU9TdXJmYWNlIGJvdW5kIHRvIHRoZSB0ZXh0dXJlIGltYWdlIGxl
YXZlcworICAgIC8vIHRoZSBhbHBoYSBpbiB0aGUgSU9TdXJmYWNlIGluIGluY29ycmVjdCBzdGF0
ZS4gQWxzbyBBTkdMRSBnbDo6UmVhZFBpeGVscyB3aWxsIGluIHNvbWUKKyAgICAvLyBjYXNlcyBl
eHBvc2UgdGhlIG5vbi0yNTUgdmFsdWVzLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTU4MDQKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKCFjb250ZXh0QXR0cmlidXRlcygpLmFscGhhKQotICAgICAgICB3
aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0aCwgaGVpZ2h0LCBwaXhlbHMpOworICAgICAg
ICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhpbWFnZURhdGEtPndpZHRoKCksIGltYWdlRGF0
YS0+aGVpZ2h0KCksIGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCkpOwogI2VuZGlmCisgICAgcmV0
dXJuIGltYWdlRGF0YTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRh
dGVBdHRyaWJ1dGVzKCkKQEAgLTUxMCw2NCArNDc3LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2kKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKLXsKLSAgICBDaGVj
a2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IHJvd0J5dGVzID0gQ2hlY2tlZDxpbnQsIFJlY29yZE92
ZXJmbG93PihtX2N1cnJlbnRXaWR0aCkgKiA0OwotICAgIGlmIChyb3dCeXRlcy5oYXNPdmVyZmxv
d2VkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxv
dz4gdG90YWxCeXRlc0NoZWNrZWQgPSByb3dCeXRlcyAqIG1fY3VycmVudEhlaWdodDsKLSAgICBp
ZiAodG90YWxCeXRlc0NoZWNrZWQuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm47Ci0g
ICAgaW50IHRvdGFsQnl0ZXMgPSB0b3RhbEJ5dGVzQ2hlY2tlZC51bnNhZmVHZXQoKTsKLQotICAg
IGF1dG8gcGl4ZWxzID0gbWFrZVVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+KHRvdGFsQnl0ZXMp
OwotICAgIGlmICghcGl4ZWxzKQotICAgICAgICByZXR1cm47Ci0KLSAgICByZWFkUmVuZGVyaW5n
UmVzdWx0cyhwaXhlbHMuZ2V0KCksIHRvdGFsQnl0ZXMpOwotCi0gICAgaWYgKCFjb250ZXh0QXR0
cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkgewotICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkgewotICAgICAgICAgICAgLy8gUHJlbXVsdGlwbHkgYWxw
aGEuCi0gICAgICAgICAgICBwaXhlbHNbaSArIDBdID0gc3RkOjptaW4oMjU1LCBwaXhlbHNbaSAr
IDBdICogcGl4ZWxzW2kgKyAzXSAvIDI1NSk7Ci0gICAgICAgICAgICBwaXhlbHNbaSArIDFdID0g
c3RkOjptaW4oMjU1LCBwaXhlbHNbaSArIDFdICogcGl4ZWxzW2kgKyAzXSAvIDI1NSk7Ci0gICAg
ICAgICAgICBwaXhlbHNbaSArIDJdID0gc3RkOjptaW4oMjU1LCBwaXhlbHNbaSArIDJdICogcGl4
ZWxzW2kgKyAzXSAvIDI1NSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwYWludFRvQ2FudmFz
KHBpeGVscy5nZXQoKSwgSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSwg
aW1hZ2VCdWZmZXItPmJhY2tlbmRTaXplKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwotfQot
Ci1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9D
YW52YXMoSW1hZ2VCdWZmZXIqKQotewotICAgIC8vIE5vdCBuZWVkZWQgYXQgdGhlIG1vbWVudCwg
c28gcmV0dXJuIHRoYXQgbm90aGluZyB3YXMgZG9uZS4KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LVJlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpCi17Ci0gICAgLy8gUmVhZGluZyBwcmVtdWx0aXBsaWVkIGFs
cGhhIHdvdWxkIGludm9sdmUgdW5wcmVtdWx0aXBseWluZywgd2hpY2ggaXMKLSAgICAvLyBsb3Nz
eS4KLSAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNy
ZWF0ZShJbnRTaXplKG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpKTsKLSAgICB1bnNp
Z25lZCBjaGFyKiBwaXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwotICAgIENoZWNr
ZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4gdG90YWxCeXRlc0NoZWNrZWQgPSA0ICogQ2hlY2tlZDxp
bnQsIFJlY29yZE92ZXJmbG93PihtX2N1cnJlbnRXaWR0aCkgKiBDaGVja2VkPGludCwgUmVjb3Jk
T3ZlcmZsb3c+KG1fY3VycmVudEhlaWdodCk7Ci0gICAgaWYgKHRvdGFsQnl0ZXNDaGVja2VkLmhh
c092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIGltYWdlRGF0YTsKLSAgICBpbnQgdG90YWxC
eXRlcyA9IHRvdGFsQnl0ZXNDaGVja2VkLnVuc2FmZUdldCgpOwotCi0gICAgcmVhZFJlbmRlcmlu
Z1Jlc3VsdHMocGl4ZWxzLCB0b3RhbEJ5dGVzKTsKLQotICAgIC8vIENvbnZlcnQgdG8gUkdCQS4K
LSAgICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkKLSAgICAgICAgc3Rk
Ojpzd2FwKHBpeGVsc1tpXSwgcGl4ZWxzW2kgKyAyXSk7Ci0KLSAgICByZXR1cm4gaW1hZ2VEYXRh
OwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlVGV4dHVyZSgpCiB7
CiAgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKQpAQCAtNjIwLDY1ICs1MjksMTUgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZVRleHR1cmVJbXBsKCkKICNlbmRpZgogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNp
Z25lZCBjaGFyICpwaXhlbHMsIGludCBwaXhlbHNTaXplKQorUmVmUHRyPEltYWdlRGF0YT4gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKCkKIHsKLSAgICBpZiAo
cGl4ZWxzU2l6ZSA8IG1fY3VycmVudFdpZHRoICogbV9jdXJyZW50SGVpZ2h0ICogNCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0KLSAgICBHQ0dMZW51bSBmcmFtZWJ1ZmZlclRhcmdldCA9IG1faXNGb3JXZWJHTDIg
PyBHcmFwaGljc0NvbnRleHRHTDo6UkVBRF9GUkFNRUJVRkZFUiA6IEdyYXBoaWNzQ29udGV4dEdM
OjpGUkFNRUJVRkZFUjsKLQotICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKKyAgICBT
Y29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyBmYm9CaW5kaW5nKG1faXNGb3JXZWJH
TDIsIG1fc3RhdGUuYm91bmRSZWFkRkJPKTsKICAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5h
bnRpYWxpYXMpIHsKICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeSgpOwot
ICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyVGFyZ2V0LCBtX2Zibyk7Ci0g
ICAgICAgIG11c3RSZXN0b3JlRkJPID0gdHJ1ZTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAo
bV9zdGF0ZS5ib3VuZFJlYWRGQk8gIT0gbV9mYm8pIHsKLSAgICAgICAgICAgIG11c3RSZXN0b3Jl
RkJPID0gdHJ1ZTsKLSAgICAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoZnJhbWVidWZmZXJU
YXJnZXQsIG1fZmJvKTsKLSAgICAgICAgfQorICAgICAgICBmYm9CaW5kaW5nLm1hcmtCaW5kaW5n
Q2hhbmdlZCgpOwogICAgIH0KLQotICAgIEdMaW50IHBhY2tBbGlnbm1lbnQgPSA0OwotICAgIGJv
b2wgbXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gZmFsc2U7Ci0gICAgZ2w6OkdldEludGVnZXJ2
KEdMX1BBQ0tfQUxJR05NRU5ULCAmcGFja0FsaWdubWVudCk7Ci0gICAgaWYgKHBhY2tBbGlnbm1l
bnQgPiA0KSB7Ci0gICAgICAgIGdsOjpQaXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgNCk7
Ci0gICAgICAgIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IHRydWU7Ci0gICAgfQotICAgIEdM
aW50IHBhY2tSb3dMZW5ndGggPSAwOwotICAgIEdMaW50IHBhY2tTa2lwUm93cyA9IDA7Ci0gICAg
R0xpbnQgcGFja1NraXBQaXhlbHMgPSAwOwotICAgIFNjb3BlZFJlc2V0QnVmZmVyQmluZGluZyBz
Y29wZWRQaXhlbFBhY2tCdWZmZXJSZXNldChtX2lzRm9yV2ViR0wyLCBHTF9QSVhFTF9QQUNLX0JV
RkZFUl9CSU5ESU5HLCBHTF9QSVhFTF9QQUNLX0JVRkZFUik7Ci0gICAgaWYgKG1faXNGb3JXZWJH
TDIpIHsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX1BBQ0tfUk9XX0xFTkdUSCwgJnBhY2tS
b3dMZW5ndGgpOwotICAgICAgICBpZiAocGFja1Jvd0xlbmd0aCA+IDApCi0gICAgICAgICAgICBn
bDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19ST1dfTEVOR1RILCAwKTsKLSAgICAgICAgZ2w6OkdldElu
dGVnZXJ2KEdMX1BBQ0tfU0tJUF9ST1dTLCAmcGFja1NraXBSb3dzKTsKLSAgICAgICAgaWYgKHBh
Y2tTa2lwUm93cyA+IDApCi0gICAgICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19TS0lQ
X1JPV1MsIDApOwotICAgICAgICBnbDo6R2V0SW50ZWdlcnYoR0xfUEFDS19TS0lQX1BJWEVMUywg
JnBhY2tTa2lwUGl4ZWxzKTsKLSAgICAgICAgaWYgKHBhY2tTa2lwUGl4ZWxzID4gMCkKLSAgICAg
ICAgICAgIGdsOjpQaXhlbFN0b3JlaShHTF9QQUNLX1NLSVBfUElYRUxTLCAwKTsKLSAgICB9Ci0K
LSAgICByZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVjZXNzYXJ5KDAsIDAsIG1fY3VycmVu
dFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIHBpeGVscyk7Ci0KLSAgICBpZiAobXVzdFJlc3RvcmVQ
YWNrQWxpZ25tZW50KQotICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQs
IHBhY2tBbGlnbm1lbnQpOwotICAgIGlmIChwYWNrUm93TGVuZ3RoID4gMCkKLSAgICAgICAgZ2w6
OlBpeGVsU3RvcmVpKEdMX1BBQ0tfUk9XX0xFTkdUSCwgcGFja1Jvd0xlbmd0aCk7Ci0gICAgaWYg
KHBhY2tTa2lwUm93cyA+IDApCi0gICAgICAgIGdsOjpQaXhlbFN0b3JlaShHTF9QQUNLX1NLSVBf
Uk9XUywgcGFja1NraXBSb3dzKTsKLSAgICBpZiAocGFja1NraXBQaXhlbHMgPiAwKQotICAgICAg
ICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19TS0lQX1BJWEVMUywgcGFja1NraXBQaXhlbHMpOwot
Ci0gICAgaWYgKG11c3RSZXN0b3JlRkJPKQotICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZy
YW1lYnVmZmVyVGFyZ2V0LCBtX3N0YXRlLmJvdW5kUmVhZEZCTyk7CisgICAgZmJvQmluZGluZy5i
aW5kRnJhbWVidWZmZXIobV9mYm8pOworICAgIHJldHVybiByZWFkUGl4ZWxzRm9yUGFpbnRSZXN1
bHRzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQpAQCAtNzA0LDcgKzU2Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAgICAgVGVtcG9yYXJ5
QU5HTEVTZXR0aW5nIHNjb3BlZFNjaXNzb3IoR0xfU0NJU1NPUl9URVNULCBHTF9GQUxTRSk7CiAg
ICAgVGVtcG9yYXJ5QU5HTEVTZXR0aW5nIHNjb3BlZERpdGhlcihHTF9ESVRIRVIsIEdMX0ZBTFNF
KTsKLSAgICBTY29wZWRSZXNldEJ1ZmZlckJpbmRpbmcgc2NvcGVkUGl4ZWxVbnBhY2tCdWZmZXJS
ZXNldChtX2lzRm9yV2ViR0wyLCBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcsIEdMX1BJ
WEVMX1VOUEFDS19CVUZGRVIpOworICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcgc2NvcGVkUGl4ZWxV
bnBhY2tCdWZmZXJSZXNldChHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBtX2lzRm9yV2ViR0wy
KTsKIAogICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSByZXNoYXBlRkJPcyhJbnRTaXplKHdpZHRo
LCBoZWlnaHQpKTsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaAppbmRleCAyMTMyN2RkYWZj
M2RiNWZlZDJlODEzMjZiMWZhMjJjNTI4NjlmMTUxLi40OTQyYTk1NTQ1NmJmOTQ0ODQwMWMyZTI2
YjU3ZmRiODIxY2Q0YzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0
aWxpdGllcy5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNj
b3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2Nv
cGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nKTsKIHB1YmxpYzoKLSAgICBTY29wZWRSZXN0b3JlVGV4
dHVyZUJpbmRpbmcoR0NHTGVudW0gYmluZGluZ1BvaW50UXVlcnksIEdDR0xlbnVtIGJpbmRpbmdQ
b2ludCwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQorICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmlu
ZGluZyhHTGVudW0gYmluZGluZ1BvaW50UXVlcnksIEdMZW51bSBiaW5kaW5nUG9pbnQsIGJvb2wg
Y29uZGl0aW9uID0gdHJ1ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChiaW5kaW5nUG9pbnQgIT0g
c3RhdGljX2Nhc3Q8R0NHTGVudW0+KDB1KSk7CisgICAgICAgIEFTU0VSVChiaW5kaW5nUG9pbnQg
IT0gc3RhdGljX2Nhc3Q8R0xlbnVtPigwdSkpOwogICAgICAgICBpZiAoY29uZGl0aW9uKSB7CiAg
ICAgICAgICAgICBtX2JpbmRpbmdQb2ludCA9IGJpbmRpbmdQb2ludDsKICAgICAgICAgICAgIGds
OjpHZXRJbnRlZ2VydihiaW5kaW5nUG9pbnRRdWVyeSwgcmVpbnRlcnByZXRfY2FzdDxHTGludCo+
KCZtX2JpbmRpbmdWYWx1ZSkpOwpAQCAtNTYsNiArNTYsMTUzIEBAIHByaXZhdGU6CiAgICAgR0x1
aW50IG1fYmluZGluZ1ZhbHVlIHsgMHUgfTsKIH07CiAKKworY2xhc3MgU2NvcGVkQnVmZmVyQmlu
ZGluZyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkQnVmZmVyQmluZGluZyk7Citw
dWJsaWM6CisgICAgU2NvcGVkQnVmZmVyQmluZGluZyhHTGVudW0gYmluZGluZ1BvaW50LCBHTHVp
bnQgYmluZGluZ1ZhbHVlLCBib29sIGNvbmRpdGlvbiA9IHRydWUpCisgICAgeworICAgICAgICBp
ZiAoIWNvbmRpdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ2w6OkdldEludGVn
ZXJ2KHF1ZXJ5KGJpbmRpbmdQb2ludCksIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQqPigmbV9iaW5k
aW5nVmFsdWUpKTsKKyAgICAgICAgaWYgKGJpbmRpbmdWYWx1ZSA9PSBtX2JpbmRpbmdWYWx1ZSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9iaW5kaW5nUG9pbnQgPSBiaW5kaW5nUG9p
bnQ7CisgICAgICAgIGdsOjpCaW5kQnVmZmVyKG1fYmluZGluZ1BvaW50LCBiaW5kaW5nVmFsdWUp
OworICAgIH0KKworICAgIH5TY29wZWRCdWZmZXJCaW5kaW5nKCkKKyAgICB7CisgICAgICAgIGlm
IChtX2JpbmRpbmdQb2ludCkKKyAgICAgICAgICAgIGdsOjpCaW5kQnVmZmVyKG1fYmluZGluZ1Bv
aW50LCBtX2JpbmRpbmdWYWx1ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBjb25z
dGV4cHIgR0xlbnVtIHF1ZXJ5KEdMZW51bSBiaW5kaW5nUG9pbnQpCisgICAgeworICAgICAgICBp
ZiAoYmluZGluZ1BvaW50ID09IEdMX1BJWEVMX1BBQ0tfQlVGRkVSKQorICAgICAgICAgICAgcmV0
dXJuIEdMX1BJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkc7CisgICAgICAgIEFTU0VSVChiaW5kaW5n
UG9pbnQgPT0gR0xfUElYRUxfVU5QQUNLX0JVRkZFUik7CisgICAgICAgIHJldHVybiBHTF9QSVhF
TF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkc7CisgICAgfQorICAgIEdMaW50IG1fYmluZGluZ1BvaW50
IHsgMCB9OworICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07Cit9OworY2xhc3MgU2Nv
cGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKTsKK3B1YmxpYzoKKyAgICBT
Y29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyhib29sIGlzRm9yV2ViR0wyLCBHTHVp
bnQgcmVzdG9yZVZhbHVlKQorICAgICAgICA6IG1fZnJhbWVidWZmZXJUYXJnZXQoaXNGb3JXZWJH
TDIgPyBHTF9SRUFEX0ZSQU1FQlVGRkVSIDogR0xfRlJBTUVCVUZGRVIpCisgICAgICAgICwgbV9i
aW5kaW5nVmFsdWUocmVzdG9yZVZhbHVlKQorICAgIHsKKyAgICB9CisgICAgU2NvcGVkUmVzdG9y
ZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoYm9vbCBpc0ZvcldlYkdMMiwgR0x1aW50IHJlc3RvcmVW
YWx1ZSwgR0x1aW50IHZhbHVlKQorICAgICAgICA6IG1fZnJhbWVidWZmZXJUYXJnZXQoaXNGb3JX
ZWJHTDIgPyBHTF9SRUFEX0ZSQU1FQlVGRkVSIDogR0xfRlJBTUVCVUZGRVIpCisgICAgICAgICwg
bV9iaW5kaW5nVmFsdWUocmVzdG9yZVZhbHVlKQorICAgIHsKKyAgICAgICAgYmluZEZyYW1lYnVm
ZmVyKHZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBtYXJrQmluZGluZ0NoYW5nZWQoKQorICAgIHsK
KyAgICAgICAgbV9iaW5kaW5nQ2hhbmdlZCA9IHRydWU7CisgICAgfQorICAgIHZvaWQgYmluZEZy
YW1lYnVmZmVyKEdMdWludCBiaW5kaW5nVmFsdWUpCisgICAgeworICAgICAgICBpZiAoIW1fYmlu
ZGluZ0NoYW5nZWQgJiYgbV9iaW5kaW5nVmFsdWUgPT0gYmluZGluZ1ZhbHVlKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXJUYXJn
ZXQsIGJpbmRpbmdWYWx1ZSk7CisgICAgICAgIG1fYmluZGluZ0NoYW5nZWQgPSBtX2JpbmRpbmdW
YWx1ZSAhPSBiaW5kaW5nVmFsdWU7CisgICAgfQorICAgIH5TY29wZWRSZXN0b3JlUmVhZEZyYW1l
YnVmZmVyQmluZGluZygpCisgICAgeworICAgICAgICBpZiAobV9iaW5kaW5nQ2hhbmdlZCkKKyAg
ICAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlclRhcmdldCwgbV9iaW5k
aW5nVmFsdWUpOworICAgIH0KK3ByaXZhdGU6CisgICAgY29uc3QgR0xlbnVtIG1fZnJhbWVidWZm
ZXJUYXJnZXQ7CisgICAgR0x1aW50IG1fYmluZGluZ1ZhbHVlIHsgMHUgfTsKKyAgICBib29sIG1f
YmluZGluZ0NoYW5nZWQgeyBmYWxzZSB9OworfTsKKworY2xhc3MgU2NvcGVkUGl4ZWxTdG9yYWdl
TW9kZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSk7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZShHTGVudW0gbmFt
ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQorICAgICAgICA6IG1fbmFtZShjb25kaXRpb24gPyBu
YW1lIDogMCkKKyAgICB7CisgICAgICAgIGlmIChtX25hbWUpCisgICAgICAgICAgICBnbDo6R2V0
SW50ZWdlcnYobV9uYW1lLCAmbV9vcmlnaW5hbFZhbHVlKTsKKyAgICB9CisgICAgU2NvcGVkUGl4
ZWxTdG9yYWdlTW9kZShHTGVudW0gbmFtZSwgR0xpbnQgdmFsdWUsIGJvb2wgY29uZGl0aW9uID0g
dHJ1ZSkKKyAgICAgICAgOiBtX25hbWUoY29uZGl0aW9uID8gbmFtZSA6IDApCisgICAgeworICAg
ICAgICBpZiAobV9uYW1lKSB7CisgICAgICAgICAgICBnbDo6R2V0SW50ZWdlcnYobV9uYW1lLCAm
bV9vcmlnaW5hbFZhbHVlKTsKKyAgICAgICAgICAgIHBpeGVsU3RvcmUodmFsdWUpOworICAgICAg
ICB9CisgICAgfQorICAgIH5TY29wZWRQaXhlbFN0b3JhZ2VNb2RlKCkKKyAgICB7CisgICAgICAg
IGlmIChtX25hbWUgJiYgbV92YWx1ZUNoYW5nZWQpCisgICAgICAgICAgICBnbDo6UGl4ZWxTdG9y
ZWkobV9uYW1lLCBtX29yaWdpbmFsVmFsdWUpOworICAgIH0KKyAgICB2b2lkIHBpeGVsU3RvcmUo
R0xpbnQgdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobV9uYW1lKTsKKyAgICAgICAgaWYg
KCFtX3ZhbHVlQ2hhbmdlZCAmJiBtX29yaWdpbmFsVmFsdWUgPT0gdmFsdWUpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGdsOjpQaXhlbFN0b3JlaShtX25hbWUsIHZhbHVlKTsKKyAgICAg
ICAgbV92YWx1ZUNoYW5nZWQgPSBtX29yaWdpbmFsVmFsdWUgIT0gdmFsdWU7CisgICAgfQorICAg
IG9wZXJhdG9yIEdMaW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX25hbWUgJiYg
IW1fdmFsdWVDaGFuZ2VkKTsKKyAgICAgICAgcmV0dXJuIG1fb3JpZ2luYWxWYWx1ZTsKKyAgICB9
Citwcml2YXRlOgorICAgIGNvbnN0IEdMZW51bSBtX25hbWU7CisgICAgYm9vbCBtX3ZhbHVlQ2hh
bmdlZCB7IGZhbHNlIH07CisgICAgR0xpbnQgbV9vcmlnaW5hbFZhbHVlIHsgMCB9OworfTsKKwor
Y2xhc3MgU2NvcGVkVGV4dHVyZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkVGV4
dHVyZSk7CitwdWJsaWM6CisgICAgU2NvcGVkVGV4dHVyZSgpCisgICAgeworICAgICAgICBnbDo6
R2VuVGV4dHVyZXMoMSwgJm1fb2JqZWN0KTsKKyAgICB9CisgICAgflNjb3BlZFRleHR1cmUoKQor
ICAgIHsKKyAgICAgICAgZ2w6OkRlbGV0ZVRleHR1cmVzKDEsICZtX29iamVjdCk7CisgICAgfQor
ICAgIG9wZXJhdG9yIEdMdWludCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmpl
Y3Q7CisgICAgfQorcHJpdmF0ZToKKyAgICBHTHVpbnQgbV9vYmplY3QgeyAwdSB9OworfTsKKwor
Y2xhc3MgU2NvcGVkRnJhbWVidWZmZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3Bl
ZEZyYW1lYnVmZmVyKTsKK3B1YmxpYzoKKyAgICBTY29wZWRGcmFtZWJ1ZmZlcigpCisgICAgewor
ICAgICAgICBnbDo6R2VuRnJhbWVidWZmZXJzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIH5T
Y29wZWRGcmFtZWJ1ZmZlcigpCisgICAgeworICAgICAgICBnbDo6RGVsZXRlRnJhbWVidWZmZXJz
KDEsICZtX29iamVjdCk7CisgICAgfQorICAgIG9wZXJhdG9yIEdMdWludCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9vYmplY3Q7CisgICAgfQorcHJpdmF0ZToKKyAgICBHTHVpbnQg
bV9vYmplY3QgeyAwIH07Cit9OworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRH
TENhaXJvLmNwcAppbmRleCA0M2NkYWM4YjAxY2RhMGRmMDYyMTg2ZjE1MDAzZWEzMDhmYTIwY2Q2
Li4xZmUyNDM1MTc0N2IxZjNiMWQ5MGFkMTM5OGViNGIxYjNkY2Q4NWQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRHTENh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRHTENhaXJvLmNwcApAQCAtMTA1LDE1ICsxMDUsMzAgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywg
Y29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWlu
dFRvQ2FudmFzKFJlZjxJbWFnZURhdGE+JiYgaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBjYW52
YXNTaXplLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKCFpbWFnZVBpeGVs
cyB8fCBpbWFnZVNpemUuaXNFbXB0eSgpIHx8IGNhbnZhc1NpemUuaXNFbXB0eSgpKQorICAgIEFT
U0VSVCghaW1hZ2VEYXRhLT5zaXplKCkuaXNFbXB0eSgpKTsKKyAgICBpZiAoY2FudmFzU2l6ZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBsYXRmb3JtQ29udGV4dENhaXJvKiBw
bGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmICghcGxh
dGZvcm1Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBDb252ZXJ0IFJHQkEgdG8g
QkdSQS4gQkdSQSBpcyBDQUlST19GT1JNQVRfQVJHQjMyIG9uIGxpdHRsZS1lbmRpYW4gYXJjaGl0
ZWN0dXJlcy4KKyAgICBzaXplX3QgdG90YWxCeXRlcyA9IGltYWdlRGF0YS5kYXRhKCktPmJ5dGVM
ZW5ndGgoKTsKKyAgICB1aW50OF90KiBwaXhlbHMgPSBpbWFnZURhdGEuZGF0YSgpLT5kYXRhKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCisgICAgICAg
IHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOworCisgICAgaWYgKCFjb250ZXh0
QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkgeworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkgeworICAgICAgICAgICAgcGl4ZWxzW2kgKyAw
XSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAwXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwor
ICAgICAgICAgICAgcGl4ZWxzW2kgKyAxXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAxXSAq
IHBpeGVsc1tpICsgM10gLyAyNTUpOworICAgICAgICAgICAgcGl4ZWxzW2kgKyAyXSA9IHN0ZDo6
bWluKDI1NSwgcGl4ZWxzW2kgKyAyXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOworICAgICAgICB9
CisgICAgfQorCiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQtPmNyKCk7CiAgICAg
cGxhdGZvcm1Db250ZXh0LT5zYXZlKCk7CiAKQEAgLTEyMiw3ICsxMzcsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlt
YWdlUGl4ZWxzLCBjbwogICAgIGNhaXJvX3BhaW50KGNyKTsKIAogICAgIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IGltYWdlU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3Jl
YXRlX2Zvcl9kYXRhKAotICAgICAgICBjb25zdF9jYXN0PHVuc2lnbmVkIGNoYXIqPihpbWFnZVBp
eGVscyksIENBSVJPX0ZPUk1BVF9BUkdCMzIsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUu
aGVpZ2h0KCksIGltYWdlU2l6ZS53aWR0aCgpICogNCkpOworICAgICAgICBpbWFnZURhdGEtPmRh
dGEoKS0+ZGF0YSgpLCBDQUlST19GT1JNQVRfQVJHQjMyLCBpbWFnZURhdGEtPndpZHRoKCksIGlt
YWdlRGF0YS0+aGVpZ2h0KCksIGltYWdlRGF0YS0+d2lkdGgoKSAqIDQpKTsKIAogICAgIC8vIE9w
ZW5HTCBrZWVwcyB0aGUgcGl4ZWxzIHN0b3JlZCBib3R0b20gdXAsIHNvIHdlIG5lZWQgdG8gZmxp
cCB0aGUgaW1hZ2UgaGVyZS4KICAgICBjYWlyb190cmFuc2xhdGUoY3IsIDAsIGltYWdlU2l6ZS5o
ZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRHTENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCmluZGV4IDY4ZDVhYzgzZDkxMmU4NmVmZWJm
ZjQyMzlkZmEwNjQ2NjMwMGYxYjQuLmUyZTUxZmQwYTA2MGRhZDIxYjJkMjFhNTI4NWQ0MGQ0NzNi
YzUyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dEdMQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCkBAIC01MDUsMzYgKzUwNSwzNSBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBy
ZWxlYXNlSW1hZ2VEYXRhKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpCitzdGF0aWMg
dm9pZCByZWxlYXNlSW1hZ2VEYXRhKHZvaWQqIGltYWdlRGF0YSwgY29uc3Qgdm9pZCosIHNpemVf
dCkKIHsKLSAgICBmYXN0RnJlZShjb25zdF9jYXN0PHZvaWQqPihkYXRhKSk7CisgICAgcmVpbnRl
cnByZXRfY2FzdDxJbWFnZURhdGEqPihpbWFnZURhdGEpLT5kZXJlZigpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGltYWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNh
bnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBhaW50VG9DYW52YXMoUmVmPEltYWdlRGF0YT4mJiBpbWFnZURhdGEsIGNvbnN0
IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBp
ZiAoIWltYWdlUGl4ZWxzIHx8IGltYWdlU2l6ZS5pc0VtcHR5KCkgfHwgY2FudmFzU2l6ZS5pc0Vt
cHR5KCkpCisgICAgQVNTRVJUKCFpbWFnZURhdGEtPnNpemUoKS5pc0VtcHR5KCkpOworICAgIGlm
IChjYW52YXNTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOworICAgIGF1dG8gYXR0cnMg
PSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIC8vIElucHV0IGlzIEdMX1JHQkEgPT0ga0NHQml0
bWFwQnl0ZU9yZGVyMzJCaWcgfCBrQ0dJbWFnZUFscGhhKkxhc3QuCisgICAgLy8gR0xfQkdSQSB3
b3VsZCBiZSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGEqRmlyc3Qu
CisgICAgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZzsK
KyAgICBpZiAoIWF0dHJzLmFscGhhKQorICAgICAgICBiaXRtYXBJbmZvIHw9IGtDR0ltYWdlQWxw
aGFOb25lU2tpcExhc3Q7CisgICAgZWxzZSBpZiAoYXR0cnMucHJlbXVsdGlwbGllZEFscGhhKQor
ICAgICAgICBiaXRtYXBJbmZvIHw9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdDsKKyAg
ICBlbHNlCisgICAgICAgIGJpdG1hcEluZm8gfD0ga0NHSW1hZ2VBbHBoYUxhc3Q7CisKKyAgICBh
dXRvIGltYWdlU2l6ZSA9IGltYWdlRGF0YS0+c2l6ZSgpOwogICAgIGludCByb3dCeXRlcyA9IGlt
YWdlU2l6ZS53aWR0aCgpICogNDsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlcjsKLQotICAgIGlmIChjb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsK
LSAgICAgICAgdW5zaWduZWQgY2hhciogY29waWVkUGl4ZWxzOwotCi0gICAgICAgIGlmICghdHJ5
RmFzdENhbGxvYyhpbWFnZVNpemUuaGVpZ2h0KCksIHJvd0J5dGVzKS5nZXRWYWx1ZShjb3BpZWRQ
aXhlbHMpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1lbWNweShjb3BpZWRQaXhl
bHMsIGltYWdlUGl4ZWxzLCByb3dCeXRlcyAqIGltYWdlU2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICAg
ICAgc2l6ZV90IGRhdGFTaXplID0gcm93Qnl0ZXMgKiBpbWFnZVNpemUuaGVpZ2h0KCk7Ci0gICAg
ICAgIHZlcmlmeUltYWdlQnVmZmVySXNCaWdFbm91Z2goY29waWVkUGl4ZWxzLCBkYXRhU2l6ZSk7
Ci0gICAgICAgIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRo
RGF0YSgwLCBjb3BpZWRQaXhlbHMsIGRhdGFTaXplLCByZWxlYXNlSW1hZ2VEYXRhKSk7Ci0gICAg
fSBlbHNlIHsKICAgICAgICAgc2l6ZV90IGRhdGFTaXplID0gcm93Qnl0ZXMgKiBpbWFnZVNpemUu
aGVpZ2h0KCk7CisgICAgdWludDhfdCogaW1hZ2VQaXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+
ZGF0YSgpOwogICAgICAgICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGltYWdlUGl4ZWxz
LCBkYXRhU2l6ZSk7Ci0gICAgICAgIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlk
ZXJDcmVhdGVXaXRoRGF0YSgwLCBpbWFnZVBpeGVscywgZGF0YVNpemUsIDApKTsKLSAgICB9Cisg
ICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoJmltYWdlRGF0YS5sZWFrUmVmKCksIGltYWdlUGl4
ZWxzLCBkYXRhU2l6ZSwgcmVsZWFzZUltYWdlRGF0YSkpOwogCi0gICAgYXV0byBpbWFnZSA9IE5h
dGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCByb3dCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYo
KSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMy
SG9zdCwKKyAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1h
Z2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIHJv
d0J5dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBiaXRtYXBJbmZvLAogICAgICAgICBkYXRhUHJv
dmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkpOwogCiAg
ICAgLy8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRoZSBjYW52YXMncyBjb250ZW50IHRvIGJlIHJl
c2l6ZWQgb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5oCmluZGV4IGQ1ZTQxNjhlMzFiZWI4ZjJiYjc3NGNmN2RlMWU5NWY4ZDBiOTk2MTkuLjRk
ZWQ4ZTVmOTQ5ODI2NzE3NDZjOWU3ZjUzM2FhYzZiMThhYzZiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaApAQCAtNjMsNiArNjMsMTAg
QEAgcHVibGljOgogICAgIC8vIFByZXBhcmVzIHRoZSB0YXJnZXQgZm9yIGRpc3BsYXkgd2l0aCBh
IGNvbnRlbnRzIGJ1ZmZlci4KICAgICB2aXJ0dWFsIHZvaWQgcHJlc2VudChCdWZmZXIpID0gMDsK
IAorICAgIC8vIFJldHVybnMgdGhlIG1vc3QgcmVjZW50IHByZXNlbnRlZCBkaXNwbGF5IGJ1ZmZl
ci4gVGhlIHJlZmVyZW5jZSBpcyB2YWxpZCB1bnRpbAorICAgIC8vIG5leHQgcHJlc2VudCwgcmVj
eWNsZUJ1ZmZlciBvciBkZXRhY2hDbGllbnQgY2FsbC4KKyAgICB2aXJ0dWFsIGNvbnN0IEJ1ZmZl
ciYgZGlzcGxheUJ1ZmZlcigpIGNvbnN0ID0gMDsKKwogICAgIC8vIERldGFjaGVzIHRoZSBjbGll
bnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRs
ZS4KICAgICAvLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJlZW4gc3VibWl0dGVkLCBy
ZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUgY2FsbGluZwogICAgIC8v
IHRoaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCA4
OTFlOTc4M2UyNWZkNDc4NGUzNjg2M2IzZTZlNjgyYzI5NWNiNDI0Li5kYmU5YzA1ZDMyOGI2NWMy
NzVlYzk1MTIwNDYwMjRmM2RhNDBjODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0KQEAgLTczMCw2ICs3MzAsMzcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsK
IH0KIAorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21w
b3NpdGVkUmVzdWx0cygpCit7CisgICAgYXV0byYgZGlzcGxheUJ1ZmZlciA9IG1fc3dhcENoYWlu
LT5kaXNwbGF5QnVmZmVyKCk7CisgICAgaWYgKCFkaXNwbGF5QnVmZmVyLnN1cmZhY2UgfHwgIWRp
c3BsYXlCdWZmZXIuaGFuZGxlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoZGlz
cGxheUJ1ZmZlci5zdXJmYWNlLT5zaXplKCkgIT0gZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gTm90ZTogV2UgYXJlIHVzaW5nIEdM
IHRvIHJlYWQgdGhlIElPU3VyZmFjZS4gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywgdGhlcmUgYXJl
IG5vIGNvbnZpbmllbnQKKyAgICAvLyBmdW5jdGlvbnMgdG8gY29udmVydCB0aGUgSU9TdXJmYWNl
IHBpeGVsIGRhdGEgdG8gSW1hZ2VEYXRhLiBUaGUgaW1hZ2UgZGF0YSBlbmRzIHVwIGJlaW5nCisg
ICAgLy8gZHJhd24gdG8gYSBJbWFnZUJ1ZmZlciwgYnV0IGF0IHRoZSB0aW1lIHRoZXJlJ3Mgbm8g
ZnVuY3Rpb25zIHRvIGNvbnN0cnVjdCBhIE5hdGl2ZUltYWdlCisgICAgLy8gb3V0IG9mIGFuIElP
U3VyZmFjZSBpbiBzdWNoIGEgd2F5IHRoYXQgZHJhd2luZyB0aGUgTmF0aXZlSW1hZ2Ugd291bGQg
YmUgZ3VhcmFudGVlZCBsZWF2ZQorICAgIC8vIHRoZSBJT1N1cmZhY2UgYmUgdW5yZWZlbmNlZCBh
ZnRlciB0aGUgZHJhdyBjYWxsIGZpbmlzaGVzLgorICAgIFNjb3BlZFRleHR1cmUgdGV4dHVyZTsK
KyAgICBHQ0dMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQo
KTsKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJhd2lu
Z0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeSgpLCB0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0
ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7CisgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVU
YXJnZXQsIHRleHR1cmUpOworICAgIGlmICghRUdMX0JpbmRUZXhJbWFnZShtX2Rpc3BsYXlPYmos
IGRpc3BsYXlCdWZmZXIuaGFuZGxlLCBFR0xfQkFDS19CVUZGRVIpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgU2NvcGVkRnJhbWVidWZmZXIgZmJvOworICAg
IFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIGZib0JpbmRpbmcobV9pc0Zvcldl
YkdMMiwgbV9zdGF0ZS5ib3VuZFJlYWRGQk8sIGZibyk7CisgICAgZ2w6OkZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZVRhcmdl
dCwgdGV4dHVyZSwgMCk7CisgICAgQVNTRVJUKGdsOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdM
X0ZSQU1FQlVGRkVSKSA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSk7CisKKyAgICBhdXRvIHJl
c3VsdCA9IHJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKTsKKworICAgIEVHTEJvb2xlYW4gcmVs
ZWFzZU9rID0gRUdMX1JlbGVhc2VUZXhJbWFnZShtX2Rpc3BsYXlPYmosIGRpc3BsYXlCdWZmZXIu
aGFuZGxlLCBFR0xfQkFDS19CVUZGRVIpOworICAgIEFTU0VSVF9VTlVTRUQocmVsZWFzZU9rLCBy
ZWxlYXNlT2spOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJHTExheWVyLm1tCmluZGV4IDM4NTk3ZTRhOGY2MzNhNWVlNWRiNzQ5MzMwMjJkYzIzN2Zl
N2U0N2MuLjAzMTM4ZWYxNDMwOTg4ZDcxNWE5OGI3Nzc3ZDNhNTM4OGEzMjk5YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5t
bQpAQCAtMzksNiArMzksMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMTGF5ZXJTd2Fw
Q2hhaW4oV2ViR0xMYXllciogbGF5ZXIpICA6IG1fbGF5ZXIobGF5ZXIpIHsgfTsKICAgICB+V2Vi
R0xMYXllclN3YXBDaGFpbigpIG92ZXJyaWRlID0gZGVmYXVsdDsKICAgICB2b2lkIHByZXNlbnQo
QnVmZmVyKSBvdmVycmlkZTsKKyAgICBjb25zdCBCdWZmZXImIGRpc3BsYXlCdWZmZXIoKSBjb25z
dCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlcjsKKyAgICB9
CiAgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYg
KG1fc3BhcmVCdWZmZXIuc3VyZmFjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5jcHAKaW5kZXggMDY5ZDI4NmNlNGViYTQ4MjllMGM3MzgzZTJmM2U4YmVlNzJmZTI5Mi4uMmZl
Yjc0YzJmYWQxYjJhNjJmZjYwYzYxMjVkMWI4ZmNjZjVkYjU2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaWYgRU5BQkxFKFdFQkdM
KQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
KyNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTk0LDYgKzE5Niw1MCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB9CiAjZW5kaWYKIAordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGltYWdlRGF0YSA9IHJlYWRSZW5kZXJp
bmdSZXN1bHRzKCk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBw
YWludFRvQ2FudmFzKGltYWdlRGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBpbWFnZUJ1ZmZlci0+YmFj
a2VuZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciogaW1hZ2VCdWZmZXIpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGlmIChnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gaW1hZ2VEYXRhID0gcmVhZENvbXBvc2l0ZWRS
ZXN1bHRzKCk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBwYWlu
dFRvQ2FudmFzKGltYWdlRGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBpbWFnZUJ1ZmZlci0+YmFja2Vu
ZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0
YSgpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgaWYgKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxw
aGEgd291bGQgaW52b2x2ZSB1bnByZW11bHRpcGx5aW5nLCB3aGljaCBpcworICAgIC8vIGxvc3N5
LgorICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7Cit9
CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGY1MjRkZTky
ZGNkOWE1OThiMGZiZWY4ZDMzYjljNDQwOWI4Y2QxYjAuLjc4MDk2ZTJlYjA4NzZmOTUyN2M4NTQ3
OTBkMWFmYTczNTEyMGM4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBA
IC00MjgsOSArNDI4LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCiAgICAgLy8gSGVscGVy
IG1ldGhvZHMuCi0KLSAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciog
aW1hZ2VQaXhlbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50U2l6ZSYgY2Fu
dmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7Ci0KICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdl
ZCgpIGZpbmFsOwogICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOwogICAgIGJv
b2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CkBAIC00NTAsNyArNDQ3LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciopIGZpbmFsOwogICAgIFJlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
SW1hZ2VEYXRhKCkgZmluYWw7Ci0gICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52
YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b0NhbnZhcyhJbWFnZUJ1ZmZlciopIGZpbmFsOwogCiAjaWYgVVNFKE9QRU5HTCkgJiYgRU5BQkxF
KFdFQkdMMikKICAgICB2b2lkIHByaW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCk7CkBAIC01
MzAsMTAgKzUyNywxMSBAQCBwcml2YXRlOgogICAgIC8vIERpZCB0aGUgbW9zdCByZWNlbnQgZHJh
d2luZyBvcGVyYXRpb24gbGVhdmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0YXRlPwogICAg
IHZvaWQgY2hlY2tHUFVTdGF0dXMoKTsKIAotICAgIC8vIFJlYWQgcmVuZGVyaW5nIHJlc3VsdHMg
aW50byBhIHBpeGVsIGFycmF5IHdpdGggdGhlIHNhbWUgZm9ybWF0IGFzIHRoZQotICAgIC8vIGJh
Y2tidWZmZXIuCi0gICAgdm9pZCByZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25lZCBjaGFyKiBw
aXhlbHMsIGludCBwaXhlbHNTaXplKTsKLSAgICB2b2lkIHJlYWRQaXhlbHNBbmRDb252ZXJ0VG9C
R1JBSWZOZWNlc3NhcnkoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2ln
bmVkIGNoYXIqIHBpeGVscyk7CisKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiByZWFkUmVuZGVyaW5n
UmVzdWx0cygpOworICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlYWRDb21wb3NpdGVkUmVzdWx0cygp
OworICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKTsKKyAg
ICB2b2lkIHBhaW50VG9DYW52YXMoUmVmPEltYWdlRGF0YT4mJiwgY29uc3QgSW50U2l6ZSYgY2Fu
dmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBib29sIHJlc2hhcGVGQk9zKGNvbnN0
IEludFNpemUmKTsKICAgICB2b2lkIHByZXBhcmVUZXh0dXJlSW1wbCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCBmNDE0ZjljOTYzNGQ2MWI4ZDkw
MTVkNWE2YWZhNTI3Y2MzNDJiZThmLi4yOWRmN2M5MDEzY2I5MTU5MzRhYmFiODk0ZmFiMjZjOWQ3
ZmU3NzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2lmIEVOQUJMRShXRUJHTCkgJiYgVVNFKE9QRU5HTCkKIAogI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgpAQCAtNjEsMzcgKzYyLDI2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vz
c2FyeShpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciog
cGl4ZWxzKQorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQ
aXhlbHNGb3JQYWludFJlc3VsdHMoKQogewotICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmli
dXRlcygpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoZ2V0SW50ZXJu
YWxGcmFtZWJ1ZmZlclNpemUoKSk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgR0xpbnQgcGFja0FsaWdubWVudCA9IDQ7CisgICAgYm9vbCBtdXN0
UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSBmYWxzZTsKKyAgICA6OmdsR2V0SW50ZWdlcnYoR0xfUEFD
S19BTElHTk1FTlQsICZwYWNrQWxpZ25tZW50KTsKKyAgICBpZiAocGFja0FsaWdubWVudCA+IDQp
IHsKKyAgICAgICAgOjpnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05NRU5ULCA0KTsKKyAgICAg
ICAgbXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gdHJ1ZTsKKyAgICB9CiAKLSAgICAvLyBOVklE
SUEgZHJpdmVycyBoYXZlIGEgYnVnIHdoZXJlIGNhbGxpbmcgcmVhZFBpeGVscyBpbiBCR1JBIGNh
biByZXR1cm4gdGhlIHdyb25nIHZhbHVlcyBmb3IgdGhlIGFscGhhIGNoYW5uZWwgd2hlbiB0aGUg
YWxwaGEgaXMgb2ZmIGZvciB0aGUgY29udGV4dC4KLSAgICBpZiAoIWF0dHJzLmFscGhhICYmIGdl
dEV4dGVuc2lvbnMoKS5pc05WSURJQSgpKSB7Ci0gICAgICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHks
IHdpZHRoLCBoZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7Ci0jaWYg
VVNFKEFDQ0VMRVJBVEUpCi0gICAgICAgIHZJbWFnZV9CdWZmZXIgc3JjOwotICAgICAgICBzcmMu
aGVpZ2h0ID0gaGVpZ2h0OwotICAgICAgICBzcmMud2lkdGggPSB3aWR0aDsKLSAgICAgICAgc3Jj
LnJvd0J5dGVzID0gd2lkdGggKiA0OwotICAgICAgICBzcmMuZGF0YSA9IHBpeGVsczsKLQotICAg
ICAgICB2SW1hZ2VfQnVmZmVyIGRlc3Q7Ci0gICAgICAgIGRlc3QuaGVpZ2h0ID0gaGVpZ2h0Owot
ICAgICAgICBkZXN0LndpZHRoID0gd2lkdGg7Ci0gICAgICAgIGRlc3Qucm93Qnl0ZXMgPSB3aWR0
aCAqIDQ7Ci0gICAgICAgIGRlc3QuZGF0YSA9IHBpeGVsczsKLQotICAgICAgICAvLyBTd2FwIHBp
eGVsIGNoYW5uZWxzIGZyb20gUkdCQSB0byBCR1JBLgotICAgICAgICBjb25zdCB1aW50OF90IG1h
cFs0XSA9IHsgMiwgMSwgMCwgMyB9OwotICAgICAgICB2SW1hZ2VQZXJtdXRlQ2hhbm5lbHNfQVJH
Qjg4ODgoJnNyYywgJmRlc3QsIG1hcCwga3ZJbWFnZU5vRmxhZ3MpOwotI2Vsc2UKLSAgICAgICAg
aW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICAgICAgc3RkOjpzd2FwKHBpeGVs
c1tpXSwgcGl4ZWxzW2kgKyAyXSk7Ci0jZW5kaWYKLSAgICB9IGVsc2UKLSAgICAgICAgOjpnbFJl
YWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgR0xfQkdSQSwgR0xfVU5TSUdORURfSU5UXzhf
OF84XzhfUkVWLCBwaXhlbHMpOworICAgIDo6Z2xSZWFkUGl4ZWxzKDAsIDAsIGltYWdlRGF0YS0+
d2lkdGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
aW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSk7CisKKyAgICBpZiAobXVzdFJlc3RvcmVQYWNrQWxp
Z25tZW50KQorICAgICAgICA6OmdsUGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIHBhY2tB
bGlnbm1lbnQpOwogCisgICAgcmV0dXJuIGltYWdlRGF0YTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENv
bW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDJkZTE4NWE2NjgxMzBhMzYyYzEyNzY3
ZjM4M2Y1N2YxMzQ5ZGQ0ODEuLmIyNWUxZGE5YTE2YmEyZTEzNDI1NjhhYjBiZmQ0ZTJmZjg3NDY2
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcApA
QCAtMTM3LDY0ICsxMzcsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0
ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaQogICAgIH0KIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQotewotICAgIENoZWNrZWQ8aW50LCBSZWNvcmRP
dmVyZmxvdz4gcm93Qnl0ZXMgPSBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+KG1fY3VycmVu
dFdpZHRoKSAqIDQ7Ci0gICAgaWYgKHJvd0J5dGVzLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgQ2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PiB0b3RhbEJ5dGVzQ2hl
Y2tlZCA9IHJvd0J5dGVzICogbV9jdXJyZW50SGVpZ2h0OwotICAgIGlmICh0b3RhbEJ5dGVzQ2hl
Y2tlZC5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpbnQgdG90YWxCeXRl
cyA9IHRvdGFsQnl0ZXNDaGVja2VkLnVuc2FmZUdldCgpOwotCi0gICAgYXV0byBwaXhlbHMgPSBt
YWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4odG90YWxCeXRlcyk7Ci0gICAgaWYgKCFwaXhl
bHMpCi0gICAgICAgIHJldHVybjsKLQotICAgIHJlYWRSZW5kZXJpbmdSZXN1bHRzKHBpeGVscy5n
ZXQoKSwgdG90YWxCeXRlcyk7Ci0KLSAgICBpZiAoIWNvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVs
dGlwbGllZEFscGhhKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsg
aSArPSA0KSB7Ci0gICAgICAgICAgICAvLyBQcmVtdWx0aXBseSBhbHBoYS4KLSAgICAgICAgICAg
IHBpeGVsc1tpICsgMF0gPSBzdGQ6Om1pbigyNTUsIHBpeGVsc1tpICsgMF0gKiBwaXhlbHNbaSAr
IDNdIC8gMjU1KTsKLSAgICAgICAgICAgIHBpeGVsc1tpICsgMV0gPSBzdGQ6Om1pbigyNTUsIHBp
eGVsc1tpICsgMV0gKiBwaXhlbHNbaSArIDNdIC8gMjU1KTsKLSAgICAgICAgICAgIHBpeGVsc1tp
ICsgMl0gPSBzdGQ6Om1pbigyNTUsIHBpeGVsc1tpICsgMl0gKiBwaXhlbHNbaSArIDNdIC8gMjU1
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHBhaW50VG9DYW52YXMocGl4ZWxzLmdldCgpLCBJ
bnRTaXplKG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpLCBpbWFnZUJ1ZmZlci0+YmFj
a2VuZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Ci19Ci0KLWJvb2wgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciopCi17Ci0gICAgLy8gTm90IG5lZWRlZCBhdCB0aGUgbW9tZW50LCBzbyByZXR1cm4gdGhhdCBu
b3RoaW5nIHdhcyBkb25lLgotICAgIHJldHVybiBmYWxzZTsKLX0KLQotUmVmUHRyPEltYWdlRGF0
YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VE
YXRhKCkKLXsKLSAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxwaGEgd291bGQgaW52b2x2
ZSB1bnByZW11bHRpcGx5aW5nLCB3aGljaCBpcwotICAgIC8vIGxvc3N5LgotICAgIGlmIChjb250
ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBhdXRvIGltYWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKEludFNpemUobV9j
dXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCkpOwotICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVs
cyA9IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCk7Ci0gICAgQ2hlY2tlZDxpbnQsIFJlY29yZE92
ZXJmbG93PiB0b3RhbEJ5dGVzQ2hlY2tlZCA9IDQgKiBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZs
b3c+KG1fY3VycmVudFdpZHRoKSAqIENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4obV9jdXJy
ZW50SGVpZ2h0KTsKLSAgICBpZiAodG90YWxCeXRlc0NoZWNrZWQuaGFzT3ZlcmZsb3dlZCgpKQot
ICAgICAgICByZXR1cm4gaW1hZ2VEYXRhOwotICAgIGludCB0b3RhbEJ5dGVzID0gdG90YWxCeXRl
c0NoZWNrZWQudW5zYWZlR2V0KCk7Ci0KLSAgICByZWFkUmVuZGVyaW5nUmVzdWx0cyhwaXhlbHMs
IHRvdGFsQnl0ZXMpOwotCi0gICAgLy8gQ29udmVydCB0byBSR0JBLgotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICBzdGQ6OnN3YXAocGl4ZWxzW2ld
LCBwaXhlbHNbaSArIDJdKTsKLQotICAgIHJldHVybiBpbWFnZURhdGE7Ci19Ci0KIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVUZXh0dXJlKCkKIHsKICAgICBpZiAobV9sYXll
ckNvbXBvc2l0ZWQpCkBAIC0yMzYsMTUgKzE3OCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnByZXBhcmVUZXh0dXJlKCkKICAgICA6OmdsRmx1c2goKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHModW5zaWduZWQgY2hhciAq
cGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSkKK1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cyhEYXRhRm9ybWF0IGZvcm1hdCkKIHsKLSAg
ICBpZiAocGl4ZWxzU2l6ZSA8IG1fY3VycmVudFdpZHRoICogbV9jdXJyZW50SGVpZ2h0ICogNCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0KICAgICBib29sIG11c3RSZXN0b3JlRkJPID0gZmFsc2U7CiAgICAgaWYg
KGNvbnRleHRBdHRyaWJ1dGVzKCkuYW50aWFsaWFzKSB7CiAgICAgICAgIHJlc29sdmVNdWx0aXNh
bXBsaW5nSWZOZWNlc3NhcnkoKTsKQEAgLTI1NywyMiArMTkyLDEwIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKHVuc2lnbmVkIGNoYXIgKnBpeGVs
cywgaW50IHBpCiAgICAgICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29u
dGV4dEdMOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAgICAgICB9CiAgICAgfQotCi0gICAgR0xp
bnQgcGFja0FsaWdubWVudCA9IDQ7Ci0gICAgYm9vbCBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQg
PSBmYWxzZTsKLSAgICA6OmdsR2V0SW50ZWdlcnYoR0xfUEFDS19BTElHTk1FTlQsICZwYWNrQWxp
Z25tZW50KTsKLSAgICBpZiAocGFja0FsaWdubWVudCA+IDQpIHsKLSAgICAgICAgOjpnbFBpeGVs
U3RvcmVpKEdMX1BBQ0tfQUxJR05NRU5ULCA0KTsKLSAgICAgICAgbXVzdFJlc3RvcmVQYWNrQWxp
Z25tZW50ID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlm
TmVjZXNzYXJ5KDAsIDAsIG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIHBpeGVscyk7
Ci0KLSAgICBpZiAobXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50KQotICAgICAgICA6OmdsUGl4ZWxT
dG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIHBhY2tBbGlnbm1lbnQpOwotCisgICAgYXV0byByZXN1
bHQgPSByZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKGZvcm1hdCk7CiAgICAgaWYgKG11c3RSZXN0
b3JlRkJPKQogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdM
OjpGUkFNRUJVRkZFUiwgbV9zdGF0ZS5ib3VuZERyYXdGQk8pOworICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCmluZGV4
IDBkNDc2YzIyOWQ2ZjZlZTk2Y2NmOTkzZDgxZDVjM2RkNjUyMTVlNDguLmU0MWI3ZDRkZmRlMTM5
ZjUxMjY2ZjA3MzMzNmUyYTE2ZWU4NzVjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xFUy5jcHAKQEAgLTY0LDE1ICs2NCwyNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LAogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX211bHRpc2Ft
cGxlRkJPKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0Fu
ZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeShpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhl
aWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogewotICAgIDo6Z2xS
ZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
IHBpeGVscyk7Ci0gICAgaW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAg
aWYgKGlzR0xFUzJDb21wbGlhbnQoKSkgewotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRv
dGFsQnl0ZXM7IGkgKz0gNCkKLSAgICAgICAgICAgIHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVs
c1tpICsgMl0pOyAvLyBDb252ZXJ0IHRvIEJHUkEuCisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFn
ZURhdGE6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKKyAgICBpZiAoIWlt
YWdlRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBHTGludCBwYWNrQWxpZ25t
ZW50ID0gNDsKKyAgICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOworICAg
IDo6Z2xHZXRJbnRlZ2VydihHTF9QQUNLX0FMSUdOTUVOVCwgJnBhY2tBbGlnbm1lbnQpOworICAg
IGlmIChwYWNrQWxpZ25tZW50ID4gNCkgeworICAgICAgICA6OmdsUGl4ZWxTdG9yZWkoR0xfUEFD
S19BTElHTk1FTlQsIDQpOworICAgICAgICBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSB0cnVl
OwogICAgIH0KLX0KKworICAgIDo6Z2xSZWFkUGl4ZWxzKDAsIDAsIGltYWdlRGF0YS0+d2lkdGgo
KSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgaW1hZ2VE
YXRhLT5kYXRhKCktPmRhdGEoKSk7CisKKyAgICBpZiAobXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50
KQorICAgICAgICA6OmdsUGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIHBhY2tBbGlnbm1l
bnQpOworCisgICAgcmV0dXJuIGltYWdlRGF0YTsKIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hLmNwcAppbmRleCBlN2M0MGM5ODVjYjdkMjcyMjg2OWE1ZGZmOTY5MTk0
NzA3N2FmNDZjLi44ZTJkMWZjNjUxODYyODM5NWU5NzQxYzQ0ZTdhYzg1MWIwOGVmNjI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC00OCw2ICs0OCw3IEBAIHB1Ymxp
YzoKICAgICAvLyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiBvdmVycmlkZXMu
CiAgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBmaW5hbDsKICAgICB2b2lkIHByZXNlbnQoQnVm
ZmVyKSBmaW5hbDsKKyAgICBjb25zdCBCdWZmZXImIGRpc3BsYXlCdWZmZXIoKSBjb25zdCBmaW5h
bDsKICAgICB2b2lkKiBkZXRhY2hDbGllbnQoKSBmaW5hbDsKIHByaXZhdGU6CiAgICAgR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBtX2Rpc3BsYXlCdWZmZXI7CkBA
IC03Niw2ICs3NywxMSBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXNl
bnQoQnVmZmVyIGJ1ZmZlcikKICAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CiB9CiAKK2NvbnN0IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXIm
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmRpc3BsYXlCdWZmZXIoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2Rpc3BsYXlCdWZmZXI7Cit9CisKIHZvaWQqIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmRldGFjaENsaWVudCgpCiB7CiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2Uo
bV9kaXNwbGF5QnVmZmVyLmhhbmRsZSwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmNwcAppbmRleCAzNGEwNmZiMDA3NmFjZDNmZDMyYjNhNGI2YjA5ZDY4
ZDAyN2JiNTg4Li41M2RiNjE1MGMxZDhlYzgyNWUyM2FiZWY2NTFlNWIzYjk3OTkyNDVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTEyMSw2ICsxMjEs
MTEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIFJl
ZlB0cjxJbWFnZURhdGE+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRleCBkOTllZGEyOWY2ZGI1ZTE4MTk3
MTMxNzhmMmFhNTMxYjRmNWRkNmUwLi5hMTQzOTM0N2Q4OWUwYWRiZjA4YTQyYTQyNTkxYmJiM2Ri
ZWIyMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtNzEs
NiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkgZmlu
YWw7CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciopIGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IHBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkgZmluYWw7CisgICAgdm9pZCBwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXIqKSBmaW5hbDsKIAogICAgIC8v
IEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMg
dXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KICAgICB2b2lkIHNldEZhaWxOZXh0
R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsK
</data>
<flag name="commit-queue"
          id="433932"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416411</attachid>
            <date>2020-12-17 03:39:10 -0800</date>
            <delta_ts>2020-12-17 03:42:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219946-20201217133908.patch</filename>
            <type>text/plain</type>
            <size>63617</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMwMGNiMzk4NTY1MjRm
YzAxZWY4N2I5ZDkxYWQ4NWRjZmU3YTY5ZS4uN2IyZTM4NjdmYjQ1ZWUyMzI3MmRhNzZkMmM1ZmI5
YTU5OTk4NGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAyMC0xMi0xNyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04g
KHIyNjgzODYpOiBTbmFwc2hvdHMgb2YgV2ViR0wgY29udGVudCBpbiB0aGUgdGFiIHBpY2tlciBk
b24ndCB3b3JrIChibGFjayBtYXAgb24gR29vZ2xlIE1hcHMpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcyMDEzNzg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZpeCBjYXNlIHdoZXJlIFdlYkdMIHdvdWxkIGZpcnN0IGJlIGRpc3BsYXllZCB3aXRo
IGhhcmR3YXJlIGNvZGUgcGF0aAorICAgICAgICBhbmQgdGhlbiBkaXNwbGF5ZWQgd2l0aCBzb2Z0
d2FyZSBjb2RlIHBhdGggKHBhaW50aW5nIGZyb20gdGhlIHBhaW50CisgICAgICAgIHRyZWUpLiBG
b3JtZXIgaGFwcGVucyB3aGVuIHVzZXIgbG9va3MgYXQgdGhlIHBhZ2UgYW5kIGxhdHRlciBoYXBw
ZW5zCisgICAgICAgIHdoZW4gcHJpbnRpbmcgb3Igd2hlbiBTYWZhcmkgdGFrZXMgYSBzbmFwc2hv
dC4KKworICAgICAgICBUaGlzIGlzIG5vdCBhIHJlYWwgcmVncmVzc2lvbiBvZiByMjY4Mzg2LiBQ
cmlvciB0byB0aGF0LCB0aGUgc29mdHdhcmUKKyAgICAgICAgZGlzcGxheSB3b3VsZCBoYXZlIHVz
ZWQgdW5pbml0aWFsaXplZCBJT1N1cmZhY2UgY29udGVudHMgb3IgY29udGVudHMgb2YKKyAgICAg
ICAgMS0yIGZyYW1lcyBwcmlvciBhbmQgd291bGQgbGVhdmUgdGhlIGhhcmR3YXJlIGRpc3BsYXkg
YnVmZmVyIG5vdAorICAgICAgICB1cGRhdGVkLgorCisgICAgICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaXMgdXNlZCBmb3IgdHdvCisg
ICAgICAgIHB1cnBvc2VzOgorICAgICAgICAgIDEpIEltYWdlIGV4dHJhY3Rpb24gdXNlcywgc3Vj
aCBhcyB0b0RhdGEoKSBvcgorICAgICAgICAgICAgIGNvbnN0cnVjdGluZyBhbiBJbWFnZSBvdXQg
b2YgdGhlIGNvbnRlbnRzLgorICAgICAgICAgIDIpIFBhaW50aW5nIHRoZSByZW5kZXJpbmcgdG8g
dGhlIGRvY3VtZW50IGR1cmluZyBzb2Z0d2FyZSBkaXNwbGF5LgorCisgICAgICAgIFRoZSAxKSBj
YXNlIHVzZXMgYWx3YXlzIHRoZSBkcmF3aW5nIGJ1ZmZlci4KKworICAgICAgICBUaGUgMikgY2Fz
ZSBwcmVzZW50cyB0aGUgZHJhd2luZyBidWZmZXIgYXMgdGhlIG5ldyBkaXNwbGF5IGJ1ZmZlciBp
ZgorICAgICAgICB0aGVyZSBhcmUgY2hhbmdlcyB0byB0aGUgZHJhd2luZyBidWZmZXIgYW5kIHVz
ZXMgdGhlIHBvdGVudGlhbGx5IG5ldworICAgICAgICBkaXNwbGF5IGJ1ZmZlciB0byBkaXNwbGF5
LgorCisgICAgICAgIEZvciAyRCBjYW52YXMsIHRoZXNlIHR3byBjYXNlcyBhcmUgdGhlIHNhbWUg
Y2FzZS4gRm9yIFdlYkdMIHRoZXkgYXJlCisgICAgICAgIGRpZmZlcmVudC4KKworICAgICAgICBU
aGUgZGlzcGxheSBpcyBkZXN0cnVjdGl2ZSBmb3IgV2ViR0wgZHJhd2luZyBidWZmZXIgd2hlbgor
ICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPT0gZmFsc2UuIFRoaXMgbWVhbnMgdGhhdCBp
ZiBoYXJkd2FyZSBkaXNwbGF5IGhhcworICAgICAgICBoYXBwZW5lZCwgd2UgbXVzdCByZWFkIHRo
ZSBkaXNwbGF5IGJ1ZmZlciBkdXJpbmcgY2FzZSAyLiBUaGlzIGNvZGUgd2FzCisgICAgICAgIG1p
c3NpbmcsIHNvIHRoZSBzY2VuYXJpbyBjb3VsZCBub3QgaGF2ZSBldmVyIHdvcmtlZC4KKworICAg
ICAgICBUaGUgcHJldmlvdXMgY29kZSB0cmllZCB0byB3b3JrYXJvdW5kIHRoaXMgYnkgdGhlCisg
ICAgICAgIFdlYkdMR3JhcGhpY3NDb250ZXh0QmFzZSB0byBkZXRlY3Qgd2hhdCB0aGUgb3duZXIg
aW50ZW5kZWQgd2l0aCB0aGUKKyAgICAgICAgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMs
IHRoZW4gc2tpcCB0aGUgcG90ZW50aWFsIGRyYXdpbmcgYnVmZmVyCisgICAgICAgIGNsZWFyLCBy
ZWFkIHRoZSBkcmF3aW5nIGJ1ZmZlciBhbmQgcHV0IHRoYXQgZGF0YSB0byB0aGUgInByZXNlbnRh
dGlvbgorICAgICAgICBjb3B5IiBvZiB0aGUgSFRNTEVsZW1lbnQuIFRoaXMgaXMgbm90IG9rLCBh
cyB0aGUgdW5jbGVhcmVkIGRyYXdpbmcKKyAgICAgICAgYnVmZmVyIGhhcyBub24tZGV0ZXJtaW5p
c3RpYyBjb250ZW50cyBpbiBjYXNlIHRoZSBjb250ZXh0IGhhcyBkaXNwbGF5ZWQKKyAgICAgICAg
YW5kIHRoZSBjbGllbnQgaGFzIG5vdCBkcmF3biBuZXcgY29udGVudCB0byB0aGUgZHJhd2luZyBi
dWZmZXIuCisKKyAgICAgICAgRml4IGJ5IHJlbW92aW5nIHRoZSAicHJlc2VudGF0aW9uIGNvcHki
IG9mIHRoZSBIVE1MQ2FudmFzLiBUaGUKKyAgICAgICAgcHJlc2VudGF0aW9uIGltYWdlIGNhbiBh
bHdheXMgYmUgZHJhd24gdG8gdGhlIENhbnZhc0Jhc2U6OmJ1ZmZlcigpOgorICAgICAgICAgLSBU
aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGlzIHRoZSBwcmVzZW50YXRpb24gaW1h
Z2UgaWYgdGhlCisgICAgICAgICAgIGNvbnRleHQgaGFzIG5vdCBjaGFuZ2VkIHNpbmNlIHVwZGF0
aW5nIHRoZSBidWZmZXIgd2l0aCBlaXRoZXIgZHJhd2luZworICAgICAgICAgICBidWZmZXIgb3Ig
cHJldmlvdXMgZGlzcGxheSBidWZmZXIuCisgICAgICAgICAtIElmIHRoZSBjb250ZXh0IGhhcyBj
aGFuZ2VkLCB3ZSBtdXN0IHByZXNlbnQgYW5kIHB1dCB0aGUgbmV3IGRpc3BsYXkKKyAgICAgICAg
ICAgYnVmZmVyIHRvIHRoZSBDYW52YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgLSBUaGlzIGlz
IGFsc28gY29ycmVjdCBjb250ZW50cyBmb3IgdGhlIHBvdGVudGlhbCBuZXh0IGltYWdlIGV4dHJh
Y3Rpb24KKyAgICAgICAgICAgdXNlcywgdXAgdG8gYSBwb2ludCB3aGVuIGNvbnRleHQgY2hhbmdl
cy4KKyAgICAgICAgIC0gSWYgdGhlIGNvbnRleHQgY2hhbmdlcyBiZWZvcmUgYW4gaW1hZ2UgZXh0
cmFjdGlvbiB1c2UsIENhbnZhc0Jhc2U6OmJ1ZmZlcigpIGlzCisgICAgICAgICAgIHVwZGF0ZWQg
d2l0aCB0aGUgbm9ybWFsIGxvZ2ljLCB0aGUgc2FtZSBhcyB3aGF0IGhhcHBlbnMgd2hlbiBDYW52
YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgICBpcyB1cGRhdGVkIGJldHdlZW4gdHdvIGltYWdl
IGV4dHJhY3Rpb24gdXNlcy4KKworICAgICAgICBQcmlvciB0byB0aGlzLCB0aGVyZSB3YXMgYW4g
dW5uZWVkZWQgYW5kIGluY29ycmVjdGx5IGltcGxlbWVudGVkCisgICAgICAgIEdQVUNhbnZhc0Nv
bnRleHQ6Om1hcmtMYXllckNvbXBvc2l0ZWQoKS4gVGhlIHNlcXVlbmNlIHdvdWxkIGJlOgorCisg
ICAgICAgIEhUTUxDYW52YXNFbGVtZW50OjpwYWludCgpOgorICAgICAgICAgICBjYW52YXNDb250
ZXh0KCkucGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoYnVmZmVyKCkpOworICAgICAgICAg
ICBjb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlcigpKTsKKyAgICAgICAgICAgY2FudmFz
Q29udGV4dCgpLm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKworICAgICAgICBUaGUgbWFya0xheWVy
Q29tcG9zaXRlZCgpIHdvdWxkIGluY29ycmVjdGx5IG1hcmsgdGhlIFdlYkdMIGNvbnRleHQgY29t
cG9zaXRpbmcKKyAgICAgICAgYmVpbmcgZG9uZSwgYnV0IHRoZXJlIHdhcyBubyBjb21wb3NpdGlu
ZyBhY3R1YWxseSBoYXBwZW5pbmcuIFRoZSBHUFUtc2lkZQorICAgICAgICBkaXNwbGF5IGJ1ZmZl
ciB3b3VsZCBiZSBpbmNvcnJlY3QuIEFsc28sIHRoZXJlIGlzIG5vdGhpbmcgdG8gYmUgZG9uZSBh
dAorICAgICAgICB0aGlzIHN0YWdlLCBhcyB0aGUgY29tcG9zaXRpbmcgb2YgV2ViR0wgY29udGV4
dCBpdHNlbGYgaXMgYWxyZWFkeQorICAgICAgICBmaW5pc2hlZCBhdCBXZWJHTCBjb250ZXh0IHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgcmV0dXJuLgorCisgICAgICAgIEluc3RlYWQs
IGFkZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgp
IHdoaWNoIHNpZ25hbHMgdGhhdCBuZXh0CisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKCkgaXMgYSBkaXNwbGF5IG9wZXJhdGlvbi4gVGhpcyBjYW4gYmUgdXNlZCB0byB0byBk
ZXRlY3QgdGhlCisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaW4gd2hp
Y2ggd2UgbXVzdCBwcmVzZW50IHRoZSBkcmF3aW5nIGJ1ZmZlciBhcworICAgICAgICBkaXNwbGF5
IGJ1ZmZlci4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGRpc3BsYXkgYnVmZmVyIHJlYWQgd2l0
aCBPcGVuR0wuCisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGRyYXdpbmcgYnVmZmVyIHJlYWQgY29k
ZSB0byBiZSBhYmxlIHRvIHJldXNlIHRoZSByZWFkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBkaXNw
bGF5IGJ1ZmZlciByZWFkLiBUaGUgcmVmYWN0b3JlZCBjb2RlIHJlZHVjZXMgcmVkdW5kYW50IHRo
ZQorICAgICAgICBhbGxvY2F0aW9ucyBvZiBmdWxsLXNjcmVlbiBtYWxsb2MgYnVmZmVycyBhbmQg
ZW5zdXJlcyBhbGxvY2F0aW9uIHJlc3VsdHMgYXJlCisgICAgICAgIGNoZWNrZWQgaW5zdGVhZCBv
ZiBjcmFzaGluZyB3aXRoIG51bGxwdHIgZGVyZWZzIHdoZW4gT09NIGhhcHBlbnMuIEZpeGVzCisg
ICAgICAgIGVycm9ycyBzdWNoIGFzIHJkYXI6Ly82NzU1MzUzMSAoQ3Jhc2hUcmFjZXI6IGNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdAorICAgICAgICBXZWJDb3JlOiBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpLgorICAg
ICAgICBSZW1vdmVzIFJHQkEtPkJHUkEtPlJHQkEgY29udmVyc2lvbnMgZnJvbQorICAgICAgICBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEo
KS4KKyAgICAgICAgUmVtb3ZlcyBtYW51YWwgYWxwaGEgcHJlbXVsdGlwbGljYXRpb24gYW5kIG1h
a2VzIENHIGRyYXcgd2l0aCB1bnByZW11bHRpcGxpZWQKKyAgICAgICAgYWxwaGEuCisgICAgICAg
IENoYW5nZXMgQ2Fpcm8gdmFyaWFudCBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB0byBjb252
ZXJ0IG1hbnVhbGx5IFJHQkEtPkJHUkEKKyAgICAgICAgaW5zdGVhZCBvZiAoYmlnKSBPcGVuR0wg
ZHJpdmVyIGRvaW5nIGl0IGluIGNhc2Ugb2Ygbm9uLU5WSURJQSBwbGF0Zm9ybXMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCB0aGUgc25hcHNob3QgLyBzdytodyBkcmF3aW5nIGlzIG5vdCB0ZXN0
YWJsZSBhdCB0aGUgbW9tZW50LgorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHUFVDYW52YXNDb250ZXh0Ojpjb25maWd1
cmVTd2FwQ2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4dDo6cHJlcGFy
ZUZvckRpc3BsYXlXaXRoUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4
dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L0dQVUNhbnZhc0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYWludCk6CisgICAg
ICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9HUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByZXBhcmVGb3JEaXNwbGF5V2l0
aFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUluZGV4QXJyYXlQcmVj
aXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlRHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZlcnRleEF0dHJpYmZ2SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjppbml0VmVydGV4QXR0cmliMCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVz
dWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJl
bmRlcmluZ1Jlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmc6OlNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRCdWZmZXJCaW5kaW5nOjpTY29wZWRCdWZmZXJC
aW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6On5TY29wZWRC
dWZmZXJCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6OnF1
ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZzo6bWFya0JpbmRpbmdDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUmVzdG9yZVJl
YWRGcmFtZWJ1ZmZlckJpbmRpbmc6On5TY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRQaXhlbFN0b3JhZ2VNb2RlOjpTY29wZWRQaXhl
bFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVsU3RvcmFnZU1vZGU6
On5TY29wZWRQaXhlbFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVs
U3RvcmFnZU1vZGU6OnBpeGVsU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUGl4ZWxT
dG9yYWdlTW9kZTo6b3BlcmF0b3IgR0xpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nv
cGVkVGV4dHVyZTo6U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0
dXJlOjp+U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0dXJlOjpv
cGVyYXRvciBHTHVpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVidWZm
ZXI6OlNjb3BlZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lYnVm
ZmVyOjp+U2NvcGVkRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVi
dWZmZXI6Om9wZXJhdG9yIEdMdWludCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZWxlYXNlSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVy
ZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkQ29tcG9zaXRlZFJlc3VsdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9y
UGFpbnRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYkltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om9y
aWdpbmFsU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6bWFwcGVkU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5m
b0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cyk6CisKIDIwMjAtMTItMTQg
IExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU1NJT04o
MjcwNDM1KSBbR1N0cmVhbWVyXSBNYW55IG1lZGlhIHNvdXJjZSB0ZXN0cyBmYWlsaW5nIGFuZCB0
aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwMzI4Y2Y2ZTg0NWY3NTNlNjQyYjQ1M2I4NjMxMTgxN2Q0
YzA2YzkuLmUwODk5YTkyYmMyMGMzNTliYTgwN2IyODEwYjBkZDg5ZWIyMmRjOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTItMTcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVu
QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjY4Mzg2KTogU25hcHNob3RzIG9m
IFdlYkdMIGNvbnRlbnQgaW4gdGhlIHRhYiBwaWNrZXIgZG9uJ3Qgd29yayAoYmxhY2sgbWFwIG9u
IEdvb2dsZSBNYXBzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5OTQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjAxMzc4ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZHVtbXkgaW1wbGVt
ZW50YXRpb25zIG9mIEdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9D
YW52YXMuCisgICAgICAgIFBhaW50aW5nIHRvIGNhbnZhcyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0
IGZvciB0aGUgcmVtb3RlIEdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6ZGlzcGxh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oOgorCiAyMDIwLTEyLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gSW50cm9kdWNlIHZtRW50cnlDdXN0b21BY2Nlc3NvciBhbmQgdm1FbnRy
eUhvc3RGdW5jdGlvbiBmb3IgSklUQ2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcAppbmRleCBlMzAzNTBiNDYyYTBmZWQ0NDY2OGJm
ODk2MDI5MjkzZTExNzhlODg3Li4zOGIxNTI4ZmZjM2E5NTI1ODUwYTk0ZDY1ZWQyNzk0YTRkODA0
YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcApAQCAtOTAsMTAgKzkwLDE4IEBAIHZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgbm90aWZ5Q2FudmFzQ29udGVudENoYW5n
ZWQoKTsKIH0KIAotdm9pZCBHUFVDYW52YXNDb250ZXh0OjptYXJrTGF5ZXJDb21wb3NpdGVkKCkK
K3ZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQogewot
ICAgIGlmIChtX3N3YXBDaGFpbiAmJiBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCkpCisgICAgbV9p
c0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSB0cnVlOworfQorCit2b2lkIEdQVUNhbnZhc0NvbnRleHQ6
OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKK3sKKyAgICAvLyBGSVhNRTogVW5pbXBs
ZW1lbnRlZC4KKyAgICBpZiAobV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgJiYgbV9zd2FwQ2hhaW4g
JiYgbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpKSB7CiAgICAgICAgIG1fc3dhcENoYWluLT5zd2Fw
Q2hhaW4oKS0+cHJlc2VudCgpOworICAgICAgICBtX2lzRGlzcGxheWluZ1dpdGhQYWludCA9IGZh
bHNlOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oCmluZGV4IDZkZjIwYjRhNjQ3
ZjZhMTg3OGIzODE1NmMyZDA3MTA3NjU0MzJhOGQuLjliMGZlN2IwZDA4Y2U5M2M3ZWNhODY5NGEw
MGQxNjMyZTEzZDBjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUNhbnZhc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVDYW52YXNDb250ZXh0LmgKQEAgLTUzLDEzICs1MywxNSBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNXZWJHUFUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpIGZpbmFsOwotICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZp
bmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSBmaW5hbDsKKyAgICB2
b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgZmluYWw7CiAKICAgICAvLyBBY3Rp
dmVET01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJHUFVDYW52YXNDb250ZXh0IjsgfQogICAgIC8vIEZJWE1FOiBTdHVi
cy4KICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IH0KIAorICAgIGJvb2wgbV9pc0Rpc3BsYXlpbmdX
aXRoUGFpbnQgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxXZWJHUFVTd2FwQ2hhaW4+IG1fc3dhcENo
YWluOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRl
eCAxNjljYWE5MDAyNGQyNjc3MjMwNTA2MmY1OThkMTJjY2RkYmFiM2ZmLi41NGIzNDAxZGU5MGYy
MmE4OWI2OTYyN2ZiNDAxZDg1NTVkNTY3ZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcApAQCAtNjQyLDIwICs2NDIsMTcgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBy
KQogCiAgICAgICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgICAgIHNob3VsZFBhaW50ID0g
cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIHx8IGRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCBtX2lz
U25hcHNob3R0aW5nOwotICAgICAgICAgICAgaWYgKHNob3VsZFBhaW50KQorICAgICAgICAgICAg
aWYgKHNob3VsZFBhaW50KSB7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9y
RGlzcGxheVdpdGhQYWludCgpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChzaG91bGRQYWludCkgewogICAgICAgICAgICAgaWYgKGhhc0NyZWF0ZWRJbWFnZUJ1
ZmZlcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fcHJlc2VudGVkSW1hZ2UpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVk
SW50UmVjdChyKSwgcmVuZGVyZXIoKS0+aW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBidWZmZXIoKSkKKyAgICAg
ICAgICAgICAgICBpZiAoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gYnVmZmVyKCkpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgc25h
cHBlZEludFJlY3QocikpOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoaXNHUFVC
YXNlZCgpKQotICAgICAgICAgICAgICAgIGRvd25jYXN0PEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5n
Q29udGV4dD4oKm1fY29udGV4dCkubWFya0xheWVyQ29tcG9zaXRlZCgpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC02NjgsMTkgKzY2NSw2IEBAIGJvb2wgSFRNTENhbnZhc0VsZW1lbnQ6OmlzR1BV
QmFzZWQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHQgJiYgbV9jb250ZXh0LT5pc0dQVUJh
c2VkKCk7CiB9CiAKLXZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6Om1ha2VQcmVzZW50YXRpb25Db3B5
KCkKLXsKLSAgICBpZiAoIW1fcHJlc2VudGVkSW1hZ2UpIHsKLSAgICAgICAgLy8gVGhlIGJ1ZmZl
ciBjb250YWlucyB0aGUgbGFzdCBwcmVzZW50ZWQgZGF0YSwgc28gc2F2ZSBhIGNvcHkgb2YgaXQu
Ci0gICAgICAgIG1fcHJlc2VudGVkSW1hZ2UgPSBidWZmZXIoKS0+Y29weUltYWdlKENvcHlCYWNr
aW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKLSAgICB9Ci19Ci0KLXZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OmNsZWFyUHJlc2VudGF0aW9uQ29weSgpCi17Ci0gICAgbV9wcmVzZW50
ZWRJbWFnZSA9IG51bGxwdHI7Ci19Ci0KIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnNldFN1cmZh
Y2VTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgQ2FudmFzQmFzZTo6c2V0U2l6ZShz
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCBhZWIwMTg5
NzQ5YjU4MzMzNzQ4NDA0Yzk1YmFmZWQwNDUyOGY5Y2VmLi45YzkyMzBmNWZiYjdlNmRlNGI2OWZk
NWM4NmJlZWU0MDY0YjQ0MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oCkBAIC0xMTUsOCArMTE1LDYgQEAgcHVibGljOgogICAgIEltYWdlKiBjb3BpZWRJbWFnZSgp
IGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY2xlYXJDb3BpZWRJbWFnZSgpIGNvbnN0IGZpbmFsOwog
ICAgIFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YSgpOwotICAgIHZvaWQgbWFrZVByZXNl
bnRhdGlvbkNvcHkoKTsKLSAgICB2b2lkIGNsZWFyUHJlc2VudGF0aW9uQ29weSgpOwogCiAgICAg
U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWw7CiAKQEAgLTE5OSw3
ICsxOTcsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lzU25hcHNob3R0aW5nIHsgZmFsc2Ug
fTsKIAotICAgIG11dGFibGUgUmVmUHRyPEltYWdlPiBtX3ByZXNlbnRlZEltYWdlOwogICAgIG11
dGFibGUgUmVmUHRyPEltYWdlPiBtX2NvcGllZEltYWdlOyAvLyBGSVhNRTogVGhpcyBpcyB0ZW1w
b3JhcnkgZm9yIHBsYXRmb3JtcyB0aGF0IGhhdmUgdG8gY29weSB0aGUgaW1hZ2UgYnVmZmVyIHRv
IHJlbmRlciAoYW5kIGZvciBDU1NDYW52YXNWYWx1ZSkuCiB9OwogCkBAIC0yMTYsNCArMjEzLDMg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3QgV2ViQ29yZTo6
RXZlbnRUYXJnZXQmIHRhcmdldCkgeyByZXR1cm4gaXM8V2ViQ29yZTo6Tm9kZT4odGFyZ2V0KSAm
JiBjaGVja1RhZ05hbWUoZG93bmNhc3Q8V2ViQ29yZTo6Tm9kZT4odGFyZ2V0KSk7IH0KIH07CiB9
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuaAppbmRleCBhY2Y4M2JiNzJkY2E3MDFjMGZjYzY3MzhjMWQ4NmNhMTE3OGZkNDk0Li5m
Mzg4NjNmNzhmZWUzZmY4OTkyOWM3NGM0N2NhMmU1MzQxOTkwMDU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC03MSw2
ICs3MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNPZmZzY3JlZW4yZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGFpbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCisgICAgLy8gQ2FsbGVkIGJlZm9yZSBwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0NhbnZhcyBpZiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyBpcworICAgIC8vIHVz
ZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2VzLgorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9y
RGlzcGxheVdpdGhQYWludCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0NhbnZhcygpIHt9CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9HUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDQ3
YTAyZWI3MDZjZTQ1ZDg4ZjE5NzU0YmI3ZDhiZWZmOWIxZjk0MmMuLjg5MGNkNzIzNTAxZTA0ZTI4
ZTgyZjc3YTBiNjlkYmVkNTlhNDg1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC01MCw4
ICs1MCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzaGFwZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFya0xheWVyQ29tcG9z
aXRlZCgpID0gMDsKLQogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEdQVUJhc2VkQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMDEzYjg5
YWY0ODg4Yjg3YzBmNjQ4ZTUyY2I1NjFjZGI5MWM1NDk3My4uMzBkOWU3ZTkxYTQzYzM5ZTgxMmY3
YmI1MmI1MTA2OGJjOTM2NzU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTExOTksMTEgKzExOTks
MTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZXN0b3JlU3RhdGVBZnRlckNs
ZWFyKCkKICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayhtX2RlcHRoTWFzayk7CiB9CiAKLXZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWFya0xheWVyQ29tcG9zaXRlZCgpCisKK3ZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQog
ewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKyAgICBtX2lzRGlzcGxheWluZ1dp
dGhQYWludCA9IHRydWU7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQpAQCAtMTIxMSwxOCArMTIxMCwxNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KCkKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoYXV0byogY2FudmFzID0gaHRtbENhbnZhcygpKSB7Ci0gICAgICAgIGlmIChjYW52
YXMtPmRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCAoY2FudmFzLT5pc1NuYXBzaG90dGluZygpICYm
IGNhbnZhcy0+ZG9jdW1lbnQoKS5wYWdlKCktPmlzVmlzaWJsZSgpKSkKLSAgICAgICAgICAgIGNh
bnZhcy0+Y2xlYXJQcmVzZW50YXRpb25Db3B5KCk7Ci0KLSAgICAgICAgLy8gVW50aWwgdGhlIGNh
bnZhcyBpcyB3cml0dGVuIHRvIGJ5IHRoZSBhcHBsaWNhdGlvbiwgdGhlIGNsZWFyIHRoYXQKLSAg
ICAgICAgLy8gaGFwcGVuZWQgYWZ0ZXIgaXQgd2FzIGNvbXBvc2l0ZWQgc2hvdWxkIGJlIGlnbm9y
ZWQgYnkgdGhlIGNvbXBvc2l0b3IuCi0gICAgICAgIGlmIChtX2NvbnRleHQtPmxheWVyQ29tcG9z
aXRlZCgpICYmICFtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKGNhbnZhcy0+YnVm
ZmVyKCkpOwotCi0gICAgICAgICAgICBjYW52YXMtPm1ha2VQcmVzZW50YXRpb25Db3B5KCk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2FudmFzLT5jbGVhclByZXNlbnRhdGlvbkNvcHko
KTsKKyAgICBpZiAobV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQpIHsKKyAgICAgICAgYm9vbCBjYW52
YXNDb250YWluc0Rpc3BsYXlCdWZmZXIgPSAhbV9tYXJrZWRDYW52YXNEaXJ0eTsKKyAgICAgICAg
cHJlcGFyZUZvckRpc3BsYXkoKTsKKyAgICAgICAgbV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSBm
YWxzZTsKKyAgICAgICAgaWYgKCFjYW52YXNDb250YWluc0Rpc3BsYXlCdWZmZXIpIHsKKyAgICAg
ICAgICAgIGF1dG8mIGJhc2UgPSBjYW52YXNCYXNlKCk7CisgICAgICAgICAgICBiYXNlLmNsZWFy
Q29waWVkSW1hZ2UoKTsKKyAgICAgICAgICAgIG1fbWFya2VkQ2FudmFzRGlydHkgPSBmYWxzZTsK
KyAgICAgICAgICAgIG1fY29udGV4dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKGJh
c2UuYnVmZmVyKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBj
bGVhcklmQ29tcG9zaXRlZChDbGVhckNhbGxlck90aGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCAzMGE4
NTU3ZDg2ODhlMmVhNDk1ZGI3MTZmMDhiZTYwOWVjM2I0ZThhLi5lOGU5MGNmYmExNmIxNGRkMTQ4
Yzk4ZTA2OWU1MDBlY2RlMmI1NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0zODQsOCArMzg0LDggQEAg
cHVibGljOgogCiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheVdpdGhQYWludCgpIGZpbmFsOworICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoKSBmaW5hbDsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpOwogCiAgICAgdm9pZCByZW1vdmVTaGFyZWRPYmplY3QoV2Vi
R0xTaGFyZWRPYmplY3QmKTsKQEAgLTY2OCw2ICs2NjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCk7CiAKICAgICBib29sIG1fY29tcG9zaXRpbmdSZXN1
bHRzTmVlZFVwZGF0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNEaXNwbGF5aW5nV2l0aFBh
aW50IHsgZmFsc2UgfTsKIAogICAgIC8vIEVuYWJsZWQgZXh0ZW5zaW9uIG9iamVjdHMuCiAgICAg
Ly8gRklYTUU6IE1vdmUgc29tZSBvZiB0aGVzZSB0byBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIHRo
ZSBvbmVzIG5vdCBuZWVkZWQgZm9yIFdlYkdMMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggMjIzYTVjOWJmMTY5N2Yy
NWYxMTJkYmNjMTg2ZjgxOWI3Y2UxZGU0NS4uYWE4ZmYyMzY4ZGZmZDg5Y2VhYjZhNDQzMzMwZGI0
NTE2YTE4ZjlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0xMjkyLDcgKzEyOTIsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gdGhlIGNvbnRleHQuCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyKikgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlRGF0YT4g
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikg
PSAwOwogCiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQuIFRoZSBsYXllciBz
aG91bGQgYmUgbWFya2VkIGNvbXBvc2l0ZWQgYnkKICAgICAvLyBwcmVwYXJpbmcgZm9yIGRpc3Bs
YXksIHNvIHRoYXQgY2FudmFzIGltYWdlIGJ1ZmZlciBhbmQgdGhlIGxheWVyIGFncmVlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKaW5kZXggNjBmN2E5NDdlZmNiYjM3
MTU2YzA5OGUwYjVlZTMzYzNiNjJiODQ5Yi4uMzZmYWFhN2U0NjYyMmJhZjNhMTIzZmJlOTVlZTk0
YmU2NDA5ZDU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApA
QCAtOTksMTEgKzk5LDYgQEAgR0NHTGJpdGZpZWxkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdAogICAgIHJldHVybiBtX2J1ZmZl
cnNUb0F1dG9DbGVhcjsKIH0KIAotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKLXsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpCiB7CiAgICAgLy8gUmVkZWNsYXJlZCBmb3Ig
ZXhwb3J0IHJlYXNvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAppbmRl
eCA3MjZhYWY2YzZhMGY2MmZmMjgyZTViOGQyMDJhMTI5NGUxZGU4NTcxLi4yNDcxZDRlMjVjOWFh
MjAwZWM3NDNiMWZlMGM2NDY4YjBjOWE1MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmgKQEAgLTY3LDcgKzY3LDYgQEAgcHVibGljOgogICAgIGJvb2wgbGF5ZXJDb21w
b3NpdGVkKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NH
TGJpdGZpZWxkKSBmaW5hbDsKICAgICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFy
KCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMo
SW1hZ2VCdWZmZXIqKSBmaW5hbDsKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5h
bDsKICAgICB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDMwOWE1MzA5YjY0MGEzZDZhMjgxNDFj
YTdiMWE3NWRiNDZlOWY5NTEuLmI1MDQzYjc0NjM2Zjc4ODVjNWQ4MGMwNzczNTU1ZDcxMjAwMDIz
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0zMSw2ICszMSw3IEBA
CiAKICNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zR0xBTkdM
RS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKQEAgLTQ2LDkgKzQ3LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0jaWYgVVNFKEFDQ0VMRVJB
VEUpCi0jaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+Ci0jZW5kaWYKIAogI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTENWQU5HTEUuaCIKQEAgLTY0LDMwICs2Miw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIFNjb3BlZFJlc2V0QnVmZmVyQmluZGluZyB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUmVzZXRCdWZmZXJCaW5kaW5nKTsKLXB1YmxpYzoK
LSAgICBTY29wZWRSZXNldEJ1ZmZlckJpbmRpbmcoYm9vbCBzaG91bGREb1dvcmssIEdMZW51bSBi
aW5kaW5nUG9pbnRRdWVyeSwgR0xlbnVtIGJpbmRpbmdQb2ludCkKLSAgICAgICAgOiBtX2JpbmRp
bmdQb2ludFF1ZXJ5KGJpbmRpbmdQb2ludFF1ZXJ5KQotICAgICAgICAsIG1fYmluZGluZ1BvaW50
KGJpbmRpbmdQb2ludCkKLSAgICB7Ci0gICAgICAgIGlmIChzaG91bGREb1dvcmspCi0gICAgICAg
ICAgICBnbDo6R2V0SW50ZWdlcnYobV9iaW5kaW5nUG9pbnRRdWVyeSwgJm1fYmluZGluZ1ZhbHVl
KTsKLSAgICAgICAgaWYgKG1fYmluZGluZ1ZhbHVlKQotICAgICAgICAgICAgZ2w6OkJpbmRCdWZm
ZXIobV9iaW5kaW5nUG9pbnQsIDApOwotICAgIH0KLQotICAgIH5TY29wZWRSZXNldEJ1ZmZlckJp
bmRpbmcoKQotICAgIHsKLSAgICAgICAgaWYgKG1fYmluZGluZ1ZhbHVlKQotICAgICAgICAgICAg
Z2w6OkJpbmRCdWZmZXIobV9iaW5kaW5nUG9pbnQsIG1fYmluZGluZ1ZhbHVlKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgR0xpbnQgbV9iaW5kaW5nUG9pbnRRdWVyeSB7IDAgfTsKLSAgICBHTGlu
dCBtX2JpbmRpbmdQb2ludCB7IDAgfTsKLSAgICBHTGludCBtX2JpbmRpbmdWYWx1ZSB7IDAgfTsK
LX07CiAKIH0gLy8gbmFtZXNwYWNlIGFub255bW91cwogCkBAIC0xMDIsMzYgKzc2LDI5IEBAIHN0
YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGludCB3aWR0aCwgaW50IGhlaWdo
dCwgdW5zaWduZWQgY2hhciogcGl4CiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeShpbnQgeCwgaW50
IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQotewotICAg
IC8vIE5WSURJQSBkcml2ZXJzIGhhdmUgYSBidWcgd2hlcmUgY2FsbGluZyByZWFkUGl4ZWxzIGlu
IEJHUkEgY2FuIHJldHVybiB0aGUgd3JvbmcgdmFsdWVzIGZvciB0aGUgYWxwaGEgY2hhbm5lbCB3
aGVuIHRoZSBhbHBoYSBpcyBvZmYgZm9yIHRoZSBjb250ZXh0LgotICAgIGdsOjpSZWFkUGl4ZWxz
KHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7
Ci0jaWYgVVNFKEFDQ0VMRVJBVEUpCi0gICAgdkltYWdlX0J1ZmZlciBzcmM7Ci0gICAgc3JjLmhl
aWdodCA9IGhlaWdodDsKLSAgICBzcmMud2lkdGggPSB3aWR0aDsKLSAgICBzcmMucm93Qnl0ZXMg
PSB3aWR0aCAqIDQ7Ci0gICAgc3JjLmRhdGEgPSBwaXhlbHM7Ci0KLSAgICB2SW1hZ2VfQnVmZmVy
IGRlc3Q7Ci0gICAgZGVzdC5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgZGVzdC53aWR0aCA9IHdpZHRo
OwotICAgIGRlc3Qucm93Qnl0ZXMgPSB3aWR0aCAqIDQ7Ci0gICAgZGVzdC5kYXRhID0gcGl4ZWxz
OwotCi0gICAgLy8gU3dhcCBwaXhlbCBjaGFubmVscyBmcm9tIFJHQkEgdG8gQkdSQS4KLSAgICBj
b25zdCB1aW50OF90IG1hcFs0XSA9IHsgMiwgMSwgMCwgMyB9OwotICAgIHZJbWFnZVBlcm11dGVD
aGFubmVsc19BUkdCODg4OCgmc3JjLCAmZGVzdCwgbWFwLCBrdkltYWdlTm9GbGFncyk7Ci0jZWxz
ZQotICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICBzdGQ6OnN3YXAocGl4ZWxz
W2ldLCBwaXhlbHNbaSArIDJdKTsKLSNlbmRpZgotCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCit7CisgICAgYXV0
byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6
ZSgpKTsKKyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
U2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSBwYWNrQWxpZ25tZW50KEdMX1BBQ0tfQUxJR05NRU5UKTsK
KyAgICBpZiAocGFja0FsaWdubWVudCA+IDQpCisgICAgICAgIHBhY2tBbGlnbm1lbnQucGl4ZWxT
dG9yZSg0KTsKKyAgICBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlIHBhY2tSb3dMZW5ndGgoR0xfUEFD
S19ST1dfTEVOR1RILCAwLCBtX2lzRm9yV2ViR0wyKTsKKyAgICBTY29wZWRQaXhlbFN0b3JhZ2VN
b2RlIHBhY2tTa2lwUm93cyhHTF9QQUNLX1NLSVBfUk9XUywgMCwgbV9pc0ZvcldlYkdMMik7Cisg
ICAgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSBwYWNrU2tpcFBpeGVscyhHTF9QQUNLX1NLSVBfUElY
RUxTLCAwLCBtX2lzRm9yV2ViR0wyKTsKKyAgICBTY29wZWRCdWZmZXJCaW5kaW5nIHNjb3BlZFBp
eGVsUGFja0J1ZmZlclJlc2V0KEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCAwLCBtX2lzRm9yV2ViR0wy
KTsKKworICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKDAsIDAsIGltYWdlRGF0YS0+d2lk
dGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgaW1h
Z2VEYXRhLT5kYXRhKCktPmJ5dGVMZW5ndGgoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
aW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSk7CisgICAgLy8gRklYTUU6IFJlbmRlcmluZyB0byBH
TF9SR0IgdGV4dHVyZXMgd2l0aCBhIElPU3VyZmFjZSBib3VuZCB0byB0aGUgdGV4dHVyZSBpbWFn
ZSBsZWF2ZXMKKyAgICAvLyB0aGUgYWxwaGEgaW4gdGhlIElPU3VyZmFjZSBpbiBpbmNvcnJlY3Qg
c3RhdGUuIEFsc28gQU5HTEUgZ2w6OlJlYWRQaXhlbHMgd2lsbCBpbiBzb21lCisgICAgLy8gY2Fz
ZXMgZXhwb3NlIHRoZSBub24tMjU1IHZhbHVlcy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODA0CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmICghY29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSkKLSAgICAg
ICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdodCwgcGl4ZWxzKTsKKyAg
ICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFn
ZURhdGEtPmhlaWdodCgpLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpKTsKICNlbmRpZgorICAg
IHJldHVybiBpbWFnZURhdGE7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZh
bGlkYXRlQXR0cmlidXRlcygpCkBAIC01MTAsNjQgKzQ3Nyw2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRo
U3RlbmNpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCi17Ci0gICAg
Q2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PiByb3dCeXRlcyA9IENoZWNrZWQ8aW50LCBSZWNv
cmRPdmVyZmxvdz4obV9jdXJyZW50V2lkdGgpICogNDsKLSAgICBpZiAocm93Qnl0ZXMuaGFzT3Zl
cmZsb3dlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDaGVja2VkPGludCwgUmVjb3JkT3Zl
cmZsb3c+IHRvdGFsQnl0ZXNDaGVja2VkID0gcm93Qnl0ZXMgKiBtX2N1cnJlbnRIZWlnaHQ7Ci0g
ICAgaWYgKHRvdGFsQnl0ZXNDaGVja2VkLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGludCB0b3RhbEJ5dGVzID0gdG90YWxCeXRlc0NoZWNrZWQudW5zYWZlR2V0KCk7Ci0K
LSAgICBhdXRvIHBpeGVscyA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPih0b3RhbEJ5
dGVzKTsKLSAgICBpZiAoIXBpeGVscykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcmVhZFJlbmRl
cmluZ1Jlc3VsdHMocGl4ZWxzLmdldCgpLCB0b3RhbEJ5dGVzKTsKLQotICAgIGlmICghY29udGV4
dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpIHsKLSAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpIHsKLSAgICAgICAgICAgIC8vIFByZW11bHRpcGx5
IGFscGhhLgotICAgICAgICAgICAgcGl4ZWxzW2kgKyAwXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxz
W2kgKyAwXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICAgICAgcGl4ZWxzW2kgKyAx
XSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAxXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwot
ICAgICAgICAgICAgcGl4ZWxzW2kgKyAyXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAyXSAq
IHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcGFpbnRUb0Nh
bnZhcyhwaXhlbHMuZ2V0KCksIEludFNpemUobV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdo
dCksIGltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsK
LX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKLXsKLSAgICAvLyBOb3QgbmVlZGVkIGF0IHRoZSBtb21l
bnQsIHNvIHJldHVybiB0aGF0IG5vdGhpbmcgd2FzIGRvbmUuCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1SZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQotewotICAgIC8vIFJlYWRpbmcgcHJlbXVsdGlwbGll
ZCBhbHBoYSB3b3VsZCBpbnZvbHZlIHVucHJlbXVsdGlwbHlpbmcsIHdoaWNoIGlzCi0gICAgLy8g
bG9zc3kuCi0gICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRh
OjpjcmVhdGUoSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSk7Ci0gICAg
dW5zaWduZWQgY2hhciogcGl4ZWxzID0gaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKTsKLSAgICBD
aGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IHRvdGFsQnl0ZXNDaGVja2VkID0gNCAqIENoZWNr
ZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4obV9jdXJyZW50V2lkdGgpICogQ2hlY2tlZDxpbnQsIFJl
Y29yZE92ZXJmbG93PihtX2N1cnJlbnRIZWlnaHQpOwotICAgIGlmICh0b3RhbEJ5dGVzQ2hlY2tl
ZC5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBpbWFnZURhdGE7Ci0gICAgaW50IHRv
dGFsQnl0ZXMgPSB0b3RhbEJ5dGVzQ2hlY2tlZC51bnNhZmVHZXQoKTsKLQotICAgIHJlYWRSZW5k
ZXJpbmdSZXN1bHRzKHBpeGVscywgdG90YWxCeXRlcyk7Ci0KLSAgICAvLyBDb252ZXJ0IHRvIFJH
QkEuCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAg
IHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOwotCi0gICAgcmV0dXJuIGltYWdl
RGF0YTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZVRleHR1cmUo
KQogewogICAgIGlmIChtX2xheWVyQ29tcG9zaXRlZCkKQEAgLTYyMCw2NSArNTI5LDE1IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVUZXh0dXJlSW1wbCgpCiAjZW5kaWYK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHMo
dW5zaWduZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSkKK1JlZlB0cjxJbWFnZURhdGE+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cygpCiB7Ci0gICAg
aWYgKHBpeGVsc1NpemUgPCBtX2N1cnJlbnRXaWR0aCAqIG1fY3VycmVudEhlaWdodCAqIDQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotCi0gICAgR0NHTGVudW0gZnJhbWVidWZmZXJUYXJnZXQgPSBtX2lzRm9yV2Vi
R0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRl
eHRHTDo6RlJBTUVCVUZGRVI7Ci0KLSAgICBib29sIG11c3RSZXN0b3JlRkJPID0gZmFsc2U7Cisg
ICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcgZmJvQmluZGluZyhtX2lzRm9y
V2ViR0wyLCBtX3N0YXRlLmJvdW5kUmVhZEZCTyk7CiAgICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVz
KCkuYW50aWFsaWFzKSB7CiAgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3Nhcnko
KTsKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9mYm8p
OwotICAgICAgICBtdXN0UmVzdG9yZUZCTyA9IHRydWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
aWYgKG1fc3RhdGUuYm91bmRSZWFkRkJPICE9IG1fZmJvKSB7Ci0gICAgICAgICAgICBtdXN0UmVz
dG9yZUZCTyA9IHRydWU7Ci0gICAgICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVm
ZmVyVGFyZ2V0LCBtX2Zibyk7Ci0gICAgICAgIH0KKyAgICAgICAgZmJvQmluZGluZy5tYXJrQmlu
ZGluZ0NoYW5nZWQoKTsKICAgICB9Ci0KLSAgICBHTGludCBwYWNrQWxpZ25tZW50ID0gNDsKLSAg
ICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOwotICAgIGdsOjpHZXRJbnRl
Z2VydihHTF9QQUNLX0FMSUdOTUVOVCwgJnBhY2tBbGlnbm1lbnQpOwotICAgIGlmIChwYWNrQWxp
Z25tZW50ID4gNCkgewotICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQs
IDQpOwotICAgICAgICBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSB0cnVlOwotICAgIH0KLSAg
ICBHTGludCBwYWNrUm93TGVuZ3RoID0gMDsKLSAgICBHTGludCBwYWNrU2tpcFJvd3MgPSAwOwot
ICAgIEdMaW50IHBhY2tTa2lwUGl4ZWxzID0gMDsKLSAgICBTY29wZWRSZXNldEJ1ZmZlckJpbmRp
bmcgc2NvcGVkUGl4ZWxQYWNrQnVmZmVyUmVzZXQobV9pc0ZvcldlYkdMMiwgR0xfUElYRUxfUEFD
S19CVUZGRVJfQklORElORywgR0xfUElYRUxfUEFDS19CVUZGRVIpOwotICAgIGlmIChtX2lzRm9y
V2ViR0wyKSB7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihHTF9QQUNLX1JPV19MRU5HVEgsICZw
YWNrUm93TGVuZ3RoKTsKLSAgICAgICAgaWYgKHBhY2tSb3dMZW5ndGggPiAwKQotICAgICAgICAg
ICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfUk9XX0xFTkdUSCwgMCk7Ci0gICAgICAgIGdsOjpH
ZXRJbnRlZ2VydihHTF9QQUNLX1NLSVBfUk9XUywgJnBhY2tTa2lwUm93cyk7Ci0gICAgICAgIGlm
IChwYWNrU2tpcFJvd3MgPiAwKQotICAgICAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tf
U0tJUF9ST1dTLCAwKTsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX1BBQ0tfU0tJUF9QSVhF
TFMsICZwYWNrU2tpcFBpeGVscyk7Ci0gICAgICAgIGlmIChwYWNrU2tpcFBpeGVscyA+IDApCi0g
ICAgICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19TS0lQX1BJWEVMUywgMCk7Ci0gICAg
fQotCi0gICAgcmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeSgwLCAwLCBtX2N1
cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBwaXhlbHMpOwotCi0gICAgaWYgKG11c3RSZXN0
b3JlUGFja0FsaWdubWVudCkKLSAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05N
RU5ULCBwYWNrQWxpZ25tZW50KTsKLSAgICBpZiAocGFja1Jvd0xlbmd0aCA+IDApCi0gICAgICAg
IGdsOjpQaXhlbFN0b3JlaShHTF9QQUNLX1JPV19MRU5HVEgsIHBhY2tSb3dMZW5ndGgpOwotICAg
IGlmIChwYWNrU2tpcFJvd3MgPiAwKQotICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19T
S0lQX1JPV1MsIHBhY2tTa2lwUm93cyk7Ci0gICAgaWYgKHBhY2tTa2lwUGl4ZWxzID4gMCkKLSAg
ICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfU0tJUF9QSVhFTFMsIHBhY2tTa2lwUGl4ZWxz
KTsKLQotICAgIGlmIChtdXN0UmVzdG9yZUZCTykKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZl
cihmcmFtZWJ1ZmZlclRhcmdldCwgbV9zdGF0ZS5ib3VuZFJlYWRGQk8pOworICAgIGZib0JpbmRp
bmcuYmluZEZyYW1lYnVmZmVyKG1fZmJvKTsKKyAgICByZXR1cm4gcmVhZFBpeGVsc0ZvclBhaW50
UmVzdWx0cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKGlu
dCB3aWR0aCwgaW50IGhlaWdodCkKQEAgLTcwNCw3ICs1NjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogICAgIFRlbXBv
cmFyeUFOR0xFU2V0dGluZyBzY29wZWRTY2lzc29yKEdMX1NDSVNTT1JfVEVTVCwgR0xfRkFMU0Up
OwogICAgIFRlbXBvcmFyeUFOR0xFU2V0dGluZyBzY29wZWREaXRoZXIoR0xfRElUSEVSLCBHTF9G
QUxTRSk7Ci0gICAgU2NvcGVkUmVzZXRCdWZmZXJCaW5kaW5nIHNjb3BlZFBpeGVsVW5wYWNrQnVm
ZmVyUmVzZXQobV9pc0ZvcldlYkdMMiwgR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HLCBH
TF9QSVhFTF9VTlBBQ0tfQlVGRkVSKTsKKyAgICBTY29wZWRCdWZmZXJCaW5kaW5nIHNjb3BlZFBp
eGVsVW5wYWNrQnVmZmVyUmVzZXQoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgbV9pc0Zvcldl
YkdMMik7CiAKICAgICBib29sIG11c3RSZXN0b3JlRkJPID0gcmVzaGFwZUZCT3MoSW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KSk7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgKaW5kZXggMjEzMjdk
ZGFmYzNkYjVmZWQyZTgxMzI2YjFmYTIyYzUyODY5ZjE1MS4uNDk0MmE5NTU0NTZiZjk0NDg0MDFj
MmUyNmI1N2ZkYjgyMWNkNGM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyk7CiBwdWJsaWM6Ci0gICAgU2NvcGVkUmVzdG9y
ZVRleHR1cmVCaW5kaW5nKEdDR0xlbnVtIGJpbmRpbmdQb2ludFF1ZXJ5LCBHQ0dMZW51bSBiaW5k
aW5nUG9pbnQsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVy
ZUJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludFF1ZXJ5LCBHTGVudW0gYmluZGluZ1BvaW50LCBi
b29sIGNvbmRpdGlvbiA9IHRydWUpCiAgICAgewotICAgICAgICBBU1NFUlQoYmluZGluZ1BvaW50
ICE9IHN0YXRpY19jYXN0PEdDR0xlbnVtPigwdSkpOworICAgICAgICBBU1NFUlQoYmluZGluZ1Bv
aW50ICE9IHN0YXRpY19jYXN0PEdMZW51bT4oMHUpKTsKICAgICAgICAgaWYgKGNvbmRpdGlvbikg
ewogICAgICAgICAgICAgbV9iaW5kaW5nUG9pbnQgPSBiaW5kaW5nUG9pbnQ7CiAgICAgICAgICAg
ICBnbDo6R2V0SW50ZWdlcnYoYmluZGluZ1BvaW50UXVlcnksIHJlaW50ZXJwcmV0X2Nhc3Q8R0xp
bnQqPigmbV9iaW5kaW5nVmFsdWUpKTsKQEAgLTU2LDYgKzU2LDE1MyBAQCBwcml2YXRlOgogICAg
IEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07CiB9OwogCisKK2NsYXNzIFNjb3BlZEJ1ZmZl
ckJpbmRpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEJ1ZmZlckJpbmRpbmcp
OworcHVibGljOgorICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludCwg
R0x1aW50IGJpbmRpbmdWYWx1ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQorICAgIHsKKyAgICAg
ICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdsOjpHZXRJ
bnRlZ2VydihxdWVyeShiaW5kaW5nUG9pbnQpLCByZWludGVycHJldF9jYXN0PEdMaW50Kj4oJm1f
YmluZGluZ1ZhbHVlKSk7CisgICAgICAgIGlmIChiaW5kaW5nVmFsdWUgPT0gbV9iaW5kaW5nVmFs
dWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fYmluZGluZ1BvaW50ID0gYmluZGlu
Z1BvaW50OworICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwgYmluZGluZ1Zh
bHVlKTsKKyAgICB9CisKKyAgICB+U2NvcGVkQnVmZmVyQmluZGluZygpCisgICAgeworICAgICAg
ICBpZiAobV9iaW5kaW5nUG9pbnQpCisgICAgICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRp
bmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdMZW51bSBxdWVyeShHTGVudW0gYmluZGluZ1BvaW50KQorICAgIHsKKyAgICAg
ICAgaWYgKGJpbmRpbmdQb2ludCA9PSBHTF9QSVhFTF9QQUNLX0JVRkZFUikKKyAgICAgICAgICAg
IHJldHVybiBHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOworICAgICAgICBBU1NFUlQoYmlu
ZGluZ1BvaW50ID09IEdMX1BJWEVMX1VOUEFDS19CVUZGRVIpOworICAgICAgICByZXR1cm4gR0xf
UElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HOworICAgIH0KKyAgICBHTGludCBtX2JpbmRpbmdQ
b2ludCB7IDAgfTsKKyAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUgeyAwdSB9OworfTsKK2NsYXNz
IFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk7CitwdWJsaWM6Cisg
ICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoYm9vbCBpc0ZvcldlYkdMMiwg
R0x1aW50IHJlc3RvcmVWYWx1ZSkKKyAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlzRm9y
V2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQorICAgICAgICAs
IG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZFJl
c3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGJvb2wgaXNGb3JXZWJHTDIsIEdMdWludCByZXN0
b3JlVmFsdWUsIEdMdWludCB2YWx1ZSkKKyAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlz
Rm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQorICAgICAg
ICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKKyAgICB7CisgICAgICAgIGJpbmRGcmFt
ZWJ1ZmZlcih2YWx1ZSk7CisgICAgfQorICAgIHZvaWQgbWFya0JpbmRpbmdDaGFuZ2VkKCkKKyAg
ICB7CisgICAgICAgIG1fYmluZGluZ0NoYW5nZWQgPSB0cnVlOworICAgIH0KKyAgICB2b2lkIGJp
bmRGcmFtZWJ1ZmZlcihHTHVpbnQgYmluZGluZ1ZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2JpbmRpbmdDaGFuZ2VkICYmIG1fYmluZGluZ1ZhbHVlID09IGJpbmRpbmdWYWx1ZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVy
VGFyZ2V0LCBiaW5kaW5nVmFsdWUpOworICAgICAgICBtX2JpbmRpbmdDaGFuZ2VkID0gbV9iaW5k
aW5nVmFsdWUgIT0gYmluZGluZ1ZhbHVlOworICAgIH0KKyAgICB+U2NvcGVkUmVzdG9yZVJlYWRG
cmFtZWJ1ZmZlckJpbmRpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYmluZGluZ0NoYW5nZWQp
CisgICAgICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXJUYXJnZXQsIG1f
YmluZGluZ1ZhbHVlKTsKKyAgICB9Citwcml2YXRlOgorICAgIGNvbnN0IEdMZW51bSBtX2ZyYW1l
YnVmZmVyVGFyZ2V0OworICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07CisgICAgYm9v
bCBtX2JpbmRpbmdDaGFuZ2VkIHsgZmFsc2UgfTsKK307CisKK2NsYXNzIFNjb3BlZFBpeGVsU3Rv
cmFnZU1vZGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFBpeGVsU3RvcmFnZU1v
ZGUpOworcHVibGljOgorICAgIGV4cGxpY2l0IFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVt
IG5hbWUsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICAgICAgOiBtX25hbWUoY29uZGl0aW9u
ID8gbmFtZSA6IDApCisgICAgeworICAgICAgICBpZiAobV9uYW1lKQorICAgICAgICAgICAgZ2w6
OkdldEludGVnZXJ2KG1fbmFtZSwgJm1fb3JpZ2luYWxWYWx1ZSk7CisgICAgfQorICAgIFNjb3Bl
ZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVtIG5hbWUsIEdMaW50IHZhbHVlLCBib29sIGNvbmRpdGlv
biA9IHRydWUpCisgICAgICAgIDogbV9uYW1lKGNvbmRpdGlvbiA/IG5hbWUgOiAwKQorICAgIHsK
KyAgICAgICAgaWYgKG1fbmFtZSkgeworICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KG1fbmFt
ZSwgJm1fb3JpZ2luYWxWYWx1ZSk7CisgICAgICAgICAgICBwaXhlbFN0b3JlKHZhbHVlKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICB+U2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSgpCisgICAgeworICAg
ICAgICBpZiAobV9uYW1lICYmIG1fdmFsdWVDaGFuZ2VkKQorICAgICAgICAgICAgZ2w6OlBpeGVs
U3RvcmVpKG1fbmFtZSwgbV9vcmlnaW5hbFZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBwaXhlbFN0
b3JlKEdMaW50IHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbmFtZSk7CisgICAgICAg
IGlmICghbV92YWx1ZUNoYW5nZWQgJiYgbV9vcmlnaW5hbFZhbHVlID09IHZhbHVlKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBnbDo6UGl4ZWxTdG9yZWkobV9uYW1lLCB2YWx1ZSk7Cisg
ICAgICAgIG1fdmFsdWVDaGFuZ2VkID0gbV9vcmlnaW5hbFZhbHVlICE9IHZhbHVlOworICAgIH0K
KyAgICBvcGVyYXRvciBHTGludCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9uYW1l
ICYmICFtX3ZhbHVlQ2hhbmdlZCk7CisgICAgICAgIHJldHVybiBtX29yaWdpbmFsVmFsdWU7Cisg
ICAgfQorcHJpdmF0ZToKKyAgICBjb25zdCBHTGVudW0gbV9uYW1lOworICAgIGJvb2wgbV92YWx1
ZUNoYW5nZWQgeyBmYWxzZSB9OworICAgIEdMaW50IG1fb3JpZ2luYWxWYWx1ZSB7IDAgfTsKK307
CisKK2NsYXNzIFNjb3BlZFRleHR1cmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3Bl
ZFRleHR1cmUpOworcHVibGljOgorICAgIFNjb3BlZFRleHR1cmUoKQorICAgIHsKKyAgICAgICAg
Z2w6OkdlblRleHR1cmVzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIH5TY29wZWRUZXh0dXJl
KCkKKyAgICB7CisgICAgICAgIGdsOjpEZWxldGVUZXh0dXJlcygxLCAmbV9vYmplY3QpOworICAg
IH0KKyAgICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
b2JqZWN0OworICAgIH0KK3ByaXZhdGU6CisgICAgR0x1aW50IG1fb2JqZWN0IHsgMHUgfTsKK307
CisKK2NsYXNzIFNjb3BlZEZyYW1lYnVmZmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
Y29wZWRGcmFtZWJ1ZmZlcik7CitwdWJsaWM6CisgICAgU2NvcGVkRnJhbWVidWZmZXIoKQorICAg
IHsKKyAgICAgICAgZ2w6OkdlbkZyYW1lYnVmZmVycygxLCAmbV9vYmplY3QpOworICAgIH0KKyAg
ICB+U2NvcGVkRnJhbWVidWZmZXIoKQorICAgIHsKKyAgICAgICAgZ2w6OkRlbGV0ZUZyYW1lYnVm
ZmVycygxLCAmbV9vYmplY3QpOworICAgIH0KKyAgICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0OworICAgIH0KK3ByaXZhdGU6CisgICAgR0x1
aW50IG1fb2JqZWN0IHsgMCB9OworfTsKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0R0xDYWlyby5jcHAKaW5kZXggNDNjZGFjOGIwMWNkYTBkZjA2MjE4NmYxNTAwM2VhMzA4ZmEy
MGNkNi4uMWZlMjQzNTE3NDdiMWYzYjFkOTBhZDEzOThlYjRiMWIzZGNkODVkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
R0xDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKQEAgLTEwNSwxNSArMTA1LDMwIEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwgYm9vbCBpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhl
bHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cGFpbnRUb0NhbnZhcyhSZWY8SW1hZ2VEYXRhPiYmIGltYWdlRGF0YSwgY29uc3QgSW50U2l6ZSYg
Y2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmICghaW1hZ2VQ
aXhlbHMgfHwgaW1hZ2VTaXplLmlzRW1wdHkoKSB8fCBjYW52YXNTaXplLmlzRW1wdHkoKSkKKyAg
ICBBU1NFUlQoIWltYWdlRGF0YS0+c2l6ZSgpLmlzRW1wdHkoKSk7CisgICAgaWYgKGNhbnZhc1Np
emUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBQbGF0Zm9ybUNvbnRleHRDYWly
byogcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBpZiAo
IXBsYXRmb3JtQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gQ29udmVydCBSR0JB
IHRvIEJHUkEuIEJHUkEgaXMgQ0FJUk9fRk9STUFUX0FSR0IzMiBvbiBsaXR0bGUtZW5kaWFuIGFy
Y2hpdGVjdHVyZXMuCisgICAgc2l6ZV90IHRvdGFsQnl0ZXMgPSBpbWFnZURhdGEuZGF0YSgpLT5i
eXRlTGVuZ3RoKCk7CisgICAgdWludDhfdCogcGl4ZWxzID0gaW1hZ2VEYXRhLmRhdGEoKS0+ZGF0
YSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQorICAg
ICAgICBzdGQ6OnN3YXAocGl4ZWxzW2ldLCBwaXhlbHNbaSArIDJdKTsKKworICAgIGlmICghY29u
dGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpIHsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpIHsKKyAgICAgICAgICAgIHBpeGVsc1tp
ICsgMF0gPSBzdGQ6Om1pbigyNTUsIHBpeGVsc1tpICsgMF0gKiBwaXhlbHNbaSArIDNdIC8gMjU1
KTsKKyAgICAgICAgICAgIHBpeGVsc1tpICsgMV0gPSBzdGQ6Om1pbigyNTUsIHBpeGVsc1tpICsg
MV0gKiBwaXhlbHNbaSArIDNdIC8gMjU1KTsKKyAgICAgICAgICAgIHBpeGVsc1tpICsgMl0gPSBz
dGQ6Om1pbigyNTUsIHBpeGVsc1tpICsgMl0gKiBwaXhlbHNbaSArIDNdIC8gMjU1KTsKKyAgICAg
ICAgfQorICAgIH0KKwogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LT5jcigpOwog
ICAgIHBsYXRmb3JtQ29udGV4dC0+c2F2ZSgpOwogCkBAIC0xMjIsNyArMTM3LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFy
KiBpbWFnZVBpeGVscywgY28KICAgICBjYWlyb19wYWludChjcik7CiAKICAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBpbWFnZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNl
X2NyZWF0ZV9mb3JfZGF0YSgKLSAgICAgICAgY29uc3RfY2FzdDx1bnNpZ25lZCBjaGFyKj4oaW1h
Z2VQaXhlbHMpLCBDQUlST19GT1JNQVRfQVJHQjMyLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VT
aXplLmhlaWdodCgpLCBpbWFnZVNpemUud2lkdGgoKSAqIDQpKTsKKyAgICAgICAgaW1hZ2VEYXRh
LT5kYXRhKCktPmRhdGEoKSwgQ0FJUk9fRk9STUFUX0FSR0IzMiwgaW1hZ2VEYXRhLT53aWR0aCgp
LCBpbWFnZURhdGEtPmhlaWdodCgpLCBpbWFnZURhdGEtPndpZHRoKCkgKiA0KSk7CiAKICAgICAv
LyBPcGVuR0wga2VlcHMgdGhlIHBpeGVscyBzdG9yZWQgYm90dG9tIHVwLCBzbyB3ZSBuZWVkIHRv
IGZsaXAgdGhlIGltYWdlIGhlcmUuCiAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCAwLCBpbWFnZVNp
emUuaGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAppbmRleCA2OGQ1YWM4M2Q5MTJlODZl
ZmViZmY0MjM5ZGZhMDY0NjYzMDBmMWI0Li5lMmU1MWZkMGEwNjBkYWQyMWIyZDIxYTUyODVkNDBk
NDczYmM1MjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcApAQCAtNTA1LDM2ICs1MDUsMzUgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZv
aWQgcmVsZWFzZUltYWdlRGF0YSh2b2lkKiwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90KQorc3Rh
dGljIHZvaWQgcmVsZWFzZUltYWdlRGF0YSh2b2lkKiBpbWFnZURhdGEsIGNvbnN0IHZvaWQqLCBz
aXplX3QpCiB7Ci0gICAgZmFzdEZyZWUoY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpOworICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8SW1hZ2VEYXRhKj4oaW1hZ2VEYXRhKS0+ZGVyZWYoKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBj
aGFyKiBpbWFnZVBpeGVscywgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbnRTaXpl
JiBjYW52YXNTaXplLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKFJlZjxJbWFnZURhdGE+JiYgaW1hZ2VEYXRhLCBj
b25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0g
ICAgaWYgKCFpbWFnZVBpeGVscyB8fCBpbWFnZVNpemUuaXNFbXB0eSgpIHx8IGNhbnZhc1NpemUu
aXNFbXB0eSgpKQorICAgIEFTU0VSVCghaW1hZ2VEYXRhLT5zaXplKCkuaXNFbXB0eSgpKTsKKyAg
ICBpZiAoY2FudmFzU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGF0
dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICAvLyBJbnB1dCBpcyBHTF9SR0JBID09IGtD
R0JpdG1hcEJ5dGVPcmRlcjMyQmlnIHwga0NHSW1hZ2VBbHBoYSpMYXN0LgorICAgIC8vIEdMX0JH
UkEgd291bGQgYmUga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhKkZp
cnN0LgorICAgIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvID0ga0NHQml0bWFwQnl0ZU9yZGVyMzJC
aWc7CisgICAgaWYgKCFhdHRycy5hbHBoYSkKKyAgICAgICAgYml0bWFwSW5mbyB8PSBrQ0dJbWFn
ZUFscGhhTm9uZVNraXBMYXN0OworICAgIGVsc2UgaWYgKGF0dHJzLnByZW11bHRpcGxpZWRBbHBo
YSkKKyAgICAgICAgYml0bWFwSW5mbyB8PSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Q7
CisgICAgZWxzZQorICAgICAgICBiaXRtYXBJbmZvIHw9IGtDR0ltYWdlQWxwaGFMYXN0OworCisg
ICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZURhdGEtPnNpemUoKTsKICAgICBpbnQgcm93Qnl0ZXMg
PSBpbWFnZVNpemUud2lkdGgoKSAqIDQ7Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVm
PiBkYXRhUHJvdmlkZXI7Ci0KLSAgICBpZiAoY29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgp
KSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIqIGNvcGllZFBpeGVsczsKLQotICAgICAgICBpZiAo
IXRyeUZhc3RDYWxsb2MoaW1hZ2VTaXplLmhlaWdodCgpLCByb3dCeXRlcykuZ2V0VmFsdWUoY29w
aWVkUGl4ZWxzKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtZW1jcHkoY29waWVk
UGl4ZWxzLCBpbWFnZVBpeGVscywgcm93Qnl0ZXMgKiBpbWFnZVNpemUuaGVpZ2h0KCkpOwotCi0g
ICAgICAgIHNpemVfdCBkYXRhU2l6ZSA9IHJvd0J5dGVzICogaW1hZ2VTaXplLmhlaWdodCgpOwot
ICAgICAgICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGNvcGllZFBpeGVscywgZGF0YVNp
emUpOwotICAgICAgICBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRl
V2l0aERhdGEoMCwgY29waWVkUGl4ZWxzLCBkYXRhU2l6ZSwgcmVsZWFzZUltYWdlRGF0YSkpOwot
ICAgIH0gZWxzZSB7CiAgICAgICAgIHNpemVfdCBkYXRhU2l6ZSA9IHJvd0J5dGVzICogaW1hZ2VT
aXplLmhlaWdodCgpOworICAgIHVpbnQ4X3QqIGltYWdlUGl4ZWxzID0gaW1hZ2VEYXRhLT5kYXRh
KCktPmRhdGEoKTsKICAgICAgICAgdmVyaWZ5SW1hZ2VCdWZmZXJJc0JpZ0Vub3VnaChpbWFnZVBp
eGVscywgZGF0YVNpemUpOwotICAgICAgICBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVBy
b3ZpZGVyQ3JlYXRlV2l0aERhdGEoMCwgaW1hZ2VQaXhlbHMsIGRhdGFTaXplLCAwKSk7Ci0gICAg
fQorICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKCZpbWFnZURhdGEubGVha1JlZigpLCBpbWFn
ZVBpeGVscywgZGF0YVNpemUsIHJlbGVhc2VJbWFnZURhdGEpKTsKIAotICAgIGF1dG8gaW1hZ2Ug
PSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lk
dGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgcm93Qnl0ZXMsIHNSR0JDb2xvclNwYWNl
UmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkhvc3QsCisgICAgYXV0byBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihD
R0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMy
LCByb3dCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYoKSwgYml0bWFwSW5mbywKICAgICAgICAgZGF0
YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsK
IAogICAgIC8vIENTUyBzdHlsaW5nIG1heSBjYXVzZSB0aGUgY2FudmFzJ3MgY29udGVudCB0byBi
ZSByZXNpemVkIG9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uaAppbmRleCBkNWU0MTY4ZTMxYmViOGYyYmI3NzRjZjdkZTFlOTVmOGQwYjk5NjE5
Li40ZGVkOGU1Zjk0OTgyNjcxNzQ2YzllN2Y1MzNhYWM2YjE4YWM2YjBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKQEAgLTYzLDYgKzYz
LDEwIEBAIHB1YmxpYzoKICAgICAvLyBQcmVwYXJlcyB0aGUgdGFyZ2V0IGZvciBkaXNwbGF5IHdp
dGggYSBjb250ZW50cyBidWZmZXIuCiAgICAgdmlydHVhbCB2b2lkIHByZXNlbnQoQnVmZmVyKSA9
IDA7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSBtb3N0IHJlY2VudCBwcmVzZW50ZWQgZGlzcGxheSBi
dWZmZXIuIFRoZSByZWZlcmVuY2UgaXMgdmFsaWQgdW50aWwKKyAgICAvLyBuZXh0IHByZXNlbnQs
IHJlY3ljbGVCdWZmZXIgb3IgZGV0YWNoQ2xpZW50IGNhbGwuCisgICAgdmlydHVhbCBjb25zdCBC
dWZmZXImIGRpc3BsYXlCdWZmZXIoKSBjb25zdCA9IDA7CisKICAgICAvLyBEZXRhY2hlcyB0aGUg
Y2xpZW50IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBtZXRhZGF0YSBo
YW5kbGUuCiAgICAgLy8gVGhlIGlmIG11bHRpcGxlIGJ1ZmZlcnMgaGF2ZSBiZWVuIHN1Ym1pdHRl
ZCwgcmVjeWNsZUJ1ZmZlciBtdXN0IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKICAg
ICAvLyB0aGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5k
ZXggODkxZTk3ODNlMjVmZDQ3ODRlMzY4NjNiM2U2ZTY4MmMyOTVjYjQyNC4uZGJlOWMwNWQzMjhi
NjVjMjc1ZWM5NTEyMDQ2MDI0ZjNkYTQwYzg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTENvY29hLm1tCkBAIC03MzAsNiArNzMwLDM3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICBtYXJrTGF5ZXJDb21wb3NpdGVk
KCk7CiB9CiAKK1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
Q29tcG9zaXRlZFJlc3VsdHMoKQoreworICAgIGF1dG8mIGRpc3BsYXlCdWZmZXIgPSBtX3N3YXBD
aGFpbi0+ZGlzcGxheUJ1ZmZlcigpOworICAgIGlmICghZGlzcGxheUJ1ZmZlci5zdXJmYWNlIHx8
ICFkaXNwbGF5QnVmZmVyLmhhbmRsZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYg
KGRpc3BsYXlCdWZmZXIuc3VyZmFjZS0+c2l6ZSgpICE9IGdldEludGVybmFsRnJhbWVidWZmZXJT
aXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIC8vIE5vdGU6IFdlIGFyZSB1c2lu
ZyBHTCB0byByZWFkIHRoZSBJT1N1cmZhY2UuIEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIHRoZXJl
IGFyZSBubyBjb252aW5pZW50CisgICAgLy8gZnVuY3Rpb25zIHRvIGNvbnZlcnQgdGhlIElPU3Vy
ZmFjZSBwaXhlbCBkYXRhIHRvIEltYWdlRGF0YS4gVGhlIGltYWdlIGRhdGEgZW5kcyB1cCBiZWlu
ZworICAgIC8vIGRyYXduIHRvIGEgSW1hZ2VCdWZmZXIsIGJ1dCBhdCB0aGUgdGltZSB0aGVyZSdz
IG5vIGZ1bmN0aW9ucyB0byBjb25zdHJ1Y3QgYSBOYXRpdmVJbWFnZQorICAgIC8vIG91dCBvZiBh
biBJT1N1cmZhY2UgaW4gc3VjaCBhIHdheSB0aGF0IGRyYXdpbmcgdGhlIE5hdGl2ZUltYWdlIHdv
dWxkIGJlIGd1YXJhbnRlZWQgbGVhdmUKKyAgICAvLyB0aGUgSU9TdXJmYWNlIGJlIHVucmVmZW5j
ZWQgYWZ0ZXIgdGhlIGRyYXcgY2FsbCBmaW5pc2hlcy4KKyAgICBTY29wZWRUZXh0dXJlIHRleHR1
cmU7CisgICAgR0NHTGVudW0gdGV4dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFy
Z2V0KCk7CisgICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRy
YXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnkoKSwgdGV4dHVyZVRhcmdldCwgdGV4dHVyZVRh
cmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIpOworICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0
dXJlVGFyZ2V0LCB0ZXh0dXJlKTsKKyAgICBpZiAoIUVHTF9CaW5kVGV4SW1hZ2UobV9kaXNwbGF5
T2JqLCBkaXNwbGF5QnVmZmVyLmhhbmRsZSwgRUdMX0JBQ0tfQlVGRkVSKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgZ2w6OlRleFBhcmFtZXRlcmkodGV4dHVyZVRhcmdldCwgR0xfVEVY
VFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgIFNjb3BlZEZyYW1lYnVmZmVyIGZibzsK
KyAgICBTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyBmYm9CaW5kaW5nKG1faXNG
b3JXZWJHTDIsIG1fc3RhdGUuYm91bmRSZWFkRkJPLCBmYm8pOworICAgIGdsOjpGcmFtZWJ1ZmZl
clRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmVU
YXJnZXQsIHRleHR1cmUsIDApOworICAgIEFTU0VSVChnbDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHTF9GUkFNRUJVRkZFUikgPT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpOworCisgICAgYXV0
byByZXN1bHQgPSByZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCk7CisKKyAgICBFR0xCb29sZWFu
IHJlbGVhc2VPayA9IEVHTF9SZWxlYXNlVGV4SW1hZ2UobV9kaXNwbGF5T2JqLCBkaXNwbGF5QnVm
ZmVyLmhhbmRsZSwgRUdMX0JBQ0tfQlVGRkVSKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlbGVhc2VP
aywgcmVsZWFzZU9rKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJHTExheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViR0xMYXllci5tbQppbmRleCAzODU5N2U0YThmNjMzYTVlZTVkYjc0OTMzMDIyZGMy
MzdmZTdlNDdjLi4wMzEzOGVmMTQzMDk4OGQ3MTVhOThiNzc3N2QzYTUzODhhMzI5OWFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5
ZXIubW0KQEAgLTM5LDYgKzM5LDEwIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTExheWVy
U3dhcENoYWluKFdlYkdMTGF5ZXIqIGxheWVyKSAgOiBtX2xheWVyKGxheWVyKSB7IH07CiAgICAg
fldlYkdMTGF5ZXJTd2FwQ2hhaW4oKSBvdmVycmlkZSA9IGRlZmF1bHQ7CiAgICAgdm9pZCBwcmVz
ZW50KEJ1ZmZlcikgb3ZlcnJpZGU7CisgICAgY29uc3QgQnVmZmVyJiBkaXNwbGF5QnVmZmVyKCkg
Y29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Rpc3BsYXlCdWZmZXI7Cisg
ICAgfQogICAgIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAg
IGlmIChtX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuY3BwCmluZGV4IDA2OWQyODZjZTRlYmE0ODI5ZTBjNzM4M2UyZjNlOGJlZTcyZmUyOTIu
LjJmZWI3NGMyZmFkMWIyYTYyZmY2MGM2MTI1ZDFiOGZjY2Y1ZGI1NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAtMzEsNiArMzEsOCBAQAogI2lmIEVOQUJMRShX
RUJHTCkKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5NCw2ICsxOTYsNTAgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogfQogI2VuZGlmCiAKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKElt
YWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgp
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCku
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBpbWFnZURhdGEgPSByZWFkUmVu
ZGVyaW5nUmVzdWx0cygpOworICAgIGlmICghaW1hZ2VEYXRhKQorICAgICAgICByZXR1cm47Cisg
ICAgcGFpbnRUb0NhbnZhcyhpbWFnZURhdGEucmVsZWFzZU5vbk51bGwoKSwgaW1hZ2VCdWZmZXIt
PmJhY2tlbmRTaXplKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGltYWdlRGF0YSA9IHJlYWRDb21wb3Np
dGVkUmVzdWx0cygpOworICAgIGlmICghaW1hZ2VEYXRhKQorICAgICAgICByZXR1cm47CisgICAg
cGFpbnRUb0NhbnZhcyhpbWFnZURhdGEucmVsZWFzZU5vbk51bGwoKSwgaW1hZ2VCdWZmZXItPmJh
Y2tlbmRTaXplKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOworfQorCitSZWZQdHI8SW1hZ2VE
YXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFn
ZURhdGEoKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIGlmIChnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gUmVhZGluZyBwcmVtdWx0aXBsaWVk
IGFscGhhIHdvdWxkIGludm9sdmUgdW5wcmVtdWx0aXBseWluZywgd2hpY2ggaXMKKyAgICAvLyBs
b3NzeS4KKyAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0cygp
OworfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBmNTI0
ZGU5MmRjZDlhNTk4YjBmYmVmOGQzM2I5YzQ0MDliOGNkMWIwLi43ODA5NmUyZWIwODc2Zjk1Mjdj
ODU0NzkwZDFhZmE3MzUxMjBjOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aApAQCAtNDI4LDkgKzQyOCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1C
bG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKIAogICAgIC8vIEhl
bHBlciBtZXRob2RzLgotCi0gICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGltYWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUm
IGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYpOwotCiAgICAgdm9pZCBtYXJrQ29udGV4dENo
YW5nZWQoKSBmaW5hbDsKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKICAg
ICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0IGZpbmFsOwpAQCAtNDUwLDcgKzQ0Nyw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXIqKSBmaW5hbDsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0ltYWdlRGF0YSgpIGZpbmFsOwotICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyKikgZmluYWw7CisgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1
bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKIAogI2lmIFVTRShPUEVOR0wpICYmIEVO
QUJMRShXRUJHTDIpCiAgICAgdm9pZCBwcmltaXRpdmVSZXN0YXJ0SW5kZXgoR0NHTHVpbnQpOwpA
QCAtNTMwLDEwICs1MjcsMTEgQEAgcHJpdmF0ZToKICAgICAvLyBEaWQgdGhlIG1vc3QgcmVjZW50
IGRyYXdpbmcgb3BlcmF0aW9uIGxlYXZlIHRoZSBHUFUgaW4gYW4gYWNjZXB0YWJsZSBzdGF0ZT8K
ICAgICB2b2lkIGNoZWNrR1BVU3RhdHVzKCk7CiAKLSAgICAvLyBSZWFkIHJlbmRlcmluZyByZXN1
bHRzIGludG8gYSBwaXhlbCBhcnJheSB3aXRoIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUKLSAgICAv
LyBiYWNrYnVmZmVyLgotICAgIHZvaWQgcmVhZFJlbmRlcmluZ1Jlc3VsdHModW5zaWduZWQgY2hh
ciogcGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSk7Ci0gICAgdm9pZCByZWFkUGl4ZWxzQW5kQ29udmVy
dFRvQkdSQUlmTmVjZXNzYXJ5KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1
bnNpZ25lZCBjaGFyKiBwaXhlbHMpOworCisgICAgUmVmUHRyPEltYWdlRGF0YT4gcmVhZFJlbmRl
cmluZ1Jlc3VsdHMoKTsKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiByZWFkQ29tcG9zaXRlZFJlc3Vs
dHMoKTsKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiByZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCk7
CisgICAgdm9pZCBwYWludFRvQ2FudmFzKFJlZjxJbWFnZURhdGE+JiYsIGNvbnN0IEludFNpemUm
IGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgYm9vbCByZXNoYXBlRkJPcyhj
b25zdCBJbnRTaXplJik7CiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZUltcGwoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggZjQxNGY5Yzk2MzRkNjFi
OGQ5MDE1ZDVhNmFmYTUyN2NjMzQyYmU4Zi4uMjlkZjdjOTAxM2NiOTE1OTM0YWJhYjg5NGZhYjI2
YzlkN2ZlNzcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5j
cHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShPUEVOR0wpCiAK
ICNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0wuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKQEAgLTYxLDM3ICs2MiwyNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZO
ZWNlc3NhcnkoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNo
YXIqIHBpeGVscykKK1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0
dHJpYnV0ZXMoKTsKKyAgICBhdXRvIGltYWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKGdldElu
dGVybmFsRnJhbWVidWZmZXJTaXplKCkpOworICAgIGlmICghaW1hZ2VEYXRhKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIEdMaW50IHBhY2tBbGlnbm1lbnQgPSA0OworICAgIGJvb2wg
bXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gZmFsc2U7CisgICAgOjpnbEdldEludGVnZXJ2KEdM
X1BBQ0tfQUxJR05NRU5ULCAmcGFja0FsaWdubWVudCk7CisgICAgaWYgKHBhY2tBbGlnbm1lbnQg
PiA0KSB7CisgICAgICAgIDo6Z2xQaXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgNCk7Cisg
ICAgICAgIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IHRydWU7CisgICAgfQogCi0gICAgLy8g
TlZJRElBIGRyaXZlcnMgaGF2ZSBhIGJ1ZyB3aGVyZSBjYWxsaW5nIHJlYWRQaXhlbHMgaW4gQkdS
QSBjYW4gcmV0dXJuIHRoZSB3cm9uZyB2YWx1ZXMgZm9yIHRoZSBhbHBoYSBjaGFubmVsIHdoZW4g
dGhlIGFscGhhIGlzIG9mZiBmb3IgdGhlIGNvbnRleHQuCi0gICAgaWYgKCFhdHRycy5hbHBoYSAm
JiBnZXRFeHRlbnNpb25zKCkuaXNOVklESUEoKSkgewotICAgICAgICA6OmdsUmVhZFBpeGVscyh4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMpOwot
I2lmIFVTRShBQ0NFTEVSQVRFKQotICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKLSAgICAgICAg
c3JjLmhlaWdodCA9IGhlaWdodDsKLSAgICAgICAgc3JjLndpZHRoID0gd2lkdGg7Ci0gICAgICAg
IHNyYy5yb3dCeXRlcyA9IHdpZHRoICogNDsKLSAgICAgICAgc3JjLmRhdGEgPSBwaXhlbHM7Ci0K
LSAgICAgICAgdkltYWdlX0J1ZmZlciBkZXN0OwotICAgICAgICBkZXN0LmhlaWdodCA9IGhlaWdo
dDsKLSAgICAgICAgZGVzdC53aWR0aCA9IHdpZHRoOwotICAgICAgICBkZXN0LnJvd0J5dGVzID0g
d2lkdGggKiA0OwotICAgICAgICBkZXN0LmRhdGEgPSBwaXhlbHM7Ci0KLSAgICAgICAgLy8gU3dh
cCBwaXhlbCBjaGFubmVscyBmcm9tIFJHQkEgdG8gQkdSQS4KLSAgICAgICAgY29uc3QgdWludDhf
dCBtYXBbNF0gPSB7IDIsIDEsIDAsIDMgfTsKLSAgICAgICAgdkltYWdlUGVybXV0ZUNoYW5uZWxz
X0FSR0I4ODg4KCZzcmMsICZkZXN0LCBtYXAsIGt2SW1hZ2VOb0ZsYWdzKTsKLSNlbHNlCi0gICAg
ICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkKLSAgICAgICAgICAgIHN0ZDo6c3dhcChw
aXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOwotI2VuZGlmCi0gICAgfSBlbHNlCi0gICAgICAgIDo6
Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMX0JHUkEsIEdMX1VOU0lHTkVEX0lO
VF84XzhfOF84X1JFViwgcGl4ZWxzKTsKKyAgICA6OmdsUmVhZFBpeGVscygwLCAwLCBpbWFnZURh
dGEtPndpZHRoKCksIGltYWdlRGF0YS0+aGVpZ2h0KCksIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCkpOworCisgICAgaWYgKG11c3RSZXN0b3JlUGFj
a0FsaWdubWVudCkKKyAgICAgICAgOjpnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05NRU5ULCBw
YWNrQWxpZ25tZW50KTsKIAorICAgIHJldHVybiBpbWFnZURhdGE7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCAyZGUxODVhNjY4MTMwYTM2MmMx
Mjc2N2YzODNmNTdmMTM0OWRkNDgxLi5mY2RiNzExYTZmOGNiMDU5ZTAwYjc0Y2QwY2NiN2M5YWNl
OTBkYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5j
cHAKQEAgLTEzNyw2NCArMTM3LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFs
aWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2kKICAgICB9CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKLXsKLSAgICBDaGVja2VkPGludCwgUmVj
b3JkT3ZlcmZsb3c+IHJvd0J5dGVzID0gQ2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PihtX2N1
cnJlbnRXaWR0aCkgKiA0OwotICAgIGlmIChyb3dCeXRlcy5oYXNPdmVyZmxvd2VkKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4gdG90YWxCeXRl
c0NoZWNrZWQgPSByb3dCeXRlcyAqIG1fY3VycmVudEhlaWdodDsKLSAgICBpZiAodG90YWxCeXRl
c0NoZWNrZWQuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgaW50IHRvdGFs
Qnl0ZXMgPSB0b3RhbEJ5dGVzQ2hlY2tlZC51bnNhZmVHZXQoKTsKLQotICAgIGF1dG8gcGl4ZWxz
ID0gbWFrZVVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+KHRvdGFsQnl0ZXMpOwotICAgIGlmICgh
cGl4ZWxzKQotICAgICAgICByZXR1cm47Ci0KLSAgICByZWFkUmVuZGVyaW5nUmVzdWx0cyhwaXhl
bHMuZ2V0KCksIHRvdGFsQnl0ZXMpOwotCi0gICAgaWYgKCFjb250ZXh0QXR0cmlidXRlcygpLnBy
ZW11bHRpcGxpZWRBbHBoYSkgewotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFsQnl0
ZXM7IGkgKz0gNCkgewotICAgICAgICAgICAgLy8gUHJlbXVsdGlwbHkgYWxwaGEuCi0gICAgICAg
ICAgICBwaXhlbHNbaSArIDBdID0gc3RkOjptaW4oMjU1LCBwaXhlbHNbaSArIDBdICogcGl4ZWxz
W2kgKyAzXSAvIDI1NSk7Ci0gICAgICAgICAgICBwaXhlbHNbaSArIDFdID0gc3RkOjptaW4oMjU1
LCBwaXhlbHNbaSArIDFdICogcGl4ZWxzW2kgKyAzXSAvIDI1NSk7Ci0gICAgICAgICAgICBwaXhl
bHNbaSArIDJdID0gc3RkOjptaW4oMjU1LCBwaXhlbHNbaSArIDJdICogcGl4ZWxzW2kgKyAzXSAv
IDI1NSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwYWludFRvQ2FudmFzKHBpeGVscy5nZXQo
KSwgSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSwgaW1hZ2VCdWZmZXIt
PmJhY2tlbmRTaXplKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwotfQotCi1ib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXIqKQotewotICAgIC8vIE5vdCBuZWVkZWQgYXQgdGhlIG1vbWVudCwgc28gcmV0dXJuIHRo
YXQgbm90aGluZyB3YXMgZG9uZS4KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVJlZlB0cjxJbWFn
ZURhdGE+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0lt
YWdlRGF0YSgpCi17Ci0gICAgLy8gUmVhZGluZyBwcmVtdWx0aXBsaWVkIGFscGhhIHdvdWxkIGlu
dm9sdmUgdW5wcmVtdWx0aXBseWluZywgd2hpY2ggaXMKLSAgICAvLyBsb3NzeS4KLSAgICBpZiAo
Y29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShJbnRTaXpl
KG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpKTsKLSAgICB1bnNpZ25lZCBjaGFyKiBw
aXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwotICAgIENoZWNrZWQ8aW50LCBSZWNv
cmRPdmVyZmxvdz4gdG90YWxCeXRlc0NoZWNrZWQgPSA0ICogQ2hlY2tlZDxpbnQsIFJlY29yZE92
ZXJmbG93PihtX2N1cnJlbnRXaWR0aCkgKiBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+KG1f
Y3VycmVudEhlaWdodCk7Ci0gICAgaWYgKHRvdGFsQnl0ZXNDaGVja2VkLmhhc092ZXJmbG93ZWQo
KSkKLSAgICAgICAgcmV0dXJuIGltYWdlRGF0YTsKLSAgICBpbnQgdG90YWxCeXRlcyA9IHRvdGFs
Qnl0ZXNDaGVja2VkLnVuc2FmZUdldCgpOwotCi0gICAgcmVhZFJlbmRlcmluZ1Jlc3VsdHMocGl4
ZWxzLCB0b3RhbEJ5dGVzKTsKLQotICAgIC8vIENvbnZlcnQgdG8gUkdCQS4KLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkKLSAgICAgICAgc3RkOjpzd2FwKHBpeGVs
c1tpXSwgcGl4ZWxzW2kgKyAyXSk7Ci0KLSAgICByZXR1cm4gaW1hZ2VEYXRhOwotfQotCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlVGV4dHVyZSgpCiB7CiAgICAgaWYgKG1f
bGF5ZXJDb21wb3NpdGVkKQpAQCAtMjM2LDE1ICsxNzgsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwcmVwYXJlVGV4dHVyZSgpCiAgICAgOjpnbEZsdXNoKCk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKHVuc2lnbmVkIGNo
YXIgKnBpeGVscywgaW50IHBpeGVsc1NpemUpCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHMoKQogewotICAgIGlmIChwaXhlbHNT
aXplIDwgbV9jdXJyZW50V2lkdGggKiBtX2N1cnJlbnRIZWlnaHQgKiA0KQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LQogICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKICAgICBpZiAoY29udGV4dEF0dHJp
YnV0ZXMoKS5hbnRpYWxpYXMpIHsKICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vz
c2FyeSgpOwpAQCAtMjU3LDIyICsxOTIsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHModW5zaWduZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGkKICAg
ICAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1F
QlVGRkVSLCBtX2Zibyk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBHTGludCBwYWNrQWxpZ25t
ZW50ID0gNDsKLSAgICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOwotICAg
IDo6Z2xHZXRJbnRlZ2VydihHTF9QQUNLX0FMSUdOTUVOVCwgJnBhY2tBbGlnbm1lbnQpOwotICAg
IGlmIChwYWNrQWxpZ25tZW50ID4gNCkgewotICAgICAgICA6OmdsUGl4ZWxTdG9yZWkoR0xfUEFD
S19BTElHTk1FTlQsIDQpOwotICAgICAgICBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSB0cnVl
OwotICAgIH0KLQotICAgIHJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZOZWNlc3NhcnkoMCwg
MCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgcGl4ZWxzKTsKLQotICAgIGlmICht
dXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQpCi0gICAgICAgIDo6Z2xQaXhlbFN0b3JlaShHTF9QQUNL
X0FMSUdOTUVOVCwgcGFja0FsaWdubWVudCk7Ci0KKyAgICBhdXRvIHJlc3VsdCA9IHJlYWRQaXhl
bHNGb3JQYWludFJlc3VsdHMoKTsKICAgICBpZiAobXVzdFJlc3RvcmVGQk8pCiAgICAgICAgIDo6
Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX3N0
YXRlLmJvdW5kRHJhd0ZCTyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggMGQ0NzZjMjI5ZDZmNmVlOTZj
Y2Y5OTNkODFkNWMzZGQ2NTIxNWU0OC4uZTQxYjdkNGRmZGUxMzlmNTEyNjZmMDczMzM2ZTJhMTZl
ZTg3NWMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAt
NjQsMTUgKzY0LDI2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxz
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgICAgIDo6Z2xCaW5k
RnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVj
ZXNzYXJ5KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFy
KiBwaXhlbHMpCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVh
ZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7Ci0gICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lk
dGgsIGhlaWdodCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKLSAgICBpbnQg
dG90YWxCeXRlcyA9IHdpZHRoICogaGVpZ2h0ICogNDsKLSAgICBpZiAoaXNHTEVTMkNvbXBsaWFu
dCgpKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQot
ICAgICAgICAgICAgc3RkOjpzd2FwKHBpeGVsc1tpXSwgcGl4ZWxzW2kgKyAyXSk7IC8vIENvbnZl
cnQgdG8gQkdSQS4KKyAgICBhdXRvIGltYWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKGdldElu
dGVybmFsRnJhbWVidWZmZXJTaXplKCkpOworICAgIGlmICghaW1hZ2VEYXRhKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIEdMaW50IHBhY2tBbGlnbm1lbnQgPSA0OworICAgIGJvb2wg
bXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gZmFsc2U7CisgICAgOjpnbEdldEludGVnZXJ2KEdM
X1BBQ0tfQUxJR05NRU5ULCAmcGFja0FsaWdubWVudCk7CisgICAgaWYgKHBhY2tBbGlnbm1lbnQg
PiA0KSB7CisgICAgICAgIDo6Z2xQaXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgNCk7Cisg
ICAgICAgIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IHRydWU7CiAgICAgfQotfQorCisgICAg
OjpnbFJlYWRQaXhlbHMoMCwgMCwgaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFnZURhdGEtPmhlaWdo
dCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgp
KTsKKworICAgIGlmIChtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQpCisgICAgICAgIDo6Z2xQaXhl
bFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgcGFja0FsaWdubWVudCk7CisKKyAgICByZXR1cm4g
aW1hZ2VEYXRhOwogCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhj
b25zdCBJbnRTaXplJiBzaXplKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3Bw
CmluZGV4IGU3YzQwYzk4NWNiN2QyNzIyODY5YTVkZmY5NjkxOTQ3MDc3YWY0NmMuLjhlMmQxZmM2
NTE4NjI4Mzk1ZTk3NDFjNDRlN2FjODUxYjA4ZWY2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIC8vIEdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIG92ZXJyaWRlcy4KICAgICBCdWZmZXIgcmVjeWNs
ZUJ1ZmZlcigpIGZpbmFsOwogICAgIHZvaWQgcHJlc2VudChCdWZmZXIpIGZpbmFsOworICAgIGNv
bnN0IEJ1ZmZlciYgZGlzcGxheUJ1ZmZlcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQqIGRldGFj
aENsaWVudCgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbjo6QnVmZmVyIG1fZGlzcGxheUJ1ZmZlcjsKQEAgLTc2LDYgKzc3LDExIEBAIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlc2VudChCdWZmZXIgYnVmZmVyKQog
ICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKIH0KIAorY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciYgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYTo6ZGlzcGxheUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGlzcGxh
eUJ1ZmZlcjsKK30KKwogdm9pZCogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6ZGV0YWNo
Q2xpZW50KCkKIHsKICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Rpc3BsYXlCdWZmZXIuaGFu
ZGxlLCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3Bw
CmluZGV4IDM0YTA2ZmIwMDc2YWNkM2ZkMzJiM2E0YjZiMDlkNjhkMDI3YmI1ODguLjUzZGI2MTUw
YzFkOGVjODI1ZTIzYWJlZjY1MWU1YjNiOTc5OTI0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMTIxLDYgKzEyMSwxMSBAQCB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdl
QnVmZmVyKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogUmVmUHRyPEltYWdlRGF0YT4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURh
dGEoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oCmluZGV4IGQ5OWVkYTI5ZjZkYjVlMTgxOTcxMzE3OGYyYWE1MzFiNGY1ZGQ2
ZTAuLmExNDM5MzQ3ZDg5ZTBhZGJmMDhhNDJhNDI1OTFiYmIzZGJlYjIxZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyKikgZmluYWw7CiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFn
ZURhdGEoKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciopIGZpbmFsOwogCiAgICAgLy8gRnVuY3Rpb25zIHdpdGggYSBn
ZW5lcmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdw
dXAtd2ViZ2wgc2NyaXB0LgogICAgIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpIGZp
bmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416412</attachid>
            <date>2020-12-17 03:42:10 -0800</date>
            <delta_ts>2020-12-17 04:04:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219946-20201217134208.patch</filename>
            <type>text/plain</type>
            <size>63614</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMwMGNiMzk4NTY1MjRm
YzAxZWY4N2I5ZDkxYWQ4NWRjZmU3YTY5ZS4uN2IyZTM4NjdmYjQ1ZWUyMzI3MmRhNzZkMmM1ZmI5
YTU5OTk4NGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAyMC0xMi0xNyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04g
KHIyNjgzODYpOiBTbmFwc2hvdHMgb2YgV2ViR0wgY29udGVudCBpbiB0aGUgdGFiIHBpY2tlciBk
b24ndCB3b3JrIChibGFjayBtYXAgb24gR29vZ2xlIE1hcHMpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcyMDEzNzg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZpeCBjYXNlIHdoZXJlIFdlYkdMIHdvdWxkIGZpcnN0IGJlIGRpc3BsYXllZCB3aXRo
IGhhcmR3YXJlIGNvZGUgcGF0aAorICAgICAgICBhbmQgdGhlbiBkaXNwbGF5ZWQgd2l0aCBzb2Z0
d2FyZSBjb2RlIHBhdGggKHBhaW50aW5nIGZyb20gdGhlIHBhaW50CisgICAgICAgIHRyZWUpLiBG
b3JtZXIgaGFwcGVucyB3aGVuIHVzZXIgbG9va3MgYXQgdGhlIHBhZ2UgYW5kIGxhdHRlciBoYXBw
ZW5zCisgICAgICAgIHdoZW4gcHJpbnRpbmcgb3Igd2hlbiBTYWZhcmkgdGFrZXMgYSBzbmFwc2hv
dC4KKworICAgICAgICBUaGlzIGlzIG5vdCBhIHJlYWwgcmVncmVzc2lvbiBvZiByMjY4Mzg2LiBQ
cmlvciB0byB0aGF0LCB0aGUgc29mdHdhcmUKKyAgICAgICAgZGlzcGxheSB3b3VsZCBoYXZlIHVz
ZWQgdW5pbml0aWFsaXplZCBJT1N1cmZhY2UgY29udGVudHMgb3IgY29udGVudHMgb2YKKyAgICAg
ICAgMS0yIGZyYW1lcyBwcmlvciBhbmQgd291bGQgbGVhdmUgdGhlIGhhcmR3YXJlIGRpc3BsYXkg
YnVmZmVyIG5vdAorICAgICAgICB1cGRhdGVkLgorCisgICAgICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaXMgdXNlZCBmb3IgdHdvCisg
ICAgICAgIHB1cnBvc2VzOgorICAgICAgICAgIDEpIEltYWdlIGV4dHJhY3Rpb24gdXNlcywgc3Vj
aCBhcyB0b0RhdGEoKSBvcgorICAgICAgICAgICAgIGNvbnN0cnVjdGluZyBhbiBJbWFnZSBvdXQg
b2YgdGhlIGNvbnRlbnRzLgorICAgICAgICAgIDIpIFBhaW50aW5nIHRoZSByZW5kZXJpbmcgdG8g
dGhlIGRvY3VtZW50IGR1cmluZyBzb2Z0d2FyZSBkaXNwbGF5LgorCisgICAgICAgIFRoZSAxKSBj
YXNlIHVzZXMgYWx3YXlzIHRoZSBkcmF3aW5nIGJ1ZmZlci4KKworICAgICAgICBUaGUgMikgY2Fz
ZSBwcmVzZW50cyB0aGUgZHJhd2luZyBidWZmZXIgYXMgdGhlIG5ldyBkaXNwbGF5IGJ1ZmZlciBp
ZgorICAgICAgICB0aGVyZSBhcmUgY2hhbmdlcyB0byB0aGUgZHJhd2luZyBidWZmZXIgYW5kIHVz
ZXMgdGhlIHBvdGVudGlhbGx5IG5ldworICAgICAgICBkaXNwbGF5IGJ1ZmZlciB0byBkaXNwbGF5
LgorCisgICAgICAgIEZvciAyRCBjYW52YXMsIHRoZXNlIHR3byBjYXNlcyBhcmUgdGhlIHNhbWUg
Y2FzZS4gRm9yIFdlYkdMIHRoZXkgYXJlCisgICAgICAgIGRpZmZlcmVudC4KKworICAgICAgICBU
aGUgZGlzcGxheSBpcyBkZXN0cnVjdGl2ZSBmb3IgV2ViR0wgZHJhd2luZyBidWZmZXIgd2hlbgor
ICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPT0gZmFsc2UuIFRoaXMgbWVhbnMgdGhhdCBp
ZiBoYXJkd2FyZSBkaXNwbGF5IGhhcworICAgICAgICBoYXBwZW5lZCwgd2UgbXVzdCByZWFkIHRo
ZSBkaXNwbGF5IGJ1ZmZlciBkdXJpbmcgY2FzZSAyLiBUaGlzIGNvZGUgd2FzCisgICAgICAgIG1p
c3NpbmcsIHNvIHRoZSBzY2VuYXJpbyBjb3VsZCBub3QgaGF2ZSBldmVyIHdvcmtlZC4KKworICAg
ICAgICBUaGUgcHJldmlvdXMgY29kZSB0cmllZCB0byB3b3JrYXJvdW5kIHRoaXMgYnkgdGhlCisg
ICAgICAgIFdlYkdMR3JhcGhpY3NDb250ZXh0QmFzZSB0byBkZXRlY3Qgd2hhdCB0aGUgb3duZXIg
aW50ZW5kZWQgd2l0aCB0aGUKKyAgICAgICAgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMs
IHRoZW4gc2tpcCB0aGUgcG90ZW50aWFsIGRyYXdpbmcgYnVmZmVyCisgICAgICAgIGNsZWFyLCBy
ZWFkIHRoZSBkcmF3aW5nIGJ1ZmZlciBhbmQgcHV0IHRoYXQgZGF0YSB0byB0aGUgInByZXNlbnRh
dGlvbgorICAgICAgICBjb3B5IiBvZiB0aGUgSFRNTEVsZW1lbnQuIFRoaXMgaXMgbm90IG9rLCBh
cyB0aGUgdW5jbGVhcmVkIGRyYXdpbmcKKyAgICAgICAgYnVmZmVyIGhhcyBub24tZGV0ZXJtaW5p
c3RpYyBjb250ZW50cyBpbiBjYXNlIHRoZSBjb250ZXh0IGhhcyBkaXNwbGF5ZWQKKyAgICAgICAg
YW5kIHRoZSBjbGllbnQgaGFzIG5vdCBkcmF3biBuZXcgY29udGVudCB0byB0aGUgZHJhd2luZyBi
dWZmZXIuCisKKyAgICAgICAgRml4IGJ5IHJlbW92aW5nIHRoZSAicHJlc2VudGF0aW9uIGNvcHki
IG9mIHRoZSBIVE1MQ2FudmFzLiBUaGUKKyAgICAgICAgcHJlc2VudGF0aW9uIGltYWdlIGNhbiBh
bHdheXMgYmUgZHJhd24gdG8gdGhlIENhbnZhc0Jhc2U6OmJ1ZmZlcigpOgorICAgICAgICAgLSBU
aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGlzIHRoZSBwcmVzZW50YXRpb24gaW1h
Z2UgaWYgdGhlCisgICAgICAgICAgIGNvbnRleHQgaGFzIG5vdCBjaGFuZ2VkIHNpbmNlIHVwZGF0
aW5nIHRoZSBidWZmZXIgd2l0aCBlaXRoZXIgZHJhd2luZworICAgICAgICAgICBidWZmZXIgb3Ig
cHJldmlvdXMgZGlzcGxheSBidWZmZXIuCisgICAgICAgICAtIElmIHRoZSBjb250ZXh0IGhhcyBj
aGFuZ2VkLCB3ZSBtdXN0IHByZXNlbnQgYW5kIHB1dCB0aGUgbmV3IGRpc3BsYXkKKyAgICAgICAg
ICAgYnVmZmVyIHRvIHRoZSBDYW52YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgLSBUaGlzIGlz
IGFsc28gY29ycmVjdCBjb250ZW50cyBmb3IgdGhlIHBvdGVudGlhbCBuZXh0IGltYWdlIGV4dHJh
Y3Rpb24KKyAgICAgICAgICAgdXNlcywgdXAgdG8gYSBwb2ludCB3aGVuIGNvbnRleHQgY2hhbmdl
cy4KKyAgICAgICAgIC0gSWYgdGhlIGNvbnRleHQgY2hhbmdlcyBiZWZvcmUgYW4gaW1hZ2UgZXh0
cmFjdGlvbiB1c2UsIENhbnZhc0Jhc2U6OmJ1ZmZlcigpIGlzCisgICAgICAgICAgIHVwZGF0ZWQg
d2l0aCB0aGUgbm9ybWFsIGxvZ2ljLCB0aGUgc2FtZSBhcyB3aGF0IGhhcHBlbnMgd2hlbiBDYW52
YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgICBpcyB1cGRhdGVkIGJldHdlZW4gdHdvIGltYWdl
IGV4dHJhY3Rpb24gdXNlcy4KKworICAgICAgICBQcmlvciB0byB0aGlzLCB0aGVyZSB3YXMgYW4g
dW5uZWVkZWQgYW5kIGluY29ycmVjdGx5IGltcGxlbWVudGVkCisgICAgICAgIEdQVUNhbnZhc0Nv
bnRleHQ6Om1hcmtMYXllckNvbXBvc2l0ZWQoKS4gVGhlIHNlcXVlbmNlIHdvdWxkIGJlOgorCisg
ICAgICAgIEhUTUxDYW52YXNFbGVtZW50OjpwYWludCgpOgorICAgICAgICAgICBjYW52YXNDb250
ZXh0KCkucGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoYnVmZmVyKCkpOworICAgICAgICAg
ICBjb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlcigpKTsKKyAgICAgICAgICAgY2FudmFz
Q29udGV4dCgpLm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKworICAgICAgICBUaGUgbWFya0xheWVy
Q29tcG9zaXRlZCgpIHdvdWxkIGluY29ycmVjdGx5IG1hcmsgdGhlIFdlYkdMIGNvbnRleHQgY29t
cG9zaXRpbmcKKyAgICAgICAgYmVpbmcgZG9uZSwgYnV0IHRoZXJlIHdhcyBubyBjb21wb3NpdGlu
ZyBhY3R1YWxseSBoYXBwZW5pbmcuIFRoZSBHUFUtc2lkZQorICAgICAgICBkaXNwbGF5IGJ1ZmZl
ciB3b3VsZCBiZSBpbmNvcnJlY3QuIEFsc28sIHRoZXJlIGlzIG5vdGhpbmcgdG8gYmUgZG9uZSBh
dAorICAgICAgICB0aGlzIHN0YWdlLCBhcyB0aGUgY29tcG9zaXRpbmcgb2YgV2ViR0wgY29udGV4
dCBpdHNlbGYgaXMgYWxyZWFkeQorICAgICAgICBmaW5pc2hlZCBhdCBXZWJHTCBjb250ZXh0IHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgcmV0dXJuLgorCisgICAgICAgIEluc3RlYWQs
IGFkZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgp
IHdoaWNoIHNpZ25hbHMgdGhhdCBuZXh0CisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKCkgaXMgYSBkaXNwbGF5IG9wZXJhdGlvbi4gVGhpcyBjYW4gYmUgdXNlZCB0byB0byBk
ZXRlY3QgdGhlCisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaW4gd2hp
Y2ggd2UgbXVzdCBwcmVzZW50IHRoZSBkcmF3aW5nIGJ1ZmZlciBhcworICAgICAgICBkaXNwbGF5
IGJ1ZmZlci4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGRpc3BsYXkgYnVmZmVyIHJlYWQgd2l0
aCBPcGVuR0wuCisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGRyYXdpbmcgYnVmZmVyIHJlYWQgY29k
ZSB0byBiZSBhYmxlIHRvIHJldXNlIHRoZSByZWFkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBkaXNw
bGF5IGJ1ZmZlciByZWFkLiBUaGUgcmVmYWN0b3JlZCBjb2RlIHJlZHVjZXMgcmVkdW5kYW50IHRo
ZQorICAgICAgICBhbGxvY2F0aW9ucyBvZiBmdWxsLXNjcmVlbiBtYWxsb2MgYnVmZmVycyBhbmQg
ZW5zdXJlcyBhbGxvY2F0aW9uIHJlc3VsdHMgYXJlCisgICAgICAgIGNoZWNrZWQgaW5zdGVhZCBv
ZiBjcmFzaGluZyB3aXRoIG51bGxwdHIgZGVyZWZzIHdoZW4gT09NIGhhcHBlbnMuIEZpeGVzCisg
ICAgICAgIGVycm9ycyBzdWNoIGFzIHJkYXI6Ly82NzU1MzUzMSAoQ3Jhc2hUcmFjZXI6IGNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdAorICAgICAgICBXZWJDb3JlOiBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpLgorICAg
ICAgICBSZW1vdmVzIFJHQkEtPkJHUkEtPlJHQkEgY29udmVyc2lvbnMgZnJvbQorICAgICAgICBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEo
KS4KKyAgICAgICAgUmVtb3ZlcyBtYW51YWwgYWxwaGEgcHJlbXVsdGlwbGljYXRpb24gYW5kIG1h
a2VzIENHIGRyYXcgd2l0aCB1bnByZW11bHRpcGxpZWQKKyAgICAgICAgYWxwaGEuCisgICAgICAg
IENoYW5nZXMgQ2Fpcm8gdmFyaWFudCBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB0byBjb252
ZXJ0IG1hbnVhbGx5IFJHQkEtPkJHUkEKKyAgICAgICAgaW5zdGVhZCBvZiAoYmlnKSBPcGVuR0wg
ZHJpdmVyIGRvaW5nIGl0IGluIGNhc2Ugb2Ygbm9uLU5WSURJQSBwbGF0Zm9ybXMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCB0aGUgc25hcHNob3QgLyBzdytodyBkcmF3aW5nIGlzIG5vdCB0ZXN0
YWJsZSBhdCB0aGUgbW9tZW50LgorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHUFVDYW52YXNDb250ZXh0Ojpjb25maWd1
cmVTd2FwQ2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4dDo6cHJlcGFy
ZUZvckRpc3BsYXlXaXRoUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4
dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L0dQVUNhbnZhc0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYWludCk6CisgICAg
ICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9HUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByZXBhcmVGb3JEaXNwbGF5V2l0
aFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUluZGV4QXJyYXlQcmVj
aXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlRHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZlcnRleEF0dHJpYmZ2SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjppbml0VmVydGV4QXR0cmliMCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVz
dWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJl
bmRlcmluZ1Jlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmc6OlNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRCdWZmZXJCaW5kaW5nOjpTY29wZWRCdWZmZXJC
aW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6On5TY29wZWRC
dWZmZXJCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6OnF1
ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZzo6bWFya0JpbmRpbmdDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUmVzdG9yZVJl
YWRGcmFtZWJ1ZmZlckJpbmRpbmc6On5TY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRQaXhlbFN0b3JhZ2VNb2RlOjpTY29wZWRQaXhl
bFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVsU3RvcmFnZU1vZGU6
On5TY29wZWRQaXhlbFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVs
U3RvcmFnZU1vZGU6OnBpeGVsU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUGl4ZWxT
dG9yYWdlTW9kZTo6b3BlcmF0b3IgR0xpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nv
cGVkVGV4dHVyZTo6U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0
dXJlOjp+U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0dXJlOjpv
cGVyYXRvciBHTHVpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVidWZm
ZXI6OlNjb3BlZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lYnVm
ZmVyOjp+U2NvcGVkRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVi
dWZmZXI6Om9wZXJhdG9yIEdMdWludCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZWxlYXNlSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVy
ZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkQ29tcG9zaXRlZFJlc3VsdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9y
UGFpbnRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYkltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om9y
aWdpbmFsU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6bWFwcGVkU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5m
b0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cyk6CisKIDIwMjAtMTItMTQg
IExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU1NJT04o
MjcwNDM1KSBbR1N0cmVhbWVyXSBNYW55IG1lZGlhIHNvdXJjZSB0ZXN0cyBmYWlsaW5nIGFuZCB0
aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwMzI4Y2Y2ZTg0NWY3NTNlNjQyYjQ1M2I4NjMxMTgxN2Q0
YzA2YzkuLmUwODk5YTkyYmMyMGMzNTliYTgwN2IyODEwYjBkZDg5ZWIyMmRjOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTItMTcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVu
QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjY4Mzg2KTogU25hcHNob3RzIG9m
IFdlYkdMIGNvbnRlbnQgaW4gdGhlIHRhYiBwaWNrZXIgZG9uJ3Qgd29yayAoYmxhY2sgbWFwIG9u
IEdvb2dsZSBNYXBzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5OTQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjAxMzc4ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZHVtbXkgaW1wbGVt
ZW50YXRpb25zIG9mIEdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9D
YW52YXMuCisgICAgICAgIFBhaW50aW5nIHRvIGNhbnZhcyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0
IGZvciB0aGUgcmVtb3RlIEdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6ZGlzcGxh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oOgorCiAyMDIwLTEyLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gSW50cm9kdWNlIHZtRW50cnlDdXN0b21BY2Nlc3NvciBhbmQgdm1FbnRy
eUhvc3RGdW5jdGlvbiBmb3IgSklUQ2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcAppbmRleCBlMzAzNTBiNDYyYTBmZWQ0NDY2OGJm
ODk2MDI5MjkzZTExNzhlODg3Li4zOGIxNTI4ZmZjM2E5NTI1ODUwYTk0ZDY1ZWQyNzk0YTRkODA0
YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcApAQCAtOTAsMTAgKzkwLDE4IEBAIHZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgbm90aWZ5Q2FudmFzQ29udGVudENoYW5n
ZWQoKTsKIH0KIAotdm9pZCBHUFVDYW52YXNDb250ZXh0OjptYXJrTGF5ZXJDb21wb3NpdGVkKCkK
K3ZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQogewot
ICAgIGlmIChtX3N3YXBDaGFpbiAmJiBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCkpCisgICAgbV9p
c0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSB0cnVlOworfQorCit2b2lkIEdQVUNhbnZhc0NvbnRleHQ6
OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKK3sKKyAgICAvLyBGSVhNRTogVW5pbXBs
ZW1lbnRlZC4KKyAgICBpZiAobV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgJiYgbV9zd2FwQ2hhaW4g
JiYgbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpKSB7CiAgICAgICAgIG1fc3dhcENoYWluLT5zd2Fw
Q2hhaW4oKS0+cHJlc2VudCgpOworICAgICAgICBtX2lzRGlzcGxheWluZ1dpdGhQYWludCA9IGZh
bHNlOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oCmluZGV4IDZkZjIwYjRhNjQ3
ZjZhMTg3OGIzODE1NmMyZDA3MTA3NjU0MzJhOGQuLjliMGZlN2IwZDA4Y2U5M2M3ZWNhODY5NGEw
MGQxNjMyZTEzZDBjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUNhbnZhc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVDYW52YXNDb250ZXh0LmgKQEAgLTUzLDEzICs1MywxNSBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNXZWJHUFUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpIGZpbmFsOwotICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZp
bmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSBmaW5hbDsKKyAgICB2
b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgZmluYWw7CiAKICAgICAvLyBBY3Rp
dmVET01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJHUFVDYW52YXNDb250ZXh0IjsgfQogICAgIC8vIEZJWE1FOiBTdHVi
cy4KICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IH0KIAorICAgIGJvb2wgbV9pc0Rpc3BsYXlpbmdX
aXRoUGFpbnQgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxXZWJHUFVTd2FwQ2hhaW4+IG1fc3dhcENo
YWluOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRl
eCAxNjljYWE5MDAyNGQyNjc3MjMwNTA2MmY1OThkMTJjY2RkYmFiM2ZmLi41NGIzNDAxZGU5MGYy
MmE4OWI2OTYyN2ZiNDAxZDg1NTVkNTY3ZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcApAQCAtNjQyLDIwICs2NDIsMTcgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBy
KQogCiAgICAgICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgICAgIHNob3VsZFBhaW50ID0g
cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIHx8IGRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCBtX2lz
U25hcHNob3R0aW5nOwotICAgICAgICAgICAgaWYgKHNob3VsZFBhaW50KQorICAgICAgICAgICAg
aWYgKHNob3VsZFBhaW50KSB7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9y
RGlzcGxheVdpdGhQYWludCgpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChzaG91bGRQYWludCkgewogICAgICAgICAgICAgaWYgKGhhc0NyZWF0ZWRJbWFnZUJ1
ZmZlcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fcHJlc2VudGVkSW1hZ2UpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVk
SW50UmVjdChyKSwgcmVuZGVyZXIoKS0+aW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBidWZmZXIoKSkKKyAgICAg
ICAgICAgICAgICBpZiAoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gYnVmZmVyKCkpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgc25h
cHBlZEludFJlY3QocikpOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoaXNHUFVC
YXNlZCgpKQotICAgICAgICAgICAgICAgIGRvd25jYXN0PEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5n
Q29udGV4dD4oKm1fY29udGV4dCkubWFya0xheWVyQ29tcG9zaXRlZCgpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC02NjgsMTkgKzY2NSw2IEBAIGJvb2wgSFRNTENhbnZhc0VsZW1lbnQ6OmlzR1BV
QmFzZWQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHQgJiYgbV9jb250ZXh0LT5pc0dQVUJh
c2VkKCk7CiB9CiAKLXZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6Om1ha2VQcmVzZW50YXRpb25Db3B5
KCkKLXsKLSAgICBpZiAoIW1fcHJlc2VudGVkSW1hZ2UpIHsKLSAgICAgICAgLy8gVGhlIGJ1ZmZl
ciBjb250YWlucyB0aGUgbGFzdCBwcmVzZW50ZWQgZGF0YSwgc28gc2F2ZSBhIGNvcHkgb2YgaXQu
Ci0gICAgICAgIG1fcHJlc2VudGVkSW1hZ2UgPSBidWZmZXIoKS0+Y29weUltYWdlKENvcHlCYWNr
aW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKLSAgICB9Ci19Ci0KLXZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OmNsZWFyUHJlc2VudGF0aW9uQ29weSgpCi17Ci0gICAgbV9wcmVzZW50
ZWRJbWFnZSA9IG51bGxwdHI7Ci19Ci0KIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnNldFN1cmZh
Y2VTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgQ2FudmFzQmFzZTo6c2V0U2l6ZShz
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCBhZWIwMTg5
NzQ5YjU4MzMzNzQ4NDA0Yzk1YmFmZWQwNDUyOGY5Y2VmLi45YzkyMzBmNWZiYjdlNmRlNGI2OWZk
NWM4NmJlZWU0MDY0YjQ0MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oCkBAIC0xMTUsOCArMTE1LDYgQEAgcHVibGljOgogICAgIEltYWdlKiBjb3BpZWRJbWFnZSgp
IGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY2xlYXJDb3BpZWRJbWFnZSgpIGNvbnN0IGZpbmFsOwog
ICAgIFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YSgpOwotICAgIHZvaWQgbWFrZVByZXNl
bnRhdGlvbkNvcHkoKTsKLSAgICB2b2lkIGNsZWFyUHJlc2VudGF0aW9uQ29weSgpOwogCiAgICAg
U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWw7CiAKQEAgLTE5OSw3
ICsxOTcsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lzU25hcHNob3R0aW5nIHsgZmFsc2Ug
fTsKIAotICAgIG11dGFibGUgUmVmUHRyPEltYWdlPiBtX3ByZXNlbnRlZEltYWdlOwogICAgIG11
dGFibGUgUmVmUHRyPEltYWdlPiBtX2NvcGllZEltYWdlOyAvLyBGSVhNRTogVGhpcyBpcyB0ZW1w
b3JhcnkgZm9yIHBsYXRmb3JtcyB0aGF0IGhhdmUgdG8gY29weSB0aGUgaW1hZ2UgYnVmZmVyIHRv
IHJlbmRlciAoYW5kIGZvciBDU1NDYW52YXNWYWx1ZSkuCiB9OwogCkBAIC0yMTYsNCArMjEzLDMg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3QgV2ViQ29yZTo6
RXZlbnRUYXJnZXQmIHRhcmdldCkgeyByZXR1cm4gaXM8V2ViQ29yZTo6Tm9kZT4odGFyZ2V0KSAm
JiBjaGVja1RhZ05hbWUoZG93bmNhc3Q8V2ViQ29yZTo6Tm9kZT4odGFyZ2V0KSk7IH0KIH07CiB9
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuaAppbmRleCBhY2Y4M2JiNzJkY2E3MDFjMGZjYzY3MzhjMWQ4NmNhMTE3OGZkNDk0Li5m
Mzg4NjNmNzhmZWUzZmY4OTkyOWM3NGM0N2NhMmU1MzQxOTkwMDU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC03MSw2
ICs3MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNPZmZzY3JlZW4yZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGFpbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCisgICAgLy8gQ2FsbGVkIGJlZm9yZSBwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0NhbnZhcyBpZiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyBpcworICAgIC8vIHVz
ZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2VzLgorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9y
RGlzcGxheVdpdGhQYWludCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0NhbnZhcygpIHt9CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9HUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDQ3
YTAyZWI3MDZjZTQ1ZDg4ZjE5NzU0YmI3ZDhiZWZmOWIxZjk0MmMuLjg5MGNkNzIzNTAxZTA0ZTI4
ZTgyZjc3YTBiNjlkYmVkNTlhNDg1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC01MCw4
ICs1MCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzaGFwZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFya0xheWVyQ29tcG9z
aXRlZCgpID0gMDsKLQogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEdQVUJhc2VkQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMDEzYjg5
YWY0ODg4Yjg3YzBmNjQ4ZTUyY2I1NjFjZGI5MWM1NDk3My4uMzBkOWU3ZTkxYTQzYzM5ZTgxMmY3
YmI1MmI1MTA2OGJjOTM2NzU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTExOTksMTEgKzExOTks
MTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZXN0b3JlU3RhdGVBZnRlckNs
ZWFyKCkKICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayhtX2RlcHRoTWFzayk7CiB9CiAKLXZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWFya0xheWVyQ29tcG9zaXRlZCgpCisKK3ZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQog
ewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKyAgICBtX2lzRGlzcGxheWluZ1dp
dGhQYWludCA9IHRydWU7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQpAQCAtMTIxMSwxOCArMTIxMCwxNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KCkKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoYXV0byogY2FudmFzID0gaHRtbENhbnZhcygpKSB7Ci0gICAgICAgIGlmIChjYW52
YXMtPmRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCAoY2FudmFzLT5pc1NuYXBzaG90dGluZygpICYm
IGNhbnZhcy0+ZG9jdW1lbnQoKS5wYWdlKCktPmlzVmlzaWJsZSgpKSkKLSAgICAgICAgICAgIGNh
bnZhcy0+Y2xlYXJQcmVzZW50YXRpb25Db3B5KCk7Ci0KLSAgICAgICAgLy8gVW50aWwgdGhlIGNh
bnZhcyBpcyB3cml0dGVuIHRvIGJ5IHRoZSBhcHBsaWNhdGlvbiwgdGhlIGNsZWFyIHRoYXQKLSAg
ICAgICAgLy8gaGFwcGVuZWQgYWZ0ZXIgaXQgd2FzIGNvbXBvc2l0ZWQgc2hvdWxkIGJlIGlnbm9y
ZWQgYnkgdGhlIGNvbXBvc2l0b3IuCi0gICAgICAgIGlmIChtX2NvbnRleHQtPmxheWVyQ29tcG9z
aXRlZCgpICYmICFtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKGNhbnZhcy0+YnVm
ZmVyKCkpOwotCi0gICAgICAgICAgICBjYW52YXMtPm1ha2VQcmVzZW50YXRpb25Db3B5KCk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2FudmFzLT5jbGVhclByZXNlbnRhdGlvbkNvcHko
KTsKKyAgICBpZiAobV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQpIHsKKyAgICAgICAgYm9vbCBjYW52
YXNDb250YWluc0Rpc3BsYXlCdWZmZXIgPSAhbV9tYXJrZWRDYW52YXNEaXJ0eTsKKyAgICAgICAg
cHJlcGFyZUZvckRpc3BsYXkoKTsKKyAgICAgICAgbV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSBm
YWxzZTsKKyAgICAgICAgaWYgKCFjYW52YXNDb250YWluc0Rpc3BsYXlCdWZmZXIpIHsKKyAgICAg
ICAgICAgIGF1dG8mIGJhc2UgPSBjYW52YXNCYXNlKCk7CisgICAgICAgICAgICBiYXNlLmNsZWFy
Q29waWVkSW1hZ2UoKTsKKyAgICAgICAgICAgIG1fbWFya2VkQ2FudmFzRGlydHkgPSBmYWxzZTsK
KyAgICAgICAgICAgIG1fY29udGV4dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKGJh
c2UuYnVmZmVyKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBj
bGVhcklmQ29tcG9zaXRlZChDbGVhckNhbGxlck90aGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCAzMGE4
NTU3ZDg2ODhlMmVhNDk1ZGI3MTZmMDhiZTYwOWVjM2I0ZThhLi5lOGU5MGNmYmExNmIxNGRkMTQ4
Yzk4ZTA2OWU1MDBlY2RlMmI1NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0zODQsOCArMzg0LDggQEAg
cHVibGljOgogCiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheVdpdGhQYWludCgpIGZpbmFsOworICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoKSBmaW5hbDsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpOwogCiAgICAgdm9pZCByZW1vdmVTaGFyZWRPYmplY3QoV2Vi
R0xTaGFyZWRPYmplY3QmKTsKQEAgLTY2OCw2ICs2NjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCk7CiAKICAgICBib29sIG1fY29tcG9zaXRpbmdSZXN1
bHRzTmVlZFVwZGF0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNEaXNwbGF5aW5nV2l0aFBh
aW50IHsgZmFsc2UgfTsKIAogICAgIC8vIEVuYWJsZWQgZXh0ZW5zaW9uIG9iamVjdHMuCiAgICAg
Ly8gRklYTUU6IE1vdmUgc29tZSBvZiB0aGVzZSB0byBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIHRo
ZSBvbmVzIG5vdCBuZWVkZWQgZm9yIFdlYkdMMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggMjIzYTVjOWJmMTY5N2Yy
NWYxMTJkYmNjMTg2ZjgxOWI3Y2UxZGU0NS4uYWE4ZmYyMzY4ZGZmZDg5Y2VhYjZhNDQzMzMwZGI0
NTE2YTE4ZjlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0xMjkyLDcgKzEyOTIsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gdGhlIGNvbnRleHQuCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyKikgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlRGF0YT4g
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikg
PSAwOwogCiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQuIFRoZSBsYXllciBz
aG91bGQgYmUgbWFya2VkIGNvbXBvc2l0ZWQgYnkKICAgICAvLyBwcmVwYXJpbmcgZm9yIGRpc3Bs
YXksIHNvIHRoYXQgY2FudmFzIGltYWdlIGJ1ZmZlciBhbmQgdGhlIGxheWVyIGFncmVlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKaW5kZXggNjBmN2E5NDdlZmNiYjM3
MTU2YzA5OGUwYjVlZTMzYzNiNjJiODQ5Yi4uMzZmYWFhN2U0NjYyMmJhZjNhMTIzZmJlOTVlZTk0
YmU2NDA5ZDU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApA
QCAtOTksMTEgKzk5LDYgQEAgR0NHTGJpdGZpZWxkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdAogICAgIHJldHVybiBtX2J1ZmZl
cnNUb0F1dG9DbGVhcjsKIH0KIAotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKLXsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpCiB7CiAgICAgLy8gUmVkZWNsYXJlZCBmb3Ig
ZXhwb3J0IHJlYXNvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAppbmRl
eCA3MjZhYWY2YzZhMGY2MmZmMjgyZTViOGQyMDJhMTI5NGUxZGU4NTcxLi4yNDcxZDRlMjVjOWFh
MjAwZWM3NDNiMWZlMGM2NDY4YjBjOWE1MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmgKQEAgLTY3LDcgKzY3LDYgQEAgcHVibGljOgogICAgIGJvb2wgbGF5ZXJDb21w
b3NpdGVkKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NH
TGJpdGZpZWxkKSBmaW5hbDsKICAgICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFy
KCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMo
SW1hZ2VCdWZmZXIqKSBmaW5hbDsKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5h
bDsKICAgICB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDMwOWE1MzA5YjY0MGEzZDZhMjgxNDFj
YTdiMWE3NWRiNDZlOWY5NTEuLmI1MDQzYjc0NjM2Zjc4ODVjNWQ4MGMwNzczNTU1ZDcxMjAwMDIz
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0zMSw2ICszMSw3IEBA
CiAKICNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zR0xBTkdM
RS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKQEAgLTQ2LDkgKzQ3LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0jaWYgVVNFKEFDQ0VMRVJB
VEUpCi0jaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+Ci0jZW5kaWYKIAogI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTENWQU5HTEUuaCIKQEAgLTY0LDMwICs2Miw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIFNjb3BlZFJlc2V0QnVmZmVyQmluZGluZyB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUmVzZXRCdWZmZXJCaW5kaW5nKTsKLXB1YmxpYzoK
LSAgICBTY29wZWRSZXNldEJ1ZmZlckJpbmRpbmcoYm9vbCBzaG91bGREb1dvcmssIEdMZW51bSBi
aW5kaW5nUG9pbnRRdWVyeSwgR0xlbnVtIGJpbmRpbmdQb2ludCkKLSAgICAgICAgOiBtX2JpbmRp
bmdQb2ludFF1ZXJ5KGJpbmRpbmdQb2ludFF1ZXJ5KQotICAgICAgICAsIG1fYmluZGluZ1BvaW50
KGJpbmRpbmdQb2ludCkKLSAgICB7Ci0gICAgICAgIGlmIChzaG91bGREb1dvcmspCi0gICAgICAg
ICAgICBnbDo6R2V0SW50ZWdlcnYobV9iaW5kaW5nUG9pbnRRdWVyeSwgJm1fYmluZGluZ1ZhbHVl
KTsKLSAgICAgICAgaWYgKG1fYmluZGluZ1ZhbHVlKQotICAgICAgICAgICAgZ2w6OkJpbmRCdWZm
ZXIobV9iaW5kaW5nUG9pbnQsIDApOwotICAgIH0KLQotICAgIH5TY29wZWRSZXNldEJ1ZmZlckJp
bmRpbmcoKQotICAgIHsKLSAgICAgICAgaWYgKG1fYmluZGluZ1ZhbHVlKQotICAgICAgICAgICAg
Z2w6OkJpbmRCdWZmZXIobV9iaW5kaW5nUG9pbnQsIG1fYmluZGluZ1ZhbHVlKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgR0xpbnQgbV9iaW5kaW5nUG9pbnRRdWVyeSB7IDAgfTsKLSAgICBHTGlu
dCBtX2JpbmRpbmdQb2ludCB7IDAgfTsKLSAgICBHTGludCBtX2JpbmRpbmdWYWx1ZSB7IDAgfTsK
LX07CiAKIH0gLy8gbmFtZXNwYWNlIGFub255bW91cwogCkBAIC0xMDIsMzYgKzc2LDI5IEBAIHN0
YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGludCB3aWR0aCwgaW50IGhlaWdo
dCwgdW5zaWduZWQgY2hhciogcGl4CiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeShpbnQgeCwgaW50
IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQotewotICAg
IC8vIE5WSURJQSBkcml2ZXJzIGhhdmUgYSBidWcgd2hlcmUgY2FsbGluZyByZWFkUGl4ZWxzIGlu
IEJHUkEgY2FuIHJldHVybiB0aGUgd3JvbmcgdmFsdWVzIGZvciB0aGUgYWxwaGEgY2hhbm5lbCB3
aGVuIHRoZSBhbHBoYSBpcyBvZmYgZm9yIHRoZSBjb250ZXh0LgotICAgIGdsOjpSZWFkUGl4ZWxz
KHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7
Ci0jaWYgVVNFKEFDQ0VMRVJBVEUpCi0gICAgdkltYWdlX0J1ZmZlciBzcmM7Ci0gICAgc3JjLmhl
aWdodCA9IGhlaWdodDsKLSAgICBzcmMud2lkdGggPSB3aWR0aDsKLSAgICBzcmMucm93Qnl0ZXMg
PSB3aWR0aCAqIDQ7Ci0gICAgc3JjLmRhdGEgPSBwaXhlbHM7Ci0KLSAgICB2SW1hZ2VfQnVmZmVy
IGRlc3Q7Ci0gICAgZGVzdC5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgZGVzdC53aWR0aCA9IHdpZHRo
OwotICAgIGRlc3Qucm93Qnl0ZXMgPSB3aWR0aCAqIDQ7Ci0gICAgZGVzdC5kYXRhID0gcGl4ZWxz
OwotCi0gICAgLy8gU3dhcCBwaXhlbCBjaGFubmVscyBmcm9tIFJHQkEgdG8gQkdSQS4KLSAgICBj
b25zdCB1aW50OF90IG1hcFs0XSA9IHsgMiwgMSwgMCwgMyB9OwotICAgIHZJbWFnZVBlcm11dGVD
aGFubmVsc19BUkdCODg4OCgmc3JjLCAmZGVzdCwgbWFwLCBrdkltYWdlTm9GbGFncyk7Ci0jZWxz
ZQotICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICBzdGQ6OnN3YXAocGl4ZWxz
W2ldLCBwaXhlbHNbaSArIDJdKTsKLSNlbmRpZgotCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCit7CisgICAgYXV0
byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6
ZSgpKTsKKyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
U2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSBwYWNrQWxpZ25tZW50KEdMX1BBQ0tfQUxJR05NRU5UKTsK
KyAgICBpZiAocGFja0FsaWdubWVudCA+IDQpCisgICAgICAgIHBhY2tBbGlnbm1lbnQucGl4ZWxT
dG9yZSg0KTsKKyAgICBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlIHBhY2tSb3dMZW5ndGgoR0xfUEFD
S19ST1dfTEVOR1RILCAwLCBtX2lzRm9yV2ViR0wyKTsKKyAgICBTY29wZWRQaXhlbFN0b3JhZ2VN
b2RlIHBhY2tTa2lwUm93cyhHTF9QQUNLX1NLSVBfUk9XUywgMCwgbV9pc0ZvcldlYkdMMik7Cisg
ICAgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSBwYWNrU2tpcFBpeGVscyhHTF9QQUNLX1NLSVBfUElY
RUxTLCAwLCBtX2lzRm9yV2ViR0wyKTsKKyAgICBTY29wZWRCdWZmZXJCaW5kaW5nIHNjb3BlZFBp
eGVsUGFja0J1ZmZlclJlc2V0KEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCAwLCBtX2lzRm9yV2ViR0wy
KTsKKworICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKDAsIDAsIGltYWdlRGF0YS0+d2lk
dGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgaW1h
Z2VEYXRhLT5kYXRhKCktPmJ5dGVMZW5ndGgoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
aW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSk7CisgICAgLy8gRklYTUU6IFJlbmRlcmluZyB0byBH
TF9SR0IgdGV4dHVyZXMgd2l0aCBhIElPU3VyZmFjZSBib3VuZCB0byB0aGUgdGV4dHVyZSBpbWFn
ZSBsZWF2ZXMKKyAgICAvLyB0aGUgYWxwaGEgaW4gdGhlIElPU3VyZmFjZSBpbiBpbmNvcnJlY3Qg
c3RhdGUuIEFsc28gQU5HTEUgZ2w6OlJlYWRQaXhlbHMgd2lsbCBpbiBzb21lCisgICAgLy8gY2Fz
ZXMgZXhwb3NlIHRoZSBub24tMjU1IHZhbHVlcy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODA0CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmICghY29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSkKLSAgICAg
ICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdodCwgcGl4ZWxzKTsKKyAg
ICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFn
ZURhdGEtPmhlaWdodCgpLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpKTsKICNlbmRpZgorICAg
IHJldHVybiBpbWFnZURhdGE7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZh
bGlkYXRlQXR0cmlidXRlcygpCkBAIC01MTAsNjQgKzQ3Nyw2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRo
U3RlbmNpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCi17Ci0gICAg
Q2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PiByb3dCeXRlcyA9IENoZWNrZWQ8aW50LCBSZWNv
cmRPdmVyZmxvdz4obV9jdXJyZW50V2lkdGgpICogNDsKLSAgICBpZiAocm93Qnl0ZXMuaGFzT3Zl
cmZsb3dlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDaGVja2VkPGludCwgUmVjb3JkT3Zl
cmZsb3c+IHRvdGFsQnl0ZXNDaGVja2VkID0gcm93Qnl0ZXMgKiBtX2N1cnJlbnRIZWlnaHQ7Ci0g
ICAgaWYgKHRvdGFsQnl0ZXNDaGVja2VkLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGludCB0b3RhbEJ5dGVzID0gdG90YWxCeXRlc0NoZWNrZWQudW5zYWZlR2V0KCk7Ci0K
LSAgICBhdXRvIHBpeGVscyA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPih0b3RhbEJ5
dGVzKTsKLSAgICBpZiAoIXBpeGVscykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcmVhZFJlbmRl
cmluZ1Jlc3VsdHMocGl4ZWxzLmdldCgpLCB0b3RhbEJ5dGVzKTsKLQotICAgIGlmICghY29udGV4
dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpIHsKLSAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpIHsKLSAgICAgICAgICAgIC8vIFByZW11bHRpcGx5
IGFscGhhLgotICAgICAgICAgICAgcGl4ZWxzW2kgKyAwXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxz
W2kgKyAwXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICAgICAgcGl4ZWxzW2kgKyAx
XSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAxXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwot
ICAgICAgICAgICAgcGl4ZWxzW2kgKyAyXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAyXSAq
IHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcGFpbnRUb0Nh
bnZhcyhwaXhlbHMuZ2V0KCksIEludFNpemUobV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdo
dCksIGltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsK
LX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKLXsKLSAgICAvLyBOb3QgbmVlZGVkIGF0IHRoZSBtb21l
bnQsIHNvIHJldHVybiB0aGF0IG5vdGhpbmcgd2FzIGRvbmUuCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1SZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQotewotICAgIC8vIFJlYWRpbmcgcHJlbXVsdGlwbGll
ZCBhbHBoYSB3b3VsZCBpbnZvbHZlIHVucHJlbXVsdGlwbHlpbmcsIHdoaWNoIGlzCi0gICAgLy8g
bG9zc3kuCi0gICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRh
OjpjcmVhdGUoSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSk7Ci0gICAg
dW5zaWduZWQgY2hhciogcGl4ZWxzID0gaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKTsKLSAgICBD
aGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IHRvdGFsQnl0ZXNDaGVja2VkID0gNCAqIENoZWNr
ZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4obV9jdXJyZW50V2lkdGgpICogQ2hlY2tlZDxpbnQsIFJl
Y29yZE92ZXJmbG93PihtX2N1cnJlbnRIZWlnaHQpOwotICAgIGlmICh0b3RhbEJ5dGVzQ2hlY2tl
ZC5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBpbWFnZURhdGE7Ci0gICAgaW50IHRv
dGFsQnl0ZXMgPSB0b3RhbEJ5dGVzQ2hlY2tlZC51bnNhZmVHZXQoKTsKLQotICAgIHJlYWRSZW5k
ZXJpbmdSZXN1bHRzKHBpeGVscywgdG90YWxCeXRlcyk7Ci0KLSAgICAvLyBDb252ZXJ0IHRvIFJH
QkEuCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAg
IHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOwotCi0gICAgcmV0dXJuIGltYWdl
RGF0YTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZVRleHR1cmUo
KQogewogICAgIGlmIChtX2xheWVyQ29tcG9zaXRlZCkKQEAgLTYyMCw2NSArNTI5LDE1IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVUZXh0dXJlSW1wbCgpCiAjZW5kaWYK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHMo
dW5zaWduZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSkKK1JlZlB0cjxJbWFnZURhdGE+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cygpCiB7Ci0gICAg
aWYgKHBpeGVsc1NpemUgPCBtX2N1cnJlbnRXaWR0aCAqIG1fY3VycmVudEhlaWdodCAqIDQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotCi0gICAgR0NHTGVudW0gZnJhbWVidWZmZXJUYXJnZXQgPSBtX2lzRm9yV2Vi
R0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRl
eHRHTDo6RlJBTUVCVUZGRVI7Ci0KLSAgICBib29sIG11c3RSZXN0b3JlRkJPID0gZmFsc2U7Cisg
ICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcgZmJvQmluZGluZyhtX2lzRm9y
V2ViR0wyLCBtX3N0YXRlLmJvdW5kUmVhZEZCTyk7CiAgICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVz
KCkuYW50aWFsaWFzKSB7CiAgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3Nhcnko
KTsKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9mYm8p
OwotICAgICAgICBtdXN0UmVzdG9yZUZCTyA9IHRydWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
aWYgKG1fc3RhdGUuYm91bmRSZWFkRkJPICE9IG1fZmJvKSB7Ci0gICAgICAgICAgICBtdXN0UmVz
dG9yZUZCTyA9IHRydWU7Ci0gICAgICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVm
ZmVyVGFyZ2V0LCBtX2Zibyk7Ci0gICAgICAgIH0KKyAgICAgICAgZmJvQmluZGluZy5tYXJrQmlu
ZGluZ0NoYW5nZWQoKTsKICAgICB9Ci0KLSAgICBHTGludCBwYWNrQWxpZ25tZW50ID0gNDsKLSAg
ICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOwotICAgIGdsOjpHZXRJbnRl
Z2VydihHTF9QQUNLX0FMSUdOTUVOVCwgJnBhY2tBbGlnbm1lbnQpOwotICAgIGlmIChwYWNrQWxp
Z25tZW50ID4gNCkgewotICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQs
IDQpOwotICAgICAgICBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSB0cnVlOwotICAgIH0KLSAg
ICBHTGludCBwYWNrUm93TGVuZ3RoID0gMDsKLSAgICBHTGludCBwYWNrU2tpcFJvd3MgPSAwOwot
ICAgIEdMaW50IHBhY2tTa2lwUGl4ZWxzID0gMDsKLSAgICBTY29wZWRSZXNldEJ1ZmZlckJpbmRp
bmcgc2NvcGVkUGl4ZWxQYWNrQnVmZmVyUmVzZXQobV9pc0ZvcldlYkdMMiwgR0xfUElYRUxfUEFD
S19CVUZGRVJfQklORElORywgR0xfUElYRUxfUEFDS19CVUZGRVIpOwotICAgIGlmIChtX2lzRm9y
V2ViR0wyKSB7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihHTF9QQUNLX1JPV19MRU5HVEgsICZw
YWNrUm93TGVuZ3RoKTsKLSAgICAgICAgaWYgKHBhY2tSb3dMZW5ndGggPiAwKQotICAgICAgICAg
ICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfUk9XX0xFTkdUSCwgMCk7Ci0gICAgICAgIGdsOjpH
ZXRJbnRlZ2VydihHTF9QQUNLX1NLSVBfUk9XUywgJnBhY2tTa2lwUm93cyk7Ci0gICAgICAgIGlm
IChwYWNrU2tpcFJvd3MgPiAwKQotICAgICAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tf
U0tJUF9ST1dTLCAwKTsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX1BBQ0tfU0tJUF9QSVhF
TFMsICZwYWNrU2tpcFBpeGVscyk7Ci0gICAgICAgIGlmIChwYWNrU2tpcFBpeGVscyA+IDApCi0g
ICAgICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19TS0lQX1BJWEVMUywgMCk7Ci0gICAg
fQotCi0gICAgcmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeSgwLCAwLCBtX2N1
cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBwaXhlbHMpOwotCi0gICAgaWYgKG11c3RSZXN0
b3JlUGFja0FsaWdubWVudCkKLSAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05N
RU5ULCBwYWNrQWxpZ25tZW50KTsKLSAgICBpZiAocGFja1Jvd0xlbmd0aCA+IDApCi0gICAgICAg
IGdsOjpQaXhlbFN0b3JlaShHTF9QQUNLX1JPV19MRU5HVEgsIHBhY2tSb3dMZW5ndGgpOwotICAg
IGlmIChwYWNrU2tpcFJvd3MgPiAwKQotICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19T
S0lQX1JPV1MsIHBhY2tTa2lwUm93cyk7Ci0gICAgaWYgKHBhY2tTa2lwUGl4ZWxzID4gMCkKLSAg
ICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfU0tJUF9QSVhFTFMsIHBhY2tTa2lwUGl4ZWxz
KTsKLQotICAgIGlmIChtdXN0UmVzdG9yZUZCTykKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZl
cihmcmFtZWJ1ZmZlclRhcmdldCwgbV9zdGF0ZS5ib3VuZFJlYWRGQk8pOworICAgIGZib0JpbmRp
bmcuYmluZEZyYW1lYnVmZmVyKG1fZmJvKTsKKyAgICByZXR1cm4gcmVhZFBpeGVsc0ZvclBhaW50
UmVzdWx0cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKGlu
dCB3aWR0aCwgaW50IGhlaWdodCkKQEAgLTcwNCw3ICs1NjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogICAgIFRlbXBv
cmFyeUFOR0xFU2V0dGluZyBzY29wZWRTY2lzc29yKEdMX1NDSVNTT1JfVEVTVCwgR0xfRkFMU0Up
OwogICAgIFRlbXBvcmFyeUFOR0xFU2V0dGluZyBzY29wZWREaXRoZXIoR0xfRElUSEVSLCBHTF9G
QUxTRSk7Ci0gICAgU2NvcGVkUmVzZXRCdWZmZXJCaW5kaW5nIHNjb3BlZFBpeGVsVW5wYWNrQnVm
ZmVyUmVzZXQobV9pc0ZvcldlYkdMMiwgR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HLCBH
TF9QSVhFTF9VTlBBQ0tfQlVGRkVSKTsKKyAgICBTY29wZWRCdWZmZXJCaW5kaW5nIHNjb3BlZFBp
eGVsVW5wYWNrQnVmZmVyUmVzZXQoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgbV9pc0Zvcldl
YkdMMik7CiAKICAgICBib29sIG11c3RSZXN0b3JlRkJPID0gcmVzaGFwZUZCT3MoSW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KSk7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgKaW5kZXggMjEzMjdk
ZGFmYzNkYjVmZWQyZTgxMzI2YjFmYTIyYzUyODY5ZjE1MS4uNDk0MmE5NTU0NTZiZjk0NDg0MDFj
MmUyNmI1N2ZkYjgyMWNkNGM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyk7CiBwdWJsaWM6Ci0gICAgU2NvcGVkUmVzdG9y
ZVRleHR1cmVCaW5kaW5nKEdDR0xlbnVtIGJpbmRpbmdQb2ludFF1ZXJ5LCBHQ0dMZW51bSBiaW5k
aW5nUG9pbnQsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVy
ZUJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludFF1ZXJ5LCBHTGVudW0gYmluZGluZ1BvaW50LCBi
b29sIGNvbmRpdGlvbiA9IHRydWUpCiAgICAgewotICAgICAgICBBU1NFUlQoYmluZGluZ1BvaW50
ICE9IHN0YXRpY19jYXN0PEdDR0xlbnVtPigwdSkpOworICAgICAgICBBU1NFUlQoYmluZGluZ1Bv
aW50ICE9IHN0YXRpY19jYXN0PEdMZW51bT4oMHUpKTsKICAgICAgICAgaWYgKGNvbmRpdGlvbikg
ewogICAgICAgICAgICAgbV9iaW5kaW5nUG9pbnQgPSBiaW5kaW5nUG9pbnQ7CiAgICAgICAgICAg
ICBnbDo6R2V0SW50ZWdlcnYoYmluZGluZ1BvaW50UXVlcnksIHJlaW50ZXJwcmV0X2Nhc3Q8R0xp
bnQqPigmbV9iaW5kaW5nVmFsdWUpKTsKQEAgLTU2LDYgKzU2LDE1MyBAQCBwcml2YXRlOgogICAg
IEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07CiB9OwogCisKK2NsYXNzIFNjb3BlZEJ1ZmZl
ckJpbmRpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEJ1ZmZlckJpbmRpbmcp
OworcHVibGljOgorICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludCwg
R0x1aW50IGJpbmRpbmdWYWx1ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQorICAgIHsKKyAgICAg
ICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdsOjpHZXRJ
bnRlZ2VydihxdWVyeShiaW5kaW5nUG9pbnQpLCByZWludGVycHJldF9jYXN0PEdMaW50Kj4oJm1f
YmluZGluZ1ZhbHVlKSk7CisgICAgICAgIGlmIChiaW5kaW5nVmFsdWUgPT0gbV9iaW5kaW5nVmFs
dWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fYmluZGluZ1BvaW50ID0gYmluZGlu
Z1BvaW50OworICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwgYmluZGluZ1Zh
bHVlKTsKKyAgICB9CisKKyAgICB+U2NvcGVkQnVmZmVyQmluZGluZygpCisgICAgeworICAgICAg
ICBpZiAobV9iaW5kaW5nUG9pbnQpCisgICAgICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRp
bmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdMZW51bSBxdWVyeShHTGVudW0gYmluZGluZ1BvaW50KQorICAgIHsKKyAgICAg
ICAgaWYgKGJpbmRpbmdQb2ludCA9PSBHTF9QSVhFTF9QQUNLX0JVRkZFUikKKyAgICAgICAgICAg
IHJldHVybiBHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOworICAgICAgICBBU1NFUlQoYmlu
ZGluZ1BvaW50ID09IEdMX1BJWEVMX1VOUEFDS19CVUZGRVIpOworICAgICAgICByZXR1cm4gR0xf
UElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HOworICAgIH0KKyAgICBHTGludCBtX2JpbmRpbmdQ
b2ludCB7IDAgfTsKKyAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUgeyAwdSB9OworfTsKK2NsYXNz
IFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk7CitwdWJsaWM6Cisg
ICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoYm9vbCBpc0ZvcldlYkdMMiwg
R0x1aW50IHJlc3RvcmVWYWx1ZSkKKyAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlzRm9y
V2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQorICAgICAgICAs
IG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZFJl
c3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGJvb2wgaXNGb3JXZWJHTDIsIEdMdWludCByZXN0
b3JlVmFsdWUsIEdMdWludCB2YWx1ZSkKKyAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlz
Rm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQorICAgICAg
ICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKKyAgICB7CisgICAgICAgIGJpbmRGcmFt
ZWJ1ZmZlcih2YWx1ZSk7CisgICAgfQorICAgIHZvaWQgbWFya0JpbmRpbmdDaGFuZ2VkKCkKKyAg
ICB7CisgICAgICAgIG1fYmluZGluZ0NoYW5nZWQgPSB0cnVlOworICAgIH0KKyAgICB2b2lkIGJp
bmRGcmFtZWJ1ZmZlcihHTHVpbnQgYmluZGluZ1ZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2JpbmRpbmdDaGFuZ2VkICYmIG1fYmluZGluZ1ZhbHVlID09IGJpbmRpbmdWYWx1ZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVy
VGFyZ2V0LCBiaW5kaW5nVmFsdWUpOworICAgICAgICBtX2JpbmRpbmdDaGFuZ2VkID0gbV9iaW5k
aW5nVmFsdWUgIT0gYmluZGluZ1ZhbHVlOworICAgIH0KKyAgICB+U2NvcGVkUmVzdG9yZVJlYWRG
cmFtZWJ1ZmZlckJpbmRpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYmluZGluZ0NoYW5nZWQp
CisgICAgICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXJUYXJnZXQsIG1f
YmluZGluZ1ZhbHVlKTsKKyAgICB9Citwcml2YXRlOgorICAgIGNvbnN0IEdMZW51bSBtX2ZyYW1l
YnVmZmVyVGFyZ2V0OworICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07CisgICAgYm9v
bCBtX2JpbmRpbmdDaGFuZ2VkIHsgZmFsc2UgfTsKK307CisKK2NsYXNzIFNjb3BlZFBpeGVsU3Rv
cmFnZU1vZGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFBpeGVsU3RvcmFnZU1v
ZGUpOworcHVibGljOgorICAgIGV4cGxpY2l0IFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVt
IG5hbWUsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICAgICAgOiBtX25hbWUoY29uZGl0aW9u
ID8gbmFtZSA6IDApCisgICAgeworICAgICAgICBpZiAobV9uYW1lKQorICAgICAgICAgICAgZ2w6
OkdldEludGVnZXJ2KG1fbmFtZSwgJm1fb3JpZ2luYWxWYWx1ZSk7CisgICAgfQorICAgIFNjb3Bl
ZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVtIG5hbWUsIEdMaW50IHZhbHVlLCBib29sIGNvbmRpdGlv
biA9IHRydWUpCisgICAgICAgIDogbV9uYW1lKGNvbmRpdGlvbiA/IG5hbWUgOiAwKQorICAgIHsK
KyAgICAgICAgaWYgKG1fbmFtZSkgeworICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KG1fbmFt
ZSwgJm1fb3JpZ2luYWxWYWx1ZSk7CisgICAgICAgICAgICBwaXhlbFN0b3JlKHZhbHVlKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICB+U2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSgpCisgICAgeworICAg
ICAgICBpZiAobV9uYW1lICYmIG1fdmFsdWVDaGFuZ2VkKQorICAgICAgICAgICAgZ2w6OlBpeGVs
U3RvcmVpKG1fbmFtZSwgbV9vcmlnaW5hbFZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBwaXhlbFN0
b3JlKEdMaW50IHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbmFtZSk7CisgICAgICAg
IGlmICghbV92YWx1ZUNoYW5nZWQgJiYgbV9vcmlnaW5hbFZhbHVlID09IHZhbHVlKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBnbDo6UGl4ZWxTdG9yZWkobV9uYW1lLCB2YWx1ZSk7Cisg
ICAgICAgIG1fdmFsdWVDaGFuZ2VkID0gbV9vcmlnaW5hbFZhbHVlICE9IHZhbHVlOworICAgIH0K
KyAgICBvcGVyYXRvciBHTGludCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9uYW1l
ICYmICFtX3ZhbHVlQ2hhbmdlZCk7CisgICAgICAgIHJldHVybiBtX29yaWdpbmFsVmFsdWU7Cisg
ICAgfQorcHJpdmF0ZToKKyAgICBjb25zdCBHTGVudW0gbV9uYW1lOworICAgIGJvb2wgbV92YWx1
ZUNoYW5nZWQgeyBmYWxzZSB9OworICAgIEdMaW50IG1fb3JpZ2luYWxWYWx1ZSB7IDAgfTsKK307
CisKK2NsYXNzIFNjb3BlZFRleHR1cmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3Bl
ZFRleHR1cmUpOworcHVibGljOgorICAgIFNjb3BlZFRleHR1cmUoKQorICAgIHsKKyAgICAgICAg
Z2w6OkdlblRleHR1cmVzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIH5TY29wZWRUZXh0dXJl
KCkKKyAgICB7CisgICAgICAgIGdsOjpEZWxldGVUZXh0dXJlcygxLCAmbV9vYmplY3QpOworICAg
IH0KKyAgICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
b2JqZWN0OworICAgIH0KK3ByaXZhdGU6CisgICAgR0x1aW50IG1fb2JqZWN0IHsgMHUgfTsKK307
CisKK2NsYXNzIFNjb3BlZEZyYW1lYnVmZmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
Y29wZWRGcmFtZWJ1ZmZlcik7CitwdWJsaWM6CisgICAgU2NvcGVkRnJhbWVidWZmZXIoKQorICAg
IHsKKyAgICAgICAgZ2w6OkdlbkZyYW1lYnVmZmVycygxLCAmbV9vYmplY3QpOworICAgIH0KKyAg
ICB+U2NvcGVkRnJhbWVidWZmZXIoKQorICAgIHsKKyAgICAgICAgZ2w6OkRlbGV0ZUZyYW1lYnVm
ZmVycygxLCAmbV9vYmplY3QpOworICAgIH0KKyAgICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0OworICAgIH0KK3ByaXZhdGU6CisgICAgR0x1
aW50IG1fb2JqZWN0IHsgMCB9OworfTsKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0R0xDYWlyby5jcHAKaW5kZXggNDNjZGFjOGIwMWNkYTBkZjA2MjE4NmYxNTAwM2VhMzA4ZmEy
MGNkNi4uMWZlMjQzNTE3NDdiMWYzYjFkOTBhZDEzOThlYjRiMWIzZGNkODVkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
R0xDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKQEAgLTEwNSwxNSArMTA1LDMwIEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwgYm9vbCBpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhl
bHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cGFpbnRUb0NhbnZhcyhSZWY8SW1hZ2VEYXRhPiYmIGltYWdlRGF0YSwgY29uc3QgSW50U2l6ZSYg
Y2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmICghaW1hZ2VQ
aXhlbHMgfHwgaW1hZ2VTaXplLmlzRW1wdHkoKSB8fCBjYW52YXNTaXplLmlzRW1wdHkoKSkKKyAg
ICBBU1NFUlQoIWltYWdlRGF0YS0+c2l6ZSgpLmlzRW1wdHkoKSk7CisgICAgaWYgKGNhbnZhc1Np
emUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBQbGF0Zm9ybUNvbnRleHRDYWly
byogcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBpZiAo
IXBsYXRmb3JtQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gQ29udmVydCBSR0JB
IHRvIEJHUkEuIEJHUkEgaXMgQ0FJUk9fRk9STUFUX0FSR0IzMiBvbiBsaXR0bGUtZW5kaWFuIGFy
Y2hpdGVjdHVyZXMuCisgICAgc2l6ZV90IHRvdGFsQnl0ZXMgPSBpbWFnZURhdGEuZGF0YSgpLT5i
eXRlTGVuZ3RoKCk7CisgICAgdWludDhfdCogcGl4ZWxzID0gaW1hZ2VEYXRhLmRhdGEoKS0+ZGF0
YSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQorICAg
ICAgICBzdGQ6OnN3YXAocGl4ZWxzW2ldLCBwaXhlbHNbaSArIDJdKTsKKworICAgIGlmICghY29u
dGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpIHsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpIHsKKyAgICAgICAgICAgIHBpeGVsc1tp
ICsgMF0gPSBzdGQ6Om1pbigyNTUsIHBpeGVsc1tpICsgMF0gKiBwaXhlbHNbaSArIDNdIC8gMjU1
KTsKKyAgICAgICAgICAgIHBpeGVsc1tpICsgMV0gPSBzdGQ6Om1pbigyNTUsIHBpeGVsc1tpICsg
MV0gKiBwaXhlbHNbaSArIDNdIC8gMjU1KTsKKyAgICAgICAgICAgIHBpeGVsc1tpICsgMl0gPSBz
dGQ6Om1pbigyNTUsIHBpeGVsc1tpICsgMl0gKiBwaXhlbHNbaSArIDNdIC8gMjU1KTsKKyAgICAg
ICAgfQorICAgIH0KKwogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LT5jcigpOwog
ICAgIHBsYXRmb3JtQ29udGV4dC0+c2F2ZSgpOwogCkBAIC0xMjIsNyArMTM3LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFy
KiBpbWFnZVBpeGVscywgY28KICAgICBjYWlyb19wYWludChjcik7CiAKICAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBpbWFnZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNl
X2NyZWF0ZV9mb3JfZGF0YSgKLSAgICAgICAgY29uc3RfY2FzdDx1bnNpZ25lZCBjaGFyKj4oaW1h
Z2VQaXhlbHMpLCBDQUlST19GT1JNQVRfQVJHQjMyLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VT
aXplLmhlaWdodCgpLCBpbWFnZVNpemUud2lkdGgoKSAqIDQpKTsKKyAgICAgICAgaW1hZ2VEYXRh
LT5kYXRhKCktPmRhdGEoKSwgQ0FJUk9fRk9STUFUX0FSR0IzMiwgaW1hZ2VEYXRhLT53aWR0aCgp
LCBpbWFnZURhdGEtPmhlaWdodCgpLCBpbWFnZURhdGEtPndpZHRoKCkgKiA0KSk7CiAKICAgICAv
LyBPcGVuR0wga2VlcHMgdGhlIHBpeGVscyBzdG9yZWQgYm90dG9tIHVwLCBzbyB3ZSBuZWVkIHRv
IGZsaXAgdGhlIGltYWdlIGhlcmUuCiAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCAwLCBpbWFnZVNp
emUuaGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAppbmRleCA2OGQ1YWM4M2Q5MTJlODZl
ZmViZmY0MjM5ZGZhMDY0NjYzMDBmMWI0Li5lMmU1MWZkMGEwNjBkYWQyMWIyZDIxYTUyODVkNDBk
NDczYmM1MjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcApAQCAtNTA1LDM2ICs1MDUsMzUgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZv
aWQgcmVsZWFzZUltYWdlRGF0YSh2b2lkKiwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90KQorc3Rh
dGljIHZvaWQgcmVsZWFzZUltYWdlRGF0YSh2b2lkKiBpbWFnZURhdGEsIGNvbnN0IHZvaWQqLCBz
aXplX3QpCiB7Ci0gICAgZmFzdEZyZWUoY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpOworICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8SW1hZ2VEYXRhKj4oaW1hZ2VEYXRhKS0+ZGVyZWYoKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBj
aGFyKiBpbWFnZVBpeGVscywgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbnRTaXpl
JiBjYW52YXNTaXplLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKFJlZjxJbWFnZURhdGE+JiYgaW1hZ2VEYXRhLCBj
b25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0g
ICAgaWYgKCFpbWFnZVBpeGVscyB8fCBpbWFnZVNpemUuaXNFbXB0eSgpIHx8IGNhbnZhc1NpemUu
aXNFbXB0eSgpKQorICAgIEFTU0VSVCghaW1hZ2VEYXRhLT5zaXplKCkuaXNFbXB0eSgpKTsKKyAg
ICBpZiAoY2FudmFzU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGF0
dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICAvLyBJbnB1dCBpcyBHTF9SR0JBID09IGtD
R0JpdG1hcEJ5dGVPcmRlcjMyQmlnIHwga0NHSW1hZ2VBbHBoYSpMYXN0LgorICAgIC8vIEdMX0JH
UkEgd291bGQgYmUga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhKkZp
cnN0LgorICAgIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvID0ga0NHQml0bWFwQnl0ZU9yZGVyMzJC
aWc7CisgICAgaWYgKCFhdHRycy5hbHBoYSkKKyAgICAgICAgYml0bWFwSW5mbyB8PSBrQ0dJbWFn
ZUFscGhhTm9uZVNraXBMYXN0OworICAgIGVsc2UgaWYgKGF0dHJzLnByZW11bHRpcGxpZWRBbHBo
YSkKKyAgICAgICAgYml0bWFwSW5mbyB8PSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Q7
CisgICAgZWxzZQorICAgICAgICBiaXRtYXBJbmZvIHw9IGtDR0ltYWdlQWxwaGFMYXN0OworCisg
ICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZURhdGEtPnNpemUoKTsKICAgICBpbnQgcm93Qnl0ZXMg
PSBpbWFnZVNpemUud2lkdGgoKSAqIDQ7Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVm
PiBkYXRhUHJvdmlkZXI7Ci0KLSAgICBpZiAoY29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgp
KSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIqIGNvcGllZFBpeGVsczsKLQotICAgICAgICBpZiAo
IXRyeUZhc3RDYWxsb2MoaW1hZ2VTaXplLmhlaWdodCgpLCByb3dCeXRlcykuZ2V0VmFsdWUoY29w
aWVkUGl4ZWxzKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtZW1jcHkoY29waWVk
UGl4ZWxzLCBpbWFnZVBpeGVscywgcm93Qnl0ZXMgKiBpbWFnZVNpemUuaGVpZ2h0KCkpOwotCi0g
ICAgICAgIHNpemVfdCBkYXRhU2l6ZSA9IHJvd0J5dGVzICogaW1hZ2VTaXplLmhlaWdodCgpOwot
ICAgICAgICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGNvcGllZFBpeGVscywgZGF0YVNp
emUpOwotICAgICAgICBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRl
V2l0aERhdGEoMCwgY29waWVkUGl4ZWxzLCBkYXRhU2l6ZSwgcmVsZWFzZUltYWdlRGF0YSkpOwot
ICAgIH0gZWxzZSB7CiAgICAgICAgIHNpemVfdCBkYXRhU2l6ZSA9IHJvd0J5dGVzICogaW1hZ2VT
aXplLmhlaWdodCgpOworICAgIHVpbnQ4X3QqIGltYWdlUGl4ZWxzID0gaW1hZ2VEYXRhLT5kYXRh
KCktPmRhdGEoKTsKICAgICAgICAgdmVyaWZ5SW1hZ2VCdWZmZXJJc0JpZ0Vub3VnaChpbWFnZVBp
eGVscywgZGF0YVNpemUpOwotICAgICAgICBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVBy
b3ZpZGVyQ3JlYXRlV2l0aERhdGEoMCwgaW1hZ2VQaXhlbHMsIGRhdGFTaXplLCAwKSk7Ci0gICAg
fQorICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKCZpbWFnZURhdGEubGVha1JlZigpLCBpbWFn
ZVBpeGVscywgZGF0YVNpemUsIHJlbGVhc2VJbWFnZURhdGEpKTsKIAotICAgIGF1dG8gaW1hZ2Ug
PSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lk
dGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgcm93Qnl0ZXMsIHNSR0JDb2xvclNwYWNl
UmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkhvc3QsCisgICAgYXV0byBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihD
R0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMy
LCByb3dCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYoKSwgYml0bWFwSW5mbywKICAgICAgICAgZGF0
YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsK
IAogICAgIC8vIENTUyBzdHlsaW5nIG1heSBjYXVzZSB0aGUgY2FudmFzJ3MgY29udGVudCB0byBi
ZSByZXNpemVkIG9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uaAppbmRleCBkNWU0MTY4ZTMxYmViOGYyYmI3NzRjZjdkZTFlOTVmOGQwYjk5NjE5
Li40ZGVkOGU1Zjk0OTgyNjcxNzQ2YzllN2Y1MzNhYWM2YjE4YWM2YjBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKQEAgLTYzLDYgKzYz
LDEwIEBAIHB1YmxpYzoKICAgICAvLyBQcmVwYXJlcyB0aGUgdGFyZ2V0IGZvciBkaXNwbGF5IHdp
dGggYSBjb250ZW50cyBidWZmZXIuCiAgICAgdmlydHVhbCB2b2lkIHByZXNlbnQoQnVmZmVyKSA9
IDA7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSBtb3N0IHJlY2VudCBwcmVzZW50ZWQgZGlzcGxheSBi
dWZmZXIuIFRoZSByZWZlcmVuY2UgaXMgdmFsaWQgdW50aWwKKyAgICAvLyBuZXh0IHByZXNlbnQs
IHJlY3ljbGVCdWZmZXIgb3IgZGV0YWNoQ2xpZW50IGNhbGwuCisgICAgdmlydHVhbCBjb25zdCBC
dWZmZXImIGRpc3BsYXlCdWZmZXIoKSBjb25zdCA9IDA7CisKICAgICAvLyBEZXRhY2hlcyB0aGUg
Y2xpZW50IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBtZXRhZGF0YSBo
YW5kbGUuCiAgICAgLy8gVGhlIGlmIG11bHRpcGxlIGJ1ZmZlcnMgaGF2ZSBiZWVuIHN1Ym1pdHRl
ZCwgcmVjeWNsZUJ1ZmZlciBtdXN0IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKICAg
ICAvLyB0aGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5k
ZXggODkxZTk3ODNlMjVmZDQ3ODRlMzY4NjNiM2U2ZTY4MmMyOTVjYjQyNC4uZGJlOWMwNWQzMjhi
NjVjMjc1ZWM5NTEyMDQ2MDI0ZjNkYTQwYzg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTENvY29hLm1tCkBAIC03MzAsNiArNzMwLDM3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICBtYXJrTGF5ZXJDb21wb3NpdGVk
KCk7CiB9CiAKK1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
Q29tcG9zaXRlZFJlc3VsdHMoKQoreworICAgIGF1dG8mIGRpc3BsYXlCdWZmZXIgPSBtX3N3YXBD
aGFpbi0+ZGlzcGxheUJ1ZmZlcigpOworICAgIGlmICghZGlzcGxheUJ1ZmZlci5zdXJmYWNlIHx8
ICFkaXNwbGF5QnVmZmVyLmhhbmRsZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYg
KGRpc3BsYXlCdWZmZXIuc3VyZmFjZS0+c2l6ZSgpICE9IGdldEludGVybmFsRnJhbWVidWZmZXJT
aXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIC8vIE5vdGU6IFdlIGFyZSB1c2lu
ZyBHTCB0byByZWFkIHRoZSBJT1N1cmZhY2UuIEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIHRoZXJl
IGFyZSBubyBjb252aW5pZW50CisgICAgLy8gZnVuY3Rpb25zIHRvIGNvbnZlcnQgdGhlIElPU3Vy
ZmFjZSBwaXhlbCBkYXRhIHRvIEltYWdlRGF0YS4gVGhlIGltYWdlIGRhdGEgZW5kcyB1cCBiZWlu
ZworICAgIC8vIGRyYXduIHRvIGEgSW1hZ2VCdWZmZXIsIGJ1dCBhdCB0aGUgdGltZSB0aGVyZSdz
IG5vIGZ1bmN0aW9ucyB0byBjb25zdHJ1Y3QgYSBOYXRpdmVJbWFnZQorICAgIC8vIG91dCBvZiBh
biBJT1N1cmZhY2UgaW4gc3VjaCBhIHdheSB0aGF0IGRyYXdpbmcgdGhlIE5hdGl2ZUltYWdlIHdv
dWxkIGJlIGd1YXJhbnRlZWQgbGVhdmUKKyAgICAvLyB0aGUgSU9TdXJmYWNlIGJlIHVucmVmZW5j
ZWQgYWZ0ZXIgdGhlIGRyYXcgY2FsbCBmaW5pc2hlcy4KKyAgICBTY29wZWRUZXh0dXJlIHRleHR1
cmU7CisgICAgR0NHTGVudW0gdGV4dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFy
Z2V0KCk7CisgICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRy
YXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnkoKSwgdGV4dHVyZVRhcmdldCwgdGV4dHVyZVRh
cmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIpOworICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0
dXJlVGFyZ2V0LCB0ZXh0dXJlKTsKKyAgICBpZiAoIUVHTF9CaW5kVGV4SW1hZ2UobV9kaXNwbGF5
T2JqLCBkaXNwbGF5QnVmZmVyLmhhbmRsZSwgRUdMX0JBQ0tfQlVGRkVSKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgZ2w6OlRleFBhcmFtZXRlcmkodGV4dHVyZVRhcmdldCwgR0xfVEVY
VFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgIFNjb3BlZEZyYW1lYnVmZmVyIGZibzsK
KyAgICBTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyBmYm9CaW5kaW5nKG1faXNG
b3JXZWJHTDIsIG1fc3RhdGUuYm91bmRSZWFkRkJPLCBmYm8pOworICAgIGdsOjpGcmFtZWJ1ZmZl
clRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmVU
YXJnZXQsIHRleHR1cmUsIDApOworICAgIEFTU0VSVChnbDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHTF9GUkFNRUJVRkZFUikgPT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpOworCisgICAgYXV0
byByZXN1bHQgPSByZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCk7CisKKyAgICBFR0xCb29sZWFu
IHJlbGVhc2VPayA9IEVHTF9SZWxlYXNlVGV4SW1hZ2UobV9kaXNwbGF5T2JqLCBkaXNwbGF5QnVm
ZmVyLmhhbmRsZSwgRUdMX0JBQ0tfQlVGRkVSKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlbGVhc2VP
aywgcmVsZWFzZU9rKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJHTExheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViR0xMYXllci5tbQppbmRleCAzODU5N2U0YThmNjMzYTVlZTVkYjc0OTMzMDIyZGMy
MzdmZTdlNDdjLi4wMzEzOGVmMTQzMDk4OGQ3MTVhOThiNzc3N2QzYTUzODhhMzI5OWFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5
ZXIubW0KQEAgLTM5LDYgKzM5LDEwIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHTExheWVy
U3dhcENoYWluKFdlYkdMTGF5ZXIqIGxheWVyKSAgOiBtX2xheWVyKGxheWVyKSB7IH07CiAgICAg
fldlYkdMTGF5ZXJTd2FwQ2hhaW4oKSBvdmVycmlkZSA9IGRlZmF1bHQ7CiAgICAgdm9pZCBwcmVz
ZW50KEJ1ZmZlcikgb3ZlcnJpZGU7CisgICAgY29uc3QgQnVmZmVyJiBkaXNwbGF5QnVmZmVyKCkg
Y29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Rpc3BsYXlCdWZmZXI7Cisg
ICAgfQogICAgIEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAg
IGlmIChtX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuY3BwCmluZGV4IDA2OWQyODZjZTRlYmE0ODI5ZTBjNzM4M2UyZjNlOGJlZTcyZmUyOTIu
LjJmZWI3NGMyZmFkMWIyYTYyZmY2MGM2MTI1ZDFiOGZjY2Y1ZGI1NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAtMzEsNiArMzEsOCBAQAogI2lmIEVOQUJMRShX
RUJHTCkKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5NCw2ICsxOTYsNTAgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogfQogI2VuZGlmCiAKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKElt
YWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgp
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCku
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBpbWFnZURhdGEgPSByZWFkUmVu
ZGVyaW5nUmVzdWx0cygpOworICAgIGlmICghaW1hZ2VEYXRhKQorICAgICAgICByZXR1cm47Cisg
ICAgcGFpbnRUb0NhbnZhcyhpbWFnZURhdGEucmVsZWFzZU5vbk51bGwoKSwgaW1hZ2VCdWZmZXIt
PmJhY2tlbmRTaXplKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGltYWdlRGF0YSA9IHJlYWRDb21wb3Np
dGVkUmVzdWx0cygpOworICAgIGlmICghaW1hZ2VEYXRhKQorICAgICAgICByZXR1cm47CisgICAg
cGFpbnRUb0NhbnZhcyhpbWFnZURhdGEucmVsZWFzZU5vbk51bGwoKSwgaW1hZ2VCdWZmZXItPmJh
Y2tlbmRTaXplKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOworfQorCitSZWZQdHI8SW1hZ2VE
YXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFn
ZURhdGEoKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIGlmIChnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gUmVhZGluZyBwcmVtdWx0aXBsaWVk
IGFscGhhIHdvdWxkIGludm9sdmUgdW5wcmVtdWx0aXBseWluZywgd2hpY2ggaXMKKyAgICAvLyBs
b3NzeS4KKyAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0cygp
OworfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBmNTI0
ZGU5MmRjZDlhNTk4YjBmYmVmOGQzM2I5YzQ0MDliOGNkMWIwLi43ODA5NmUyZWIwODc2Zjk1Mjdj
ODU0NzkwZDFhZmE3MzUxMjBjOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aApAQCAtNDI4LDkgKzQyOCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1C
bG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBmaW5hbDsKIAogICAgIC8vIEhl
bHBlciBtZXRob2RzLgotCi0gICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGltYWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUm
IGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYpOwotCiAgICAgdm9pZCBtYXJrQ29udGV4dENo
YW5nZWQoKSBmaW5hbDsKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKICAg
ICBib29sIGxheWVyQ29tcG9zaXRlZCgpIGNvbnN0IGZpbmFsOwpAQCAtNDUwLDcgKzQ0Nyw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXIqKSBmaW5hbDsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0ltYWdlRGF0YSgpIGZpbmFsOwotICAgIGJvb2wgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyKikgZmluYWw7CisgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1
bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKIAogI2lmIFVTRShPUEVOR0wpICYmIEVO
QUJMRShXRUJHTDIpCiAgICAgdm9pZCBwcmltaXRpdmVSZXN0YXJ0SW5kZXgoR0NHTHVpbnQpOwpA
QCAtNTMwLDEwICs1MjcsMTEgQEAgcHJpdmF0ZToKICAgICAvLyBEaWQgdGhlIG1vc3QgcmVjZW50
IGRyYXdpbmcgb3BlcmF0aW9uIGxlYXZlIHRoZSBHUFUgaW4gYW4gYWNjZXB0YWJsZSBzdGF0ZT8K
ICAgICB2b2lkIGNoZWNrR1BVU3RhdHVzKCk7CiAKLSAgICAvLyBSZWFkIHJlbmRlcmluZyByZXN1
bHRzIGludG8gYSBwaXhlbCBhcnJheSB3aXRoIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUKLSAgICAv
LyBiYWNrYnVmZmVyLgotICAgIHZvaWQgcmVhZFJlbmRlcmluZ1Jlc3VsdHModW5zaWduZWQgY2hh
ciogcGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSk7Ci0gICAgdm9pZCByZWFkUGl4ZWxzQW5kQ29udmVy
dFRvQkdSQUlmTmVjZXNzYXJ5KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1
bnNpZ25lZCBjaGFyKiBwaXhlbHMpOworCisgICAgUmVmUHRyPEltYWdlRGF0YT4gcmVhZFJlbmRl
cmluZ1Jlc3VsdHMoKTsKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiByZWFkQ29tcG9zaXRlZFJlc3Vs
dHMoKTsKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiByZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCk7
CisgICAgdm9pZCBwYWludFRvQ2FudmFzKFJlZjxJbWFnZURhdGE+JiYsIGNvbnN0IEludFNpemUm
IGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgYm9vbCByZXNoYXBlRkJPcyhj
b25zdCBJbnRTaXplJik7CiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZUltcGwoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggZjQxNGY5Yzk2MzRkNjFi
OGQ5MDE1ZDVhNmFmYTUyN2NjMzQyYmU4Zi4uMjlkZjdjOTAxM2NiOTE1OTM0YWJhYjg5NGZhYjI2
YzlkN2ZlNzcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5j
cHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShPUEVOR0wpCiAK
ICNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0wuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKQEAgLTYxLDM3ICs2MiwyNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZO
ZWNlc3NhcnkoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNo
YXIqIHBpeGVscykKK1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0
dHJpYnV0ZXMoKTsKKyAgICBhdXRvIGltYWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKGdldElu
dGVybmFsRnJhbWVidWZmZXJTaXplKCkpOworICAgIGlmICghaW1hZ2VEYXRhKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIEdMaW50IHBhY2tBbGlnbm1lbnQgPSA0OworICAgIGJvb2wg
bXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gZmFsc2U7CisgICAgOjpnbEdldEludGVnZXJ2KEdM
X1BBQ0tfQUxJR05NRU5ULCAmcGFja0FsaWdubWVudCk7CisgICAgaWYgKHBhY2tBbGlnbm1lbnQg
PiA0KSB7CisgICAgICAgIDo6Z2xQaXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgNCk7Cisg
ICAgICAgIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IHRydWU7CisgICAgfQogCi0gICAgLy8g
TlZJRElBIGRyaXZlcnMgaGF2ZSBhIGJ1ZyB3aGVyZSBjYWxsaW5nIHJlYWRQaXhlbHMgaW4gQkdS
QSBjYW4gcmV0dXJuIHRoZSB3cm9uZyB2YWx1ZXMgZm9yIHRoZSBhbHBoYSBjaGFubmVsIHdoZW4g
dGhlIGFscGhhIGlzIG9mZiBmb3IgdGhlIGNvbnRleHQuCi0gICAgaWYgKCFhdHRycy5hbHBoYSAm
JiBnZXRFeHRlbnNpb25zKCkuaXNOVklESUEoKSkgewotICAgICAgICA6OmdsUmVhZFBpeGVscyh4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMpOwot
I2lmIFVTRShBQ0NFTEVSQVRFKQotICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKLSAgICAgICAg
c3JjLmhlaWdodCA9IGhlaWdodDsKLSAgICAgICAgc3JjLndpZHRoID0gd2lkdGg7Ci0gICAgICAg
IHNyYy5yb3dCeXRlcyA9IHdpZHRoICogNDsKLSAgICAgICAgc3JjLmRhdGEgPSBwaXhlbHM7Ci0K
LSAgICAgICAgdkltYWdlX0J1ZmZlciBkZXN0OwotICAgICAgICBkZXN0LmhlaWdodCA9IGhlaWdo
dDsKLSAgICAgICAgZGVzdC53aWR0aCA9IHdpZHRoOwotICAgICAgICBkZXN0LnJvd0J5dGVzID0g
d2lkdGggKiA0OwotICAgICAgICBkZXN0LmRhdGEgPSBwaXhlbHM7Ci0KLSAgICAgICAgLy8gU3dh
cCBwaXhlbCBjaGFubmVscyBmcm9tIFJHQkEgdG8gQkdSQS4KLSAgICAgICAgY29uc3QgdWludDhf
dCBtYXBbNF0gPSB7IDIsIDEsIDAsIDMgfTsKLSAgICAgICAgdkltYWdlUGVybXV0ZUNoYW5uZWxz
X0FSR0I4ODg4KCZzcmMsICZkZXN0LCBtYXAsIGt2SW1hZ2VOb0ZsYWdzKTsKLSNlbHNlCi0gICAg
ICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkKLSAgICAgICAgICAgIHN0ZDo6c3dhcChw
aXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOwotI2VuZGlmCi0gICAgfSBlbHNlCi0gICAgICAgIDo6
Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMX0JHUkEsIEdMX1VOU0lHTkVEX0lO
VF84XzhfOF84X1JFViwgcGl4ZWxzKTsKKyAgICA6OmdsUmVhZFBpeGVscygwLCAwLCBpbWFnZURh
dGEtPndpZHRoKCksIGltYWdlRGF0YS0+aGVpZ2h0KCksIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCkpOworCisgICAgaWYgKG11c3RSZXN0b3JlUGFj
a0FsaWdubWVudCkKKyAgICAgICAgOjpnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05NRU5ULCBw
YWNrQWxpZ25tZW50KTsKIAorICAgIHJldHVybiBpbWFnZURhdGE7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCAyZGUxODVhNjY4MTMwYTM2MmMx
Mjc2N2YzODNmNTdmMTM0OWRkNDgxLi5mY2RiNzExYTZmOGNiMDU5ZTAwYjc0Y2QwY2NiN2M5YWNl
OTBkYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5j
cHAKQEAgLTEzNyw2NCArMTM3LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFs
aWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2kKICAgICB9CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKLXsKLSAgICBDaGVja2VkPGludCwgUmVj
b3JkT3ZlcmZsb3c+IHJvd0J5dGVzID0gQ2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PihtX2N1
cnJlbnRXaWR0aCkgKiA0OwotICAgIGlmIChyb3dCeXRlcy5oYXNPdmVyZmxvd2VkKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4gdG90YWxCeXRl
c0NoZWNrZWQgPSByb3dCeXRlcyAqIG1fY3VycmVudEhlaWdodDsKLSAgICBpZiAodG90YWxCeXRl
c0NoZWNrZWQuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgaW50IHRvdGFs
Qnl0ZXMgPSB0b3RhbEJ5dGVzQ2hlY2tlZC51bnNhZmVHZXQoKTsKLQotICAgIGF1dG8gcGl4ZWxz
ID0gbWFrZVVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+KHRvdGFsQnl0ZXMpOwotICAgIGlmICgh
cGl4ZWxzKQotICAgICAgICByZXR1cm47Ci0KLSAgICByZWFkUmVuZGVyaW5nUmVzdWx0cyhwaXhl
bHMuZ2V0KCksIHRvdGFsQnl0ZXMpOwotCi0gICAgaWYgKCFjb250ZXh0QXR0cmlidXRlcygpLnBy
ZW11bHRpcGxpZWRBbHBoYSkgewotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFsQnl0
ZXM7IGkgKz0gNCkgewotICAgICAgICAgICAgLy8gUHJlbXVsdGlwbHkgYWxwaGEuCi0gICAgICAg
ICAgICBwaXhlbHNbaSArIDBdID0gc3RkOjptaW4oMjU1LCBwaXhlbHNbaSArIDBdICogcGl4ZWxz
W2kgKyAzXSAvIDI1NSk7Ci0gICAgICAgICAgICBwaXhlbHNbaSArIDFdID0gc3RkOjptaW4oMjU1
LCBwaXhlbHNbaSArIDFdICogcGl4ZWxzW2kgKyAzXSAvIDI1NSk7Ci0gICAgICAgICAgICBwaXhl
bHNbaSArIDJdID0gc3RkOjptaW4oMjU1LCBwaXhlbHNbaSArIDJdICogcGl4ZWxzW2kgKyAzXSAv
IDI1NSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwYWludFRvQ2FudmFzKHBpeGVscy5nZXQo
KSwgSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSwgaW1hZ2VCdWZmZXIt
PmJhY2tlbmRTaXplKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwotfQotCi1ib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXIqKQotewotICAgIC8vIE5vdCBuZWVkZWQgYXQgdGhlIG1vbWVudCwgc28gcmV0dXJuIHRo
YXQgbm90aGluZyB3YXMgZG9uZS4KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVJlZlB0cjxJbWFn
ZURhdGE+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0lt
YWdlRGF0YSgpCi17Ci0gICAgLy8gUmVhZGluZyBwcmVtdWx0aXBsaWVkIGFscGhhIHdvdWxkIGlu
dm9sdmUgdW5wcmVtdWx0aXBseWluZywgd2hpY2ggaXMKLSAgICAvLyBsb3NzeS4KLSAgICBpZiAo
Y29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShJbnRTaXpl
KG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpKTsKLSAgICB1bnNpZ25lZCBjaGFyKiBw
aXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwotICAgIENoZWNrZWQ8aW50LCBSZWNv
cmRPdmVyZmxvdz4gdG90YWxCeXRlc0NoZWNrZWQgPSA0ICogQ2hlY2tlZDxpbnQsIFJlY29yZE92
ZXJmbG93PihtX2N1cnJlbnRXaWR0aCkgKiBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+KG1f
Y3VycmVudEhlaWdodCk7Ci0gICAgaWYgKHRvdGFsQnl0ZXNDaGVja2VkLmhhc092ZXJmbG93ZWQo
KSkKLSAgICAgICAgcmV0dXJuIGltYWdlRGF0YTsKLSAgICBpbnQgdG90YWxCeXRlcyA9IHRvdGFs
Qnl0ZXNDaGVja2VkLnVuc2FmZUdldCgpOwotCi0gICAgcmVhZFJlbmRlcmluZ1Jlc3VsdHMocGl4
ZWxzLCB0b3RhbEJ5dGVzKTsKLQotICAgIC8vIENvbnZlcnQgdG8gUkdCQS4KLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkKLSAgICAgICAgc3RkOjpzd2FwKHBpeGVs
c1tpXSwgcGl4ZWxzW2kgKyAyXSk7Ci0KLSAgICByZXR1cm4gaW1hZ2VEYXRhOwotfQotCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlVGV4dHVyZSgpCiB7CiAgICAgaWYgKG1f
bGF5ZXJDb21wb3NpdGVkKQpAQCAtMjM2LDE1ICsxNzgsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwcmVwYXJlVGV4dHVyZSgpCiAgICAgOjpnbEZsdXNoKCk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKHVuc2lnbmVkIGNo
YXIgKnBpeGVscywgaW50IHBpeGVsc1NpemUpCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHMoKQogewotICAgIGlmIChwaXhlbHNT
aXplIDwgbV9jdXJyZW50V2lkdGggKiBtX2N1cnJlbnRIZWlnaHQgKiA0KQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0K
LQogICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKICAgICBpZiAoY29udGV4dEF0dHJp
YnV0ZXMoKS5hbnRpYWxpYXMpIHsKICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vz
c2FyeSgpOwpAQCAtMjU3LDIyICsxOTIsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHModW5zaWduZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGkKICAg
ICAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1F
QlVGRkVSLCBtX2Zibyk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBHTGludCBwYWNrQWxpZ25t
ZW50ID0gNDsKLSAgICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOwotICAg
IDo6Z2xHZXRJbnRlZ2VydihHTF9QQUNLX0FMSUdOTUVOVCwgJnBhY2tBbGlnbm1lbnQpOwotICAg
IGlmIChwYWNrQWxpZ25tZW50ID4gNCkgewotICAgICAgICA6OmdsUGl4ZWxTdG9yZWkoR0xfUEFD
S19BTElHTk1FTlQsIDQpOwotICAgICAgICBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSB0cnVl
OwotICAgIH0KLQotICAgIHJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZOZWNlc3NhcnkoMCwg
MCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgcGl4ZWxzKTsKLQotICAgIGlmICht
dXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQpCi0gICAgICAgIDo6Z2xQaXhlbFN0b3JlaShHTF9QQUNL
X0FMSUdOTUVOVCwgcGFja0FsaWdubWVudCk7Ci0KKyAgICBhdXRvIHJlc3VsdCA9IHJlYWRQaXhl
bHNGb3JQYWludFJlc3VsdHMoKTsKICAgICBpZiAobXVzdFJlc3RvcmVGQk8pCiAgICAgICAgIDo6
Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX3N0
YXRlLmJvdW5kRHJhd0ZCTyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggMGQ0NzZjMjI5ZDZmNmVlOTZj
Y2Y5OTNkODFkNWMzZGQ2NTIxNWU0OC4uOTM5ZmI5M2UxYzIxMzQ0OWQwN2UwM2U1Y2JlODBhYTgx
ZTE4ZWY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAt
NjQsMTQgKzY0LDI2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWxz
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsCiAgICAgICAgIDo6Z2xCaW5k
RnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVj
ZXNzYXJ5KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFy
KiBwaXhlbHMpCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVh
ZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7Ci0gICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lk
dGgsIGhlaWdodCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKLSAgICBpbnQg
dG90YWxCeXRlcyA9IHdpZHRoICogaGVpZ2h0ICogNDsKLSAgICBpZiAoaXNHTEVTMkNvbXBsaWFu
dCgpKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQot
ICAgICAgICAgICAgc3RkOjpzd2FwKHBpeGVsc1tpXSwgcGl4ZWxzW2kgKyAyXSk7IC8vIENvbnZl
cnQgdG8gQkdSQS4KKyAgICBhdXRvIGltYWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKGdldElu
dGVybmFsRnJhbWVidWZmZXJTaXplKCkpOworICAgIGlmICghaW1hZ2VEYXRhKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIEdMaW50IHBhY2tBbGlnbm1lbnQgPSA0OworICAgIGJvb2wg
bXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gZmFsc2U7CisgICAgOjpnbEdldEludGVnZXJ2KEdM
X1BBQ0tfQUxJR05NRU5ULCAmcGFja0FsaWdubWVudCk7CisgICAgaWYgKHBhY2tBbGlnbm1lbnQg
PiA0KSB7CisgICAgICAgIDo6Z2xQaXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgNCk7Cisg
ICAgICAgIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IHRydWU7CiAgICAgfQorCisgICAgOjpn
bFJlYWRQaXhlbHMoMCwgMCwgaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFnZURhdGEtPmhlaWdodCgp
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpKTsK
KworICAgIGlmIChtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQpCisgICAgICAgIDo6Z2xQaXhlbFN0
b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgcGFja0FsaWdubWVudCk7CisKKyAgICByZXR1cm4gaW1h
Z2VEYXRhOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhj
b25zdCBJbnRTaXplJiBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmlu
ZGV4IGU3YzQwYzk4NWNiN2QyNzIyODY5YTVkZmY5NjkxOTQ3MDc3YWY0NmMuLjhlMmQxZmM2NTE4
NjI4Mzk1ZTk3NDFjNDRlN2FjODUxYjA4ZWY2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIC8vIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIG92ZXJyaWRlcy4KICAgICBCdWZmZXIgcmVjeWNsZUJ1
ZmZlcigpIGZpbmFsOwogICAgIHZvaWQgcHJlc2VudChCdWZmZXIpIGZpbmFsOworICAgIGNvbnN0
IEJ1ZmZlciYgZGlzcGxheUJ1ZmZlcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQqIGRldGFjaENs
aWVudCgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbjo6QnVmZmVyIG1fZGlzcGxheUJ1ZmZlcjsKQEAgLTc2LDYgKzc3LDExIEBAIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlc2VudChCdWZmZXIgYnVmZmVyKQogICAg
IG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKIH0KIAorY29uc3QgR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciYgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6ZGlzcGxheUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGlzcGxheUJ1
ZmZlcjsKK30KKwogdm9pZCogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6ZGV0YWNoQ2xp
ZW50KCkKIHsKICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Rpc3BsYXlCdWZmZXIuaGFuZGxl
LCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmlu
ZGV4IDM0YTA2ZmIwMDc2YWNkM2ZkMzJiM2E0YjZiMDlkNjhkMDI3YmI1ODguLjUzZGI2MTUwYzFk
OGVjODI1ZTIzYWJlZjY1MWU1YjNiOTc5OTI0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmNwcApAQCAtMTIxLDYgKzEyMSwxMSBAQCB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVm
ZmVyKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciop
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogUmVmUHRyPEltYWdlRGF0YT4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEo
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCmluZGV4IGQ5OWVkYTI5ZjZkYjVlMTgxOTcxMzE3OGYyYWE1MzFiNGY1ZGQ2ZTAu
LmExNDM5MzQ3ZDg5ZTBhZGJmMDhhNDJhNDI1OTFiYmIzZGJlYjIxZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNpbXVsYXRlQ29udGV4dENoYW5nZWQoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyKikgZmluYWw7CiAgICAg
UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURh
dGEoKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJD
b3JlOjpJbWFnZUJ1ZmZlciopIGZpbmFsOwogCiAgICAgLy8gRnVuY3Rpb25zIHdpdGggYSBnZW5l
cmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAt
d2ViZ2wgc2NyaXB0LgogICAgIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpIGZpbmFs
Owo=
</data>
<flag name="commit-queue"
          id="433935"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416413</attachid>
            <date>2020-12-17 03:56:08 -0800</date>
            <delta_ts>2020-12-17 04:10:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219946-20201217135606.patch</filename>
            <type>text/plain</type>
            <size>63838</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMwMGNiMzk4NTY1MjRm
YzAxZWY4N2I5ZDkxYWQ4NWRjZmU3YTY5ZS4uN2IyZTM4NjdmYjQ1ZWUyMzI3MmRhNzZkMmM1ZmI5
YTU5OTk4NGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAyMC0xMi0xNyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04g
KHIyNjgzODYpOiBTbmFwc2hvdHMgb2YgV2ViR0wgY29udGVudCBpbiB0aGUgdGFiIHBpY2tlciBk
b24ndCB3b3JrIChibGFjayBtYXAgb24gR29vZ2xlIE1hcHMpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcyMDEzNzg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZpeCBjYXNlIHdoZXJlIFdlYkdMIHdvdWxkIGZpcnN0IGJlIGRpc3BsYXllZCB3aXRo
IGhhcmR3YXJlIGNvZGUgcGF0aAorICAgICAgICBhbmQgdGhlbiBkaXNwbGF5ZWQgd2l0aCBzb2Z0
d2FyZSBjb2RlIHBhdGggKHBhaW50aW5nIGZyb20gdGhlIHBhaW50CisgICAgICAgIHRyZWUpLiBG
b3JtZXIgaGFwcGVucyB3aGVuIHVzZXIgbG9va3MgYXQgdGhlIHBhZ2UgYW5kIGxhdHRlciBoYXBw
ZW5zCisgICAgICAgIHdoZW4gcHJpbnRpbmcgb3Igd2hlbiBTYWZhcmkgdGFrZXMgYSBzbmFwc2hv
dC4KKworICAgICAgICBUaGlzIGlzIG5vdCBhIHJlYWwgcmVncmVzc2lvbiBvZiByMjY4Mzg2LiBQ
cmlvciB0byB0aGF0LCB0aGUgc29mdHdhcmUKKyAgICAgICAgZGlzcGxheSB3b3VsZCBoYXZlIHVz
ZWQgdW5pbml0aWFsaXplZCBJT1N1cmZhY2UgY29udGVudHMgb3IgY29udGVudHMgb2YKKyAgICAg
ICAgMS0yIGZyYW1lcyBwcmlvciBhbmQgd291bGQgbGVhdmUgdGhlIGhhcmR3YXJlIGRpc3BsYXkg
YnVmZmVyIG5vdAorICAgICAgICB1cGRhdGVkLgorCisgICAgICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaXMgdXNlZCBmb3IgdHdvCisg
ICAgICAgIHB1cnBvc2VzOgorICAgICAgICAgIDEpIEltYWdlIGV4dHJhY3Rpb24gdXNlcywgc3Vj
aCBhcyB0b0RhdGEoKSBvcgorICAgICAgICAgICAgIGNvbnN0cnVjdGluZyBhbiBJbWFnZSBvdXQg
b2YgdGhlIGNvbnRlbnRzLgorICAgICAgICAgIDIpIFBhaW50aW5nIHRoZSByZW5kZXJpbmcgdG8g
dGhlIGRvY3VtZW50IGR1cmluZyBzb2Z0d2FyZSBkaXNwbGF5LgorCisgICAgICAgIFRoZSAxKSBj
YXNlIHVzZXMgYWx3YXlzIHRoZSBkcmF3aW5nIGJ1ZmZlci4KKworICAgICAgICBUaGUgMikgY2Fz
ZSBwcmVzZW50cyB0aGUgZHJhd2luZyBidWZmZXIgYXMgdGhlIG5ldyBkaXNwbGF5IGJ1ZmZlciBp
ZgorICAgICAgICB0aGVyZSBhcmUgY2hhbmdlcyB0byB0aGUgZHJhd2luZyBidWZmZXIgYW5kIHVz
ZXMgdGhlIHBvdGVudGlhbGx5IG5ldworICAgICAgICBkaXNwbGF5IGJ1ZmZlciB0byBkaXNwbGF5
LgorCisgICAgICAgIEZvciAyRCBjYW52YXMsIHRoZXNlIHR3byBjYXNlcyBhcmUgdGhlIHNhbWUg
Y2FzZS4gRm9yIFdlYkdMIHRoZXkgYXJlCisgICAgICAgIGRpZmZlcmVudC4KKworICAgICAgICBU
aGUgZGlzcGxheSBpcyBkZXN0cnVjdGl2ZSBmb3IgV2ViR0wgZHJhd2luZyBidWZmZXIgd2hlbgor
ICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPT0gZmFsc2UuIFRoaXMgbWVhbnMgdGhhdCBp
ZiBoYXJkd2FyZSBkaXNwbGF5IGhhcworICAgICAgICBoYXBwZW5lZCwgd2UgbXVzdCByZWFkIHRo
ZSBkaXNwbGF5IGJ1ZmZlciBkdXJpbmcgY2FzZSAyLiBUaGlzIGNvZGUgd2FzCisgICAgICAgIG1p
c3NpbmcsIHNvIHRoZSBzY2VuYXJpbyBjb3VsZCBub3QgaGF2ZSBldmVyIHdvcmtlZC4KKworICAg
ICAgICBUaGUgcHJldmlvdXMgY29kZSB0cmllZCB0byB3b3JrYXJvdW5kIHRoaXMgYnkgdGhlCisg
ICAgICAgIFdlYkdMR3JhcGhpY3NDb250ZXh0QmFzZSB0byBkZXRlY3Qgd2hhdCB0aGUgb3duZXIg
aW50ZW5kZWQgd2l0aCB0aGUKKyAgICAgICAgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMs
IHRoZW4gc2tpcCB0aGUgcG90ZW50aWFsIGRyYXdpbmcgYnVmZmVyCisgICAgICAgIGNsZWFyLCBy
ZWFkIHRoZSBkcmF3aW5nIGJ1ZmZlciBhbmQgcHV0IHRoYXQgZGF0YSB0byB0aGUgInByZXNlbnRh
dGlvbgorICAgICAgICBjb3B5IiBvZiB0aGUgSFRNTEVsZW1lbnQuIFRoaXMgaXMgbm90IG9rLCBh
cyB0aGUgdW5jbGVhcmVkIGRyYXdpbmcKKyAgICAgICAgYnVmZmVyIGhhcyBub24tZGV0ZXJtaW5p
c3RpYyBjb250ZW50cyBpbiBjYXNlIHRoZSBjb250ZXh0IGhhcyBkaXNwbGF5ZWQKKyAgICAgICAg
YW5kIHRoZSBjbGllbnQgaGFzIG5vdCBkcmF3biBuZXcgY29udGVudCB0byB0aGUgZHJhd2luZyBi
dWZmZXIuCisKKyAgICAgICAgRml4IGJ5IHJlbW92aW5nIHRoZSAicHJlc2VudGF0aW9uIGNvcHki
IG9mIHRoZSBIVE1MQ2FudmFzLiBUaGUKKyAgICAgICAgcHJlc2VudGF0aW9uIGltYWdlIGNhbiBh
bHdheXMgYmUgZHJhd24gdG8gdGhlIENhbnZhc0Jhc2U6OmJ1ZmZlcigpOgorICAgICAgICAgLSBU
aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGlzIHRoZSBwcmVzZW50YXRpb24gaW1h
Z2UgaWYgdGhlCisgICAgICAgICAgIGNvbnRleHQgaGFzIG5vdCBjaGFuZ2VkIHNpbmNlIHVwZGF0
aW5nIHRoZSBidWZmZXIgd2l0aCBlaXRoZXIgZHJhd2luZworICAgICAgICAgICBidWZmZXIgb3Ig
cHJldmlvdXMgZGlzcGxheSBidWZmZXIuCisgICAgICAgICAtIElmIHRoZSBjb250ZXh0IGhhcyBj
aGFuZ2VkLCB3ZSBtdXN0IHByZXNlbnQgYW5kIHB1dCB0aGUgbmV3IGRpc3BsYXkKKyAgICAgICAg
ICAgYnVmZmVyIHRvIHRoZSBDYW52YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgLSBUaGlzIGlz
IGFsc28gY29ycmVjdCBjb250ZW50cyBmb3IgdGhlIHBvdGVudGlhbCBuZXh0IGltYWdlIGV4dHJh
Y3Rpb24KKyAgICAgICAgICAgdXNlcywgdXAgdG8gYSBwb2ludCB3aGVuIGNvbnRleHQgY2hhbmdl
cy4KKyAgICAgICAgIC0gSWYgdGhlIGNvbnRleHQgY2hhbmdlcyBiZWZvcmUgYW4gaW1hZ2UgZXh0
cmFjdGlvbiB1c2UsIENhbnZhc0Jhc2U6OmJ1ZmZlcigpIGlzCisgICAgICAgICAgIHVwZGF0ZWQg
d2l0aCB0aGUgbm9ybWFsIGxvZ2ljLCB0aGUgc2FtZSBhcyB3aGF0IGhhcHBlbnMgd2hlbiBDYW52
YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgICBpcyB1cGRhdGVkIGJldHdlZW4gdHdvIGltYWdl
IGV4dHJhY3Rpb24gdXNlcy4KKworICAgICAgICBQcmlvciB0byB0aGlzLCB0aGVyZSB3YXMgYW4g
dW5uZWVkZWQgYW5kIGluY29ycmVjdGx5IGltcGxlbWVudGVkCisgICAgICAgIEdQVUNhbnZhc0Nv
bnRleHQ6Om1hcmtMYXllckNvbXBvc2l0ZWQoKS4gVGhlIHNlcXVlbmNlIHdvdWxkIGJlOgorCisg
ICAgICAgIEhUTUxDYW52YXNFbGVtZW50OjpwYWludCgpOgorICAgICAgICAgICBjYW52YXNDb250
ZXh0KCkucGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoYnVmZmVyKCkpOworICAgICAgICAg
ICBjb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlcigpKTsKKyAgICAgICAgICAgY2FudmFz
Q29udGV4dCgpLm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKworICAgICAgICBUaGUgbWFya0xheWVy
Q29tcG9zaXRlZCgpIHdvdWxkIGluY29ycmVjdGx5IG1hcmsgdGhlIFdlYkdMIGNvbnRleHQgY29t
cG9zaXRpbmcKKyAgICAgICAgYmVpbmcgZG9uZSwgYnV0IHRoZXJlIHdhcyBubyBjb21wb3NpdGlu
ZyBhY3R1YWxseSBoYXBwZW5pbmcuIFRoZSBHUFUtc2lkZQorICAgICAgICBkaXNwbGF5IGJ1ZmZl
ciB3b3VsZCBiZSBpbmNvcnJlY3QuIEFsc28sIHRoZXJlIGlzIG5vdGhpbmcgdG8gYmUgZG9uZSBh
dAorICAgICAgICB0aGlzIHN0YWdlLCBhcyB0aGUgY29tcG9zaXRpbmcgb2YgV2ViR0wgY29udGV4
dCBpdHNlbGYgaXMgYWxyZWFkeQorICAgICAgICBmaW5pc2hlZCBhdCBXZWJHTCBjb250ZXh0IHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgcmV0dXJuLgorCisgICAgICAgIEluc3RlYWQs
IGFkZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgp
IHdoaWNoIHNpZ25hbHMgdGhhdCBuZXh0CisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKCkgaXMgYSBkaXNwbGF5IG9wZXJhdGlvbi4gVGhpcyBjYW4gYmUgdXNlZCB0byB0byBk
ZXRlY3QgdGhlCisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaW4gd2hp
Y2ggd2UgbXVzdCBwcmVzZW50IHRoZSBkcmF3aW5nIGJ1ZmZlciBhcworICAgICAgICBkaXNwbGF5
IGJ1ZmZlci4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGRpc3BsYXkgYnVmZmVyIHJlYWQgd2l0
aCBPcGVuR0wuCisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGRyYXdpbmcgYnVmZmVyIHJlYWQgY29k
ZSB0byBiZSBhYmxlIHRvIHJldXNlIHRoZSByZWFkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBkaXNw
bGF5IGJ1ZmZlciByZWFkLiBUaGUgcmVmYWN0b3JlZCBjb2RlIHJlZHVjZXMgcmVkdW5kYW50IHRo
ZQorICAgICAgICBhbGxvY2F0aW9ucyBvZiBmdWxsLXNjcmVlbiBtYWxsb2MgYnVmZmVycyBhbmQg
ZW5zdXJlcyBhbGxvY2F0aW9uIHJlc3VsdHMgYXJlCisgICAgICAgIGNoZWNrZWQgaW5zdGVhZCBv
ZiBjcmFzaGluZyB3aXRoIG51bGxwdHIgZGVyZWZzIHdoZW4gT09NIGhhcHBlbnMuIEZpeGVzCisg
ICAgICAgIGVycm9ycyBzdWNoIGFzIHJkYXI6Ly82NzU1MzUzMSAoQ3Jhc2hUcmFjZXI6IGNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdAorICAgICAgICBXZWJDb3JlOiBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpLgorICAg
ICAgICBSZW1vdmVzIFJHQkEtPkJHUkEtPlJHQkEgY29udmVyc2lvbnMgZnJvbQorICAgICAgICBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEo
KS4KKyAgICAgICAgUmVtb3ZlcyBtYW51YWwgYWxwaGEgcHJlbXVsdGlwbGljYXRpb24gYW5kIG1h
a2VzIENHIGRyYXcgd2l0aCB1bnByZW11bHRpcGxpZWQKKyAgICAgICAgYWxwaGEuCisgICAgICAg
IENoYW5nZXMgQ2Fpcm8gdmFyaWFudCBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB0byBjb252
ZXJ0IG1hbnVhbGx5IFJHQkEtPkJHUkEKKyAgICAgICAgaW5zdGVhZCBvZiAoYmlnKSBPcGVuR0wg
ZHJpdmVyIGRvaW5nIGl0IGluIGNhc2Ugb2Ygbm9uLU5WSURJQSBwbGF0Zm9ybXMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCB0aGUgc25hcHNob3QgLyBzdytodyBkcmF3aW5nIGlzIG5vdCB0ZXN0
YWJsZSBhdCB0aGUgbW9tZW50LgorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHUFVDYW52YXNDb250ZXh0Ojpjb25maWd1
cmVTd2FwQ2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4dDo6cHJlcGFy
ZUZvckRpc3BsYXlXaXRoUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4
dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L0dQVUNhbnZhc0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYWludCk6CisgICAg
ICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9HUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByZXBhcmVGb3JEaXNwbGF5V2l0
aFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUluZGV4QXJyYXlQcmVj
aXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlRHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZlcnRleEF0dHJpYmZ2SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjppbml0VmVydGV4QXR0cmliMCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVz
dWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJl
bmRlcmluZ1Jlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmc6OlNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRCdWZmZXJCaW5kaW5nOjpTY29wZWRCdWZmZXJC
aW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6On5TY29wZWRC
dWZmZXJCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6OnF1
ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZzo6bWFya0JpbmRpbmdDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUmVzdG9yZVJl
YWRGcmFtZWJ1ZmZlckJpbmRpbmc6On5TY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRQaXhlbFN0b3JhZ2VNb2RlOjpTY29wZWRQaXhl
bFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVsU3RvcmFnZU1vZGU6
On5TY29wZWRQaXhlbFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVs
U3RvcmFnZU1vZGU6OnBpeGVsU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUGl4ZWxT
dG9yYWdlTW9kZTo6b3BlcmF0b3IgR0xpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nv
cGVkVGV4dHVyZTo6U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0
dXJlOjp+U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0dXJlOjpv
cGVyYXRvciBHTHVpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVidWZm
ZXI6OlNjb3BlZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lYnVm
ZmVyOjp+U2NvcGVkRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVi
dWZmZXI6Om9wZXJhdG9yIEdMdWludCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZWxlYXNlSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVy
ZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkQ29tcG9zaXRlZFJlc3VsdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9y
UGFpbnRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYkltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om9y
aWdpbmFsU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6bWFwcGVkU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5m
b0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cyk6CisKIDIwMjAtMTItMTQg
IExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU1NJT04o
MjcwNDM1KSBbR1N0cmVhbWVyXSBNYW55IG1lZGlhIHNvdXJjZSB0ZXN0cyBmYWlsaW5nIGFuZCB0
aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwMzI4Y2Y2ZTg0NWY3NTNlNjQyYjQ1M2I4NjMxMTgxN2Q0
YzA2YzkuLmUwODk5YTkyYmMyMGMzNTliYTgwN2IyODEwYjBkZDg5ZWIyMmRjOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTItMTcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVu
QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjY4Mzg2KTogU25hcHNob3RzIG9m
IFdlYkdMIGNvbnRlbnQgaW4gdGhlIHRhYiBwaWNrZXIgZG9uJ3Qgd29yayAoYmxhY2sgbWFwIG9u
IEdvb2dsZSBNYXBzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5OTQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjAxMzc4ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZHVtbXkgaW1wbGVt
ZW50YXRpb25zIG9mIEdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9D
YW52YXMuCisgICAgICAgIFBhaW50aW5nIHRvIGNhbnZhcyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0
IGZvciB0aGUgcmVtb3RlIEdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6ZGlzcGxh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oOgorCiAyMDIwLTEyLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gSW50cm9kdWNlIHZtRW50cnlDdXN0b21BY2Nlc3NvciBhbmQgdm1FbnRy
eUhvc3RGdW5jdGlvbiBmb3IgSklUQ2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcAppbmRleCBlMzAzNTBiNDYyYTBmZWQ0NDY2OGJm
ODk2MDI5MjkzZTExNzhlODg3Li4zOGIxNTI4ZmZjM2E5NTI1ODUwYTk0ZDY1ZWQyNzk0YTRkODA0
YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcApAQCAtOTAsMTAgKzkwLDE4IEBAIHZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgbm90aWZ5Q2FudmFzQ29udGVudENoYW5n
ZWQoKTsKIH0KIAotdm9pZCBHUFVDYW52YXNDb250ZXh0OjptYXJrTGF5ZXJDb21wb3NpdGVkKCkK
K3ZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQogewot
ICAgIGlmIChtX3N3YXBDaGFpbiAmJiBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCkpCisgICAgbV9p
c0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSB0cnVlOworfQorCit2b2lkIEdQVUNhbnZhc0NvbnRleHQ6
OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKK3sKKyAgICAvLyBGSVhNRTogVW5pbXBs
ZW1lbnRlZC4KKyAgICBpZiAobV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgJiYgbV9zd2FwQ2hhaW4g
JiYgbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpKSB7CiAgICAgICAgIG1fc3dhcENoYWluLT5zd2Fw
Q2hhaW4oKS0+cHJlc2VudCgpOworICAgICAgICBtX2lzRGlzcGxheWluZ1dpdGhQYWludCA9IGZh
bHNlOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oCmluZGV4IDZkZjIwYjRhNjQ3
ZjZhMTg3OGIzODE1NmMyZDA3MTA3NjU0MzJhOGQuLjliMGZlN2IwZDA4Y2U5M2M3ZWNhODY5NGEw
MGQxNjMyZTEzZDBjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUNhbnZhc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVDYW52YXNDb250ZXh0LmgKQEAgLTUzLDEzICs1MywxNSBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNXZWJHUFUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpIGZpbmFsOwotICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZp
bmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSBmaW5hbDsKKyAgICB2
b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgZmluYWw7CiAKICAgICAvLyBBY3Rp
dmVET01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJHUFVDYW52YXNDb250ZXh0IjsgfQogICAgIC8vIEZJWE1FOiBTdHVi
cy4KICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IH0KIAorICAgIGJvb2wgbV9pc0Rpc3BsYXlpbmdX
aXRoUGFpbnQgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxXZWJHUFVTd2FwQ2hhaW4+IG1fc3dhcENo
YWluOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRl
eCAxNjljYWE5MDAyNGQyNjc3MjMwNTA2MmY1OThkMTJjY2RkYmFiM2ZmLi41NGIzNDAxZGU5MGYy
MmE4OWI2OTYyN2ZiNDAxZDg1NTVkNTY3ZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcApAQCAtNjQyLDIwICs2NDIsMTcgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBy
KQogCiAgICAgICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgICAgIHNob3VsZFBhaW50ID0g
cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIHx8IGRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCBtX2lz
U25hcHNob3R0aW5nOwotICAgICAgICAgICAgaWYgKHNob3VsZFBhaW50KQorICAgICAgICAgICAg
aWYgKHNob3VsZFBhaW50KSB7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9y
RGlzcGxheVdpdGhQYWludCgpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChzaG91bGRQYWludCkgewogICAgICAgICAgICAgaWYgKGhhc0NyZWF0ZWRJbWFnZUJ1
ZmZlcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fcHJlc2VudGVkSW1hZ2UpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVk
SW50UmVjdChyKSwgcmVuZGVyZXIoKS0+aW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBidWZmZXIoKSkKKyAgICAg
ICAgICAgICAgICBpZiAoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gYnVmZmVyKCkpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgc25h
cHBlZEludFJlY3QocikpOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoaXNHUFVC
YXNlZCgpKQotICAgICAgICAgICAgICAgIGRvd25jYXN0PEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5n
Q29udGV4dD4oKm1fY29udGV4dCkubWFya0xheWVyQ29tcG9zaXRlZCgpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC02NjgsMTkgKzY2NSw2IEBAIGJvb2wgSFRNTENhbnZhc0VsZW1lbnQ6OmlzR1BV
QmFzZWQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHQgJiYgbV9jb250ZXh0LT5pc0dQVUJh
c2VkKCk7CiB9CiAKLXZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6Om1ha2VQcmVzZW50YXRpb25Db3B5
KCkKLXsKLSAgICBpZiAoIW1fcHJlc2VudGVkSW1hZ2UpIHsKLSAgICAgICAgLy8gVGhlIGJ1ZmZl
ciBjb250YWlucyB0aGUgbGFzdCBwcmVzZW50ZWQgZGF0YSwgc28gc2F2ZSBhIGNvcHkgb2YgaXQu
Ci0gICAgICAgIG1fcHJlc2VudGVkSW1hZ2UgPSBidWZmZXIoKS0+Y29weUltYWdlKENvcHlCYWNr
aW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKLSAgICB9Ci19Ci0KLXZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OmNsZWFyUHJlc2VudGF0aW9uQ29weSgpCi17Ci0gICAgbV9wcmVzZW50
ZWRJbWFnZSA9IG51bGxwdHI7Ci19Ci0KIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnNldFN1cmZh
Y2VTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgQ2FudmFzQmFzZTo6c2V0U2l6ZShz
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCBhZWIwMTg5
NzQ5YjU4MzMzNzQ4NDA0Yzk1YmFmZWQwNDUyOGY5Y2VmLi45YzkyMzBmNWZiYjdlNmRlNGI2OWZk
NWM4NmJlZWU0MDY0YjQ0MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oCkBAIC0xMTUsOCArMTE1LDYgQEAgcHVibGljOgogICAgIEltYWdlKiBjb3BpZWRJbWFnZSgp
IGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY2xlYXJDb3BpZWRJbWFnZSgpIGNvbnN0IGZpbmFsOwog
ICAgIFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YSgpOwotICAgIHZvaWQgbWFrZVByZXNl
bnRhdGlvbkNvcHkoKTsKLSAgICB2b2lkIGNsZWFyUHJlc2VudGF0aW9uQ29weSgpOwogCiAgICAg
U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWw7CiAKQEAgLTE5OSw3
ICsxOTcsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lzU25hcHNob3R0aW5nIHsgZmFsc2Ug
fTsKIAotICAgIG11dGFibGUgUmVmUHRyPEltYWdlPiBtX3ByZXNlbnRlZEltYWdlOwogICAgIG11
dGFibGUgUmVmUHRyPEltYWdlPiBtX2NvcGllZEltYWdlOyAvLyBGSVhNRTogVGhpcyBpcyB0ZW1w
b3JhcnkgZm9yIHBsYXRmb3JtcyB0aGF0IGhhdmUgdG8gY29weSB0aGUgaW1hZ2UgYnVmZmVyIHRv
IHJlbmRlciAoYW5kIGZvciBDU1NDYW52YXNWYWx1ZSkuCiB9OwogCkBAIC0yMTYsNCArMjEzLDMg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3QgV2ViQ29yZTo6
RXZlbnRUYXJnZXQmIHRhcmdldCkgeyByZXR1cm4gaXM8V2ViQ29yZTo6Tm9kZT4odGFyZ2V0KSAm
JiBjaGVja1RhZ05hbWUoZG93bmNhc3Q8V2ViQ29yZTo6Tm9kZT4odGFyZ2V0KSk7IH0KIH07CiB9
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuaAppbmRleCBhY2Y4M2JiNzJkY2E3MDFjMGZjYzY3MzhjMWQ4NmNhMTE3OGZkNDk0Li5m
Mzg4NjNmNzhmZWUzZmY4OTkyOWM3NGM0N2NhMmU1MzQxOTkwMDU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC03MSw2
ICs3MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNPZmZzY3JlZW4yZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGFpbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCisgICAgLy8gQ2FsbGVkIGJlZm9yZSBwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0NhbnZhcyBpZiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyBpcworICAgIC8vIHVz
ZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2VzLgorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9y
RGlzcGxheVdpdGhQYWludCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0NhbnZhcygpIHt9CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9HUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDQ3
YTAyZWI3MDZjZTQ1ZDg4ZjE5NzU0YmI3ZDhiZWZmOWIxZjk0MmMuLjg5MGNkNzIzNTAxZTA0ZTI4
ZTgyZjc3YTBiNjlkYmVkNTlhNDg1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC01MCw4
ICs1MCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzaGFwZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFya0xheWVyQ29tcG9z
aXRlZCgpID0gMDsKLQogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEdQVUJhc2VkQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMDEzYjg5
YWY0ODg4Yjg3YzBmNjQ4ZTUyY2I1NjFjZGI5MWM1NDk3My4uMzBkOWU3ZTkxYTQzYzM5ZTgxMmY3
YmI1MmI1MTA2OGJjOTM2NzU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTExOTksMTEgKzExOTks
MTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZXN0b3JlU3RhdGVBZnRlckNs
ZWFyKCkKICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayhtX2RlcHRoTWFzayk7CiB9CiAKLXZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWFya0xheWVyQ29tcG9zaXRlZCgpCisKK3ZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQog
ewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKyAgICBtX2lzRGlzcGxheWluZ1dp
dGhQYWludCA9IHRydWU7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQpAQCAtMTIxMSwxOCArMTIxMCwxNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KCkKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoYXV0byogY2FudmFzID0gaHRtbENhbnZhcygpKSB7Ci0gICAgICAgIGlmIChjYW52
YXMtPmRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCAoY2FudmFzLT5pc1NuYXBzaG90dGluZygpICYm
IGNhbnZhcy0+ZG9jdW1lbnQoKS5wYWdlKCktPmlzVmlzaWJsZSgpKSkKLSAgICAgICAgICAgIGNh
bnZhcy0+Y2xlYXJQcmVzZW50YXRpb25Db3B5KCk7Ci0KLSAgICAgICAgLy8gVW50aWwgdGhlIGNh
bnZhcyBpcyB3cml0dGVuIHRvIGJ5IHRoZSBhcHBsaWNhdGlvbiwgdGhlIGNsZWFyIHRoYXQKLSAg
ICAgICAgLy8gaGFwcGVuZWQgYWZ0ZXIgaXQgd2FzIGNvbXBvc2l0ZWQgc2hvdWxkIGJlIGlnbm9y
ZWQgYnkgdGhlIGNvbXBvc2l0b3IuCi0gICAgICAgIGlmIChtX2NvbnRleHQtPmxheWVyQ29tcG9z
aXRlZCgpICYmICFtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKGNhbnZhcy0+YnVm
ZmVyKCkpOwotCi0gICAgICAgICAgICBjYW52YXMtPm1ha2VQcmVzZW50YXRpb25Db3B5KCk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2FudmFzLT5jbGVhclByZXNlbnRhdGlvbkNvcHko
KTsKKyAgICBpZiAobV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQpIHsKKyAgICAgICAgYm9vbCBjYW52
YXNDb250YWluc0Rpc3BsYXlCdWZmZXIgPSAhbV9tYXJrZWRDYW52YXNEaXJ0eTsKKyAgICAgICAg
cHJlcGFyZUZvckRpc3BsYXkoKTsKKyAgICAgICAgbV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSBm
YWxzZTsKKyAgICAgICAgaWYgKCFjYW52YXNDb250YWluc0Rpc3BsYXlCdWZmZXIpIHsKKyAgICAg
ICAgICAgIGF1dG8mIGJhc2UgPSBjYW52YXNCYXNlKCk7CisgICAgICAgICAgICBiYXNlLmNsZWFy
Q29waWVkSW1hZ2UoKTsKKyAgICAgICAgICAgIG1fbWFya2VkQ2FudmFzRGlydHkgPSBmYWxzZTsK
KyAgICAgICAgICAgIG1fY29udGV4dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKGJh
c2UuYnVmZmVyKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBj
bGVhcklmQ29tcG9zaXRlZChDbGVhckNhbGxlck90aGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCAzMGE4
NTU3ZDg2ODhlMmVhNDk1ZGI3MTZmMDhiZTYwOWVjM2I0ZThhLi5lOGU5MGNmYmExNmIxNGRkMTQ4
Yzk4ZTA2OWU1MDBlY2RlMmI1NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0zODQsOCArMzg0LDggQEAg
cHVibGljOgogCiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheVdpdGhQYWludCgpIGZpbmFsOworICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoKSBmaW5hbDsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpOwogCiAgICAgdm9pZCByZW1vdmVTaGFyZWRPYmplY3QoV2Vi
R0xTaGFyZWRPYmplY3QmKTsKQEAgLTY2OCw2ICs2NjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCk7CiAKICAgICBib29sIG1fY29tcG9zaXRpbmdSZXN1
bHRzTmVlZFVwZGF0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNEaXNwbGF5aW5nV2l0aFBh
aW50IHsgZmFsc2UgfTsKIAogICAgIC8vIEVuYWJsZWQgZXh0ZW5zaW9uIG9iamVjdHMuCiAgICAg
Ly8gRklYTUU6IE1vdmUgc29tZSBvZiB0aGVzZSB0byBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIHRo
ZSBvbmVzIG5vdCBuZWVkZWQgZm9yIFdlYkdMMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggMjIzYTVjOWJmMTY5N2Yy
NWYxMTJkYmNjMTg2ZjgxOWI3Y2UxZGU0NS4uYWE4ZmYyMzY4ZGZmZDg5Y2VhYjZhNDQzMzMwZGI0
NTE2YTE4ZjlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0xMjkyLDcgKzEyOTIsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gdGhlIGNvbnRleHQuCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyKikgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlRGF0YT4g
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikg
PSAwOwogCiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQuIFRoZSBsYXllciBz
aG91bGQgYmUgbWFya2VkIGNvbXBvc2l0ZWQgYnkKICAgICAvLyBwcmVwYXJpbmcgZm9yIGRpc3Bs
YXksIHNvIHRoYXQgY2FudmFzIGltYWdlIGJ1ZmZlciBhbmQgdGhlIGxheWVyIGFncmVlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKaW5kZXggNjBmN2E5NDdlZmNiYjM3
MTU2YzA5OGUwYjVlZTMzYzNiNjJiODQ5Yi4uMzZmYWFhN2U0NjYyMmJhZjNhMTIzZmJlOTVlZTk0
YmU2NDA5ZDU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApA
QCAtOTksMTEgKzk5LDYgQEAgR0NHTGJpdGZpZWxkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdAogICAgIHJldHVybiBtX2J1ZmZl
cnNUb0F1dG9DbGVhcjsKIH0KIAotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKLXsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpCiB7CiAgICAgLy8gUmVkZWNsYXJlZCBmb3Ig
ZXhwb3J0IHJlYXNvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAppbmRl
eCA3MjZhYWY2YzZhMGY2MmZmMjgyZTViOGQyMDJhMTI5NGUxZGU4NTcxLi4yNDcxZDRlMjVjOWFh
MjAwZWM3NDNiMWZlMGM2NDY4YjBjOWE1MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmgKQEAgLTY3LDcgKzY3LDYgQEAgcHVibGljOgogICAgIGJvb2wgbGF5ZXJDb21w
b3NpdGVkKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NH
TGJpdGZpZWxkKSBmaW5hbDsKICAgICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFy
KCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMo
SW1hZ2VCdWZmZXIqKSBmaW5hbDsKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5h
bDsKICAgICB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDMwOWE1MzA5YjY0MGEzZDZhMjgxNDFj
YTdiMWE3NWRiNDZlOWY5NTEuLmI1MDQzYjc0NjM2Zjc4ODVjNWQ4MGMwNzczNTU1ZDcxMjAwMDIz
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0zMSw2ICszMSw3IEBA
CiAKICNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zR0xBTkdM
RS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKQEAgLTQ2LDkgKzQ3LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0jaWYgVVNFKEFDQ0VMRVJB
VEUpCi0jaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+Ci0jZW5kaWYKIAogI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTENWQU5HTEUuaCIKQEAgLTY0LDMwICs2Miw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIFNjb3BlZFJlc2V0QnVmZmVyQmluZGluZyB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUmVzZXRCdWZmZXJCaW5kaW5nKTsKLXB1YmxpYzoK
LSAgICBTY29wZWRSZXNldEJ1ZmZlckJpbmRpbmcoYm9vbCBzaG91bGREb1dvcmssIEdMZW51bSBi
aW5kaW5nUG9pbnRRdWVyeSwgR0xlbnVtIGJpbmRpbmdQb2ludCkKLSAgICAgICAgOiBtX2JpbmRp
bmdQb2ludFF1ZXJ5KGJpbmRpbmdQb2ludFF1ZXJ5KQotICAgICAgICAsIG1fYmluZGluZ1BvaW50
KGJpbmRpbmdQb2ludCkKLSAgICB7Ci0gICAgICAgIGlmIChzaG91bGREb1dvcmspCi0gICAgICAg
ICAgICBnbDo6R2V0SW50ZWdlcnYobV9iaW5kaW5nUG9pbnRRdWVyeSwgJm1fYmluZGluZ1ZhbHVl
KTsKLSAgICAgICAgaWYgKG1fYmluZGluZ1ZhbHVlKQotICAgICAgICAgICAgZ2w6OkJpbmRCdWZm
ZXIobV9iaW5kaW5nUG9pbnQsIDApOwotICAgIH0KLQotICAgIH5TY29wZWRSZXNldEJ1ZmZlckJp
bmRpbmcoKQotICAgIHsKLSAgICAgICAgaWYgKG1fYmluZGluZ1ZhbHVlKQotICAgICAgICAgICAg
Z2w6OkJpbmRCdWZmZXIobV9iaW5kaW5nUG9pbnQsIG1fYmluZGluZ1ZhbHVlKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgR0xpbnQgbV9iaW5kaW5nUG9pbnRRdWVyeSB7IDAgfTsKLSAgICBHTGlu
dCBtX2JpbmRpbmdQb2ludCB7IDAgfTsKLSAgICBHTGludCBtX2JpbmRpbmdWYWx1ZSB7IDAgfTsK
LX07CiAKIH0gLy8gbmFtZXNwYWNlIGFub255bW91cwogCkBAIC0xMDIsMzYgKzc2LDI5IEBAIHN0
YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGludCB3aWR0aCwgaW50IGhlaWdo
dCwgdW5zaWduZWQgY2hhciogcGl4CiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeShpbnQgeCwgaW50
IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQotewotICAg
IC8vIE5WSURJQSBkcml2ZXJzIGhhdmUgYSBidWcgd2hlcmUgY2FsbGluZyByZWFkUGl4ZWxzIGlu
IEJHUkEgY2FuIHJldHVybiB0aGUgd3JvbmcgdmFsdWVzIGZvciB0aGUgYWxwaGEgY2hhbm5lbCB3
aGVuIHRoZSBhbHBoYSBpcyBvZmYgZm9yIHRoZSBjb250ZXh0LgotICAgIGdsOjpSZWFkUGl4ZWxz
KHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7
Ci0jaWYgVVNFKEFDQ0VMRVJBVEUpCi0gICAgdkltYWdlX0J1ZmZlciBzcmM7Ci0gICAgc3JjLmhl
aWdodCA9IGhlaWdodDsKLSAgICBzcmMud2lkdGggPSB3aWR0aDsKLSAgICBzcmMucm93Qnl0ZXMg
PSB3aWR0aCAqIDQ7Ci0gICAgc3JjLmRhdGEgPSBwaXhlbHM7Ci0KLSAgICB2SW1hZ2VfQnVmZmVy
IGRlc3Q7Ci0gICAgZGVzdC5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgZGVzdC53aWR0aCA9IHdpZHRo
OwotICAgIGRlc3Qucm93Qnl0ZXMgPSB3aWR0aCAqIDQ7Ci0gICAgZGVzdC5kYXRhID0gcGl4ZWxz
OwotCi0gICAgLy8gU3dhcCBwaXhlbCBjaGFubmVscyBmcm9tIFJHQkEgdG8gQkdSQS4KLSAgICBj
b25zdCB1aW50OF90IG1hcFs0XSA9IHsgMiwgMSwgMCwgMyB9OwotICAgIHZJbWFnZVBlcm11dGVD
aGFubmVsc19BUkdCODg4OCgmc3JjLCAmZGVzdCwgbWFwLCBrdkltYWdlTm9GbGFncyk7Ci0jZWxz
ZQotICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICBzdGQ6OnN3YXAocGl4ZWxz
W2ldLCBwaXhlbHNbaSArIDJdKTsKLSNlbmRpZgotCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCit7CisgICAgYXV0
byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6
ZSgpKTsKKyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
U2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSBwYWNrQWxpZ25tZW50KEdMX1BBQ0tfQUxJR05NRU5UKTsK
KyAgICBpZiAocGFja0FsaWdubWVudCA+IDQpCisgICAgICAgIHBhY2tBbGlnbm1lbnQucGl4ZWxT
dG9yZSg0KTsKKyAgICBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlIHBhY2tSb3dMZW5ndGgoR0xfUEFD
S19ST1dfTEVOR1RILCAwLCBtX2lzRm9yV2ViR0wyKTsKKyAgICBTY29wZWRQaXhlbFN0b3JhZ2VN
b2RlIHBhY2tTa2lwUm93cyhHTF9QQUNLX1NLSVBfUk9XUywgMCwgbV9pc0ZvcldlYkdMMik7Cisg
ICAgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSBwYWNrU2tpcFBpeGVscyhHTF9QQUNLX1NLSVBfUElY
RUxTLCAwLCBtX2lzRm9yV2ViR0wyKTsKKyAgICBTY29wZWRCdWZmZXJCaW5kaW5nIHNjb3BlZFBp
eGVsUGFja0J1ZmZlclJlc2V0KEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCAwLCBtX2lzRm9yV2ViR0wy
KTsKKworICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKDAsIDAsIGltYWdlRGF0YS0+d2lk
dGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgaW1h
Z2VEYXRhLT5kYXRhKCktPmJ5dGVMZW5ndGgoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
aW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSk7CisgICAgLy8gRklYTUU6IFJlbmRlcmluZyB0byBH
TF9SR0IgdGV4dHVyZXMgd2l0aCBhIElPU3VyZmFjZSBib3VuZCB0byB0aGUgdGV4dHVyZSBpbWFn
ZSBsZWF2ZXMKKyAgICAvLyB0aGUgYWxwaGEgaW4gdGhlIElPU3VyZmFjZSBpbiBpbmNvcnJlY3Qg
c3RhdGUuIEFsc28gQU5HTEUgZ2w6OlJlYWRQaXhlbHMgd2lsbCBpbiBzb21lCisgICAgLy8gY2Fz
ZXMgZXhwb3NlIHRoZSBub24tMjU1IHZhbHVlcy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODA0CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmICghY29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSkKLSAgICAg
ICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdodCwgcGl4ZWxzKTsKKyAg
ICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFn
ZURhdGEtPmhlaWdodCgpLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpKTsKICNlbmRpZgorICAg
IHJldHVybiBpbWFnZURhdGE7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZh
bGlkYXRlQXR0cmlidXRlcygpCkBAIC01MTAsNjQgKzQ3Nyw2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRo
U3RlbmNpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCi17Ci0gICAg
Q2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PiByb3dCeXRlcyA9IENoZWNrZWQ8aW50LCBSZWNv
cmRPdmVyZmxvdz4obV9jdXJyZW50V2lkdGgpICogNDsKLSAgICBpZiAocm93Qnl0ZXMuaGFzT3Zl
cmZsb3dlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDaGVja2VkPGludCwgUmVjb3JkT3Zl
cmZsb3c+IHRvdGFsQnl0ZXNDaGVja2VkID0gcm93Qnl0ZXMgKiBtX2N1cnJlbnRIZWlnaHQ7Ci0g
ICAgaWYgKHRvdGFsQnl0ZXNDaGVja2VkLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGludCB0b3RhbEJ5dGVzID0gdG90YWxCeXRlc0NoZWNrZWQudW5zYWZlR2V0KCk7Ci0K
LSAgICBhdXRvIHBpeGVscyA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPih0b3RhbEJ5
dGVzKTsKLSAgICBpZiAoIXBpeGVscykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcmVhZFJlbmRl
cmluZ1Jlc3VsdHMocGl4ZWxzLmdldCgpLCB0b3RhbEJ5dGVzKTsKLQotICAgIGlmICghY29udGV4
dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpIHsKLSAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpIHsKLSAgICAgICAgICAgIC8vIFByZW11bHRpcGx5
IGFscGhhLgotICAgICAgICAgICAgcGl4ZWxzW2kgKyAwXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxz
W2kgKyAwXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICAgICAgcGl4ZWxzW2kgKyAx
XSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAxXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwot
ICAgICAgICAgICAgcGl4ZWxzW2kgKyAyXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAyXSAq
IHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcGFpbnRUb0Nh
bnZhcyhwaXhlbHMuZ2V0KCksIEludFNpemUobV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdo
dCksIGltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsK
LX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKLXsKLSAgICAvLyBOb3QgbmVlZGVkIGF0IHRoZSBtb21l
bnQsIHNvIHJldHVybiB0aGF0IG5vdGhpbmcgd2FzIGRvbmUuCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1SZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQotewotICAgIC8vIFJlYWRpbmcgcHJlbXVsdGlwbGll
ZCBhbHBoYSB3b3VsZCBpbnZvbHZlIHVucHJlbXVsdGlwbHlpbmcsIHdoaWNoIGlzCi0gICAgLy8g
bG9zc3kuCi0gICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRh
OjpjcmVhdGUoSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSk7Ci0gICAg
dW5zaWduZWQgY2hhciogcGl4ZWxzID0gaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKTsKLSAgICBD
aGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IHRvdGFsQnl0ZXNDaGVja2VkID0gNCAqIENoZWNr
ZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4obV9jdXJyZW50V2lkdGgpICogQ2hlY2tlZDxpbnQsIFJl
Y29yZE92ZXJmbG93PihtX2N1cnJlbnRIZWlnaHQpOwotICAgIGlmICh0b3RhbEJ5dGVzQ2hlY2tl
ZC5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBpbWFnZURhdGE7Ci0gICAgaW50IHRv
dGFsQnl0ZXMgPSB0b3RhbEJ5dGVzQ2hlY2tlZC51bnNhZmVHZXQoKTsKLQotICAgIHJlYWRSZW5k
ZXJpbmdSZXN1bHRzKHBpeGVscywgdG90YWxCeXRlcyk7Ci0KLSAgICAvLyBDb252ZXJ0IHRvIFJH
QkEuCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAg
IHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOwotCi0gICAgcmV0dXJuIGltYWdl
RGF0YTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZVRleHR1cmUo
KQogewogICAgIGlmIChtX2xheWVyQ29tcG9zaXRlZCkKQEAgLTYyMCw2NSArNTI5LDE1IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVUZXh0dXJlSW1wbCgpCiAjZW5kaWYK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHMo
dW5zaWduZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSkKK1JlZlB0cjxJbWFnZURhdGE+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cygpCiB7Ci0gICAg
aWYgKHBpeGVsc1NpemUgPCBtX2N1cnJlbnRXaWR0aCAqIG1fY3VycmVudEhlaWdodCAqIDQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotCi0gICAgR0NHTGVudW0gZnJhbWVidWZmZXJUYXJnZXQgPSBtX2lzRm9yV2Vi
R0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRl
eHRHTDo6RlJBTUVCVUZGRVI7Ci0KLSAgICBib29sIG11c3RSZXN0b3JlRkJPID0gZmFsc2U7Cisg
ICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcgZmJvQmluZGluZyhtX2lzRm9y
V2ViR0wyLCBtX3N0YXRlLmJvdW5kUmVhZEZCTyk7CiAgICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVz
KCkuYW50aWFsaWFzKSB7CiAgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3Nhcnko
KTsKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9mYm8p
OwotICAgICAgICBtdXN0UmVzdG9yZUZCTyA9IHRydWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
aWYgKG1fc3RhdGUuYm91bmRSZWFkRkJPICE9IG1fZmJvKSB7Ci0gICAgICAgICAgICBtdXN0UmVz
dG9yZUZCTyA9IHRydWU7Ci0gICAgICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVm
ZmVyVGFyZ2V0LCBtX2Zibyk7Ci0gICAgICAgIH0KKyAgICAgICAgZmJvQmluZGluZy5tYXJrQmlu
ZGluZ0NoYW5nZWQoKTsKICAgICB9Ci0KLSAgICBHTGludCBwYWNrQWxpZ25tZW50ID0gNDsKLSAg
ICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOwotICAgIGdsOjpHZXRJbnRl
Z2VydihHTF9QQUNLX0FMSUdOTUVOVCwgJnBhY2tBbGlnbm1lbnQpOwotICAgIGlmIChwYWNrQWxp
Z25tZW50ID4gNCkgewotICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQs
IDQpOwotICAgICAgICBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSB0cnVlOwotICAgIH0KLSAg
ICBHTGludCBwYWNrUm93TGVuZ3RoID0gMDsKLSAgICBHTGludCBwYWNrU2tpcFJvd3MgPSAwOwot
ICAgIEdMaW50IHBhY2tTa2lwUGl4ZWxzID0gMDsKLSAgICBTY29wZWRSZXNldEJ1ZmZlckJpbmRp
bmcgc2NvcGVkUGl4ZWxQYWNrQnVmZmVyUmVzZXQobV9pc0ZvcldlYkdMMiwgR0xfUElYRUxfUEFD
S19CVUZGRVJfQklORElORywgR0xfUElYRUxfUEFDS19CVUZGRVIpOwotICAgIGlmIChtX2lzRm9y
V2ViR0wyKSB7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihHTF9QQUNLX1JPV19MRU5HVEgsICZw
YWNrUm93TGVuZ3RoKTsKLSAgICAgICAgaWYgKHBhY2tSb3dMZW5ndGggPiAwKQotICAgICAgICAg
ICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfUk9XX0xFTkdUSCwgMCk7Ci0gICAgICAgIGdsOjpH
ZXRJbnRlZ2VydihHTF9QQUNLX1NLSVBfUk9XUywgJnBhY2tTa2lwUm93cyk7Ci0gICAgICAgIGlm
IChwYWNrU2tpcFJvd3MgPiAwKQotICAgICAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tf
U0tJUF9ST1dTLCAwKTsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX1BBQ0tfU0tJUF9QSVhF
TFMsICZwYWNrU2tpcFBpeGVscyk7Ci0gICAgICAgIGlmIChwYWNrU2tpcFBpeGVscyA+IDApCi0g
ICAgICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19TS0lQX1BJWEVMUywgMCk7Ci0gICAg
fQotCi0gICAgcmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeSgwLCAwLCBtX2N1
cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBwaXhlbHMpOwotCi0gICAgaWYgKG11c3RSZXN0
b3JlUGFja0FsaWdubWVudCkKLSAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05N
RU5ULCBwYWNrQWxpZ25tZW50KTsKLSAgICBpZiAocGFja1Jvd0xlbmd0aCA+IDApCi0gICAgICAg
IGdsOjpQaXhlbFN0b3JlaShHTF9QQUNLX1JPV19MRU5HVEgsIHBhY2tSb3dMZW5ndGgpOwotICAg
IGlmIChwYWNrU2tpcFJvd3MgPiAwKQotICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19T
S0lQX1JPV1MsIHBhY2tTa2lwUm93cyk7Ci0gICAgaWYgKHBhY2tTa2lwUGl4ZWxzID4gMCkKLSAg
ICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfU0tJUF9QSVhFTFMsIHBhY2tTa2lwUGl4ZWxz
KTsKLQotICAgIGlmIChtdXN0UmVzdG9yZUZCTykKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZl
cihmcmFtZWJ1ZmZlclRhcmdldCwgbV9zdGF0ZS5ib3VuZFJlYWRGQk8pOworICAgIGZib0JpbmRp
bmcuYmluZEZyYW1lYnVmZmVyKG1fZmJvKTsKKyAgICByZXR1cm4gcmVhZFBpeGVsc0ZvclBhaW50
UmVzdWx0cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKGlu
dCB3aWR0aCwgaW50IGhlaWdodCkKQEAgLTcwNCw3ICs1NjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogICAgIFRlbXBv
cmFyeUFOR0xFU2V0dGluZyBzY29wZWRTY2lzc29yKEdMX1NDSVNTT1JfVEVTVCwgR0xfRkFMU0Up
OwogICAgIFRlbXBvcmFyeUFOR0xFU2V0dGluZyBzY29wZWREaXRoZXIoR0xfRElUSEVSLCBHTF9G
QUxTRSk7Ci0gICAgU2NvcGVkUmVzZXRCdWZmZXJCaW5kaW5nIHNjb3BlZFBpeGVsVW5wYWNrQnVm
ZmVyUmVzZXQobV9pc0ZvcldlYkdMMiwgR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HLCBH
TF9QSVhFTF9VTlBBQ0tfQlVGRkVSKTsKKyAgICBTY29wZWRCdWZmZXJCaW5kaW5nIHNjb3BlZFBp
eGVsVW5wYWNrQnVmZmVyUmVzZXQoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgbV9pc0Zvcldl
YkdMMik7CiAKICAgICBib29sIG11c3RSZXN0b3JlRkJPID0gcmVzaGFwZUZCT3MoSW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KSk7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgKaW5kZXggMjEzMjdk
ZGFmYzNkYjVmZWQyZTgxMzI2YjFmYTIyYzUyODY5ZjE1MS4uNDk0MmE5NTU0NTZiZjk0NDg0MDFj
MmUyNmI1N2ZkYjgyMWNkNGM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyk7CiBwdWJsaWM6Ci0gICAgU2NvcGVkUmVzdG9y
ZVRleHR1cmVCaW5kaW5nKEdDR0xlbnVtIGJpbmRpbmdQb2ludFF1ZXJ5LCBHQ0dMZW51bSBiaW5k
aW5nUG9pbnQsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVy
ZUJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludFF1ZXJ5LCBHTGVudW0gYmluZGluZ1BvaW50LCBi
b29sIGNvbmRpdGlvbiA9IHRydWUpCiAgICAgewotICAgICAgICBBU1NFUlQoYmluZGluZ1BvaW50
ICE9IHN0YXRpY19jYXN0PEdDR0xlbnVtPigwdSkpOworICAgICAgICBBU1NFUlQoYmluZGluZ1Bv
aW50ICE9IHN0YXRpY19jYXN0PEdMZW51bT4oMHUpKTsKICAgICAgICAgaWYgKGNvbmRpdGlvbikg
ewogICAgICAgICAgICAgbV9iaW5kaW5nUG9pbnQgPSBiaW5kaW5nUG9pbnQ7CiAgICAgICAgICAg
ICBnbDo6R2V0SW50ZWdlcnYoYmluZGluZ1BvaW50UXVlcnksIHJlaW50ZXJwcmV0X2Nhc3Q8R0xp
bnQqPigmbV9iaW5kaW5nVmFsdWUpKTsKQEAgLTU2LDYgKzU2LDE1MyBAQCBwcml2YXRlOgogICAg
IEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07CiB9OwogCisKK2NsYXNzIFNjb3BlZEJ1ZmZl
ckJpbmRpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEJ1ZmZlckJpbmRpbmcp
OworcHVibGljOgorICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludCwg
R0x1aW50IGJpbmRpbmdWYWx1ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQorICAgIHsKKyAgICAg
ICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdsOjpHZXRJ
bnRlZ2VydihxdWVyeShiaW5kaW5nUG9pbnQpLCByZWludGVycHJldF9jYXN0PEdMaW50Kj4oJm1f
YmluZGluZ1ZhbHVlKSk7CisgICAgICAgIGlmIChiaW5kaW5nVmFsdWUgPT0gbV9iaW5kaW5nVmFs
dWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fYmluZGluZ1BvaW50ID0gYmluZGlu
Z1BvaW50OworICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwgYmluZGluZ1Zh
bHVlKTsKKyAgICB9CisKKyAgICB+U2NvcGVkQnVmZmVyQmluZGluZygpCisgICAgeworICAgICAg
ICBpZiAobV9iaW5kaW5nUG9pbnQpCisgICAgICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRp
bmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdMZW51bSBxdWVyeShHTGVudW0gYmluZGluZ1BvaW50KQorICAgIHsKKyAgICAg
ICAgaWYgKGJpbmRpbmdQb2ludCA9PSBHTF9QSVhFTF9QQUNLX0JVRkZFUikKKyAgICAgICAgICAg
IHJldHVybiBHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOworICAgICAgICBBU1NFUlQoYmlu
ZGluZ1BvaW50ID09IEdMX1BJWEVMX1VOUEFDS19CVUZGRVIpOworICAgICAgICByZXR1cm4gR0xf
UElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HOworICAgIH0KKyAgICBHTGludCBtX2JpbmRpbmdQ
b2ludCB7IDAgfTsKKyAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUgeyAwdSB9OworfTsKK2NsYXNz
IFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk7CitwdWJsaWM6Cisg
ICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoYm9vbCBpc0ZvcldlYkdMMiwg
R0x1aW50IHJlc3RvcmVWYWx1ZSkKKyAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlzRm9y
V2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQorICAgICAgICAs
IG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZFJl
c3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGJvb2wgaXNGb3JXZWJHTDIsIEdMdWludCByZXN0
b3JlVmFsdWUsIEdMdWludCB2YWx1ZSkKKyAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlz
Rm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQorICAgICAg
ICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKKyAgICB7CisgICAgICAgIGJpbmRGcmFt
ZWJ1ZmZlcih2YWx1ZSk7CisgICAgfQorICAgIHZvaWQgbWFya0JpbmRpbmdDaGFuZ2VkKCkKKyAg
ICB7CisgICAgICAgIG1fYmluZGluZ0NoYW5nZWQgPSB0cnVlOworICAgIH0KKyAgICB2b2lkIGJp
bmRGcmFtZWJ1ZmZlcihHTHVpbnQgYmluZGluZ1ZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2JpbmRpbmdDaGFuZ2VkICYmIG1fYmluZGluZ1ZhbHVlID09IGJpbmRpbmdWYWx1ZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVy
VGFyZ2V0LCBiaW5kaW5nVmFsdWUpOworICAgICAgICBtX2JpbmRpbmdDaGFuZ2VkID0gbV9iaW5k
aW5nVmFsdWUgIT0gYmluZGluZ1ZhbHVlOworICAgIH0KKyAgICB+U2NvcGVkUmVzdG9yZVJlYWRG
cmFtZWJ1ZmZlckJpbmRpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYmluZGluZ0NoYW5nZWQp
CisgICAgICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXJUYXJnZXQsIG1f
YmluZGluZ1ZhbHVlKTsKKyAgICB9Citwcml2YXRlOgorICAgIGNvbnN0IEdMZW51bSBtX2ZyYW1l
YnVmZmVyVGFyZ2V0OworICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07CisgICAgYm9v
bCBtX2JpbmRpbmdDaGFuZ2VkIHsgZmFsc2UgfTsKK307CisKK2NsYXNzIFNjb3BlZFBpeGVsU3Rv
cmFnZU1vZGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFBpeGVsU3RvcmFnZU1v
ZGUpOworcHVibGljOgorICAgIGV4cGxpY2l0IFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVt
IG5hbWUsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICAgICAgOiBtX25hbWUoY29uZGl0aW9u
ID8gbmFtZSA6IDApCisgICAgeworICAgICAgICBpZiAobV9uYW1lKQorICAgICAgICAgICAgZ2w6
OkdldEludGVnZXJ2KG1fbmFtZSwgJm1fb3JpZ2luYWxWYWx1ZSk7CisgICAgfQorICAgIFNjb3Bl
ZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVtIG5hbWUsIEdMaW50IHZhbHVlLCBib29sIGNvbmRpdGlv
biA9IHRydWUpCisgICAgICAgIDogbV9uYW1lKGNvbmRpdGlvbiA/IG5hbWUgOiAwKQorICAgIHsK
KyAgICAgICAgaWYgKG1fbmFtZSkgeworICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KG1fbmFt
ZSwgJm1fb3JpZ2luYWxWYWx1ZSk7CisgICAgICAgICAgICBwaXhlbFN0b3JlKHZhbHVlKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICB+U2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSgpCisgICAgeworICAg
ICAgICBpZiAobV9uYW1lICYmIG1fdmFsdWVDaGFuZ2VkKQorICAgICAgICAgICAgZ2w6OlBpeGVs
U3RvcmVpKG1fbmFtZSwgbV9vcmlnaW5hbFZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBwaXhlbFN0
b3JlKEdMaW50IHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbmFtZSk7CisgICAgICAg
IGlmICghbV92YWx1ZUNoYW5nZWQgJiYgbV9vcmlnaW5hbFZhbHVlID09IHZhbHVlKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBnbDo6UGl4ZWxTdG9yZWkobV9uYW1lLCB2YWx1ZSk7Cisg
ICAgICAgIG1fdmFsdWVDaGFuZ2VkID0gbV9vcmlnaW5hbFZhbHVlICE9IHZhbHVlOworICAgIH0K
KyAgICBvcGVyYXRvciBHTGludCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9uYW1l
ICYmICFtX3ZhbHVlQ2hhbmdlZCk7CisgICAgICAgIHJldHVybiBtX29yaWdpbmFsVmFsdWU7Cisg
ICAgfQorcHJpdmF0ZToKKyAgICBjb25zdCBHTGVudW0gbV9uYW1lOworICAgIGJvb2wgbV92YWx1
ZUNoYW5nZWQgeyBmYWxzZSB9OworICAgIEdMaW50IG1fb3JpZ2luYWxWYWx1ZSB7IDAgfTsKK307
CisKK2NsYXNzIFNjb3BlZFRleHR1cmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3Bl
ZFRleHR1cmUpOworcHVibGljOgorICAgIFNjb3BlZFRleHR1cmUoKQorICAgIHsKKyAgICAgICAg
Z2w6OkdlblRleHR1cmVzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIH5TY29wZWRUZXh0dXJl
KCkKKyAgICB7CisgICAgICAgIGdsOjpEZWxldGVUZXh0dXJlcygxLCAmbV9vYmplY3QpOworICAg
IH0KKyAgICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
b2JqZWN0OworICAgIH0KK3ByaXZhdGU6CisgICAgR0x1aW50IG1fb2JqZWN0IHsgMHUgfTsKK307
CisKK2NsYXNzIFNjb3BlZEZyYW1lYnVmZmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
Y29wZWRGcmFtZWJ1ZmZlcik7CitwdWJsaWM6CisgICAgU2NvcGVkRnJhbWVidWZmZXIoKQorICAg
IHsKKyAgICAgICAgZ2w6OkdlbkZyYW1lYnVmZmVycygxLCAmbV9vYmplY3QpOworICAgIH0KKyAg
ICB+U2NvcGVkRnJhbWVidWZmZXIoKQorICAgIHsKKyAgICAgICAgZ2w6OkRlbGV0ZUZyYW1lYnVm
ZmVycygxLCAmbV9vYmplY3QpOworICAgIH0KKyAgICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0OworICAgIH0KK3ByaXZhdGU6CisgICAgR0x1
aW50IG1fb2JqZWN0IHsgMCB9OworfTsKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0R0xDYWlyby5jcHAKaW5kZXggNDNjZGFjOGIwMWNkYTBkZjA2MjE4NmYxNTAwM2VhMzA4ZmEy
MGNkNi4uNzgzYmZhOTkyZDM0ZjI1NTY5MzlkNDZiYzZmY2MwOWFhN2M5YTkxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
R0xDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJD
YWlyb1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1
ZGUgIkltYWdlU291cmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNp
bmNsdWRlICJSZWZQdHJDYWlyby5oIgpAQCAtMTA1LDE1ICsxMDYsMzAgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywg
Y29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWlu
dFRvQ2FudmFzKFJlZjxJbWFnZURhdGE+JiYgaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBjYW52
YXNTaXplLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKCFpbWFnZVBpeGVs
cyB8fCBpbWFnZVNpemUuaXNFbXB0eSgpIHx8IGNhbnZhc1NpemUuaXNFbXB0eSgpKQorICAgIEFT
U0VSVCghaW1hZ2VEYXRhLT5zaXplKCkuaXNFbXB0eSgpKTsKKyAgICBpZiAoY2FudmFzU2l6ZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBsYXRmb3JtQ29udGV4dENhaXJvKiBw
bGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmICghcGxh
dGZvcm1Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBDb252ZXJ0IFJHQkEgdG8g
QkdSQS4gQkdSQSBpcyBDQUlST19GT1JNQVRfQVJHQjMyIG9uIGxpdHRsZS1lbmRpYW4gYXJjaGl0
ZWN0dXJlcy4KKyAgICBzaXplX3QgdG90YWxCeXRlcyA9IGltYWdlRGF0YS5kYXRhKCktPmJ5dGVM
ZW5ndGgoKTsKKyAgICB1aW50OF90KiBwaXhlbHMgPSBpbWFnZURhdGEuZGF0YSgpLT5kYXRhKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCisgICAgICAg
IHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOworCisgICAgaWYgKCFjb250ZXh0
QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkgeworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkgeworICAgICAgICAgICAgcGl4ZWxzW2kgKyAw
XSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAwXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwor
ICAgICAgICAgICAgcGl4ZWxzW2kgKyAxXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAxXSAq
IHBpeGVsc1tpICsgM10gLyAyNTUpOworICAgICAgICAgICAgcGl4ZWxzW2kgKyAyXSA9IHN0ZDo6
bWluKDI1NSwgcGl4ZWxzW2kgKyAyXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOworICAgICAgICB9
CisgICAgfQorCiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQtPmNyKCk7CiAgICAg
cGxhdGZvcm1Db250ZXh0LT5zYXZlKCk7CiAKQEAgLTEyMiw3ICsxMzgsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlt
YWdlUGl4ZWxzLCBjbwogICAgIGNhaXJvX3BhaW50KGNyKTsKIAogICAgIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IGltYWdlU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3Jl
YXRlX2Zvcl9kYXRhKAotICAgICAgICBjb25zdF9jYXN0PHVuc2lnbmVkIGNoYXIqPihpbWFnZVBp
eGVscyksIENBSVJPX0ZPUk1BVF9BUkdCMzIsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUu
aGVpZ2h0KCksIGltYWdlU2l6ZS53aWR0aCgpICogNCkpOworICAgICAgICBpbWFnZURhdGEtPmRh
dGEoKS0+ZGF0YSgpLCBDQUlST19GT1JNQVRfQVJHQjMyLCBpbWFnZURhdGEtPndpZHRoKCksIGlt
YWdlRGF0YS0+aGVpZ2h0KCksIGltYWdlRGF0YS0+d2lkdGgoKSAqIDQpKTsKIAogICAgIC8vIE9w
ZW5HTCBrZWVwcyB0aGUgcGl4ZWxzIHN0b3JlZCBib3R0b20gdXAsIHNvIHdlIG5lZWQgdG8gZmxp
cCB0aGUgaW1hZ2UgaGVyZS4KICAgICBjYWlyb190cmFuc2xhdGUoY3IsIDAsIGltYWdlU2l6ZS5o
ZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRHTENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCmluZGV4IDY4ZDVhYzgzZDkxMmU4NmVmZWJm
ZjQyMzlkZmEwNjQ2NjMwMGYxYjQuLmUyZTUxZmQwYTA2MGRhZDIxYjJkMjFhNTI4NWQ0MGQ0NzNi
YzUyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dEdMQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCkBAIC01MDUsMzYgKzUwNSwzNSBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBy
ZWxlYXNlSW1hZ2VEYXRhKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpCitzdGF0aWMg
dm9pZCByZWxlYXNlSW1hZ2VEYXRhKHZvaWQqIGltYWdlRGF0YSwgY29uc3Qgdm9pZCosIHNpemVf
dCkKIHsKLSAgICBmYXN0RnJlZShjb25zdF9jYXN0PHZvaWQqPihkYXRhKSk7CisgICAgcmVpbnRl
cnByZXRfY2FzdDxJbWFnZURhdGEqPihpbWFnZURhdGEpLT5kZXJlZigpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGltYWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNh
bnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBhaW50VG9DYW52YXMoUmVmPEltYWdlRGF0YT4mJiBpbWFnZURhdGEsIGNvbnN0
IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBp
ZiAoIWltYWdlUGl4ZWxzIHx8IGltYWdlU2l6ZS5pc0VtcHR5KCkgfHwgY2FudmFzU2l6ZS5pc0Vt
cHR5KCkpCisgICAgQVNTRVJUKCFpbWFnZURhdGEtPnNpemUoKS5pc0VtcHR5KCkpOworICAgIGlm
IChjYW52YXNTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOworICAgIGF1dG8gYXR0cnMg
PSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIC8vIElucHV0IGlzIEdMX1JHQkEgPT0ga0NHQml0
bWFwQnl0ZU9yZGVyMzJCaWcgfCBrQ0dJbWFnZUFscGhhKkxhc3QuCisgICAgLy8gR0xfQkdSQSB3
b3VsZCBiZSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGEqRmlyc3Qu
CisgICAgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZzsK
KyAgICBpZiAoIWF0dHJzLmFscGhhKQorICAgICAgICBiaXRtYXBJbmZvIHw9IGtDR0ltYWdlQWxw
aGFOb25lU2tpcExhc3Q7CisgICAgZWxzZSBpZiAoYXR0cnMucHJlbXVsdGlwbGllZEFscGhhKQor
ICAgICAgICBiaXRtYXBJbmZvIHw9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdDsKKyAg
ICBlbHNlCisgICAgICAgIGJpdG1hcEluZm8gfD0ga0NHSW1hZ2VBbHBoYUxhc3Q7CisKKyAgICBh
dXRvIGltYWdlU2l6ZSA9IGltYWdlRGF0YS0+c2l6ZSgpOwogICAgIGludCByb3dCeXRlcyA9IGlt
YWdlU2l6ZS53aWR0aCgpICogNDsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlcjsKLQotICAgIGlmIChjb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsK
LSAgICAgICAgdW5zaWduZWQgY2hhciogY29waWVkUGl4ZWxzOwotCi0gICAgICAgIGlmICghdHJ5
RmFzdENhbGxvYyhpbWFnZVNpemUuaGVpZ2h0KCksIHJvd0J5dGVzKS5nZXRWYWx1ZShjb3BpZWRQ
aXhlbHMpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1lbWNweShjb3BpZWRQaXhl
bHMsIGltYWdlUGl4ZWxzLCByb3dCeXRlcyAqIGltYWdlU2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICAg
ICAgc2l6ZV90IGRhdGFTaXplID0gcm93Qnl0ZXMgKiBpbWFnZVNpemUuaGVpZ2h0KCk7Ci0gICAg
ICAgIHZlcmlmeUltYWdlQnVmZmVySXNCaWdFbm91Z2goY29waWVkUGl4ZWxzLCBkYXRhU2l6ZSk7
Ci0gICAgICAgIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRo
RGF0YSgwLCBjb3BpZWRQaXhlbHMsIGRhdGFTaXplLCByZWxlYXNlSW1hZ2VEYXRhKSk7Ci0gICAg
fSBlbHNlIHsKICAgICAgICAgc2l6ZV90IGRhdGFTaXplID0gcm93Qnl0ZXMgKiBpbWFnZVNpemUu
aGVpZ2h0KCk7CisgICAgdWludDhfdCogaW1hZ2VQaXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+
ZGF0YSgpOwogICAgICAgICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGltYWdlUGl4ZWxz
LCBkYXRhU2l6ZSk7Ci0gICAgICAgIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlk
ZXJDcmVhdGVXaXRoRGF0YSgwLCBpbWFnZVBpeGVscywgZGF0YVNpemUsIDApKTsKLSAgICB9Cisg
ICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoJmltYWdlRGF0YS5sZWFrUmVmKCksIGltYWdlUGl4
ZWxzLCBkYXRhU2l6ZSwgcmVsZWFzZUltYWdlRGF0YSkpOwogCi0gICAgYXV0byBpbWFnZSA9IE5h
dGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCByb3dCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYo
KSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMy
SG9zdCwKKyAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1h
Z2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIHJv
d0J5dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBiaXRtYXBJbmZvLAogICAgICAgICBkYXRhUHJv
dmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkpOwogCiAg
ICAgLy8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRoZSBjYW52YXMncyBjb250ZW50IHRvIGJlIHJl
c2l6ZWQgb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5oCmluZGV4IGQ1ZTQxNjhlMzFiZWI4ZjJiYjc3NGNmN2RlMWU5NWY4ZDBiOTk2MTkuLjRk
ZWQ4ZTVmOTQ5ODI2NzE3NDZjOWU3ZjUzM2FhYzZiMThhYzZiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaApAQCAtNjMsNiArNjMsMTAg
QEAgcHVibGljOgogICAgIC8vIFByZXBhcmVzIHRoZSB0YXJnZXQgZm9yIGRpc3BsYXkgd2l0aCBh
IGNvbnRlbnRzIGJ1ZmZlci4KICAgICB2aXJ0dWFsIHZvaWQgcHJlc2VudChCdWZmZXIpID0gMDsK
IAorICAgIC8vIFJldHVybnMgdGhlIG1vc3QgcmVjZW50IHByZXNlbnRlZCBkaXNwbGF5IGJ1ZmZl
ci4gVGhlIHJlZmVyZW5jZSBpcyB2YWxpZCB1bnRpbAorICAgIC8vIG5leHQgcHJlc2VudCwgcmVj
eWNsZUJ1ZmZlciBvciBkZXRhY2hDbGllbnQgY2FsbC4KKyAgICB2aXJ0dWFsIGNvbnN0IEJ1ZmZl
ciYgZGlzcGxheUJ1ZmZlcigpIGNvbnN0ID0gMDsKKwogICAgIC8vIERldGFjaGVzIHRoZSBjbGll
bnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRs
ZS4KICAgICAvLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJlZW4gc3VibWl0dGVkLCBy
ZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUgY2FsbGluZwogICAgIC8v
IHRoaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCA4
OTFlOTc4M2UyNWZkNDc4NGUzNjg2M2IzZTZlNjgyYzI5NWNiNDI0Li5kYmU5YzA1ZDMyOGI2NWMy
NzVlYzk1MTIwNDYwMjRmM2RhNDBjODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0KQEAgLTczMCw2ICs3MzAsMzcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsK
IH0KIAorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21w
b3NpdGVkUmVzdWx0cygpCit7CisgICAgYXV0byYgZGlzcGxheUJ1ZmZlciA9IG1fc3dhcENoYWlu
LT5kaXNwbGF5QnVmZmVyKCk7CisgICAgaWYgKCFkaXNwbGF5QnVmZmVyLnN1cmZhY2UgfHwgIWRp
c3BsYXlCdWZmZXIuaGFuZGxlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoZGlz
cGxheUJ1ZmZlci5zdXJmYWNlLT5zaXplKCkgIT0gZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gTm90ZTogV2UgYXJlIHVzaW5nIEdM
IHRvIHJlYWQgdGhlIElPU3VyZmFjZS4gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywgdGhlcmUgYXJl
IG5vIGNvbnZpbmllbnQKKyAgICAvLyBmdW5jdGlvbnMgdG8gY29udmVydCB0aGUgSU9TdXJmYWNl
IHBpeGVsIGRhdGEgdG8gSW1hZ2VEYXRhLiBUaGUgaW1hZ2UgZGF0YSBlbmRzIHVwIGJlaW5nCisg
ICAgLy8gZHJhd24gdG8gYSBJbWFnZUJ1ZmZlciwgYnV0IGF0IHRoZSB0aW1lIHRoZXJlJ3Mgbm8g
ZnVuY3Rpb25zIHRvIGNvbnN0cnVjdCBhIE5hdGl2ZUltYWdlCisgICAgLy8gb3V0IG9mIGFuIElP
U3VyZmFjZSBpbiBzdWNoIGEgd2F5IHRoYXQgZHJhd2luZyB0aGUgTmF0aXZlSW1hZ2Ugd291bGQg
YmUgZ3VhcmFudGVlZCBsZWF2ZQorICAgIC8vIHRoZSBJT1N1cmZhY2UgYmUgdW5yZWZlbmNlZCBh
ZnRlciB0aGUgZHJhdyBjYWxsIGZpbmlzaGVzLgorICAgIFNjb3BlZFRleHR1cmUgdGV4dHVyZTsK
KyAgICBHQ0dMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQo
KTsKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJhd2lu
Z0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeSgpLCB0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0
ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7CisgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVU
YXJnZXQsIHRleHR1cmUpOworICAgIGlmICghRUdMX0JpbmRUZXhJbWFnZShtX2Rpc3BsYXlPYmos
IGRpc3BsYXlCdWZmZXIuaGFuZGxlLCBFR0xfQkFDS19CVUZGRVIpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgU2NvcGVkRnJhbWVidWZmZXIgZmJvOworICAg
IFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIGZib0JpbmRpbmcobV9pc0Zvcldl
YkdMMiwgbV9zdGF0ZS5ib3VuZFJlYWRGQk8sIGZibyk7CisgICAgZ2w6OkZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZVRhcmdl
dCwgdGV4dHVyZSwgMCk7CisgICAgQVNTRVJUKGdsOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdM
X0ZSQU1FQlVGRkVSKSA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSk7CisKKyAgICBhdXRvIHJl
c3VsdCA9IHJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKTsKKworICAgIEVHTEJvb2xlYW4gcmVs
ZWFzZU9rID0gRUdMX1JlbGVhc2VUZXhJbWFnZShtX2Rpc3BsYXlPYmosIGRpc3BsYXlCdWZmZXIu
aGFuZGxlLCBFR0xfQkFDS19CVUZGRVIpOworICAgIEFTU0VSVF9VTlVTRUQocmVsZWFzZU9rLCBy
ZWxlYXNlT2spOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJHTExheWVyLm1tCmluZGV4IDM4NTk3ZTRhOGY2MzNhNWVlNWRiNzQ5MzMwMjJkYzIzN2Zl
N2U0N2MuLjAzMTM4ZWYxNDMwOTg4ZDcxNWE5OGI3Nzc3ZDNhNTM4OGEzMjk5YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5t
bQpAQCAtMzksNiArMzksMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMTGF5ZXJTd2Fw
Q2hhaW4oV2ViR0xMYXllciogbGF5ZXIpICA6IG1fbGF5ZXIobGF5ZXIpIHsgfTsKICAgICB+V2Vi
R0xMYXllclN3YXBDaGFpbigpIG92ZXJyaWRlID0gZGVmYXVsdDsKICAgICB2b2lkIHByZXNlbnQo
QnVmZmVyKSBvdmVycmlkZTsKKyAgICBjb25zdCBCdWZmZXImIGRpc3BsYXlCdWZmZXIoKSBjb25z
dCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlcjsKKyAgICB9
CiAgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYg
KG1fc3BhcmVCdWZmZXIuc3VyZmFjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5jcHAKaW5kZXggMDY5ZDI4NmNlNGViYTQ4MjllMGM3MzgzZTJmM2U4YmVlNzJmZTI5Mi4uMmZl
Yjc0YzJmYWQxYjJhNjJmZjYwYzYxMjVkMWI4ZmNjZjVkYjU2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaWYgRU5BQkxFKFdFQkdM
KQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
KyNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTk0LDYgKzE5Niw1MCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB9CiAjZW5kaWYKIAordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGltYWdlRGF0YSA9IHJlYWRSZW5kZXJp
bmdSZXN1bHRzKCk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBw
YWludFRvQ2FudmFzKGltYWdlRGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBpbWFnZUJ1ZmZlci0+YmFj
a2VuZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciogaW1hZ2VCdWZmZXIpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGlmIChnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gaW1hZ2VEYXRhID0gcmVhZENvbXBvc2l0ZWRS
ZXN1bHRzKCk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBwYWlu
dFRvQ2FudmFzKGltYWdlRGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBpbWFnZUJ1ZmZlci0+YmFja2Vu
ZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0
YSgpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgaWYgKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxw
aGEgd291bGQgaW52b2x2ZSB1bnByZW11bHRpcGx5aW5nLCB3aGljaCBpcworICAgIC8vIGxvc3N5
LgorICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7Cit9
CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGY1MjRkZTky
ZGNkOWE1OThiMGZiZWY4ZDMzYjljNDQwOWI4Y2QxYjAuLjc4MDk2ZTJlYjA4NzZmOTUyN2M4NTQ3
OTBkMWFmYTczNTEyMGM4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBA
IC00MjgsOSArNDI4LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCiAgICAgLy8gSGVscGVy
IG1ldGhvZHMuCi0KLSAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciog
aW1hZ2VQaXhlbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50U2l6ZSYgY2Fu
dmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7Ci0KICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdl
ZCgpIGZpbmFsOwogICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOwogICAgIGJv
b2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CkBAIC00NTAsNyArNDQ3LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciopIGZpbmFsOwogICAgIFJlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
SW1hZ2VEYXRhKCkgZmluYWw7Ci0gICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52
YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b0NhbnZhcyhJbWFnZUJ1ZmZlciopIGZpbmFsOwogCiAjaWYgVVNFKE9QRU5HTCkgJiYgRU5BQkxF
KFdFQkdMMikKICAgICB2b2lkIHByaW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCk7CkBAIC01
MzAsMTAgKzUyNywxMSBAQCBwcml2YXRlOgogICAgIC8vIERpZCB0aGUgbW9zdCByZWNlbnQgZHJh
d2luZyBvcGVyYXRpb24gbGVhdmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0YXRlPwogICAg
IHZvaWQgY2hlY2tHUFVTdGF0dXMoKTsKIAotICAgIC8vIFJlYWQgcmVuZGVyaW5nIHJlc3VsdHMg
aW50byBhIHBpeGVsIGFycmF5IHdpdGggdGhlIHNhbWUgZm9ybWF0IGFzIHRoZQotICAgIC8vIGJh
Y2tidWZmZXIuCi0gICAgdm9pZCByZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25lZCBjaGFyKiBw
aXhlbHMsIGludCBwaXhlbHNTaXplKTsKLSAgICB2b2lkIHJlYWRQaXhlbHNBbmRDb252ZXJ0VG9C
R1JBSWZOZWNlc3NhcnkoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2ln
bmVkIGNoYXIqIHBpeGVscyk7CisKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiByZWFkUmVuZGVyaW5n
UmVzdWx0cygpOworICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlYWRDb21wb3NpdGVkUmVzdWx0cygp
OworICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKTsKKyAg
ICB2b2lkIHBhaW50VG9DYW52YXMoUmVmPEltYWdlRGF0YT4mJiwgY29uc3QgSW50U2l6ZSYgY2Fu
dmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBib29sIHJlc2hhcGVGQk9zKGNvbnN0
IEludFNpemUmKTsKICAgICB2b2lkIHByZXBhcmVUZXh0dXJlSW1wbCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCBmNDE0ZjljOTYzNGQ2MWI4ZDkw
MTVkNWE2YWZhNTI3Y2MzNDJiZThmLi4yOWRmN2M5MDEzY2I5MTU5MzRhYmFiODk0ZmFiMjZjOWQ3
ZmU3NzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2lmIEVOQUJMRShXRUJHTCkgJiYgVVNFKE9QRU5HTCkKIAogI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgpAQCAtNjEsMzcgKzYyLDI2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vz
c2FyeShpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciog
cGl4ZWxzKQorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQ
aXhlbHNGb3JQYWludFJlc3VsdHMoKQogewotICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmli
dXRlcygpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoZ2V0SW50ZXJu
YWxGcmFtZWJ1ZmZlclNpemUoKSk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgR0xpbnQgcGFja0FsaWdubWVudCA9IDQ7CisgICAgYm9vbCBtdXN0
UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSBmYWxzZTsKKyAgICA6OmdsR2V0SW50ZWdlcnYoR0xfUEFD
S19BTElHTk1FTlQsICZwYWNrQWxpZ25tZW50KTsKKyAgICBpZiAocGFja0FsaWdubWVudCA+IDQp
IHsKKyAgICAgICAgOjpnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05NRU5ULCA0KTsKKyAgICAg
ICAgbXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gdHJ1ZTsKKyAgICB9CiAKLSAgICAvLyBOVklE
SUEgZHJpdmVycyBoYXZlIGEgYnVnIHdoZXJlIGNhbGxpbmcgcmVhZFBpeGVscyBpbiBCR1JBIGNh
biByZXR1cm4gdGhlIHdyb25nIHZhbHVlcyBmb3IgdGhlIGFscGhhIGNoYW5uZWwgd2hlbiB0aGUg
YWxwaGEgaXMgb2ZmIGZvciB0aGUgY29udGV4dC4KLSAgICBpZiAoIWF0dHJzLmFscGhhICYmIGdl
dEV4dGVuc2lvbnMoKS5pc05WSURJQSgpKSB7Ci0gICAgICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHks
IHdpZHRoLCBoZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7Ci0jaWYg
VVNFKEFDQ0VMRVJBVEUpCi0gICAgICAgIHZJbWFnZV9CdWZmZXIgc3JjOwotICAgICAgICBzcmMu
aGVpZ2h0ID0gaGVpZ2h0OwotICAgICAgICBzcmMud2lkdGggPSB3aWR0aDsKLSAgICAgICAgc3Jj
LnJvd0J5dGVzID0gd2lkdGggKiA0OwotICAgICAgICBzcmMuZGF0YSA9IHBpeGVsczsKLQotICAg
ICAgICB2SW1hZ2VfQnVmZmVyIGRlc3Q7Ci0gICAgICAgIGRlc3QuaGVpZ2h0ID0gaGVpZ2h0Owot
ICAgICAgICBkZXN0LndpZHRoID0gd2lkdGg7Ci0gICAgICAgIGRlc3Qucm93Qnl0ZXMgPSB3aWR0
aCAqIDQ7Ci0gICAgICAgIGRlc3QuZGF0YSA9IHBpeGVsczsKLQotICAgICAgICAvLyBTd2FwIHBp
eGVsIGNoYW5uZWxzIGZyb20gUkdCQSB0byBCR1JBLgotICAgICAgICBjb25zdCB1aW50OF90IG1h
cFs0XSA9IHsgMiwgMSwgMCwgMyB9OwotICAgICAgICB2SW1hZ2VQZXJtdXRlQ2hhbm5lbHNfQVJH
Qjg4ODgoJnNyYywgJmRlc3QsIG1hcCwga3ZJbWFnZU5vRmxhZ3MpOwotI2Vsc2UKLSAgICAgICAg
aW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICAgICAgc3RkOjpzd2FwKHBpeGVs
c1tpXSwgcGl4ZWxzW2kgKyAyXSk7Ci0jZW5kaWYKLSAgICB9IGVsc2UKLSAgICAgICAgOjpnbFJl
YWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgR0xfQkdSQSwgR0xfVU5TSUdORURfSU5UXzhf
OF84XzhfUkVWLCBwaXhlbHMpOworICAgIDo6Z2xSZWFkUGl4ZWxzKDAsIDAsIGltYWdlRGF0YS0+
d2lkdGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
aW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSk7CisKKyAgICBpZiAobXVzdFJlc3RvcmVQYWNrQWxp
Z25tZW50KQorICAgICAgICA6OmdsUGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIHBhY2tB
bGlnbm1lbnQpOwogCisgICAgcmV0dXJuIGltYWdlRGF0YTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENv
bW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDJkZTE4NWE2NjgxMzBhMzYyYzEyNzY3
ZjM4M2Y1N2YxMzQ5ZGQ0ODEuLmZjZGI3MTFhNmY4Y2IwNTllMDBiNzRjZDBjY2I3YzlhY2U5MGRh
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcApA
QCAtMTM3LDY0ICsxMzcsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0
ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaQogICAgIH0KIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQotewotICAgIENoZWNrZWQ8aW50LCBSZWNvcmRP
dmVyZmxvdz4gcm93Qnl0ZXMgPSBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+KG1fY3VycmVu
dFdpZHRoKSAqIDQ7Ci0gICAgaWYgKHJvd0J5dGVzLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgQ2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PiB0b3RhbEJ5dGVzQ2hl
Y2tlZCA9IHJvd0J5dGVzICogbV9jdXJyZW50SGVpZ2h0OwotICAgIGlmICh0b3RhbEJ5dGVzQ2hl
Y2tlZC5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpbnQgdG90YWxCeXRl
cyA9IHRvdGFsQnl0ZXNDaGVja2VkLnVuc2FmZUdldCgpOwotCi0gICAgYXV0byBwaXhlbHMgPSBt
YWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4odG90YWxCeXRlcyk7Ci0gICAgaWYgKCFwaXhl
bHMpCi0gICAgICAgIHJldHVybjsKLQotICAgIHJlYWRSZW5kZXJpbmdSZXN1bHRzKHBpeGVscy5n
ZXQoKSwgdG90YWxCeXRlcyk7Ci0KLSAgICBpZiAoIWNvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVs
dGlwbGllZEFscGhhKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsg
aSArPSA0KSB7Ci0gICAgICAgICAgICAvLyBQcmVtdWx0aXBseSBhbHBoYS4KLSAgICAgICAgICAg
IHBpeGVsc1tpICsgMF0gPSBzdGQ6Om1pbigyNTUsIHBpeGVsc1tpICsgMF0gKiBwaXhlbHNbaSAr
IDNdIC8gMjU1KTsKLSAgICAgICAgICAgIHBpeGVsc1tpICsgMV0gPSBzdGQ6Om1pbigyNTUsIHBp
eGVsc1tpICsgMV0gKiBwaXhlbHNbaSArIDNdIC8gMjU1KTsKLSAgICAgICAgICAgIHBpeGVsc1tp
ICsgMl0gPSBzdGQ6Om1pbigyNTUsIHBpeGVsc1tpICsgMl0gKiBwaXhlbHNbaSArIDNdIC8gMjU1
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHBhaW50VG9DYW52YXMocGl4ZWxzLmdldCgpLCBJ
bnRTaXplKG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpLCBpbWFnZUJ1ZmZlci0+YmFj
a2VuZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Ci19Ci0KLWJvb2wgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciopCi17Ci0gICAgLy8gTm90IG5lZWRlZCBhdCB0aGUgbW9tZW50LCBzbyByZXR1cm4gdGhhdCBu
b3RoaW5nIHdhcyBkb25lLgotICAgIHJldHVybiBmYWxzZTsKLX0KLQotUmVmUHRyPEltYWdlRGF0
YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VE
YXRhKCkKLXsKLSAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxwaGEgd291bGQgaW52b2x2
ZSB1bnByZW11bHRpcGx5aW5nLCB3aGljaCBpcwotICAgIC8vIGxvc3N5LgotICAgIGlmIChjb250
ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBhdXRvIGltYWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKEludFNpemUobV9j
dXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCkpOwotICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVs
cyA9IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCk7Ci0gICAgQ2hlY2tlZDxpbnQsIFJlY29yZE92
ZXJmbG93PiB0b3RhbEJ5dGVzQ2hlY2tlZCA9IDQgKiBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZs
b3c+KG1fY3VycmVudFdpZHRoKSAqIENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4obV9jdXJy
ZW50SGVpZ2h0KTsKLSAgICBpZiAodG90YWxCeXRlc0NoZWNrZWQuaGFzT3ZlcmZsb3dlZCgpKQot
ICAgICAgICByZXR1cm4gaW1hZ2VEYXRhOwotICAgIGludCB0b3RhbEJ5dGVzID0gdG90YWxCeXRl
c0NoZWNrZWQudW5zYWZlR2V0KCk7Ci0KLSAgICByZWFkUmVuZGVyaW5nUmVzdWx0cyhwaXhlbHMs
IHRvdGFsQnl0ZXMpOwotCi0gICAgLy8gQ29udmVydCB0byBSR0JBLgotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICBzdGQ6OnN3YXAocGl4ZWxzW2ld
LCBwaXhlbHNbaSArIDJdKTsKLQotICAgIHJldHVybiBpbWFnZURhdGE7Ci19Ci0KIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVUZXh0dXJlKCkKIHsKICAgICBpZiAobV9sYXll
ckNvbXBvc2l0ZWQpCkBAIC0yMzYsMTUgKzE3OCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnByZXBhcmVUZXh0dXJlKCkKICAgICA6OmdsRmx1c2goKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHModW5zaWduZWQgY2hhciAq
cGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSkKK1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cygpCiB7Ci0gICAgaWYgKHBpeGVsc1NpemUg
PCBtX2N1cnJlbnRXaWR0aCAqIG1fY3VycmVudEhlaWdodCAqIDQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotCiAg
ICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwogICAgIGlmIChjb250ZXh0QXR0cmlidXRl
cygpLmFudGlhbGlhcykgewogICAgICAgICByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5
KCk7CkBAIC0yNTcsMjIgKzE5MiwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25lZCBjaGFyICpwaXhlbHMsIGludCBwaQogICAgICAg
ICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZG
RVIsIG1fZmJvKTsKICAgICAgICAgfQogICAgIH0KLQotICAgIEdMaW50IHBhY2tBbGlnbm1lbnQg
PSA0OwotICAgIGJvb2wgbXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gZmFsc2U7Ci0gICAgOjpn
bEdldEludGVnZXJ2KEdMX1BBQ0tfQUxJR05NRU5ULCAmcGFja0FsaWdubWVudCk7Ci0gICAgaWYg
KHBhY2tBbGlnbm1lbnQgPiA0KSB7Ci0gICAgICAgIDo6Z2xQaXhlbFN0b3JlaShHTF9QQUNLX0FM
SUdOTUVOVCwgNCk7Ci0gICAgICAgIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IHRydWU7Ci0g
ICAgfQotCi0gICAgcmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeSgwLCAwLCBt
X2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBwaXhlbHMpOwotCi0gICAgaWYgKG11c3RS
ZXN0b3JlUGFja0FsaWdubWVudCkKLSAgICAgICAgOjpnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJ
R05NRU5ULCBwYWNrQWxpZ25tZW50KTsKLQorICAgIGF1dG8gcmVzdWx0ID0gcmVhZFBpeGVsc0Zv
clBhaW50UmVzdWx0cygpOwogICAgIGlmIChtdXN0UmVzdG9yZUZCTykKICAgICAgICAgOjpnbEJp
bmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1fc3RhdGUu
Ym91bmREcmF3RkJPKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCAwZDQ3NmMyMjlkNmY2ZWU5NmNjZjk5
M2Q4MWQ1YzNkZDY1MjE1ZTQ4Li45MzlmYjkzZTFjMjEzNDQ5ZDA3ZTAzZTVjYmU4MGFhODFlMThl
ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC02NCwx
NCArNjQsMjYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwKICAgICAgICAgOjpnbEJpbmRGcmFt
ZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZOZWNlc3Nh
cnkoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBp
eGVscykKK1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4
ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMpOwotICAgIGludCB0b3Rh
bEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgIGlmIChpc0dMRVMyQ29tcGxpYW50KCkp
IHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAg
ICAgICAgICBzdGQ6OnN3YXAocGl4ZWxzW2ldLCBwaXhlbHNbaSArIDJdKTsgLy8gQ29udmVydCB0
byBCR1JBLgorICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoZ2V0SW50ZXJu
YWxGcmFtZWJ1ZmZlclNpemUoKSk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgR0xpbnQgcGFja0FsaWdubWVudCA9IDQ7CisgICAgYm9vbCBtdXN0
UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSBmYWxzZTsKKyAgICA6OmdsR2V0SW50ZWdlcnYoR0xfUEFD
S19BTElHTk1FTlQsICZwYWNrQWxpZ25tZW50KTsKKyAgICBpZiAocGFja0FsaWdubWVudCA+IDQp
IHsKKyAgICAgICAgOjpnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05NRU5ULCA0KTsKKyAgICAg
ICAgbXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gdHJ1ZTsKICAgICB9CisKKyAgICA6OmdsUmVh
ZFBpeGVscygwLCAwLCBpbWFnZURhdGEtPndpZHRoKCksIGltYWdlRGF0YS0+aGVpZ2h0KCksIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCkpOworCisg
ICAgaWYgKG11c3RSZXN0b3JlUGFja0FsaWdubWVudCkKKyAgICAgICAgOjpnbFBpeGVsU3RvcmVp
KEdMX1BBQ0tfQUxJR05NRU5ULCBwYWNrQWxpZ25tZW50KTsKKworICAgIHJldHVybiBpbWFnZURh
dGE7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0
IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXgg
ZTdjNDBjOTg1Y2I3ZDI3MjI4NjlhNWRmZjk2OTE5NDcwNzdhZjQ2Yy4uOGUyZDFmYzY1MTg2Mjgz
OTVlOTc0MWM0NGU3YWM4NTFiMDhlZjYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hLmNwcApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgLy8gR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4gb3ZlcnJpZGVzLgogICAgIEJ1ZmZlciByZWN5Y2xlQnVmZmVy
KCkgZmluYWw7CiAgICAgdm9pZCBwcmVzZW50KEJ1ZmZlcikgZmluYWw7CisgICAgY29uc3QgQnVm
ZmVyJiBkaXNwbGF5QnVmZmVyKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCogZGV0YWNoQ2xpZW50
KCkgZmluYWw7CiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluOjpCdWZmZXIgbV9kaXNwbGF5QnVmZmVyOwpAQCAtNzYsNiArNzcsMTEgQEAgdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVzZW50KEJ1ZmZlciBidWZmZXIpCiAgICAgbV9k
aXNwbGF5QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogfQogCitjb25zdCBHcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hOjpkaXNwbGF5QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kaXNwbGF5QnVmZmVy
OworfQorCiB2b2lkKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpkZXRhY2hDbGllbnQo
KQogewogICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZGlzcGxheUJ1ZmZlci5oYW5kbGUsIG51
bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXgg
MzRhMDZmYjAwNzZhY2QzZmQzMmIzYTRiNmIwOWQ2OGQwMjdiYjU4OC4uNTNkYjYxNTBjMWQ4ZWM4
MjVlMjNhYmVmNjUxZTViM2I5Nzk5MjQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuY3BwCkBAIC0xMjEsNiArMTIxLDExIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIq
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmgKaW5kZXggZDk5ZWRhMjlmNmRiNWUxODE5NzEzMTc4ZjJhYTUzMWI0ZjVkZDZlMC4uYTE0
MzkzNDdkODllMGFkYmYwOGE0MmE0MjU5MWJiYjNkYmViMjFlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXIqKSBmaW5hbDsKICAgICBSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgp
IGZpbmFsOworICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6
OkltYWdlQnVmZmVyKikgZmluYWw7CiAKICAgICAvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRl
ZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJn
bCBzY3JpcHQuCiAgICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWw7Cg==
</data>
<flag name="commit-queue"
          id="433937"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416414</attachid>
            <date>2020-12-17 04:07:06 -0800</date>
            <delta_ts>2020-12-17 04:20:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219946-20201217140704.patch</filename>
            <type>text/plain</type>
            <size>63838</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMwMGNiMzk4NTY1MjRm
YzAxZWY4N2I5ZDkxYWQ4NWRjZmU3YTY5ZS4uN2IyZTM4NjdmYjQ1ZWUyMzI3MmRhNzZkMmM1ZmI5
YTU5OTk4NGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAyMC0xMi0xNyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04g
KHIyNjgzODYpOiBTbmFwc2hvdHMgb2YgV2ViR0wgY29udGVudCBpbiB0aGUgdGFiIHBpY2tlciBk
b24ndCB3b3JrIChibGFjayBtYXAgb24gR29vZ2xlIE1hcHMpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcyMDEzNzg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZpeCBjYXNlIHdoZXJlIFdlYkdMIHdvdWxkIGZpcnN0IGJlIGRpc3BsYXllZCB3aXRo
IGhhcmR3YXJlIGNvZGUgcGF0aAorICAgICAgICBhbmQgdGhlbiBkaXNwbGF5ZWQgd2l0aCBzb2Z0
d2FyZSBjb2RlIHBhdGggKHBhaW50aW5nIGZyb20gdGhlIHBhaW50CisgICAgICAgIHRyZWUpLiBG
b3JtZXIgaGFwcGVucyB3aGVuIHVzZXIgbG9va3MgYXQgdGhlIHBhZ2UgYW5kIGxhdHRlciBoYXBw
ZW5zCisgICAgICAgIHdoZW4gcHJpbnRpbmcgb3Igd2hlbiBTYWZhcmkgdGFrZXMgYSBzbmFwc2hv
dC4KKworICAgICAgICBUaGlzIGlzIG5vdCBhIHJlYWwgcmVncmVzc2lvbiBvZiByMjY4Mzg2LiBQ
cmlvciB0byB0aGF0LCB0aGUgc29mdHdhcmUKKyAgICAgICAgZGlzcGxheSB3b3VsZCBoYXZlIHVz
ZWQgdW5pbml0aWFsaXplZCBJT1N1cmZhY2UgY29udGVudHMgb3IgY29udGVudHMgb2YKKyAgICAg
ICAgMS0yIGZyYW1lcyBwcmlvciBhbmQgd291bGQgbGVhdmUgdGhlIGhhcmR3YXJlIGRpc3BsYXkg
YnVmZmVyIG5vdAorICAgICAgICB1cGRhdGVkLgorCisgICAgICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaXMgdXNlZCBmb3IgdHdvCisg
ICAgICAgIHB1cnBvc2VzOgorICAgICAgICAgIDEpIEltYWdlIGV4dHJhY3Rpb24gdXNlcywgc3Vj
aCBhcyB0b0RhdGEoKSBvcgorICAgICAgICAgICAgIGNvbnN0cnVjdGluZyBhbiBJbWFnZSBvdXQg
b2YgdGhlIGNvbnRlbnRzLgorICAgICAgICAgIDIpIFBhaW50aW5nIHRoZSByZW5kZXJpbmcgdG8g
dGhlIGRvY3VtZW50IGR1cmluZyBzb2Z0d2FyZSBkaXNwbGF5LgorCisgICAgICAgIFRoZSAxKSBj
YXNlIHVzZXMgYWx3YXlzIHRoZSBkcmF3aW5nIGJ1ZmZlci4KKworICAgICAgICBUaGUgMikgY2Fz
ZSBwcmVzZW50cyB0aGUgZHJhd2luZyBidWZmZXIgYXMgdGhlIG5ldyBkaXNwbGF5IGJ1ZmZlciBp
ZgorICAgICAgICB0aGVyZSBhcmUgY2hhbmdlcyB0byB0aGUgZHJhd2luZyBidWZmZXIgYW5kIHVz
ZXMgdGhlIHBvdGVudGlhbGx5IG5ldworICAgICAgICBkaXNwbGF5IGJ1ZmZlciB0byBkaXNwbGF5
LgorCisgICAgICAgIEZvciAyRCBjYW52YXMsIHRoZXNlIHR3byBjYXNlcyBhcmUgdGhlIHNhbWUg
Y2FzZS4gRm9yIFdlYkdMIHRoZXkgYXJlCisgICAgICAgIGRpZmZlcmVudC4KKworICAgICAgICBU
aGUgZGlzcGxheSBpcyBkZXN0cnVjdGl2ZSBmb3IgV2ViR0wgZHJhd2luZyBidWZmZXIgd2hlbgor
ICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPT0gZmFsc2UuIFRoaXMgbWVhbnMgdGhhdCBp
ZiBoYXJkd2FyZSBkaXNwbGF5IGhhcworICAgICAgICBoYXBwZW5lZCwgd2UgbXVzdCByZWFkIHRo
ZSBkaXNwbGF5IGJ1ZmZlciBkdXJpbmcgY2FzZSAyLiBUaGlzIGNvZGUgd2FzCisgICAgICAgIG1p
c3NpbmcsIHNvIHRoZSBzY2VuYXJpbyBjb3VsZCBub3QgaGF2ZSBldmVyIHdvcmtlZC4KKworICAg
ICAgICBUaGUgcHJldmlvdXMgY29kZSB0cmllZCB0byB3b3JrYXJvdW5kIHRoaXMgYnkgdGhlCisg
ICAgICAgIFdlYkdMR3JhcGhpY3NDb250ZXh0QmFzZSB0byBkZXRlY3Qgd2hhdCB0aGUgb3duZXIg
aW50ZW5kZWQgd2l0aCB0aGUKKyAgICAgICAgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMs
IHRoZW4gc2tpcCB0aGUgcG90ZW50aWFsIGRyYXdpbmcgYnVmZmVyCisgICAgICAgIGNsZWFyLCBy
ZWFkIHRoZSBkcmF3aW5nIGJ1ZmZlciBhbmQgcHV0IHRoYXQgZGF0YSB0byB0aGUgInByZXNlbnRh
dGlvbgorICAgICAgICBjb3B5IiBvZiB0aGUgSFRNTEVsZW1lbnQuIFRoaXMgaXMgbm90IG9rLCBh
cyB0aGUgdW5jbGVhcmVkIGRyYXdpbmcKKyAgICAgICAgYnVmZmVyIGhhcyBub24tZGV0ZXJtaW5p
c3RpYyBjb250ZW50cyBpbiBjYXNlIHRoZSBjb250ZXh0IGhhcyBkaXNwbGF5ZWQKKyAgICAgICAg
YW5kIHRoZSBjbGllbnQgaGFzIG5vdCBkcmF3biBuZXcgY29udGVudCB0byB0aGUgZHJhd2luZyBi
dWZmZXIuCisKKyAgICAgICAgRml4IGJ5IHJlbW92aW5nIHRoZSAicHJlc2VudGF0aW9uIGNvcHki
IG9mIHRoZSBIVE1MQ2FudmFzLiBUaGUKKyAgICAgICAgcHJlc2VudGF0aW9uIGltYWdlIGNhbiBh
bHdheXMgYmUgZHJhd24gdG8gdGhlIENhbnZhc0Jhc2U6OmJ1ZmZlcigpOgorICAgICAgICAgLSBU
aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGlzIHRoZSBwcmVzZW50YXRpb24gaW1h
Z2UgaWYgdGhlCisgICAgICAgICAgIGNvbnRleHQgaGFzIG5vdCBjaGFuZ2VkIHNpbmNlIHVwZGF0
aW5nIHRoZSBidWZmZXIgd2l0aCBlaXRoZXIgZHJhd2luZworICAgICAgICAgICBidWZmZXIgb3Ig
cHJldmlvdXMgZGlzcGxheSBidWZmZXIuCisgICAgICAgICAtIElmIHRoZSBjb250ZXh0IGhhcyBj
aGFuZ2VkLCB3ZSBtdXN0IHByZXNlbnQgYW5kIHB1dCB0aGUgbmV3IGRpc3BsYXkKKyAgICAgICAg
ICAgYnVmZmVyIHRvIHRoZSBDYW52YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgLSBUaGlzIGlz
IGFsc28gY29ycmVjdCBjb250ZW50cyBmb3IgdGhlIHBvdGVudGlhbCBuZXh0IGltYWdlIGV4dHJh
Y3Rpb24KKyAgICAgICAgICAgdXNlcywgdXAgdG8gYSBwb2ludCB3aGVuIGNvbnRleHQgY2hhbmdl
cy4KKyAgICAgICAgIC0gSWYgdGhlIGNvbnRleHQgY2hhbmdlcyBiZWZvcmUgYW4gaW1hZ2UgZXh0
cmFjdGlvbiB1c2UsIENhbnZhc0Jhc2U6OmJ1ZmZlcigpIGlzCisgICAgICAgICAgIHVwZGF0ZWQg
d2l0aCB0aGUgbm9ybWFsIGxvZ2ljLCB0aGUgc2FtZSBhcyB3aGF0IGhhcHBlbnMgd2hlbiBDYW52
YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgICBpcyB1cGRhdGVkIGJldHdlZW4gdHdvIGltYWdl
IGV4dHJhY3Rpb24gdXNlcy4KKworICAgICAgICBQcmlvciB0byB0aGlzLCB0aGVyZSB3YXMgYW4g
dW5uZWVkZWQgYW5kIGluY29ycmVjdGx5IGltcGxlbWVudGVkCisgICAgICAgIEdQVUNhbnZhc0Nv
bnRleHQ6Om1hcmtMYXllckNvbXBvc2l0ZWQoKS4gVGhlIHNlcXVlbmNlIHdvdWxkIGJlOgorCisg
ICAgICAgIEhUTUxDYW52YXNFbGVtZW50OjpwYWludCgpOgorICAgICAgICAgICBjYW52YXNDb250
ZXh0KCkucGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoYnVmZmVyKCkpOworICAgICAgICAg
ICBjb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlcigpKTsKKyAgICAgICAgICAgY2FudmFz
Q29udGV4dCgpLm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKworICAgICAgICBUaGUgbWFya0xheWVy
Q29tcG9zaXRlZCgpIHdvdWxkIGluY29ycmVjdGx5IG1hcmsgdGhlIFdlYkdMIGNvbnRleHQgY29t
cG9zaXRpbmcKKyAgICAgICAgYmVpbmcgZG9uZSwgYnV0IHRoZXJlIHdhcyBubyBjb21wb3NpdGlu
ZyBhY3R1YWxseSBoYXBwZW5pbmcuIFRoZSBHUFUtc2lkZQorICAgICAgICBkaXNwbGF5IGJ1ZmZl
ciB3b3VsZCBiZSBpbmNvcnJlY3QuIEFsc28sIHRoZXJlIGlzIG5vdGhpbmcgdG8gYmUgZG9uZSBh
dAorICAgICAgICB0aGlzIHN0YWdlLCBhcyB0aGUgY29tcG9zaXRpbmcgb2YgV2ViR0wgY29udGV4
dCBpdHNlbGYgaXMgYWxyZWFkeQorICAgICAgICBmaW5pc2hlZCBhdCBXZWJHTCBjb250ZXh0IHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgcmV0dXJuLgorCisgICAgICAgIEluc3RlYWQs
IGFkZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgp
IHdoaWNoIHNpZ25hbHMgdGhhdCBuZXh0CisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKCkgaXMgYSBkaXNwbGF5IG9wZXJhdGlvbi4gVGhpcyBjYW4gYmUgdXNlZCB0byB0byBk
ZXRlY3QgdGhlCisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaW4gd2hp
Y2ggd2UgbXVzdCBwcmVzZW50IHRoZSBkcmF3aW5nIGJ1ZmZlciBhcworICAgICAgICBkaXNwbGF5
IGJ1ZmZlci4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGRpc3BsYXkgYnVmZmVyIHJlYWQgd2l0
aCBPcGVuR0wuCisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGRyYXdpbmcgYnVmZmVyIHJlYWQgY29k
ZSB0byBiZSBhYmxlIHRvIHJldXNlIHRoZSByZWFkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBkaXNw
bGF5IGJ1ZmZlciByZWFkLiBUaGUgcmVmYWN0b3JlZCBjb2RlIHJlZHVjZXMgcmVkdW5kYW50IHRo
ZQorICAgICAgICBhbGxvY2F0aW9ucyBvZiBmdWxsLXNjcmVlbiBtYWxsb2MgYnVmZmVycyBhbmQg
ZW5zdXJlcyBhbGxvY2F0aW9uIHJlc3VsdHMgYXJlCisgICAgICAgIGNoZWNrZWQgaW5zdGVhZCBv
ZiBjcmFzaGluZyB3aXRoIG51bGxwdHIgZGVyZWZzIHdoZW4gT09NIGhhcHBlbnMuIEZpeGVzCisg
ICAgICAgIGVycm9ycyBzdWNoIGFzIHJkYXI6Ly82NzU1MzUzMSAoQ3Jhc2hUcmFjZXI6IGNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdAorICAgICAgICBXZWJDb3JlOiBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpLgorICAg
ICAgICBSZW1vdmVzIFJHQkEtPkJHUkEtPlJHQkEgY29udmVyc2lvbnMgZnJvbQorICAgICAgICBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEo
KS4KKyAgICAgICAgUmVtb3ZlcyBtYW51YWwgYWxwaGEgcHJlbXVsdGlwbGljYXRpb24gYW5kIG1h
a2VzIENHIGRyYXcgd2l0aCB1bnByZW11bHRpcGxpZWQKKyAgICAgICAgYWxwaGEuCisgICAgICAg
IENoYW5nZXMgQ2Fpcm8gdmFyaWFudCBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB0byBjb252
ZXJ0IG1hbnVhbGx5IFJHQkEtPkJHUkEKKyAgICAgICAgaW5zdGVhZCBvZiAoYmlnKSBPcGVuR0wg
ZHJpdmVyIGRvaW5nIGl0IGluIGNhc2Ugb2Ygbm9uLU5WSURJQSBwbGF0Zm9ybXMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCB0aGUgc25hcHNob3QgLyBzdytodyBkcmF3aW5nIGlzIG5vdCB0ZXN0
YWJsZSBhdCB0aGUgbW9tZW50LgorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHUFVDYW52YXNDb250ZXh0Ojpjb25maWd1
cmVTd2FwQ2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4dDo6cHJlcGFy
ZUZvckRpc3BsYXlXaXRoUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4
dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L0dQVUNhbnZhc0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYWludCk6CisgICAg
ICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9HUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByZXBhcmVGb3JEaXNwbGF5V2l0
aFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUluZGV4QXJyYXlQcmVj
aXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlRHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZlcnRleEF0dHJpYmZ2SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjppbml0VmVydGV4QXR0cmliMCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVz
dWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJl
bmRlcmluZ1Jlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmc6OlNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRCdWZmZXJCaW5kaW5nOjpTY29wZWRCdWZmZXJC
aW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6On5TY29wZWRC
dWZmZXJCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6OnF1
ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZzo6bWFya0JpbmRpbmdDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUmVzdG9yZVJl
YWRGcmFtZWJ1ZmZlckJpbmRpbmc6On5TY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRQaXhlbFN0b3JhZ2VNb2RlOjpTY29wZWRQaXhl
bFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVsU3RvcmFnZU1vZGU6
On5TY29wZWRQaXhlbFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVs
U3RvcmFnZU1vZGU6OnBpeGVsU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUGl4ZWxT
dG9yYWdlTW9kZTo6b3BlcmF0b3IgR0xpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nv
cGVkVGV4dHVyZTo6U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0
dXJlOjp+U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0dXJlOjpv
cGVyYXRvciBHTHVpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVidWZm
ZXI6OlNjb3BlZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lYnVm
ZmVyOjp+U2NvcGVkRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVi
dWZmZXI6Om9wZXJhdG9yIEdMdWludCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZWxlYXNlSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVy
ZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkQ29tcG9zaXRlZFJlc3VsdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9y
UGFpbnRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYkltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om9y
aWdpbmFsU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6bWFwcGVkU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5m
b0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cyk6CisKIDIwMjAtMTItMTQg
IExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU1NJT04o
MjcwNDM1KSBbR1N0cmVhbWVyXSBNYW55IG1lZGlhIHNvdXJjZSB0ZXN0cyBmYWlsaW5nIGFuZCB0
aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwMzI4Y2Y2ZTg0NWY3NTNlNjQyYjQ1M2I4NjMxMTgxN2Q0
YzA2YzkuLmUwODk5YTkyYmMyMGMzNTliYTgwN2IyODEwYjBkZDg5ZWIyMmRjOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTItMTcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVu
QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjY4Mzg2KTogU25hcHNob3RzIG9m
IFdlYkdMIGNvbnRlbnQgaW4gdGhlIHRhYiBwaWNrZXIgZG9uJ3Qgd29yayAoYmxhY2sgbWFwIG9u
IEdvb2dsZSBNYXBzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5OTQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjAxMzc4ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZHVtbXkgaW1wbGVt
ZW50YXRpb25zIG9mIEdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9D
YW52YXMuCisgICAgICAgIFBhaW50aW5nIHRvIGNhbnZhcyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0
IGZvciB0aGUgcmVtb3RlIEdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6ZGlzcGxh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oOgorCiAyMDIwLTEyLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gSW50cm9kdWNlIHZtRW50cnlDdXN0b21BY2Nlc3NvciBhbmQgdm1FbnRy
eUhvc3RGdW5jdGlvbiBmb3IgSklUQ2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcAppbmRleCBlMzAzNTBiNDYyYTBmZWQ0NDY2OGJm
ODk2MDI5MjkzZTExNzhlODg3Li4zOGIxNTI4ZmZjM2E5NTI1ODUwYTk0ZDY1ZWQyNzk0YTRkODA0
YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcApAQCAtOTAsMTAgKzkwLDE4IEBAIHZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgbm90aWZ5Q2FudmFzQ29udGVudENoYW5n
ZWQoKTsKIH0KIAotdm9pZCBHUFVDYW52YXNDb250ZXh0OjptYXJrTGF5ZXJDb21wb3NpdGVkKCkK
K3ZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQogewot
ICAgIGlmIChtX3N3YXBDaGFpbiAmJiBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCkpCisgICAgbV9p
c0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSB0cnVlOworfQorCit2b2lkIEdQVUNhbnZhc0NvbnRleHQ6
OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKK3sKKyAgICAvLyBGSVhNRTogVW5pbXBs
ZW1lbnRlZC4KKyAgICBpZiAobV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgJiYgbV9zd2FwQ2hhaW4g
JiYgbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpKSB7CiAgICAgICAgIG1fc3dhcENoYWluLT5zd2Fw
Q2hhaW4oKS0+cHJlc2VudCgpOworICAgICAgICBtX2lzRGlzcGxheWluZ1dpdGhQYWludCA9IGZh
bHNlOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oCmluZGV4IDZkZjIwYjRhNjQ3
ZjZhMTg3OGIzODE1NmMyZDA3MTA3NjU0MzJhOGQuLjliMGZlN2IwZDA4Y2U5M2M3ZWNhODY5NGEw
MGQxNjMyZTEzZDBjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUNhbnZhc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVDYW52YXNDb250ZXh0LmgKQEAgLTUzLDEzICs1MywxNSBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNXZWJHUFUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpIGZpbmFsOwotICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZp
bmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSBmaW5hbDsKKyAgICB2
b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgZmluYWw7CiAKICAgICAvLyBBY3Rp
dmVET01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJHUFVDYW52YXNDb250ZXh0IjsgfQogICAgIC8vIEZJWE1FOiBTdHVi
cy4KICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IH0KIAorICAgIGJvb2wgbV9pc0Rpc3BsYXlpbmdX
aXRoUGFpbnQgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxXZWJHUFVTd2FwQ2hhaW4+IG1fc3dhcENo
YWluOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRl
eCAxNjljYWE5MDAyNGQyNjc3MjMwNTA2MmY1OThkMTJjY2RkYmFiM2ZmLi41NGIzNDAxZGU5MGYy
MmE4OWI2OTYyN2ZiNDAxZDg1NTVkNTY3ZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcApAQCAtNjQyLDIwICs2NDIsMTcgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBy
KQogCiAgICAgICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgICAgIHNob3VsZFBhaW50ID0g
cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIHx8IGRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCBtX2lz
U25hcHNob3R0aW5nOwotICAgICAgICAgICAgaWYgKHNob3VsZFBhaW50KQorICAgICAgICAgICAg
aWYgKHNob3VsZFBhaW50KSB7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9y
RGlzcGxheVdpdGhQYWludCgpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChzaG91bGRQYWludCkgewogICAgICAgICAgICAgaWYgKGhhc0NyZWF0ZWRJbWFnZUJ1
ZmZlcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fcHJlc2VudGVkSW1hZ2UpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVk
SW50UmVjdChyKSwgcmVuZGVyZXIoKS0+aW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBidWZmZXIoKSkKKyAgICAg
ICAgICAgICAgICBpZiAoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gYnVmZmVyKCkpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgc25h
cHBlZEludFJlY3QocikpOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoaXNHUFVC
YXNlZCgpKQotICAgICAgICAgICAgICAgIGRvd25jYXN0PEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5n
Q29udGV4dD4oKm1fY29udGV4dCkubWFya0xheWVyQ29tcG9zaXRlZCgpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC02NjgsMTkgKzY2NSw2IEBAIGJvb2wgSFRNTENhbnZhc0VsZW1lbnQ6OmlzR1BV
QmFzZWQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHQgJiYgbV9jb250ZXh0LT5pc0dQVUJh
c2VkKCk7CiB9CiAKLXZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6Om1ha2VQcmVzZW50YXRpb25Db3B5
KCkKLXsKLSAgICBpZiAoIW1fcHJlc2VudGVkSW1hZ2UpIHsKLSAgICAgICAgLy8gVGhlIGJ1ZmZl
ciBjb250YWlucyB0aGUgbGFzdCBwcmVzZW50ZWQgZGF0YSwgc28gc2F2ZSBhIGNvcHkgb2YgaXQu
Ci0gICAgICAgIG1fcHJlc2VudGVkSW1hZ2UgPSBidWZmZXIoKS0+Y29weUltYWdlKENvcHlCYWNr
aW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKLSAgICB9Ci19Ci0KLXZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OmNsZWFyUHJlc2VudGF0aW9uQ29weSgpCi17Ci0gICAgbV9wcmVzZW50
ZWRJbWFnZSA9IG51bGxwdHI7Ci19Ci0KIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnNldFN1cmZh
Y2VTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgQ2FudmFzQmFzZTo6c2V0U2l6ZShz
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCBhZWIwMTg5
NzQ5YjU4MzMzNzQ4NDA0Yzk1YmFmZWQwNDUyOGY5Y2VmLi45YzkyMzBmNWZiYjdlNmRlNGI2OWZk
NWM4NmJlZWU0MDY0YjQ0MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oCkBAIC0xMTUsOCArMTE1LDYgQEAgcHVibGljOgogICAgIEltYWdlKiBjb3BpZWRJbWFnZSgp
IGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY2xlYXJDb3BpZWRJbWFnZSgpIGNvbnN0IGZpbmFsOwog
ICAgIFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YSgpOwotICAgIHZvaWQgbWFrZVByZXNl
bnRhdGlvbkNvcHkoKTsKLSAgICB2b2lkIGNsZWFyUHJlc2VudGF0aW9uQ29weSgpOwogCiAgICAg
U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWw7CiAKQEAgLTE5OSw3
ICsxOTcsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lzU25hcHNob3R0aW5nIHsgZmFsc2Ug
fTsKIAotICAgIG11dGFibGUgUmVmUHRyPEltYWdlPiBtX3ByZXNlbnRlZEltYWdlOwogICAgIG11
dGFibGUgUmVmUHRyPEltYWdlPiBtX2NvcGllZEltYWdlOyAvLyBGSVhNRTogVGhpcyBpcyB0ZW1w
b3JhcnkgZm9yIHBsYXRmb3JtcyB0aGF0IGhhdmUgdG8gY29weSB0aGUgaW1hZ2UgYnVmZmVyIHRv
IHJlbmRlciAoYW5kIGZvciBDU1NDYW52YXNWYWx1ZSkuCiB9OwogCkBAIC0yMTYsNCArMjEzLDMg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3QgV2ViQ29yZTo6
RXZlbnRUYXJnZXQmIHRhcmdldCkgeyByZXR1cm4gaXM8V2ViQ29yZTo6Tm9kZT4odGFyZ2V0KSAm
JiBjaGVja1RhZ05hbWUoZG93bmNhc3Q8V2ViQ29yZTo6Tm9kZT4odGFyZ2V0KSk7IH0KIH07CiB9
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuaAppbmRleCBhY2Y4M2JiNzJkY2E3MDFjMGZjYzY3MzhjMWQ4NmNhMTE3OGZkNDk0Li5m
Mzg4NjNmNzhmZWUzZmY4OTkyOWM3NGM0N2NhMmU1MzQxOTkwMDU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC03MSw2
ICs3MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNPZmZzY3JlZW4yZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGFpbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCisgICAgLy8gQ2FsbGVkIGJlZm9yZSBwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0NhbnZhcyBpZiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyBpcworICAgIC8vIHVz
ZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2VzLgorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9y
RGlzcGxheVdpdGhQYWludCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0NhbnZhcygpIHt9CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9HUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDQ3
YTAyZWI3MDZjZTQ1ZDg4ZjE5NzU0YmI3ZDhiZWZmOWIxZjk0MmMuLjg5MGNkNzIzNTAxZTA0ZTI4
ZTgyZjc3YTBiNjlkYmVkNTlhNDg1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC01MCw4
ICs1MCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzaGFwZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFya0xheWVyQ29tcG9z
aXRlZCgpID0gMDsKLQogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEdQVUJhc2VkQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMDEzYjg5
YWY0ODg4Yjg3YzBmNjQ4ZTUyY2I1NjFjZGI5MWM1NDk3My4uMzBkOWU3ZTkxYTQzYzM5ZTgxMmY3
YmI1MmI1MTA2OGJjOTM2NzU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTExOTksMTEgKzExOTks
MTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZXN0b3JlU3RhdGVBZnRlckNs
ZWFyKCkKICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayhtX2RlcHRoTWFzayk7CiB9CiAKLXZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWFya0xheWVyQ29tcG9zaXRlZCgpCisKK3ZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQog
ewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKyAgICBtX2lzRGlzcGxheWluZ1dp
dGhQYWludCA9IHRydWU7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQpAQCAtMTIxMSwxOCArMTIxMCwxNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KCkKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoYXV0byogY2FudmFzID0gaHRtbENhbnZhcygpKSB7Ci0gICAgICAgIGlmIChjYW52
YXMtPmRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCAoY2FudmFzLT5pc1NuYXBzaG90dGluZygpICYm
IGNhbnZhcy0+ZG9jdW1lbnQoKS5wYWdlKCktPmlzVmlzaWJsZSgpKSkKLSAgICAgICAgICAgIGNh
bnZhcy0+Y2xlYXJQcmVzZW50YXRpb25Db3B5KCk7Ci0KLSAgICAgICAgLy8gVW50aWwgdGhlIGNh
bnZhcyBpcyB3cml0dGVuIHRvIGJ5IHRoZSBhcHBsaWNhdGlvbiwgdGhlIGNsZWFyIHRoYXQKLSAg
ICAgICAgLy8gaGFwcGVuZWQgYWZ0ZXIgaXQgd2FzIGNvbXBvc2l0ZWQgc2hvdWxkIGJlIGlnbm9y
ZWQgYnkgdGhlIGNvbXBvc2l0b3IuCi0gICAgICAgIGlmIChtX2NvbnRleHQtPmxheWVyQ29tcG9z
aXRlZCgpICYmICFtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKGNhbnZhcy0+YnVm
ZmVyKCkpOwotCi0gICAgICAgICAgICBjYW52YXMtPm1ha2VQcmVzZW50YXRpb25Db3B5KCk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2FudmFzLT5jbGVhclByZXNlbnRhdGlvbkNvcHko
KTsKKyAgICBpZiAobV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQpIHsKKyAgICAgICAgYm9vbCBjYW52
YXNDb250YWluc0Rpc3BsYXlCdWZmZXIgPSAhbV9tYXJrZWRDYW52YXNEaXJ0eTsKKyAgICAgICAg
cHJlcGFyZUZvckRpc3BsYXkoKTsKKyAgICAgICAgbV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSBm
YWxzZTsKKyAgICAgICAgaWYgKCFjYW52YXNDb250YWluc0Rpc3BsYXlCdWZmZXIpIHsKKyAgICAg
ICAgICAgIGF1dG8mIGJhc2UgPSBjYW52YXNCYXNlKCk7CisgICAgICAgICAgICBiYXNlLmNsZWFy
Q29waWVkSW1hZ2UoKTsKKyAgICAgICAgICAgIG1fbWFya2VkQ2FudmFzRGlydHkgPSBmYWxzZTsK
KyAgICAgICAgICAgIG1fY29udGV4dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKGJh
c2UuYnVmZmVyKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBj
bGVhcklmQ29tcG9zaXRlZChDbGVhckNhbGxlck90aGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCAzMGE4
NTU3ZDg2ODhlMmVhNDk1ZGI3MTZmMDhiZTYwOWVjM2I0ZThhLi5lOGU5MGNmYmExNmIxNGRkMTQ4
Yzk4ZTA2OWU1MDBlY2RlMmI1NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0zODQsOCArMzg0LDggQEAg
cHVibGljOgogCiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheVdpdGhQYWludCgpIGZpbmFsOworICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoKSBmaW5hbDsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpOwogCiAgICAgdm9pZCByZW1vdmVTaGFyZWRPYmplY3QoV2Vi
R0xTaGFyZWRPYmplY3QmKTsKQEAgLTY2OCw2ICs2NjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCk7CiAKICAgICBib29sIG1fY29tcG9zaXRpbmdSZXN1
bHRzTmVlZFVwZGF0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNEaXNwbGF5aW5nV2l0aFBh
aW50IHsgZmFsc2UgfTsKIAogICAgIC8vIEVuYWJsZWQgZXh0ZW5zaW9uIG9iamVjdHMuCiAgICAg
Ly8gRklYTUU6IE1vdmUgc29tZSBvZiB0aGVzZSB0byBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIHRo
ZSBvbmVzIG5vdCBuZWVkZWQgZm9yIFdlYkdMMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggMjIzYTVjOWJmMTY5N2Yy
NWYxMTJkYmNjMTg2ZjgxOWI3Y2UxZGU0NS4uYWE4ZmYyMzY4ZGZmZDg5Y2VhYjZhNDQzMzMwZGI0
NTE2YTE4ZjlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0xMjkyLDcgKzEyOTIsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gdGhlIGNvbnRleHQuCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyKikgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlRGF0YT4g
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikg
PSAwOwogCiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQuIFRoZSBsYXllciBz
aG91bGQgYmUgbWFya2VkIGNvbXBvc2l0ZWQgYnkKICAgICAvLyBwcmVwYXJpbmcgZm9yIGRpc3Bs
YXksIHNvIHRoYXQgY2FudmFzIGltYWdlIGJ1ZmZlciBhbmQgdGhlIGxheWVyIGFncmVlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKaW5kZXggNjBmN2E5NDdlZmNiYjM3
MTU2YzA5OGUwYjVlZTMzYzNiNjJiODQ5Yi4uMzZmYWFhN2U0NjYyMmJhZjNhMTIzZmJlOTVlZTk0
YmU2NDA5ZDU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApA
QCAtOTksMTEgKzk5LDYgQEAgR0NHTGJpdGZpZWxkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdAogICAgIHJldHVybiBtX2J1ZmZl
cnNUb0F1dG9DbGVhcjsKIH0KIAotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKLXsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpCiB7CiAgICAgLy8gUmVkZWNsYXJlZCBmb3Ig
ZXhwb3J0IHJlYXNvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAppbmRl
eCA3MjZhYWY2YzZhMGY2MmZmMjgyZTViOGQyMDJhMTI5NGUxZGU4NTcxLi4yNDcxZDRlMjVjOWFh
MjAwZWM3NDNiMWZlMGM2NDY4YjBjOWE1MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmgKQEAgLTY3LDcgKzY3LDYgQEAgcHVibGljOgogICAgIGJvb2wgbGF5ZXJDb21w
b3NpdGVkKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NH
TGJpdGZpZWxkKSBmaW5hbDsKICAgICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFy
KCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMo
SW1hZ2VCdWZmZXIqKSBmaW5hbDsKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5h
bDsKICAgICB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDMwOWE1MzA5YjY0MGEzZDZhMjgxNDFj
YTdiMWE3NWRiNDZlOWY5NTEuLmI1MDQzYjc0NjM2Zjc4ODVjNWQ4MGMwNzczNTU1ZDcxMjAwMDIz
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0zMSw2ICszMSw3IEBA
CiAKICNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zR0xBTkdM
RS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKQEAgLTQ2LDkgKzQ3LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0jaWYgVVNFKEFDQ0VMRVJB
VEUpCi0jaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+Ci0jZW5kaWYKIAogI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTENWQU5HTEUuaCIKQEAgLTY0LDMwICs2Miw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIFNjb3BlZFJlc2V0QnVmZmVyQmluZGluZyB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUmVzZXRCdWZmZXJCaW5kaW5nKTsKLXB1YmxpYzoK
LSAgICBTY29wZWRSZXNldEJ1ZmZlckJpbmRpbmcoYm9vbCBzaG91bGREb1dvcmssIEdMZW51bSBi
aW5kaW5nUG9pbnRRdWVyeSwgR0xlbnVtIGJpbmRpbmdQb2ludCkKLSAgICAgICAgOiBtX2JpbmRp
bmdQb2ludFF1ZXJ5KGJpbmRpbmdQb2ludFF1ZXJ5KQotICAgICAgICAsIG1fYmluZGluZ1BvaW50
KGJpbmRpbmdQb2ludCkKLSAgICB7Ci0gICAgICAgIGlmIChzaG91bGREb1dvcmspCi0gICAgICAg
ICAgICBnbDo6R2V0SW50ZWdlcnYobV9iaW5kaW5nUG9pbnRRdWVyeSwgJm1fYmluZGluZ1ZhbHVl
KTsKLSAgICAgICAgaWYgKG1fYmluZGluZ1ZhbHVlKQotICAgICAgICAgICAgZ2w6OkJpbmRCdWZm
ZXIobV9iaW5kaW5nUG9pbnQsIDApOwotICAgIH0KLQotICAgIH5TY29wZWRSZXNldEJ1ZmZlckJp
bmRpbmcoKQotICAgIHsKLSAgICAgICAgaWYgKG1fYmluZGluZ1ZhbHVlKQotICAgICAgICAgICAg
Z2w6OkJpbmRCdWZmZXIobV9iaW5kaW5nUG9pbnQsIG1fYmluZGluZ1ZhbHVlKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgR0xpbnQgbV9iaW5kaW5nUG9pbnRRdWVyeSB7IDAgfTsKLSAgICBHTGlu
dCBtX2JpbmRpbmdQb2ludCB7IDAgfTsKLSAgICBHTGludCBtX2JpbmRpbmdWYWx1ZSB7IDAgfTsK
LX07CiAKIH0gLy8gbmFtZXNwYWNlIGFub255bW91cwogCkBAIC0xMDIsMzYgKzc2LDI5IEBAIHN0
YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGludCB3aWR0aCwgaW50IGhlaWdo
dCwgdW5zaWduZWQgY2hhciogcGl4CiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeShpbnQgeCwgaW50
IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQotewotICAg
IC8vIE5WSURJQSBkcml2ZXJzIGhhdmUgYSBidWcgd2hlcmUgY2FsbGluZyByZWFkUGl4ZWxzIGlu
IEJHUkEgY2FuIHJldHVybiB0aGUgd3JvbmcgdmFsdWVzIGZvciB0aGUgYWxwaGEgY2hhbm5lbCB3
aGVuIHRoZSBhbHBoYSBpcyBvZmYgZm9yIHRoZSBjb250ZXh0LgotICAgIGdsOjpSZWFkUGl4ZWxz
KHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7
Ci0jaWYgVVNFKEFDQ0VMRVJBVEUpCi0gICAgdkltYWdlX0J1ZmZlciBzcmM7Ci0gICAgc3JjLmhl
aWdodCA9IGhlaWdodDsKLSAgICBzcmMud2lkdGggPSB3aWR0aDsKLSAgICBzcmMucm93Qnl0ZXMg
PSB3aWR0aCAqIDQ7Ci0gICAgc3JjLmRhdGEgPSBwaXhlbHM7Ci0KLSAgICB2SW1hZ2VfQnVmZmVy
IGRlc3Q7Ci0gICAgZGVzdC5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgZGVzdC53aWR0aCA9IHdpZHRo
OwotICAgIGRlc3Qucm93Qnl0ZXMgPSB3aWR0aCAqIDQ7Ci0gICAgZGVzdC5kYXRhID0gcGl4ZWxz
OwotCi0gICAgLy8gU3dhcCBwaXhlbCBjaGFubmVscyBmcm9tIFJHQkEgdG8gQkdSQS4KLSAgICBj
b25zdCB1aW50OF90IG1hcFs0XSA9IHsgMiwgMSwgMCwgMyB9OwotICAgIHZJbWFnZVBlcm11dGVD
aGFubmVsc19BUkdCODg4OCgmc3JjLCAmZGVzdCwgbWFwLCBrdkltYWdlTm9GbGFncyk7Ci0jZWxz
ZQotICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICBzdGQ6OnN3YXAocGl4ZWxz
W2ldLCBwaXhlbHNbaSArIDJdKTsKLSNlbmRpZgotCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCit7CisgICAgYXV0
byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6
ZSgpKTsKKyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
U2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSBwYWNrQWxpZ25tZW50KEdMX1BBQ0tfQUxJR05NRU5UKTsK
KyAgICBpZiAocGFja0FsaWdubWVudCA+IDQpCisgICAgICAgIHBhY2tBbGlnbm1lbnQucGl4ZWxT
dG9yZSg0KTsKKyAgICBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlIHBhY2tSb3dMZW5ndGgoR0xfUEFD
S19ST1dfTEVOR1RILCAwLCBtX2lzRm9yV2ViR0wyKTsKKyAgICBTY29wZWRQaXhlbFN0b3JhZ2VN
b2RlIHBhY2tTa2lwUm93cyhHTF9QQUNLX1NLSVBfUk9XUywgMCwgbV9pc0ZvcldlYkdMMik7Cisg
ICAgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSBwYWNrU2tpcFBpeGVscyhHTF9QQUNLX1NLSVBfUElY
RUxTLCAwLCBtX2lzRm9yV2ViR0wyKTsKKyAgICBTY29wZWRCdWZmZXJCaW5kaW5nIHNjb3BlZFBp
eGVsUGFja0J1ZmZlclJlc2V0KEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCAwLCBtX2lzRm9yV2ViR0wy
KTsKKworICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKDAsIDAsIGltYWdlRGF0YS0+d2lk
dGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgaW1h
Z2VEYXRhLT5kYXRhKCktPmJ5dGVMZW5ndGgoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
aW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSk7CisgICAgLy8gRklYTUU6IFJlbmRlcmluZyB0byBH
TF9SR0IgdGV4dHVyZXMgd2l0aCBhIElPU3VyZmFjZSBib3VuZCB0byB0aGUgdGV4dHVyZSBpbWFn
ZSBsZWF2ZXMKKyAgICAvLyB0aGUgYWxwaGEgaW4gdGhlIElPU3VyZmFjZSBpbiBpbmNvcnJlY3Qg
c3RhdGUuIEFsc28gQU5HTEUgZ2w6OlJlYWRQaXhlbHMgd2lsbCBpbiBzb21lCisgICAgLy8gY2Fz
ZXMgZXhwb3NlIHRoZSBub24tMjU1IHZhbHVlcy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODA0CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmICghY29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSkKLSAgICAg
ICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdodCwgcGl4ZWxzKTsKKyAg
ICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFn
ZURhdGEtPmhlaWdodCgpLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpKTsKICNlbmRpZgorICAg
IHJldHVybiBpbWFnZURhdGE7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZh
bGlkYXRlQXR0cmlidXRlcygpCkBAIC01MTAsNjQgKzQ3Nyw2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRo
U3RlbmNpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCi17Ci0gICAg
Q2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PiByb3dCeXRlcyA9IENoZWNrZWQ8aW50LCBSZWNv
cmRPdmVyZmxvdz4obV9jdXJyZW50V2lkdGgpICogNDsKLSAgICBpZiAocm93Qnl0ZXMuaGFzT3Zl
cmZsb3dlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDaGVja2VkPGludCwgUmVjb3JkT3Zl
cmZsb3c+IHRvdGFsQnl0ZXNDaGVja2VkID0gcm93Qnl0ZXMgKiBtX2N1cnJlbnRIZWlnaHQ7Ci0g
ICAgaWYgKHRvdGFsQnl0ZXNDaGVja2VkLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGludCB0b3RhbEJ5dGVzID0gdG90YWxCeXRlc0NoZWNrZWQudW5zYWZlR2V0KCk7Ci0K
LSAgICBhdXRvIHBpeGVscyA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPih0b3RhbEJ5
dGVzKTsKLSAgICBpZiAoIXBpeGVscykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcmVhZFJlbmRl
cmluZ1Jlc3VsdHMocGl4ZWxzLmdldCgpLCB0b3RhbEJ5dGVzKTsKLQotICAgIGlmICghY29udGV4
dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpIHsKLSAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpIHsKLSAgICAgICAgICAgIC8vIFByZW11bHRpcGx5
IGFscGhhLgotICAgICAgICAgICAgcGl4ZWxzW2kgKyAwXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxz
W2kgKyAwXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICAgICAgcGl4ZWxzW2kgKyAx
XSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAxXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwot
ICAgICAgICAgICAgcGl4ZWxzW2kgKyAyXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAyXSAq
IHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcGFpbnRUb0Nh
bnZhcyhwaXhlbHMuZ2V0KCksIEludFNpemUobV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdo
dCksIGltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsK
LX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKLXsKLSAgICAvLyBOb3QgbmVlZGVkIGF0IHRoZSBtb21l
bnQsIHNvIHJldHVybiB0aGF0IG5vdGhpbmcgd2FzIGRvbmUuCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1SZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQotewotICAgIC8vIFJlYWRpbmcgcHJlbXVsdGlwbGll
ZCBhbHBoYSB3b3VsZCBpbnZvbHZlIHVucHJlbXVsdGlwbHlpbmcsIHdoaWNoIGlzCi0gICAgLy8g
bG9zc3kuCi0gICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRh
OjpjcmVhdGUoSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSk7Ci0gICAg
dW5zaWduZWQgY2hhciogcGl4ZWxzID0gaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKTsKLSAgICBD
aGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IHRvdGFsQnl0ZXNDaGVja2VkID0gNCAqIENoZWNr
ZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4obV9jdXJyZW50V2lkdGgpICogQ2hlY2tlZDxpbnQsIFJl
Y29yZE92ZXJmbG93PihtX2N1cnJlbnRIZWlnaHQpOwotICAgIGlmICh0b3RhbEJ5dGVzQ2hlY2tl
ZC5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBpbWFnZURhdGE7Ci0gICAgaW50IHRv
dGFsQnl0ZXMgPSB0b3RhbEJ5dGVzQ2hlY2tlZC51bnNhZmVHZXQoKTsKLQotICAgIHJlYWRSZW5k
ZXJpbmdSZXN1bHRzKHBpeGVscywgdG90YWxCeXRlcyk7Ci0KLSAgICAvLyBDb252ZXJ0IHRvIFJH
QkEuCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAg
IHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOwotCi0gICAgcmV0dXJuIGltYWdl
RGF0YTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZVRleHR1cmUo
KQogewogICAgIGlmIChtX2xheWVyQ29tcG9zaXRlZCkKQEAgLTYyMCw2NSArNTI5LDE1IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVUZXh0dXJlSW1wbCgpCiAjZW5kaWYK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHMo
dW5zaWduZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSkKK1JlZlB0cjxJbWFnZURhdGE+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cygpCiB7Ci0gICAg
aWYgKHBpeGVsc1NpemUgPCBtX2N1cnJlbnRXaWR0aCAqIG1fY3VycmVudEhlaWdodCAqIDQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotCi0gICAgR0NHTGVudW0gZnJhbWVidWZmZXJUYXJnZXQgPSBtX2lzRm9yV2Vi
R0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRl
eHRHTDo6RlJBTUVCVUZGRVI7Ci0KLSAgICBib29sIG11c3RSZXN0b3JlRkJPID0gZmFsc2U7Cisg
ICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcgZmJvQmluZGluZyhtX2lzRm9y
V2ViR0wyLCBtX3N0YXRlLmJvdW5kUmVhZEZCTyk7CiAgICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVz
KCkuYW50aWFsaWFzKSB7CiAgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3Nhcnko
KTsKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9mYm8p
OwotICAgICAgICBtdXN0UmVzdG9yZUZCTyA9IHRydWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
aWYgKG1fc3RhdGUuYm91bmRSZWFkRkJPICE9IG1fZmJvKSB7Ci0gICAgICAgICAgICBtdXN0UmVz
dG9yZUZCTyA9IHRydWU7Ci0gICAgICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVm
ZmVyVGFyZ2V0LCBtX2Zibyk7Ci0gICAgICAgIH0KKyAgICAgICAgZmJvQmluZGluZy5tYXJrQmlu
ZGluZ0NoYW5nZWQoKTsKICAgICB9Ci0KLSAgICBHTGludCBwYWNrQWxpZ25tZW50ID0gNDsKLSAg
ICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOwotICAgIGdsOjpHZXRJbnRl
Z2VydihHTF9QQUNLX0FMSUdOTUVOVCwgJnBhY2tBbGlnbm1lbnQpOwotICAgIGlmIChwYWNrQWxp
Z25tZW50ID4gNCkgewotICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQs
IDQpOwotICAgICAgICBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSB0cnVlOwotICAgIH0KLSAg
ICBHTGludCBwYWNrUm93TGVuZ3RoID0gMDsKLSAgICBHTGludCBwYWNrU2tpcFJvd3MgPSAwOwot
ICAgIEdMaW50IHBhY2tTa2lwUGl4ZWxzID0gMDsKLSAgICBTY29wZWRSZXNldEJ1ZmZlckJpbmRp
bmcgc2NvcGVkUGl4ZWxQYWNrQnVmZmVyUmVzZXQobV9pc0ZvcldlYkdMMiwgR0xfUElYRUxfUEFD
S19CVUZGRVJfQklORElORywgR0xfUElYRUxfUEFDS19CVUZGRVIpOwotICAgIGlmIChtX2lzRm9y
V2ViR0wyKSB7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihHTF9QQUNLX1JPV19MRU5HVEgsICZw
YWNrUm93TGVuZ3RoKTsKLSAgICAgICAgaWYgKHBhY2tSb3dMZW5ndGggPiAwKQotICAgICAgICAg
ICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfUk9XX0xFTkdUSCwgMCk7Ci0gICAgICAgIGdsOjpH
ZXRJbnRlZ2VydihHTF9QQUNLX1NLSVBfUk9XUywgJnBhY2tTa2lwUm93cyk7Ci0gICAgICAgIGlm
IChwYWNrU2tpcFJvd3MgPiAwKQotICAgICAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tf
U0tJUF9ST1dTLCAwKTsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX1BBQ0tfU0tJUF9QSVhF
TFMsICZwYWNrU2tpcFBpeGVscyk7Ci0gICAgICAgIGlmIChwYWNrU2tpcFBpeGVscyA+IDApCi0g
ICAgICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19TS0lQX1BJWEVMUywgMCk7Ci0gICAg
fQotCi0gICAgcmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeSgwLCAwLCBtX2N1
cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBwaXhlbHMpOwotCi0gICAgaWYgKG11c3RSZXN0
b3JlUGFja0FsaWdubWVudCkKLSAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05N
RU5ULCBwYWNrQWxpZ25tZW50KTsKLSAgICBpZiAocGFja1Jvd0xlbmd0aCA+IDApCi0gICAgICAg
IGdsOjpQaXhlbFN0b3JlaShHTF9QQUNLX1JPV19MRU5HVEgsIHBhY2tSb3dMZW5ndGgpOwotICAg
IGlmIChwYWNrU2tpcFJvd3MgPiAwKQotICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19T
S0lQX1JPV1MsIHBhY2tTa2lwUm93cyk7Ci0gICAgaWYgKHBhY2tTa2lwUGl4ZWxzID4gMCkKLSAg
ICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfU0tJUF9QSVhFTFMsIHBhY2tTa2lwUGl4ZWxz
KTsKLQotICAgIGlmIChtdXN0UmVzdG9yZUZCTykKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZl
cihmcmFtZWJ1ZmZlclRhcmdldCwgbV9zdGF0ZS5ib3VuZFJlYWRGQk8pOworICAgIGZib0JpbmRp
bmcuYmluZEZyYW1lYnVmZmVyKG1fZmJvKTsKKyAgICByZXR1cm4gcmVhZFBpeGVsc0ZvclBhaW50
UmVzdWx0cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKGlu
dCB3aWR0aCwgaW50IGhlaWdodCkKQEAgLTcwNCw3ICs1NjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogICAgIFRlbXBv
cmFyeUFOR0xFU2V0dGluZyBzY29wZWRTY2lzc29yKEdMX1NDSVNTT1JfVEVTVCwgR0xfRkFMU0Up
OwogICAgIFRlbXBvcmFyeUFOR0xFU2V0dGluZyBzY29wZWREaXRoZXIoR0xfRElUSEVSLCBHTF9G
QUxTRSk7Ci0gICAgU2NvcGVkUmVzZXRCdWZmZXJCaW5kaW5nIHNjb3BlZFBpeGVsVW5wYWNrQnVm
ZmVyUmVzZXQobV9pc0ZvcldlYkdMMiwgR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HLCBH
TF9QSVhFTF9VTlBBQ0tfQlVGRkVSKTsKKyAgICBTY29wZWRCdWZmZXJCaW5kaW5nIHNjb3BlZFBp
eGVsVW5wYWNrQnVmZmVyUmVzZXQoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgbV9pc0Zvcldl
YkdMMik7CiAKICAgICBib29sIG11c3RSZXN0b3JlRkJPID0gcmVzaGFwZUZCT3MoSW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KSk7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgKaW5kZXggMjEzMjdk
ZGFmYzNkYjVmZWQyZTgxMzI2YjFmYTIyYzUyODY5ZjE1MS4uNDk0MmE5NTU0NTZiZjk0NDg0MDFj
MmUyNmI1N2ZkYjgyMWNkNGM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyk7CiBwdWJsaWM6Ci0gICAgU2NvcGVkUmVzdG9y
ZVRleHR1cmVCaW5kaW5nKEdDR0xlbnVtIGJpbmRpbmdQb2ludFF1ZXJ5LCBHQ0dMZW51bSBiaW5k
aW5nUG9pbnQsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVy
ZUJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludFF1ZXJ5LCBHTGVudW0gYmluZGluZ1BvaW50LCBi
b29sIGNvbmRpdGlvbiA9IHRydWUpCiAgICAgewotICAgICAgICBBU1NFUlQoYmluZGluZ1BvaW50
ICE9IHN0YXRpY19jYXN0PEdDR0xlbnVtPigwdSkpOworICAgICAgICBBU1NFUlQoYmluZGluZ1Bv
aW50ICE9IHN0YXRpY19jYXN0PEdMZW51bT4oMHUpKTsKICAgICAgICAgaWYgKGNvbmRpdGlvbikg
ewogICAgICAgICAgICAgbV9iaW5kaW5nUG9pbnQgPSBiaW5kaW5nUG9pbnQ7CiAgICAgICAgICAg
ICBnbDo6R2V0SW50ZWdlcnYoYmluZGluZ1BvaW50UXVlcnksIHJlaW50ZXJwcmV0X2Nhc3Q8R0xp
bnQqPigmbV9iaW5kaW5nVmFsdWUpKTsKQEAgLTU2LDYgKzU2LDE1MyBAQCBwcml2YXRlOgogICAg
IEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07CiB9OwogCisKK2NsYXNzIFNjb3BlZEJ1ZmZl
ckJpbmRpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEJ1ZmZlckJpbmRpbmcp
OworcHVibGljOgorICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludCwg
R0x1aW50IGJpbmRpbmdWYWx1ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQorICAgIHsKKyAgICAg
ICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdsOjpHZXRJ
bnRlZ2VydihxdWVyeShiaW5kaW5nUG9pbnQpLCByZWludGVycHJldF9jYXN0PEdMaW50Kj4oJm1f
YmluZGluZ1ZhbHVlKSk7CisgICAgICAgIGlmIChiaW5kaW5nVmFsdWUgPT0gbV9iaW5kaW5nVmFs
dWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fYmluZGluZ1BvaW50ID0gYmluZGlu
Z1BvaW50OworICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwgYmluZGluZ1Zh
bHVlKTsKKyAgICB9CisKKyAgICB+U2NvcGVkQnVmZmVyQmluZGluZygpCisgICAgeworICAgICAg
ICBpZiAobV9iaW5kaW5nUG9pbnQpCisgICAgICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRp
bmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdMZW51bSBxdWVyeShHTGVudW0gYmluZGluZ1BvaW50KQorICAgIHsKKyAgICAg
ICAgaWYgKGJpbmRpbmdQb2ludCA9PSBHTF9QSVhFTF9QQUNLX0JVRkZFUikKKyAgICAgICAgICAg
IHJldHVybiBHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOworICAgICAgICBBU1NFUlQoYmlu
ZGluZ1BvaW50ID09IEdMX1BJWEVMX1VOUEFDS19CVUZGRVIpOworICAgICAgICByZXR1cm4gR0xf
UElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HOworICAgIH0KKyAgICBHTGludCBtX2JpbmRpbmdQ
b2ludCB7IDAgfTsKKyAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUgeyAwdSB9OworfTsKK2NsYXNz
IFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk7CitwdWJsaWM6Cisg
ICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoYm9vbCBpc0ZvcldlYkdMMiwg
R0x1aW50IHJlc3RvcmVWYWx1ZSkKKyAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlzRm9y
V2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQorICAgICAgICAs
IG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZFJl
c3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGJvb2wgaXNGb3JXZWJHTDIsIEdMdWludCByZXN0
b3JlVmFsdWUsIEdMdWludCB2YWx1ZSkKKyAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlz
Rm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQorICAgICAg
ICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKKyAgICB7CisgICAgICAgIGJpbmRGcmFt
ZWJ1ZmZlcih2YWx1ZSk7CisgICAgfQorICAgIHZvaWQgbWFya0JpbmRpbmdDaGFuZ2VkKCkKKyAg
ICB7CisgICAgICAgIG1fYmluZGluZ0NoYW5nZWQgPSB0cnVlOworICAgIH0KKyAgICB2b2lkIGJp
bmRGcmFtZWJ1ZmZlcihHTHVpbnQgYmluZGluZ1ZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2JpbmRpbmdDaGFuZ2VkICYmIG1fYmluZGluZ1ZhbHVlID09IGJpbmRpbmdWYWx1ZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVy
VGFyZ2V0LCBiaW5kaW5nVmFsdWUpOworICAgICAgICBtX2JpbmRpbmdDaGFuZ2VkID0gbV9iaW5k
aW5nVmFsdWUgIT0gYmluZGluZ1ZhbHVlOworICAgIH0KKyAgICB+U2NvcGVkUmVzdG9yZVJlYWRG
cmFtZWJ1ZmZlckJpbmRpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYmluZGluZ0NoYW5nZWQp
CisgICAgICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXJUYXJnZXQsIG1f
YmluZGluZ1ZhbHVlKTsKKyAgICB9Citwcml2YXRlOgorICAgIGNvbnN0IEdMZW51bSBtX2ZyYW1l
YnVmZmVyVGFyZ2V0OworICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07CisgICAgYm9v
bCBtX2JpbmRpbmdDaGFuZ2VkIHsgZmFsc2UgfTsKK307CisKK2NsYXNzIFNjb3BlZFBpeGVsU3Rv
cmFnZU1vZGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFBpeGVsU3RvcmFnZU1v
ZGUpOworcHVibGljOgorICAgIGV4cGxpY2l0IFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVt
IG5hbWUsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICAgICAgOiBtX25hbWUoY29uZGl0aW9u
ID8gbmFtZSA6IDApCisgICAgeworICAgICAgICBpZiAobV9uYW1lKQorICAgICAgICAgICAgZ2w6
OkdldEludGVnZXJ2KG1fbmFtZSwgJm1fb3JpZ2luYWxWYWx1ZSk7CisgICAgfQorICAgIFNjb3Bl
ZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVtIG5hbWUsIEdMaW50IHZhbHVlLCBib29sIGNvbmRpdGlv
biA9IHRydWUpCisgICAgICAgIDogbV9uYW1lKGNvbmRpdGlvbiA/IG5hbWUgOiAwKQorICAgIHsK
KyAgICAgICAgaWYgKG1fbmFtZSkgeworICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KG1fbmFt
ZSwgJm1fb3JpZ2luYWxWYWx1ZSk7CisgICAgICAgICAgICBwaXhlbFN0b3JlKHZhbHVlKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICB+U2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSgpCisgICAgeworICAg
ICAgICBpZiAobV9uYW1lICYmIG1fdmFsdWVDaGFuZ2VkKQorICAgICAgICAgICAgZ2w6OlBpeGVs
U3RvcmVpKG1fbmFtZSwgbV9vcmlnaW5hbFZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBwaXhlbFN0
b3JlKEdMaW50IHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbmFtZSk7CisgICAgICAg
IGlmICghbV92YWx1ZUNoYW5nZWQgJiYgbV9vcmlnaW5hbFZhbHVlID09IHZhbHVlKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBnbDo6UGl4ZWxTdG9yZWkobV9uYW1lLCB2YWx1ZSk7Cisg
ICAgICAgIG1fdmFsdWVDaGFuZ2VkID0gbV9vcmlnaW5hbFZhbHVlICE9IHZhbHVlOworICAgIH0K
KyAgICBvcGVyYXRvciBHTGludCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9uYW1l
ICYmICFtX3ZhbHVlQ2hhbmdlZCk7CisgICAgICAgIHJldHVybiBtX29yaWdpbmFsVmFsdWU7Cisg
ICAgfQorcHJpdmF0ZToKKyAgICBjb25zdCBHTGVudW0gbV9uYW1lOworICAgIGJvb2wgbV92YWx1
ZUNoYW5nZWQgeyBmYWxzZSB9OworICAgIEdMaW50IG1fb3JpZ2luYWxWYWx1ZSB7IDAgfTsKK307
CisKK2NsYXNzIFNjb3BlZFRleHR1cmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3Bl
ZFRleHR1cmUpOworcHVibGljOgorICAgIFNjb3BlZFRleHR1cmUoKQorICAgIHsKKyAgICAgICAg
Z2w6OkdlblRleHR1cmVzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIH5TY29wZWRUZXh0dXJl
KCkKKyAgICB7CisgICAgICAgIGdsOjpEZWxldGVUZXh0dXJlcygxLCAmbV9vYmplY3QpOworICAg
IH0KKyAgICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
b2JqZWN0OworICAgIH0KK3ByaXZhdGU6CisgICAgR0x1aW50IG1fb2JqZWN0IHsgMHUgfTsKK307
CisKK2NsYXNzIFNjb3BlZEZyYW1lYnVmZmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
Y29wZWRGcmFtZWJ1ZmZlcik7CitwdWJsaWM6CisgICAgU2NvcGVkRnJhbWVidWZmZXIoKQorICAg
IHsKKyAgICAgICAgZ2w6OkdlbkZyYW1lYnVmZmVycygxLCAmbV9vYmplY3QpOworICAgIH0KKyAg
ICB+U2NvcGVkRnJhbWVidWZmZXIoKQorICAgIHsKKyAgICAgICAgZ2w6OkRlbGV0ZUZyYW1lYnVm
ZmVycygxLCAmbV9vYmplY3QpOworICAgIH0KKyAgICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0OworICAgIH0KK3ByaXZhdGU6CisgICAgR0x1
aW50IG1fb2JqZWN0IHsgMCB9OworfTsKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0R0xDYWlyby5jcHAKaW5kZXggNDNjZGFjOGIwMWNkYTBkZjA2MjE4NmYxNTAwM2VhMzA4ZmEy
MGNkNi4uNzgzYmZhOTkyZDM0ZjI1NTY5MzlkNDZiYzZmY2MwOWFhN2M5YTkxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
R0xDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJD
YWlyb1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1
ZGUgIkltYWdlU291cmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNp
bmNsdWRlICJSZWZQdHJDYWlyby5oIgpAQCAtMTA1LDE1ICsxMDYsMzAgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywg
Y29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWlu
dFRvQ2FudmFzKFJlZjxJbWFnZURhdGE+JiYgaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBjYW52
YXNTaXplLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKCFpbWFnZVBpeGVs
cyB8fCBpbWFnZVNpemUuaXNFbXB0eSgpIHx8IGNhbnZhc1NpemUuaXNFbXB0eSgpKQorICAgIEFT
U0VSVCghaW1hZ2VEYXRhLT5zaXplKCkuaXNFbXB0eSgpKTsKKyAgICBpZiAoY2FudmFzU2l6ZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBsYXRmb3JtQ29udGV4dENhaXJvKiBw
bGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmICghcGxh
dGZvcm1Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBDb252ZXJ0IFJHQkEgdG8g
QkdSQS4gQkdSQSBpcyBDQUlST19GT1JNQVRfQVJHQjMyIG9uIGxpdHRsZS1lbmRpYW4gYXJjaGl0
ZWN0dXJlcy4KKyAgICBzaXplX3QgdG90YWxCeXRlcyA9IGltYWdlRGF0YS5kYXRhKCktPmJ5dGVM
ZW5ndGgoKTsKKyAgICB1aW50OF90KiBwaXhlbHMgPSBpbWFnZURhdGEuZGF0YSgpLT5kYXRhKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCisgICAgICAg
IHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOworCisgICAgaWYgKCFjb250ZXh0
QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkgeworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkgeworICAgICAgICAgICAgcGl4ZWxzW2kgKyAw
XSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAwXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwor
ICAgICAgICAgICAgcGl4ZWxzW2kgKyAxXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAxXSAq
IHBpeGVsc1tpICsgM10gLyAyNTUpOworICAgICAgICAgICAgcGl4ZWxzW2kgKyAyXSA9IHN0ZDo6
bWluKDI1NSwgcGl4ZWxzW2kgKyAyXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOworICAgICAgICB9
CisgICAgfQorCiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQtPmNyKCk7CiAgICAg
cGxhdGZvcm1Db250ZXh0LT5zYXZlKCk7CiAKQEAgLTEyMiw3ICsxMzgsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlt
YWdlUGl4ZWxzLCBjbwogICAgIGNhaXJvX3BhaW50KGNyKTsKIAogICAgIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IGltYWdlU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3Jl
YXRlX2Zvcl9kYXRhKAotICAgICAgICBjb25zdF9jYXN0PHVuc2lnbmVkIGNoYXIqPihpbWFnZVBp
eGVscyksIENBSVJPX0ZPUk1BVF9BUkdCMzIsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUu
aGVpZ2h0KCksIGltYWdlU2l6ZS53aWR0aCgpICogNCkpOworICAgICAgICBpbWFnZURhdGEtPmRh
dGEoKS0+ZGF0YSgpLCBDQUlST19GT1JNQVRfQVJHQjMyLCBpbWFnZURhdGEtPndpZHRoKCksIGlt
YWdlRGF0YS0+aGVpZ2h0KCksIGltYWdlRGF0YS0+d2lkdGgoKSAqIDQpKTsKIAogICAgIC8vIE9w
ZW5HTCBrZWVwcyB0aGUgcGl4ZWxzIHN0b3JlZCBib3R0b20gdXAsIHNvIHdlIG5lZWQgdG8gZmxp
cCB0aGUgaW1hZ2UgaGVyZS4KICAgICBjYWlyb190cmFuc2xhdGUoY3IsIDAsIGltYWdlU2l6ZS5o
ZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRHTENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCmluZGV4IDY4ZDVhYzgzZDkxMmU4NmVmZWJm
ZjQyMzlkZmEwNjQ2NjMwMGYxYjQuLmUyZTUxZmQwYTA2MGRhZDIxYjJkMjFhNTI4NWQ0MGQ0NzNi
YzUyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dEdMQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCkBAIC01MDUsMzYgKzUwNSwzNSBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBy
ZWxlYXNlSW1hZ2VEYXRhKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpCitzdGF0aWMg
dm9pZCByZWxlYXNlSW1hZ2VEYXRhKHZvaWQqIGltYWdlRGF0YSwgY29uc3Qgdm9pZCosIHNpemVf
dCkKIHsKLSAgICBmYXN0RnJlZShjb25zdF9jYXN0PHZvaWQqPihkYXRhKSk7CisgICAgcmVpbnRl
cnByZXRfY2FzdDxJbWFnZURhdGEqPihpbWFnZURhdGEpLT5kZXJlZigpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGltYWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEludFNpemUmIGNh
bnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBhaW50VG9DYW52YXMoUmVmPEltYWdlRGF0YT4mJiBpbWFnZURhdGEsIGNvbnN0
IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBp
ZiAoIWltYWdlUGl4ZWxzIHx8IGltYWdlU2l6ZS5pc0VtcHR5KCkgfHwgY2FudmFzU2l6ZS5pc0Vt
cHR5KCkpCisgICAgQVNTRVJUKCFpbWFnZURhdGEtPnNpemUoKS5pc0VtcHR5KCkpOworICAgIGlm
IChjYW52YXNTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOworICAgIGF1dG8gYXR0cnMg
PSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIC8vIElucHV0IGlzIEdMX1JHQkEgPT0ga0NHQml0
bWFwQnl0ZU9yZGVyMzJCaWcgfCBrQ0dJbWFnZUFscGhhKkxhc3QuCisgICAgLy8gR0xfQkdSQSB3
b3VsZCBiZSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGEqRmlyc3Qu
CisgICAgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZzsK
KyAgICBpZiAoIWF0dHJzLmFscGhhKQorICAgICAgICBiaXRtYXBJbmZvIHw9IGtDR0ltYWdlQWxw
aGFOb25lU2tpcExhc3Q7CisgICAgZWxzZSBpZiAoYXR0cnMucHJlbXVsdGlwbGllZEFscGhhKQor
ICAgICAgICBiaXRtYXBJbmZvIHw9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdDsKKyAg
ICBlbHNlCisgICAgICAgIGJpdG1hcEluZm8gfD0ga0NHSW1hZ2VBbHBoYUxhc3Q7CisKKyAgICBh
dXRvIGltYWdlU2l6ZSA9IGltYWdlRGF0YS0+c2l6ZSgpOwogICAgIGludCByb3dCeXRlcyA9IGlt
YWdlU2l6ZS53aWR0aCgpICogNDsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlcjsKLQotICAgIGlmIChjb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsK
LSAgICAgICAgdW5zaWduZWQgY2hhciogY29waWVkUGl4ZWxzOwotCi0gICAgICAgIGlmICghdHJ5
RmFzdENhbGxvYyhpbWFnZVNpemUuaGVpZ2h0KCksIHJvd0J5dGVzKS5nZXRWYWx1ZShjb3BpZWRQ
aXhlbHMpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1lbWNweShjb3BpZWRQaXhl
bHMsIGltYWdlUGl4ZWxzLCByb3dCeXRlcyAqIGltYWdlU2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICAg
ICAgc2l6ZV90IGRhdGFTaXplID0gcm93Qnl0ZXMgKiBpbWFnZVNpemUuaGVpZ2h0KCk7Ci0gICAg
ICAgIHZlcmlmeUltYWdlQnVmZmVySXNCaWdFbm91Z2goY29waWVkUGl4ZWxzLCBkYXRhU2l6ZSk7
Ci0gICAgICAgIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRo
RGF0YSgwLCBjb3BpZWRQaXhlbHMsIGRhdGFTaXplLCByZWxlYXNlSW1hZ2VEYXRhKSk7Ci0gICAg
fSBlbHNlIHsKICAgICAgICAgc2l6ZV90IGRhdGFTaXplID0gcm93Qnl0ZXMgKiBpbWFnZVNpemUu
aGVpZ2h0KCk7CisgICAgdWludDhfdCogaW1hZ2VQaXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+
ZGF0YSgpOwogICAgICAgICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGltYWdlUGl4ZWxz
LCBkYXRhU2l6ZSk7Ci0gICAgICAgIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlk
ZXJDcmVhdGVXaXRoRGF0YSgwLCBpbWFnZVBpeGVscywgZGF0YVNpemUsIDApKTsKLSAgICB9Cisg
ICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoJmltYWdlRGF0YS5sZWFrUmVmKCksIGltYWdlUGl4
ZWxzLCBkYXRhU2l6ZSwgcmVsZWFzZUltYWdlRGF0YSkpOwogCi0gICAgYXV0byBpbWFnZSA9IE5h
dGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCByb3dCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYo
KSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMy
SG9zdCwKKyAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1h
Z2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIHJv
d0J5dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBiaXRtYXBJbmZvLAogICAgICAgICBkYXRhUHJv
dmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkpOwogCiAg
ICAgLy8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRoZSBjYW52YXMncyBjb250ZW50IHRvIGJlIHJl
c2l6ZWQgb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5oCmluZGV4IGQ1ZTQxNjhlMzFiZWI4ZjJiYjc3NGNmN2RlMWU5NWY4ZDBiOTk2MTkuLjRk
ZWQ4ZTVmOTQ5ODI2NzE3NDZjOWU3ZjUzM2FhYzZiMThhYzZiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaApAQCAtNjMsNiArNjMsMTAg
QEAgcHVibGljOgogICAgIC8vIFByZXBhcmVzIHRoZSB0YXJnZXQgZm9yIGRpc3BsYXkgd2l0aCBh
IGNvbnRlbnRzIGJ1ZmZlci4KICAgICB2aXJ0dWFsIHZvaWQgcHJlc2VudChCdWZmZXIpID0gMDsK
IAorICAgIC8vIFJldHVybnMgdGhlIG1vc3QgcmVjZW50IHByZXNlbnRlZCBkaXNwbGF5IGJ1ZmZl
ci4gVGhlIHJlZmVyZW5jZSBpcyB2YWxpZCB1bnRpbAorICAgIC8vIG5leHQgcHJlc2VudCwgcmVj
eWNsZUJ1ZmZlciBvciBkZXRhY2hDbGllbnQgY2FsbC4KKyAgICB2aXJ0dWFsIGNvbnN0IEJ1ZmZl
ciYgZGlzcGxheUJ1ZmZlcigpIGNvbnN0ID0gMDsKKwogICAgIC8vIERldGFjaGVzIHRoZSBjbGll
bnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVyIG1ldGFkYXRhIGhhbmRs
ZS4KICAgICAvLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJlZW4gc3VibWl0dGVkLCBy
ZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUgY2FsbGluZwogICAgIC8v
IHRoaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCA4
OTFlOTc4M2UyNWZkNDc4NGUzNjg2M2IzZTZlNjgyYzI5NWNiNDI0Li5kYmU5YzA1ZDMyOGI2NWMy
NzVlYzk1MTIwNDYwMjRmM2RhNDBjODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0KQEAgLTczMCw2ICs3MzAsMzcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsK
IH0KIAorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21w
b3NpdGVkUmVzdWx0cygpCit7CisgICAgYXV0byYgZGlzcGxheUJ1ZmZlciA9IG1fc3dhcENoYWlu
LT5kaXNwbGF5QnVmZmVyKCk7CisgICAgaWYgKCFkaXNwbGF5QnVmZmVyLnN1cmZhY2UgfHwgIWRp
c3BsYXlCdWZmZXIuaGFuZGxlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoZGlz
cGxheUJ1ZmZlci5zdXJmYWNlLT5zaXplKCkgIT0gZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gTm90ZTogV2UgYXJlIHVzaW5nIEdM
IHRvIHJlYWQgdGhlIElPU3VyZmFjZS4gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywgdGhlcmUgYXJl
IG5vIGNvbnZpbmllbnQKKyAgICAvLyBmdW5jdGlvbnMgdG8gY29udmVydCB0aGUgSU9TdXJmYWNl
IHBpeGVsIGRhdGEgdG8gSW1hZ2VEYXRhLiBUaGUgaW1hZ2UgZGF0YSBlbmRzIHVwIGJlaW5nCisg
ICAgLy8gZHJhd24gdG8gYSBJbWFnZUJ1ZmZlciwgYnV0IGF0IHRoZSB0aW1lIHRoZXJlJ3Mgbm8g
ZnVuY3Rpb25zIHRvIGNvbnN0cnVjdCBhIE5hdGl2ZUltYWdlCisgICAgLy8gb3V0IG9mIGFuIElP
U3VyZmFjZSBpbiBzdWNoIGEgd2F5IHRoYXQgZHJhd2luZyB0aGUgTmF0aXZlSW1hZ2Ugd291bGQg
YmUgZ3VhcmFudGVlZCBsZWF2ZQorICAgIC8vIHRoZSBJT1N1cmZhY2UgYmUgdW5yZWZlbmNlZCBh
ZnRlciB0aGUgZHJhdyBjYWxsIGZpbmlzaGVzLgorICAgIFNjb3BlZFRleHR1cmUgdGV4dHVyZTsK
KyAgICBHQ0dMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQo
KTsKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJhd2lu
Z0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeSgpLCB0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0
ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7CisgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVU
YXJnZXQsIHRleHR1cmUpOworICAgIGlmICghRUdMX0JpbmRUZXhJbWFnZShtX2Rpc3BsYXlPYmos
IGRpc3BsYXlCdWZmZXIuaGFuZGxlLCBFR0xfQkFDS19CVUZGRVIpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgU2NvcGVkRnJhbWVidWZmZXIgZmJvOworICAg
IFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIGZib0JpbmRpbmcobV9pc0Zvcldl
YkdMMiwgbV9zdGF0ZS5ib3VuZFJlYWRGQk8sIGZibyk7CisgICAgZ2w6OkZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZVRhcmdl
dCwgdGV4dHVyZSwgMCk7CisgICAgQVNTRVJUKGdsOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdM
X0ZSQU1FQlVGRkVSKSA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSk7CisKKyAgICBhdXRvIHJl
c3VsdCA9IHJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKTsKKworICAgIEVHTEJvb2xlYW4gcmVs
ZWFzZU9rID0gRUdMX1JlbGVhc2VUZXhJbWFnZShtX2Rpc3BsYXlPYmosIGRpc3BsYXlCdWZmZXIu
aGFuZGxlLCBFR0xfQkFDS19CVUZGRVIpOworICAgIEFTU0VSVF9VTlVTRUQocmVsZWFzZU9rLCBy
ZWxlYXNlT2spOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJHTExheWVyLm1tCmluZGV4IDM4NTk3ZTRhOGY2MzNhNWVlNWRiNzQ5MzMwMjJkYzIzN2Zl
N2U0N2MuLjAzMTM4ZWYxNDMwOTg4ZDcxNWE5OGI3Nzc3ZDNhNTM4OGEzMjk5YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5t
bQpAQCAtMzksNiArMzksMTAgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMTGF5ZXJTd2Fw
Q2hhaW4oV2ViR0xMYXllciogbGF5ZXIpICA6IG1fbGF5ZXIobGF5ZXIpIHsgfTsKICAgICB+V2Vi
R0xMYXllclN3YXBDaGFpbigpIG92ZXJyaWRlID0gZGVmYXVsdDsKICAgICB2b2lkIHByZXNlbnQo
QnVmZmVyKSBvdmVycmlkZTsKKyAgICBjb25zdCBCdWZmZXImIGRpc3BsYXlCdWZmZXIoKSBjb25z
dCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlcjsKKyAgICB9
CiAgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYg
KG1fc3BhcmVCdWZmZXIuc3VyZmFjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5jcHAKaW5kZXggMDY5ZDI4NmNlNGViYTQ4MjllMGM3MzgzZTJmM2U4YmVlNzJmZTI5Mi4uMmZl
Yjc0YzJmYWQxYjJhNjJmZjYwYzYxMjVkMWI4ZmNjZjVkYjU2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaWYgRU5BQkxFKFdFQkdM
KQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
KyNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTk0LDYgKzE5Niw1MCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB9CiAjZW5kaWYKIAordm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyKQoreworICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGltYWdlRGF0YSA9IHJlYWRSZW5kZXJp
bmdSZXN1bHRzKCk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBw
YWludFRvQ2FudmFzKGltYWdlRGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBpbWFnZUJ1ZmZlci0+YmFj
a2VuZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciogaW1hZ2VCdWZmZXIpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGlmIChnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gaW1hZ2VEYXRhID0gcmVhZENvbXBvc2l0ZWRS
ZXN1bHRzKCk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBwYWlu
dFRvQ2FudmFzKGltYWdlRGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBpbWFnZUJ1ZmZlci0+YmFja2Vu
ZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0
YSgpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgaWYgKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxw
aGEgd291bGQgaW52b2x2ZSB1bnByZW11bHRpcGx5aW5nLCB3aGljaCBpcworICAgIC8vIGxvc3N5
LgorICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7Cit9
CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGY1MjRkZTky
ZGNkOWE1OThiMGZiZWY4ZDMzYjljNDQwOWI4Y2QxYjAuLjc4MDk2ZTJlYjA4NzZmOTUyN2M4NTQ3
OTBkMWFmYTczNTEyMGM4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBA
IC00MjgsOSArNDI4LDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZpbmFsOwogCiAgICAgLy8gSGVscGVy
IG1ldGhvZHMuCi0KLSAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciog
aW1hZ2VQaXhlbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50U2l6ZSYgY2Fu
dmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7Ci0KICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdl
ZCgpIGZpbmFsOwogICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZpbmFsOwogICAgIGJv
b2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CkBAIC00NTAsNyArNDQ3LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciopIGZpbmFsOwogICAgIFJlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
SW1hZ2VEYXRhKCkgZmluYWw7Ci0gICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52
YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b0NhbnZhcyhJbWFnZUJ1ZmZlciopIGZpbmFsOwogCiAjaWYgVVNFKE9QRU5HTCkgJiYgRU5BQkxF
KFdFQkdMMikKICAgICB2b2lkIHByaW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCk7CkBAIC01
MzAsMTAgKzUyNywxMSBAQCBwcml2YXRlOgogICAgIC8vIERpZCB0aGUgbW9zdCByZWNlbnQgZHJh
d2luZyBvcGVyYXRpb24gbGVhdmUgdGhlIEdQVSBpbiBhbiBhY2NlcHRhYmxlIHN0YXRlPwogICAg
IHZvaWQgY2hlY2tHUFVTdGF0dXMoKTsKIAotICAgIC8vIFJlYWQgcmVuZGVyaW5nIHJlc3VsdHMg
aW50byBhIHBpeGVsIGFycmF5IHdpdGggdGhlIHNhbWUgZm9ybWF0IGFzIHRoZQotICAgIC8vIGJh
Y2tidWZmZXIuCi0gICAgdm9pZCByZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25lZCBjaGFyKiBw
aXhlbHMsIGludCBwaXhlbHNTaXplKTsKLSAgICB2b2lkIHJlYWRQaXhlbHNBbmRDb252ZXJ0VG9C
R1JBSWZOZWNlc3NhcnkoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2ln
bmVkIGNoYXIqIHBpeGVscyk7CisKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiByZWFkUmVuZGVyaW5n
UmVzdWx0cygpOworICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlYWRDb21wb3NpdGVkUmVzdWx0cygp
OworICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKTsKKyAg
ICB2b2lkIHBhaW50VG9DYW52YXMoUmVmPEltYWdlRGF0YT4mJiwgY29uc3QgSW50U2l6ZSYgY2Fu
dmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBib29sIHJlc2hhcGVGQk9zKGNvbnN0
IEludFNpemUmKTsKICAgICB2b2lkIHByZXBhcmVUZXh0dXJlSW1wbCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCBmNDE0ZjljOTYzNGQ2MWI4ZDkw
MTVkNWE2YWZhNTI3Y2MzNDJiZThmLi4yOWRmN2M5MDEzY2I5MTU5MzRhYmFiODk0ZmFiMjZjOWQ3
ZmU3NzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2lmIEVOQUJMRShXRUJHTCkgJiYgVVNFKE9QRU5HTCkKIAogI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgpAQCAtNjEsMzcgKzYyLDI2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vz
c2FyeShpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciog
cGl4ZWxzKQorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQ
aXhlbHNGb3JQYWludFJlc3VsdHMoKQogewotICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmli
dXRlcygpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoZ2V0SW50ZXJu
YWxGcmFtZWJ1ZmZlclNpemUoKSk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgR0xpbnQgcGFja0FsaWdubWVudCA9IDQ7CisgICAgYm9vbCBtdXN0
UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSBmYWxzZTsKKyAgICA6OmdsR2V0SW50ZWdlcnYoR0xfUEFD
S19BTElHTk1FTlQsICZwYWNrQWxpZ25tZW50KTsKKyAgICBpZiAocGFja0FsaWdubWVudCA+IDQp
IHsKKyAgICAgICAgOjpnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05NRU5ULCA0KTsKKyAgICAg
ICAgbXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gdHJ1ZTsKKyAgICB9CiAKLSAgICAvLyBOVklE
SUEgZHJpdmVycyBoYXZlIGEgYnVnIHdoZXJlIGNhbGxpbmcgcmVhZFBpeGVscyBpbiBCR1JBIGNh
biByZXR1cm4gdGhlIHdyb25nIHZhbHVlcyBmb3IgdGhlIGFscGhhIGNoYW5uZWwgd2hlbiB0aGUg
YWxwaGEgaXMgb2ZmIGZvciB0aGUgY29udGV4dC4KLSAgICBpZiAoIWF0dHJzLmFscGhhICYmIGdl
dEV4dGVuc2lvbnMoKS5pc05WSURJQSgpKSB7Ci0gICAgICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHks
IHdpZHRoLCBoZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7Ci0jaWYg
VVNFKEFDQ0VMRVJBVEUpCi0gICAgICAgIHZJbWFnZV9CdWZmZXIgc3JjOwotICAgICAgICBzcmMu
aGVpZ2h0ID0gaGVpZ2h0OwotICAgICAgICBzcmMud2lkdGggPSB3aWR0aDsKLSAgICAgICAgc3Jj
LnJvd0J5dGVzID0gd2lkdGggKiA0OwotICAgICAgICBzcmMuZGF0YSA9IHBpeGVsczsKLQotICAg
ICAgICB2SW1hZ2VfQnVmZmVyIGRlc3Q7Ci0gICAgICAgIGRlc3QuaGVpZ2h0ID0gaGVpZ2h0Owot
ICAgICAgICBkZXN0LndpZHRoID0gd2lkdGg7Ci0gICAgICAgIGRlc3Qucm93Qnl0ZXMgPSB3aWR0
aCAqIDQ7Ci0gICAgICAgIGRlc3QuZGF0YSA9IHBpeGVsczsKLQotICAgICAgICAvLyBTd2FwIHBp
eGVsIGNoYW5uZWxzIGZyb20gUkdCQSB0byBCR1JBLgotICAgICAgICBjb25zdCB1aW50OF90IG1h
cFs0XSA9IHsgMiwgMSwgMCwgMyB9OwotICAgICAgICB2SW1hZ2VQZXJtdXRlQ2hhbm5lbHNfQVJH
Qjg4ODgoJnNyYywgJmRlc3QsIG1hcCwga3ZJbWFnZU5vRmxhZ3MpOwotI2Vsc2UKLSAgICAgICAg
aW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICAgICAgc3RkOjpzd2FwKHBpeGVs
c1tpXSwgcGl4ZWxzW2kgKyAyXSk7Ci0jZW5kaWYKLSAgICB9IGVsc2UKLSAgICAgICAgOjpnbFJl
YWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgR0xfQkdSQSwgR0xfVU5TSUdORURfSU5UXzhf
OF84XzhfUkVWLCBwaXhlbHMpOworICAgIDo6Z2xSZWFkUGl4ZWxzKDAsIDAsIGltYWdlRGF0YS0+
d2lkdGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
aW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSk7CisKKyAgICBpZiAobXVzdFJlc3RvcmVQYWNrQWxp
Z25tZW50KQorICAgICAgICA6OmdsUGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIHBhY2tB
bGlnbm1lbnQpOwogCisgICAgcmV0dXJuIGltYWdlRGF0YTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENv
bW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDJkZTE4NWE2NjgxMzBhMzYyYzEyNzY3
ZjM4M2Y1N2YxMzQ5ZGQ0ODEuLmZjZGI3MTFhNmY4Y2IwNTllMDBiNzRjZDBjY2I3YzlhY2U5MGRh
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcApA
QCAtMTM3LDY0ICsxMzcsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0
ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaQogICAgIH0KIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQotewotICAgIENoZWNrZWQ8aW50LCBSZWNvcmRP
dmVyZmxvdz4gcm93Qnl0ZXMgPSBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+KG1fY3VycmVu
dFdpZHRoKSAqIDQ7Ci0gICAgaWYgKHJvd0J5dGVzLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgQ2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PiB0b3RhbEJ5dGVzQ2hl
Y2tlZCA9IHJvd0J5dGVzICogbV9jdXJyZW50SGVpZ2h0OwotICAgIGlmICh0b3RhbEJ5dGVzQ2hl
Y2tlZC5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpbnQgdG90YWxCeXRl
cyA9IHRvdGFsQnl0ZXNDaGVja2VkLnVuc2FmZUdldCgpOwotCi0gICAgYXV0byBwaXhlbHMgPSBt
YWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4odG90YWxCeXRlcyk7Ci0gICAgaWYgKCFwaXhl
bHMpCi0gICAgICAgIHJldHVybjsKLQotICAgIHJlYWRSZW5kZXJpbmdSZXN1bHRzKHBpeGVscy5n
ZXQoKSwgdG90YWxCeXRlcyk7Ci0KLSAgICBpZiAoIWNvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVs
dGlwbGllZEFscGhhKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsg
aSArPSA0KSB7Ci0gICAgICAgICAgICAvLyBQcmVtdWx0aXBseSBhbHBoYS4KLSAgICAgICAgICAg
IHBpeGVsc1tpICsgMF0gPSBzdGQ6Om1pbigyNTUsIHBpeGVsc1tpICsgMF0gKiBwaXhlbHNbaSAr
IDNdIC8gMjU1KTsKLSAgICAgICAgICAgIHBpeGVsc1tpICsgMV0gPSBzdGQ6Om1pbigyNTUsIHBp
eGVsc1tpICsgMV0gKiBwaXhlbHNbaSArIDNdIC8gMjU1KTsKLSAgICAgICAgICAgIHBpeGVsc1tp
ICsgMl0gPSBzdGQ6Om1pbigyNTUsIHBpeGVsc1tpICsgMl0gKiBwaXhlbHNbaSArIDNdIC8gMjU1
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHBhaW50VG9DYW52YXMocGl4ZWxzLmdldCgpLCBJ
bnRTaXplKG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpLCBpbWFnZUJ1ZmZlci0+YmFj
a2VuZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Ci19Ci0KLWJvb2wgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciopCi17Ci0gICAgLy8gTm90IG5lZWRlZCBhdCB0aGUgbW9tZW50LCBzbyByZXR1cm4gdGhhdCBu
b3RoaW5nIHdhcyBkb25lLgotICAgIHJldHVybiBmYWxzZTsKLX0KLQotUmVmUHRyPEltYWdlRGF0
YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VE
YXRhKCkKLXsKLSAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxwaGEgd291bGQgaW52b2x2
ZSB1bnByZW11bHRpcGx5aW5nLCB3aGljaCBpcwotICAgIC8vIGxvc3N5LgotICAgIGlmIChjb250
ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBhdXRvIGltYWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKEludFNpemUobV9j
dXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCkpOwotICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVs
cyA9IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCk7Ci0gICAgQ2hlY2tlZDxpbnQsIFJlY29yZE92
ZXJmbG93PiB0b3RhbEJ5dGVzQ2hlY2tlZCA9IDQgKiBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZs
b3c+KG1fY3VycmVudFdpZHRoKSAqIENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4obV9jdXJy
ZW50SGVpZ2h0KTsKLSAgICBpZiAodG90YWxCeXRlc0NoZWNrZWQuaGFzT3ZlcmZsb3dlZCgpKQot
ICAgICAgICByZXR1cm4gaW1hZ2VEYXRhOwotICAgIGludCB0b3RhbEJ5dGVzID0gdG90YWxCeXRl
c0NoZWNrZWQudW5zYWZlR2V0KCk7Ci0KLSAgICByZWFkUmVuZGVyaW5nUmVzdWx0cyhwaXhlbHMs
IHRvdGFsQnl0ZXMpOwotCi0gICAgLy8gQ29udmVydCB0byBSR0JBLgotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICBzdGQ6OnN3YXAocGl4ZWxzW2ld
LCBwaXhlbHNbaSArIDJdKTsKLQotICAgIHJldHVybiBpbWFnZURhdGE7Ci19Ci0KIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVUZXh0dXJlKCkKIHsKICAgICBpZiAobV9sYXll
ckNvbXBvc2l0ZWQpCkBAIC0yMzYsMTUgKzE3OCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnByZXBhcmVUZXh0dXJlKCkKICAgICA6OmdsRmx1c2goKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHModW5zaWduZWQgY2hhciAq
cGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSkKK1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cygpCiB7Ci0gICAgaWYgKHBpeGVsc1NpemUg
PCBtX2N1cnJlbnRXaWR0aCAqIG1fY3VycmVudEhlaWdodCAqIDQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotCiAg
ICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwogICAgIGlmIChjb250ZXh0QXR0cmlidXRl
cygpLmFudGlhbGlhcykgewogICAgICAgICByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5
KCk7CkBAIC0yNTcsMjIgKzE5MiwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25lZCBjaGFyICpwaXhlbHMsIGludCBwaQogICAgICAg
ICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZG
RVIsIG1fZmJvKTsKICAgICAgICAgfQogICAgIH0KLQotICAgIEdMaW50IHBhY2tBbGlnbm1lbnQg
PSA0OwotICAgIGJvb2wgbXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gZmFsc2U7Ci0gICAgOjpn
bEdldEludGVnZXJ2KEdMX1BBQ0tfQUxJR05NRU5ULCAmcGFja0FsaWdubWVudCk7Ci0gICAgaWYg
KHBhY2tBbGlnbm1lbnQgPiA0KSB7Ci0gICAgICAgIDo6Z2xQaXhlbFN0b3JlaShHTF9QQUNLX0FM
SUdOTUVOVCwgNCk7Ci0gICAgICAgIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IHRydWU7Ci0g
ICAgfQotCi0gICAgcmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeSgwLCAwLCBt
X2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBwaXhlbHMpOwotCi0gICAgaWYgKG11c3RS
ZXN0b3JlUGFja0FsaWdubWVudCkKLSAgICAgICAgOjpnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJ
R05NRU5ULCBwYWNrQWxpZ25tZW50KTsKLQorICAgIGF1dG8gcmVzdWx0ID0gcmVhZFBpeGVsc0Zv
clBhaW50UmVzdWx0cygpOwogICAgIGlmIChtdXN0UmVzdG9yZUZCTykKICAgICAgICAgOjpnbEJp
bmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1fc3RhdGUu
Ym91bmREcmF3RkJPKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCAwZDQ3NmMyMjlkNmY2ZWU5NmNjZjk5
M2Q4MWQ1YzNkZDY1MjE1ZTQ4Li45MzlmYjkzZTFjMjEzNDQ5ZDA3ZTAzZTVjYmU4MGFhODFlMThl
ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC02NCwx
NCArNjQsMjYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbHMoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwKICAgICAgICAgOjpnbEJpbmRGcmFt
ZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZOZWNlc3Nh
cnkoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBp
eGVscykKK1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4
ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMpOwotICAgIGludCB0b3Rh
bEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgIGlmIChpc0dMRVMyQ29tcGxpYW50KCkp
IHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAg
ICAgICAgICBzdGQ6OnN3YXAocGl4ZWxzW2ldLCBwaXhlbHNbaSArIDJdKTsgLy8gQ29udmVydCB0
byBCR1JBLgorICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoZ2V0SW50ZXJu
YWxGcmFtZWJ1ZmZlclNpemUoKSk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgR0xpbnQgcGFja0FsaWdubWVudCA9IDQ7CisgICAgYm9vbCBtdXN0
UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSBmYWxzZTsKKyAgICA6OmdsR2V0SW50ZWdlcnYoR0xfUEFD
S19BTElHTk1FTlQsICZwYWNrQWxpZ25tZW50KTsKKyAgICBpZiAocGFja0FsaWdubWVudCA+IDQp
IHsKKyAgICAgICAgOjpnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05NRU5ULCA0KTsKKyAgICAg
ICAgbXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gdHJ1ZTsKICAgICB9CisKKyAgICA6OmdsUmVh
ZFBpeGVscygwLCAwLCBpbWFnZURhdGEtPndpZHRoKCksIGltYWdlRGF0YS0+aGVpZ2h0KCksIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCkpOworCisg
ICAgaWYgKG11c3RSZXN0b3JlUGFja0FsaWdubWVudCkKKyAgICAgICAgOjpnbFBpeGVsU3RvcmVp
KEdMX1BBQ0tfQUxJR05NRU5ULCBwYWNrQWxpZ25tZW50KTsKKworICAgIHJldHVybiBpbWFnZURh
dGE7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0
IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXgg
ZTdjNDBjOTg1Y2I3ZDI3MjI4NjlhNWRmZjk2OTE5NDcwNzdhZjQ2Yy4uOGUyZDFmYzY1MTg2Mjgz
OTVlOTc0MWM0NGU3YWM4NTFiMDhlZjYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hLmNwcApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgLy8gR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4gb3ZlcnJpZGVzLgogICAgIEJ1ZmZlciByZWN5Y2xlQnVmZmVy
KCkgZmluYWw7CiAgICAgdm9pZCBwcmVzZW50KEJ1ZmZlcikgZmluYWw7CisgICAgY29uc3QgQnVm
ZmVyJiBkaXNwbGF5QnVmZmVyKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCogZGV0YWNoQ2xpZW50
KCkgZmluYWw7CiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluOjpCdWZmZXIgbV9kaXNwbGF5QnVmZmVyOwpAQCAtNzYsNiArNzcsMTEgQEAgdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVzZW50KEJ1ZmZlciBidWZmZXIpCiAgICAgbV9k
aXNwbGF5QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogfQogCitjb25zdCBHcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyJiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hOjpkaXNwbGF5QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kaXNwbGF5QnVmZmVy
OworfQorCiB2b2lkKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpkZXRhY2hDbGllbnQo
KQogewogICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZGlzcGxheUJ1ZmZlci5oYW5kbGUsIG51
bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXgg
MzRhMDZmYjAwNzZhY2QzZmQzMmIzYTRiNmIwOWQ2OGQwMjdiYjU4OC4uNTNkYjYxNTBjMWQ4ZWM4
MjVlMjNhYmVmNjUxZTViM2I5Nzk5MjQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuY3BwCkBAIC0xMjEsNiArMTIxLDExIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIq
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmgKaW5kZXggZDk5ZWRhMjlmNmRiNWUxODE5NzEzMTc4ZjJhYTUzMWI0ZjVkZDZlMC4uYTE0
MzkzNDdkODllMGFkYmYwOGE0MmE0MjU5MWJiYjNkYmViMjFlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXIqKSBmaW5hbDsKICAgICBSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgp
IGZpbmFsOworICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6
OkltYWdlQnVmZmVyKikgZmluYWw7CiAKICAgICAvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRl
ZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJn
bCBzY3JpcHQuCiAgICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416415</attachid>
            <date>2020-12-17 04:20:31 -0800</date>
            <delta_ts>2020-12-17 04:44:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219946-20201217142029.patch</filename>
            <type>text/plain</type>
            <size>63840</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMwMGNiMzk4NTY1MjRm
YzAxZWY4N2I5ZDkxYWQ4NWRjZmU3YTY5ZS4uN2IyZTM4NjdmYjQ1ZWUyMzI3MmRhNzZkMmM1ZmI5
YTU5OTk4NGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAyMC0xMi0xNyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04g
KHIyNjgzODYpOiBTbmFwc2hvdHMgb2YgV2ViR0wgY29udGVudCBpbiB0aGUgdGFiIHBpY2tlciBk
b24ndCB3b3JrIChibGFjayBtYXAgb24gR29vZ2xlIE1hcHMpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcyMDEzNzg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZpeCBjYXNlIHdoZXJlIFdlYkdMIHdvdWxkIGZpcnN0IGJlIGRpc3BsYXllZCB3aXRo
IGhhcmR3YXJlIGNvZGUgcGF0aAorICAgICAgICBhbmQgdGhlbiBkaXNwbGF5ZWQgd2l0aCBzb2Z0
d2FyZSBjb2RlIHBhdGggKHBhaW50aW5nIGZyb20gdGhlIHBhaW50CisgICAgICAgIHRyZWUpLiBG
b3JtZXIgaGFwcGVucyB3aGVuIHVzZXIgbG9va3MgYXQgdGhlIHBhZ2UgYW5kIGxhdHRlciBoYXBw
ZW5zCisgICAgICAgIHdoZW4gcHJpbnRpbmcgb3Igd2hlbiBTYWZhcmkgdGFrZXMgYSBzbmFwc2hv
dC4KKworICAgICAgICBUaGlzIGlzIG5vdCBhIHJlYWwgcmVncmVzc2lvbiBvZiByMjY4Mzg2LiBQ
cmlvciB0byB0aGF0LCB0aGUgc29mdHdhcmUKKyAgICAgICAgZGlzcGxheSB3b3VsZCBoYXZlIHVz
ZWQgdW5pbml0aWFsaXplZCBJT1N1cmZhY2UgY29udGVudHMgb3IgY29udGVudHMgb2YKKyAgICAg
ICAgMS0yIGZyYW1lcyBwcmlvciBhbmQgd291bGQgbGVhdmUgdGhlIGhhcmR3YXJlIGRpc3BsYXkg
YnVmZmVyIG5vdAorICAgICAgICB1cGRhdGVkLgorCisgICAgICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaXMgdXNlZCBmb3IgdHdvCisg
ICAgICAgIHB1cnBvc2VzOgorICAgICAgICAgIDEpIEltYWdlIGV4dHJhY3Rpb24gdXNlcywgc3Vj
aCBhcyB0b0RhdGEoKSBvcgorICAgICAgICAgICAgIGNvbnN0cnVjdGluZyBhbiBJbWFnZSBvdXQg
b2YgdGhlIGNvbnRlbnRzLgorICAgICAgICAgIDIpIFBhaW50aW5nIHRoZSByZW5kZXJpbmcgdG8g
dGhlIGRvY3VtZW50IGR1cmluZyBzb2Z0d2FyZSBkaXNwbGF5LgorCisgICAgICAgIFRoZSAxKSBj
YXNlIHVzZXMgYWx3YXlzIHRoZSBkcmF3aW5nIGJ1ZmZlci4KKworICAgICAgICBUaGUgMikgY2Fz
ZSBwcmVzZW50cyB0aGUgZHJhd2luZyBidWZmZXIgYXMgdGhlIG5ldyBkaXNwbGF5IGJ1ZmZlciBp
ZgorICAgICAgICB0aGVyZSBhcmUgY2hhbmdlcyB0byB0aGUgZHJhd2luZyBidWZmZXIgYW5kIHVz
ZXMgdGhlIHBvdGVudGlhbGx5IG5ldworICAgICAgICBkaXNwbGF5IGJ1ZmZlciB0byBkaXNwbGF5
LgorCisgICAgICAgIEZvciAyRCBjYW52YXMsIHRoZXNlIHR3byBjYXNlcyBhcmUgdGhlIHNhbWUg
Y2FzZS4gRm9yIFdlYkdMIHRoZXkgYXJlCisgICAgICAgIGRpZmZlcmVudC4KKworICAgICAgICBU
aGUgZGlzcGxheSBpcyBkZXN0cnVjdGl2ZSBmb3IgV2ViR0wgZHJhd2luZyBidWZmZXIgd2hlbgor
ICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPT0gZmFsc2UuIFRoaXMgbWVhbnMgdGhhdCBp
ZiBoYXJkd2FyZSBkaXNwbGF5IGhhcworICAgICAgICBoYXBwZW5lZCwgd2UgbXVzdCByZWFkIHRo
ZSBkaXNwbGF5IGJ1ZmZlciBkdXJpbmcgY2FzZSAyLiBUaGlzIGNvZGUgd2FzCisgICAgICAgIG1p
c3NpbmcsIHNvIHRoZSBzY2VuYXJpbyBjb3VsZCBub3QgaGF2ZSBldmVyIHdvcmtlZC4KKworICAg
ICAgICBUaGUgcHJldmlvdXMgY29kZSB0cmllZCB0byB3b3JrYXJvdW5kIHRoaXMgYnkgdGhlCisg
ICAgICAgIFdlYkdMR3JhcGhpY3NDb250ZXh0QmFzZSB0byBkZXRlY3Qgd2hhdCB0aGUgb3duZXIg
aW50ZW5kZWQgd2l0aCB0aGUKKyAgICAgICAgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMs
IHRoZW4gc2tpcCB0aGUgcG90ZW50aWFsIGRyYXdpbmcgYnVmZmVyCisgICAgICAgIGNsZWFyLCBy
ZWFkIHRoZSBkcmF3aW5nIGJ1ZmZlciBhbmQgcHV0IHRoYXQgZGF0YSB0byB0aGUgInByZXNlbnRh
dGlvbgorICAgICAgICBjb3B5IiBvZiB0aGUgSFRNTEVsZW1lbnQuIFRoaXMgaXMgbm90IG9rLCBh
cyB0aGUgdW5jbGVhcmVkIGRyYXdpbmcKKyAgICAgICAgYnVmZmVyIGhhcyBub24tZGV0ZXJtaW5p
c3RpYyBjb250ZW50cyBpbiBjYXNlIHRoZSBjb250ZXh0IGhhcyBkaXNwbGF5ZWQKKyAgICAgICAg
YW5kIHRoZSBjbGllbnQgaGFzIG5vdCBkcmF3biBuZXcgY29udGVudCB0byB0aGUgZHJhd2luZyBi
dWZmZXIuCisKKyAgICAgICAgRml4IGJ5IHJlbW92aW5nIHRoZSAicHJlc2VudGF0aW9uIGNvcHki
IG9mIHRoZSBIVE1MQ2FudmFzLiBUaGUKKyAgICAgICAgcHJlc2VudGF0aW9uIGltYWdlIGNhbiBh
bHdheXMgYmUgZHJhd24gdG8gdGhlIENhbnZhc0Jhc2U6OmJ1ZmZlcigpOgorICAgICAgICAgLSBU
aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGlzIHRoZSBwcmVzZW50YXRpb24gaW1h
Z2UgaWYgdGhlCisgICAgICAgICAgIGNvbnRleHQgaGFzIG5vdCBjaGFuZ2VkIHNpbmNlIHVwZGF0
aW5nIHRoZSBidWZmZXIgd2l0aCBlaXRoZXIgZHJhd2luZworICAgICAgICAgICBidWZmZXIgb3Ig
cHJldmlvdXMgZGlzcGxheSBidWZmZXIuCisgICAgICAgICAtIElmIHRoZSBjb250ZXh0IGhhcyBj
aGFuZ2VkLCB3ZSBtdXN0IHByZXNlbnQgYW5kIHB1dCB0aGUgbmV3IGRpc3BsYXkKKyAgICAgICAg
ICAgYnVmZmVyIHRvIHRoZSBDYW52YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgLSBUaGlzIGlz
IGFsc28gY29ycmVjdCBjb250ZW50cyBmb3IgdGhlIHBvdGVudGlhbCBuZXh0IGltYWdlIGV4dHJh
Y3Rpb24KKyAgICAgICAgICAgdXNlcywgdXAgdG8gYSBwb2ludCB3aGVuIGNvbnRleHQgY2hhbmdl
cy4KKyAgICAgICAgIC0gSWYgdGhlIGNvbnRleHQgY2hhbmdlcyBiZWZvcmUgYW4gaW1hZ2UgZXh0
cmFjdGlvbiB1c2UsIENhbnZhc0Jhc2U6OmJ1ZmZlcigpIGlzCisgICAgICAgICAgIHVwZGF0ZWQg
d2l0aCB0aGUgbm9ybWFsIGxvZ2ljLCB0aGUgc2FtZSBhcyB3aGF0IGhhcHBlbnMgd2hlbiBDYW52
YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgICBpcyB1cGRhdGVkIGJldHdlZW4gdHdvIGltYWdl
IGV4dHJhY3Rpb24gdXNlcy4KKworICAgICAgICBQcmlvciB0byB0aGlzLCB0aGVyZSB3YXMgYW4g
dW5uZWVkZWQgYW5kIGluY29ycmVjdGx5IGltcGxlbWVudGVkCisgICAgICAgIEdQVUNhbnZhc0Nv
bnRleHQ6Om1hcmtMYXllckNvbXBvc2l0ZWQoKS4gVGhlIHNlcXVlbmNlIHdvdWxkIGJlOgorCisg
ICAgICAgIEhUTUxDYW52YXNFbGVtZW50OjpwYWludCgpOgorICAgICAgICAgICBjYW52YXNDb250
ZXh0KCkucGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoYnVmZmVyKCkpOworICAgICAgICAg
ICBjb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlcigpKTsKKyAgICAgICAgICAgY2FudmFz
Q29udGV4dCgpLm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKworICAgICAgICBUaGUgbWFya0xheWVy
Q29tcG9zaXRlZCgpIHdvdWxkIGluY29ycmVjdGx5IG1hcmsgdGhlIFdlYkdMIGNvbnRleHQgY29t
cG9zaXRpbmcKKyAgICAgICAgYmVpbmcgZG9uZSwgYnV0IHRoZXJlIHdhcyBubyBjb21wb3NpdGlu
ZyBhY3R1YWxseSBoYXBwZW5pbmcuIFRoZSBHUFUtc2lkZQorICAgICAgICBkaXNwbGF5IGJ1ZmZl
ciB3b3VsZCBiZSBpbmNvcnJlY3QuIEFsc28sIHRoZXJlIGlzIG5vdGhpbmcgdG8gYmUgZG9uZSBh
dAorICAgICAgICB0aGlzIHN0YWdlLCBhcyB0aGUgY29tcG9zaXRpbmcgb2YgV2ViR0wgY29udGV4
dCBpdHNlbGYgaXMgYWxyZWFkeQorICAgICAgICBmaW5pc2hlZCBhdCBXZWJHTCBjb250ZXh0IHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgcmV0dXJuLgorCisgICAgICAgIEluc3RlYWQs
IGFkZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgp
IHdoaWNoIHNpZ25hbHMgdGhhdCBuZXh0CisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKCkgaXMgYSBkaXNwbGF5IG9wZXJhdGlvbi4gVGhpcyBjYW4gYmUgdXNlZCB0byB0byBk
ZXRlY3QgdGhlCisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaW4gd2hp
Y2ggd2UgbXVzdCBwcmVzZW50IHRoZSBkcmF3aW5nIGJ1ZmZlciBhcworICAgICAgICBkaXNwbGF5
IGJ1ZmZlci4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGRpc3BsYXkgYnVmZmVyIHJlYWQgd2l0
aCBPcGVuR0wuCisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGRyYXdpbmcgYnVmZmVyIHJlYWQgY29k
ZSB0byBiZSBhYmxlIHRvIHJldXNlIHRoZSByZWFkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBkaXNw
bGF5IGJ1ZmZlciByZWFkLiBUaGUgcmVmYWN0b3JlZCBjb2RlIHJlZHVjZXMgcmVkdW5kYW50IHRo
ZQorICAgICAgICBhbGxvY2F0aW9ucyBvZiBmdWxsLXNjcmVlbiBtYWxsb2MgYnVmZmVycyBhbmQg
ZW5zdXJlcyBhbGxvY2F0aW9uIHJlc3VsdHMgYXJlCisgICAgICAgIGNoZWNrZWQgaW5zdGVhZCBv
ZiBjcmFzaGluZyB3aXRoIG51bGxwdHIgZGVyZWZzIHdoZW4gT09NIGhhcHBlbnMuIEZpeGVzCisg
ICAgICAgIGVycm9ycyBzdWNoIGFzIHJkYXI6Ly82NzU1MzUzMSAoQ3Jhc2hUcmFjZXI6IGNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdAorICAgICAgICBXZWJDb3JlOiBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpLgorICAg
ICAgICBSZW1vdmVzIFJHQkEtPkJHUkEtPlJHQkEgY29udmVyc2lvbnMgZnJvbQorICAgICAgICBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEo
KS4KKyAgICAgICAgUmVtb3ZlcyBtYW51YWwgYWxwaGEgcHJlbXVsdGlwbGljYXRpb24gYW5kIG1h
a2VzIENHIGRyYXcgd2l0aCB1bnByZW11bHRpcGxpZWQKKyAgICAgICAgYWxwaGEuCisgICAgICAg
IENoYW5nZXMgQ2Fpcm8gdmFyaWFudCBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB0byBjb252
ZXJ0IG1hbnVhbGx5IFJHQkEtPkJHUkEKKyAgICAgICAgaW5zdGVhZCBvZiAoYmlnKSBPcGVuR0wg
ZHJpdmVyIGRvaW5nIGl0IGluIGNhc2Ugb2Ygbm9uLU5WSURJQSBwbGF0Zm9ybXMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCB0aGUgc25hcHNob3QgLyBzdytodyBkcmF3aW5nIGlzIG5vdCB0ZXN0
YWJsZSBhdCB0aGUgbW9tZW50LgorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHUFVDYW52YXNDb250ZXh0Ojpjb25maWd1
cmVTd2FwQ2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4dDo6cHJlcGFy
ZUZvckRpc3BsYXlXaXRoUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4
dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L0dQVUNhbnZhc0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYWludCk6CisgICAg
ICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9HUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByZXBhcmVGb3JEaXNwbGF5V2l0
aFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUluZGV4QXJyYXlQcmVj
aXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlRHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZlcnRleEF0dHJpYmZ2SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjppbml0VmVydGV4QXR0cmliMCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVz
dWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJl
bmRlcmluZ1Jlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmc6OlNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRCdWZmZXJCaW5kaW5nOjpTY29wZWRCdWZmZXJC
aW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6On5TY29wZWRC
dWZmZXJCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6OnF1
ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZzo6bWFya0JpbmRpbmdDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUmVzdG9yZVJl
YWRGcmFtZWJ1ZmZlckJpbmRpbmc6On5TY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRQaXhlbFN0b3JhZ2VNb2RlOjpTY29wZWRQaXhl
bFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVsU3RvcmFnZU1vZGU6
On5TY29wZWRQaXhlbFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVs
U3RvcmFnZU1vZGU6OnBpeGVsU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUGl4ZWxT
dG9yYWdlTW9kZTo6b3BlcmF0b3IgR0xpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nv
cGVkVGV4dHVyZTo6U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0
dXJlOjp+U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0dXJlOjpv
cGVyYXRvciBHTHVpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVidWZm
ZXI6OlNjb3BlZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lYnVm
ZmVyOjp+U2NvcGVkRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVi
dWZmZXI6Om9wZXJhdG9yIEdMdWludCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZWxlYXNlSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVy
ZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkQ29tcG9zaXRlZFJlc3VsdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9y
UGFpbnRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYkltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om9y
aWdpbmFsU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6bWFwcGVkU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5m
b0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cyk6CisKIDIwMjAtMTItMTQg
IExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU1NJT04o
MjcwNDM1KSBbR1N0cmVhbWVyXSBNYW55IG1lZGlhIHNvdXJjZSB0ZXN0cyBmYWlsaW5nIGFuZCB0
aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwMzI4Y2Y2ZTg0NWY3NTNlNjQyYjQ1M2I4NjMxMTgxN2Q0
YzA2YzkuLmUwODk5YTkyYmMyMGMzNTliYTgwN2IyODEwYjBkZDg5ZWIyMmRjOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTItMTcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVu
QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjY4Mzg2KTogU25hcHNob3RzIG9m
IFdlYkdMIGNvbnRlbnQgaW4gdGhlIHRhYiBwaWNrZXIgZG9uJ3Qgd29yayAoYmxhY2sgbWFwIG9u
IEdvb2dsZSBNYXBzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5OTQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjAxMzc4ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZHVtbXkgaW1wbGVt
ZW50YXRpb25zIG9mIEdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9D
YW52YXMuCisgICAgICAgIFBhaW50aW5nIHRvIGNhbnZhcyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0
IGZvciB0aGUgcmVtb3RlIEdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6ZGlzcGxh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oOgorCiAyMDIwLTEyLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gSW50cm9kdWNlIHZtRW50cnlDdXN0b21BY2Nlc3NvciBhbmQgdm1FbnRy
eUhvc3RGdW5jdGlvbiBmb3IgSklUQ2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcAppbmRleCBlMzAzNTBiNDYyYTBmZWQ0NDY2OGJm
ODk2MDI5MjkzZTExNzhlODg3Li4zOGIxNTI4ZmZjM2E5NTI1ODUwYTk0ZDY1ZWQyNzk0YTRkODA0
YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcApAQCAtOTAsMTAgKzkwLDE4IEBAIHZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgbm90aWZ5Q2FudmFzQ29udGVudENoYW5n
ZWQoKTsKIH0KIAotdm9pZCBHUFVDYW52YXNDb250ZXh0OjptYXJrTGF5ZXJDb21wb3NpdGVkKCkK
K3ZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQogewot
ICAgIGlmIChtX3N3YXBDaGFpbiAmJiBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCkpCisgICAgbV9p
c0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSB0cnVlOworfQorCit2b2lkIEdQVUNhbnZhc0NvbnRleHQ6
OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKK3sKKyAgICAvLyBGSVhNRTogVW5pbXBs
ZW1lbnRlZC4KKyAgICBpZiAobV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgJiYgbV9zd2FwQ2hhaW4g
JiYgbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpKSB7CiAgICAgICAgIG1fc3dhcENoYWluLT5zd2Fw
Q2hhaW4oKS0+cHJlc2VudCgpOworICAgICAgICBtX2lzRGlzcGxheWluZ1dpdGhQYWludCA9IGZh
bHNlOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oCmluZGV4IDZkZjIwYjRhNjQ3
ZjZhMTg3OGIzODE1NmMyZDA3MTA3NjU0MzJhOGQuLjliMGZlN2IwZDA4Y2U5M2M3ZWNhODY5NGEw
MGQxNjMyZTEzZDBjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUNhbnZhc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVDYW52YXNDb250ZXh0LmgKQEAgLTUzLDEzICs1MywxNSBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNXZWJHUFUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpIGZpbmFsOwotICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZp
bmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSBmaW5hbDsKKyAgICB2
b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgZmluYWw7CiAKICAgICAvLyBBY3Rp
dmVET01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJHUFVDYW52YXNDb250ZXh0IjsgfQogICAgIC8vIEZJWE1FOiBTdHVi
cy4KICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IH0KIAorICAgIGJvb2wgbV9pc0Rpc3BsYXlpbmdX
aXRoUGFpbnQgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxXZWJHUFVTd2FwQ2hhaW4+IG1fc3dhcENo
YWluOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRl
eCAxNjljYWE5MDAyNGQyNjc3MjMwNTA2MmY1OThkMTJjY2RkYmFiM2ZmLi41NGIzNDAxZGU5MGYy
MmE4OWI2OTYyN2ZiNDAxZDg1NTVkNTY3ZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcApAQCAtNjQyLDIwICs2NDIsMTcgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBy
KQogCiAgICAgICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgICAgIHNob3VsZFBhaW50ID0g
cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIHx8IGRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCBtX2lz
U25hcHNob3R0aW5nOwotICAgICAgICAgICAgaWYgKHNob3VsZFBhaW50KQorICAgICAgICAgICAg
aWYgKHNob3VsZFBhaW50KSB7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9y
RGlzcGxheVdpdGhQYWludCgpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChzaG91bGRQYWludCkgewogICAgICAgICAgICAgaWYgKGhhc0NyZWF0ZWRJbWFnZUJ1
ZmZlcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fcHJlc2VudGVkSW1hZ2UpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVk
SW50UmVjdChyKSwgcmVuZGVyZXIoKS0+aW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBidWZmZXIoKSkKKyAgICAg
ICAgICAgICAgICBpZiAoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gYnVmZmVyKCkpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgc25h
cHBlZEludFJlY3QocikpOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoaXNHUFVC
YXNlZCgpKQotICAgICAgICAgICAgICAgIGRvd25jYXN0PEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5n
Q29udGV4dD4oKm1fY29udGV4dCkubWFya0xheWVyQ29tcG9zaXRlZCgpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC02NjgsMTkgKzY2NSw2IEBAIGJvb2wgSFRNTENhbnZhc0VsZW1lbnQ6OmlzR1BV
QmFzZWQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHQgJiYgbV9jb250ZXh0LT5pc0dQVUJh
c2VkKCk7CiB9CiAKLXZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6Om1ha2VQcmVzZW50YXRpb25Db3B5
KCkKLXsKLSAgICBpZiAoIW1fcHJlc2VudGVkSW1hZ2UpIHsKLSAgICAgICAgLy8gVGhlIGJ1ZmZl
ciBjb250YWlucyB0aGUgbGFzdCBwcmVzZW50ZWQgZGF0YSwgc28gc2F2ZSBhIGNvcHkgb2YgaXQu
Ci0gICAgICAgIG1fcHJlc2VudGVkSW1hZ2UgPSBidWZmZXIoKS0+Y29weUltYWdlKENvcHlCYWNr
aW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKLSAgICB9Ci19Ci0KLXZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OmNsZWFyUHJlc2VudGF0aW9uQ29weSgpCi17Ci0gICAgbV9wcmVzZW50
ZWRJbWFnZSA9IG51bGxwdHI7Ci19Ci0KIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnNldFN1cmZh
Y2VTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgQ2FudmFzQmFzZTo6c2V0U2l6ZShz
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCBhZWIwMTg5
NzQ5YjU4MzMzNzQ4NDA0Yzk1YmFmZWQwNDUyOGY5Y2VmLi45YzkyMzBmNWZiYjdlNmRlNGI2OWZk
NWM4NmJlZWU0MDY0YjQ0MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oCkBAIC0xMTUsOCArMTE1LDYgQEAgcHVibGljOgogICAgIEltYWdlKiBjb3BpZWRJbWFnZSgp
IGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY2xlYXJDb3BpZWRJbWFnZSgpIGNvbnN0IGZpbmFsOwog
ICAgIFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YSgpOwotICAgIHZvaWQgbWFrZVByZXNl
bnRhdGlvbkNvcHkoKTsKLSAgICB2b2lkIGNsZWFyUHJlc2VudGF0aW9uQ29weSgpOwogCiAgICAg
U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWw7CiAKQEAgLTE5OSw3
ICsxOTcsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lzU25hcHNob3R0aW5nIHsgZmFsc2Ug
fTsKIAotICAgIG11dGFibGUgUmVmUHRyPEltYWdlPiBtX3ByZXNlbnRlZEltYWdlOwogICAgIG11
dGFibGUgUmVmUHRyPEltYWdlPiBtX2NvcGllZEltYWdlOyAvLyBGSVhNRTogVGhpcyBpcyB0ZW1w
b3JhcnkgZm9yIHBsYXRmb3JtcyB0aGF0IGhhdmUgdG8gY29weSB0aGUgaW1hZ2UgYnVmZmVyIHRv
IHJlbmRlciAoYW5kIGZvciBDU1NDYW52YXNWYWx1ZSkuCiB9OwogCkBAIC0yMTYsNCArMjEzLDMg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3QgV2ViQ29yZTo6
RXZlbnRUYXJnZXQmIHRhcmdldCkgeyByZXR1cm4gaXM8V2ViQ29yZTo6Tm9kZT4odGFyZ2V0KSAm
JiBjaGVja1RhZ05hbWUoZG93bmNhc3Q8V2ViQ29yZTo6Tm9kZT4odGFyZ2V0KSk7IH0KIH07CiB9
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuaAppbmRleCBhY2Y4M2JiNzJkY2E3MDFjMGZjYzY3MzhjMWQ4NmNhMTE3OGZkNDk0Li5m
Mzg4NjNmNzhmZWUzZmY4OTkyOWM3NGM0N2NhMmU1MzQxOTkwMDU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC03MSw2
ICs3MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNPZmZzY3JlZW4yZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGFpbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCisgICAgLy8gQ2FsbGVkIGJlZm9yZSBwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0NhbnZhcyBpZiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyBpcworICAgIC8vIHVz
ZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2VzLgorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9y
RGlzcGxheVdpdGhQYWludCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0NhbnZhcygpIHt9CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9HUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDQ3
YTAyZWI3MDZjZTQ1ZDg4ZjE5NzU0YmI3ZDhiZWZmOWIxZjk0MmMuLjg5MGNkNzIzNTAxZTA0ZTI4
ZTgyZjc3YTBiNjlkYmVkNTlhNDg1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC01MCw4
ICs1MCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzaGFwZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFya0xheWVyQ29tcG9z
aXRlZCgpID0gMDsKLQogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEdQVUJhc2VkQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMDEzYjg5
YWY0ODg4Yjg3YzBmNjQ4ZTUyY2I1NjFjZGI5MWM1NDk3My4uMzBkOWU3ZTkxYTQzYzM5ZTgxMmY3
YmI1MmI1MTA2OGJjOTM2NzU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTExOTksMTEgKzExOTks
MTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZXN0b3JlU3RhdGVBZnRlckNs
ZWFyKCkKICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayhtX2RlcHRoTWFzayk7CiB9CiAKLXZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWFya0xheWVyQ29tcG9zaXRlZCgpCisKK3ZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQog
ewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKyAgICBtX2lzRGlzcGxheWluZ1dp
dGhQYWludCA9IHRydWU7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQpAQCAtMTIxMSwxOCArMTIxMCwxNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KCkKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoYXV0byogY2FudmFzID0gaHRtbENhbnZhcygpKSB7Ci0gICAgICAgIGlmIChjYW52
YXMtPmRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCAoY2FudmFzLT5pc1NuYXBzaG90dGluZygpICYm
IGNhbnZhcy0+ZG9jdW1lbnQoKS5wYWdlKCktPmlzVmlzaWJsZSgpKSkKLSAgICAgICAgICAgIGNh
bnZhcy0+Y2xlYXJQcmVzZW50YXRpb25Db3B5KCk7Ci0KLSAgICAgICAgLy8gVW50aWwgdGhlIGNh
bnZhcyBpcyB3cml0dGVuIHRvIGJ5IHRoZSBhcHBsaWNhdGlvbiwgdGhlIGNsZWFyIHRoYXQKLSAg
ICAgICAgLy8gaGFwcGVuZWQgYWZ0ZXIgaXQgd2FzIGNvbXBvc2l0ZWQgc2hvdWxkIGJlIGlnbm9y
ZWQgYnkgdGhlIGNvbXBvc2l0b3IuCi0gICAgICAgIGlmIChtX2NvbnRleHQtPmxheWVyQ29tcG9z
aXRlZCgpICYmICFtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKGNhbnZhcy0+YnVm
ZmVyKCkpOwotCi0gICAgICAgICAgICBjYW52YXMtPm1ha2VQcmVzZW50YXRpb25Db3B5KCk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2FudmFzLT5jbGVhclByZXNlbnRhdGlvbkNvcHko
KTsKKyAgICBpZiAobV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQpIHsKKyAgICAgICAgYm9vbCBjYW52
YXNDb250YWluc0Rpc3BsYXlCdWZmZXIgPSAhbV9tYXJrZWRDYW52YXNEaXJ0eTsKKyAgICAgICAg
cHJlcGFyZUZvckRpc3BsYXkoKTsKKyAgICAgICAgbV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSBm
YWxzZTsKKyAgICAgICAgaWYgKCFjYW52YXNDb250YWluc0Rpc3BsYXlCdWZmZXIpIHsKKyAgICAg
ICAgICAgIGF1dG8mIGJhc2UgPSBjYW52YXNCYXNlKCk7CisgICAgICAgICAgICBiYXNlLmNsZWFy
Q29waWVkSW1hZ2UoKTsKKyAgICAgICAgICAgIG1fbWFya2VkQ2FudmFzRGlydHkgPSBmYWxzZTsK
KyAgICAgICAgICAgIG1fY29udGV4dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKGJh
c2UuYnVmZmVyKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBj
bGVhcklmQ29tcG9zaXRlZChDbGVhckNhbGxlck90aGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCAzMGE4
NTU3ZDg2ODhlMmVhNDk1ZGI3MTZmMDhiZTYwOWVjM2I0ZThhLi5lOGU5MGNmYmExNmIxNGRkMTQ4
Yzk4ZTA2OWU1MDBlY2RlMmI1NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0zODQsOCArMzg0LDggQEAg
cHVibGljOgogCiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheVdpdGhQYWludCgpIGZpbmFsOworICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoKSBmaW5hbDsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpOwogCiAgICAgdm9pZCByZW1vdmVTaGFyZWRPYmplY3QoV2Vi
R0xTaGFyZWRPYmplY3QmKTsKQEAgLTY2OCw2ICs2NjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCk7CiAKICAgICBib29sIG1fY29tcG9zaXRpbmdSZXN1
bHRzTmVlZFVwZGF0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNEaXNwbGF5aW5nV2l0aFBh
aW50IHsgZmFsc2UgfTsKIAogICAgIC8vIEVuYWJsZWQgZXh0ZW5zaW9uIG9iamVjdHMuCiAgICAg
Ly8gRklYTUU6IE1vdmUgc29tZSBvZiB0aGVzZSB0byBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIHRo
ZSBvbmVzIG5vdCBuZWVkZWQgZm9yIFdlYkdMMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggMjIzYTVjOWJmMTY5N2Yy
NWYxMTJkYmNjMTg2ZjgxOWI3Y2UxZGU0NS4uYWE4ZmYyMzY4ZGZmZDg5Y2VhYjZhNDQzMzMwZGI0
NTE2YTE4ZjlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0xMjkyLDcgKzEyOTIsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gdGhlIGNvbnRleHQuCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyKikgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlRGF0YT4g
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikg
PSAwOwogCiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQuIFRoZSBsYXllciBz
aG91bGQgYmUgbWFya2VkIGNvbXBvc2l0ZWQgYnkKICAgICAvLyBwcmVwYXJpbmcgZm9yIGRpc3Bs
YXksIHNvIHRoYXQgY2FudmFzIGltYWdlIGJ1ZmZlciBhbmQgdGhlIGxheWVyIGFncmVlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKaW5kZXggNjBmN2E5NDdlZmNiYjM3
MTU2YzA5OGUwYjVlZTMzYzNiNjJiODQ5Yi4uMzZmYWFhN2U0NjYyMmJhZjNhMTIzZmJlOTVlZTk0
YmU2NDA5ZDU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApA
QCAtOTksMTEgKzk5LDYgQEAgR0NHTGJpdGZpZWxkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdAogICAgIHJldHVybiBtX2J1ZmZl
cnNUb0F1dG9DbGVhcjsKIH0KIAotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKLXsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpCiB7CiAgICAgLy8gUmVkZWNsYXJlZCBmb3Ig
ZXhwb3J0IHJlYXNvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAppbmRl
eCA3MjZhYWY2YzZhMGY2MmZmMjgyZTViOGQyMDJhMTI5NGUxZGU4NTcxLi4yNDcxZDRlMjVjOWFh
MjAwZWM3NDNiMWZlMGM2NDY4YjBjOWE1MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmgKQEAgLTY3LDcgKzY3LDYgQEAgcHVibGljOgogICAgIGJvb2wgbGF5ZXJDb21w
b3NpdGVkKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NH
TGJpdGZpZWxkKSBmaW5hbDsKICAgICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFy
KCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMo
SW1hZ2VCdWZmZXIqKSBmaW5hbDsKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5h
bDsKICAgICB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDMwOWE1MzA5YjY0MGEzZDZhMjgxNDFj
YTdiMWE3NWRiNDZlOWY5NTEuLmI1MDQzYjc0NjM2Zjc4ODVjNWQ4MGMwNzczNTU1ZDcxMjAwMDIz
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0zMSw2ICszMSw3IEBA
CiAKICNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zR0xBTkdM
RS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKQEAgLTQ2LDkgKzQ3LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0jaWYgVVNFKEFDQ0VMRVJB
VEUpCi0jaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+Ci0jZW5kaWYKIAogI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTENWQU5HTEUuaCIKQEAgLTY0LDMwICs2Miw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIFNjb3BlZFJlc2V0QnVmZmVyQmluZGluZyB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUmVzZXRCdWZmZXJCaW5kaW5nKTsKLXB1YmxpYzoK
LSAgICBTY29wZWRSZXNldEJ1ZmZlckJpbmRpbmcoYm9vbCBzaG91bGREb1dvcmssIEdMZW51bSBi
aW5kaW5nUG9pbnRRdWVyeSwgR0xlbnVtIGJpbmRpbmdQb2ludCkKLSAgICAgICAgOiBtX2JpbmRp
bmdQb2ludFF1ZXJ5KGJpbmRpbmdQb2ludFF1ZXJ5KQotICAgICAgICAsIG1fYmluZGluZ1BvaW50
KGJpbmRpbmdQb2ludCkKLSAgICB7Ci0gICAgICAgIGlmIChzaG91bGREb1dvcmspCi0gICAgICAg
ICAgICBnbDo6R2V0SW50ZWdlcnYobV9iaW5kaW5nUG9pbnRRdWVyeSwgJm1fYmluZGluZ1ZhbHVl
KTsKLSAgICAgICAgaWYgKG1fYmluZGluZ1ZhbHVlKQotICAgICAgICAgICAgZ2w6OkJpbmRCdWZm
ZXIobV9iaW5kaW5nUG9pbnQsIDApOwotICAgIH0KLQotICAgIH5TY29wZWRSZXNldEJ1ZmZlckJp
bmRpbmcoKQotICAgIHsKLSAgICAgICAgaWYgKG1fYmluZGluZ1ZhbHVlKQotICAgICAgICAgICAg
Z2w6OkJpbmRCdWZmZXIobV9iaW5kaW5nUG9pbnQsIG1fYmluZGluZ1ZhbHVlKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgR0xpbnQgbV9iaW5kaW5nUG9pbnRRdWVyeSB7IDAgfTsKLSAgICBHTGlu
dCBtX2JpbmRpbmdQb2ludCB7IDAgfTsKLSAgICBHTGludCBtX2JpbmRpbmdWYWx1ZSB7IDAgfTsK
LX07CiAKIH0gLy8gbmFtZXNwYWNlIGFub255bW91cwogCkBAIC0xMDIsMzYgKzc2LDI5IEBAIHN0
YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGludCB3aWR0aCwgaW50IGhlaWdo
dCwgdW5zaWduZWQgY2hhciogcGl4CiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeShpbnQgeCwgaW50
IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQotewotICAg
IC8vIE5WSURJQSBkcml2ZXJzIGhhdmUgYSBidWcgd2hlcmUgY2FsbGluZyByZWFkUGl4ZWxzIGlu
IEJHUkEgY2FuIHJldHVybiB0aGUgd3JvbmcgdmFsdWVzIGZvciB0aGUgYWxwaGEgY2hhbm5lbCB3
aGVuIHRoZSBhbHBoYSBpcyBvZmYgZm9yIHRoZSBjb250ZXh0LgotICAgIGdsOjpSZWFkUGl4ZWxz
KHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7
Ci0jaWYgVVNFKEFDQ0VMRVJBVEUpCi0gICAgdkltYWdlX0J1ZmZlciBzcmM7Ci0gICAgc3JjLmhl
aWdodCA9IGhlaWdodDsKLSAgICBzcmMud2lkdGggPSB3aWR0aDsKLSAgICBzcmMucm93Qnl0ZXMg
PSB3aWR0aCAqIDQ7Ci0gICAgc3JjLmRhdGEgPSBwaXhlbHM7Ci0KLSAgICB2SW1hZ2VfQnVmZmVy
IGRlc3Q7Ci0gICAgZGVzdC5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgZGVzdC53aWR0aCA9IHdpZHRo
OwotICAgIGRlc3Qucm93Qnl0ZXMgPSB3aWR0aCAqIDQ7Ci0gICAgZGVzdC5kYXRhID0gcGl4ZWxz
OwotCi0gICAgLy8gU3dhcCBwaXhlbCBjaGFubmVscyBmcm9tIFJHQkEgdG8gQkdSQS4KLSAgICBj
b25zdCB1aW50OF90IG1hcFs0XSA9IHsgMiwgMSwgMCwgMyB9OwotICAgIHZJbWFnZVBlcm11dGVD
aGFubmVsc19BUkdCODg4OCgmc3JjLCAmZGVzdCwgbWFwLCBrdkltYWdlTm9GbGFncyk7Ci0jZWxz
ZQotICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICBzdGQ6OnN3YXAocGl4ZWxz
W2ldLCBwaXhlbHNbaSArIDJdKTsKLSNlbmRpZgotCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCit7CisgICAgYXV0
byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6
ZSgpKTsKKyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
U2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSBwYWNrQWxpZ25tZW50KEdMX1BBQ0tfQUxJR05NRU5UKTsK
KyAgICBpZiAocGFja0FsaWdubWVudCA+IDQpCisgICAgICAgIHBhY2tBbGlnbm1lbnQucGl4ZWxT
dG9yZSg0KTsKKyAgICBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlIHBhY2tSb3dMZW5ndGgoR0xfUEFD
S19ST1dfTEVOR1RILCAwLCBtX2lzRm9yV2ViR0wyKTsKKyAgICBTY29wZWRQaXhlbFN0b3JhZ2VN
b2RlIHBhY2tTa2lwUm93cyhHTF9QQUNLX1NLSVBfUk9XUywgMCwgbV9pc0ZvcldlYkdMMik7Cisg
ICAgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSBwYWNrU2tpcFBpeGVscyhHTF9QQUNLX1NLSVBfUElY
RUxTLCAwLCBtX2lzRm9yV2ViR0wyKTsKKyAgICBTY29wZWRCdWZmZXJCaW5kaW5nIHNjb3BlZFBp
eGVsUGFja0J1ZmZlclJlc2V0KEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCAwLCBtX2lzRm9yV2ViR0wy
KTsKKworICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKDAsIDAsIGltYWdlRGF0YS0+d2lk
dGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgaW1h
Z2VEYXRhLT5kYXRhKCktPmJ5dGVMZW5ndGgoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
aW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSk7CisgICAgLy8gRklYTUU6IFJlbmRlcmluZyB0byBH
TF9SR0IgdGV4dHVyZXMgd2l0aCBhIElPU3VyZmFjZSBib3VuZCB0byB0aGUgdGV4dHVyZSBpbWFn
ZSBsZWF2ZXMKKyAgICAvLyB0aGUgYWxwaGEgaW4gdGhlIElPU3VyZmFjZSBpbiBpbmNvcnJlY3Qg
c3RhdGUuIEFsc28gQU5HTEUgZ2w6OlJlYWRQaXhlbHMgd2lsbCBpbiBzb21lCisgICAgLy8gY2Fz
ZXMgZXhwb3NlIHRoZSBub24tMjU1IHZhbHVlcy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODA0CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmICghY29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSkKLSAgICAg
ICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdodCwgcGl4ZWxzKTsKKyAg
ICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFn
ZURhdGEtPmhlaWdodCgpLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpKTsKICNlbmRpZgorICAg
IHJldHVybiBpbWFnZURhdGE7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZh
bGlkYXRlQXR0cmlidXRlcygpCkBAIC01MTAsNjQgKzQ3Nyw2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRo
U3RlbmNpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCi17Ci0gICAg
Q2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PiByb3dCeXRlcyA9IENoZWNrZWQ8aW50LCBSZWNv
cmRPdmVyZmxvdz4obV9jdXJyZW50V2lkdGgpICogNDsKLSAgICBpZiAocm93Qnl0ZXMuaGFzT3Zl
cmZsb3dlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDaGVja2VkPGludCwgUmVjb3JkT3Zl
cmZsb3c+IHRvdGFsQnl0ZXNDaGVja2VkID0gcm93Qnl0ZXMgKiBtX2N1cnJlbnRIZWlnaHQ7Ci0g
ICAgaWYgKHRvdGFsQnl0ZXNDaGVja2VkLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGludCB0b3RhbEJ5dGVzID0gdG90YWxCeXRlc0NoZWNrZWQudW5zYWZlR2V0KCk7Ci0K
LSAgICBhdXRvIHBpeGVscyA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPih0b3RhbEJ5
dGVzKTsKLSAgICBpZiAoIXBpeGVscykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcmVhZFJlbmRl
cmluZ1Jlc3VsdHMocGl4ZWxzLmdldCgpLCB0b3RhbEJ5dGVzKTsKLQotICAgIGlmICghY29udGV4
dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpIHsKLSAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpIHsKLSAgICAgICAgICAgIC8vIFByZW11bHRpcGx5
IGFscGhhLgotICAgICAgICAgICAgcGl4ZWxzW2kgKyAwXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxz
W2kgKyAwXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICAgICAgcGl4ZWxzW2kgKyAx
XSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAxXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwot
ICAgICAgICAgICAgcGl4ZWxzW2kgKyAyXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAyXSAq
IHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcGFpbnRUb0Nh
bnZhcyhwaXhlbHMuZ2V0KCksIEludFNpemUobV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdo
dCksIGltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsK
LX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKLXsKLSAgICAvLyBOb3QgbmVlZGVkIGF0IHRoZSBtb21l
bnQsIHNvIHJldHVybiB0aGF0IG5vdGhpbmcgd2FzIGRvbmUuCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1SZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQotewotICAgIC8vIFJlYWRpbmcgcHJlbXVsdGlwbGll
ZCBhbHBoYSB3b3VsZCBpbnZvbHZlIHVucHJlbXVsdGlwbHlpbmcsIHdoaWNoIGlzCi0gICAgLy8g
bG9zc3kuCi0gICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRh
OjpjcmVhdGUoSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSk7Ci0gICAg
dW5zaWduZWQgY2hhciogcGl4ZWxzID0gaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKTsKLSAgICBD
aGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IHRvdGFsQnl0ZXNDaGVja2VkID0gNCAqIENoZWNr
ZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4obV9jdXJyZW50V2lkdGgpICogQ2hlY2tlZDxpbnQsIFJl
Y29yZE92ZXJmbG93PihtX2N1cnJlbnRIZWlnaHQpOwotICAgIGlmICh0b3RhbEJ5dGVzQ2hlY2tl
ZC5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBpbWFnZURhdGE7Ci0gICAgaW50IHRv
dGFsQnl0ZXMgPSB0b3RhbEJ5dGVzQ2hlY2tlZC51bnNhZmVHZXQoKTsKLQotICAgIHJlYWRSZW5k
ZXJpbmdSZXN1bHRzKHBpeGVscywgdG90YWxCeXRlcyk7Ci0KLSAgICAvLyBDb252ZXJ0IHRvIFJH
QkEuCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAg
IHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOwotCi0gICAgcmV0dXJuIGltYWdl
RGF0YTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZVRleHR1cmUo
KQogewogICAgIGlmIChtX2xheWVyQ29tcG9zaXRlZCkKQEAgLTYyMCw2NSArNTI5LDE1IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVUZXh0dXJlSW1wbCgpCiAjZW5kaWYK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHMo
dW5zaWduZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSkKK1JlZlB0cjxJbWFnZURhdGE+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cygpCiB7Ci0gICAg
aWYgKHBpeGVsc1NpemUgPCBtX2N1cnJlbnRXaWR0aCAqIG1fY3VycmVudEhlaWdodCAqIDQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotCi0gICAgR0NHTGVudW0gZnJhbWVidWZmZXJUYXJnZXQgPSBtX2lzRm9yV2Vi
R0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRl
eHRHTDo6RlJBTUVCVUZGRVI7Ci0KLSAgICBib29sIG11c3RSZXN0b3JlRkJPID0gZmFsc2U7Cisg
ICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcgZmJvQmluZGluZyhtX2lzRm9y
V2ViR0wyLCBtX3N0YXRlLmJvdW5kUmVhZEZCTyk7CiAgICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVz
KCkuYW50aWFsaWFzKSB7CiAgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3Nhcnko
KTsKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9mYm8p
OwotICAgICAgICBtdXN0UmVzdG9yZUZCTyA9IHRydWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
aWYgKG1fc3RhdGUuYm91bmRSZWFkRkJPICE9IG1fZmJvKSB7Ci0gICAgICAgICAgICBtdXN0UmVz
dG9yZUZCTyA9IHRydWU7Ci0gICAgICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVm
ZmVyVGFyZ2V0LCBtX2Zibyk7Ci0gICAgICAgIH0KKyAgICAgICAgZmJvQmluZGluZy5tYXJrQmlu
ZGluZ0NoYW5nZWQoKTsKICAgICB9Ci0KLSAgICBHTGludCBwYWNrQWxpZ25tZW50ID0gNDsKLSAg
ICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOwotICAgIGdsOjpHZXRJbnRl
Z2VydihHTF9QQUNLX0FMSUdOTUVOVCwgJnBhY2tBbGlnbm1lbnQpOwotICAgIGlmIChwYWNrQWxp
Z25tZW50ID4gNCkgewotICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQs
IDQpOwotICAgICAgICBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSB0cnVlOwotICAgIH0KLSAg
ICBHTGludCBwYWNrUm93TGVuZ3RoID0gMDsKLSAgICBHTGludCBwYWNrU2tpcFJvd3MgPSAwOwot
ICAgIEdMaW50IHBhY2tTa2lwUGl4ZWxzID0gMDsKLSAgICBTY29wZWRSZXNldEJ1ZmZlckJpbmRp
bmcgc2NvcGVkUGl4ZWxQYWNrQnVmZmVyUmVzZXQobV9pc0ZvcldlYkdMMiwgR0xfUElYRUxfUEFD
S19CVUZGRVJfQklORElORywgR0xfUElYRUxfUEFDS19CVUZGRVIpOwotICAgIGlmIChtX2lzRm9y
V2ViR0wyKSB7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihHTF9QQUNLX1JPV19MRU5HVEgsICZw
YWNrUm93TGVuZ3RoKTsKLSAgICAgICAgaWYgKHBhY2tSb3dMZW5ndGggPiAwKQotICAgICAgICAg
ICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfUk9XX0xFTkdUSCwgMCk7Ci0gICAgICAgIGdsOjpH
ZXRJbnRlZ2VydihHTF9QQUNLX1NLSVBfUk9XUywgJnBhY2tTa2lwUm93cyk7Ci0gICAgICAgIGlm
IChwYWNrU2tpcFJvd3MgPiAwKQotICAgICAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tf
U0tJUF9ST1dTLCAwKTsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX1BBQ0tfU0tJUF9QSVhF
TFMsICZwYWNrU2tpcFBpeGVscyk7Ci0gICAgICAgIGlmIChwYWNrU2tpcFBpeGVscyA+IDApCi0g
ICAgICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19TS0lQX1BJWEVMUywgMCk7Ci0gICAg
fQotCi0gICAgcmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeSgwLCAwLCBtX2N1
cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBwaXhlbHMpOwotCi0gICAgaWYgKG11c3RSZXN0
b3JlUGFja0FsaWdubWVudCkKLSAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05N
RU5ULCBwYWNrQWxpZ25tZW50KTsKLSAgICBpZiAocGFja1Jvd0xlbmd0aCA+IDApCi0gICAgICAg
IGdsOjpQaXhlbFN0b3JlaShHTF9QQUNLX1JPV19MRU5HVEgsIHBhY2tSb3dMZW5ndGgpOwotICAg
IGlmIChwYWNrU2tpcFJvd3MgPiAwKQotICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19T
S0lQX1JPV1MsIHBhY2tTa2lwUm93cyk7Ci0gICAgaWYgKHBhY2tTa2lwUGl4ZWxzID4gMCkKLSAg
ICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfU0tJUF9QSVhFTFMsIHBhY2tTa2lwUGl4ZWxz
KTsKLQotICAgIGlmIChtdXN0UmVzdG9yZUZCTykKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZl
cihmcmFtZWJ1ZmZlclRhcmdldCwgbV9zdGF0ZS5ib3VuZFJlYWRGQk8pOworICAgIGZib0JpbmRp
bmcuYmluZEZyYW1lYnVmZmVyKG1fZmJvKTsKKyAgICByZXR1cm4gcmVhZFBpeGVsc0ZvclBhaW50
UmVzdWx0cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKGlu
dCB3aWR0aCwgaW50IGhlaWdodCkKQEAgLTcwNCw3ICs1NjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogICAgIFRlbXBv
cmFyeUFOR0xFU2V0dGluZyBzY29wZWRTY2lzc29yKEdMX1NDSVNTT1JfVEVTVCwgR0xfRkFMU0Up
OwogICAgIFRlbXBvcmFyeUFOR0xFU2V0dGluZyBzY29wZWREaXRoZXIoR0xfRElUSEVSLCBHTF9G
QUxTRSk7Ci0gICAgU2NvcGVkUmVzZXRCdWZmZXJCaW5kaW5nIHNjb3BlZFBpeGVsVW5wYWNrQnVm
ZmVyUmVzZXQobV9pc0ZvcldlYkdMMiwgR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HLCBH
TF9QSVhFTF9VTlBBQ0tfQlVGRkVSKTsKKyAgICBTY29wZWRCdWZmZXJCaW5kaW5nIHNjb3BlZFBp
eGVsVW5wYWNrQnVmZmVyUmVzZXQoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgbV9pc0Zvcldl
YkdMMik7CiAKICAgICBib29sIG11c3RSZXN0b3JlRkJPID0gcmVzaGFwZUZCT3MoSW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KSk7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgKaW5kZXggMjEzMjdk
ZGFmYzNkYjVmZWQyZTgxMzI2YjFmYTIyYzUyODY5ZjE1MS4uNDk0MmE5NTU0NTZiZjk0NDg0MDFj
MmUyNmI1N2ZkYjgyMWNkNGM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyk7CiBwdWJsaWM6Ci0gICAgU2NvcGVkUmVzdG9y
ZVRleHR1cmVCaW5kaW5nKEdDR0xlbnVtIGJpbmRpbmdQb2ludFF1ZXJ5LCBHQ0dMZW51bSBiaW5k
aW5nUG9pbnQsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVy
ZUJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludFF1ZXJ5LCBHTGVudW0gYmluZGluZ1BvaW50LCBi
b29sIGNvbmRpdGlvbiA9IHRydWUpCiAgICAgewotICAgICAgICBBU1NFUlQoYmluZGluZ1BvaW50
ICE9IHN0YXRpY19jYXN0PEdDR0xlbnVtPigwdSkpOworICAgICAgICBBU1NFUlQoYmluZGluZ1Bv
aW50ICE9IHN0YXRpY19jYXN0PEdMZW51bT4oMHUpKTsKICAgICAgICAgaWYgKGNvbmRpdGlvbikg
ewogICAgICAgICAgICAgbV9iaW5kaW5nUG9pbnQgPSBiaW5kaW5nUG9pbnQ7CiAgICAgICAgICAg
ICBnbDo6R2V0SW50ZWdlcnYoYmluZGluZ1BvaW50UXVlcnksIHJlaW50ZXJwcmV0X2Nhc3Q8R0xp
bnQqPigmbV9iaW5kaW5nVmFsdWUpKTsKQEAgLTU2LDYgKzU2LDE1MyBAQCBwcml2YXRlOgogICAg
IEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07CiB9OwogCisKK2NsYXNzIFNjb3BlZEJ1ZmZl
ckJpbmRpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEJ1ZmZlckJpbmRpbmcp
OworcHVibGljOgorICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludCwg
R0x1aW50IGJpbmRpbmdWYWx1ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQorICAgIHsKKyAgICAg
ICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdsOjpHZXRJ
bnRlZ2VydihxdWVyeShiaW5kaW5nUG9pbnQpLCByZWludGVycHJldF9jYXN0PEdMaW50Kj4oJm1f
YmluZGluZ1ZhbHVlKSk7CisgICAgICAgIGlmIChiaW5kaW5nVmFsdWUgPT0gbV9iaW5kaW5nVmFs
dWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fYmluZGluZ1BvaW50ID0gYmluZGlu
Z1BvaW50OworICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwgYmluZGluZ1Zh
bHVlKTsKKyAgICB9CisKKyAgICB+U2NvcGVkQnVmZmVyQmluZGluZygpCisgICAgeworICAgICAg
ICBpZiAobV9iaW5kaW5nUG9pbnQpCisgICAgICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRp
bmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdMZW51bSBxdWVyeShHTGVudW0gYmluZGluZ1BvaW50KQorICAgIHsKKyAgICAg
ICAgaWYgKGJpbmRpbmdQb2ludCA9PSBHTF9QSVhFTF9QQUNLX0JVRkZFUikKKyAgICAgICAgICAg
IHJldHVybiBHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOworICAgICAgICBBU1NFUlQoYmlu
ZGluZ1BvaW50ID09IEdMX1BJWEVMX1VOUEFDS19CVUZGRVIpOworICAgICAgICByZXR1cm4gR0xf
UElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HOworICAgIH0KKyAgICBHTGludCBtX2JpbmRpbmdQ
b2ludCB7IDAgfTsKKyAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUgeyAwdSB9OworfTsKK2NsYXNz
IFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk7CitwdWJsaWM6Cisg
ICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoYm9vbCBpc0ZvcldlYkdMMiwg
R0x1aW50IHJlc3RvcmVWYWx1ZSkKKyAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlzRm9y
V2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQorICAgICAgICAs
IG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZFJl
c3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGJvb2wgaXNGb3JXZWJHTDIsIEdMdWludCByZXN0
b3JlVmFsdWUsIEdMdWludCB2YWx1ZSkKKyAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlz
Rm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQorICAgICAg
ICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKKyAgICB7CisgICAgICAgIGJpbmRGcmFt
ZWJ1ZmZlcih2YWx1ZSk7CisgICAgfQorICAgIHZvaWQgbWFya0JpbmRpbmdDaGFuZ2VkKCkKKyAg
ICB7CisgICAgICAgIG1fYmluZGluZ0NoYW5nZWQgPSB0cnVlOworICAgIH0KKyAgICB2b2lkIGJp
bmRGcmFtZWJ1ZmZlcihHTHVpbnQgYmluZGluZ1ZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2JpbmRpbmdDaGFuZ2VkICYmIG1fYmluZGluZ1ZhbHVlID09IGJpbmRpbmdWYWx1ZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVy
VGFyZ2V0LCBiaW5kaW5nVmFsdWUpOworICAgICAgICBtX2JpbmRpbmdDaGFuZ2VkID0gbV9iaW5k
aW5nVmFsdWUgIT0gYmluZGluZ1ZhbHVlOworICAgIH0KKyAgICB+U2NvcGVkUmVzdG9yZVJlYWRG
cmFtZWJ1ZmZlckJpbmRpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYmluZGluZ0NoYW5nZWQp
CisgICAgICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXJUYXJnZXQsIG1f
YmluZGluZ1ZhbHVlKTsKKyAgICB9Citwcml2YXRlOgorICAgIGNvbnN0IEdMZW51bSBtX2ZyYW1l
YnVmZmVyVGFyZ2V0OworICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07CisgICAgYm9v
bCBtX2JpbmRpbmdDaGFuZ2VkIHsgZmFsc2UgfTsKK307CisKK2NsYXNzIFNjb3BlZFBpeGVsU3Rv
cmFnZU1vZGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFBpeGVsU3RvcmFnZU1v
ZGUpOworcHVibGljOgorICAgIGV4cGxpY2l0IFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVt
IG5hbWUsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICAgICAgOiBtX25hbWUoY29uZGl0aW9u
ID8gbmFtZSA6IDApCisgICAgeworICAgICAgICBpZiAobV9uYW1lKQorICAgICAgICAgICAgZ2w6
OkdldEludGVnZXJ2KG1fbmFtZSwgJm1fb3JpZ2luYWxWYWx1ZSk7CisgICAgfQorICAgIFNjb3Bl
ZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVtIG5hbWUsIEdMaW50IHZhbHVlLCBib29sIGNvbmRpdGlv
biA9IHRydWUpCisgICAgICAgIDogbV9uYW1lKGNvbmRpdGlvbiA/IG5hbWUgOiAwKQorICAgIHsK
KyAgICAgICAgaWYgKG1fbmFtZSkgeworICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KG1fbmFt
ZSwgJm1fb3JpZ2luYWxWYWx1ZSk7CisgICAgICAgICAgICBwaXhlbFN0b3JlKHZhbHVlKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICB+U2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSgpCisgICAgeworICAg
ICAgICBpZiAobV9uYW1lICYmIG1fdmFsdWVDaGFuZ2VkKQorICAgICAgICAgICAgZ2w6OlBpeGVs
U3RvcmVpKG1fbmFtZSwgbV9vcmlnaW5hbFZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBwaXhlbFN0
b3JlKEdMaW50IHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbmFtZSk7CisgICAgICAg
IGlmICghbV92YWx1ZUNoYW5nZWQgJiYgbV9vcmlnaW5hbFZhbHVlID09IHZhbHVlKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBnbDo6UGl4ZWxTdG9yZWkobV9uYW1lLCB2YWx1ZSk7Cisg
ICAgICAgIG1fdmFsdWVDaGFuZ2VkID0gbV9vcmlnaW5hbFZhbHVlICE9IHZhbHVlOworICAgIH0K
KyAgICBvcGVyYXRvciBHTGludCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9uYW1l
ICYmICFtX3ZhbHVlQ2hhbmdlZCk7CisgICAgICAgIHJldHVybiBtX29yaWdpbmFsVmFsdWU7Cisg
ICAgfQorcHJpdmF0ZToKKyAgICBjb25zdCBHTGVudW0gbV9uYW1lOworICAgIGJvb2wgbV92YWx1
ZUNoYW5nZWQgeyBmYWxzZSB9OworICAgIEdMaW50IG1fb3JpZ2luYWxWYWx1ZSB7IDAgfTsKK307
CisKK2NsYXNzIFNjb3BlZFRleHR1cmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3Bl
ZFRleHR1cmUpOworcHVibGljOgorICAgIFNjb3BlZFRleHR1cmUoKQorICAgIHsKKyAgICAgICAg
Z2w6OkdlblRleHR1cmVzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIH5TY29wZWRUZXh0dXJl
KCkKKyAgICB7CisgICAgICAgIGdsOjpEZWxldGVUZXh0dXJlcygxLCAmbV9vYmplY3QpOworICAg
IH0KKyAgICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
b2JqZWN0OworICAgIH0KK3ByaXZhdGU6CisgICAgR0x1aW50IG1fb2JqZWN0IHsgMHUgfTsKK307
CisKK2NsYXNzIFNjb3BlZEZyYW1lYnVmZmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
Y29wZWRGcmFtZWJ1ZmZlcik7CitwdWJsaWM6CisgICAgU2NvcGVkRnJhbWVidWZmZXIoKQorICAg
IHsKKyAgICAgICAgZ2w6OkdlbkZyYW1lYnVmZmVycygxLCAmbV9vYmplY3QpOworICAgIH0KKyAg
ICB+U2NvcGVkRnJhbWVidWZmZXIoKQorICAgIHsKKyAgICAgICAgZ2w6OkRlbGV0ZUZyYW1lYnVm
ZmVycygxLCAmbV9vYmplY3QpOworICAgIH0KKyAgICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0OworICAgIH0KK3ByaXZhdGU6CisgICAgR0x1
aW50IG1fb2JqZWN0IHsgMCB9OworfTsKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0R0xDYWlyby5jcHAKaW5kZXggNDNjZGFjOGIwMWNkYTBkZjA2MjE4NmYxNTAwM2VhMzA4ZmEy
MGNkNi4uZWUxMDZkYzRiYjNmMDBhYzg1YmNiZDdjYzkxNmRlZTI2NjQwM2I1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
R0xDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJD
YWlyb1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1
ZGUgIkltYWdlU291cmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNp
bmNsdWRlICJSZWZQdHJDYWlyby5oIgpAQCAtMTA1LDE1ICsxMDYsMzAgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywg
Y29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWlu
dFRvQ2FudmFzKFJlZjxJbWFnZURhdGE+JiYgaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBjYW52
YXNTaXplLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKCFpbWFnZVBpeGVs
cyB8fCBpbWFnZVNpemUuaXNFbXB0eSgpIHx8IGNhbnZhc1NpemUuaXNFbXB0eSgpKQorICAgIEFT
U0VSVCghaW1hZ2VEYXRhLT5zaXplKCkuaXNFbXB0eSgpKTsKKyAgICBpZiAoY2FudmFzU2l6ZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBsYXRmb3JtQ29udGV4dENhaXJvKiBw
bGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmICghcGxh
dGZvcm1Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBDb252ZXJ0IFJHQkEgdG8g
QkdSQS4gQkdSQSBpcyBDQUlST19GT1JNQVRfQVJHQjMyIG9uIGxpdHRsZS1lbmRpYW4gYXJjaGl0
ZWN0dXJlcy4KKyAgICBzaXplX3QgdG90YWxCeXRlcyA9IGltYWdlRGF0YS0+ZGF0YSgpLT5ieXRl
TGVuZ3RoKCk7CisgICAgdWludDhfdCogcGl4ZWxzID0gaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEo
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkKKyAgICAg
ICAgc3RkOjpzd2FwKHBpeGVsc1tpXSwgcGl4ZWxzW2kgKyAyXSk7CisKKyAgICBpZiAoIWNvbnRl
eHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKSB7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KSB7CisgICAgICAgICAgICBwaXhlbHNbaSAr
IDBdID0gc3RkOjptaW4oMjU1LCBwaXhlbHNbaSArIDBdICogcGl4ZWxzW2kgKyAzXSAvIDI1NSk7
CisgICAgICAgICAgICBwaXhlbHNbaSArIDFdID0gc3RkOjptaW4oMjU1LCBwaXhlbHNbaSArIDFd
ICogcGl4ZWxzW2kgKyAzXSAvIDI1NSk7CisgICAgICAgICAgICBwaXhlbHNbaSArIDJdID0gc3Rk
OjptaW4oMjU1LCBwaXhlbHNbaSArIDJdICogcGl4ZWxzW2kgKyAzXSAvIDI1NSk7CisgICAgICAg
IH0KKyAgICB9CisKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dC0+Y3IoKTsKICAg
ICBwbGF0Zm9ybUNvbnRleHQtPnNhdmUoKTsKIApAQCAtMTIyLDcgKzEzOCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciog
aW1hZ2VQaXhlbHMsIGNvCiAgICAgY2Fpcm9fcGFpbnQoY3IpOwogCiAgICAgUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gaW1hZ2VTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9j
cmVhdGVfZm9yX2RhdGEoCi0gICAgICAgIGNvbnN0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGltYWdl
UGl4ZWxzKSwgQ0FJUk9fRk9STUFUX0FSR0IzMiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6
ZS5oZWlnaHQoKSwgaW1hZ2VTaXplLndpZHRoKCkgKiA0KSk7CisgICAgICAgIGltYWdlRGF0YS0+
ZGF0YSgpLT5kYXRhKCksIENBSVJPX0ZPUk1BVF9BUkdCMzIsIGltYWdlRGF0YS0+d2lkdGgoKSwg
aW1hZ2VEYXRhLT5oZWlnaHQoKSwgaW1hZ2VEYXRhLT53aWR0aCgpICogNCkpOwogCiAgICAgLy8g
T3BlbkdMIGtlZXBzIHRoZSBwaXhlbHMgc3RvcmVkIGJvdHRvbSB1cCwgc28gd2UgbmVlZCB0byBm
bGlwIHRoZSBpbWFnZSBoZXJlLgogICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgMCwgaW1hZ2VTaXpl
LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKaW5kZXggNjhkNWFjODNkOTEyZTg2ZWZl
YmZmNDIzOWRmYTA2NDY2MzAwZjFiNC4uZTJlNTFmZDBhMDYwZGFkMjFiMmQyMWE1Mjg1ZDQwZDQ3
M2JjNTI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKQEAgLTUwNSwzNiArNTA1LDM1IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lk
IHJlbGVhc2VJbWFnZURhdGEodm9pZCosIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCkKK3N0YXRp
YyB2b2lkIHJlbGVhc2VJbWFnZURhdGEodm9pZCogaW1hZ2VEYXRhLCBjb25zdCB2b2lkKiwgc2l6
ZV90KQogewotICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKTsKKyAgICByZWlu
dGVycHJldF9jYXN0PEltYWdlRGF0YSo+KGltYWdlRGF0YSktPmRlcmVmKCk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hh
ciogaW1hZ2VQaXhlbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW50U2l6ZSYg
Y2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQordm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhSZWY8SW1hZ2VEYXRhPiYmIGltYWdlRGF0YSwgY29u
c3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAg
IGlmICghaW1hZ2VQaXhlbHMgfHwgaW1hZ2VTaXplLmlzRW1wdHkoKSB8fCBjYW52YXNTaXplLmlz
RW1wdHkoKSkKKyAgICBBU1NFUlQoIWltYWdlRGF0YS0+c2l6ZSgpLmlzRW1wdHkoKSk7CisgICAg
aWYgKGNhbnZhc1NpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CisgICAgYXV0byBhdHRy
cyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CisgICAgLy8gSW5wdXQgaXMgR0xfUkdCQSA9PSBrQ0dC
aXRtYXBCeXRlT3JkZXIzMkJpZyB8IGtDR0ltYWdlQWxwaGEqTGFzdC4KKyAgICAvLyBHTF9CR1JB
IHdvdWxkIGJlIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYSpGaXJz
dC4KKyAgICBDR0JpdG1hcEluZm8gYml0bWFwSW5mbyA9IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmln
OworICAgIGlmICghYXR0cnMuYWxwaGEpCisgICAgICAgIGJpdG1hcEluZm8gfD0ga0NHSW1hZ2VB
bHBoYU5vbmVTa2lwTGFzdDsKKyAgICBlbHNlIGlmIChhdHRycy5wcmVtdWx0aXBsaWVkQWxwaGEp
CisgICAgICAgIGJpdG1hcEluZm8gfD0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0Owor
ICAgIGVsc2UKKyAgICAgICAgYml0bWFwSW5mbyB8PSBrQ0dJbWFnZUFscGhhTGFzdDsKKworICAg
IGF1dG8gaW1hZ2VTaXplID0gaW1hZ2VEYXRhLT5zaXplKCk7CiAgICAgaW50IHJvd0J5dGVzID0g
aW1hZ2VTaXplLndpZHRoKCkgKiA0OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4g
ZGF0YVByb3ZpZGVyOwotCi0gICAgaWYgKGNvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkg
ewotICAgICAgICB1bnNpZ25lZCBjaGFyKiBjb3BpZWRQaXhlbHM7Ci0KLSAgICAgICAgaWYgKCF0
cnlGYXN0Q2FsbG9jKGltYWdlU2l6ZS5oZWlnaHQoKSwgcm93Qnl0ZXMpLmdldFZhbHVlKGNvcGll
ZFBpeGVscykpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbWVtY3B5KGNvcGllZFBp
eGVscywgaW1hZ2VQaXhlbHMsIHJvd0J5dGVzICogaW1hZ2VTaXplLmhlaWdodCgpKTsKLQotICAg
ICAgICBzaXplX3QgZGF0YVNpemUgPSByb3dCeXRlcyAqIGltYWdlU2l6ZS5oZWlnaHQoKTsKLSAg
ICAgICAgdmVyaWZ5SW1hZ2VCdWZmZXJJc0JpZ0Vub3VnaChjb3BpZWRQaXhlbHMsIGRhdGFTaXpl
KTsKLSAgICAgICAgZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhEYXRhKDAsIGNvcGllZFBpeGVscywgZGF0YVNpemUsIHJlbGVhc2VJbWFnZURhdGEpKTsKLSAg
ICB9IGVsc2UgewogICAgICAgICBzaXplX3QgZGF0YVNpemUgPSByb3dCeXRlcyAqIGltYWdlU2l6
ZS5oZWlnaHQoKTsKKyAgICB1aW50OF90KiBpbWFnZVBpeGVscyA9IGltYWdlRGF0YS0+ZGF0YSgp
LT5kYXRhKCk7CiAgICAgICAgIHZlcmlmeUltYWdlQnVmZmVySXNCaWdFbm91Z2goaW1hZ2VQaXhl
bHMsIGRhdGFTaXplKTsKLSAgICAgICAgZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92
aWRlckNyZWF0ZVdpdGhEYXRhKDAsIGltYWdlUGl4ZWxzLCBkYXRhU2l6ZSwgMCkpOwotICAgIH0K
KyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0Yo
Q0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgmaW1hZ2VEYXRhLmxlYWtSZWYoKSwgaW1hZ2VQ
aXhlbHMsIGRhdGFTaXplLCByZWxlYXNlSW1hZ2VEYXRhKSk7CiAKLSAgICBhdXRvIGltYWdlID0g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRo
KCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIHJvd0J5dGVzLCBzUkdCQ29sb3JTcGFjZVJl
ZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVy
MzJIb3N0LAorICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJ
bWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwg
cm93Qnl0ZXMsIHNSR0JDb2xvclNwYWNlUmVmKCksIGJpdG1hcEluZm8sCiAgICAgICAgIGRhdGFQ
cm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7CiAK
ICAgICAvLyBDU1Mgc3R5bGluZyBtYXkgY2F1c2UgdGhlIGNhbnZhcydzIGNvbnRlbnQgdG8gYmUg
cmVzaXplZCBvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmgKaW5kZXggZDVlNDE2OGUzMWJlYjhmMmJiNzc0Y2Y3ZGUxZTk1ZjhkMGI5OTYxOS4u
NGRlZDhlNWY5NDk4MjY3MTc0NmM5ZTdmNTMzYWFjNmIxOGFjNmIwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCkBAIC02Myw2ICs2Mywx
MCBAQCBwdWJsaWM6CiAgICAgLy8gUHJlcGFyZXMgdGhlIHRhcmdldCBmb3IgZGlzcGxheSB3aXRo
IGEgY29udGVudHMgYnVmZmVyLgogICAgIHZpcnR1YWwgdm9pZCBwcmVzZW50KEJ1ZmZlcikgPSAw
OwogCisgICAgLy8gUmV0dXJucyB0aGUgbW9zdCByZWNlbnQgcHJlc2VudGVkIGRpc3BsYXkgYnVm
ZmVyLiBUaGUgcmVmZXJlbmNlIGlzIHZhbGlkIHVudGlsCisgICAgLy8gbmV4dCBwcmVzZW50LCBy
ZWN5Y2xlQnVmZmVyIG9yIGRldGFjaENsaWVudCBjYWxsLgorICAgIHZpcnR1YWwgY29uc3QgQnVm
ZmVyJiBkaXNwbGF5QnVmZmVyKCkgY29uc3QgPSAwOworCiAgICAgLy8gRGV0YWNoZXMgdGhlIGNs
aWVudCBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEgaGFu
ZGxlLgogICAgIC8vIFRoZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0ZWQs
IHJlY3ljbGVCdWZmZXIgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCiAgICAg
Ly8gdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4
IDg5MWU5NzgzZTI1ZmQ0Nzg0ZTM2ODYzYjNlNmU2ODJjMjk1Y2I0MjQuLmRiZTljMDVkMzI4YjY1
YzI3NWVjOTUxMjA0NjAyNGYzZGE0MGM4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xDb2NvYS5tbQpAQCAtNzMwLDYgKzczMCwzNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgp
OwogfQogCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENv
bXBvc2l0ZWRSZXN1bHRzKCkKK3sKKyAgICBhdXRvJiBkaXNwbGF5QnVmZmVyID0gbV9zd2FwQ2hh
aW4tPmRpc3BsYXlCdWZmZXIoKTsKKyAgICBpZiAoIWRpc3BsYXlCdWZmZXIuc3VyZmFjZSB8fCAh
ZGlzcGxheUJ1ZmZlci5oYW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChk
aXNwbGF5QnVmZmVyLnN1cmZhY2UtPnNpemUoKSAhPSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6
ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBOb3RlOiBXZSBhcmUgdXNpbmcg
R0wgdG8gcmVhZCB0aGUgSU9TdXJmYWNlLiBBdCB0aGUgdGltZSBvZiB3cml0aW5nLCB0aGVyZSBh
cmUgbm8gY29udmluaWVudAorICAgIC8vIGZ1bmN0aW9ucyB0byBjb252ZXJ0IHRoZSBJT1N1cmZh
Y2UgcGl4ZWwgZGF0YSB0byBJbWFnZURhdGEuIFRoZSBpbWFnZSBkYXRhIGVuZHMgdXAgYmVpbmcK
KyAgICAvLyBkcmF3biB0byBhIEltYWdlQnVmZmVyLCBidXQgYXQgdGhlIHRpbWUgdGhlcmUncyBu
byBmdW5jdGlvbnMgdG8gY29uc3RydWN0IGEgTmF0aXZlSW1hZ2UKKyAgICAvLyBvdXQgb2YgYW4g
SU9TdXJmYWNlIGluIHN1Y2ggYSB3YXkgdGhhdCBkcmF3aW5nIHRoZSBOYXRpdmVJbWFnZSB3b3Vs
ZCBiZSBndWFyYW50ZWVkIGxlYXZlCisgICAgLy8gdGhlIElPU3VyZmFjZSBiZSB1bnJlZmVuY2Vk
IGFmdGVyIHRoZSBkcmF3IGNhbGwgZmluaXNoZXMuCisgICAgU2NvcGVkVGV4dHVyZSB0ZXh0dXJl
OworICAgIEdDR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdl
dCgpOworICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyByZXN0b3JlQmluZGluZyhkcmF3
aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5KCksIHRleHR1cmVUYXJnZXQsIHRleHR1cmVUYXJn
ZXQgIT0gVEVYVFVSRV9SRUNUQU5HTEVfQVJCKTsKKyAgICBnbDo6QmluZFRleHR1cmUodGV4dHVy
ZVRhcmdldCwgdGV4dHVyZSk7CisgICAgaWYgKCFFR0xfQmluZFRleEltYWdlKG1fZGlzcGxheU9i
aiwgZGlzcGxheUJ1ZmZlci5oYW5kbGUsIEVHTF9CQUNLX0JVRkZFUikpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIGdsOjpUZXhQYXJhbWV0ZXJpKHRleHR1cmVUYXJnZXQsIEdMX1RFWFRV
UkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBTY29wZWRGcmFtZWJ1ZmZlciBmYm87Cisg
ICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcgZmJvQmluZGluZyhtX2lzRm9y
V2ViR0wyLCBtX3N0YXRlLmJvdW5kUmVhZEZCTywgZmJvKTsKKyAgICBnbDo6RnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCB0ZXh0dXJlVGFy
Z2V0LCB0ZXh0dXJlLCAwKTsKKyAgICBBU1NFUlQoZ2w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
R0xfRlJBTUVCVUZGRVIpID09IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKTsKKworICAgIGF1dG8g
cmVzdWx0ID0gcmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpOworCisgICAgRUdMQm9vbGVhbiBy
ZWxlYXNlT2sgPSBFR0xfUmVsZWFzZVRleEltYWdlKG1fZGlzcGxheU9iaiwgZGlzcGxheUJ1ZmZl
ci5oYW5kbGUsIEVHTF9CQUNLX0JVRkZFUik7CisgICAgQVNTRVJUX1VOVVNFRChyZWxlYXNlT2ss
IHJlbGVhc2VPayk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW0KaW5kZXggMzg1OTdlNGE4ZjYzM2E1ZWU1ZGI3NDkzMzAyMmRjMjM3
ZmU3ZTQ3Yy4uMDMxMzhlZjE0MzA5ODhkNzE1YTk4Yjc3NzdkM2E1Mzg4YTMyOTlhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
Lm1tCkBAIC0zOSw2ICszOSwxMCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR0xMYXllclN3
YXBDaGFpbihXZWJHTExheWVyKiBsYXllcikgIDogbV9sYXllcihsYXllcikgeyB9OwogICAgIH5X
ZWJHTExheWVyU3dhcENoYWluKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OwogICAgIHZvaWQgcHJlc2Vu
dChCdWZmZXIpIG92ZXJyaWRlOworICAgIGNvbnN0IEJ1ZmZlciYgZGlzcGxheUJ1ZmZlcigpIGNv
bnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gbV9kaXNwbGF5QnVmZmVyOworICAg
IH0KICAgICBCdWZmZXIgcmVjeWNsZUJ1ZmZlcigpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBp
ZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmNwcAppbmRleCAwNjlkMjg2Y2U0ZWJhNDgyOWUwYzczODNlMmYzZThiZWU3MmZlMjkyLi4y
ZmViNzRjMmZhZDFiMmE2MmZmNjBjNjEyNWQxYjhmY2NmNWRiNTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNpZiBFTkFCTEUoV0VC
R0wpCiAKICNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5o
IgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xOTQsNiArMTk2LDUwIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKIH0KICNlbmRpZgogCit2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFn
ZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGlmIChnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gaW1hZ2VEYXRhID0gcmVhZFJlbmRl
cmluZ1Jlc3VsdHMoKTsKKyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAgICAgcmV0dXJuOworICAg
IHBhaW50VG9DYW52YXMoaW1hZ2VEYXRhLnJlbGVhc2VOb25OdWxsKCksIGltYWdlQnVmZmVyLT5i
YWNrZW5kU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVm
ZmVyKiBpbWFnZUJ1ZmZlcikKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAg
ICAgICByZXR1cm47CisgICAgaWYgKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBpbWFnZURhdGEgPSByZWFkQ29tcG9zaXRl
ZFJlc3VsdHMoKTsKKyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIHBh
aW50VG9DYW52YXMoaW1hZ2VEYXRhLnJlbGVhc2VOb25OdWxsKCksIGltYWdlQnVmZmVyLT5iYWNr
ZW5kU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKK30KKworUmVmUHRyPEltYWdlRGF0
YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VE
YXRhKCkKK3sKKyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBpZiAoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIC8vIFJlYWRpbmcgcHJlbXVsdGlwbGllZCBh
bHBoYSB3b3VsZCBpbnZvbHZlIHVucHJlbXVsdGlwbHlpbmcsIHdoaWNoIGlzCisgICAgLy8gbG9z
c3kuCisgICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsK
K30KKworI2lmICFQTEFURk9STShDT0NPQSkKK1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQoreworICAgIHJldHVybiBudWxs
cHRyOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggZjUyNGRl
OTJkY2Q5YTU5OGIwZmJlZjhkMzNiOWM0NDA5YjhjZDFiMC4uNzgwOTZlMmViMDg3NmY5NTI3Yzg1
NDc5MGQxYWZhNzM1MTIwYzhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgK
QEAgLTQyOCw5ICs0MjgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxv
Y2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CiAKICAgICAvLyBIZWxw
ZXIgbWV0aG9kcy4KLQotICAgIHZvaWQgcGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFy
KiBpbWFnZVBpeGVscywgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbnRTaXplJiBj
YW52YXNTaXplLCBHcmFwaGljc0NvbnRleHQmKTsKLQogICAgIHZvaWQgbWFya0NvbnRleHRDaGFu
Z2VkKCkgZmluYWw7CiAgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7CiAgICAg
Ym9vbCBsYXllckNvbXBvc2l0ZWQoKSBjb25zdCBmaW5hbDsKQEAgLTQ1MCw3ICs0NDcsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVm
ZmVyKikgZmluYWw7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9JbWFnZURhdGEoKSBmaW5hbDsKLSAgICBib29sIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0Nh
bnZhcyhJbWFnZUJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvQ2FudmFzKEltYWdlQnVmZmVyKikgZmluYWw7CiAKICNpZiBVU0UoT1BFTkdMKSAmJiBFTkFC
TEUoV0VCR0wyKQogICAgIHZvaWQgcHJpbWl0aXZlUmVzdGFydEluZGV4KEdDR0x1aW50KTsKQEAg
LTUzMCwxMCArNTI3LDExIEBAIHByaXZhdGU6CiAgICAgLy8gRGlkIHRoZSBtb3N0IHJlY2VudCBk
cmF3aW5nIG9wZXJhdGlvbiBsZWF2ZSB0aGUgR1BVIGluIGFuIGFjY2VwdGFibGUgc3RhdGU/CiAg
ICAgdm9pZCBjaGVja0dQVVN0YXR1cygpOwogCi0gICAgLy8gUmVhZCByZW5kZXJpbmcgcmVzdWx0
cyBpbnRvIGEgcGl4ZWwgYXJyYXkgd2l0aCB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlCi0gICAgLy8g
YmFja2J1ZmZlci4KLSAgICB2b2lkIHJlYWRSZW5kZXJpbmdSZXN1bHRzKHVuc2lnbmVkIGNoYXIq
IHBpeGVscywgaW50IHBpeGVsc1NpemUpOwotICAgIHZvaWQgcmVhZFBpeGVsc0FuZENvbnZlcnRU
b0JHUkFJZk5lY2Vzc2FyeShpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5z
aWduZWQgY2hhciogcGl4ZWxzKTsKKworICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlYWRSZW5kZXJp
bmdSZXN1bHRzKCk7CisgICAgUmVmUHRyPEltYWdlRGF0YT4gcmVhZENvbXBvc2l0ZWRSZXN1bHRz
KCk7CisgICAgUmVmUHRyPEltYWdlRGF0YT4gcmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpOwor
ICAgIHZvaWQgcGFpbnRUb0NhbnZhcyhSZWY8SW1hZ2VEYXRhPiYmLCBjb25zdCBJbnRTaXplJiBj
YW52YXNTaXplLCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIGJvb2wgcmVzaGFwZUZCT3MoY29u
c3QgSW50U2l6ZSYpOwogICAgIHZvaWQgcHJlcGFyZVRleHR1cmVJbXBsKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IGY0MTRmOWM5NjM0ZDYxYjhk
OTAxNWQ1YTZhZmE1MjdjYzM0MmJlOGYuLjI5ZGY3YzkwMTNjYjkxNTkzNGFiYWI4OTRmYWIyNmM5
ZDdmZTc3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaWYgRU5BQkxFKFdFQkdMKSAmJiBVU0UoT1BFTkdMKQogCiAj
aW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMLmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCkBAIC02MSwzNyArNjIsMjYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVj
ZXNzYXJ5KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFy
KiBwaXhlbHMpCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVh
ZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7Ci0gICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRy
aWJ1dGVzKCk7CisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShnZXRJbnRl
cm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKKyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBHTGludCBwYWNrQWxpZ25tZW50ID0gNDsKKyAgICBib29sIG11
c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOworICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9Q
QUNLX0FMSUdOTUVOVCwgJnBhY2tBbGlnbm1lbnQpOworICAgIGlmIChwYWNrQWxpZ25tZW50ID4g
NCkgeworICAgICAgICA6OmdsUGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIDQpOworICAg
ICAgICBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSB0cnVlOworICAgIH0KIAotICAgIC8vIE5W
SURJQSBkcml2ZXJzIGhhdmUgYSBidWcgd2hlcmUgY2FsbGluZyByZWFkUGl4ZWxzIGluIEJHUkEg
Y2FuIHJldHVybiB0aGUgd3JvbmcgdmFsdWVzIGZvciB0aGUgYWxwaGEgY2hhbm5lbCB3aGVuIHRo
ZSBhbHBoYSBpcyBvZmYgZm9yIHRoZSBjb250ZXh0LgotICAgIGlmICghYXR0cnMuYWxwaGEgJiYg
Z2V0RXh0ZW5zaW9ucygpLmlzTlZJRElBKCkpIHsKLSAgICAgICAgOjpnbFJlYWRQaXhlbHMoeCwg
eSwgd2lkdGgsIGhlaWdodCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKLSNp
ZiBVU0UoQUNDRUxFUkFURSkKLSAgICAgICAgdkltYWdlX0J1ZmZlciBzcmM7Ci0gICAgICAgIHNy
Yy5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgICAgIHNyYy53aWR0aCA9IHdpZHRoOwotICAgICAgICBz
cmMucm93Qnl0ZXMgPSB3aWR0aCAqIDQ7Ci0gICAgICAgIHNyYy5kYXRhID0gcGl4ZWxzOwotCi0g
ICAgICAgIHZJbWFnZV9CdWZmZXIgZGVzdDsKLSAgICAgICAgZGVzdC5oZWlnaHQgPSBoZWlnaHQ7
Ci0gICAgICAgIGRlc3Qud2lkdGggPSB3aWR0aDsKLSAgICAgICAgZGVzdC5yb3dCeXRlcyA9IHdp
ZHRoICogNDsKLSAgICAgICAgZGVzdC5kYXRhID0gcGl4ZWxzOwotCi0gICAgICAgIC8vIFN3YXAg
cGl4ZWwgY2hhbm5lbHMgZnJvbSBSR0JBIHRvIEJHUkEuCi0gICAgICAgIGNvbnN0IHVpbnQ4X3Qg
bWFwWzRdID0geyAyLCAxLCAwLCAzIH07Ci0gICAgICAgIHZJbWFnZVBlcm11dGVDaGFubmVsc19B
UkdCODg4OCgmc3JjLCAmZGVzdCwgbWFwLCBrdkltYWdlTm9GbGFncyk7Ci0jZWxzZQotICAgICAg
ICBpbnQgdG90YWxCeXRlcyA9IHdpZHRoICogaGVpZ2h0ICogNDsKLSAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAgICAgICBzdGQ6OnN3YXAocGl4
ZWxzW2ldLCBwaXhlbHNbaSArIDJdKTsKLSNlbmRpZgotICAgIH0gZWxzZQotICAgICAgICA6Omds
UmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTF9CR1JBLCBHTF9VTlNJR05FRF9JTlRf
OF84XzhfOF9SRVYsIHBpeGVscyk7CisgICAgOjpnbFJlYWRQaXhlbHMoMCwgMCwgaW1hZ2VEYXRh
LT53aWR0aCgpLCBpbWFnZURhdGEtPmhlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpKTsKKworICAgIGlmIChtdXN0UmVzdG9yZVBhY2tB
bGlnbm1lbnQpCisgICAgICAgIDo6Z2xQaXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgcGFj
a0FsaWdubWVudCk7CiAKKyAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggMmRlMTg1YTY2ODEzMGEzNjJjMTI3
NjdmMzgzZjU3ZjEzNDlkZDQ4MS4uZmNkYjcxMWE2ZjhjYjA1OWUwMGI3NGNkMGNjYjdjOWFjZTkw
ZGE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
CkBAIC0xMzcsNjQgKzEzNyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpCiAgICAgfQogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0Nh
bnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCi17Ci0gICAgQ2hlY2tlZDxpbnQsIFJlY29y
ZE92ZXJmbG93PiByb3dCeXRlcyA9IENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4obV9jdXJy
ZW50V2lkdGgpICogNDsKLSAgICBpZiAocm93Qnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IHRvdGFsQnl0ZXND
aGVja2VkID0gcm93Qnl0ZXMgKiBtX2N1cnJlbnRIZWlnaHQ7Ci0gICAgaWYgKHRvdGFsQnl0ZXND
aGVja2VkLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGludCB0b3RhbEJ5
dGVzID0gdG90YWxCeXRlc0NoZWNrZWQudW5zYWZlR2V0KCk7Ci0KLSAgICBhdXRvIHBpeGVscyA9
IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPih0b3RhbEJ5dGVzKTsKLSAgICBpZiAoIXBp
eGVscykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcmVhZFJlbmRlcmluZ1Jlc3VsdHMocGl4ZWxz
LmdldCgpLCB0b3RhbEJ5dGVzKTsKLQotICAgIGlmICghY29udGV4dEF0dHJpYnV0ZXMoKS5wcmVt
dWx0aXBsaWVkQWxwaGEpIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVz
OyBpICs9IDQpIHsKLSAgICAgICAgICAgIC8vIFByZW11bHRpcGx5IGFscGhhLgotICAgICAgICAg
ICAgcGl4ZWxzW2kgKyAwXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAwXSAqIHBpeGVsc1tp
ICsgM10gLyAyNTUpOwotICAgICAgICAgICAgcGl4ZWxzW2kgKyAxXSA9IHN0ZDo6bWluKDI1NSwg
cGl4ZWxzW2kgKyAxXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICAgICAgcGl4ZWxz
W2kgKyAyXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAyXSAqIHBpeGVsc1tpICsgM10gLyAy
NTUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcGFpbnRUb0NhbnZhcyhwaXhlbHMuZ2V0KCks
IEludFNpemUobV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCksIGltYWdlQnVmZmVyLT5i
YWNrZW5kU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKLX0KLQotYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVm
ZmVyKikKLXsKLSAgICAvLyBOb3QgbmVlZGVkIGF0IHRoZSBtb21lbnQsIHNvIHJldHVybiB0aGF0
IG5vdGhpbmcgd2FzIGRvbmUuCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1SZWZQdHI8SW1hZ2VE
YXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFn
ZURhdGEoKQotewotICAgIC8vIFJlYWRpbmcgcHJlbXVsdGlwbGllZCBhbHBoYSB3b3VsZCBpbnZv
bHZlIHVucHJlbXVsdGlwbHlpbmcsIHdoaWNoIGlzCi0gICAgLy8gbG9zc3kuCi0gICAgaWYgKGNv
bnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoSW50U2l6ZSht
X2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSk7Ci0gICAgdW5zaWduZWQgY2hhciogcGl4
ZWxzID0gaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKTsKLSAgICBDaGVja2VkPGludCwgUmVjb3Jk
T3ZlcmZsb3c+IHRvdGFsQnl0ZXNDaGVja2VkID0gNCAqIENoZWNrZWQ8aW50LCBSZWNvcmRPdmVy
Zmxvdz4obV9jdXJyZW50V2lkdGgpICogQ2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PihtX2N1
cnJlbnRIZWlnaHQpOwotICAgIGlmICh0b3RhbEJ5dGVzQ2hlY2tlZC5oYXNPdmVyZmxvd2VkKCkp
Ci0gICAgICAgIHJldHVybiBpbWFnZURhdGE7Ci0gICAgaW50IHRvdGFsQnl0ZXMgPSB0b3RhbEJ5
dGVzQ2hlY2tlZC51bnNhZmVHZXQoKTsKLQotICAgIHJlYWRSZW5kZXJpbmdSZXN1bHRzKHBpeGVs
cywgdG90YWxCeXRlcyk7Ci0KLSAgICAvLyBDb252ZXJ0IHRvIFJHQkEuCi0gICAgZm9yIChpbnQg
aSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAgIHN0ZDo6c3dhcChwaXhlbHNb
aV0sIHBpeGVsc1tpICsgMl0pOwotCi0gICAgcmV0dXJuIGltYWdlRGF0YTsKLX0KLQogdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZVRleHR1cmUoKQogewogICAgIGlmIChtX2xh
eWVyQ29tcG9zaXRlZCkKQEAgLTIzNiwxNSArMTc4LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cHJlcGFyZVRleHR1cmUoKQogICAgIDo6Z2xGbHVzaCgpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25lZCBjaGFy
ICpwaXhlbHMsIGludCBwaXhlbHNTaXplKQorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKCkKIHsKLSAgICBpZiAocGl4ZWxzU2l6
ZSA8IG1fY3VycmVudFdpZHRoICogbV9jdXJyZW50SGVpZ2h0ICogNCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0K
ICAgICBib29sIG11c3RSZXN0b3JlRkJPID0gZmFsc2U7CiAgICAgaWYgKGNvbnRleHRBdHRyaWJ1
dGVzKCkuYW50aWFsaWFzKSB7CiAgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3Nh
cnkoKTsKQEAgLTI1NywyMiArMTkyLDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlYWRSZW5kZXJpbmdSZXN1bHRzKHVuc2lnbmVkIGNoYXIgKnBpeGVscywgaW50IHBpCiAgICAg
ICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJV
RkZFUiwgbV9mYm8pOwogICAgICAgICB9CiAgICAgfQotCi0gICAgR0xpbnQgcGFja0FsaWdubWVu
dCA9IDQ7Ci0gICAgYm9vbCBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSBmYWxzZTsKLSAgICA6
OmdsR2V0SW50ZWdlcnYoR0xfUEFDS19BTElHTk1FTlQsICZwYWNrQWxpZ25tZW50KTsKLSAgICBp
ZiAocGFja0FsaWdubWVudCA+IDQpIHsKLSAgICAgICAgOjpnbFBpeGVsU3RvcmVpKEdMX1BBQ0tf
QUxJR05NRU5ULCA0KTsKLSAgICAgICAgbXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gdHJ1ZTsK
LSAgICB9Ci0KLSAgICByZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVjZXNzYXJ5KDAsIDAs
IG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIHBpeGVscyk7Ci0KLSAgICBpZiAobXVz
dFJlc3RvcmVQYWNrQWxpZ25tZW50KQotICAgICAgICA6OmdsUGl4ZWxTdG9yZWkoR0xfUEFDS19B
TElHTk1FTlQsIHBhY2tBbGlnbm1lbnQpOwotCisgICAgYXV0byByZXN1bHQgPSByZWFkUGl4ZWxz
Rm9yUGFpbnRSZXN1bHRzKCk7CiAgICAgaWYgKG11c3RSZXN0b3JlRkJPKQogICAgICAgICA6Omds
QmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgbV9zdGF0
ZS5ib3VuZERyYXdGQk8pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCmluZGV4IDBkNDc2YzIyOWQ2ZjZlZTk2Y2Nm
OTkzZDgxZDVjM2RkNjUyMTVlNDguLjkzOWZiOTNlMWMyMTM0NDlkMDdlMDNlNWNiZTgwYWE4MWUx
OGVmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTY0
LDE0ICs2NCwyNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgICAgICA6OmdsQmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vz
c2FyeShpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciog
cGl4ZWxzKQorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQ
aXhlbHNGb3JQYWludFJlc3VsdHMoKQogewotICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRo
LCBoZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7Ci0gICAgaW50IHRv
dGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgaWYgKGlzR0xFUzJDb21wbGlhbnQo
KSkgewotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkKLSAg
ICAgICAgICAgIHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOyAvLyBDb252ZXJ0
IHRvIEJHUkEuCisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShnZXRJbnRl
cm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKKyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBHTGludCBwYWNrQWxpZ25tZW50ID0gNDsKKyAgICBib29sIG11
c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOworICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9Q
QUNLX0FMSUdOTUVOVCwgJnBhY2tBbGlnbm1lbnQpOworICAgIGlmIChwYWNrQWxpZ25tZW50ID4g
NCkgeworICAgICAgICA6OmdsUGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIDQpOworICAg
ICAgICBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSB0cnVlOwogICAgIH0KKworICAgIDo6Z2xS
ZWFkUGl4ZWxzKDAsIDAsIGltYWdlRGF0YS0+d2lkdGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSk7CisK
KyAgICBpZiAobXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50KQorICAgICAgICA6OmdsUGl4ZWxTdG9y
ZWkoR0xfUEFDS19BTElHTk1FTlQsIHBhY2tBbGlnbm1lbnQpOworCisgICAgcmV0dXJuIGltYWdl
RGF0YTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAppbmRl
eCBlN2M0MGM5ODVjYjdkMjcyMjg2OWE1ZGZmOTY5MTk0NzA3N2FmNDZjLi44ZTJkMWZjNjUxODYy
ODM5NWU5NzQxYzQ0ZTdhYzg1MWIwOGVmNjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2EuY3BwCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICAvLyBHcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbiBvdmVycmlkZXMuCiAgICAgQnVmZmVyIHJlY3ljbGVCdWZm
ZXIoKSBmaW5hbDsKICAgICB2b2lkIHByZXNlbnQoQnVmZmVyKSBmaW5hbDsKKyAgICBjb25zdCBC
dWZmZXImIGRpc3BsYXlCdWZmZXIoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkKiBkZXRhY2hDbGll
bnQoKSBmaW5hbDsKIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW46OkJ1ZmZlciBtX2Rpc3BsYXlCdWZmZXI7CkBAIC03Niw2ICs3NywxMSBAQCB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXNlbnQoQnVmZmVyIGJ1ZmZlcikKICAgICBt
X2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CiB9CiAKK2NvbnN0IEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXImIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OmRpc3BsYXlCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2Rpc3BsYXlCdWZm
ZXI7Cit9CisKIHZvaWQqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmRldGFjaENsaWVu
dCgpCiB7CiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9kaXNwbGF5QnVmZmVyLmhhbmRsZSwg
bnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAppbmRl
eCAzNGEwNmZiMDA3NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Li41M2RiNjE1MGMxZDhl
YzgyNWUyM2FiZWY2NTFlNWIzYjk3OTkyNDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5jcHAKQEAgLTEyMSw2ICsxMjEsMTEgQEAgdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciopCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIFJlZlB0cjxJbWFnZURhdGE+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaAppbmRleCBkOTllZGEyOWY2ZGI1ZTE4MTk3MTMxNzhmMmFhNTMxYjRmNWRkNmUwLi5h
MTQzOTM0N2Q4OWUwYWRiZjA4YTQyYTQyNTkxYmJiM2RiZWIyMWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkgZmluYWw7CiAgICAgdm9pZCBwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciopIGZpbmFsOwogICAgIFJl
ZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRh
KCkgZmluYWw7CisgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXIqKSBmaW5hbDsKIAogICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJh
dGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdl
YmdsIHNjcmlwdC4KICAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsK
</data>
<flag name="commit-queue"
          id="433942"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416416</attachid>
            <date>2020-12-17 04:28:54 -0800</date>
            <delta_ts>2020-12-17 23:05:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219946-20201217142852.patch</filename>
            <type>text/plain</type>
            <size>63973</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMwMGNiMzk4NTY1MjRm
YzAxZWY4N2I5ZDkxYWQ4NWRjZmU3YTY5ZS4uN2IyZTM4NjdmYjQ1ZWUyMzI3MmRhNzZkMmM1ZmI5
YTU5OTk4NGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAyMC0xMi0xNyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04g
KHIyNjgzODYpOiBTbmFwc2hvdHMgb2YgV2ViR0wgY29udGVudCBpbiB0aGUgdGFiIHBpY2tlciBk
b24ndCB3b3JrIChibGFjayBtYXAgb24gR29vZ2xlIE1hcHMpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcyMDEzNzg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZpeCBjYXNlIHdoZXJlIFdlYkdMIHdvdWxkIGZpcnN0IGJlIGRpc3BsYXllZCB3aXRo
IGhhcmR3YXJlIGNvZGUgcGF0aAorICAgICAgICBhbmQgdGhlbiBkaXNwbGF5ZWQgd2l0aCBzb2Z0
d2FyZSBjb2RlIHBhdGggKHBhaW50aW5nIGZyb20gdGhlIHBhaW50CisgICAgICAgIHRyZWUpLiBG
b3JtZXIgaGFwcGVucyB3aGVuIHVzZXIgbG9va3MgYXQgdGhlIHBhZ2UgYW5kIGxhdHRlciBoYXBw
ZW5zCisgICAgICAgIHdoZW4gcHJpbnRpbmcgb3Igd2hlbiBTYWZhcmkgdGFrZXMgYSBzbmFwc2hv
dC4KKworICAgICAgICBUaGlzIGlzIG5vdCBhIHJlYWwgcmVncmVzc2lvbiBvZiByMjY4Mzg2LiBQ
cmlvciB0byB0aGF0LCB0aGUgc29mdHdhcmUKKyAgICAgICAgZGlzcGxheSB3b3VsZCBoYXZlIHVz
ZWQgdW5pbml0aWFsaXplZCBJT1N1cmZhY2UgY29udGVudHMgb3IgY29udGVudHMgb2YKKyAgICAg
ICAgMS0yIGZyYW1lcyBwcmlvciBhbmQgd291bGQgbGVhdmUgdGhlIGhhcmR3YXJlIGRpc3BsYXkg
YnVmZmVyIG5vdAorICAgICAgICB1cGRhdGVkLgorCisgICAgICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaXMgdXNlZCBmb3IgdHdvCisg
ICAgICAgIHB1cnBvc2VzOgorICAgICAgICAgIDEpIEltYWdlIGV4dHJhY3Rpb24gdXNlcywgc3Vj
aCBhcyB0b0RhdGEoKSBvcgorICAgICAgICAgICAgIGNvbnN0cnVjdGluZyBhbiBJbWFnZSBvdXQg
b2YgdGhlIGNvbnRlbnRzLgorICAgICAgICAgIDIpIFBhaW50aW5nIHRoZSByZW5kZXJpbmcgdG8g
dGhlIGRvY3VtZW50IGR1cmluZyBzb2Z0d2FyZSBkaXNwbGF5LgorCisgICAgICAgIFRoZSAxKSBj
YXNlIHVzZXMgYWx3YXlzIHRoZSBkcmF3aW5nIGJ1ZmZlci4KKworICAgICAgICBUaGUgMikgY2Fz
ZSBwcmVzZW50cyB0aGUgZHJhd2luZyBidWZmZXIgYXMgdGhlIG5ldyBkaXNwbGF5IGJ1ZmZlciBp
ZgorICAgICAgICB0aGVyZSBhcmUgY2hhbmdlcyB0byB0aGUgZHJhd2luZyBidWZmZXIgYW5kIHVz
ZXMgdGhlIHBvdGVudGlhbGx5IG5ldworICAgICAgICBkaXNwbGF5IGJ1ZmZlciB0byBkaXNwbGF5
LgorCisgICAgICAgIEZvciAyRCBjYW52YXMsIHRoZXNlIHR3byBjYXNlcyBhcmUgdGhlIHNhbWUg
Y2FzZS4gRm9yIFdlYkdMIHRoZXkgYXJlCisgICAgICAgIGRpZmZlcmVudC4KKworICAgICAgICBU
aGUgZGlzcGxheSBpcyBkZXN0cnVjdGl2ZSBmb3IgV2ViR0wgZHJhd2luZyBidWZmZXIgd2hlbgor
ICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPT0gZmFsc2UuIFRoaXMgbWVhbnMgdGhhdCBp
ZiBoYXJkd2FyZSBkaXNwbGF5IGhhcworICAgICAgICBoYXBwZW5lZCwgd2UgbXVzdCByZWFkIHRo
ZSBkaXNwbGF5IGJ1ZmZlciBkdXJpbmcgY2FzZSAyLiBUaGlzIGNvZGUgd2FzCisgICAgICAgIG1p
c3NpbmcsIHNvIHRoZSBzY2VuYXJpbyBjb3VsZCBub3QgaGF2ZSBldmVyIHdvcmtlZC4KKworICAg
ICAgICBUaGUgcHJldmlvdXMgY29kZSB0cmllZCB0byB3b3JrYXJvdW5kIHRoaXMgYnkgdGhlCisg
ICAgICAgIFdlYkdMR3JhcGhpY3NDb250ZXh0QmFzZSB0byBkZXRlY3Qgd2hhdCB0aGUgb3duZXIg
aW50ZW5kZWQgd2l0aCB0aGUKKyAgICAgICAgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMs
IHRoZW4gc2tpcCB0aGUgcG90ZW50aWFsIGRyYXdpbmcgYnVmZmVyCisgICAgICAgIGNsZWFyLCBy
ZWFkIHRoZSBkcmF3aW5nIGJ1ZmZlciBhbmQgcHV0IHRoYXQgZGF0YSB0byB0aGUgInByZXNlbnRh
dGlvbgorICAgICAgICBjb3B5IiBvZiB0aGUgSFRNTEVsZW1lbnQuIFRoaXMgaXMgbm90IG9rLCBh
cyB0aGUgdW5jbGVhcmVkIGRyYXdpbmcKKyAgICAgICAgYnVmZmVyIGhhcyBub24tZGV0ZXJtaW5p
c3RpYyBjb250ZW50cyBpbiBjYXNlIHRoZSBjb250ZXh0IGhhcyBkaXNwbGF5ZWQKKyAgICAgICAg
YW5kIHRoZSBjbGllbnQgaGFzIG5vdCBkcmF3biBuZXcgY29udGVudCB0byB0aGUgZHJhd2luZyBi
dWZmZXIuCisKKyAgICAgICAgRml4IGJ5IHJlbW92aW5nIHRoZSAicHJlc2VudGF0aW9uIGNvcHki
IG9mIHRoZSBIVE1MQ2FudmFzLiBUaGUKKyAgICAgICAgcHJlc2VudGF0aW9uIGltYWdlIGNhbiBh
bHdheXMgYmUgZHJhd24gdG8gdGhlIENhbnZhc0Jhc2U6OmJ1ZmZlcigpOgorICAgICAgICAgLSBU
aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGlzIHRoZSBwcmVzZW50YXRpb24gaW1h
Z2UgaWYgdGhlCisgICAgICAgICAgIGNvbnRleHQgaGFzIG5vdCBjaGFuZ2VkIHNpbmNlIHVwZGF0
aW5nIHRoZSBidWZmZXIgd2l0aCBlaXRoZXIgZHJhd2luZworICAgICAgICAgICBidWZmZXIgb3Ig
cHJldmlvdXMgZGlzcGxheSBidWZmZXIuCisgICAgICAgICAtIElmIHRoZSBjb250ZXh0IGhhcyBj
aGFuZ2VkLCB3ZSBtdXN0IHByZXNlbnQgYW5kIHB1dCB0aGUgbmV3IGRpc3BsYXkKKyAgICAgICAg
ICAgYnVmZmVyIHRvIHRoZSBDYW52YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgLSBUaGlzIGlz
IGFsc28gY29ycmVjdCBjb250ZW50cyBmb3IgdGhlIHBvdGVudGlhbCBuZXh0IGltYWdlIGV4dHJh
Y3Rpb24KKyAgICAgICAgICAgdXNlcywgdXAgdG8gYSBwb2ludCB3aGVuIGNvbnRleHQgY2hhbmdl
cy4KKyAgICAgICAgIC0gSWYgdGhlIGNvbnRleHQgY2hhbmdlcyBiZWZvcmUgYW4gaW1hZ2UgZXh0
cmFjdGlvbiB1c2UsIENhbnZhc0Jhc2U6OmJ1ZmZlcigpIGlzCisgICAgICAgICAgIHVwZGF0ZWQg
d2l0aCB0aGUgbm9ybWFsIGxvZ2ljLCB0aGUgc2FtZSBhcyB3aGF0IGhhcHBlbnMgd2hlbiBDYW52
YXNCYXNlOjpidWZmZXIoKQorICAgICAgICAgICBpcyB1cGRhdGVkIGJldHdlZW4gdHdvIGltYWdl
IGV4dHJhY3Rpb24gdXNlcy4KKworICAgICAgICBQcmlvciB0byB0aGlzLCB0aGVyZSB3YXMgYW4g
dW5uZWVkZWQgYW5kIGluY29ycmVjdGx5IGltcGxlbWVudGVkCisgICAgICAgIEdQVUNhbnZhc0Nv
bnRleHQ6Om1hcmtMYXllckNvbXBvc2l0ZWQoKS4gVGhlIHNlcXVlbmNlIHdvdWxkIGJlOgorCisg
ICAgICAgIEhUTUxDYW52YXNFbGVtZW50OjpwYWludCgpOgorICAgICAgICAgICBjYW52YXNDb250
ZXh0KCkucGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoYnVmZmVyKCkpOworICAgICAgICAg
ICBjb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlcigpKTsKKyAgICAgICAgICAgY2FudmFz
Q29udGV4dCgpLm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKworICAgICAgICBUaGUgbWFya0xheWVy
Q29tcG9zaXRlZCgpIHdvdWxkIGluY29ycmVjdGx5IG1hcmsgdGhlIFdlYkdMIGNvbnRleHQgY29t
cG9zaXRpbmcKKyAgICAgICAgYmVpbmcgZG9uZSwgYnV0IHRoZXJlIHdhcyBubyBjb21wb3NpdGlu
ZyBhY3R1YWxseSBoYXBwZW5pbmcuIFRoZSBHUFUtc2lkZQorICAgICAgICBkaXNwbGF5IGJ1ZmZl
ciB3b3VsZCBiZSBpbmNvcnJlY3QuIEFsc28sIHRoZXJlIGlzIG5vdGhpbmcgdG8gYmUgZG9uZSBh
dAorICAgICAgICB0aGlzIHN0YWdlLCBhcyB0aGUgY29tcG9zaXRpbmcgb2YgV2ViR0wgY29udGV4
dCBpdHNlbGYgaXMgYWxyZWFkeQorICAgICAgICBmaW5pc2hlZCBhdCBXZWJHTCBjb250ZXh0IHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgcmV0dXJuLgorCisgICAgICAgIEluc3RlYWQs
IGFkZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgp
IHdoaWNoIHNpZ25hbHMgdGhhdCBuZXh0CisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKCkgaXMgYSBkaXNwbGF5IG9wZXJhdGlvbi4gVGhpcyBjYW4gYmUgdXNlZCB0byB0byBk
ZXRlY3QgdGhlCisgICAgICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgaW4gd2hp
Y2ggd2UgbXVzdCBwcmVzZW50IHRoZSBkcmF3aW5nIGJ1ZmZlciBhcworICAgICAgICBkaXNwbGF5
IGJ1ZmZlci4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGRpc3BsYXkgYnVmZmVyIHJlYWQgd2l0
aCBPcGVuR0wuCisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGRyYXdpbmcgYnVmZmVyIHJlYWQgY29k
ZSB0byBiZSBhYmxlIHRvIHJldXNlIHRoZSByZWFkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBkaXNw
bGF5IGJ1ZmZlciByZWFkLiBUaGUgcmVmYWN0b3JlZCBjb2RlIHJlZHVjZXMgcmVkdW5kYW50IHRo
ZQorICAgICAgICBhbGxvY2F0aW9ucyBvZiBmdWxsLXNjcmVlbiBtYWxsb2MgYnVmZmVycyBhbmQg
ZW5zdXJlcyBhbGxvY2F0aW9uIHJlc3VsdHMgYXJlCisgICAgICAgIGNoZWNrZWQgaW5zdGVhZCBv
ZiBjcmFzaGluZyB3aXRoIG51bGxwdHIgZGVyZWZzIHdoZW4gT09NIGhhcHBlbnMuIEZpeGVzCisg
ICAgICAgIGVycm9ycyBzdWNoIGFzIHJkYXI6Ly82NzU1MzUzMSAoQ3Jhc2hUcmFjZXI6IGNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdAorICAgICAgICBXZWJDb3JlOiBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpLgorICAg
ICAgICBSZW1vdmVzIFJHQkEtPkJHUkEtPlJHQkEgY29udmVyc2lvbnMgZnJvbQorICAgICAgICBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEo
KS4KKyAgICAgICAgUmVtb3ZlcyBtYW51YWwgYWxwaGEgcHJlbXVsdGlwbGljYXRpb24gYW5kIG1h
a2VzIENHIGRyYXcgd2l0aCB1bnByZW11bHRpcGxpZWQKKyAgICAgICAgYWxwaGEuCisgICAgICAg
IENoYW5nZXMgQ2Fpcm8gdmFyaWFudCBvZiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB0byBjb252
ZXJ0IG1hbnVhbGx5IFJHQkEtPkJHUkEKKyAgICAgICAgaW5zdGVhZCBvZiAoYmlnKSBPcGVuR0wg
ZHJpdmVyIGRvaW5nIGl0IGluIGNhc2Ugb2Ygbm9uLU5WSURJQSBwbGF0Zm9ybXMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCB0aGUgc25hcHNob3QgLyBzdytodyBkcmF3aW5nIGlzIG5vdCB0ZXN0
YWJsZSBhdCB0aGUgbW9tZW50LgorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHUFVDYW52YXNDb250ZXh0Ojpjb25maWd1
cmVTd2FwQ2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4dDo6cHJlcGFy
ZUZvckRpc3BsYXlXaXRoUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R1BVQ2FudmFzQ29udGV4
dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L0dQVUNhbnZhc0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYWludCk6CisgICAg
ICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9HUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByZXBhcmVGb3JEaXNwbGF5V2l0
aFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUluZGV4QXJyYXlQcmVj
aXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlRHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZlcnRleEF0dHJpYmZ2SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjppbml0VmVydGV4QXR0cmliMCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVz
dWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJl
bmRlcmluZ1Jlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmc6OlNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRCdWZmZXJCaW5kaW5nOjpTY29wZWRCdWZmZXJC
aW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6On5TY29wZWRC
dWZmZXJCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEJ1ZmZlckJpbmRpbmc6OnF1
ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZzo6bWFya0JpbmRpbmdDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUmVzdG9yZVJl
YWRGcmFtZWJ1ZmZlckJpbmRpbmc6On5TY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRQaXhlbFN0b3JhZ2VNb2RlOjpTY29wZWRQaXhl
bFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVsU3RvcmFnZU1vZGU6
On5TY29wZWRQaXhlbFN0b3JhZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBpeGVs
U3RvcmFnZU1vZGU6OnBpeGVsU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkUGl4ZWxT
dG9yYWdlTW9kZTo6b3BlcmF0b3IgR0xpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nv
cGVkVGV4dHVyZTo6U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0
dXJlOjp+U2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRUZXh0dXJlOjpv
cGVyYXRvciBHTHVpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVidWZm
ZXI6OlNjb3BlZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lYnVm
ZmVyOjp+U2NvcGVkRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVi
dWZmZXI6Om9wZXJhdG9yIEdMdWludCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZWxlYXNlSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb3dPZmZsaW5lUmVuZGVy
ZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkQ29tcG9zaXRlZFJlc3VsdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9y
UGFpbnRSZXN1bHRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYkltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZUF0dHJpYik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZlVW5pZm9ybUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om9y
aWdpbmFsU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6bWFwcGVkU3ltYm9sTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldE5vbkJ1aWx0SW5BY3RpdmVTeW1ib2xDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5m
b0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVyaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0U2hh
ZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cyk6CisKIDIwMjAtMTItMTQg
IExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU1NJT04o
MjcwNDM1KSBbR1N0cmVhbWVyXSBNYW55IG1lZGlhIHNvdXJjZSB0ZXN0cyBmYWlsaW5nIGFuZCB0
aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwMzI4Y2Y2ZTg0NWY3NTNlNjQyYjQ1M2I4NjMxMTgxN2Q0
YzA2YzkuLmUwODk5YTkyYmMyMGMzNTliYTgwN2IyODEwYjBkZDg5ZWIyMmRjOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTItMTcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVu
QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjY4Mzg2KTogU25hcHNob3RzIG9m
IFdlYkdMIGNvbnRlbnQgaW4gdGhlIHRhYiBwaWNrZXIgZG9uJ3Qgd29yayAoYmxhY2sgbWFwIG9u
IEdvb2dsZSBNYXBzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5OTQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjAxMzc4ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZHVtbXkgaW1wbGVt
ZW50YXRpb25zIG9mIEdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9D
YW52YXMuCisgICAgICAgIFBhaW50aW5nIHRvIGNhbnZhcyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0
IGZvciB0aGUgcmVtb3RlIEdyYXBoaWNzQ29udGV4dEdMIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6ZGlzcGxh
eUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oOgorCiAyMDIwLTEyLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gSW50cm9kdWNlIHZtRW50cnlDdXN0b21BY2Nlc3NvciBhbmQgdm1FbnRy
eUhvc3RGdW5jdGlvbiBmb3IgSklUQ2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVDYW52YXNDb250ZXh0LmNwcAppbmRleCBlMzAzNTBiNDYyYTBmZWQ0NDY2OGJm
ODk2MDI5MjkzZTExNzhlODg3Li4zOGIxNTI4ZmZjM2E5NTI1ODUwYTk0ZDY1ZWQyNzk0YTRkODA0
YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVDYW52YXND
b250ZXh0LmNwcApAQCAtOTAsMTAgKzkwLDE4IEBAIHZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgbm90aWZ5Q2FudmFzQ29udGVudENoYW5n
ZWQoKTsKIH0KIAotdm9pZCBHUFVDYW52YXNDb250ZXh0OjptYXJrTGF5ZXJDb21wb3NpdGVkKCkK
K3ZvaWQgR1BVQ2FudmFzQ29udGV4dDo6cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQogewot
ICAgIGlmIChtX3N3YXBDaGFpbiAmJiBtX3N3YXBDaGFpbi0+c3dhcENoYWluKCkpCisgICAgbV9p
c0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSB0cnVlOworfQorCit2b2lkIEdQVUNhbnZhc0NvbnRleHQ6
OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKK3sKKyAgICAvLyBGSVhNRTogVW5pbXBs
ZW1lbnRlZC4KKyAgICBpZiAobV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgJiYgbV9zd2FwQ2hhaW4g
JiYgbV9zd2FwQ2hhaW4tPnN3YXBDaGFpbigpKSB7CiAgICAgICAgIG1fc3dhcENoYWluLT5zd2Fw
Q2hhaW4oKS0+cHJlc2VudCgpOworICAgICAgICBtX2lzRGlzcGxheWluZ1dpdGhQYWludCA9IGZh
bHNlOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVQ2FudmFzQ29udGV4dC5oCmluZGV4IDZkZjIwYjRhNjQ3
ZjZhMTg3OGIzODE1NmMyZDA3MTA3NjU0MzJhOGQuLjliMGZlN2IwZDA4Y2U5M2M3ZWNhODY5NGEw
MGQxNjMyZTEzZDBjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVUNhbnZhc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVDYW52YXNDb250ZXh0LmgKQEAgLTUzLDEzICs1MywxNSBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNXZWJHUFUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpIGZpbmFsOwotICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGZp
bmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSBmaW5hbDsKKyAgICB2
b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgZmluYWw7CiAKICAgICAvLyBBY3Rp
dmVET01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJHUFVDYW52YXNDb250ZXh0IjsgfQogICAgIC8vIEZJWE1FOiBTdHVi
cy4KICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IH0KIAorICAgIGJvb2wgbV9pc0Rpc3BsYXlpbmdX
aXRoUGFpbnQgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxXZWJHUFVTd2FwQ2hhaW4+IG1fc3dhcENo
YWluOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRl
eCAxNjljYWE5MDAyNGQyNjc3MjMwNTA2MmY1OThkMTJjY2RkYmFiM2ZmLi41NGIzNDAxZGU5MGYy
MmE4OWI2OTYyN2ZiNDAxZDg1NTVkNTY3ZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcApAQCAtNjQyLDIwICs2NDIsMTcgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBy
KQogCiAgICAgICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgICAgIHNob3VsZFBhaW50ID0g
cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIHx8IGRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCBtX2lz
U25hcHNob3R0aW5nOwotICAgICAgICAgICAgaWYgKHNob3VsZFBhaW50KQorICAgICAgICAgICAg
aWYgKHNob3VsZFBhaW50KSB7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9y
RGlzcGxheVdpdGhQYWludCgpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChzaG91bGRQYWludCkgewogICAgICAgICAgICAgaWYgKGhhc0NyZWF0ZWRJbWFnZUJ1
ZmZlcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fcHJlc2VudGVkSW1hZ2UpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVk
SW50UmVjdChyKSwgcmVuZGVyZXIoKS0+aW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBidWZmZXIoKSkKKyAgICAg
ICAgICAgICAgICBpZiAoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gYnVmZmVyKCkpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgc25h
cHBlZEludFJlY3QocikpOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoaXNHUFVC
YXNlZCgpKQotICAgICAgICAgICAgICAgIGRvd25jYXN0PEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5n
Q29udGV4dD4oKm1fY29udGV4dCkubWFya0xheWVyQ29tcG9zaXRlZCgpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC02NjgsMTkgKzY2NSw2IEBAIGJvb2wgSFRNTENhbnZhc0VsZW1lbnQ6OmlzR1BV
QmFzZWQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHQgJiYgbV9jb250ZXh0LT5pc0dQVUJh
c2VkKCk7CiB9CiAKLXZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6Om1ha2VQcmVzZW50YXRpb25Db3B5
KCkKLXsKLSAgICBpZiAoIW1fcHJlc2VudGVkSW1hZ2UpIHsKLSAgICAgICAgLy8gVGhlIGJ1ZmZl
ciBjb250YWlucyB0aGUgbGFzdCBwcmVzZW50ZWQgZGF0YSwgc28gc2F2ZSBhIGNvcHkgb2YgaXQu
Ci0gICAgICAgIG1fcHJlc2VudGVkSW1hZ2UgPSBidWZmZXIoKS0+Y29weUltYWdlKENvcHlCYWNr
aW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKLSAgICB9Ci19Ci0KLXZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OmNsZWFyUHJlc2VudGF0aW9uQ29weSgpCi17Ci0gICAgbV9wcmVzZW50
ZWRJbWFnZSA9IG51bGxwdHI7Ci19Ci0KIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnNldFN1cmZh
Y2VTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgQ2FudmFzQmFzZTo6c2V0U2l6ZShz
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCBhZWIwMTg5
NzQ5YjU4MzMzNzQ4NDA0Yzk1YmFmZWQwNDUyOGY5Y2VmLi45YzkyMzBmNWZiYjdlNmRlNGI2OWZk
NWM4NmJlZWU0MDY0YjQ0MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oCkBAIC0xMTUsOCArMTE1LDYgQEAgcHVibGljOgogICAgIEltYWdlKiBjb3BpZWRJbWFnZSgp
IGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY2xlYXJDb3BpZWRJbWFnZSgpIGNvbnN0IGZpbmFsOwog
ICAgIFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YSgpOwotICAgIHZvaWQgbWFrZVByZXNl
bnRhdGlvbkNvcHkoKTsKLSAgICB2b2lkIGNsZWFyUHJlc2VudGF0aW9uQ29weSgpOwogCiAgICAg
U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWw7CiAKQEAgLTE5OSw3
ICsxOTcsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lzU25hcHNob3R0aW5nIHsgZmFsc2Ug
fTsKIAotICAgIG11dGFibGUgUmVmUHRyPEltYWdlPiBtX3ByZXNlbnRlZEltYWdlOwogICAgIG11
dGFibGUgUmVmUHRyPEltYWdlPiBtX2NvcGllZEltYWdlOyAvLyBGSVhNRTogVGhpcyBpcyB0ZW1w
b3JhcnkgZm9yIHBsYXRmb3JtcyB0aGF0IGhhdmUgdG8gY29weSB0aGUgaW1hZ2UgYnVmZmVyIHRv
IHJlbmRlciAoYW5kIGZvciBDU1NDYW52YXNWYWx1ZSkuCiB9OwogCkBAIC0yMTYsNCArMjEzLDMg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3QgV2ViQ29yZTo6
RXZlbnRUYXJnZXQmIHRhcmdldCkgeyByZXR1cm4gaXM8V2ViQ29yZTo6Tm9kZT4odGFyZ2V0KSAm
JiBjaGVja1RhZ05hbWUoZG93bmNhc3Q8V2ViQ29yZTo6Tm9kZT4odGFyZ2V0KSk7IH0KIH07CiB9
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuaAppbmRleCBhY2Y4M2JiNzJkY2E3MDFjMGZjYzY3MzhjMWQ4NmNhMTE3OGZkNDk0Li5m
Mzg4NjNmNzhmZWUzZmY4OTkyOWM3NGM0N2NhMmU1MzQxOTkwMDU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC03MSw2
ICs3MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNPZmZzY3JlZW4yZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGFpbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCisgICAgLy8gQ2FsbGVkIGJlZm9yZSBwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0NhbnZhcyBpZiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyBpcworICAgIC8vIHVz
ZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2VzLgorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9y
RGlzcGxheVdpdGhQYWludCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0NhbnZhcygpIHt9CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9HUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDQ3
YTAyZWI3MDZjZTQ1ZDg4ZjE5NzU0YmI3ZDhiZWZmOWIxZjk0MmMuLjg5MGNkNzIzNTAxZTA0ZTI4
ZTgyZjc3YTBiNjlkYmVkNTlhNDg1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC01MCw4
ICs1MCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzaGFwZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFya0xheWVyQ29tcG9z
aXRlZCgpID0gMDsKLQogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEdQVUJhc2VkQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMDEzYjg5
YWY0ODg4Yjg3YzBmNjQ4ZTUyY2I1NjFjZGI5MWM1NDk3My4uMzBkOWU3ZTkxYTQzYzM5ZTgxMmY3
YmI1MmI1MTA2OGJjOTM2NzU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTExOTksMTEgKzExOTks
MTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZXN0b3JlU3RhdGVBZnRlckNs
ZWFyKCkKICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayhtX2RlcHRoTWFzayk7CiB9CiAKLXZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWFya0xheWVyQ29tcG9zaXRlZCgpCisKK3ZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKQog
ewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBtX2NvbnRleHQtPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKyAgICBtX2lzRGlzcGxheWluZ1dp
dGhQYWludCA9IHRydWU7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQpAQCAtMTIxMSwxOCArMTIxMCwxNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KCkKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoYXV0byogY2FudmFzID0gaHRtbENhbnZhcygpKSB7Ci0gICAgICAgIGlmIChjYW52
YXMtPmRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCAoY2FudmFzLT5pc1NuYXBzaG90dGluZygpICYm
IGNhbnZhcy0+ZG9jdW1lbnQoKS5wYWdlKCktPmlzVmlzaWJsZSgpKSkKLSAgICAgICAgICAgIGNh
bnZhcy0+Y2xlYXJQcmVzZW50YXRpb25Db3B5KCk7Ci0KLSAgICAgICAgLy8gVW50aWwgdGhlIGNh
bnZhcyBpcyB3cml0dGVuIHRvIGJ5IHRoZSBhcHBsaWNhdGlvbiwgdGhlIGNsZWFyIHRoYXQKLSAg
ICAgICAgLy8gaGFwcGVuZWQgYWZ0ZXIgaXQgd2FzIGNvbXBvc2l0ZWQgc2hvdWxkIGJlIGlnbm9y
ZWQgYnkgdGhlIGNvbXBvc2l0b3IuCi0gICAgICAgIGlmIChtX2NvbnRleHQtPmxheWVyQ29tcG9z
aXRlZCgpICYmICFtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKGNhbnZhcy0+YnVm
ZmVyKCkpOwotCi0gICAgICAgICAgICBjYW52YXMtPm1ha2VQcmVzZW50YXRpb25Db3B5KCk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2FudmFzLT5jbGVhclByZXNlbnRhdGlvbkNvcHko
KTsKKyAgICBpZiAobV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQpIHsKKyAgICAgICAgYm9vbCBjYW52
YXNDb250YWluc0Rpc3BsYXlCdWZmZXIgPSAhbV9tYXJrZWRDYW52YXNEaXJ0eTsKKyAgICAgICAg
cHJlcGFyZUZvckRpc3BsYXkoKTsKKyAgICAgICAgbV9pc0Rpc3BsYXlpbmdXaXRoUGFpbnQgPSBm
YWxzZTsKKyAgICAgICAgaWYgKCFjYW52YXNDb250YWluc0Rpc3BsYXlCdWZmZXIpIHsKKyAgICAg
ICAgICAgIGF1dG8mIGJhc2UgPSBjYW52YXNCYXNlKCk7CisgICAgICAgICAgICBiYXNlLmNsZWFy
Q29waWVkSW1hZ2UoKTsKKyAgICAgICAgICAgIG1fbWFya2VkQ2FudmFzRGlydHkgPSBmYWxzZTsK
KyAgICAgICAgICAgIG1fY29udGV4dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKGJh
c2UuYnVmZmVyKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBj
bGVhcklmQ29tcG9zaXRlZChDbGVhckNhbGxlck90aGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCAzMGE4
NTU3ZDg2ODhlMmVhNDk1ZGI3MTZmMDhiZTYwOWVjM2I0ZThhLi5lOGU5MGNmYmExNmIxNGRkMTQ4
Yzk4ZTA2OWU1MDBlY2RlMmI1NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0zODQsOCArMzg0LDggQEAg
cHVibGljOgogCiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheVdpdGhQYWludCgpIGZpbmFsOworICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoKSBmaW5hbDsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpOwogCiAgICAgdm9pZCByZW1vdmVTaGFyZWRPYmplY3QoV2Vi
R0xTaGFyZWRPYmplY3QmKTsKQEAgLTY2OCw2ICs2NjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCk7CiAKICAgICBib29sIG1fY29tcG9zaXRpbmdSZXN1
bHRzTmVlZFVwZGF0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNEaXNwbGF5aW5nV2l0aFBh
aW50IHsgZmFsc2UgfTsKIAogICAgIC8vIEVuYWJsZWQgZXh0ZW5zaW9uIG9iamVjdHMuCiAgICAg
Ly8gRklYTUU6IE1vdmUgc29tZSBvZiB0aGVzZSB0byBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIHRo
ZSBvbmVzIG5vdCBuZWVkZWQgZm9yIFdlYkdMMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggMjIzYTVjOWJmMTY5N2Yy
NWYxMTJkYmNjMTg2ZjgxOWI3Y2UxZGU0NS4uYWE4ZmYyMzY4ZGZmZDg5Y2VhYjZhNDQzMzMwZGI0
NTE2YTE4ZjlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0xMjkyLDcgKzEyOTIsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gdGhlIGNvbnRleHQuCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyKikgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlRGF0YT4g
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikg
PSAwOwogCiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQuIFRoZSBsYXllciBz
aG91bGQgYmUgbWFya2VkIGNvbXBvc2l0ZWQgYnkKICAgICAvLyBwcmVwYXJpbmcgZm9yIGRpc3Bs
YXksIHNvIHRoYXQgY2FudmFzIGltYWdlIGJ1ZmZlciBhbmQgdGhlIGxheWVyIGFncmVlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKaW5kZXggNjBmN2E5NDdlZmNiYjM3
MTU2YzA5OGUwYjVlZTMzYzNiNjJiODQ5Yi4uMzZmYWFhN2U0NjYyMmJhZjNhMTIzZmJlOTVlZTk0
YmU2NDA5ZDU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcApA
QCAtOTksMTEgKzk5LDYgQEAgR0NHTGJpdGZpZWxkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdAogICAgIHJldHVybiBtX2J1ZmZl
cnNUb0F1dG9DbGVhcjsKIH0KIAotYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKLXsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpCiB7CiAgICAgLy8gUmVkZWNsYXJlZCBmb3Ig
ZXhwb3J0IHJlYXNvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAppbmRl
eCA3MjZhYWY2YzZhMGY2MmZmMjgyZTViOGQyMDJhMTI5NGUxZGU4NTcxLi4yNDcxZDRlMjVjOWFh
MjAwZWM3NDNiMWZlMGM2NDY4YjBjOWE1MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlLmgKQEAgLTY3LDcgKzY3LDYgQEAgcHVibGljOgogICAgIGJvb2wgbGF5ZXJDb21w
b3NpdGVkKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NH
TGJpdGZpZWxkKSBmaW5hbDsKICAgICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFy
KCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMo
SW1hZ2VCdWZmZXIqKSBmaW5hbDsKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5h
bDsKICAgICB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDMwOWE1MzA5YjY0MGEzZDZhMjgxNDFj
YTdiMWE3NWRiNDZlOWY5NTEuLmI1MDQzYjc0NjM2Zjc4ODVjNWQ4MGMwNzczNTU1ZDcxMjAwMDIz
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0zMSw2ICszMSw3IEBA
CiAKICNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zR0xBTkdM
RS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKQEAgLTQ2LDkgKzQ3LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0jaWYgVVNFKEFDQ0VMRVJB
VEUpCi0jaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+Ci0jZW5kaWYKIAogI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTENWQU5HTEUuaCIKQEAgLTY0LDMwICs2Miw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIFNjb3BlZFJlc2V0QnVmZmVyQmluZGluZyB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUmVzZXRCdWZmZXJCaW5kaW5nKTsKLXB1YmxpYzoK
LSAgICBTY29wZWRSZXNldEJ1ZmZlckJpbmRpbmcoYm9vbCBzaG91bGREb1dvcmssIEdMZW51bSBi
aW5kaW5nUG9pbnRRdWVyeSwgR0xlbnVtIGJpbmRpbmdQb2ludCkKLSAgICAgICAgOiBtX2JpbmRp
bmdQb2ludFF1ZXJ5KGJpbmRpbmdQb2ludFF1ZXJ5KQotICAgICAgICAsIG1fYmluZGluZ1BvaW50
KGJpbmRpbmdQb2ludCkKLSAgICB7Ci0gICAgICAgIGlmIChzaG91bGREb1dvcmspCi0gICAgICAg
ICAgICBnbDo6R2V0SW50ZWdlcnYobV9iaW5kaW5nUG9pbnRRdWVyeSwgJm1fYmluZGluZ1ZhbHVl
KTsKLSAgICAgICAgaWYgKG1fYmluZGluZ1ZhbHVlKQotICAgICAgICAgICAgZ2w6OkJpbmRCdWZm
ZXIobV9iaW5kaW5nUG9pbnQsIDApOwotICAgIH0KLQotICAgIH5TY29wZWRSZXNldEJ1ZmZlckJp
bmRpbmcoKQotICAgIHsKLSAgICAgICAgaWYgKG1fYmluZGluZ1ZhbHVlKQotICAgICAgICAgICAg
Z2w6OkJpbmRCdWZmZXIobV9iaW5kaW5nUG9pbnQsIG1fYmluZGluZ1ZhbHVlKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgR0xpbnQgbV9iaW5kaW5nUG9pbnRRdWVyeSB7IDAgfTsKLSAgICBHTGlu
dCBtX2JpbmRpbmdQb2ludCB7IDAgfTsKLSAgICBHTGludCBtX2JpbmRpbmdWYWx1ZSB7IDAgfTsK
LX07CiAKIH0gLy8gbmFtZXNwYWNlIGFub255bW91cwogCkBAIC0xMDIsMzYgKzc2LDI5IEBAIHN0
YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGludCB3aWR0aCwgaW50IGhlaWdo
dCwgdW5zaWduZWQgY2hhciogcGl4CiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeShpbnQgeCwgaW50
IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQotewotICAg
IC8vIE5WSURJQSBkcml2ZXJzIGhhdmUgYSBidWcgd2hlcmUgY2FsbGluZyByZWFkUGl4ZWxzIGlu
IEJHUkEgY2FuIHJldHVybiB0aGUgd3JvbmcgdmFsdWVzIGZvciB0aGUgYWxwaGEgY2hhbm5lbCB3
aGVuIHRoZSBhbHBoYSBpcyBvZmYgZm9yIHRoZSBjb250ZXh0LgotICAgIGdsOjpSZWFkUGl4ZWxz
KHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7
Ci0jaWYgVVNFKEFDQ0VMRVJBVEUpCi0gICAgdkltYWdlX0J1ZmZlciBzcmM7Ci0gICAgc3JjLmhl
aWdodCA9IGhlaWdodDsKLSAgICBzcmMud2lkdGggPSB3aWR0aDsKLSAgICBzcmMucm93Qnl0ZXMg
PSB3aWR0aCAqIDQ7Ci0gICAgc3JjLmRhdGEgPSBwaXhlbHM7Ci0KLSAgICB2SW1hZ2VfQnVmZmVy
IGRlc3Q7Ci0gICAgZGVzdC5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgZGVzdC53aWR0aCA9IHdpZHRo
OwotICAgIGRlc3Qucm93Qnl0ZXMgPSB3aWR0aCAqIDQ7Ci0gICAgZGVzdC5kYXRhID0gcGl4ZWxz
OwotCi0gICAgLy8gU3dhcCBwaXhlbCBjaGFubmVscyBmcm9tIFJHQkEgdG8gQkdSQS4KLSAgICBj
b25zdCB1aW50OF90IG1hcFs0XSA9IHsgMiwgMSwgMCwgMyB9OwotICAgIHZJbWFnZVBlcm11dGVD
aGFubmVsc19BUkdCODg4OCgmc3JjLCAmZGVzdCwgbWFwLCBrdkltYWdlTm9GbGFncyk7Ci0jZWxz
ZQotICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAgICBzdGQ6OnN3YXAocGl4ZWxz
W2ldLCBwaXhlbHNbaSArIDJdKTsKLSNlbmRpZgotCitSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCit7CisgICAgYXV0
byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6
ZSgpKTsKKyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
U2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSBwYWNrQWxpZ25tZW50KEdMX1BBQ0tfQUxJR05NRU5UKTsK
KyAgICBpZiAocGFja0FsaWdubWVudCA+IDQpCisgICAgICAgIHBhY2tBbGlnbm1lbnQucGl4ZWxT
dG9yZSg0KTsKKyAgICBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlIHBhY2tSb3dMZW5ndGgoR0xfUEFD
S19ST1dfTEVOR1RILCAwLCBtX2lzRm9yV2ViR0wyKTsKKyAgICBTY29wZWRQaXhlbFN0b3JhZ2VN
b2RlIHBhY2tTa2lwUm93cyhHTF9QQUNLX1NLSVBfUk9XUywgMCwgbV9pc0ZvcldlYkdMMik7Cisg
ICAgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSBwYWNrU2tpcFBpeGVscyhHTF9QQUNLX1NLSVBfUElY
RUxTLCAwLCBtX2lzRm9yV2ViR0wyKTsKKyAgICBTY29wZWRCdWZmZXJCaW5kaW5nIHNjb3BlZFBp
eGVsUGFja0J1ZmZlclJlc2V0KEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCAwLCBtX2lzRm9yV2ViR0wy
KTsKKworICAgIGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKDAsIDAsIGltYWdlRGF0YS0+d2lk
dGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgaW1h
Z2VEYXRhLT5kYXRhKCktPmJ5dGVMZW5ndGgoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
aW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSk7CisgICAgLy8gRklYTUU6IFJlbmRlcmluZyB0byBH
TF9SR0IgdGV4dHVyZXMgd2l0aCBhIElPU3VyZmFjZSBib3VuZCB0byB0aGUgdGV4dHVyZSBpbWFn
ZSBsZWF2ZXMKKyAgICAvLyB0aGUgYWxwaGEgaW4gdGhlIElPU3VyZmFjZSBpbiBpbmNvcnJlY3Qg
c3RhdGUuIEFsc28gQU5HTEUgZ2w6OlJlYWRQaXhlbHMgd2lsbCBpbiBzb21lCisgICAgLy8gY2Fz
ZXMgZXhwb3NlIHRoZSBub24tMjU1IHZhbHVlcy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODA0CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmICghY29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSkKLSAgICAg
ICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdodCwgcGl4ZWxzKTsKKyAg
ICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFn
ZURhdGEtPmhlaWdodCgpLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpKTsKICNlbmRpZgorICAg
IHJldHVybiBpbWFnZURhdGE7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZh
bGlkYXRlQXR0cmlidXRlcygpCkBAIC01MTAsNjQgKzQ3Nyw2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRo
U3RlbmNpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCi17Ci0gICAg
Q2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PiByb3dCeXRlcyA9IENoZWNrZWQ8aW50LCBSZWNv
cmRPdmVyZmxvdz4obV9jdXJyZW50V2lkdGgpICogNDsKLSAgICBpZiAocm93Qnl0ZXMuaGFzT3Zl
cmZsb3dlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDaGVja2VkPGludCwgUmVjb3JkT3Zl
cmZsb3c+IHRvdGFsQnl0ZXNDaGVja2VkID0gcm93Qnl0ZXMgKiBtX2N1cnJlbnRIZWlnaHQ7Ci0g
ICAgaWYgKHRvdGFsQnl0ZXNDaGVja2VkLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGludCB0b3RhbEJ5dGVzID0gdG90YWxCeXRlc0NoZWNrZWQudW5zYWZlR2V0KCk7Ci0K
LSAgICBhdXRvIHBpeGVscyA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPih0b3RhbEJ5
dGVzKTsKLSAgICBpZiAoIXBpeGVscykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcmVhZFJlbmRl
cmluZ1Jlc3VsdHMocGl4ZWxzLmdldCgpLCB0b3RhbEJ5dGVzKTsKLQotICAgIGlmICghY29udGV4
dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpIHsKLSAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpIHsKLSAgICAgICAgICAgIC8vIFByZW11bHRpcGx5
IGFscGhhLgotICAgICAgICAgICAgcGl4ZWxzW2kgKyAwXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxz
W2kgKyAwXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICAgICAgcGl4ZWxzW2kgKyAx
XSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAxXSAqIHBpeGVsc1tpICsgM10gLyAyNTUpOwot
ICAgICAgICAgICAgcGl4ZWxzW2kgKyAyXSA9IHN0ZDo6bWluKDI1NSwgcGl4ZWxzW2kgKyAyXSAq
IHBpeGVsc1tpICsgM10gLyAyNTUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcGFpbnRUb0Nh
bnZhcyhwaXhlbHMuZ2V0KCksIEludFNpemUobV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdo
dCksIGltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsK
LX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKLXsKLSAgICAvLyBOb3QgbmVlZGVkIGF0IHRoZSBtb21l
bnQsIHNvIHJldHVybiB0aGF0IG5vdGhpbmcgd2FzIGRvbmUuCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1SZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQotewotICAgIC8vIFJlYWRpbmcgcHJlbXVsdGlwbGll
ZCBhbHBoYSB3b3VsZCBpbnZvbHZlIHVucHJlbXVsdGlwbHlpbmcsIHdoaWNoIGlzCi0gICAgLy8g
bG9zc3kuCi0gICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRh
OjpjcmVhdGUoSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KSk7Ci0gICAg
dW5zaWduZWQgY2hhciogcGl4ZWxzID0gaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKTsKLSAgICBD
aGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IHRvdGFsQnl0ZXNDaGVja2VkID0gNCAqIENoZWNr
ZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4obV9jdXJyZW50V2lkdGgpICogQ2hlY2tlZDxpbnQsIFJl
Y29yZE92ZXJmbG93PihtX2N1cnJlbnRIZWlnaHQpOwotICAgIGlmICh0b3RhbEJ5dGVzQ2hlY2tl
ZC5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBpbWFnZURhdGE7Ci0gICAgaW50IHRv
dGFsQnl0ZXMgPSB0b3RhbEJ5dGVzQ2hlY2tlZC51bnNhZmVHZXQoKTsKLQotICAgIHJlYWRSZW5k
ZXJpbmdSZXN1bHRzKHBpeGVscywgdG90YWxCeXRlcyk7Ci0KLSAgICAvLyBDb252ZXJ0IHRvIFJH
QkEuCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpCi0gICAgICAg
IHN0ZDo6c3dhcChwaXhlbHNbaV0sIHBpeGVsc1tpICsgMl0pOwotCi0gICAgcmV0dXJuIGltYWdl
RGF0YTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZVRleHR1cmUo
KQogewogICAgIGlmIChtX2xheWVyQ29tcG9zaXRlZCkKQEAgLTYyMCw2NSArNTI5LDE1IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVUZXh0dXJlSW1wbCgpCiAjZW5kaWYK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHMo
dW5zaWduZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSkKK1JlZlB0cjxJbWFnZURhdGE+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cygpCiB7Ci0gICAg
aWYgKHBpeGVsc1NpemUgPCBtX2N1cnJlbnRXaWR0aCAqIG1fY3VycmVudEhlaWdodCAqIDQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotCi0gICAgR0NHTGVudW0gZnJhbWVidWZmZXJUYXJnZXQgPSBtX2lzRm9yV2Vi
R0wyID8gR3JhcGhpY3NDb250ZXh0R0w6OlJFQURfRlJBTUVCVUZGRVIgOiBHcmFwaGljc0NvbnRl
eHRHTDo6RlJBTUVCVUZGRVI7Ci0KLSAgICBib29sIG11c3RSZXN0b3JlRkJPID0gZmFsc2U7Cisg
ICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcgZmJvQmluZGluZyhtX2lzRm9y
V2ViR0wyLCBtX3N0YXRlLmJvdW5kUmVhZEZCTyk7CiAgICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVz
KCkuYW50aWFsaWFzKSB7CiAgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3Nhcnko
KTsKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlclRhcmdldCwgbV9mYm8p
OwotICAgICAgICBtdXN0UmVzdG9yZUZCTyA9IHRydWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
aWYgKG1fc3RhdGUuYm91bmRSZWFkRkJPICE9IG1fZmJvKSB7Ci0gICAgICAgICAgICBtdXN0UmVz
dG9yZUZCTyA9IHRydWU7Ci0gICAgICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKGZyYW1lYnVm
ZmVyVGFyZ2V0LCBtX2Zibyk7Ci0gICAgICAgIH0KKyAgICAgICAgZmJvQmluZGluZy5tYXJrQmlu
ZGluZ0NoYW5nZWQoKTsKICAgICB9Ci0KLSAgICBHTGludCBwYWNrQWxpZ25tZW50ID0gNDsKLSAg
ICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOwotICAgIGdsOjpHZXRJbnRl
Z2VydihHTF9QQUNLX0FMSUdOTUVOVCwgJnBhY2tBbGlnbm1lbnQpOwotICAgIGlmIChwYWNrQWxp
Z25tZW50ID4gNCkgewotICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQs
IDQpOwotICAgICAgICBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSB0cnVlOwotICAgIH0KLSAg
ICBHTGludCBwYWNrUm93TGVuZ3RoID0gMDsKLSAgICBHTGludCBwYWNrU2tpcFJvd3MgPSAwOwot
ICAgIEdMaW50IHBhY2tTa2lwUGl4ZWxzID0gMDsKLSAgICBTY29wZWRSZXNldEJ1ZmZlckJpbmRp
bmcgc2NvcGVkUGl4ZWxQYWNrQnVmZmVyUmVzZXQobV9pc0ZvcldlYkdMMiwgR0xfUElYRUxfUEFD
S19CVUZGRVJfQklORElORywgR0xfUElYRUxfUEFDS19CVUZGRVIpOwotICAgIGlmIChtX2lzRm9y
V2ViR0wyKSB7Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihHTF9QQUNLX1JPV19MRU5HVEgsICZw
YWNrUm93TGVuZ3RoKTsKLSAgICAgICAgaWYgKHBhY2tSb3dMZW5ndGggPiAwKQotICAgICAgICAg
ICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfUk9XX0xFTkdUSCwgMCk7Ci0gICAgICAgIGdsOjpH
ZXRJbnRlZ2VydihHTF9QQUNLX1NLSVBfUk9XUywgJnBhY2tTa2lwUm93cyk7Ci0gICAgICAgIGlm
IChwYWNrU2tpcFJvd3MgPiAwKQotICAgICAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tf
U0tJUF9ST1dTLCAwKTsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KEdMX1BBQ0tfU0tJUF9QSVhF
TFMsICZwYWNrU2tpcFBpeGVscyk7Ci0gICAgICAgIGlmIChwYWNrU2tpcFBpeGVscyA+IDApCi0g
ICAgICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19TS0lQX1BJWEVMUywgMCk7Ci0gICAg
fQotCi0gICAgcmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeSgwLCAwLCBtX2N1
cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBwaXhlbHMpOwotCi0gICAgaWYgKG11c3RSZXN0
b3JlUGFja0FsaWdubWVudCkKLSAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05N
RU5ULCBwYWNrQWxpZ25tZW50KTsKLSAgICBpZiAocGFja1Jvd0xlbmd0aCA+IDApCi0gICAgICAg
IGdsOjpQaXhlbFN0b3JlaShHTF9QQUNLX1JPV19MRU5HVEgsIHBhY2tSb3dMZW5ndGgpOwotICAg
IGlmIChwYWNrU2tpcFJvd3MgPiAwKQotICAgICAgICBnbDo6UGl4ZWxTdG9yZWkoR0xfUEFDS19T
S0lQX1JPV1MsIHBhY2tTa2lwUm93cyk7Ci0gICAgaWYgKHBhY2tTa2lwUGl4ZWxzID4gMCkKLSAg
ICAgICAgZ2w6OlBpeGVsU3RvcmVpKEdMX1BBQ0tfU0tJUF9QSVhFTFMsIHBhY2tTa2lwUGl4ZWxz
KTsKLQotICAgIGlmIChtdXN0UmVzdG9yZUZCTykKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZl
cihmcmFtZWJ1ZmZlclRhcmdldCwgbV9zdGF0ZS5ib3VuZFJlYWRGQk8pOworICAgIGZib0JpbmRp
bmcuYmluZEZyYW1lYnVmZmVyKG1fZmJvKTsKKyAgICByZXR1cm4gcmVhZFBpeGVsc0ZvclBhaW50
UmVzdWx0cygpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKGlu
dCB3aWR0aCwgaW50IGhlaWdodCkKQEAgLTcwNCw3ICs1NjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogICAgIFRlbXBv
cmFyeUFOR0xFU2V0dGluZyBzY29wZWRTY2lzc29yKEdMX1NDSVNTT1JfVEVTVCwgR0xfRkFMU0Up
OwogICAgIFRlbXBvcmFyeUFOR0xFU2V0dGluZyBzY29wZWREaXRoZXIoR0xfRElUSEVSLCBHTF9G
QUxTRSk7Ci0gICAgU2NvcGVkUmVzZXRCdWZmZXJCaW5kaW5nIHNjb3BlZFBpeGVsVW5wYWNrQnVm
ZmVyUmVzZXQobV9pc0ZvcldlYkdMMiwgR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HLCBH
TF9QSVhFTF9VTlBBQ0tfQlVGRkVSKTsKKyAgICBTY29wZWRCdWZmZXJCaW5kaW5nIHNjb3BlZFBp
eGVsVW5wYWNrQnVmZmVyUmVzZXQoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgbV9pc0Zvcldl
YkdMMik7CiAKICAgICBib29sIG11c3RSZXN0b3JlRkJPID0gcmVzaGFwZUZCT3MoSW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KSk7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgKaW5kZXggMjEzMjdk
ZGFmYzNkYjVmZWQyZTgxMzI2YjFmYTIyYzUyODY5ZjE1MS4uNDk0MmE5NTU0NTZiZjk0NDg0MDFj
MmUyNmI1N2ZkYjgyMWNkNGM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyk7CiBwdWJsaWM6Ci0gICAgU2NvcGVkUmVzdG9y
ZVRleHR1cmVCaW5kaW5nKEdDR0xlbnVtIGJpbmRpbmdQb2ludFF1ZXJ5LCBHQ0dMZW51bSBiaW5k
aW5nUG9pbnQsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVy
ZUJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludFF1ZXJ5LCBHTGVudW0gYmluZGluZ1BvaW50LCBi
b29sIGNvbmRpdGlvbiA9IHRydWUpCiAgICAgewotICAgICAgICBBU1NFUlQoYmluZGluZ1BvaW50
ICE9IHN0YXRpY19jYXN0PEdDR0xlbnVtPigwdSkpOworICAgICAgICBBU1NFUlQoYmluZGluZ1Bv
aW50ICE9IHN0YXRpY19jYXN0PEdMZW51bT4oMHUpKTsKICAgICAgICAgaWYgKGNvbmRpdGlvbikg
ewogICAgICAgICAgICAgbV9iaW5kaW5nUG9pbnQgPSBiaW5kaW5nUG9pbnQ7CiAgICAgICAgICAg
ICBnbDo6R2V0SW50ZWdlcnYoYmluZGluZ1BvaW50UXVlcnksIHJlaW50ZXJwcmV0X2Nhc3Q8R0xp
bnQqPigmbV9iaW5kaW5nVmFsdWUpKTsKQEAgLTU2LDYgKzU2LDE1MyBAQCBwcml2YXRlOgogICAg
IEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07CiB9OwogCisKK2NsYXNzIFNjb3BlZEJ1ZmZl
ckJpbmRpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEJ1ZmZlckJpbmRpbmcp
OworcHVibGljOgorICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludCwg
R0x1aW50IGJpbmRpbmdWYWx1ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQorICAgIHsKKyAgICAg
ICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdsOjpHZXRJ
bnRlZ2VydihxdWVyeShiaW5kaW5nUG9pbnQpLCByZWludGVycHJldF9jYXN0PEdMaW50Kj4oJm1f
YmluZGluZ1ZhbHVlKSk7CisgICAgICAgIGlmIChiaW5kaW5nVmFsdWUgPT0gbV9iaW5kaW5nVmFs
dWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fYmluZGluZ1BvaW50ID0gYmluZGlu
Z1BvaW50OworICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwgYmluZGluZ1Zh
bHVlKTsKKyAgICB9CisKKyAgICB+U2NvcGVkQnVmZmVyQmluZGluZygpCisgICAgeworICAgICAg
ICBpZiAobV9iaW5kaW5nUG9pbnQpCisgICAgICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRp
bmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdMZW51bSBxdWVyeShHTGVudW0gYmluZGluZ1BvaW50KQorICAgIHsKKyAgICAg
ICAgaWYgKGJpbmRpbmdQb2ludCA9PSBHTF9QSVhFTF9QQUNLX0JVRkZFUikKKyAgICAgICAgICAg
IHJldHVybiBHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOworICAgICAgICBBU1NFUlQoYmlu
ZGluZ1BvaW50ID09IEdMX1BJWEVMX1VOUEFDS19CVUZGRVIpOworICAgICAgICByZXR1cm4gR0xf
UElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HOworICAgIH0KKyAgICBHTGludCBtX2JpbmRpbmdQ
b2ludCB7IDAgfTsKKyAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUgeyAwdSB9OworfTsKK2NsYXNz
IFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk7CitwdWJsaWM6Cisg
ICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoYm9vbCBpc0ZvcldlYkdMMiwg
R0x1aW50IHJlc3RvcmVWYWx1ZSkKKyAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlzRm9y
V2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQorICAgICAgICAs
IG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZFJl
c3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGJvb2wgaXNGb3JXZWJHTDIsIEdMdWludCByZXN0
b3JlVmFsdWUsIEdMdWludCB2YWx1ZSkKKyAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlz
Rm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQorICAgICAg
ICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKKyAgICB7CisgICAgICAgIGJpbmRGcmFt
ZWJ1ZmZlcih2YWx1ZSk7CisgICAgfQorICAgIHZvaWQgbWFya0JpbmRpbmdDaGFuZ2VkKCkKKyAg
ICB7CisgICAgICAgIG1fYmluZGluZ0NoYW5nZWQgPSB0cnVlOworICAgIH0KKyAgICB2b2lkIGJp
bmRGcmFtZWJ1ZmZlcihHTHVpbnQgYmluZGluZ1ZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2JpbmRpbmdDaGFuZ2VkICYmIG1fYmluZGluZ1ZhbHVlID09IGJpbmRpbmdWYWx1ZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVy
VGFyZ2V0LCBiaW5kaW5nVmFsdWUpOworICAgICAgICBtX2JpbmRpbmdDaGFuZ2VkID0gbV9iaW5k
aW5nVmFsdWUgIT0gYmluZGluZ1ZhbHVlOworICAgIH0KKyAgICB+U2NvcGVkUmVzdG9yZVJlYWRG
cmFtZWJ1ZmZlckJpbmRpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYmluZGluZ0NoYW5nZWQp
CisgICAgICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXJUYXJnZXQsIG1f
YmluZGluZ1ZhbHVlKTsKKyAgICB9Citwcml2YXRlOgorICAgIGNvbnN0IEdMZW51bSBtX2ZyYW1l
YnVmZmVyVGFyZ2V0OworICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07CisgICAgYm9v
bCBtX2JpbmRpbmdDaGFuZ2VkIHsgZmFsc2UgfTsKK307CisKK2NsYXNzIFNjb3BlZFBpeGVsU3Rv
cmFnZU1vZGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFBpeGVsU3RvcmFnZU1v
ZGUpOworcHVibGljOgorICAgIGV4cGxpY2l0IFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVt
IG5hbWUsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICAgICAgOiBtX25hbWUoY29uZGl0aW9u
ID8gbmFtZSA6IDApCisgICAgeworICAgICAgICBpZiAobV9uYW1lKQorICAgICAgICAgICAgZ2w6
OkdldEludGVnZXJ2KG1fbmFtZSwgJm1fb3JpZ2luYWxWYWx1ZSk7CisgICAgfQorICAgIFNjb3Bl
ZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVtIG5hbWUsIEdMaW50IHZhbHVlLCBib29sIGNvbmRpdGlv
biA9IHRydWUpCisgICAgICAgIDogbV9uYW1lKGNvbmRpdGlvbiA/IG5hbWUgOiAwKQorICAgIHsK
KyAgICAgICAgaWYgKG1fbmFtZSkgeworICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KG1fbmFt
ZSwgJm1fb3JpZ2luYWxWYWx1ZSk7CisgICAgICAgICAgICBwaXhlbFN0b3JlKHZhbHVlKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICB+U2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSgpCisgICAgeworICAg
ICAgICBpZiAobV9uYW1lICYmIG1fdmFsdWVDaGFuZ2VkKQorICAgICAgICAgICAgZ2w6OlBpeGVs
U3RvcmVpKG1fbmFtZSwgbV9vcmlnaW5hbFZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBwaXhlbFN0
b3JlKEdMaW50IHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbmFtZSk7CisgICAgICAg
IGlmICghbV92YWx1ZUNoYW5nZWQgJiYgbV9vcmlnaW5hbFZhbHVlID09IHZhbHVlKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBnbDo6UGl4ZWxTdG9yZWkobV9uYW1lLCB2YWx1ZSk7Cisg
ICAgICAgIG1fdmFsdWVDaGFuZ2VkID0gbV9vcmlnaW5hbFZhbHVlICE9IHZhbHVlOworICAgIH0K
KyAgICBvcGVyYXRvciBHTGludCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9uYW1l
ICYmICFtX3ZhbHVlQ2hhbmdlZCk7CisgICAgICAgIHJldHVybiBtX29yaWdpbmFsVmFsdWU7Cisg
ICAgfQorcHJpdmF0ZToKKyAgICBjb25zdCBHTGVudW0gbV9uYW1lOworICAgIGJvb2wgbV92YWx1
ZUNoYW5nZWQgeyBmYWxzZSB9OworICAgIEdMaW50IG1fb3JpZ2luYWxWYWx1ZSB7IDAgfTsKK307
CisKK2NsYXNzIFNjb3BlZFRleHR1cmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3Bl
ZFRleHR1cmUpOworcHVibGljOgorICAgIFNjb3BlZFRleHR1cmUoKQorICAgIHsKKyAgICAgICAg
Z2w6OkdlblRleHR1cmVzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIH5TY29wZWRUZXh0dXJl
KCkKKyAgICB7CisgICAgICAgIGdsOjpEZWxldGVUZXh0dXJlcygxLCAmbV9vYmplY3QpOworICAg
IH0KKyAgICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
b2JqZWN0OworICAgIH0KK3ByaXZhdGU6CisgICAgR0x1aW50IG1fb2JqZWN0IHsgMHUgfTsKK307
CisKK2NsYXNzIFNjb3BlZEZyYW1lYnVmZmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
Y29wZWRGcmFtZWJ1ZmZlcik7CitwdWJsaWM6CisgICAgU2NvcGVkRnJhbWVidWZmZXIoKQorICAg
IHsKKyAgICAgICAgZ2w6OkdlbkZyYW1lYnVmZmVycygxLCAmbV9vYmplY3QpOworICAgIH0KKyAg
ICB+U2NvcGVkRnJhbWVidWZmZXIoKQorICAgIHsKKyAgICAgICAgZ2w6OkRlbGV0ZUZyYW1lYnVm
ZmVycygxLCAmbV9vYmplY3QpOworICAgIH0KKyAgICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0OworICAgIH0KK3ByaXZhdGU6CisgICAgR0x1
aW50IG1fb2JqZWN0IHsgMCB9OworfTsKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEdMQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0R0xDYWlyby5jcHAKaW5kZXggNDNjZGFjOGIwMWNkYTBkZjA2MjE4NmYxNTAwM2VhMzA4ZmEy
MGNkNi4uNTZmNmIxYTcwMWIyMDBjOTg2OGQyODJmMDdjMzc2ZGExMTBjZTI1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
R0xDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJD
YWlyb1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1
ZGUgIkltYWdlU291cmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNp
bmNsdWRlICJSZWZQdHJDYWlyby5oIgpAQCAtMTA1LDE1ICsxMDYsMzAgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywg
Y29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWlu
dFRvQ2FudmFzKFJlZjxJbWFnZURhdGE+JiYgaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBjYW52
YXNTaXplLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKCFpbWFnZVBpeGVs
cyB8fCBpbWFnZVNpemUuaXNFbXB0eSgpIHx8IGNhbnZhc1NpemUuaXNFbXB0eSgpKQorICAgIEFT
U0VSVCghaW1hZ2VEYXRhLT5zaXplKCkuaXNFbXB0eSgpKTsKKyAgICBpZiAoY2FudmFzU2l6ZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBsYXRmb3JtQ29udGV4dENhaXJvKiBw
bGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmICghcGxh
dGZvcm1Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBDb252ZXJ0IFJHQkEgdG8g
QkdSQS4gQkdSQSBpcyBDQUlST19GT1JNQVRfQVJHQjMyIG9uIGxpdHRsZS1lbmRpYW4gYXJjaGl0
ZWN0dXJlcy4KKyAgICBzaXplX3QgdG90YWxCeXRlcyA9IGltYWdlRGF0YS0+ZGF0YSgpLT5ieXRl
TGVuZ3RoKCk7CisgICAgdWludDhfdCogcGl4ZWxzID0gaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEo
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkKKyAgICAg
ICAgc3RkOjpzd2FwKHBpeGVsc1tpXSwgcGl4ZWxzW2kgKyAyXSk7CisKKyAgICBpZiAoIWNvbnRl
eHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKSB7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KSB7CisgICAgICAgICAgICBwaXhlbHNbaSAr
IDBdID0gc3RkOjptaW4oMjU1LCBwaXhlbHNbaSArIDBdICogcGl4ZWxzW2kgKyAzXSAvIDI1NSk7
CisgICAgICAgICAgICBwaXhlbHNbaSArIDFdID0gc3RkOjptaW4oMjU1LCBwaXhlbHNbaSArIDFd
ICogcGl4ZWxzW2kgKyAzXSAvIDI1NSk7CisgICAgICAgICAgICBwaXhlbHNbaSArIDJdID0gc3Rk
OjptaW4oMjU1LCBwaXhlbHNbaSArIDJdICogcGl4ZWxzW2kgKyAzXSAvIDI1NSk7CisgICAgICAg
IH0KKyAgICB9CisKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dC0+Y3IoKTsKICAg
ICBwbGF0Zm9ybUNvbnRleHQtPnNhdmUoKTsKIApAQCAtMTIyLDEwICsxMzgsMTAgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFy
KiBpbWFnZVBpeGVscywgY28KICAgICBjYWlyb19wYWludChjcik7CiAKICAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBpbWFnZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNl
X2NyZWF0ZV9mb3JfZGF0YSgKLSAgICAgICAgY29uc3RfY2FzdDx1bnNpZ25lZCBjaGFyKj4oaW1h
Z2VQaXhlbHMpLCBDQUlST19GT1JNQVRfQVJHQjMyLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VT
aXplLmhlaWdodCgpLCBpbWFnZVNpemUud2lkdGgoKSAqIDQpKTsKKyAgICAgICAgaW1hZ2VEYXRh
LT5kYXRhKCktPmRhdGEoKSwgQ0FJUk9fRk9STUFUX0FSR0IzMiwgaW1hZ2VEYXRhLT53aWR0aCgp
LCBpbWFnZURhdGEtPmhlaWdodCgpLCBpbWFnZURhdGEtPndpZHRoKCkgKiA0KSk7CiAKICAgICAv
LyBPcGVuR0wga2VlcHMgdGhlIHBpeGVscyBzdG9yZWQgYm90dG9tIHVwLCBzbyB3ZSBuZWVkIHRv
IGZsaXAgdGhlIGltYWdlIGhlcmUuCi0gICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCAwLCBpbWFnZVNp
emUuaGVpZ2h0KCkpOworICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgMCwgaW1hZ2VEYXRhLT5oZWln
aHQoKSk7CiAgICAgY2Fpcm9fc2NhbGUoY3IsIDEsIC0xKTsKIAogICAgIGNhaXJvX3NldF9vcGVy
YXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfT1ZFUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCmluZGV4
IDY4ZDVhYzgzZDkxMmU4NmVmZWJmZjQyMzlkZmEwNjQ2NjMwMGYxYjQuLmUyZTUxZmQwYTA2MGRh
ZDIxYjJkMjFhNTI4NWQ0MGQ0NzNiYzUyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCkBAIC01
MDUsMzYgKzUwNSwzNSBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4
dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgIHJldHVybiB0cnVl
OwogfQogCi1zdGF0aWMgdm9pZCByZWxlYXNlSW1hZ2VEYXRhKHZvaWQqLCBjb25zdCB2b2lkKiBk
YXRhLCBzaXplX3QpCitzdGF0aWMgdm9pZCByZWxlYXNlSW1hZ2VEYXRhKHZvaWQqIGltYWdlRGF0
YSwgY29uc3Qgdm9pZCosIHNpemVfdCkKIHsKLSAgICBmYXN0RnJlZShjb25zdF9jYXN0PHZvaWQq
PihkYXRhKSk7CisgICAgcmVpbnRlcnByZXRfY2FzdDxJbWFnZURhdGEqPihpbWFnZURhdGEpLT5k
ZXJlZigpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFz
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMoUmVmPEltYWdlRGF0
YT4mJiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKIHsKLSAgICBpZiAoIWltYWdlUGl4ZWxzIHx8IGltYWdlU2l6ZS5pc0VtcHR5
KCkgfHwgY2FudmFzU2l6ZS5pc0VtcHR5KCkpCisgICAgQVNTRVJUKCFpbWFnZURhdGEtPnNpemUo
KS5pc0VtcHR5KCkpOworICAgIGlmIChjYW52YXNTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOworICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIC8vIElucHV0
IGlzIEdMX1JHQkEgPT0ga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcgfCBrQ0dJbWFnZUFscGhhKkxh
c3QuCisgICAgLy8gR0xfQkdSQSB3b3VsZCBiZSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8
IGtDR0ltYWdlQWxwaGEqRmlyc3QuCisgICAgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBrQ0dC
aXRtYXBCeXRlT3JkZXIzMkJpZzsKKyAgICBpZiAoIWF0dHJzLmFscGhhKQorICAgICAgICBiaXRt
YXBJbmZvIHw9IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3Q7CisgICAgZWxzZSBpZiAoYXR0cnMu
cHJlbXVsdGlwbGllZEFscGhhKQorICAgICAgICBiaXRtYXBJbmZvIHw9IGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkTGFzdDsKKyAgICBlbHNlCisgICAgICAgIGJpdG1hcEluZm8gfD0ga0NHSW1h
Z2VBbHBoYUxhc3Q7CisKKyAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlRGF0YS0+c2l6ZSgpOwog
ICAgIGludCByb3dCeXRlcyA9IGltYWdlU2l6ZS53aWR0aCgpICogNDsKLSAgICBSZXRhaW5QdHI8
Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlcjsKLQotICAgIGlmIChjb250ZXh0LmlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCkpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciogY29waWVkUGl4ZWxz
OwotCi0gICAgICAgIGlmICghdHJ5RmFzdENhbGxvYyhpbWFnZVNpemUuaGVpZ2h0KCksIHJvd0J5
dGVzKS5nZXRWYWx1ZShjb3BpZWRQaXhlbHMpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIG1lbWNweShjb3BpZWRQaXhlbHMsIGltYWdlUGl4ZWxzLCByb3dCeXRlcyAqIGltYWdlU2l6
ZS5oZWlnaHQoKSk7Ci0KLSAgICAgICAgc2l6ZV90IGRhdGFTaXplID0gcm93Qnl0ZXMgKiBpbWFn
ZVNpemUuaGVpZ2h0KCk7Ci0gICAgICAgIHZlcmlmeUltYWdlQnVmZmVySXNCaWdFbm91Z2goY29w
aWVkUGl4ZWxzLCBkYXRhU2l6ZSk7Ci0gICAgICAgIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dE
YXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBjb3BpZWRQaXhlbHMsIGRhdGFTaXplLCByZWxl
YXNlSW1hZ2VEYXRhKSk7Ci0gICAgfSBlbHNlIHsKICAgICAgICAgc2l6ZV90IGRhdGFTaXplID0g
cm93Qnl0ZXMgKiBpbWFnZVNpemUuaGVpZ2h0KCk7CisgICAgdWludDhfdCogaW1hZ2VQaXhlbHMg
PSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwogICAgICAgICB2ZXJpZnlJbWFnZUJ1ZmZlcklz
QmlnRW5vdWdoKGltYWdlUGl4ZWxzLCBkYXRhU2l6ZSk7Ci0gICAgICAgIGRhdGFQcm92aWRlciA9
IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBpbWFnZVBpeGVscywgZGF0
YVNpemUsIDApKTsKLSAgICB9CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRh
UHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoJmltYWdlRGF0
YS5sZWFrUmVmKCksIGltYWdlUGl4ZWxzLCBkYXRhU2l6ZSwgcmVsZWFzZUltYWdlRGF0YSkpOwog
Ci0gICAgYXV0byBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3Jl
YXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCByb3dCeXRl
cywgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8
IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwKKyAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6
ZS5oZWlnaHQoKSwgOCwgMzIsIHJvd0J5dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBiaXRtYXBJ
bmZvLAogICAgICAgICBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJ
bnRlbnREZWZhdWx0KSkpOwogCiAgICAgLy8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRoZSBjYW52
YXMncyBjb250ZW50IHRvIGJlIHJlc2l6ZWQgb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCmluZGV4IGQ1ZTQxNjhlMzFiZWI4ZjJiYjc3NGNm
N2RlMWU5NWY4ZDBiOTk2MTkuLjRkZWQ4ZTVmOTQ5ODI2NzE3NDZjOWU3ZjUzM2FhYzZiMThhYzZi
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uaApAQCAtNjMsNiArNjMsMTAgQEAgcHVibGljOgogICAgIC8vIFByZXBhcmVzIHRoZSB0YXJn
ZXQgZm9yIGRpc3BsYXkgd2l0aCBhIGNvbnRlbnRzIGJ1ZmZlci4KICAgICB2aXJ0dWFsIHZvaWQg
cHJlc2VudChCdWZmZXIpID0gMDsKIAorICAgIC8vIFJldHVybnMgdGhlIG1vc3QgcmVjZW50IHBy
ZXNlbnRlZCBkaXNwbGF5IGJ1ZmZlci4gVGhlIHJlZmVyZW5jZSBpcyB2YWxpZCB1bnRpbAorICAg
IC8vIG5leHQgcHJlc2VudCwgcmVjeWNsZUJ1ZmZlciBvciBkZXRhY2hDbGllbnQgY2FsbC4KKyAg
ICB2aXJ0dWFsIGNvbnN0IEJ1ZmZlciYgZGlzcGxheUJ1ZmZlcigpIGNvbnN0ID0gMDsKKwogICAg
IC8vIERldGFjaGVzIHRoZSBjbGllbnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMg
YnVmZmVyIG1ldGFkYXRhIGhhbmRsZS4KICAgICAvLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBo
YXZlIGJlZW4gc3VibWl0dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBi
ZWZvcmUgY2FsbGluZwogICAgIC8vIHRoaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQppbmRleCA4OTFlOTc4M2UyNWZkNDc4NGUzNjg2M2IzZTZlNjgyYzI5NWNi
NDI0Li5kYmU5YzA1ZDMyOGI2NWMyNzVlYzk1MTIwNDYwMjRmM2RhNDBjODRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTczMCw2ICs3MzAsMzcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIG1h
cmtMYXllckNvbXBvc2l0ZWQoKTsKIH0KIAorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCit7CisgICAgYXV0byYgZGlzcGxh
eUJ1ZmZlciA9IG1fc3dhcENoYWluLT5kaXNwbGF5QnVmZmVyKCk7CisgICAgaWYgKCFkaXNwbGF5
QnVmZmVyLnN1cmZhY2UgfHwgIWRpc3BsYXlCdWZmZXIuaGFuZGxlKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBpZiAoZGlzcGxheUJ1ZmZlci5zdXJmYWNlLT5zaXplKCkgIT0gZ2V0SW50
ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8g
Tm90ZTogV2UgYXJlIHVzaW5nIEdMIHRvIHJlYWQgdGhlIElPU3VyZmFjZS4gQXQgdGhlIHRpbWUg
b2Ygd3JpdGluZywgdGhlcmUgYXJlIG5vIGNvbnZpbmllbnQKKyAgICAvLyBmdW5jdGlvbnMgdG8g
Y29udmVydCB0aGUgSU9TdXJmYWNlIHBpeGVsIGRhdGEgdG8gSW1hZ2VEYXRhLiBUaGUgaW1hZ2Ug
ZGF0YSBlbmRzIHVwIGJlaW5nCisgICAgLy8gZHJhd24gdG8gYSBJbWFnZUJ1ZmZlciwgYnV0IGF0
IHRoZSB0aW1lIHRoZXJlJ3Mgbm8gZnVuY3Rpb25zIHRvIGNvbnN0cnVjdCBhIE5hdGl2ZUltYWdl
CisgICAgLy8gb3V0IG9mIGFuIElPU3VyZmFjZSBpbiBzdWNoIGEgd2F5IHRoYXQgZHJhd2luZyB0
aGUgTmF0aXZlSW1hZ2Ugd291bGQgYmUgZ3VhcmFudGVlZCBsZWF2ZQorICAgIC8vIHRoZSBJT1N1
cmZhY2UgYmUgdW5yZWZlbmNlZCBhZnRlciB0aGUgZHJhdyBjYWxsIGZpbmlzaGVzLgorICAgIFNj
b3BlZFRleHR1cmUgdGV4dHVyZTsKKyAgICBHQ0dMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2lu
Z0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcg
cmVzdG9yZUJpbmRpbmcoZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeSgpLCB0ZXh0dXJl
VGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7CisgICAgZ2w6
OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIHRleHR1cmUpOworICAgIGlmICghRUdMX0JpbmRU
ZXhJbWFnZShtX2Rpc3BsYXlPYmosIGRpc3BsYXlCdWZmZXIuaGFuZGxlLCBFR0xfQkFDS19CVUZG
RVIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh0
dXJlVGFyZ2V0LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgU2NvcGVk
RnJhbWVidWZmZXIgZmJvOworICAgIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5n
IGZib0JpbmRpbmcobV9pc0ZvcldlYkdMMiwgbV9zdGF0ZS5ib3VuZFJlYWRGQk8sIGZibyk7Cisg
ICAgZ2w6OkZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRB
Q0hNRU5UMCwgdGV4dHVyZVRhcmdldCwgdGV4dHVyZSwgMCk7CisgICAgQVNTRVJUKGdsOjpDaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSA9PSBHTF9GUkFNRUJVRkZFUl9DT01Q
TEVURSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IHJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKTsK
KworICAgIEVHTEJvb2xlYW4gcmVsZWFzZU9rID0gRUdMX1JlbGVhc2VUZXhJbWFnZShtX2Rpc3Bs
YXlPYmosIGRpc3BsYXlCdWZmZXIuaGFuZGxlLCBFR0xfQkFDS19CVUZGRVIpOworICAgIEFTU0VS
VF9VTlVTRUQocmVsZWFzZU9rLCByZWxlYXNlT2spOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCmluZGV4IDM4NTk3ZTRhOGY2MzNh
NWVlNWRiNzQ5MzMwMjJkYzIzN2ZlN2U0N2MuLjAzMTM4ZWYxNDMwOTg4ZDcxNWE5OGI3Nzc3ZDNh
NTM4OGEzMjk5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5tbQpAQCAtMzksNiArMzksMTAgQEAgcHVibGljOgogICAgIGV4
cGxpY2l0IFdlYkdMTGF5ZXJTd2FwQ2hhaW4oV2ViR0xMYXllciogbGF5ZXIpICA6IG1fbGF5ZXIo
bGF5ZXIpIHsgfTsKICAgICB+V2ViR0xMYXllclN3YXBDaGFpbigpIG92ZXJyaWRlID0gZGVmYXVs
dDsKICAgICB2b2lkIHByZXNlbnQoQnVmZmVyKSBvdmVycmlkZTsKKyAgICBjb25zdCBCdWZmZXIm
IGRpc3BsYXlCdWZmZXIoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
ZGlzcGxheUJ1ZmZlcjsKKyAgICB9CiAgICAgQnVmZmVyIHJlY3ljbGVCdWZmZXIoKSBvdmVycmlk
ZQogICAgIHsKICAgICAgICAgaWYgKG1fc3BhcmVCdWZmZXIuc3VyZmFjZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggMDY5ZDI4NmNlNGViYTQ4MjllMGM3Mzgz
ZTJmM2U4YmVlNzJmZTI5Mi4uMmZlYjc0YzJmYWQxYjJhNjJmZjYwYzYxMjVkMWI4ZmNjZjVkYjU2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zMSw2ICszMSw4
IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgiCisjaW5j
bHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlIDx3
dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTk0LDYgKzE5Niw1
MCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB9
CiAjZW5kaWYKIAordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQoreworICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoZ2V0SW50ZXJuYWxG
cmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGlt
YWdlRGF0YSA9IHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7CisgICAgaWYgKCFpbWFnZURhdGEpCisg
ICAgICAgIHJldHVybjsKKyAgICBwYWludFRvQ2FudmFzKGltYWdlRGF0YS5yZWxlYXNlTm9uTnVs
bCgpLCBpbWFnZUJ1ZmZlci0+YmFja2VuZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCit7CisgICAgaWYgKCFtYWtlQ29u
dGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChnZXRJbnRlcm5hbEZyYW1l
YnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gaW1hZ2VE
YXRhID0gcmVhZENvbXBvc2l0ZWRSZXN1bHRzKCk7CisgICAgaWYgKCFpbWFnZURhdGEpCisgICAg
ICAgIHJldHVybjsKKyAgICBwYWludFRvQ2FudmFzKGltYWdlRGF0YS5yZWxlYXNlTm9uTnVsbCgp
LCBpbWFnZUJ1ZmZlci0+YmFja2VuZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Cit9
CisKK1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGdldEludGVybmFsRnJhbWVidWZm
ZXJTaXplKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBSZWFk
aW5nIHByZW11bHRpcGxpZWQgYWxwaGEgd291bGQgaW52b2x2ZSB1bnByZW11bHRpcGx5aW5nLCB3
aGljaCBpcworICAgIC8vIGxvc3N5LgorICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygpLnByZW11
bHRpcGxpZWRBbHBoYSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHJlYWRS
ZW5kZXJpbmdSZXN1bHRzKCk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitSZWZQdHI8SW1h
Z2VEYXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkK
K3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCmluZGV4IGY1MjRkZTkyZGNkOWE1OThiMGZiZWY4ZDMzYjljNDQwOWI4Y2QxYjAuLjc4
MDk2ZTJlYjA4NzZmOTUyN2M4NTQ3OTBkMWFmYTczNTEyMGM4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MjgsOSArNDI4LDYgQEAgcHVibGljOgogICAgIHZvaWQg
Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9y
bUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpIGZp
bmFsOwogCiAgICAgLy8gSGVscGVyIG1ldGhvZHMuCi0KLSAgICB2b2lkIHBhaW50VG9DYW52YXMo
Y29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7Ci0KICAgICB2
b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQgbWFya0xheWVyQ29tcG9z
aXRlZCgpIGZpbmFsOwogICAgIGJvb2wgbGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgZmluYWw7CkBA
IC00NTAsNyArNDQ3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopIGZpbmFsOwogICAgIFJlZlB0cjxJbWFnZURhdGE+IHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkgZmluYWw7Ci0gICAgYm9vbCBwYWludENv
bXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIHBh
aW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopIGZpbmFsOwogCiAjaWYg
VVNFKE9QRU5HTCkgJiYgRU5BQkxFKFdFQkdMMikKICAgICB2b2lkIHByaW1pdGl2ZVJlc3RhcnRJ
bmRleChHQ0dMdWludCk7CkBAIC01MzAsMTAgKzUyNywxMSBAQCBwcml2YXRlOgogICAgIC8vIERp
ZCB0aGUgbW9zdCByZWNlbnQgZHJhd2luZyBvcGVyYXRpb24gbGVhdmUgdGhlIEdQVSBpbiBhbiBh
Y2NlcHRhYmxlIHN0YXRlPwogICAgIHZvaWQgY2hlY2tHUFVTdGF0dXMoKTsKIAotICAgIC8vIFJl
YWQgcmVuZGVyaW5nIHJlc3VsdHMgaW50byBhIHBpeGVsIGFycmF5IHdpdGggdGhlIHNhbWUgZm9y
bWF0IGFzIHRoZQotICAgIC8vIGJhY2tidWZmZXIuCi0gICAgdm9pZCByZWFkUmVuZGVyaW5nUmVz
dWx0cyh1bnNpZ25lZCBjaGFyKiBwaXhlbHMsIGludCBwaXhlbHNTaXplKTsKLSAgICB2b2lkIHJl
YWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZOZWNlc3NhcnkoaW50IHgsIGludCB5LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscyk7CisKKyAgICBSZWZQdHI8SW1h
Z2VEYXRhPiByZWFkUmVuZGVyaW5nUmVzdWx0cygpOworICAgIFJlZlB0cjxJbWFnZURhdGE+IHJl
YWRDb21wb3NpdGVkUmVzdWx0cygpOworICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlYWRQaXhlbHNG
b3JQYWludFJlc3VsdHMoKTsKKyAgICB2b2lkIHBhaW50VG9DYW52YXMoUmVmPEltYWdlRGF0YT4m
JiwgY29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBi
b29sIHJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmKTsKICAgICB2b2lkIHByZXBhcmVUZXh0dXJl
SW1wbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRl
eCBmNDE0ZjljOTYzNGQ2MWI4ZDkwMTVkNWE2YWZhNTI3Y2MzNDJiZThmLi4yOWRmN2M5MDEzY2I5
MTU5MzRhYmFiODk0ZmFiMjZjOWQ3ZmU3NzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2lmIEVOQUJMRShXRUJHTCkg
JiYgVVNFKE9QRU5HTCkKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTC5oIgorI2luY2x1
ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXpl
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNjEsMzcgKzYyLDI2IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0Fu
ZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeShpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhl
aWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQorUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogewotICAgIGF1dG8g
YXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VE
YXRhOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7CisgICAgaWYgKCFpbWFn
ZURhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgR0xpbnQgcGFja0FsaWdubWVu
dCA9IDQ7CisgICAgYm9vbCBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSBmYWxzZTsKKyAgICA6
OmdsR2V0SW50ZWdlcnYoR0xfUEFDS19BTElHTk1FTlQsICZwYWNrQWxpZ25tZW50KTsKKyAgICBp
ZiAocGFja0FsaWdubWVudCA+IDQpIHsKKyAgICAgICAgOjpnbFBpeGVsU3RvcmVpKEdMX1BBQ0tf
QUxJR05NRU5ULCA0KTsKKyAgICAgICAgbXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gdHJ1ZTsK
KyAgICB9CiAKLSAgICAvLyBOVklESUEgZHJpdmVycyBoYXZlIGEgYnVnIHdoZXJlIGNhbGxpbmcg
cmVhZFBpeGVscyBpbiBCR1JBIGNhbiByZXR1cm4gdGhlIHdyb25nIHZhbHVlcyBmb3IgdGhlIGFs
cGhhIGNoYW5uZWwgd2hlbiB0aGUgYWxwaGEgaXMgb2ZmIGZvciB0aGUgY29udGV4dC4KLSAgICBp
ZiAoIWF0dHJzLmFscGhhICYmIGdldEV4dGVuc2lvbnMoKS5pc05WSURJQSgpKSB7Ci0gICAgICAg
IDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsIHBpeGVscyk7Ci0jaWYgVVNFKEFDQ0VMRVJBVEUpCi0gICAgICAgIHZJbWFnZV9CdWZm
ZXIgc3JjOwotICAgICAgICBzcmMuaGVpZ2h0ID0gaGVpZ2h0OwotICAgICAgICBzcmMud2lkdGgg
PSB3aWR0aDsKLSAgICAgICAgc3JjLnJvd0J5dGVzID0gd2lkdGggKiA0OwotICAgICAgICBzcmMu
ZGF0YSA9IHBpeGVsczsKLQotICAgICAgICB2SW1hZ2VfQnVmZmVyIGRlc3Q7Ci0gICAgICAgIGRl
c3QuaGVpZ2h0ID0gaGVpZ2h0OwotICAgICAgICBkZXN0LndpZHRoID0gd2lkdGg7Ci0gICAgICAg
IGRlc3Qucm93Qnl0ZXMgPSB3aWR0aCAqIDQ7Ci0gICAgICAgIGRlc3QuZGF0YSA9IHBpeGVsczsK
LQotICAgICAgICAvLyBTd2FwIHBpeGVsIGNoYW5uZWxzIGZyb20gUkdCQSB0byBCR1JBLgotICAg
ICAgICBjb25zdCB1aW50OF90IG1hcFs0XSA9IHsgMiwgMSwgMCwgMyB9OwotICAgICAgICB2SW1h
Z2VQZXJtdXRlQ2hhbm5lbHNfQVJHQjg4ODgoJnNyYywgJmRlc3QsIG1hcCwga3ZJbWFnZU5vRmxh
Z3MpOwotI2Vsc2UKLSAgICAgICAgaW50IHRvdGFsQnl0ZXMgPSB3aWR0aCAqIGhlaWdodCAqIDQ7
Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAg
ICAgICAgc3RkOjpzd2FwKHBpeGVsc1tpXSwgcGl4ZWxzW2kgKyAyXSk7Ci0jZW5kaWYKLSAgICB9
IGVsc2UKLSAgICAgICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgR0xfQkdS
QSwgR0xfVU5TSUdORURfSU5UXzhfOF84XzhfUkVWLCBwaXhlbHMpOworICAgIDo6Z2xSZWFkUGl4
ZWxzKDAsIDAsIGltYWdlRGF0YS0+d2lkdGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSk7CisKKyAgICBp
ZiAobXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50KQorICAgICAgICA6OmdsUGl4ZWxTdG9yZWkoR0xf
UEFDS19BTElHTk1FTlQsIHBhY2tBbGlnbm1lbnQpOwogCisgICAgcmV0dXJuIGltYWdlRGF0YTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDJk
ZTE4NWE2NjgxMzBhMzYyYzEyNzY3ZjM4M2Y1N2YxMzQ5ZGQ0ODEuLmZjZGI3MTFhNmY4Y2IwNTll
MDBiNzRjZDBjY2I3YzlhY2U5MGRhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAtMTM3LDY0ICsxMzcsNiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0
aFN0ZW5jaQogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQotewotICAg
IENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4gcm93Qnl0ZXMgPSBDaGVja2VkPGludCwgUmVj
b3JkT3ZlcmZsb3c+KG1fY3VycmVudFdpZHRoKSAqIDQ7Ci0gICAgaWYgKHJvd0J5dGVzLmhhc092
ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ2hlY2tlZDxpbnQsIFJlY29yZE92
ZXJmbG93PiB0b3RhbEJ5dGVzQ2hlY2tlZCA9IHJvd0J5dGVzICogbV9jdXJyZW50SGVpZ2h0Owot
ICAgIGlmICh0b3RhbEJ5dGVzQ2hlY2tlZC5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBpbnQgdG90YWxCeXRlcyA9IHRvdGFsQnl0ZXNDaGVja2VkLnVuc2FmZUdldCgpOwot
Ci0gICAgYXV0byBwaXhlbHMgPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4odG90YWxC
eXRlcyk7Ci0gICAgaWYgKCFwaXhlbHMpCi0gICAgICAgIHJldHVybjsKLQotICAgIHJlYWRSZW5k
ZXJpbmdSZXN1bHRzKHBpeGVscy5nZXQoKSwgdG90YWxCeXRlcyk7Ci0KLSAgICBpZiAoIWNvbnRl
eHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKSB7Ci0gICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KSB7Ci0gICAgICAgICAgICAvLyBQcmVtdWx0aXBs
eSBhbHBoYS4KLSAgICAgICAgICAgIHBpeGVsc1tpICsgMF0gPSBzdGQ6Om1pbigyNTUsIHBpeGVs
c1tpICsgMF0gKiBwaXhlbHNbaSArIDNdIC8gMjU1KTsKLSAgICAgICAgICAgIHBpeGVsc1tpICsg
MV0gPSBzdGQ6Om1pbigyNTUsIHBpeGVsc1tpICsgMV0gKiBwaXhlbHNbaSArIDNdIC8gMjU1KTsK
LSAgICAgICAgICAgIHBpeGVsc1tpICsgMl0gPSBzdGQ6Om1pbigyNTUsIHBpeGVsc1tpICsgMl0g
KiBwaXhlbHNbaSArIDNdIC8gMjU1KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHBhaW50VG9D
YW52YXMocGl4ZWxzLmdldCgpLCBJbnRTaXplKG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWln
aHQpLCBpbWFnZUJ1ZmZlci0+YmFja2VuZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7
Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCi17Ci0gICAgLy8gTm90IG5lZWRlZCBhdCB0aGUgbW9t
ZW50LCBzbyByZXR1cm4gdGhhdCBub3RoaW5nIHdhcyBkb25lLgotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKLXsKLSAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxp
ZWQgYWxwaGEgd291bGQgaW52b2x2ZSB1bnByZW11bHRpcGx5aW5nLCB3aGljaCBpcwotICAgIC8v
IGxvc3N5LgotICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGltYWdlRGF0YSA9IEltYWdlRGF0
YTo6Y3JlYXRlKEludFNpemUobV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCkpOwotICAg
IHVuc2lnbmVkIGNoYXIqIHBpeGVscyA9IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCk7Ci0gICAg
Q2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PiB0b3RhbEJ5dGVzQ2hlY2tlZCA9IDQgKiBDaGVj
a2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+KG1fY3VycmVudFdpZHRoKSAqIENoZWNrZWQ8aW50LCBS
ZWNvcmRPdmVyZmxvdz4obV9jdXJyZW50SGVpZ2h0KTsKLSAgICBpZiAodG90YWxCeXRlc0NoZWNr
ZWQuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm4gaW1hZ2VEYXRhOwotICAgIGludCB0
b3RhbEJ5dGVzID0gdG90YWxCeXRlc0NoZWNrZWQudW5zYWZlR2V0KCk7Ci0KLSAgICByZWFkUmVu
ZGVyaW5nUmVzdWx0cyhwaXhlbHMsIHRvdGFsQnl0ZXMpOwotCi0gICAgLy8gQ29udmVydCB0byBS
R0JBLgotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSArPSA0KQotICAgICAg
ICBzdGQ6OnN3YXAocGl4ZWxzW2ldLCBwaXhlbHNbaSArIDJdKTsKLQotICAgIHJldHVybiBpbWFn
ZURhdGE7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVUZXh0dXJl
KCkKIHsKICAgICBpZiAobV9sYXllckNvbXBvc2l0ZWQpCkBAIC0yMzYsMTUgKzE3OCw4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVUZXh0dXJlKCkKICAgICA6OmdsRmx1
c2goKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jl
c3VsdHModW5zaWduZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSkKK1JlZlB0cjxJbWFn
ZURhdGE+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cygpCiB7
Ci0gICAgaWYgKHBpeGVsc1NpemUgPCBtX2N1cnJlbnRXaWR0aCAqIG1fY3VycmVudEhlaWdodCAq
IDQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybjsKLQotCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwogICAg
IGlmIChjb250ZXh0QXR0cmlidXRlcygpLmFudGlhbGlhcykgewogICAgICAgICByZXNvbHZlTXVs
dGlzYW1wbGluZ0lmTmVjZXNzYXJ5KCk7CkBAIC0yNTcsMjIgKzE5MiwxMCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25lZCBjaGFyICpw
aXhlbHMsIGludCBwaQogICAgICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGlj
c0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICAgICAgfQogICAgIH0KLQotICAg
IEdMaW50IHBhY2tBbGlnbm1lbnQgPSA0OwotICAgIGJvb2wgbXVzdFJlc3RvcmVQYWNrQWxpZ25t
ZW50ID0gZmFsc2U7Ci0gICAgOjpnbEdldEludGVnZXJ2KEdMX1BBQ0tfQUxJR05NRU5ULCAmcGFj
a0FsaWdubWVudCk7Ci0gICAgaWYgKHBhY2tBbGlnbm1lbnQgPiA0KSB7Ci0gICAgICAgIDo6Z2xQ
aXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgNCk7Ci0gICAgICAgIG11c3RSZXN0b3JlUGFj
a0FsaWdubWVudCA9IHRydWU7Ci0gICAgfQotCi0gICAgcmVhZFBpeGVsc0FuZENvbnZlcnRUb0JH
UkFJZk5lY2Vzc2FyeSgwLCAwLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBwaXhl
bHMpOwotCi0gICAgaWYgKG11c3RSZXN0b3JlUGFja0FsaWdubWVudCkKLSAgICAgICAgOjpnbFBp
eGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05NRU5ULCBwYWNrQWxpZ25tZW50KTsKLQorICAgIGF1dG8g
cmVzdWx0ID0gcmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpOwogICAgIGlmIChtdXN0UmVzdG9y
ZUZCTykKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHRHTDo6
RlJBTUVCVUZGRVIsIG1fc3RhdGUuYm91bmREcmF3RkJPKTsKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlKGludCB3aWR0aCwgaW50
IGhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCAw
ZDQ3NmMyMjlkNmY2ZWU5NmNjZjk5M2Q4MWQ1YzNkZDY1MjE1ZTQ4Li45MzlmYjkzZTFjMjEzNDQ5
ZDA3ZTAzZTVjYmU4MGFhODFlMThlZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwCkBAIC02NCwxNCArNjQsMjYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwK
ICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBs
ZUZCTyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNBbmRD
b252ZXJ0VG9CR1JBSWZOZWNlc3NhcnkoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWln
aHQsIHVuc2lnbmVkIGNoYXIqIHBpeGVscykKK1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICA6OmdsUmVh
ZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBw
aXhlbHMpOwotICAgIGludCB0b3RhbEJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgIGlm
IChpc0dMRVMyQ29tcGxpYW50KCkpIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3Rh
bEJ5dGVzOyBpICs9IDQpCi0gICAgICAgICAgICBzdGQ6OnN3YXAocGl4ZWxzW2ldLCBwaXhlbHNb
aSArIDJdKTsgLy8gQ29udmVydCB0byBCR1JBLgorICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VE
YXRhOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7CisgICAgaWYgKCFpbWFn
ZURhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgR0xpbnQgcGFja0FsaWdubWVu
dCA9IDQ7CisgICAgYm9vbCBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSBmYWxzZTsKKyAgICA6
OmdsR2V0SW50ZWdlcnYoR0xfUEFDS19BTElHTk1FTlQsICZwYWNrQWxpZ25tZW50KTsKKyAgICBp
ZiAocGFja0FsaWdubWVudCA+IDQpIHsKKyAgICAgICAgOjpnbFBpeGVsU3RvcmVpKEdMX1BBQ0tf
QUxJR05NRU5ULCA0KTsKKyAgICAgICAgbXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0gdHJ1ZTsK
ICAgICB9CisKKyAgICA6OmdsUmVhZFBpeGVscygwLCAwLCBpbWFnZURhdGEtPndpZHRoKCksIGlt
YWdlRGF0YS0+aGVpZ2h0KCksIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGltYWdlRGF0YS0+
ZGF0YSgpLT5kYXRhKCkpOworCisgICAgaWYgKG11c3RSZXN0b3JlUGFja0FsaWdubWVudCkKKyAg
ICAgICAgOjpnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05NRU5ULCBwYWNrQWxpZ25tZW50KTsK
KworICAgIHJldHVybiBpbWFnZURhdGE7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5jcHAKaW5kZXggZTdjNDBjOTg1Y2I3ZDI3MjI4NjlhNWRmZjk2OTE5NDcwNzdh
ZjQ2Yy4uOGUyZDFmYzY1MTg2MjgzOTVlOTc0MWM0NGU3YWM4NTFiMDhlZjYyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gb3ZlcnJpZGVzLgogICAg
IEJ1ZmZlciByZWN5Y2xlQnVmZmVyKCkgZmluYWw7CiAgICAgdm9pZCBwcmVzZW50KEJ1ZmZlcikg
ZmluYWw7CisgICAgY29uc3QgQnVmZmVyJiBkaXNwbGF5QnVmZmVyKCkgY29uc3QgZmluYWw7CiAg
ICAgdm9pZCogZGV0YWNoQ2xpZW50KCkgZmluYWw7CiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXIgbV9kaXNwbGF5QnVmZmVyOwpAQCAtNzYs
NiArNzcsMTEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVzZW50KEJ1
ZmZlciBidWZmZXIpCiAgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogfQog
Citjb25zdCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyJiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpkaXNwbGF5QnVmZmVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9kaXNwbGF5QnVmZmVyOworfQorCiB2b2lkKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hOjpkZXRhY2hDbGllbnQoKQogewogICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZGlz
cGxheUJ1ZmZlci5oYW5kbGUsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5jcHAKaW5kZXggMzRhMDZmYjAwNzZhY2QzZmQzMmIzYTRiNmIwOWQ2OGQwMjdi
YjU4OC4uNTNkYjYxNTBjMWQ4ZWM4MjVlMjNhYmVmNjUxZTViM2I5Nzk5MjQ1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC0xMjEsNiArMTIxLDExIEBA
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9DYW52YXMoSW1hZ2VCdWZmZXIqKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzKEltYWdlQnVmZmVyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBSZWZQdHI8
SW1hZ2VEYXRhPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0ltYWdlRGF0YSgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXggZDk5ZWRhMjlmNmRiNWUxODE5NzEzMTc4
ZjJhYTUzMWI0ZjVkZDZlMC4uYTE0MzkzNDdkODllMGFkYmYwOGE0MmE0MjU5MWJiYjNkYmViMjFl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTcxLDYgKzcx
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpIGZpbmFsOwog
ICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXIqKSBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpIGZpbmFsOworICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvQ2FudmFzKFdlYkNvcmU6OkltYWdlQnVmZmVyKikgZmluYWw7CiAKICAgICAvLyBGdW5j
dGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQg
YnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCiAgICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0
YXR1c0NoZWNrKCkgZmluYWw7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>