<?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>235467</bug_id>
          
          <creation_ts>2022-01-21 20:02:04 -0800</creation_ts>
          <short_desc>[GPU Process] Add the class &apos;SourceImage&apos; to represent variants of image</short_desc>
          <delta_ts>2022-01-22 17:05:26 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>232411</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1832968</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-21 20:02:04 -0800</bug_when>
    <thetext>FEImage has already an std::variant named &apos;SourceImage&apos; to represent variants of image. The Pattern needs a similar structure; see bug 232411. So the plan is replace FEImage::SourceImage with the new class. Then make bug 232411 uses it as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832971</commentid>
    <comment_count>1</comment_count>
      <attachid>449719</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-21 20:34:58 -0800</bug_when>
    <thetext>Created attachment 449719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832972</commentid>
    <comment_count>2</comment_count>
      <attachid>449720</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-21 20:48:25 -0800</bug_when>
    <thetext>Created attachment 449720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832977</commentid>
    <comment_count>3</comment_count>
      <attachid>449722</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-21 21:57:40 -0800</bug_when>
    <thetext>Created attachment 449722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832986</commentid>
    <comment_count>4</comment_count>
      <attachid>449722</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-01-21 23:34:56 -0800</bug_when>
    <thetext>Comment on attachment 449722
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Before the existence of GPUProces we used to make some drawing on an 

&quot;GPUProcess&quot;

s/make some drawing/do some drawing/

&gt; Source/WebCore/ChangeLog:10
&gt; +        NativeImage. With GPUProces, this will require bouncing the NativeImage 

&quot;GPUProcess&quot;

&gt; Source/WebCore/ChangeLog:11
&gt; +        between WebPorcess and GPUProcess at least two times. To make this scenario 

&quot;WebProcess&quot;

&gt; Source/WebCore/ChangeLog:12
&gt; +        efficient, a new class called SourceImage&apos; will be introduced. The purpose

Stray (or missing) apostrophe.

&gt; Source/WebCore/platform/graphics/SourceImage.cpp:74
&gt; +    auto imageBuffer = ImageBuffer::create(nativeImage-&gt;size(), RenderingMode::Unaccelerated, 1, DestinationColorSpace::SRGB(), PixelFormat::BGRA8);

If canvas patterns will use this class, then they&apos;ll need a way to specify the color space when creating the ImageBuffer, so that we don&apos;t always convert to sRGB.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832996</commentid>
    <comment_count>5</comment_count>
      <attachid>449728</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-22 02:09:14 -0800</bug_when>
    <thetext>Created attachment 449728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833062</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-22 17:04:48 -0800</bug_when>
    <thetext>Committed r288412 (246303@main): &lt;https://commits.webkit.org/246303@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449728.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833063</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-22 17:05:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/87931919&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449719</attachid>
            <date>2022-01-21 20:34:58 -0800</date>
            <delta_ts>2022-01-21 21:54:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235467-20220121203457.patch</filename>
            <type>text/plain</type>
            <size>36606</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTY5Mzc4OTliNThmZmZk
ZWQzZjAyODgxOTNlNjQ0ZWJhNWIxMmIyOS4uNWM0YWJmODYzYjAxZWYzYjc2ZWQyNGEyNGM3Mzkx
ODZlOWExMmExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIyLTAxLTIxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
QWRkIHRoZSBjbGFzcyAnU291cmNlSW1hZ2UnIHRvIHJlcHJlc2VudCB2YXJpYW50cyBvZiBpbWFn
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NDY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3Jl
IHRoZSBleGlzdGVuY2Ugb2YgR1BVUHJvY2VzIHdlIHVzZWQgdG8gbWFrZSBzb21lIGRyYXdpbmcg
b24gYW4gCisgICAgICAgIEltYWdlQnVmZmVyLCBnZXQgYSBOYXRpdmVJbWFnZSBmcm9tIHRoZSBJ
bWFnZUJ1ZmZlciBhbmQgdGhlbiB1c2UgdGhpcworICAgICAgICBOYXRpdmVJbWFnZS4gV2l0aCBH
UFVQcm9jZXMsIHRoaXMgd2lsbCByZXF1aXJlIGJvdW5jaW5nIHRoZSBOYXRpdmVJbWFnZSAKKyAg
ICAgICAgYmV0d2VlbiBXZWJQb3JjZXNzIGFuZCBHUFVQcm9jZXNzIGF0IGxlYXN0IHR3byB0aW1l
cy4gVG8gbWFrZSB0aGlzIHNjZW5hcmlvIAorICAgICAgICBlZmZpY2llbnQsIGEgbmV3IGNsYXNz
IGNhbGxlZCBTb3VyY2VJbWFnZScgd2lsbCBiZSBpbnRyb2R1Y2VkLiBUaGUgcHVycG9zZQorICAg
ICAgICBvZiB0aGlzIGNsYXNzIGlzIHRvIHByb3ZpZGUgYSBuZXcgbGV2ZWwgb2YgYWJzdHJhY3Rp
b24gZm9yIHRoZSBpbWFnZXMKKyAgICAgICAgc3VjaCB0aGF0IG5vIGNvbnZlcnNpb24gaXMgbmVl
ZGVkIGJlZm9yZSB0aGUgYWN0dWFsIHVzZS4KKworICAgICAgICBSZXBsYWNlIEZFSW1hZ2U6OlNv
dXJjZUltYWdlIHdpdGggYSBuZXcgY2xhc3MgbmFtZWQgJ1NvdXJjZUltYWdlJy4gTGV0IAorICAg
ICAgICB0aGUgbmV3IGNsYXNzIGhhbmRsZSB0aGUgZW5jb2RpbmcgYW5kIGRlY29kaW5nIGFuZCB0
aGUgY29udmVyc2lvbiBmcm9tCisgICAgICAgIE5hdGl2ZUltYWdlIHRvIEltYWdlQnVmZmVyIGFu
ZCB2aWNlIHZlcnNhLgorCisgICAgICAgIE1ha2UgUmVjb3JkZXI6OnJlY29yZFJlc291cmNlVXNl
KCkgcmV0dXJucyBhIGJvb2xlYW4gd2hpY2ggaW5kaWNhdGVzCisgICAgICAgIHdoZXRoZXIgdGhl
IHJlc291cmNlIGNhbiBiZSBjYWNoZWQgZm9yIGxhdGVyIHJlcGxheSBvciBub3QuCisKKyAgICAg
ICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Tb3VyY2VJbWFnZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlSW1h
Z2U6OlNvdXJjZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpuYXRpdmVJ
bWFnZUlmRXhpc3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpuYXRp
dmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXJJZkV4
aXN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OmltYWdlSWRlbnRpZmllciBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZFJlc291cmNlVXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmZp
bHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpjYWxjdWxhdGVJbWFnZVJlY3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkg
Y29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUltYWdlOjpkZWNvZGUpOgorCiAyMDIyLTAxLTIxICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBXUFQgdmVyc2lvbiBvZiBjc3MvY3NzLWNhc2NhZGUvcGFy
c2luZy9sYXllci1pbXBvcnQtcGFyc2luZy5odG1sIGNyYXNoZXMgd2l0aCBudWxscHRyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDliZmJjOTM5NWRjOWVjMTAyMWZkYmNjYmI4MzFhY2FlYmQyZTNkNDQuLjE2ZjdmNTY3
NmI3MDA0YWJkNmMwOTM0OTJhNTJlYmFlY2QyZjQxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMjItMDEtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0dQVSBQcm9jZXNzXSBBZGQgdGhlIGNsYXNzICdTb3VyY2VJbWFnZScgdG8gcmVwcmVz
ZW50IHZhcmlhbnRzIG9mIGltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzU0NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQcm92aWRlIGEgbmV3IHJlY29yZFJlc291cmNlVXNlKCkgZm9yIHRoZSBT
b3VyY2VJbWFnZS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJlc291cmNlVXNl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyUHJveHkuaDoKKwogMjAyMi0wMS0yMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgaW4tcHJvY2VzcyB0ZXN0aW5nIG9mIElQQyBt
ZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggY2Q1OGNkYjMyYzk0ODEwNzFhNDQ2NTk0ODY5
YjQwY2E2MTA2OWJhNC4uOTJkNWQ5NjFmYzNhNjNlNjU2MWYwZTUzNTYzNWQ0ZDY1N2ZlMjAxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNTUwLDYgKzE1NTAsNyBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2hvdWxkTG9jYWxp
emVBeGlzTmFtZXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9T
dHJpbmdUcnVuY2F0b3IuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAzZmEwYmJkOTgyNGY5
YTg2YTEyZmUzODc5YWJkZTBkM2U0ODU5YWY1Li45YTljZWM0ZWU0YWFkOGY0NmUwOGU0NDkwNDcy
OTRjMjc2NjU1MzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjA3Niw2ICsyMDc2LDcgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3Vu
ZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
SW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9UZXh0UnVuLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggODk5OWEyZWExOTZlODU3OTAyMGIwMTNiNGY1MDdlNzU2Yzk1YWJj
My4uODkxZjA5N2VjYzBkZWIyMzM5ZjVmMWYxMjNiOTBkYjhhMTBkZGY0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjMzOSw2
ICsyMzM5LDcgQEAKIAkJNzJCQUMzQUUyM0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFj
a2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJC
QUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyRDczNjQ0Mjc4NDYxQTAw
MDM5ODY2MyAvKiBGaWx0ZXJSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjExQjVENjI3NjUzNjgyMDA3NkZFRjggLyogRmlsdGVyUmVzdWx0
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcy
RjY2N0UxMjYwQzI2QUMwMEVFMzZBRCAvKiBEaWFnbm9zdGljTG9nZ2luZ0RvbWFpbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJGNjY3REYyNjBDMjY0
NDAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9tYWluLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzJGN0U3NDYyNzlCOEY3NTAwRDgyRDJE
IC8qIFNvdXJjZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MkY3RTc0NDI3OUI4Rjc0MDBEODJEMkQgLyogU291cmNlSW1hZ2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NTUzQ0ZFODEwOEY0
NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUgLyog
VGltZWxpbmVSZWNvcmRGYWN0b3J5LmggKi87IH07CiAJCTc1NzkzRTg0MEQwQ0UwQjMwMDdGQzBB
QyAvKiBNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1NzkzRTgxMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCAqLzsg
fTsKIAkJNzU3OTNFQzkwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VDNzBEMENFNzJE
MDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTExMzUwLDYgKzExMzUxLDgg
QEAKIAkJNzJGMUFEQTMxQTM5MEI5RjAwMDE0RTE4IC8qIEpTRVhURnJhZ0RlcHRoLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRVhURnJhZ0RlcHRoLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJGMUFEQTQxQTM5MEI5RjAwMDE0RTE4IC8qIEpT
RVhURnJhZ0RlcHRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhURnJh
Z0RlcHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyRjY2N0RGMjYwQzI2NDQw
MEVFMzZBRCAvKiBEaWFnbm9zdGljTG9nZ2luZ0RvbWFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaWFn
bm9zdGljTG9nZ2luZ0RvbWFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkY3
RTc0MjI3OUI4Rjc0MDBEODJEMkQgLyogU291cmNlSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3MkY3RTc0NDI3OUI4Rjc0MDBEODJEMkQgLyogU291cmNlSW1hZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlSW1hZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzJGQjIzODQyMjQ5N0FENDAwN0U1QUM3IC8qIFNWR1ZhbHVlUHJv
cGVydHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
VmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MkZCMjM4NjIyNDk3QUQ1MDA3RTVBQzcgLyogU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVlUHJvcGVydHlBbmltYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkZCMjM4NzIyNDk3QjE1MDA3RTVB
QzcgLyogU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4OTk0LDYgKzI4OTk3LDggQEAKIAkJCQkxREQx
MjdBQzI1NkUzQTg3MDBCMjI3RDcgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgKi8sCiAJCQkJ
Q0Q2NDFFQjIxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUuaCAqLywKIAkJ
CQlDREM4QjVBQzE4MDRBRTVEMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5o
ICovLAorCQkJCTcyRjdFNzQyMjc5QjhGNzQwMEQ4MkQyRCAvKiBTb3VyY2VJbWFnZS5jcHAgKi8s
CisJCQkJNzJGN0U3NDQyNzlCOEY3NDAwRDgyRDJEIC8qIFNvdXJjZUltYWdlLmggKi8sCiAJCQkJ
N0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICovLAogCQkJCUIyMzU0
MEYwMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuY3BwICovLAogCQkJCUIyMzU0
MEYxMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuaCAqLywKQEAgLTM3MTc0LDYg
KzM3MTc5LDcgQEAKIAkJCQlDREM4QjVBQjE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzhCNUFEMTgwNEFFNUQwMDE2
RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NEE4MUY0MjBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzJGN0U3NDYyNzlCOEY3NTAwRDgyRDJEIC8qIFNvdXJjZUltYWdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlEMDFBMjdBRTEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjI2Q0RFMEYxMTQwNDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxO
YXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzQ5NTBDRDI1Mzk0MzYxMDA5OUYxNzEg
LyogU3BlZWNoUmVjb2duaXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MzliYTA0
NjFhNWRjZjZlMTVhZDJiMzZlYTIwMTI1MjYyNjJiNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHAKQEAgLTAsMCArMSw5
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU291cmNlSW1hZ2UuaCIKKworI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NvdXJjZUltYWdlOjpT
b3VyY2VJbWFnZShJbWFnZVZhcmlhbnQmJiBpbWFnZVZhcmlhbnQpCisgICAgOiBtX2ltYWdlVmFy
aWFudChXVEZNb3ZlKGltYWdlVmFyaWFudCkpCit7Cit9CisKK05hdGl2ZUltYWdlKiBTb3VyY2VJ
bWFnZTo6bmF0aXZlSW1hZ2VJZkV4aXN0cygpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIG5hdGl2
ZUltYWdlID0gc3RkOjpnZXRfaWY8UmVmPE5hdGl2ZUltYWdlPj4oJm1faW1hZ2VWYXJpYW50KSkK
KyAgICAgICAgcmV0dXJuIG5hdGl2ZUltYWdlLT5wdHIoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworTmF0aXZlSW1hZ2UqIFNvdXJjZUltYWdlOjpuYXRpdmVJbWFnZSgpCit7CisgICAgaWYg
KCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxJbWFnZUJ1ZmZlcj4+KG1faW1hZ2VWYXJpYW50
KSkKKyAgICAgICAgcmV0dXJuIG5hdGl2ZUltYWdlSWZFeGlzdHMoKTsKKworICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBzdGQ6OmdldDxSZWY8SW1hZ2VCdWZmZXI+PihtX2ltYWdlVmFyaWFudCk7Cisg
ICAgYXV0byBuYXRpdmVJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdU
Rk1vdmUoaW1hZ2VCdWZmZXIpKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIG1faW1hZ2VWYXJpYW50ID0gbmF0aXZlSW1hZ2UucmVsZWFzZU5v
bk51bGwoKTsKKyAgICByZXR1cm4gbmF0aXZlSW1hZ2VJZkV4aXN0cygpOworfQorCitJbWFnZUJ1
ZmZlciogU291cmNlSW1hZ2U6OmltYWdlQnVmZmVySWZFeGlzdHMoKSBjb25zdAoreworICAgIGlm
IChhdXRvKiBpbWFnZUJ1ZmZlciA9IHN0ZDo6Z2V0X2lmPFJlZjxJbWFnZUJ1ZmZlcj4+KCZtX2lt
YWdlVmFyaWFudCkpCisgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+cHRyKCk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK0ltYWdlQnVmZmVyKiBTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXIo
KQoreworICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8TmF0aXZlSW1hZ2U+Piht
X2ltYWdlVmFyaWFudCkpCisgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcklmRXhpc3RzKCk7CisK
KyAgICBhdXRvIG5hdGl2ZUltYWdlID0gc3RkOjpnZXQ8UmVmPE5hdGl2ZUltYWdlPj4obV9pbWFn
ZVZhcmlhbnQpOworICAgIGF1dG8gcmVjdCA9IEZsb2F0UmVjdCB7IHsgfSwgbmF0aXZlSW1hZ2Ut
PnNpemUoKSB9OworCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
bmF0aXZlSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgaWYg
KCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgbmF0aXZlSW1hZ2UtPnNp
emUoKSwgcmVjdCwgcmVjdCk7CisKKyAgICBtX2ltYWdlVmFyaWFudCA9IGltYWdlQnVmZmVyLnJl
bGVhc2VOb25OdWxsKCk7CisgICAgcmV0dXJuIGltYWdlQnVmZmVySWZFeGlzdHMoKTsKK30KKwor
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIFNvdXJjZUltYWdlOjppbWFnZUlkZW50aWZpZXIo
KSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1faW1hZ2VWYXJpYW50LAorICAg
ICAgICBbJl0gKGNvbnN0IFJlZjxOYXRpdmVJbWFnZT4mIG5hdGl2ZUltYWdlKSB7CisgICAgICAg
ICAgICByZXR1cm4gbmF0aXZlSW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwor
ICAgICAgICB9LAorICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVm
ZmVyKSB7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcigpOworICAgICAgICB9LAorICAgICAgICBbJl0gKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHJl
dHVybiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgICAgIH0KKyAgICApOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlSW1hZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGQzZDgwZDQzNjE1ODRkOGY0ZjRlY2Nl
ODMwYzU0OWE5Y2M4MjkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUltYWdlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBJbWFn
ZVZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8CisgICAgICAgIFJlZjxOYXRpdmVJbWFnZT4sCisgICAg
ICAgIFJlZjxJbWFnZUJ1ZmZlcj4sCisgICAgICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cgorICAgID47CisKKyAgICBTb3VyY2VJbWFnZShJbWFnZVZhcmlhbnQmJik7CisKKyAgICBOYXRp
dmVJbWFnZSogbmF0aXZlSW1hZ2VJZkV4aXN0cygpIGNvbnN0OworICAgIE5hdGl2ZUltYWdlKiBu
YXRpdmVJbWFnZSgpOworCisgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVySWZFeGlzdHMoKSBj
b25zdDsKKyAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIoKTsKKworICAgIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIoKSBjb25zdDsKKworICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4gZGVjb2Rl
KERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBJbWFnZVZhcmlhbnQgbV9pbWFnZVZhcmlhbnQ7
Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBTb3VyY2VJbWFnZTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBpbWFnZUlkZW50aWZp
ZXIoKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8U291cmNl
SW1hZ2U+IFNvdXJjZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaW1hZ2VJZGVudGlmaWVyOwor
ICAgIGRlY29kZXIgPj4gaW1hZ2VJZGVudGlmaWVyOworICAgIGlmICghaW1hZ2VJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIFNvdXJjZUltYWdl
KCppbWFnZUlkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggZTAxMGM5ZDBlZjczYzEwNjRk
MTFlMzI5ZDViMGJiMWYwZTQ0YzFjMi4uZjUwODhkNjk3MzBlMjlmNzBkYjg3NGMwY2I2YTg4ZTJh
MjgzMmQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAt
MTUwLDMzICsxNTAsOSBAQCB2b2lkIFJlY29yZGVyOjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdAogewogICAgIGFwcGVuZFN0
YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CiAKLSAgICBpZiAoc291cmNlSW1hZ2UgJiYgIWNh
bkRyYXdJbWFnZUJ1ZmZlcigqc291cmNlSW1hZ2UpKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIHNvdXJjZUltYWdlUmVjdCwg
ZmlsdGVyLCByZXN1bHRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGZvciAoYXV0
byYgZWZmZWN0IDogZmlsdGVyLmVmZmVjdHNPZlR5cGUoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUlt
YWdlKSkgewotICAgICAgICBib29sIGlzUmVjb3JkZWQgPSBXVEY6OnN3aXRjaE9uKGRvd25jYXN0
PEZFSW1hZ2U+KGVmZmVjdC5nZXQoKSkuc291cmNlSW1hZ2UoKSwKLSAgICAgICAgICAgIFsmXSAo
Y29uc3QgUmVmPEltYWdlPiYgaW1hZ2UpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBuYXRp
dmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
Y29yZFJlc291cmNlVXNlKCpuYXRpdmVJbWFnZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBSZWY8SW1hZ2VCdWZmZXI+
JiBpbWFnZUJ1ZmZlcikgewotICAgICAgICAgICAgICAgIGlmIChjYW5EcmF3SW1hZ2VCdWZmZXIo
aW1hZ2VCdWZmZXIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlY29yZFJlc291cmNlVXNlKGlt
YWdlQnVmZmVyKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICBbJl0gKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgewotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAg
IGlmICghaXNSZWNvcmRlZCkgeworICAgICAgICBhdXRvJiBmZUltYWdlID0gZG93bmNhc3Q8RkVJ
bWFnZT4oZWZmZWN0LmdldCgpKTsKKyAgICAgICAgaWYgKCFyZWNvcmRSZXNvdXJjZVVzZShmZUlt
YWdlLnNvdXJjZUltYWdlKCkpKSB7CiAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmRyYXdG
aWx0ZXJlZEltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBzb3VyY2VJbWFnZVJlY3QsIGZpbHRlciwg
cmVzdWx0cyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE4Nyw3ICsxNjMs
MTEgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIq
IHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHJlY29yZFJlc291cmNlVXNlKCpzb3VyY2VJbWFnZSk7CisgICAgaWYgKCFyZWNvcmRSZXNv
dXJjZVVzZSgqc291cmNlSW1hZ2UpKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0Zp
bHRlcmVkSW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyLCBy
ZXN1bHRzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHJlY29yZERyYXdGaWx0ZXJl
ZEltYWdlQnVmZmVyKHNvdXJjZUltYWdlLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwg
c291cmNlSW1hZ2VSZWN0LCBmaWx0ZXIpOwogfQogCkBAIC0yMDYsMTIgKzE4NiwxMiBAQCB2b2lk
IFJlY29yZGVyOjpkcmF3R2x5cGhzQW5kQ2FjaGVGb250KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0
IEdseXBoQnVmZmVyR2x5cGgqCiB2b2lkIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7Ci0gICAgaWYgKCFjYW5EcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpKSB7CisKKyAgICBpZiAoIXJlY29yZFJlc291cmNlVXNl
KGltYWdlQnVmZmVyKSkgewogICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cihpbWFnZUJ1ZmZlciwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgcmVjb3JkUmVzb3VyY2VVc2UoaW1hZ2VCdWZmZXIpOwogICAgIHJl
Y29yZERyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA3Y2VmOWU2YjAxN2JjOTUxYzkzNWQwZjg3MzBhZmI2
M2FmMGEyYTI1Li45YjJiMGI5Mzc5MDFkODY1MTE2MWViODJiOTBmNGQwNWI5NDI1ZTBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xh
c3MgRm9udDsKIGNsYXNzIEdseXBoQnVmZmVyOwogY2xhc3MgSW1hZ2U7CiBjbGFzcyBQaXhlbEJ1
ZmZlcjsKK2NsYXNzIFNvdXJjZUltYWdlOwogCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGU7
CiBzdHJ1Y3QgSW1hZ2VQYWludGluZ09wdGlvbnM7CkBAIC0xMzgsOSArMTM5LDEwIEBAIHByb3Rl
Y3RlZDoKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBcHBseURldmljZVNjYWxlRmFj
dG9yKGZsb2F0KSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoTmF0
aXZlSW1hZ2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKEZvbnQm
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKEltYWdlQnVmZmVyJikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImKSA9IDA7
CisgICAgdmlydHVhbCBib29sIHJlY29yZFJlc291cmNlVXNlKGNvbnN0IFNvdXJjZUltYWdlJikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgPSAwOwogCiAg
ICAgLy8gRklYTUU6IE1heWJlIHJlbW92ZSB0aGlzPwogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3
SW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcAppbmRleCBmYTFkNjJlZDU0OTBlNjk3
YzliNmM3NjRhNDBmZWQ5YjlmMWJkYzlkLi5jYmE4ZmUwOWM5YTAzOGIwODhhZDZiYmQ0MWYyMDAx
N2EzODA3ZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1w
bC5jcHAKQEAgLTQxOCwyNSArNDE4LDQxIEBAIHZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRBcHBs
eURldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQogICAgIGFwcGVuZDxBcHBseURl
dmljZVNjYWxlRmFjdG9yPihzY2FsZUZhY3Rvcik7CiB9CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpy
ZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCitib29sIFJlY29yZGVySW1wbDo6
cmVjb3JkUmVzb3VyY2VVc2UoTmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdlKQogewogICAgIGlmICht
X2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmROYXRpdmVJbWFnZVVzZShpbWFn
ZSk7Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICAgICAg
bV9kZWxlZ2F0ZS0+cmVjb3JkTmF0aXZlSW1hZ2VVc2UobmF0aXZlSW1hZ2UpOworICAgIG1fZGlz
cGxheUxpc3QuY2FjaGVOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSk7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShGb250JiBmb250KQor
Ym9vbCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKEltYWdlQnVmZmVyJiBpbWFnZUJ1
ZmZlcikKIHsKKyAgICBpZiAoIWNhbkRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcikpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0
ZS0+cmVjb3JkRm9udFVzZShmb250KTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlRm9udChmb250
KTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1hZ2VCdWZmZXIp
OworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcik7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShJ
bWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpCitib29sIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3Vy
Y2VVc2UoY29uc3QgU291cmNlSW1hZ2UmIGltYWdlKQoreworICAgIGlmIChhdXRvIGltYWdlQnVm
ZmVyID0gaW1hZ2UuaW1hZ2VCdWZmZXJJZkV4aXN0cygpKQorICAgICAgICByZXR1cm4gcmVjb3Jk
UmVzb3VyY2VVc2UoKmltYWdlQnVmZmVyKTsKKworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0g
aW1hZ2UubmF0aXZlSW1hZ2VJZkV4aXN0cygpKQorICAgICAgICByZXR1cm4gcmVjb3JkUmVzb3Vy
Y2VVc2UoKm5hdGl2ZUltYWdlKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlY29y
ZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYgZm9udCkKIHsKICAgICBpZiAobV9kZWxl
Z2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1hZ2VCdWZm
ZXIpOwotICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcik7Cisg
ICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZEZvbnRVc2UoZm9udCk7CisgICAgbV9kaXNwbGF5TGlz
dC5jYWNoZUZvbnQoZm9udCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIC8vIEZJWE1FOiBzaGFy
ZSB3aXRoIFNoYWRvd0RhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmgKaW5kZXggZDRkMGI3NTdlZGQyOWNkYWYwZDU2M2NlNmVjY2UwYjVlMTQ1ZjQzMy4uZWQ0
NzEwYjNkNjkwM2JlZDYyNjljZGJjNmIyNTdmNTdmZmY1ODhlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKQEAgLTEzNiw5ICsxMzYsMTAgQEAgcHJpdmF0
ZToKICNlbmRpZgogICAgIHZvaWQgcmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkg
ZmluYWw7CiAKLSAgICB2b2lkIHJlY29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJikgZmluYWw7
Ci0gICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgZmluYWw7Ci0gICAgdm9pZCByZWNv
cmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYpIGZpbmFsOworICAgIGJvb2wgcmVjb3JkUmVzb3Vy
Y2VVc2UoTmF0aXZlSW1hZ2UmKSBmaW5hbDsKKyAgICBib29sIHJlY29yZFJlc291cmNlVXNlKElt
YWdlQnVmZmVyJikgZmluYWw7CisgICAgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShjb25zdCBTb3Vy
Y2VJbWFnZSYpIGZpbmFsOworICAgIGJvb2wgcmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpIGZpbmFs
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVzdGVkQ29u
dGV4dChjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGluaXRpYWxDVE0pIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcAppbmRleCBhNDNiZTQ3OGZlZThhNDQ4MzJhYTYzNjljMmQ2NmViNjFjZjBjMjQ3Li5mN2Uw
YWM4YjY3MTc5YzhkMmViMzg4OTFiNDc5MTgzMjNiYjA0MTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAgLTIxMCwxNCArMjEwLDI0IEBAIHN0ZDo6dHVwbGU8
UmVmUHRyPEltYWdlQnVmZmVyPiwgRmxvYXRSZWN0PiBTVkdGRUltYWdlRWxlbWVudDo6aW1hZ2VC
dWZmZXJGb3JFZmZlCiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50Ojpm
aWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZl
Y3RvciYpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UpCi0gICAgICAgIHJldHVybiBG
RUltYWdlOjpjcmVhdGUoUmVmIHsgKm1fY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVu
ZGVyZXIoKSkgfSwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKKyAgICBpZiAobV9jYWNoZWRJbWFn
ZSkgeworICAgICAgICBhdXRvIGltYWdlID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJl
cihyZW5kZXJlcigpKTsKKyAgICAgICAgaWYgKCFpbWFnZSB8fCBpbWFnZS0+aXNOdWxsKCkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvIG5hdGl2ZUltYWdlID0g
aW1hZ2UtPm5hdGl2ZUltYWdlKCk7CisgICAgICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvIGltYWdlUmVjdCA9IEZsb2F0UmVj
dCB7IHsgfSwgaW1hZ2UtPnNpemUoKSB9OworICAgICAgICByZXR1cm4gRkVJbWFnZTo6Y3JlYXRl
KHsgbmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSB9LCBpbWFnZVJlY3QsIHByZXNlcnZlQXNw
ZWN0UmF0aW8oKSk7CisgICAgfQogCiAgICAgYXV0byBbaW1hZ2VCdWZmZXIsIGltYWdlUmVjdF0g
PSBpbWFnZUJ1ZmZlckZvckVmZmVjdCgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIEZFSW1hZ2U6OmNyZWF0ZShpbWFnZUJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpLCBpbWFnZVJlY3QsIHByZXNlcnZlQXNwZWN0UmF0aW8oKSk7Cisg
ICAgcmV0dXJuIEZFSW1hZ2U6OmNyZWF0ZSh7IGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkg
fSwgaW1hZ2VSZWN0LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkpOwogfQogCiB2b2lkIFNWR0ZFSW1h
Z2VFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYg
dXJscykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVJbWFnZS5jcHAKaW5kZXggOTU1NjU5NzhjODY1MzU3ZWQzY2NlOTIxNjM3NDE4Mjk5ZTc1
MmY0My4uNzVkZDY4MDYyMjI3ZGJhMWFhOWQ2ZjM0YWU4NzM3YWU0NzNlMzc5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKQEAg
LTMxLDEyICszMSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEZFSW1hZ2U+IEZF
SW1hZ2U6OmNyZWF0ZShSZWY8SW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbykKLXsKLSAgICBhdXRvIGltYWdlUmVjdCA9
IEZsb2F0UmVjdCB7IHsgfSwgaW1hZ2UtPnNpemUoKSB9OwotICAgIHJldHVybiBjcmVhdGUoV1RG
TW92ZShpbWFnZSksIGltYWdlUmVjdCwgcHJlc2VydmVBc3BlY3RSYXRpbyk7Ci19Ci0KIFJlZjxG
RUltYWdlPiBGRUltYWdlOjpjcmVhdGUoU291cmNlSW1hZ2UmJiBzb3VyY2VJbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9W
YWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
RUltYWdlKFdURk1vdmUoc291cmNlSW1hZ2UpLCBzb3VyY2VJbWFnZVJlY3QsIHByZXNlcnZlQXNw
ZWN0UmF0aW8pKTsKQEAgLTUyLDIyICs0NiwxOCBAQCBGRUltYWdlOjpGRUltYWdlKFNvdXJjZUlt
YWdlJiYgc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjbwog
CiBGbG9hdFJlY3QgRkVJbWFnZTo6Y2FsY3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYgZmls
dGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYsIGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZl
U3VicmVnaW9uKSBjb25zdAogewotICAgIGF1dG8gaW1hZ2VSZWN0ID0gV1RGOjpzd2l0Y2hPbiht
X3NvdXJjZUltYWdlLAotICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZT4mKSB7Ci0gICAgICAg
ICAgICBhdXRvIGltYWdlUmVjdCA9IHByaW1pdGl2ZVN1YnJlZ2lvbjsKLSAgICAgICAgICAgIGF1
dG8gc3JjUmVjdCA9IG1fc291cmNlSW1hZ2VSZWN0OwotICAgICAgICAgICAgbV9wcmVzZXJ2ZUFz
cGVjdFJhdGlvLnRyYW5zZm9ybVJlY3QoaW1hZ2VSZWN0LCBzcmNSZWN0KTsKLSAgICAgICAgICAg
IHJldHVybiBpbWFnZVJlY3Q7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXSAoY29uc3QgUmVmPElt
YWdlQnVmZmVyPiYpIHsKLSAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVTdWJyZWdpb247Ci0g
ICAgICAgIH0sCi0gICAgICAgIFsmXSAoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSB7Ci0g
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBGbG9h
dFJlY3QoKTsKLSAgICAgICAgfQotICAgICk7Ci0gICAgcmV0dXJuIGZpbHRlci5jbGlwVG9NYXhF
ZmZlY3RSZWN0KGltYWdlUmVjdCwgcHJpbWl0aXZlU3VicmVnaW9uKTsKKyAgICBpZiAobV9zb3Vy
Y2VJbWFnZS5uYXRpdmVJbWFnZUlmRXhpc3RzKCkpIHsKKyAgICAgICAgYXV0byBpbWFnZVJlY3Qg
PSBwcmltaXRpdmVTdWJyZWdpb247CisgICAgICAgIGF1dG8gc3JjUmVjdCA9IG1fc291cmNlSW1h
Z2VSZWN0OworICAgICAgICBtX3ByZXNlcnZlQXNwZWN0UmF0aW8udHJhbnNmb3JtUmVjdChpbWFn
ZVJlY3QsIHNyY1JlY3QpOworICAgICAgICByZXR1cm4gZmlsdGVyLmNsaXBUb01heEVmZmVjdFJl
Y3QoaW1hZ2VSZWN0LCBwcmltaXRpdmVTdWJyZWdpb24pOworICAgIH0KKworICAgIGlmIChtX3Nv
dXJjZUltYWdlLmltYWdlQnVmZmVySWZFeGlzdHMoKSkKKyAgICAgICAgcmV0dXJuIGZpbHRlci5t
YXhFZmZlY3RSZWN0KHByaW1pdGl2ZVN1YnJlZ2lvbik7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiB9CiAKIC8vIEZJWE1FOiBNb3ZlIHRoZSBj
bGFzcyBGRUltYWdlU29mdHdhcmVBcHBsaWVyIHRvIHNlcGFyYXRlIHNvdXJjZSBhbmQgaGVhZGVy
IGZpbGVzLgpAQCAtODcsMzEgKzc3LDMxIEBAIGJvb2wgRkVJbWFnZVNvZnR3YXJlQXBwbGllcjo6
YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yCiAgICAg
aWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgYXV0byYgc291
cmNlSW1hZ2UgPSBtX2VmZmVjdC5zb3VyY2VJbWFnZSgpOwogICAgIGF1dG8gcHJpbWl0aXZlU3Vi
cmVnaW9uID0gcmVzdWx0LnByaW1pdGl2ZVN1YnJlZ2lvbigpOwogICAgIGF1dG8mIGNvbnRleHQg
PSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCi0gICAgV1RGOjpzd2l0Y2hPbihtX2VmZmVjdC5z
b3VyY2VJbWFnZSgpLAotICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZT4mIGltYWdlKSB7Ci0g
ICAgICAgICAgICBhdXRvIGltYWdlUmVjdCA9IHByaW1pdGl2ZVN1YnJlZ2lvbjsKLSAgICAgICAg
ICAgIGF1dG8gc3JjUmVjdCA9IG1fZWZmZWN0LnNvdXJjZUltYWdlUmVjdCgpOwotICAgICAgICAg
ICAgbV9lZmZlY3QucHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoaW1hZ2VSZWN0
LCBzcmNSZWN0KTsKLSAgICAgICAgICAgIGltYWdlUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyU2Nh
bGUoKSk7Ci0gICAgICAgICAgICBpbWFnZVJlY3QgPSBJbnRSZWN0KGltYWdlUmVjdCkgLSByZXN1
bHQuYWJzb2x1dGVJbWFnZVJlY3QoKS5sb2NhdGlvbigpOwotICAgICAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwgc3JjUmVjdCk7Ci0gICAgICAgIH0sCi0gICAgICAg
IFsmXSAoY29uc3QgUmVmPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgICAg
IGF1dG8gaW1hZ2VSZWN0ID0gcHJpbWl0aXZlU3VicmVnaW9uOwotICAgICAgICAgICAgaW1hZ2VS
ZWN0Lm1vdmVCeShtX2VmZmVjdC5zb3VyY2VJbWFnZVJlY3QoKS5sb2NhdGlvbigpKTsKLSAgICAg
ICAgICAgIGltYWdlUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgICAgICAg
ICBpbWFnZVJlY3QgPSBJbnRSZWN0KGltYWdlUmVjdCkgLSByZXN1bHQuYWJzb2x1dGVJbWFnZVJl
Y3QoKS5sb2NhdGlvbigpOwotICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1h
Z2VCdWZmZXIsIGltYWdlUmVjdC5sb2NhdGlvbigpKTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZd
IChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIHJldHVybiB0cnVlOworICAgIGlm
IChhdXRvIG5hdGl2ZUltYWdlID0gc291cmNlSW1hZ2UubmF0aXZlSW1hZ2VJZkV4aXN0cygpKSB7
CisgICAgICAgIGF1dG8gaW1hZ2VSZWN0ID0gcHJpbWl0aXZlU3VicmVnaW9uOworICAgICAgICBh
dXRvIHNyY1JlY3QgPSBtX2VmZmVjdC5zb3VyY2VJbWFnZVJlY3QoKTsKKyAgICAgICAgbV9lZmZl
Y3QucHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoaW1hZ2VSZWN0LCBzcmNSZWN0
KTsKKyAgICAgICAgaW1hZ2VSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKKyAgICAg
ICAgaW1hZ2VSZWN0ID0gSW50UmVjdChpbWFnZVJlY3QpIC0gcmVzdWx0LmFic29sdXRlSW1hZ2VS
ZWN0KCkubG9jYXRpb24oKTsKKyAgICAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKm5hdGl2
ZUltYWdlLCBzcmNSZWN0LnNpemUoKSwgaW1hZ2VSZWN0LCBzcmNSZWN0KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBzb3VyY2VJbWFn
ZS5pbWFnZUJ1ZmZlcklmRXhpc3RzKCkpIHsKKyAgICAgICAgYXV0byBpbWFnZVJlY3QgPSBwcmlt
aXRpdmVTdWJyZWdpb247CisgICAgICAgIGltYWdlUmVjdC5tb3ZlQnkobV9lZmZlY3Quc291cmNl
SW1hZ2VSZWN0KCkubG9jYXRpb24oKSk7CisgICAgICAgIGltYWdlUmVjdC5zY2FsZShmaWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7CisgICAgICAgIGltYWdlUmVjdCA9IEludFJlY3QoaW1hZ2VSZWN0KSAt
IHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdCgpLmxvY2F0aW9uKCk7CisgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgaW1hZ2VSZWN0LmxvY2F0aW9uKCkpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0QXBw
bGllcj4gRkVJbWFnZTo6Y3JlYXRlU29mdHdhcmVBcHBsaWVyKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAppbmRleCAwOWRjMzMy
ODUzOWVjZjBhY2QzYWE4MzE4YTRlMzBlZDRjM2Q5NjhjLi40NjU2YmI5ZDUyYzhlZTk0YzA2ODQ5
NDE2ODVmNTJhODNjNjU5NzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0
UmF0aW9WYWx1ZS5oIgorI2luY2x1ZGUgIlNvdXJjZUltYWdlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMzUsMTMgKzM2LDYgQEAgY2xhc3MgSW1hZ2VCdWZmZXI7CiAKIGNsYXNzIEZF
SW1hZ2UgZmluYWwgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICB1c2luZyBT
b3VyY2VJbWFnZSA9IHN0ZDo6dmFyaWFudDwKLSAgICAgICAgUmVmPEltYWdlPiwKLSAgICAgICAg
UmVmPEltYWdlQnVmZmVyPiwKLSAgICAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyCi0g
ICAgPjsKLQotICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlKFJlZjxJbWFnZT4mJiwgY29u
c3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxGRUltYWdlPiBjcmVhdGUoU291cmNlSW1hZ2UmJiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2VJbWFnZVJlY3QsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOwogCiAg
ICAgY29uc3QgU291cmNlSW1hZ2UmIHNvdXJjZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VJbWFnZTsgfQpAQCAtNzUsMTkgKzY5LDcgQEAgcHJpdmF0ZToKIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIEZFSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewot
ICAgIFdURjo6c3dpdGNoT24obV9zb3VyY2VJbWFnZSwKLSAgICAgICAgWyZdIChjb25zdCBSZWY8
SW1hZ2U+JiBpbWFnZSkgewotICAgICAgICAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFn
ZS0+bmF0aXZlSW1hZ2UoKSkKLSAgICAgICAgICAgICAgICBlbmNvZGVyIDw8IG5hdGl2ZUltYWdl
LT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZd
IChjb25zdCBSZWY8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlcikgewotICAgICAgICAgICAgZW5j
b2RlciA8PCBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7Ci0gICAg
ICAgIH0sCi0gICAgICAgIFsmXSAoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikgewotICAgICAgICAgICAgZW5jb2RlciA8PCByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgICAgIH0KLSAgICApOwotCisgICAgZW5jb2RlciA8PCBt
X3NvdXJjZUltYWdlOwogICAgIGVuY29kZXIgPDwgbV9zb3VyY2VJbWFnZVJlY3Q7CiAgICAgZW5j
b2RlciA8PCBtX3ByZXNlcnZlQXNwZWN0UmF0aW87CiB9CkBAIC05NSw5ICs3Nyw5IEBAIHZvaWQg
RkVJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgogc3RkOjpvcHRpb25hbDxSZWY8RkVJbWFnZT4+IEZFSW1hZ2U6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiBpbWFnZUlkZW50aWZpZXI7Ci0gICAgZGVjb2RlciA+PiBpbWFnZUlkZW50aWZpZXI7
Ci0gICAgaWYgKCFpbWFnZUlkZW50aWZpZXIpCisgICAgc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFn
ZT4gc291cmNlSW1hZ2U7CisgICAgZGVjb2RlciA+PiBzb3VyY2VJbWFnZTsKKyAgICBpZiAoIXNv
dXJjZUltYWdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+IHNvdXJjZUltYWdlUmVjdDsKQEAgLTExMCw3ICs5Miw3IEBAIHN0ZDo6
b3B0aW9uYWw8UmVmPEZFSW1hZ2U+PiBGRUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICBpZiAoIXByZXNlcnZlQXNwZWN0UmF0aW8pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICByZXR1cm4gRkVJbWFnZTo6Y3JlYXRlKCppbWFnZUlkZW50aWZpZXIsICpzb3Vy
Y2VJbWFnZVJlY3QsICpwcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKKyAgICByZXR1cm4gRkVJbWFnZTo6
Y3JlYXRlKFdURk1vdmUoKnNvdXJjZUltYWdlKSwgKnNvdXJjZUltYWdlUmVjdCwgKnByZXNlcnZl
QXNwZWN0UmF0aW8pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKaW5kZXggNTc3YmJmMzNiMjBmZGY1NzUxYmE3NTQyNDM1NmE0M2ZjMDcz
YmMxNC4uZDlhZjU4NDBkZjY4NDNkOWU2MTlkYjY2MmVjOTBlYTQ4MTg1Nzk2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMjM5LDE4ICsyMzksMTggQEAgdm9pZCBSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ1IKICAgICBmb3IgKGF1dG8mIGVmZmVjdCA6IGZpbHRlci0+ZWZmZWN0c09mVHlw
ZShGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFSW1hZ2UpKSB7CiAgICAgICAgIGF1dG8mIGZlSW1hZ2Ug
PSBkb3duY2FzdDxGRUltYWdlPihlZmZlY3QuZ2V0KCkpOwogCi0gICAgICAgIGNvbnN0IGF1dG8q
IHJlc291cmNlSWRlbnRpZmllciA9IHN0ZDo6Z2V0X2lmPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4oJmZlSW1hZ2Uuc291cmNlSW1hZ2UoKSk7Ci0gICAgICAgIGlmICghcmVzb3VyY2VJZGVu
dGlmaWVyKSB7CisgICAgICAgIGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZmVJbWFnZS5zb3VyY2VJ
bWFnZSgpLmltYWdlSWRlbnRpZmllcigpOworICAgICAgICBpZiAoIWltYWdlSWRlbnRpZmllcikg
ewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IHJlc291cmNlQ2Fj
aGUoKS5jYWNoZWROYXRpdmVJbWFnZSh7ICpyZXNvdXJjZUlkZW50aWZpZXIsIG1fd2ViUHJvY2Vz
c0lkZW50aWZpZXIgfSkpIHsKLSAgICAgICAgICAgIGZlSW1hZ2Uuc2V0SW1hZ2VTb3VyY2UoUmVm
PEltYWdlPiB7IEJpdG1hcEltYWdlOjpjcmVhdGUobmF0aXZlSW1hZ2UpIH0pOworICAgICAgICBp
ZiAoYXV0byBuYXRpdmVJbWFnZSA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWROYXRpdmVJbWFnZSh7
IGltYWdlSWRlbnRpZmllciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KSkgeworICAgICAgICAg
ICAgZmVJbWFnZS5zZXRJbWFnZVNvdXJjZSh7ICpuYXRpdmVJbWFnZSB9KTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBy
ZXNvdXJjZUNhY2hlKCkuY2FjaGVkSW1hZ2VCdWZmZXIoeyAqcmVzb3VyY2VJZGVudGlmaWVyLCBt
X3dlYlByb2Nlc3NJZGVudGlmaWVyIH0pKSB7CisgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVy
ID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZEltYWdlQnVmZmVyKHsgaW1hZ2VJZGVudGlmaWVyLCBt
X3dlYlByb2Nlc3NJZGVudGlmaWVyIH0pKSB7CiAgICAgICAgICAgICBmZUltYWdlLnNldEltYWdl
U291cmNlKHsgKmltYWdlQnVmZmVyIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAppbmRleCA0
YTMxNzJjZmRiMjY4OGMwY2EyMmNiMjczZDU1YmFiYzVlYjViNWU4Li4yNDMzZmRjYzk3NGFiNjY3
OTcxYTI1YWY2NDc4OTM1NjBhMzMxYzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyUHJveHkuY3BwCkBAIC00MTIsMzQgKzQxMiw1MSBAQCB2b2lkIFJlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBz
Y2FsZUZhYwogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OkFw
cGx5RGV2aWNlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IpKTsKIH0KIAotdm9pZCBSZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJiBpbWFn
ZSkKK2Jvb2wgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNvdXJjZVVz
ZShOYXRpdmVJbWFnZSYgaW1hZ2UpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFtX3JlbmRlcmluZ0Jh
Y2tlbmQpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBtX3JlbmRlcmluZ0JhY2tlbmQt
PnJlY29yZE5hdGl2ZUltYWdlVXNlKGltYWdlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJlc291cmNlVXNlKEZvbnQm
IGZvbnQpCitib29sIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3Vy
Y2VVc2UoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKQogewogICAgIGlmIChVTkxJS0VMWSghbV9y
ZW5kZXJpbmdCYWNrZW5kKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgbV9yZW5kZXJp
bmdCYWNrZW5kLT5yZWNvcmRGb250VXNlKGZvbnQpOworICAgIGlmICghY2FuRHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9yZW5kZXJp
bmdCYWNrZW5kLT5yZWNvcmRJbWFnZUJ1ZmZlclVzZShpbWFnZUJ1ZmZlcik7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRS
ZXNvdXJjZVVzZShjb25zdCBTb3VyY2VJbWFnZSYgaW1hZ2UpCit7CisgICAgaWYgKGF1dG8gaW1h
Z2VCdWZmZXIgPSBpbWFnZS5pbWFnZUJ1ZmZlcklmRXhpc3RzKCkpCisgICAgICAgIHJldHVybiBy
ZWNvcmRSZXNvdXJjZVVzZSgqaW1hZ2VCdWZmZXIpOworCisgICAgaWYgKGF1dG8gbmF0aXZlSW1h
Z2UgPSBpbWFnZS5uYXRpdmVJbWFnZUlmRXhpc3RzKCkpCisgICAgICAgIHJldHVybiByZWNvcmRS
ZXNvdXJjZVVzZSgqbmF0aXZlSW1hZ2UpOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1
ZmZlciYgaW1hZ2VCdWZmZXIpCitib29sIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6
cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYgZm9udCkKIHsKICAgICBpZiAoVU5MSUtFTFkoIW1fcmVu
ZGVyaW5nQmFja2VuZCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG1fcmVuZGVyaW5n
QmFja2VuZC0+cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1hZ2VCdWZmZXIpOworICAgIG1fcmVuZGVy
aW5nQmFja2VuZC0+cmVjb3JkRm9udFVzZShmb250KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
dm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmZsdXNoQ29udGV4dChHcmFwaGlj
c0NvbnRleHRGbHVzaElkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eS5oCmluZGV4IGMyNzUzN2IyYmM5ZjRmY2IxMTdlOTZkNjY2MGMy
NzZjMjFlNGNhMWYuLmE0MThlZjJmYjAzZWIzZTIyMWNjZDdmNWE2NDE1NDgyZDcxYzM0NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaApAQCAtMTM4LDkgKzEz
OCwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCByZWNvcmRBcHBseURldmljZVNjYWxl
RmFjdG9yKGZsb2F0KSBmaW5hbDsKIAotICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29y
ZTo6TmF0aXZlSW1hZ2UmKSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZFJlc291cmNlVXNlKFdlYkNv
cmU6OkZvbnQmKSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZFJlc291cmNlVXNlKFdlYkNvcmU6Oklt
YWdlQnVmZmVyJikgZmluYWw7CisgICAgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShXZWJDb3JlOjpO
YXRpdmVJbWFnZSYpIGZpbmFsOworICAgIGJvb2wgcmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6
SW1hZ2VCdWZmZXImKSBmaW5hbDsKKyAgICBib29sIHJlY29yZFJlc291cmNlVXNlKGNvbnN0IFdl
YkNvcmU6OlNvdXJjZUltYWdlJikgZmluYWw7CisgICAgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShX
ZWJDb3JlOjpGb250JikgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0PiBjcmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgaW5pdGlhbENsaXAsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENU
TSkgZmluYWw7CiAK
</data>
<flag name="commit-queue"
          id="475901"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449720</attachid>
            <date>2022-01-21 20:48:25 -0800</date>
            <delta_ts>2022-01-21 21:57:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235467-20220121204824.patch</filename>
            <type>text/plain</type>
            <size>36792</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTY5Mzc4OTliNThmZmZk
ZWQzZjAyODgxOTNlNjQ0ZWJhNWIxMmIyOS4uNWM0YWJmODYzYjAxZWYzYjc2ZWQyNGEyNGM3Mzkx
ODZlOWExMmExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIyLTAxLTIxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
QWRkIHRoZSBjbGFzcyAnU291cmNlSW1hZ2UnIHRvIHJlcHJlc2VudCB2YXJpYW50cyBvZiBpbWFn
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NDY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3Jl
IHRoZSBleGlzdGVuY2Ugb2YgR1BVUHJvY2VzIHdlIHVzZWQgdG8gbWFrZSBzb21lIGRyYXdpbmcg
b24gYW4gCisgICAgICAgIEltYWdlQnVmZmVyLCBnZXQgYSBOYXRpdmVJbWFnZSBmcm9tIHRoZSBJ
bWFnZUJ1ZmZlciBhbmQgdGhlbiB1c2UgdGhpcworICAgICAgICBOYXRpdmVJbWFnZS4gV2l0aCBH
UFVQcm9jZXMsIHRoaXMgd2lsbCByZXF1aXJlIGJvdW5jaW5nIHRoZSBOYXRpdmVJbWFnZSAKKyAg
ICAgICAgYmV0d2VlbiBXZWJQb3JjZXNzIGFuZCBHUFVQcm9jZXNzIGF0IGxlYXN0IHR3byB0aW1l
cy4gVG8gbWFrZSB0aGlzIHNjZW5hcmlvIAorICAgICAgICBlZmZpY2llbnQsIGEgbmV3IGNsYXNz
IGNhbGxlZCBTb3VyY2VJbWFnZScgd2lsbCBiZSBpbnRyb2R1Y2VkLiBUaGUgcHVycG9zZQorICAg
ICAgICBvZiB0aGlzIGNsYXNzIGlzIHRvIHByb3ZpZGUgYSBuZXcgbGV2ZWwgb2YgYWJzdHJhY3Rp
b24gZm9yIHRoZSBpbWFnZXMKKyAgICAgICAgc3VjaCB0aGF0IG5vIGNvbnZlcnNpb24gaXMgbmVl
ZGVkIGJlZm9yZSB0aGUgYWN0dWFsIHVzZS4KKworICAgICAgICBSZXBsYWNlIEZFSW1hZ2U6OlNv
dXJjZUltYWdlIHdpdGggYSBuZXcgY2xhc3MgbmFtZWQgJ1NvdXJjZUltYWdlJy4gTGV0IAorICAg
ICAgICB0aGUgbmV3IGNsYXNzIGhhbmRsZSB0aGUgZW5jb2RpbmcgYW5kIGRlY29kaW5nIGFuZCB0
aGUgY29udmVyc2lvbiBmcm9tCisgICAgICAgIE5hdGl2ZUltYWdlIHRvIEltYWdlQnVmZmVyIGFu
ZCB2aWNlIHZlcnNhLgorCisgICAgICAgIE1ha2UgUmVjb3JkZXI6OnJlY29yZFJlc291cmNlVXNl
KCkgcmV0dXJucyBhIGJvb2xlYW4gd2hpY2ggaW5kaWNhdGVzCisgICAgICAgIHdoZXRoZXIgdGhl
IHJlc291cmNlIGNhbiBiZSBjYWNoZWQgZm9yIGxhdGVyIHJlcGxheSBvciBub3QuCisKKyAgICAg
ICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Tb3VyY2VJbWFnZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlSW1h
Z2U6OlNvdXJjZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpuYXRpdmVJ
bWFnZUlmRXhpc3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpuYXRp
dmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXJJZkV4
aXN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OmltYWdlSWRlbnRpZmllciBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OnJlY29yZFJlc291cmNlVXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmZp
bHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpjYWxjdWxhdGVJbWFnZVJlY3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkg
Y29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUltYWdlOjpkZWNvZGUpOgorCiAyMDIyLTAxLTIxICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBXUFQgdmVyc2lvbiBvZiBjc3MvY3NzLWNhc2NhZGUvcGFy
c2luZy9sYXllci1pbXBvcnQtcGFyc2luZy5odG1sIGNyYXNoZXMgd2l0aCBudWxscHRyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDliZmJjOTM5NWRjOWVjMTAyMWZkYmNjYmI4MzFhY2FlYmQyZTNkNDQuLjE2ZjdmNTY3
NmI3MDA0YWJkNmMwOTM0OTJhNTJlYmFlY2QyZjQxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMjItMDEtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0dQVSBQcm9jZXNzXSBBZGQgdGhlIGNsYXNzICdTb3VyY2VJbWFnZScgdG8gcmVwcmVz
ZW50IHZhcmlhbnRzIG9mIGltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzU0NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQcm92aWRlIGEgbmV3IHJlY29yZFJlc291cmNlVXNlKCkgZm9yIHRoZSBT
b3VyY2VJbWFnZS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJlc291cmNlVXNl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyUHJveHkuaDoKKwogMjAyMi0wMS0yMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgaW4tcHJvY2VzcyB0ZXN0aW5nIG9mIElQQyBt
ZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggY2Q1OGNkYjMyYzk0ODEwNzFhNDQ2NTk0ODY5
YjQwY2E2MTA2OWJhNC4uOTJkNWQ5NjFmYzNhNjNlNjU2MWYwZTUzNTYzNWQ0ZDY1N2ZlMjAxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNTUwLDYgKzE1NTAsNyBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2hvdWxkTG9jYWxp
emVBeGlzTmFtZXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9T
dHJpbmdUcnVuY2F0b3IuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAzZmEwYmJkOTgyNGY5
YTg2YTEyZmUzODc5YWJkZTBkM2U0ODU5YWY1Li45YTljZWM0ZWU0YWFkOGY0NmUwOGU0NDkwNDcy
OTRjMjc2NjU1MzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjA3Niw2ICsyMDc2LDcgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3Vu
ZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
SW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9UZXh0UnVuLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggODk5OWEyZWExOTZlODU3OTAyMGIwMTNiNGY1MDdlNzU2Yzk1YWJj
My4uODkxZjA5N2VjYzBkZWIyMzM5ZjVmMWYxMjNiOTBkYjhhMTBkZGY0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjMzOSw2
ICsyMzM5LDcgQEAKIAkJNzJCQUMzQUUyM0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFj
a2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJC
QUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyRDczNjQ0Mjc4NDYxQTAw
MDM5ODY2MyAvKiBGaWx0ZXJSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjExQjVENjI3NjUzNjgyMDA3NkZFRjggLyogRmlsdGVyUmVzdWx0
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcy
RjY2N0UxMjYwQzI2QUMwMEVFMzZBRCAvKiBEaWFnbm9zdGljTG9nZ2luZ0RvbWFpbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJGNjY3REYyNjBDMjY0
NDAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9tYWluLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzJGN0U3NDYyNzlCOEY3NTAwRDgyRDJE
IC8qIFNvdXJjZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MkY3RTc0NDI3OUI4Rjc0MDBEODJEMkQgLyogU291cmNlSW1hZ2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NTUzQ0ZFODEwOEY0
NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUgLyog
VGltZWxpbmVSZWNvcmRGYWN0b3J5LmggKi87IH07CiAJCTc1NzkzRTg0MEQwQ0UwQjMwMDdGQzBB
QyAvKiBNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1NzkzRTgxMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCAqLzsg
fTsKIAkJNzU3OTNFQzkwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VDNzBEMENFNzJE
MDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTExMzUwLDYgKzExMzUxLDgg
QEAKIAkJNzJGMUFEQTMxQTM5MEI5RjAwMDE0RTE4IC8qIEpTRVhURnJhZ0RlcHRoLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRVhURnJhZ0RlcHRoLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJGMUFEQTQxQTM5MEI5RjAwMDE0RTE4IC8qIEpT
RVhURnJhZ0RlcHRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhURnJh
Z0RlcHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyRjY2N0RGMjYwQzI2NDQw
MEVFMzZBRCAvKiBEaWFnbm9zdGljTG9nZ2luZ0RvbWFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaWFn
bm9zdGljTG9nZ2luZ0RvbWFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkY3
RTc0MjI3OUI4Rjc0MDBEODJEMkQgLyogU291cmNlSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3MkY3RTc0NDI3OUI4Rjc0MDBEODJEMkQgLyogU291cmNlSW1hZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlSW1hZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzJGQjIzODQyMjQ5N0FENDAwN0U1QUM3IC8qIFNWR1ZhbHVlUHJv
cGVydHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
VmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MkZCMjM4NjIyNDk3QUQ1MDA3RTVBQzcgLyogU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVlUHJvcGVydHlBbmltYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkZCMjM4NzIyNDk3QjE1MDA3RTVB
QzcgLyogU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4OTk0LDYgKzI4OTk3LDggQEAKIAkJCQkxREQx
MjdBQzI1NkUzQTg3MDBCMjI3RDcgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgKi8sCiAJCQkJ
Q0Q2NDFFQjIxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUuaCAqLywKIAkJ
CQlDREM4QjVBQzE4MDRBRTVEMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5o
ICovLAorCQkJCTcyRjdFNzQyMjc5QjhGNzQwMEQ4MkQyRCAvKiBTb3VyY2VJbWFnZS5jcHAgKi8s
CisJCQkJNzJGN0U3NDQyNzlCOEY3NDAwRDgyRDJEIC8qIFNvdXJjZUltYWdlLmggKi8sCiAJCQkJ
N0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICovLAogCQkJCUIyMzU0
MEYwMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuY3BwICovLAogCQkJCUIyMzU0
MEYxMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuaCAqLywKQEAgLTM3MTc0LDYg
KzM3MTc5LDcgQEAKIAkJCQlDREM4QjVBQjE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzhCNUFEMTgwNEFFNUQwMDE2
RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NEE4MUY0MjBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzJGN0U3NDYyNzlCOEY3NTAwRDgyRDJEIC8qIFNvdXJjZUltYWdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlEMDFBMjdBRTEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjI2Q0RFMEYxMTQwNDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxO
YXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzQ5NTBDRDI1Mzk0MzYxMDA5OUYxNzEg
LyogU3BlZWNoUmVjb2duaXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MzliYTA0
NjFhNWRjZjZlMTVhZDJiMzZlYTIwMTI1MjYyNjJiNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHAKQEAgLTAsMCArMSw5
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU291cmNlSW1hZ2UuaCIKKworI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NvdXJjZUltYWdlOjpT
b3VyY2VJbWFnZShJbWFnZVZhcmlhbnQmJiBpbWFnZVZhcmlhbnQpCisgICAgOiBtX2ltYWdlVmFy
aWFudChXVEZNb3ZlKGltYWdlVmFyaWFudCkpCit7Cit9CisKK05hdGl2ZUltYWdlKiBTb3VyY2VJ
bWFnZTo6bmF0aXZlSW1hZ2VJZkV4aXN0cygpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIG5hdGl2
ZUltYWdlID0gc3RkOjpnZXRfaWY8UmVmPE5hdGl2ZUltYWdlPj4oJm1faW1hZ2VWYXJpYW50KSkK
KyAgICAgICAgcmV0dXJuIG5hdGl2ZUltYWdlLT5wdHIoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworTmF0aXZlSW1hZ2UqIFNvdXJjZUltYWdlOjpuYXRpdmVJbWFnZSgpCit7CisgICAgaWYg
KCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxJbWFnZUJ1ZmZlcj4+KG1faW1hZ2VWYXJpYW50
KSkKKyAgICAgICAgcmV0dXJuIG5hdGl2ZUltYWdlSWZFeGlzdHMoKTsKKworICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBzdGQ6OmdldDxSZWY8SW1hZ2VCdWZmZXI+PihtX2ltYWdlVmFyaWFudCk7Cisg
ICAgYXV0byBuYXRpdmVJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdU
Rk1vdmUoaW1hZ2VCdWZmZXIpKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIG1faW1hZ2VWYXJpYW50ID0gbmF0aXZlSW1hZ2UucmVsZWFzZU5v
bk51bGwoKTsKKyAgICByZXR1cm4gbmF0aXZlSW1hZ2VJZkV4aXN0cygpOworfQorCitJbWFnZUJ1
ZmZlciogU291cmNlSW1hZ2U6OmltYWdlQnVmZmVySWZFeGlzdHMoKSBjb25zdAoreworICAgIGlm
IChhdXRvKiBpbWFnZUJ1ZmZlciA9IHN0ZDo6Z2V0X2lmPFJlZjxJbWFnZUJ1ZmZlcj4+KCZtX2lt
YWdlVmFyaWFudCkpCisgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+cHRyKCk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK0ltYWdlQnVmZmVyKiBTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXIo
KQoreworICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8TmF0aXZlSW1hZ2U+Piht
X2ltYWdlVmFyaWFudCkpCisgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcklmRXhpc3RzKCk7CisK
KyAgICBhdXRvIG5hdGl2ZUltYWdlID0gc3RkOjpnZXQ8UmVmPE5hdGl2ZUltYWdlPj4obV9pbWFn
ZVZhcmlhbnQpOworICAgIGF1dG8gcmVjdCA9IEZsb2F0UmVjdCB7IHsgfSwgbmF0aXZlSW1hZ2Ut
PnNpemUoKSB9OworCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
bmF0aXZlSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgaWYg
KCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgbmF0aXZlSW1hZ2UtPnNp
emUoKSwgcmVjdCwgcmVjdCk7CisKKyAgICBtX2ltYWdlVmFyaWFudCA9IGltYWdlQnVmZmVyLnJl
bGVhc2VOb25OdWxsKCk7CisgICAgcmV0dXJuIGltYWdlQnVmZmVySWZFeGlzdHMoKTsKK30KKwor
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIFNvdXJjZUltYWdlOjppbWFnZUlkZW50aWZpZXIo
KSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1faW1hZ2VWYXJpYW50LAorICAg
ICAgICBbJl0gKGNvbnN0IFJlZjxOYXRpdmVJbWFnZT4mIG5hdGl2ZUltYWdlKSB7CisgICAgICAg
ICAgICByZXR1cm4gbmF0aXZlSW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwor
ICAgICAgICB9LAorICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVm
ZmVyKSB7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcigpOworICAgICAgICB9LAorICAgICAgICBbJl0gKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHJl
dHVybiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgICAgIH0KKyAgICApOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlSW1hZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGQzZDgwZDQzNjE1ODRkOGY0ZjRlY2Nl
ODMwYzU0OWE5Y2M4MjkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUltYWdlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBJbWFn
ZVZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8CisgICAgICAgIFJlZjxOYXRpdmVJbWFnZT4sCisgICAg
ICAgIFJlZjxJbWFnZUJ1ZmZlcj4sCisgICAgICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cgorICAgID47CisKKyAgICBTb3VyY2VJbWFnZShJbWFnZVZhcmlhbnQmJik7CisKKyAgICBOYXRp
dmVJbWFnZSogbmF0aXZlSW1hZ2VJZkV4aXN0cygpIGNvbnN0OworICAgIE5hdGl2ZUltYWdlKiBu
YXRpdmVJbWFnZSgpOworCisgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVySWZFeGlzdHMoKSBj
b25zdDsKKyAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIoKTsKKworICAgIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIoKSBjb25zdDsKKworICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4gZGVjb2Rl
KERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBJbWFnZVZhcmlhbnQgbV9pbWFnZVZhcmlhbnQ7
Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBTb3VyY2VJbWFnZTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBpbWFnZUlkZW50aWZp
ZXIoKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8U291cmNl
SW1hZ2U+IFNvdXJjZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaW1hZ2VJZGVudGlmaWVyOwor
ICAgIGRlY29kZXIgPj4gaW1hZ2VJZGVudGlmaWVyOworICAgIGlmICghaW1hZ2VJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIFNvdXJjZUltYWdl
KCppbWFnZUlkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggZTAxMGM5ZDBlZjczYzEwNjRk
MTFlMzI5ZDViMGJiMWYwZTQ0YzFjMi4uZjUwODhkNjk3MzBlMjlmNzBkYjg3NGMwY2I2YTg4ZTJh
MjgzMmQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAt
MTUwLDMzICsxNTAsOSBAQCB2b2lkIFJlY29yZGVyOjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdAogewogICAgIGFwcGVuZFN0
YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7CiAKLSAgICBpZiAoc291cmNlSW1hZ2UgJiYgIWNh
bkRyYXdJbWFnZUJ1ZmZlcigqc291cmNlSW1hZ2UpKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIHNvdXJjZUltYWdlUmVjdCwg
ZmlsdGVyLCByZXN1bHRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGZvciAoYXV0
byYgZWZmZWN0IDogZmlsdGVyLmVmZmVjdHNPZlR5cGUoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUlt
YWdlKSkgewotICAgICAgICBib29sIGlzUmVjb3JkZWQgPSBXVEY6OnN3aXRjaE9uKGRvd25jYXN0
PEZFSW1hZ2U+KGVmZmVjdC5nZXQoKSkuc291cmNlSW1hZ2UoKSwKLSAgICAgICAgICAgIFsmXSAo
Y29uc3QgUmVmPEltYWdlPiYgaW1hZ2UpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBuYXRp
dmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
Y29yZFJlc291cmNlVXNlKCpuYXRpdmVJbWFnZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBSZWY8SW1hZ2VCdWZmZXI+
JiBpbWFnZUJ1ZmZlcikgewotICAgICAgICAgICAgICAgIGlmIChjYW5EcmF3SW1hZ2VCdWZmZXIo
aW1hZ2VCdWZmZXIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlY29yZFJlc291cmNlVXNlKGlt
YWdlQnVmZmVyKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICBbJl0gKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgewotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAg
IGlmICghaXNSZWNvcmRlZCkgeworICAgICAgICBhdXRvJiBmZUltYWdlID0gZG93bmNhc3Q8RkVJ
bWFnZT4oZWZmZWN0LmdldCgpKTsKKyAgICAgICAgaWYgKCFyZWNvcmRSZXNvdXJjZVVzZShmZUlt
YWdlLnNvdXJjZUltYWdlKCkpKSB7CiAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmRyYXdG
aWx0ZXJlZEltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBzb3VyY2VJbWFnZVJlY3QsIGZpbHRlciwg
cmVzdWx0cyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE4Nyw3ICsxNjMs
MTEgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIq
IHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHJlY29yZFJlc291cmNlVXNlKCpzb3VyY2VJbWFnZSk7CisgICAgaWYgKCFyZWNvcmRSZXNv
dXJjZVVzZSgqc291cmNlSW1hZ2UpKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0Zp
bHRlcmVkSW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyLCBy
ZXN1bHRzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHJlY29yZERyYXdGaWx0ZXJl
ZEltYWdlQnVmZmVyKHNvdXJjZUltYWdlLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwg
c291cmNlSW1hZ2VSZWN0LCBmaWx0ZXIpOwogfQogCkBAIC0yMDYsMTIgKzE4NiwxMiBAQCB2b2lk
IFJlY29yZGVyOjpkcmF3R2x5cGhzQW5kQ2FjaGVGb250KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0
IEdseXBoQnVmZmVyR2x5cGgqCiB2b2lkIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVjZXNzYXJ5KCk7Ci0gICAgaWYgKCFjYW5EcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpKSB7CisKKyAgICBpZiAoIXJlY29yZFJlc291cmNlVXNl
KGltYWdlQnVmZmVyKSkgewogICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cihpbWFnZUJ1ZmZlciwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgcmVjb3JkUmVzb3VyY2VVc2UoaW1hZ2VCdWZmZXIpOwogICAgIHJl
Y29yZERyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA3Y2VmOWU2YjAxN2JjOTUxYzkzNWQwZjg3MzBhZmI2
M2FmMGEyYTI1Li45YjJiMGI5Mzc5MDFkODY1MTE2MWViODJiOTBmNGQwNWI5NDI1ZTBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xh
c3MgRm9udDsKIGNsYXNzIEdseXBoQnVmZmVyOwogY2xhc3MgSW1hZ2U7CiBjbGFzcyBQaXhlbEJ1
ZmZlcjsKK2NsYXNzIFNvdXJjZUltYWdlOwogCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGU7
CiBzdHJ1Y3QgSW1hZ2VQYWludGluZ09wdGlvbnM7CkBAIC0xMzgsOSArMTM5LDEwIEBAIHByb3Rl
Y3RlZDoKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBcHBseURldmljZVNjYWxlRmFj
dG9yKGZsb2F0KSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoTmF0
aXZlSW1hZ2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKEZvbnQm
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKEltYWdlQnVmZmVyJikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImKSA9IDA7
CisgICAgdmlydHVhbCBib29sIHJlY29yZFJlc291cmNlVXNlKGNvbnN0IFNvdXJjZUltYWdlJikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgPSAwOwogCiAg
ICAgLy8gRklYTUU6IE1heWJlIHJlbW92ZSB0aGlzPwogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3
SW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcAppbmRleCBmYTFkNjJlZDU0OTBlNjk3
YzliNmM3NjRhNDBmZWQ5YjlmMWJkYzlkLi5mZTUxNTU4ZDc4MjM1MzQxOWE2NGM5YTdmOWI4OTc5
MDNhYTZmOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1w
bC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNv
dXJjZUltYWdlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTQxOCwyNSArNDE5LDQxIEBAIHZvaWQgUmVjb3JkZXJJ
bXBsOjpyZWNvcmRBcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQogICAg
IGFwcGVuZDxBcHBseURldmljZVNjYWxlRmFjdG9yPihzY2FsZUZhY3Rvcik7CiB9CiAKLXZvaWQg
UmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCitib29s
IFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoTmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdl
KQogewogICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmROYXRp
dmVJbWFnZVVzZShpbWFnZSk7Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNoZU5hdGl2ZUltYWdlKGlt
YWdlKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkTmF0aXZlSW1hZ2VVc2UobmF0aXZlSW1h
Z2UpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVz
ZShGb250JiBmb250KQorYm9vbCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKEltYWdl
QnVmZmVyJiBpbWFnZUJ1ZmZlcikKIHsKKyAgICBpZiAoIWNhbkRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAobV9kZWxlZ2F0ZSkKLSAg
ICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkRm9udFVzZShmb250KTsKLSAgICBtX2Rpc3BsYXlMaXN0
LmNhY2hlRm9udChmb250KTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkSW1hZ2VCdWZmZXJV
c2UoaW1hZ2VCdWZmZXIpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlcik7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNv
cmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpCitib29sIFJlY29yZGVySW1w
bDo6cmVjb3JkUmVzb3VyY2VVc2UoY29uc3QgU291cmNlSW1hZ2UmIGltYWdlKQoreworICAgIGlm
IChhdXRvIGltYWdlQnVmZmVyID0gaW1hZ2UuaW1hZ2VCdWZmZXJJZkV4aXN0cygpKQorICAgICAg
ICByZXR1cm4gcmVjb3JkUmVzb3VyY2VVc2UoKmltYWdlQnVmZmVyKTsKKworICAgIGlmIChhdXRv
IG5hdGl2ZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VJZkV4aXN0cygpKQorICAgICAgICByZXR1
cm4gcmVjb3JkUmVzb3VyY2VVc2UoKm5hdGl2ZUltYWdlKTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYgZm9udCkKIHsK
ICAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkSW1hZ2VCdWZm
ZXJVc2UoaW1hZ2VCdWZmZXIpOwotICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlcik7CisgICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZEZvbnRVc2UoZm9udCk7Cisg
ICAgbV9kaXNwbGF5TGlzdC5jYWNoZUZvbnQoZm9udCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IC8vIEZJWE1FOiBzaGFyZSB3aXRoIFNoYWRvd0RhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXJJbXBsLmgKaW5kZXggZDRkMGI3NTdlZGQyOWNkYWYwZDU2M2NlNmVjY2Uw
YjVlMTQ1ZjQzMy4uZWQ0NzEwYjNkNjkwM2JlZDYyNjljZGJjNmIyNTdmNTdmZmY1ODhlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKQEAgLTEzNiw5ICsx
MzYsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgcmVjb3JkQXBwbHlEZXZpY2VTY2Fs
ZUZhY3RvcihmbG9hdCkgZmluYWw7CiAKLSAgICB2b2lkIHJlY29yZFJlc291cmNlVXNlKE5hdGl2
ZUltYWdlJikgZmluYWw7Ci0gICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgZmluYWw7
Ci0gICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYpIGZpbmFsOworICAgIGJv
b2wgcmVjb3JkUmVzb3VyY2VVc2UoTmF0aXZlSW1hZ2UmKSBmaW5hbDsKKyAgICBib29sIHJlY29y
ZFJlc291cmNlVXNlKEltYWdlQnVmZmVyJikgZmluYWw7CisgICAgYm9vbCByZWNvcmRSZXNvdXJj
ZVVzZShjb25zdCBTb3VyY2VJbWFnZSYpIGZpbmFsOworICAgIGJvb2wgcmVjb3JkUmVzb3VyY2VV
c2UoRm9udCYpIGZpbmFsOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4g
Y3JlYXRlTmVzdGVkQ29udGV4dChjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFSW1hZ2VFbGVtZW50LmNwcAppbmRleCBhNDNiZTQ3OGZlZThhNDQ4MzJhYTYzNjljMmQ2NmVi
NjFjZjBjMjQ3Li5mN2UwYWM4YjY3MTc5YzhkMmViMzg4OTFiNDc5MTgzMjNiYjA0MTIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAgLTIxMCwxNCArMjEwLDI0
IEBAIHN0ZDo6dHVwbGU8UmVmUHRyPEltYWdlQnVmZmVyPiwgRmxvYXRSZWN0PiBTVkdGRUltYWdl
RWxlbWVudDo6aW1hZ2VCdWZmZXJGb3JFZmZlCiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
SW1hZ2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0
IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UpCi0g
ICAgICAgIHJldHVybiBGRUltYWdlOjpjcmVhdGUoUmVmIHsgKm1fY2FjaGVkSW1hZ2UtPmltYWdl
Rm9yUmVuZGVyZXIocmVuZGVyZXIoKSkgfSwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKKyAgICBp
ZiAobV9jYWNoZWRJbWFnZSkgeworICAgICAgICBhdXRvIGltYWdlID0gbV9jYWNoZWRJbWFnZS0+
aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcigpKTsKKyAgICAgICAgaWYgKCFpbWFnZSB8fCBpbWFn
ZS0+aXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRv
IG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7CisgICAgICAgIGlmICghbmF0aXZl
SW1hZ2UpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvIGltYWdl
UmVjdCA9IEZsb2F0UmVjdCB7IHsgfSwgaW1hZ2UtPnNpemUoKSB9OworICAgICAgICByZXR1cm4g
RkVJbWFnZTo6Y3JlYXRlKHsgbmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSB9LCBpbWFnZVJl
Y3QsIHByZXNlcnZlQXNwZWN0UmF0aW8oKSk7CisgICAgfQogCiAgICAgYXV0byBbaW1hZ2VCdWZm
ZXIsIGltYWdlUmVjdF0gPSBpbWFnZUJ1ZmZlckZvckVmZmVjdCgpOwogICAgIGlmICghaW1hZ2VC
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIEZFSW1hZ2U6OmNy
ZWF0ZShpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBpbWFnZVJlY3QsIHByZXNlcnZlQXNw
ZWN0UmF0aW8oKSk7CisgICAgcmV0dXJuIEZFSW1hZ2U6OmNyZWF0ZSh7IGltYWdlQnVmZmVyLnJl
bGVhc2VOb25OdWxsKCkgfSwgaW1hZ2VSZWN0LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkpOwogfQog
CiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlz
dEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKaW5kZXggOTU1NjU5NzhjODY1MzU3ZWQzY2Nl
OTIxNjM3NDE4Mjk5ZTc1MmY0My4uNzVkZDY4MDYyMjI3ZGJhMWFhOWQ2ZjM0YWU4NzM3YWU0NzNl
Mzc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVJbWFnZS5jcHAKQEAgLTMxLDEyICszMSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVmPEZFSW1hZ2U+IEZFSW1hZ2U6OmNyZWF0ZShSZWY8SW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbykKLXsKLSAgICBh
dXRvIGltYWdlUmVjdCA9IEZsb2F0UmVjdCB7IHsgfSwgaW1hZ2UtPnNpemUoKSB9OwotICAgIHJl
dHVybiBjcmVhdGUoV1RGTW92ZShpbWFnZSksIGltYWdlUmVjdCwgcHJlc2VydmVBc3BlY3RSYXRp
byk7Ci19Ci0KIFJlZjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGUoU291cmNlSW1hZ2UmJiBzb3Vy
Y2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbykKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGRUltYWdlKFdURk1vdmUoc291cmNlSW1hZ2UpLCBzb3VyY2VJbWFnZVJl
Y3QsIHByZXNlcnZlQXNwZWN0UmF0aW8pKTsKQEAgLTUyLDIyICs0NiwxOCBAQCBGRUltYWdlOjpG
RUltYWdlKFNvdXJjZUltYWdlJiYgc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
SW1hZ2VSZWN0LCBjbwogCiBGbG9hdFJlY3QgRkVJbWFnZTo6Y2FsY3VsYXRlSW1hZ2VSZWN0KGNv
bnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYsIGNvbnN0IEZsb2F0
UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdAogewotICAgIGF1dG8gaW1hZ2VSZWN0ID0g
V1RGOjpzd2l0Y2hPbihtX3NvdXJjZUltYWdlLAotICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFn
ZT4mKSB7Ci0gICAgICAgICAgICBhdXRvIGltYWdlUmVjdCA9IHByaW1pdGl2ZVN1YnJlZ2lvbjsK
LSAgICAgICAgICAgIGF1dG8gc3JjUmVjdCA9IG1fc291cmNlSW1hZ2VSZWN0OwotICAgICAgICAg
ICAgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvLnRyYW5zZm9ybVJlY3QoaW1hZ2VSZWN0LCBzcmNSZWN0
KTsKLSAgICAgICAgICAgIHJldHVybiBpbWFnZVJlY3Q7Ci0gICAgICAgIH0sCi0gICAgICAgIFsm
XSAoY29uc3QgUmVmPEltYWdlQnVmZmVyPiYpIHsKLSAgICAgICAgICAgIHJldHVybiBwcmltaXRp
dmVTdWJyZWdpb247Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXSAoUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIHJldHVybiBGbG9hdFJlY3QoKTsKLSAgICAgICAgfQotICAgICk7Ci0gICAgcmV0dXJuIGZp
bHRlci5jbGlwVG9NYXhFZmZlY3RSZWN0KGltYWdlUmVjdCwgcHJpbWl0aXZlU3VicmVnaW9uKTsK
KyAgICBpZiAobV9zb3VyY2VJbWFnZS5uYXRpdmVJbWFnZUlmRXhpc3RzKCkpIHsKKyAgICAgICAg
YXV0byBpbWFnZVJlY3QgPSBwcmltaXRpdmVTdWJyZWdpb247CisgICAgICAgIGF1dG8gc3JjUmVj
dCA9IG1fc291cmNlSW1hZ2VSZWN0OworICAgICAgICBtX3ByZXNlcnZlQXNwZWN0UmF0aW8udHJh
bnNmb3JtUmVjdChpbWFnZVJlY3QsIHNyY1JlY3QpOworICAgICAgICByZXR1cm4gZmlsdGVyLmNs
aXBUb01heEVmZmVjdFJlY3QoaW1hZ2VSZWN0LCBwcmltaXRpdmVTdWJyZWdpb24pOworICAgIH0K
KworICAgIGlmIChtX3NvdXJjZUltYWdlLmltYWdlQnVmZmVySWZFeGlzdHMoKSkKKyAgICAgICAg
cmV0dXJuIGZpbHRlci5tYXhFZmZlY3RSZWN0KHByaW1pdGl2ZVN1YnJlZ2lvbik7CisKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiB9CiAKIC8vIEZJ
WE1FOiBNb3ZlIHRoZSBjbGFzcyBGRUltYWdlU29mdHdhcmVBcHBsaWVyIHRvIHNlcGFyYXRlIHNv
dXJjZSBhbmQgaGVhZGVyIGZpbGVzLgpAQCAtODcsMzEgKzc3LDMxIEBAIGJvb2wgRkVJbWFnZVNv
ZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlcklt
YWdlVmVjdG9yCiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CisgICAgYXV0byYgc291cmNlSW1hZ2UgPSBtX2VmZmVjdC5zb3VyY2VJbWFnZSgpOwogICAgIGF1
dG8gcHJpbWl0aXZlU3VicmVnaW9uID0gcmVzdWx0LnByaW1pdGl2ZVN1YnJlZ2lvbigpOwogICAg
IGF1dG8mIGNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCi0gICAgV1RGOjpzd2l0
Y2hPbihtX2VmZmVjdC5zb3VyY2VJbWFnZSgpLAotICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFn
ZT4mIGltYWdlKSB7Ci0gICAgICAgICAgICBhdXRvIGltYWdlUmVjdCA9IHByaW1pdGl2ZVN1YnJl
Z2lvbjsKLSAgICAgICAgICAgIGF1dG8gc3JjUmVjdCA9IG1fZWZmZWN0LnNvdXJjZUltYWdlUmVj
dCgpOwotICAgICAgICAgICAgbV9lZmZlY3QucHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9y
bVJlY3QoaW1hZ2VSZWN0LCBzcmNSZWN0KTsKLSAgICAgICAgICAgIGltYWdlUmVjdC5zY2FsZShm
aWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgICAgICAgICBpbWFnZVJlY3QgPSBJbnRSZWN0KGlt
YWdlUmVjdCkgLSByZXN1bHQuYWJzb2x1dGVJbWFnZVJlY3QoKS5sb2NhdGlvbigpOwotICAgICAg
ICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwgc3JjUmVjdCk7Ci0gICAg
ICAgIH0sCi0gICAgICAgIFsmXSAoY29uc3QgUmVmPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIp
IHsKLSAgICAgICAgICAgIGF1dG8gaW1hZ2VSZWN0ID0gcHJpbWl0aXZlU3VicmVnaW9uOwotICAg
ICAgICAgICAgaW1hZ2VSZWN0Lm1vdmVCeShtX2VmZmVjdC5zb3VyY2VJbWFnZVJlY3QoKS5sb2Nh
dGlvbigpKTsKLSAgICAgICAgICAgIGltYWdlUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUo
KSk7Ci0gICAgICAgICAgICBpbWFnZVJlY3QgPSBJbnRSZWN0KGltYWdlUmVjdCkgLSByZXN1bHQu
YWJzb2x1dGVJbWFnZVJlY3QoKS5sb2NhdGlvbigpOwotICAgICAgICAgICAgY29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGltYWdlUmVjdC5sb2NhdGlvbigpKTsKLSAgICAgICAg
fSwKLSAgICAgICAgWyZdIChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIHsKLSAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIHJldHVy
biB0cnVlOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gc291cmNlSW1hZ2UubmF0aXZlSW1h
Z2VJZkV4aXN0cygpKSB7CisgICAgICAgIGF1dG8gaW1hZ2VSZWN0ID0gcHJpbWl0aXZlU3VicmVn
aW9uOworICAgICAgICBhdXRvIHNyY1JlY3QgPSBtX2VmZmVjdC5zb3VyY2VJbWFnZVJlY3QoKTsK
KyAgICAgICAgbV9lZmZlY3QucHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoaW1h
Z2VSZWN0LCBzcmNSZWN0KTsKKyAgICAgICAgaW1hZ2VSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJT
Y2FsZSgpKTsKKyAgICAgICAgaW1hZ2VSZWN0ID0gSW50UmVjdChpbWFnZVJlY3QpIC0gcmVzdWx0
LmFic29sdXRlSW1hZ2VSZWN0KCkubG9jYXRpb24oKTsKKyAgICAgICAgY29udGV4dC5kcmF3TmF0
aXZlSW1hZ2UoKm5hdGl2ZUltYWdlLCBzcmNSZWN0LnNpemUoKSwgaW1hZ2VSZWN0LCBzcmNSZWN0
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGF1dG8gaW1hZ2VCdWZm
ZXIgPSBzb3VyY2VJbWFnZS5pbWFnZUJ1ZmZlcklmRXhpc3RzKCkpIHsKKyAgICAgICAgYXV0byBp
bWFnZVJlY3QgPSBwcmltaXRpdmVTdWJyZWdpb247CisgICAgICAgIGltYWdlUmVjdC5tb3ZlQnko
bV9lZmZlY3Quc291cmNlSW1hZ2VSZWN0KCkubG9jYXRpb24oKSk7CisgICAgICAgIGltYWdlUmVj
dC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CisgICAgICAgIGltYWdlUmVjdCA9IEludFJl
Y3QoaW1hZ2VSZWN0KSAtIHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdCgpLmxvY2F0aW9uKCk7Cisg
ICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgaW1hZ2VSZWN0Lmxv
Y2F0aW9uKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8
RmlsdGVyRWZmZWN0QXBwbGllcj4gRkVJbWFnZTo6Y3JlYXRlU29mdHdhcmVBcHBsaWVyKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2Uu
aAppbmRleCAwOWRjMzMyODUzOWVjZjBhY2QzYWE4MzE4YTRlMzBlZDRjM2Q5NjhjLi40NjU2YmI5
ZDUyYzhlZTk0YzA2ODQ5NDE2ODVmNTJhODNjNjU5NzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNW
R1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5oIgorI2luY2x1ZGUgIlNvdXJjZUltYWdlLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzUsMTMgKzM2LDYgQEAgY2xhc3MgSW1hZ2VCdWZm
ZXI7CiAKIGNsYXNzIEZFSW1hZ2UgZmluYWwgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1Ymxp
YzoKLSAgICB1c2luZyBTb3VyY2VJbWFnZSA9IHN0ZDo6dmFyaWFudDwKLSAgICAgICAgUmVmPElt
YWdlPiwKLSAgICAgICAgUmVmPEltYWdlQnVmZmVyPiwKLSAgICAgICAgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyCi0gICAgPjsKLQotICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlKFJl
ZjxJbWFnZT4mJiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxGRUltYWdlPiBjcmVhdGUoU291cmNlSW1hZ2UmJiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW9WYWx1ZSYpOwogCiAgICAgY29uc3QgU291cmNlSW1hZ2UmIHNvdXJjZUltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2VJbWFnZTsgfQpAQCAtNzUsMTkgKzY5LDcgQEAgcHJpdmF0ZToKIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEZFSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogewotICAgIFdURjo6c3dpdGNoT24obV9zb3VyY2VJbWFnZSwKLSAgICAgICAg
WyZdIChjb25zdCBSZWY8SW1hZ2U+JiBpbWFnZSkgewotICAgICAgICAgICAgaWYgKGF1dG8gbmF0
aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKSkKLSAgICAgICAgICAgICAgICBlbmNvZGVy
IDw8IG5hdGl2ZUltYWdlLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKLSAgICAgICAg
fSwKLSAgICAgICAgWyZdIChjb25zdCBSZWY8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlcikgewot
ICAgICAgICAgICAgZW5jb2RlciA8PCBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKCk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXSAoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgewotICAgICAgICAgICAgZW5jb2Rl
ciA8PCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Ci0gICAgICAgIH0KLSAgICApOwotCisg
ICAgZW5jb2RlciA8PCBtX3NvdXJjZUltYWdlOwogICAgIGVuY29kZXIgPDwgbV9zb3VyY2VJbWFn
ZVJlY3Q7CiAgICAgZW5jb2RlciA8PCBtX3ByZXNlcnZlQXNwZWN0UmF0aW87CiB9CkBAIC05NSw5
ICs3Nyw5IEBAIHZvaWQgRkVJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogc3RkOjpvcHRpb25hbDxSZWY8RkVJbWFnZT4+IEZFSW1h
Z2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBpbWFnZUlkZW50aWZpZXI7Ci0gICAgZGVjb2RlciA+PiBp
bWFnZUlkZW50aWZpZXI7Ci0gICAgaWYgKCFpbWFnZUlkZW50aWZpZXIpCisgICAgc3RkOjpvcHRp
b25hbDxTb3VyY2VJbWFnZT4gc291cmNlSW1hZ2U7CisgICAgZGVjb2RlciA+PiBzb3VyY2VJbWFn
ZTsKKyAgICBpZiAoIXNvdXJjZUltYWdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHNvdXJjZUltYWdlUmVjdDsKQEAgLTExMCw3
ICs5Miw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVmPEZFSW1hZ2U+PiBGRUltYWdlOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICBpZiAoIXByZXNlcnZlQXNwZWN0UmF0aW8pCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gRkVJbWFnZTo6Y3JlYXRlKCppbWFnZUlk
ZW50aWZpZXIsICpzb3VyY2VJbWFnZVJlY3QsICpwcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKKyAgICBy
ZXR1cm4gRkVJbWFnZTo6Y3JlYXRlKFdURk1vdmUoKnNvdXJjZUltYWdlKSwgKnNvdXJjZUltYWdl
UmVjdCwgKnByZXNlcnZlQXNwZWN0UmF0aW8pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNTc3YmJmMzNiMjBmZGY1NzUxYmE3
NTQyNDM1NmE0M2ZjMDczYmMxNC4uZDlhZjU4NDBkZjY4NDNkOWU2MTlkYjY2MmVjOTBlYTQ4MTg1
Nzk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMjM5LDE4ICsyMzksMTgg
QEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZl
cihzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1IKICAgICBmb3IgKGF1dG8mIGVmZmVjdCA6IGZpbHRl
ci0+ZWZmZWN0c09mVHlwZShGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFSW1hZ2UpKSB7CiAgICAgICAg
IGF1dG8mIGZlSW1hZ2UgPSBkb3duY2FzdDxGRUltYWdlPihlZmZlY3QuZ2V0KCkpOwogCi0gICAg
ICAgIGNvbnN0IGF1dG8qIHJlc291cmNlSWRlbnRpZmllciA9IHN0ZDo6Z2V0X2lmPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4oJmZlSW1hZ2Uuc291cmNlSW1hZ2UoKSk7Ci0gICAgICAgIGlm
ICghcmVzb3VyY2VJZGVudGlmaWVyKSB7CisgICAgICAgIGF1dG8gaW1hZ2VJZGVudGlmaWVyID0g
ZmVJbWFnZS5zb3VyY2VJbWFnZSgpLmltYWdlSWRlbnRpZmllcigpOworICAgICAgICBpZiAoIWlt
YWdlSWRlbnRpZmllcikgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYXV0byBuYXRpdmVJbWFn
ZSA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWROYXRpdmVJbWFnZSh7ICpyZXNvdXJjZUlkZW50aWZp
ZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSkpIHsKLSAgICAgICAgICAgIGZlSW1hZ2Uuc2V0
SW1hZ2VTb3VyY2UoUmVmPEltYWdlPiB7IEJpdG1hcEltYWdlOjpjcmVhdGUobmF0aXZlSW1hZ2Up
IH0pOworICAgICAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IHJlc291cmNlQ2FjaGUoKS5jYWNo
ZWROYXRpdmVJbWFnZSh7IGltYWdlSWRlbnRpZmllciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9
KSkgeworICAgICAgICAgICAgZmVJbWFnZS5zZXRJbWFnZVNvdXJjZSh7ICpuYXRpdmVJbWFnZSB9
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGF1dG8g
aW1hZ2VCdWZmZXIgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkSW1hZ2VCdWZmZXIoeyAqcmVzb3Vy
Y2VJZGVudGlmaWVyLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0pKSB7CisgICAgICAgIGlmIChh
dXRvIGltYWdlQnVmZmVyID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZEltYWdlQnVmZmVyKHsgaW1h
Z2VJZGVudGlmaWVyLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0pKSB7CiAgICAgICAgICAgICBm
ZUltYWdlLnNldEltYWdlU291cmNlKHsgKmltYWdlQnVmZmVyIH0pOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5LmNwcAppbmRleCA0YTMxNzJjZmRiMjY4OGMwY2EyMmNiMjczZDU1YmFiYzVlYjViNWU4Li4y
NDMzZmRjYzk3NGFiNjY3OTcxYTI1YWY2NDc4OTM1NjBhMzMxYzk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCkBAIC00MTIsMzQgKzQxMiw1MSBAQCB2
b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkQXBwbHlEZXZpY2VTY2Fs
ZUZhY3RvcihmbG9hdCBzY2FsZUZhYwogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXI6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IpKTsKIH0KIAot
dm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJlc291cmNlVXNlKE5h
dGl2ZUltYWdlJiBpbWFnZSkKK2Jvb2wgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Ojpy
ZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCiB7CiAgICAgaWYgKFVOTElLRUxZ
KCFtX3JlbmRlcmluZ0JhY2tlbmQpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBtX3Jl
bmRlcmluZ0JhY2tlbmQtPnJlY29yZE5hdGl2ZUltYWdlVXNlKGltYWdlKTsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJl
c291cmNlVXNlKEZvbnQmIGZvbnQpCitib29sIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94
eTo6cmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKQogewogICAgIGlm
IChVTkxJS0VMWSghbV9yZW5kZXJpbmdCYWNrZW5kKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5yZWNvcmRGb250VXNlKGZvbnQpOworICAgIGlmICgh
Y2FuRHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5yZWNvcmRJbWFnZUJ1ZmZlclVzZShpbWFnZUJ1ZmZl
cik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5OjpyZWNvcmRSZXNvdXJjZVVzZShjb25zdCBTb3VyY2VJbWFnZSYgaW1hZ2UpCit7Cisg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS5pbWFnZUJ1ZmZlcklmRXhpc3RzKCkpCisg
ICAgICAgIHJldHVybiByZWNvcmRSZXNvdXJjZVVzZSgqaW1hZ2VCdWZmZXIpOworCisgICAgaWYg
KGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUlmRXhpc3RzKCkpCisgICAgICAg
IHJldHVybiByZWNvcmRSZXNvdXJjZVVzZSgqbmF0aXZlSW1hZ2UpOworCisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNv
dXJjZVVzZShJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpCitib29sIFJlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYgZm9udCkKIHsKICAgICBpZiAo
VU5MSUtFTFkoIW1fcmVuZGVyaW5nQmFja2VuZCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIG1fcmVuZGVyaW5nQmFja2VuZC0+cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1hZ2VCdWZmZXIp
OworICAgIG1fcmVuZGVyaW5nQmFja2VuZC0+cmVjb3JkRm9udFVzZShmb250KTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmZsdXNo
Q29udGV4dChHcmFwaGljc0NvbnRleHRGbHVzaElkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCmluZGV4IGMyNzUzN2IyYmM5ZjRm
Y2IxMTdlOTZkNjY2MGMyNzZjMjFlNGNhMWYuLmE0MThlZjJmYjAzZWIzZTIyMWNjZDdmNWE2NDE1
NDgyZDcxYzM0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHku
aApAQCAtMTM4LDkgKzEzOCwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCByZWNvcmRB
cHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBmaW5hbDsKIAotICAgIHZvaWQgcmVjb3JkUmVz
b3VyY2VVc2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmKSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZFJl
c291cmNlVXNlKFdlYkNvcmU6OkZvbnQmKSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZFJlc291cmNl
VXNlKFdlYkNvcmU6OkltYWdlQnVmZmVyJikgZmluYWw7CisgICAgYm9vbCByZWNvcmRSZXNvdXJj
ZVVzZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpIGZpbmFsOworICAgIGJvb2wgcmVjb3JkUmVzb3Vy
Y2VVc2UoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKKyAgICBib29sIHJlY29yZFJlc291
cmNlVXNlKGNvbnN0IFdlYkNvcmU6OlNvdXJjZUltYWdlJikgZmluYWw7CisgICAgYm9vbCByZWNv
cmRSZXNvdXJjZVVzZShXZWJDb3JlOjpGb250JikgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybSYgaW5pdGlhbENUTSkgZmluYWw7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449722</attachid>
            <date>2022-01-21 21:57:40 -0800</date>
            <delta_ts>2022-01-21 23:34:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235467-20220121215739.patch</filename>
            <type>text/plain</type>
            <size>39430</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTY5Mzc4OTliNThmZmZk
ZWQzZjAyODgxOTNlNjQ0ZWJhNWIxMmIyOS4uMDU5ZDFjNjBlN2UzY2VjM2E5MmJhNDc3Njg0NTJl
MTcwMTkyYzVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAxLTIxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
QWRkIHRoZSBjbGFzcyAnU291cmNlSW1hZ2UnIHRvIHJlcHJlc2VudCB2YXJpYW50cyBvZiBpbWFn
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NDY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3Jl
IHRoZSBleGlzdGVuY2Ugb2YgR1BVUHJvY2VzIHdlIHVzZWQgdG8gbWFrZSBzb21lIGRyYXdpbmcg
b24gYW4gCisgICAgICAgIEltYWdlQnVmZmVyLCBnZXQgYSBOYXRpdmVJbWFnZSBmcm9tIHRoZSBJ
bWFnZUJ1ZmZlciBhbmQgdGhlbiB1c2UgdGhpcworICAgICAgICBOYXRpdmVJbWFnZS4gV2l0aCBH
UFVQcm9jZXMsIHRoaXMgd2lsbCByZXF1aXJlIGJvdW5jaW5nIHRoZSBOYXRpdmVJbWFnZSAKKyAg
ICAgICAgYmV0d2VlbiBXZWJQb3JjZXNzIGFuZCBHUFVQcm9jZXNzIGF0IGxlYXN0IHR3byB0aW1l
cy4gVG8gbWFrZSB0aGlzIHNjZW5hcmlvIAorICAgICAgICBlZmZpY2llbnQsIGEgbmV3IGNsYXNz
IGNhbGxlZCBTb3VyY2VJbWFnZScgd2lsbCBiZSBpbnRyb2R1Y2VkLiBUaGUgcHVycG9zZQorICAg
ICAgICBvZiB0aGlzIGNsYXNzIGlzIHRvIHByb3ZpZGUgYSBuZXcgbGV2ZWwgb2YgYWJzdHJhY3Rp
b24gZm9yIHRoZSBpbWFnZXMKKyAgICAgICAgc3VjaCB0aGF0IG5vIGNvbnZlcnNpb24gaXMgbmVl
ZGVkIGJlZm9yZSB0aGUgYWN0dWFsIHVzZS4KKworICAgICAgICBSZXBsYWNlIEZFSW1hZ2U6OlNv
dXJjZUltYWdlIHdpdGggYSBuZXcgY2xhc3MgbmFtZWQgJ1NvdXJjZUltYWdlJy4gTGV0IAorICAg
ICAgICB0aGUgbmV3IGNsYXNzIGhhbmRsZSB0aGUgZW5jb2RpbmcgYW5kIGRlY29kaW5nIGFuZCB0
aGUgY29udmVyc2lvbiBmcm9tCisgICAgICAgIE5hdGl2ZUltYWdlIHRvIEltYWdlQnVmZmVyIGFu
ZCB2aWNlIHZlcnNhLgorCisgICAgICAgIE1ha2UgUmVjb3JkZXI6OnJlY29yZFJlc291cmNlVXNl
KCkgcmV0dXJucyBhIGJvb2xlYW4gd2hpY2ggaW5kaWNhdGVzCisgICAgICAgIHdoZXRoZXIgdGhl
IHJlc291cmNlIGNhbiBiZSBjYWNoZWQgZm9yIGxhdGVyIHJlcGxheSBvciBub3QuCisKKyAgICAg
ICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VJbWFnZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OlNvdXJj
ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpuYXRpdmVJbWFnZUlmRXhp
c3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpuYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXJJZkV4aXN0cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OmltYWdlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJlY29y
ZFJlc291cmNlVXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmZpbHRlckVmZmVj
dCBjb25zdCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6IERlbGV0ZWQu
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpj
YWxjdWxhdGVJbWFnZVJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZVNvZnR3
YXJlQXBwbGllcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmVuY29kZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpkZWNvZGUpOgorCiAyMDIyLTAxLTIxICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBXUFQgdmVyc2lvbiBvZiBj
c3MvY3NzLWNhc2NhZGUvcGFyc2luZy9sYXllci1pbXBvcnQtcGFyc2luZy5odG1sIGNyYXNoZXMg
d2l0aCBudWxscHRyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDliZmJjOTM5NWRjOWVjMTAyMWZkYmNjYmI4MzFhY2Fl
YmQyZTNkNDQuLjE2ZjdmNTY3NmI3MDA0YWJkNmMwOTM0OTJhNTJlYmFlY2QyZjQxMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDEtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fp
ZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBBZGQgdGhlIGNsYXNzICdTb3Vy
Y2VJbWFnZScgdG8gcmVwcmVzZW50IHZhcmlhbnRzIG9mIGltYWdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU0NjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGEgbmV3IHJlY29yZFJlc291
cmNlVXNlKCkgZm9yIHRoZSBTb3VyY2VJbWFnZS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6
OnJlY29yZFJlc291cmNlVXNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaDoKKwogMjAyMi0wMS0yMSAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgaW4tcHJvY2Vz
cyB0ZXN0aW5nIG9mIElQQyBtZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggY2Q1OGNkYjMy
Yzk0ODEwNzFhNDQ2NTk0ODY5YjQwY2E2MTA2OWJhNC4uOTJkNWQ5NjFmYzNhNjNlNjU2MWYwZTUz
NTYzNWQ0ZDY1N2ZlMjAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNTUwLDYgKzE1NTAsNyBA
QCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvU2hvdWxkTG9jYWxpemVBeGlzTmFtZXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Nv
dXJjZUJ1ZmZlclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1RhYlNpemUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCAzZmEwYmJkOTgyNGY5YTg2YTEyZmUzODc5YWJkZTBkM2U0ODU5YWY1Li45YTljZWM0ZWU0
YWFkOGY0NmUwOGU0NDkwNDcyOTRjMjc2NjU1MzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjA3Niw2
ICsyMDc2LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVu
Y2F0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODk5OWEyZWExOTZlODU3OTAyMGIw
MTNiNGY1MDdlNzU2Yzk1YWJjMy4uODkxZjA5N2VjYzBkZWIyMzM5ZjVmMWYxMjNiOTBkYjhhMTBk
ZGY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjMzOSw2ICsyMzM5LDcgQEAKIAkJNzJCQUMzQUUyM0UxRjBCMDAwOEQ3NDFD
IC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFj
a2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyRDczNjQ0Mjc4NDYxQTAwMDM5ODY2MyAvKiBGaWx0ZXJSZXN1bHRzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjExQjVENjI3NjUzNjgyMDA3NkZF
RjggLyogRmlsdGVyUmVzdWx0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcyRjY2N0UxMjYwQzI2QUMwMEVFMzZBRCAvKiBEaWFnbm9zdGljTG9n
Z2luZ0RvbWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzJGNjY3REYyNjBDMjY0NDAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9tYWluLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzJGN0U3
NDYyNzlCOEY3NTAwRDgyRDJEIC8qIFNvdXJjZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkY3RTc0NDI3OUI4Rjc0MDBEODJEMkQgLyogU291
cmNlSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3NTUzQ0ZFODEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUzQ0ZFNjEw
OEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggKi87IH07CiAJCTc1Nzkz
RTg0MEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRTgxMEQwQ0UwQjMwMDdGQzBBQyAvKiBN
ZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJNzU3OTNFQzkwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVz
c2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3NTc5M0VDNzBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAg
LTExMzUwLDYgKzExMzUxLDggQEAKIAkJNzJGMUFEQTMxQTM5MEI5RjAwMDE0RTE4IC8qIEpTRVhU
RnJhZ0RlcHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRVhU
RnJhZ0RlcHRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJGMUFEQTQxQTM5
MEI5RjAwMDE0RTE4IC8qIEpTRVhURnJhZ0RlcHRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTRVhURnJhZ0RlcHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcyRjY2N0RGMjYwQzI2NDQwMEVFMzZBRCAvKiBEaWFnbm9zdGljTG9nZ2luZ0RvbWFpbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEaWFnbm9zdGljTG9nZ2luZ0RvbWFpbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MkY3RTc0MjI3OUI4Rjc0MDBEODJEMkQgLyogU291cmNlSW1hZ2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlSW1hZ2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkY3RTc0NDI3OUI4Rjc0MDBEODJEMkQgLyog
U291cmNlSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlSW1h
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJGQjIzODQyMjQ5N0FENDAwN0U1
QUM3IC8qIFNWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MkZCMjM4NjIyNDk3QUQ1MDA3RTVBQzcgLyogU1ZHVmFsdWVQ
cm9wZXJ0eUFuaW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Zh
bHVlUHJvcGVydHlBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkZC
MjM4NzIyNDk3QjE1MDA3RTVBQzcgLyogU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVmFsdWVQcm9wZXJ0eUxpc3RB
bmltYXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4OTk0LDYgKzI4
OTk3LDggQEAKIAkJCQkxREQxMjdBQzI1NkUzQTg3MDBCMjI3RDcgLyogU291cmNlQnVmZmVyUHJp
dmF0ZS5jcHAgKi8sCiAJCQkJQ0Q2NDFFQjIxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZl
clByaXZhdGUuaCAqLywKIAkJCQlDREM4QjVBQzE4MDRBRTVEMDAxNkU2ODUgLyogU291cmNlQnVm
ZmVyUHJpdmF0ZUNsaWVudC5oICovLAorCQkJCTcyRjdFNzQyMjc5QjhGNzQwMEQ4MkQyRCAvKiBT
b3VyY2VJbWFnZS5jcHAgKi8sCisJCQkJNzJGN0U3NDQyNzlCOEY3NDAwRDgyRDJEIC8qIFNvdXJj
ZUltYWdlLmggKi8sCiAJCQkJN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZl
ci5oICovLAogCQkJCUIyMzU0MEYwMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3Iu
Y3BwICovLAogCQkJCUIyMzU0MEYxMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3Iu
aCAqLywKQEAgLTM3MTc0LDYgKzM3MTc5LDcgQEAKIAkJCQlDREM4QjVBQjE4MDQ3RkYxMDAxNkU2
ODUgLyogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
QzhCNUFEMTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NEE4MUY0MjBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhp
Yy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzJGN0U3NDYyNzlCOEY3NTAwRDgyRDJEIC8qIFNvdXJj
ZUltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDFBMjdBRTEwQzlCRkQ4MDAwMjZBNDIgLyog
U3BhY2VTcGxpdFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjI2Q0RFMEYxMTQwNDI0QzAw
MUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzQ5NTBD
RDI1Mzk0MzYxMDA5OUYxNzEgLyogU3BlZWNoUmVjb2duaXRpb24uaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNWU5NDUwYzRjNzIz
NDI0YjJiZThlOTIxNWFkZmQ5MjFhMmY1MWE0Yi4uOWM3M2NlMmI2ZjgwZjFjMWRmNWM0N2Y3MjYx
NDRkODNiN2I4NDE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
CkBAIC0xNTcsOCArMTU3LDggQEAgcHVibGljOgogICAgIGVudW0gVGlsZVJ1bGUgeyBTdHJldGNo
VGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAogICAgIHZpcnR1YWwg
UmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAg
ICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHBy
ZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9vbCA9IHRydWUpIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBuYXRpdmVJbWFnZSgpOyB9CisgICAgdmlydHVh
bCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoYm9vbCA9IHRydWUpIHsgcmV0dXJuIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
IH0KICAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VPZlNpemUoY29u
c3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIEFjY2Vzc29ycyBmb3Ig
bmF0aXZlIGltYWdlIGZvcm1hdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Tb3VyY2VJbWFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODkzOWJhMDQ2MWE1ZGNmNmUxNWFkMmIz
NmVhMjAxMjUyNjI2MmI0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmNwcApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJTb3VyY2VJbWFnZS5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU291cmNlSW1hZ2U6OlNvdXJjZUltYWdlKEltYWdl
VmFyaWFudCYmIGltYWdlVmFyaWFudCkKKyAgICA6IG1faW1hZ2VWYXJpYW50KFdURk1vdmUoaW1h
Z2VWYXJpYW50KSkKK3sKK30KKworTmF0aXZlSW1hZ2UqIFNvdXJjZUltYWdlOjpuYXRpdmVJbWFn
ZUlmRXhpc3RzKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogbmF0aXZlSW1hZ2UgPSBzdGQ6Omdl
dF9pZjxSZWY8TmF0aXZlSW1hZ2U+PigmbV9pbWFnZVZhcmlhbnQpKQorICAgICAgICByZXR1cm4g
bmF0aXZlSW1hZ2UtPnB0cigpOworICAgIHJldHVybiBudWxscHRyOworfQorCitOYXRpdmVJbWFn
ZSogU291cmNlSW1hZ2U6Om5hdGl2ZUltYWdlKCkKK3sKKyAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPEltYWdlQnVmZmVyPj4obV9pbWFnZVZhcmlhbnQpKQorICAgICAgICByZXR1
cm4gbmF0aXZlSW1hZ2VJZkV4aXN0cygpOworCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHN0ZDo6
Z2V0PFJlZjxJbWFnZUJ1ZmZlcj4+KG1faW1hZ2VWYXJpYW50KTsKKyAgICBhdXRvIG5hdGl2ZUlt
YWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZl
cikpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgbV9pbWFnZVZhcmlhbnQgPSBuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJl
dHVybiBuYXRpdmVJbWFnZUlmRXhpc3RzKCk7Cit9CisKK0ltYWdlQnVmZmVyKiBTb3VyY2VJbWFn
ZTo6aW1hZ2VCdWZmZXJJZkV4aXN0cygpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGltYWdlQnVm
ZmVyID0gc3RkOjpnZXRfaWY8UmVmPEltYWdlQnVmZmVyPj4oJm1faW1hZ2VWYXJpYW50KSkKKyAg
ICAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5wdHIoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworSW1hZ2VCdWZmZXIqIFNvdXJjZUltYWdlOjppbWFnZUJ1ZmZlcigpCit7CisgICAgaWYgKCFz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxOYXRpdmVJbWFnZT4+KG1faW1hZ2VWYXJpYW50KSkK
KyAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVySWZFeGlzdHMoKTsKKworICAgIGF1dG8gbmF0aXZl
SW1hZ2UgPSBzdGQ6OmdldDxSZWY8TmF0aXZlSW1hZ2U+PihtX2ltYWdlVmFyaWFudCk7CisgICAg
YXV0byByZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBuYXRpdmVJbWFnZS0+c2l6ZSgpIH07CisKKyAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShuYXRpdmVJbWFnZS0+c2l6
ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJh
d05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBuYXRpdmVJbWFnZS0+c2l6ZSgpLCByZWN0LCByZWN0
KTsKKworICAgIG1faW1hZ2VWYXJpYW50ID0gaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKTsK
KyAgICByZXR1cm4gaW1hZ2VCdWZmZXJJZkV4aXN0cygpOworfQorCitSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgU291cmNlSW1hZ2U6OmltYWdlSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24obV9pbWFnZVZhcmlhbnQsCisgICAgICAgIFsmXSAoY29uc3Qg
UmVmPE5hdGl2ZUltYWdlPiYgbmF0aXZlSW1hZ2UpIHsKKyAgICAgICAgICAgIHJldHVybiBuYXRp
dmVJbWFnZS0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgICAgIH0sCisgICAg
ICAgIFsmXSAoY29uc3QgUmVmPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIpIHsKKyAgICAgICAg
ICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7Cisg
ICAgICAgIH0sCisgICAgICAgIFsmXSAoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikgeworICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcjsKKyAgICAgICAgfQorICAgICk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Nv
dXJjZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFn
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIwZDNkODBkNDM2MTU4NGQ4ZjRmNGVjY2U4MzBjNTQ5YTljYzgyOTAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VJbWFnZS5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5o
IgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV0VCQ09SRV9FWFBP
UlQgU291cmNlSW1hZ2UgeworcHVibGljOgorICAgIHVzaW5nIEltYWdlVmFyaWFudCA9IHN0ZDo6
dmFyaWFudDwKKyAgICAgICAgUmVmPE5hdGl2ZUltYWdlPiwKKyAgICAgICAgUmVmPEltYWdlQnVm
ZmVyPiwKKyAgICAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyCisgICAgPjsKKworICAg
IFNvdXJjZUltYWdlKEltYWdlVmFyaWFudCYmKTsKKworICAgIE5hdGl2ZUltYWdlKiBuYXRpdmVJ
bWFnZUlmRXhpc3RzKCkgY29uc3Q7CisgICAgTmF0aXZlSW1hZ2UqIG5hdGl2ZUltYWdlKCk7CisK
KyAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXJJZkV4aXN0cygpIGNvbnN0OworICAgIEltYWdl
QnVmZmVyKiBpbWFnZUJ1ZmZlcigpOworCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlSWRlbnRpZmllcigpIGNvbnN0OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiBkZWNvZGUoRGVjb2RlciYpOworCitw
cml2YXRlOgorICAgIEltYWdlVmFyaWFudCBtX2ltYWdlVmFyaWFudDsKK307CisKK3RlbXBsYXRl
PGNsYXNzIEVuY29kZXI+Cit2b2lkIFNvdXJjZUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGltYWdlSWRlbnRpZmllcigpOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4gU291cmNlSW1h
Z2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBpbWFnZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBp
bWFnZUlkZW50aWZpZXI7CisgICAgaWYgKCFpbWFnZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gU291cmNlSW1hZ2UoKmltYWdlSWRlbnRpZmll
cik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcAppbmRleCBlMDEwYzlkMGVmNzNjMTA2NGQxMWUzMjlkNWIwYmIxZjBl
NDRjMWMyLi5mNTA4OGQ2OTczMGUyOWY3MGRiODc0YzBjYjZhODhlMmEyODMyZDgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xNTAsMzMgKzE1MCw5IEBA
IHZvaWQgUmVjb3JkZXI6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBzb3Vy
Y2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0CiB7CiAgICAgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtSWZO
ZWNlc3NhcnkoKTsKIAotICAgIGlmIChzb3VyY2VJbWFnZSAmJiAhY2FuRHJhd0ltYWdlQnVmZmVy
KCpzb3VyY2VJbWFnZSkpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3RmlsdGVyZWRJ
bWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0ZXIsIHJlc3VsdHMp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgZm9yIChhdXRvJiBlZmZlY3QgOiBmaWx0
ZXIuZWZmZWN0c09mVHlwZShGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFSW1hZ2UpKSB7Ci0gICAgICAg
IGJvb2wgaXNSZWNvcmRlZCA9IFdURjo6c3dpdGNoT24oZG93bmNhc3Q8RkVJbWFnZT4oZWZmZWN0
LmdldCgpKS5zb3VyY2VJbWFnZSgpLAotICAgICAgICAgICAgWyZdIChjb25zdCBSZWY8SW1hZ2U+
JiBpbWFnZSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2Ut
Pm5hdGl2ZUltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2Uo
Km5hdGl2ZUltYWdlKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGNhbkRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcikpIHsK
LSAgICAgICAgICAgICAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2UoaW1hZ2VCdWZmZXIpOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAo
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgaWYgKCFpc1JlY29yZGVk
KSB7CisgICAgICAgIGF1dG8mIGZlSW1hZ2UgPSBkb3duY2FzdDxGRUltYWdlPihlZmZlY3QuZ2V0
KCkpOworICAgICAgICBpZiAoIXJlY29yZFJlc291cmNlVXNlKGZlSW1hZ2Uuc291cmNlSW1hZ2Uo
KSkpIHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZm
ZXIoc291cmNlSW1hZ2UsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyLCByZXN1bHRzKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTg3LDcgKzE2MywxMSBAQCB2b2lkIFJlY29y
ZGVyOjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVjb3JkUmVzb3Vy
Y2VVc2UoKnNvdXJjZUltYWdlKTsKKyAgICBpZiAoIXJlY29yZFJlc291cmNlVXNlKCpzb3VyY2VJ
bWFnZSkpIHsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZl
cihzb3VyY2VJbWFnZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0ZXIsIHJlc3VsdHMpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgcmVjb3JkRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc291
cmNlSW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBzb3VyY2VJbWFnZVJlY3Qs
IGZpbHRlcik7CiB9CiAKQEAgLTIwNiwxMiArMTg2LDEyIEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdH
bHlwaHNBbmRDYWNoZUZvbnQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCoKIHZvaWQgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZm
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXBwZW5kU3RhdGVD
aGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKLSAgICBpZiAoIWNhbkRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlcikpIHsKKworICAgIGlmICghcmVjb3JkUmVzb3VyY2VVc2UoaW1hZ2VCdWZmZXIpKSB7
CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICByZWNvcmRSZXNvdXJjZVVzZShpbWFnZUJ1ZmZlcik7CiAgICAgcmVjb3JkRHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oCmluZGV4IDdjZWY5ZTZiMDE3YmM5NTFjOTM1ZDBmODczMGFmYjYzYWYwYTJhMjUuLjliMmIw
YjkzNzkwMWQ4NjUxMTYxZWI4MmI5MGY0ZDA1Yjk0MjVlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBGb250OwogY2xhc3Mg
R2x5cGhCdWZmZXI7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIFBpeGVsQnVmZmVyOworY2xhc3MgU291
cmNlSW1hZ2U7CiAKIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZTsKIHN0cnVjdCBJbWFnZVBh
aW50aW5nT3B0aW9uczsKQEAgLTEzOCw5ICsxMzksMTAgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAg
ICAgdmlydHVhbCB2b2lkIHJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpID0gMDsK
IAotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImKSA9IDA7CisgICAgdmlydHVh
bCBib29sIHJlY29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCByZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgcmVjb3JkUmVzb3VyY2VVc2UoY29uc3QgU291cmNlSW1hZ2UmKSA9IDA7CisgICAgdmlydHVh
bCBib29sIHJlY29yZFJlc291cmNlVXNlKEZvbnQmKSA9IDA7CiAKICAgICAvLyBGSVhNRTogTWF5
YmUgcmVtb3ZlIHRoaXM/CiAgICAgdmlydHVhbCBib29sIGNhbkRyYXdJbWFnZUJ1ZmZlcihjb25z
dCBJbWFnZUJ1ZmZlciYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlckltcGwuY3BwCmluZGV4IGZhMWQ2MmVkNTQ5MGU2OTdjOWI2Yzc2NGE0MGZlZDli
OWYxYmRjOWQuLmZlNTE1NThkNzgyMzUzNDE5YTY0YzlhN2Y5Yjg5NzkwM2FhNmY5YTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU291cmNlSW1hZ2UuaCIKICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0u
aD4KIApAQCAtNDE4LDI1ICs0MTksNDEgQEAgdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZEFwcGx5
RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpCiAgICAgYXBwZW5kPEFwcGx5RGV2
aWNlU2NhbGVGYWN0b3I+KHNjYWxlRmFjdG9yKTsKIH0KIAotdm9pZCBSZWNvcmRlckltcGw6OnJl
Y29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJiBpbWFnZSkKK2Jvb2wgUmVjb3JkZXJJbXBsOjpy
ZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UpCiB7CiAgICAgaWYgKG1f
ZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZE5hdGl2ZUltYWdlVXNlKGltYWdl
KTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgICAgICBt
X2RlbGVnYXRlLT5yZWNvcmROYXRpdmVJbWFnZVVzZShuYXRpdmVJbWFnZSk7CisgICAgbV9kaXNw
bGF5TGlzdC5jYWNoZU5hdGl2ZUltYWdlKG5hdGl2ZUltYWdlKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKEZvbnQmIGZvbnQpCiti
b29sIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImIGltYWdlQnVm
ZmVyKQogeworICAgIGlmICghY2FuRHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRl
LT5yZWNvcmRGb250VXNlKGZvbnQpOwotICAgIG1fZGlzcGxheUxpc3QuY2FjaGVGb250KGZvbnQp
OworICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRJbWFnZUJ1ZmZlclVzZShpbWFnZUJ1ZmZlcik7
CisgICAgbV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKElt
YWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKK2Jvb2wgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJj
ZVVzZShjb25zdCBTb3VyY2VJbWFnZSYgaW1hZ2UpCit7CisgICAgaWYgKGF1dG8gaW1hZ2VCdWZm
ZXIgPSBpbWFnZS5pbWFnZUJ1ZmZlcklmRXhpc3RzKCkpCisgICAgICAgIHJldHVybiByZWNvcmRS
ZXNvdXJjZVVzZSgqaW1hZ2VCdWZmZXIpOworCisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBp
bWFnZS5uYXRpdmVJbWFnZUlmRXhpc3RzKCkpCisgICAgICAgIHJldHVybiByZWNvcmRSZXNvdXJj
ZVVzZSgqbmF0aXZlSW1hZ2UpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUmVjb3Jk
ZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShGb250JiBmb250KQogewogICAgIGlmIChtX2RlbGVn
YXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmRJbWFnZUJ1ZmZlclVzZShpbWFnZUJ1ZmZl
cik7Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyKTsKKyAg
ICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkRm9udFVzZShmb250KTsKKyAgICBtX2Rpc3BsYXlMaXN0
LmNhY2hlRm9udChmb250KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogLy8gRklYTUU6IHNoYXJl
IHdpdGggU2hhZG93RGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlcklt
cGwuaAppbmRleCBkNGQwYjc1N2VkZDI5Y2RhZjBkNTYzY2U2ZWNjZTBiNWUxNDVmNDMzLi5lZDQ3
MTBiM2Q2OTAzYmVkNjI2OWNkYmM2YjI1N2Y1N2ZmZjU4OGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaApAQCAtMTM2LDkgKzEzNiwxMCBAQCBwcml2YXRl
OgogI2VuZGlmCiAgICAgdm9pZCByZWNvcmRBcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBm
aW5hbDsKIAotICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoTmF0aXZlSW1hZ2UmKSBmaW5hbDsK
LSAgICB2b2lkIHJlY29yZFJlc291cmNlVXNlKEZvbnQmKSBmaW5hbDsKLSAgICB2b2lkIHJlY29y
ZFJlc291cmNlVXNlKEltYWdlQnVmZmVyJikgZmluYWw7CisgICAgYm9vbCByZWNvcmRSZXNvdXJj
ZVVzZShOYXRpdmVJbWFnZSYpIGZpbmFsOworICAgIGJvb2wgcmVjb3JkUmVzb3VyY2VVc2UoSW1h
Z2VCdWZmZXImKSBmaW5hbDsKKyAgICBib29sIHJlY29yZFJlc291cmNlVXNlKGNvbnN0IFNvdXJj
ZUltYWdlJikgZmluYWw7CisgICAgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgZmluYWw7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVOZXN0ZWRDb250
ZXh0KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
aW5pdGlhbENUTSkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQu
Y3BwCmluZGV4IGE0M2JlNDc4ZmVlOGE0NDgzMmFhNjM2OWMyZDY2ZWI2MWNmMGMyNDcuLjZkODg5
YWQxZGE1NWE1NTMyZGNjZmNhYTc0OTA2ZThmMzE1NDI3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMjEwLDE0ICsyMTAsMjQgQEAgc3RkOjp0dXBsZTxS
ZWZQdHI8SW1hZ2VCdWZmZXI+LCBGbG9hdFJlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjppbWFnZUJ1
ZmZlckZvckVmZmUKIAogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6OmZp
bHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVj
dG9yJikgY29uc3QKIHsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgcmV0dXJuIEZF
SW1hZ2U6OmNyZWF0ZShSZWYgeyAqbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5k
ZXJlcigpKSB9LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkpOworICAgIGlmIChtX2NhY2hlZEltYWdl
KSB7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBtX2NhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVy
KHJlbmRlcmVyKCkpOworICAgICAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pc051bGwoKSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBp
bWFnZS0+cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAg
ICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgYXV0byBpbWFnZVJlY3QgPSBGbG9hdFJlY3QgeyB7IH0sIGltYWdlLT5zaXplKCkgfTsKKyAg
ICAgICAgcmV0dXJuIEZFSW1hZ2U6OmNyZWF0ZSh7IG5hdGl2ZUltYWdlLnJlbGVhc2VOb25OdWxs
KCkgfSwgaW1hZ2VSZWN0LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkpOworICAgIH0KIAogICAgIGF1
dG8gW2ltYWdlQnVmZmVyLCBpbWFnZVJlY3RdID0gaW1hZ2VCdWZmZXJGb3JFZmZlY3QoKTsKICAg
ICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBGRUltYWdlOjpjcmVhdGUoaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSwgaW1hZ2VSZWN0
LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkpOworICAgIHJldHVybiBGRUltYWdlOjpjcmVhdGUoeyBp
bWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpIH0sIGltYWdlUmVjdCwgcHJlc2VydmVBc3BlY3RS
YXRpbygpKTsKIH0KIAogdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRy
aWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA3NDA4MGNlMzBlNDBkMjFkZDkzMDBmNjYyMGQ2
MTUzYjdkYzdjMzVlLi5mNDE0MDEyMzM4OTE5MDM4N2FkMjc2OTZhNTA1NDQ1NGRmODkwMjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTIwOCwxMSArMjA4
LDYgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVySW50ZXJuYWwo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb24KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1S
ZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
Ci17Ci0gICAgcmV0dXJuIG5hdGl2ZUltYWdlKCk7Ci19Ci0KIFJlZlB0cjxOYXRpdmVJbWFnZT4g
U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKCkKIHsKICAgICByZXR1cm4gbmF0aXZlSW1hZ2Uoc2l6ZSgp
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IDZiM2Iy
Mjk1MDI2ODEwYWE1Zjg0OTQ0ZTQ5OTQxNDY5ZDcxNjk4YzMuLjZjZGJhMWMzMDg4MjBhNTFkNTYx
MDFhN2Q1MzRiNDQzZTFjNzUzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5oCkBAIC04Niw3ICs4Niw2IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25U
b0JlT3BhcXVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBmaW5hbDsKICAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlKCkgZmluYWw7CiAgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBuYXRpdmVJbWFnZShjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2VSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCmluZGV4IDk1NTY1
OTc4Yzg2NTM1N2VkM2NjZTkyMTYzNzQxODI5OWU3NTJmNDMuLjc1ZGQ2ODA2MjIyN2RiYTFhYTlk
NmYzNGFlODczN2FlNDczZTM3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCkBAIC0zMSwxMiArMzEsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGUoUmVmPEltYWdlPiYm
IGltYWdlLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0
UmF0aW8pCi17Ci0gICAgYXV0byBpbWFnZVJlY3QgPSBGbG9hdFJlY3QgeyB7IH0sIGltYWdlLT5z
aXplKCkgfTsKLSAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBpbWFnZVJlY3QsIHBy
ZXNlcnZlQXNwZWN0UmF0aW8pOwotfQotCiBSZWY8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlKFNv
dXJjZUltYWdlJiYgc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0
LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8p
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVJbWFnZShXVEZNb3ZlKHNvdXJjZUltYWdl
KSwgc291cmNlSW1hZ2VSZWN0LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSk7CkBAIC01MiwyMiArNDYs
MTggQEAgRkVJbWFnZTo6RkVJbWFnZShTb3VyY2VJbWFnZSYmIHNvdXJjZUltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY28KIAogRmxvYXRSZWN0IEZFSW1hZ2U6OmNhbGN1
bGF0ZUltYWdlUmVjdChjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0
b3ImLCBjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikgY29uc3QKIHsKLSAgICBh
dXRvIGltYWdlUmVjdCA9IFdURjo6c3dpdGNoT24obV9zb3VyY2VJbWFnZSwKLSAgICAgICAgWyZd
IChjb25zdCBSZWY8SW1hZ2U+JikgewotICAgICAgICAgICAgYXV0byBpbWFnZVJlY3QgPSBwcmlt
aXRpdmVTdWJyZWdpb247Ci0gICAgICAgICAgICBhdXRvIHNyY1JlY3QgPSBtX3NvdXJjZUltYWdl
UmVjdDsKLSAgICAgICAgICAgIG1fcHJlc2VydmVBc3BlY3RSYXRpby50cmFuc2Zvcm1SZWN0KGlt
YWdlUmVjdCwgc3JjUmVjdCk7Ci0gICAgICAgICAgICByZXR1cm4gaW1hZ2VSZWN0OwotICAgICAg
ICB9LAotICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZlcj4mKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gcHJpbWl0aXZlU3VicmVnaW9uOwotICAgICAgICB9LAotICAgICAgICBbJl0gKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7Ci0gICAgICAgIH0KLSAgICAp
OwotICAgIHJldHVybiBmaWx0ZXIuY2xpcFRvTWF4RWZmZWN0UmVjdChpbWFnZVJlY3QsIHByaW1p
dGl2ZVN1YnJlZ2lvbik7CisgICAgaWYgKG1fc291cmNlSW1hZ2UubmF0aXZlSW1hZ2VJZkV4aXN0
cygpKSB7CisgICAgICAgIGF1dG8gaW1hZ2VSZWN0ID0gcHJpbWl0aXZlU3VicmVnaW9uOworICAg
ICAgICBhdXRvIHNyY1JlY3QgPSBtX3NvdXJjZUltYWdlUmVjdDsKKyAgICAgICAgbV9wcmVzZXJ2
ZUFzcGVjdFJhdGlvLnRyYW5zZm9ybVJlY3QoaW1hZ2VSZWN0LCBzcmNSZWN0KTsKKyAgICAgICAg
cmV0dXJuIGZpbHRlci5jbGlwVG9NYXhFZmZlY3RSZWN0KGltYWdlUmVjdCwgcHJpbWl0aXZlU3Vi
cmVnaW9uKTsKKyAgICB9CisKKyAgICBpZiAobV9zb3VyY2VJbWFnZS5pbWFnZUJ1ZmZlcklmRXhp
c3RzKCkpCisgICAgICAgIHJldHVybiBmaWx0ZXIubWF4RWZmZWN0UmVjdChwcmltaXRpdmVTdWJy
ZWdpb24pOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEZsb2F0UmVj
dCgpOwogfQogCiAvLyBGSVhNRTogTW92ZSB0aGUgY2xhc3MgRkVJbWFnZVNvZnR3YXJlQXBwbGll
ciB0byBzZXBhcmF0ZSBzb3VyY2UgYW5kIGhlYWRlciBmaWxlcy4KQEAgLTg3LDMxICs3NywzMSBA
QCBib29sIEZFSW1hZ2VTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVy
LCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvcgogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgIGF1dG8mIHNvdXJjZUltYWdlID0gbV9lZmZlY3Quc291cmNl
SW1hZ2UoKTsKICAgICBhdXRvIHByaW1pdGl2ZVN1YnJlZ2lvbiA9IHJlc3VsdC5wcmltaXRpdmVT
dWJyZWdpb24oKTsKICAgICBhdXRvJiBjb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsK
IAotICAgIFdURjo6c3dpdGNoT24obV9lZmZlY3Quc291cmNlSW1hZ2UoKSwKLSAgICAgICAgWyZd
IChjb25zdCBSZWY8SW1hZ2U+JiBpbWFnZSkgewotICAgICAgICAgICAgYXV0byBpbWFnZVJlY3Qg
PSBwcmltaXRpdmVTdWJyZWdpb247Ci0gICAgICAgICAgICBhdXRvIHNyY1JlY3QgPSBtX2VmZmVj
dC5zb3VyY2VJbWFnZVJlY3QoKTsKLSAgICAgICAgICAgIG1fZWZmZWN0LnByZXNlcnZlQXNwZWN0
UmF0aW8oKS50cmFuc2Zvcm1SZWN0KGltYWdlUmVjdCwgc3JjUmVjdCk7Ci0gICAgICAgICAgICBp
bWFnZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgICAgICAgICAgaW1hZ2VS
ZWN0ID0gSW50UmVjdChpbWFnZVJlY3QpIC0gcmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0KCkubG9j
YXRpb24oKTsKLSAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBpbWFnZVJlY3Qs
IHNyY1JlY3QpOwotICAgICAgICB9LAotICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZl
cj4mIGltYWdlQnVmZmVyKSB7Ci0gICAgICAgICAgICBhdXRvIGltYWdlUmVjdCA9IHByaW1pdGl2
ZVN1YnJlZ2lvbjsKLSAgICAgICAgICAgIGltYWdlUmVjdC5tb3ZlQnkobV9lZmZlY3Quc291cmNl
SW1hZ2VSZWN0KCkubG9jYXRpb24oKSk7Ci0gICAgICAgICAgICBpbWFnZVJlY3Quc2NhbGUoZmls
dGVyLmZpbHRlclNjYWxlKCkpOwotICAgICAgICAgICAgaW1hZ2VSZWN0ID0gSW50UmVjdChpbWFn
ZVJlY3QpIC0gcmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0KCkubG9jYXRpb24oKTsKLSAgICAgICAg
ICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBpbWFnZVJlY3QubG9jYXRp
b24oKSk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXSAoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAg
ICk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IHNvdXJj
ZUltYWdlLm5hdGl2ZUltYWdlSWZFeGlzdHMoKSkgeworICAgICAgICBhdXRvIGltYWdlUmVjdCA9
IHByaW1pdGl2ZVN1YnJlZ2lvbjsKKyAgICAgICAgYXV0byBzcmNSZWN0ID0gbV9lZmZlY3Quc291
cmNlSW1hZ2VSZWN0KCk7CisgICAgICAgIG1fZWZmZWN0LnByZXNlcnZlQXNwZWN0UmF0aW8oKS50
cmFuc2Zvcm1SZWN0KGltYWdlUmVjdCwgc3JjUmVjdCk7CisgICAgICAgIGltYWdlUmVjdC5zY2Fs
ZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CisgICAgICAgIGltYWdlUmVjdCA9IEludFJlY3QoaW1h
Z2VSZWN0KSAtIHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdCgpLmxvY2F0aW9uKCk7CisgICAgICAg
IGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCpuYXRpdmVJbWFnZSwgc3JjUmVjdC5zaXplKCksIGlt
YWdlUmVjdCwgc3JjUmVjdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChhdXRvIGltYWdlQnVmZmVyID0gc291cmNlSW1hZ2UuaW1hZ2VCdWZmZXJJZkV4aXN0cygpKSB7
CisgICAgICAgIGF1dG8gaW1hZ2VSZWN0ID0gcHJpbWl0aXZlU3VicmVnaW9uOworICAgICAgICBp
bWFnZVJlY3QubW92ZUJ5KG1fZWZmZWN0LnNvdXJjZUltYWdlUmVjdCgpLmxvY2F0aW9uKCkpOwor
ICAgICAgICBpbWFnZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOworICAgICAgICBp
bWFnZVJlY3QgPSBJbnRSZWN0KGltYWdlUmVjdCkgLSByZXN1bHQuYWJzb2x1dGVJbWFnZVJlY3Qo
KS5sb2NhdGlvbigpOworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZm
ZXIsIGltYWdlUmVjdC5sb2NhdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAog
c3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IEZFSW1hZ2U6OmNyZWF0ZVNvZnR3
YXJlQXBwbGllcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRUltYWdlLmgKaW5kZXggMDlkYzMzMjg1MzllY2YwYWNkM2FhODMxOGE0ZTMwZWQ0
YzNkOTY4Yy4uNDY1NmJiOWQ1MmM4ZWU5NGMwNjg0OTQxNjg1ZjUyYTgzYzY1OTczMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaApAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKICNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuaCIKKyNpbmNsdWRlICJT
b3VyY2VJbWFnZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1LDEzICszNiw2IEBA
IGNsYXNzIEltYWdlQnVmZmVyOwogCiBjbGFzcyBGRUltYWdlIGZpbmFsIDogcHVibGljIEZpbHRl
ckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgU291cmNlSW1hZ2UgPSBzdGQ6OnZhcmlhbnQ8
Ci0gICAgICAgIFJlZjxJbWFnZT4sCi0gICAgICAgIFJlZjxJbWFnZUJ1ZmZlcj4sCi0gICAgICAg
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcgotICAgID47Ci0KLSAgICBzdGF0aWMgUmVmPEZF
SW1hZ2U+IGNyZWF0ZShSZWY8SW1hZ2U+JiYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9W
YWx1ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlKFNv
dXJjZUltYWdlJiYsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmKTsKIAogICAgIGNvbnN0IFNvdXJjZUltYWdlJiBzb3Vy
Y2VJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSW1hZ2U7IH0KQEAgLTc1LDE5ICs2OSw3
IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBGRUltYWdlOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBXVEY6OnN3aXRjaE9uKG1fc291cmNl
SW1hZ2UsCi0gICAgICAgIFsmXSAoY29uc3QgUmVmPEltYWdlPiYgaW1hZ2UpIHsKLSAgICAgICAg
ICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCkpCi0gICAgICAg
ICAgICAgICAgZW5jb2RlciA8PCBuYXRpdmVJbWFnZS0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKCk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXSAoY29uc3QgUmVmPEltYWdlQnVmZmVyPiYg
aW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgaW1hZ2VCdWZmZXItPnJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwotICAgICAgICB9LAotICAgICAgICBbJl0gKFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIHsKLSAg
ICAgICAgICAgIGVuY29kZXIgPDwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwotICAgICAg
ICB9Ci0gICAgKTsKLQorICAgIGVuY29kZXIgPDwgbV9zb3VyY2VJbWFnZTsKICAgICBlbmNvZGVy
IDw8IG1fc291cmNlSW1hZ2VSZWN0OwogICAgIGVuY29kZXIgPDwgbV9wcmVzZXJ2ZUFzcGVjdFJh
dGlvOwogfQpAQCAtOTUsOSArNzcsOSBAQCB2b2lkIEZFSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIHN0ZDo6b3B0aW9uYWw8UmVm
PEZFSW1hZ2U+PiBGRUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBzdGQ6
Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaW1hZ2VJZGVudGlmaWVyOwot
ICAgIGRlY29kZXIgPj4gaW1hZ2VJZGVudGlmaWVyOwotICAgIGlmICghaW1hZ2VJZGVudGlmaWVy
KQorICAgIHN0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+IHNvdXJjZUltYWdlOworICAgIGRlY29k
ZXIgPj4gc291cmNlSW1hZ2U7CisgICAgaWYgKCFzb3VyY2VJbWFnZSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBzb3VyY2VJbWFn
ZVJlY3Q7CkBAIC0xMTAsNyArOTIsNyBAQCBzdGQ6Om9wdGlvbmFsPFJlZjxGRUltYWdlPj4gRkVJ
bWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFwcmVzZXJ2ZUFzcGVjdFJh
dGlvKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIEZFSW1hZ2U6
OmNyZWF0ZSgqaW1hZ2VJZGVudGlmaWVyLCAqc291cmNlSW1hZ2VSZWN0LCAqcHJlc2VydmVBc3Bl
Y3RSYXRpbyk7CisgICAgcmV0dXJuIEZFSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKCpzb3VyY2VJbWFn
ZSksICpzb3VyY2VJbWFnZVJlY3QsICpwcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDU3N2Ji
ZjMzYjIwZmRmNTc1MWJhNzU0MjQzNTZhNDNmYzA3M2JjMTQuLmQ5YWY1ODQwZGY2ODQzZDllNjE5
ZGI2NjJlYzkwZWE0ODE4NTc5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAg
LTIzOSwxOCArMjM5LDE4IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd0Zp
bHRlcmVkSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSCiAgICAgZm9yIChhdXRv
JiBlZmZlY3QgOiBmaWx0ZXItPmVmZmVjdHNPZlR5cGUoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUlt
YWdlKSkgewogICAgICAgICBhdXRvJiBmZUltYWdlID0gZG93bmNhc3Q8RkVJbWFnZT4oZWZmZWN0
LmdldCgpKTsKIAotICAgICAgICBjb25zdCBhdXRvKiByZXNvdXJjZUlkZW50aWZpZXIgPSBzdGQ6
OmdldF9pZjxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+KCZmZUltYWdlLnNvdXJjZUltYWdl
KCkpOwotICAgICAgICBpZiAoIXJlc291cmNlSWRlbnRpZmllcikgeworICAgICAgICBhdXRvIGlt
YWdlSWRlbnRpZmllciA9IGZlSW1hZ2Uuc291cmNlSW1hZ2UoKS5pbWFnZUlkZW50aWZpZXIoKTsK
KyAgICAgICAgaWYgKCFpbWFnZUlkZW50aWZpZXIpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KGF1dG8gbmF0aXZlSW1hZ2UgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkTmF0aXZlSW1hZ2UoeyAq
cmVzb3VyY2VJZGVudGlmaWVyLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0pKSB7Ci0gICAgICAg
ICAgICBmZUltYWdlLnNldEltYWdlU291cmNlKFJlZjxJbWFnZT4geyBCaXRtYXBJbWFnZTo6Y3Jl
YXRlKG5hdGl2ZUltYWdlKSB9KTsKKyAgICAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSByZXNv
dXJjZUNhY2hlKCkuY2FjaGVkTmF0aXZlSW1hZ2UoeyBpbWFnZUlkZW50aWZpZXIsIG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXIgfSkpIHsKKyAgICAgICAgICAgIGZlSW1hZ2Uuc2V0SW1hZ2VTb3VyY2Uo
eyAqbmF0aXZlSW1hZ2UgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZEltYWdl
QnVmZmVyKHsgKnJlc291cmNlSWRlbnRpZmllciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KSkg
eworICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWRJ
bWFnZUJ1ZmZlcih7IGltYWdlSWRlbnRpZmllciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KSkg
ewogICAgICAgICAgICAgZmVJbWFnZS5zZXRJbWFnZVNvdXJjZSh7ICppbWFnZUJ1ZmZlciB9KTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKaW5kZXggNGEzMTcyY2ZkYjI2ODhjMGNhMjJjYjI3M2Q1
NWJhYmM1ZWI1YjVlOC4uMjQzM2ZkY2M5NzRhYjY2Nzk3MWEyNWFmNjQ3ODkzNTYwYTMzMWM5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcApAQCAtNDEy
LDM0ICs0MTIsNTEgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29y
ZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWMKICAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpBcHBseURldmljZVNjYWxlRmFjdG9yKHNjYWxl
RmFjdG9yKSk7CiB9CiAKLXZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNv
cmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCitib29sIFJlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UoTmF0aXZlSW1hZ2UmIGltYWdlKQogewog
ICAgIGlmIChVTkxJS0VMWSghbV9yZW5kZXJpbmdCYWNrZW5kKSkgewogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5yZWNvcmROYXRpdmVJbWFnZVVzZShpbWFn
ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5OjpyZWNvcmRSZXNvdXJjZVVzZShGb250JiBmb250KQorYm9vbCBSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJlc291cmNlVXNlKEltYWdlQnVmZmVyJiBpbWFnZUJ1
ZmZlcikKIHsKICAgICBpZiAoVU5MSUtFTFkoIW1fcmVuZGVyaW5nQmFja2VuZCkpIHsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIG1fcmVuZGVyaW5nQmFja2VuZC0+cmVjb3JkRm9udFVzZShm
b250KTsKKyAgICBpZiAoIWNhbkRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIG1fcmVuZGVyaW5nQmFja2VuZC0+cmVjb3JkSW1hZ2VCdWZm
ZXJVc2UoaW1hZ2VCdWZmZXIpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3JkUmVzb3VyY2VVc2UoY29uc3QgU291cmNlSW1h
Z2UmIGltYWdlKQoreworICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gaW1hZ2UuaW1hZ2VCdWZm
ZXJJZkV4aXN0cygpKQorICAgICAgICByZXR1cm4gcmVjb3JkUmVzb3VyY2VVc2UoKmltYWdlQnVm
ZmVyKTsKKworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VJZkV4
aXN0cygpKQorICAgICAgICByZXR1cm4gcmVjb3JkUmVzb3VyY2VVc2UoKm5hdGl2ZUltYWdlKTsK
KworICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQ
cm94eTo6cmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKQorYm9vbCBS
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJlc291cmNlVXNlKEZvbnQmIGZv
bnQpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFtX3JlbmRlcmluZ0JhY2tlbmQpKSB7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBtX3JlbmRlcmluZ0JhY2tlbmQtPnJlY29yZEltYWdlQnVmZmVy
VXNlKGltYWdlQnVmZmVyKTsKKyAgICBtX3JlbmRlcmluZ0JhY2tlbmQtPnJlY29yZEZvbnRVc2Uo
Zm9udCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5OjpmbHVzaENvbnRleHQoR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaAppbmRl
eCBjMjc1MzdiMmJjOWY0ZmNiMTE3ZTk2ZDY2NjBjMjc2YzIxZTRjYTFmLi5hNDE4ZWYyZmIwM2Vi
M2UyMjFjY2Q3ZjVhNjQxNTQ4MmQ3MWMzNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5LmgKQEAgLTEzOCw5ICsxMzgsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgog
ICAgIHZvaWQgcmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgZmluYWw7CiAKLSAg
ICB2b2lkIHJlY29yZFJlc291cmNlVXNlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJikgZmluYWw7Ci0g
ICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShXZWJDb3JlOjpGb250JikgZmluYWw7Ci0gICAgdm9p
ZCByZWNvcmRSZXNvdXJjZVVzZShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGZpbmFsOworICAgIGJv
b2wgcmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmKSBmaW5hbDsKKyAgICBi
b29sIHJlY29yZFJlc291cmNlVXNlKFdlYkNvcmU6OkltYWdlQnVmZmVyJikgZmluYWw7CisgICAg
Ym9vbCByZWNvcmRSZXNvdXJjZVVzZShjb25zdCBXZWJDb3JlOjpTb3VyY2VJbWFnZSYpIGZpbmFs
OworICAgIGJvb2wgcmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6Rm9udCYpIGZpbmFsOwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVzdGVk
Q29udGV4dChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBXZWJD
b3JlOjpBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pIGZpbmFsOwogCg==
</data>
<flag name="review"
          id="475903"
          type_id="1"
          status="+"
          setter="heycam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449728</attachid>
            <date>2022-01-22 02:09:14 -0800</date>
            <delta_ts>2022-01-22 17:04:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235467-20220122020913.patch</filename>
            <type>text/plain</type>
            <size>39428</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTY5Mzc4OTliNThmZmZk
ZWQzZjAyODgxOTNlNjQ0ZWJhNWIxMmIyOS4uYWU1NmRmZjQ2YzlmNGM2MDA0YzE0NjY1MzQwZmVh
NmQ2MDBlNjIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAxLTIxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
QWRkIHRoZSBjbGFzcyAnU291cmNlSW1hZ2UnIHRvIHJlcHJlc2VudCB2YXJpYW50cyBvZiBpbWFn
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NDY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FtZXJvbiBNY0Nvcm1hY2suCisKKyAgICAgICAgQmVm
b3JlIHRoZSBleGlzdGVuY2Ugb2YgR1BVUHJvY2VzcyB3ZSB1c2VkIHRvIGRvIHNvbWUgZHJhd2lu
ZyBvbiBhbiAKKyAgICAgICAgSW1hZ2VCdWZmZXIsIGdldCBhIE5hdGl2ZUltYWdlIGZyb20gdGhl
IEltYWdlQnVmZmVyIGFuZCB0aGVuIHVzZSB0aGlzCisgICAgICAgIE5hdGl2ZUltYWdlLiBXaXRo
IEdQVVByb2NlcywgdGhpcyB3aWxsIHJlcXVpcmUgYm91bmNpbmcgdGhlIE5hdGl2ZUltYWdlIAor
ICAgICAgICBiZXR3ZWVuIFdlYlByb2Nlc3MgYW5kIEdQVVByb2Nlc3MgYXQgbGVhc3QgdHdvIHRp
bWVzLiBUbyBtYWtlIHRoaXMgc2NlbmFyaW8gCisgICAgICAgIGVmZmljaWVudCwgYSBuZXcgY2xh
c3MgY2FsbGVkICdTb3VyY2VJbWFnZScgd2lsbCBiZSBpbnRyb2R1Y2VkLiBUaGUgcHVycG9zZQor
ICAgICAgICBvZiB0aGlzIGNsYXNzIGlzIHRvIHByb3ZpZGUgYSBuZXcgbGV2ZWwgb2YgYWJzdHJh
Y3Rpb24gZm9yIHRoZSBpbWFnZXMKKyAgICAgICAgc3VjaCB0aGF0IG5vIGNvbnZlcnNpb24gaXMg
bmVlZGVkIGJlZm9yZSB0aGUgYWN0dWFsIHVzZS4KKworICAgICAgICBSZXBsYWNlIEZFSW1hZ2U6
OlNvdXJjZUltYWdlIHdpdGggYSBuZXcgY2xhc3MgbmFtZWQgJ1NvdXJjZUltYWdlJy4gTGV0IAor
ICAgICAgICB0aGUgbmV3IGNsYXNzIGhhbmRsZSB0aGUgZW5jb2RpbmcgYW5kIGRlY29kaW5nIGFu
ZCB0aGUgY29udmVyc2lvbiBmcm9tCisgICAgICAgIE5hdGl2ZUltYWdlIHRvIEltYWdlQnVmZmVy
IGFuZCB2aWNlIHZlcnNhLgorCisgICAgICAgIE1ha2UgUmVjb3JkZXI6OnJlY29yZFJlc291cmNl
VXNlKCkgcmV0dXJucyBhIGJvb2xlYW4gd2hpY2ggaW5kaWNhdGVzCisgICAgICAgIHdoZXRoZXIg
dGhlIHJlc291cmNlIGNhbiBiZSBjYWNoZWQgZm9yIGxhdGVyIHJlcGxheSBvciBub3QuCisKKyAg
ICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpwcmVUcmFuc2Zvcm1lZE5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9T
b3VyY2VJbWFnZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OlNv
dXJjZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpuYXRpdmVJbWFnZUlm
RXhpc3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUltYWdlOjpuYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXJJZkV4aXN0cyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlSW1hZ2U6OmltYWdlSWRlbnRpZmllciBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OnJl
Y29yZFJlc291cmNlVXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmZpbHRlckVm
ZmVjdCBjb25zdCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6IERlbGV0
ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdl
OjpjYWxjdWxhdGVJbWFnZVJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZVNv
ZnR3YXJlQXBwbGllcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpkZWNvZGUpOgorCiAyMDIyLTAxLTIxICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBXUFQgdmVyc2lvbiBv
ZiBjc3MvY3NzLWNhc2NhZGUvcGFyc2luZy9sYXllci1pbXBvcnQtcGFyc2luZy5odG1sIGNyYXNo
ZXMgd2l0aCBudWxscHRyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDliZmJjOTM5NWRjOWVjMTAyMWZkYmNjYmI4MzFh
Y2FlYmQyZTNkNDQuLjc0OTQ0N2Y1OWUyNzQ0ZTA0YmRiMDI2ZmM2N2RlYzBhODE4ODMzOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDEtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBBZGQgdGhlIGNsYXNzICdT
b3VyY2VJbWFnZScgdG8gcmVwcmVzZW50IHZhcmlhbnRzIG9mIGltYWdlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU0NjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBDYW1lcm9uIE1jQ29ybWFjay4KKworICAgICAgICBQcm92aWRlIGEgbmV3IHJlY29y
ZFJlc291cmNlVXNlKCkgZm9yIHRoZSBTb3VyY2VJbWFnZS4KKworICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
UHJveHk6OnJlY29yZFJlc291cmNlVXNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaDoKKwogMjAyMi0wMS0yMSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgaW4t
cHJvY2VzcyB0ZXN0aW5nIG9mIElQQyBtZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggY2Q1
OGNkYjMyYzk0ODEwNzFhNDQ2NTk0ODY5YjQwY2E2MTA2OWJhNC4uOTJkNWQ5NjFmYzNhNjNlNjU2
MWYwZTUzNTYzNWQ0ZDY1N2ZlMjAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNTUwLDYgKzE1
NTAsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvU2hvdWxkTG9jYWxpemVBeGlzTmFtZXMuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL1RhYlNpemUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAppbmRleCAzZmEwYmJkOTgyNGY5YTg2YTEyZmUzODc5YWJkZTBkM2U0ODU5YWY1Li45YTlj
ZWM0ZWU0YWFkOGY0NmUwOGU0NDkwNDcyOTRjMjc2NjU1MzQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAt
MjA3Niw2ICsyMDc2LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAor
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9TdHJp
bmdUcnVuY2F0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODk5OWEyZWExOTZlODU3
OTAyMGIwMTNiNGY1MDdlNzU2Yzk1YWJjMy4uODkxZjA5N2VjYzBkZWIyMzM5ZjVmMWYxMjNiOTBk
YjhhMTBkZGY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjMzOSw2ICsyMzM5LDcgQEAKIAkJNzJCQUMzQUUyM0UxRjBCMDAw
OEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVm
ZmVyQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTcyRDczNjQ0Mjc4NDYxQTAwMDM5ODY2MyAvKiBGaWx0ZXJSZXN1bHRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjExQjVENjI3NjUzNjgy
MDA3NkZFRjggLyogRmlsdGVyUmVzdWx0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyRjY2N0UxMjYwQzI2QUMwMEVFMzZBRCAvKiBEaWFnbm9z
dGljTG9nZ2luZ0RvbWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzJGNjY3REYyNjBDMjY0NDAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9t
YWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NzJGN0U3NDYyNzlCOEY3NTAwRDgyRDJEIC8qIFNvdXJjZUltYWdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkY3RTc0NDI3OUI4Rjc0MDBEODJEMkQg
LyogU291cmNlSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3NTUzQ0ZFODEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0
b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUz
Q0ZFNjEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggKi87IH07CiAJ
CTc1NzkzRTg0MEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRTgxMEQwQ0UwQjMwMDdGQzBB
QyAvKiBNZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJNzU3OTNFQzkwRDBDRTcyRDAwN0ZDMEFDIC8q
IEpTTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3NTc5M0VDNzBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCAqLzsg
fTsKQEAgLTExMzUwLDYgKzExMzUxLDggQEAKIAkJNzJGMUFEQTMxQTM5MEI5RjAwMDE0RTE4IC8q
IEpTRVhURnJhZ0RlcHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRVhURnJhZ0RlcHRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJGMUFE
QTQxQTM5MEI5RjAwMDE0RTE4IC8qIEpTRVhURnJhZ0RlcHRoLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTRVhURnJhZ0RlcHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyRjY2N0RGMjYwQzI2NDQwMEVFMzZBRCAvKiBEaWFnbm9zdGljTG9nZ2luZ0RvbWFp
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEaWFnbm9zdGljTG9nZ2luZ0RvbWFpbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MkY3RTc0MjI3OUI4Rjc0MDBEODJEMkQgLyogU291cmNlSW1h
Z2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlSW1hZ2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkY3RTc0NDI3OUI4Rjc0MDBEODJE
MkQgLyogU291cmNlSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291
cmNlSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJGQjIzODQyMjQ5N0FE
NDAwN0U1QUM3IC8qIFNWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkZCMjM4NjIyNDk3QUQ1MDA3RTVBQzcgLyogU1ZH
VmFsdWVQcm9wZXJ0eUFuaW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNWR1ZhbHVlUHJvcGVydHlBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MkZCMjM4NzIyNDk3QjE1MDA3RTVBQzcgLyogU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRv
ckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVmFsdWVQcm9wZXJ0
eUxpc3RBbmltYXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4OTk0
LDYgKzI4OTk3LDggQEAKIAkJCQkxREQxMjdBQzI1NkUzQTg3MDBCMjI3RDcgLyogU291cmNlQnVm
ZmVyUHJpdmF0ZS5jcHAgKi8sCiAJCQkJQ0Q2NDFFQjIxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJj
ZUJ1ZmZlclByaXZhdGUuaCAqLywKIAkJCQlDREM4QjVBQzE4MDRBRTVEMDAxNkU2ODUgLyogU291
cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oICovLAorCQkJCTcyRjdFNzQyMjc5QjhGNzQwMEQ4MkQy
RCAvKiBTb3VyY2VJbWFnZS5jcHAgKi8sCisJCQkJNzJGN0U3NDQyNzlCOEY3NDAwRDgyRDJEIC8q
IFNvdXJjZUltYWdlLmggKi8sCiAJCQkJN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmlu
Z1NvbHZlci5oICovLAogCQkJCUIyMzU0MEYwMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVu
Y2F0b3IuY3BwICovLAogCQkJCUIyMzU0MEYxMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVu
Y2F0b3IuaCAqLywKQEAgLTM3MTc0LDYgKzM3MTc5LDcgQEAKIAkJCQlDREM4QjVBQjE4MDQ3RkYx
MDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNEQzhCNUFEMTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NEE4MUY0MjBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNl
R3JhcGhpYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzJGN0U3NDYyNzlCOEY3NTAwRDgyRDJEIC8q
IFNvdXJjZUltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDFBMjdBRTEwQzlCRkQ4MDAwMjZB
NDIgLyogU3BhY2VTcGxpdFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjI2Q0RFMEYxMTQw
NDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MzQ5NTBDRDI1Mzk0MzYxMDA5OUYxNzEgLyogU3BlZWNoUmVjb2duaXRpb24uaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNWU5NDUw
YzRjNzIzNDI0YjJiZThlOTIxNWFkZmQ5MjFhMmY1MWE0Yi4uOWM3M2NlMmI2ZjgwZjFjMWRmNWM0
N2Y3MjYxNDRkODNiN2I4NDE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oCkBAIC0xNTcsOCArMTU3LDggQEAgcHVibGljOgogICAgIGVudW0gVGlsZVJ1bGUgeyBT
dHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAogICAgIHZp
cnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZSgpIHsgcmV0dXJuIG51bGxwdHI7
IH0KLSAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1h
Z2U+IHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9vbCA9IHRydWUp
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBuYXRpdmVJbWFnZSgpOyB9CisgICAg
dmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoYm9vbCA9IHRydWUpIHsgcmV0dXJuIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7IH0KICAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VPZlNp
emUoY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIEFjY2Vzc29y
cyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNjM2IyYzg2NDEyMmRhMTdl
Y2MwOTAwZTk2Zjg3N2Y0NTY2YmQ1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmNwcApAQCAtMCwwICsxLDk5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTb3VyY2VJbWFnZS5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU291cmNlSW1hZ2U6OlNvdXJjZUltYWdl
KEltYWdlVmFyaWFudCYmIGltYWdlVmFyaWFudCkKKyAgICA6IG1faW1hZ2VWYXJpYW50KFdURk1v
dmUoaW1hZ2VWYXJpYW50KSkKK3sKK30KKworTmF0aXZlSW1hZ2UqIFNvdXJjZUltYWdlOjpuYXRp
dmVJbWFnZUlmRXhpc3RzKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogbmF0aXZlSW1hZ2UgPSBz
dGQ6OmdldF9pZjxSZWY8TmF0aXZlSW1hZ2U+PigmbV9pbWFnZVZhcmlhbnQpKQorICAgICAgICBy
ZXR1cm4gbmF0aXZlSW1hZ2UtPnB0cigpOworICAgIHJldHVybiBudWxscHRyOworfQorCitOYXRp
dmVJbWFnZSogU291cmNlSW1hZ2U6Om5hdGl2ZUltYWdlKCkKK3sKKyAgICBpZiAoIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPEltYWdlQnVmZmVyPj4obV9pbWFnZVZhcmlhbnQpKQorICAgICAg
ICByZXR1cm4gbmF0aXZlSW1hZ2VJZkV4aXN0cygpOworCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9
IHN0ZDo6Z2V0PFJlZjxJbWFnZUJ1ZmZlcj4+KG1faW1hZ2VWYXJpYW50KTsKKyAgICBhdXRvIG5h
dGl2ZUltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFn
ZUJ1ZmZlcikpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgbV9pbWFnZVZhcmlhbnQgPSBuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpOwor
ICAgIHJldHVybiBuYXRpdmVJbWFnZUlmRXhpc3RzKCk7Cit9CisKK0ltYWdlQnVmZmVyKiBTb3Vy
Y2VJbWFnZTo6aW1hZ2VCdWZmZXJJZkV4aXN0cygpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGlt
YWdlQnVmZmVyID0gc3RkOjpnZXRfaWY8UmVmPEltYWdlQnVmZmVyPj4oJm1faW1hZ2VWYXJpYW50
KSkKKyAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5wdHIoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworSW1hZ2VCdWZmZXIqIFNvdXJjZUltYWdlOjppbWFnZUJ1ZmZlcigpCit7CisgICAg
aWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxOYXRpdmVJbWFnZT4+KG1faW1hZ2VWYXJp
YW50KSkKKyAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVySWZFeGlzdHMoKTsKKworICAgIGF1dG8g
bmF0aXZlSW1hZ2UgPSBzdGQ6OmdldDxSZWY8TmF0aXZlSW1hZ2U+PihtX2ltYWdlVmFyaWFudCk7
CisgICAgYXV0byByZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBuYXRpdmVJbWFnZS0+c2l6ZSgpIH07
CisKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShuYXRpdmVJbWFn
ZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBpZiAoIWltYWdlQnVm
ZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGltYWdlQnVmZmVyLT5jb250ZXh0
KCkuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCByZWN0LnNpemUoKSwgcmVjdCwgcmVjdCk7
CisKKyAgICBtX2ltYWdlVmFyaWFudCA9IGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cisg
ICAgcmV0dXJuIGltYWdlQnVmZmVySWZFeGlzdHMoKTsKK30KKworUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIFNvdXJjZUltYWdlOjppbWFnZUlkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBXVEY6OnN3aXRjaE9uKG1faW1hZ2VWYXJpYW50LAorICAgICAgICBbJl0gKGNvbnN0IFJl
ZjxOYXRpdmVJbWFnZT4mIG5hdGl2ZUltYWdlKSB7CisgICAgICAgICAgICByZXR1cm4gbmF0aXZl
SW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgICAgICB9LAorICAgICAg
ICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyKSB7CisgICAgICAgICAg
ICByZXR1cm4gaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAg
ICAgICB9LAorICAgICAgICBbJl0gKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI7CisgICAgICAgIH0KKyAgICApOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMGQzZDgwZDQzNjE1ODRkOGY0ZjRlY2NlODMwYzU0OWE5Y2M4MjkwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
SW1hZ2UuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
KyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JU
IFNvdXJjZUltYWdlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBJbWFnZVZhcmlhbnQgPSBzdGQ6OnZh
cmlhbnQ8CisgICAgICAgIFJlZjxOYXRpdmVJbWFnZT4sCisgICAgICAgIFJlZjxJbWFnZUJ1ZmZl
cj4sCisgICAgICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcgorICAgID47CisKKyAgICBT
b3VyY2VJbWFnZShJbWFnZVZhcmlhbnQmJik7CisKKyAgICBOYXRpdmVJbWFnZSogbmF0aXZlSW1h
Z2VJZkV4aXN0cygpIGNvbnN0OworICAgIE5hdGl2ZUltYWdlKiBuYXRpdmVJbWFnZSgpOworCisg
ICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVySWZFeGlzdHMoKSBjb25zdDsKKyAgICBJbWFnZUJ1
ZmZlciogaW1hZ2VCdWZmZXIoKTsKKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBp
bWFnZUlkZW50aWZpZXIoKSBjb25zdDsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxTb3VyY2VJbWFnZT4gZGVjb2RlKERlY29kZXImKTsKKworcHJp
dmF0ZToKKyAgICBJbWFnZVZhcmlhbnQgbV9pbWFnZVZhcmlhbnQ7Cit9OworCit0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgordm9pZCBTb3VyY2VJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBpbWFnZUlkZW50aWZpZXIoKTsKK30KKwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8U291cmNlSW1hZ2U+IFNvdXJjZUltYWdl
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gaW1hZ2VJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gaW1h
Z2VJZGVudGlmaWVyOworICAgIGlmICghaW1hZ2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIFNvdXJjZUltYWdlKCppbWFnZUlkZW50aWZpZXIp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKaW5kZXggZTAxMGM5ZDBlZjczYzEwNjRkMTFlMzI5ZDViMGJiMWYwZTQ0
YzFjMi4uZjUwODhkNjk3MzBlMjlmNzBkYjg3NGMwY2I2YTg4ZTJhMjgzMmQ4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTUwLDMzICsxNTAsOSBAQCB2
b2lkIFJlY29yZGVyOjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogc291cmNl
SW1hZ2UsIGNvbnN0IEZsb2F0UmVjdAogewogICAgIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbUlmTmVj
ZXNzYXJ5KCk7CiAKLSAgICBpZiAoc291cmNlSW1hZ2UgJiYgIWNhbkRyYXdJbWFnZUJ1ZmZlcigq
c291cmNlSW1hZ2UpKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZpbHRlcmVkSW1h
Z2VCdWZmZXIoc291cmNlSW1hZ2UsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyLCByZXN1bHRzKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGZvciAoYXV0byYgZWZmZWN0IDogZmlsdGVy
LmVmZmVjdHNPZlR5cGUoRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUltYWdlKSkgewotICAgICAgICBi
b29sIGlzUmVjb3JkZWQgPSBXVEY6OnN3aXRjaE9uKGRvd25jYXN0PEZFSW1hZ2U+KGVmZmVjdC5n
ZXQoKSkuc291cmNlSW1hZ2UoKSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmPEltYWdlPiYg
aW1hZ2UpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5u
YXRpdmVJbWFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlY29yZFJlc291cmNlVXNlKCpu
YXRpdmVJbWFnZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9LAot
ICAgICAgICAgICAgWyZdIChjb25zdCBSZWY8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlcikgewot
ICAgICAgICAgICAgICAgIGlmIChjYW5EcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJlY29yZFJlc291cmNlVXNlKGltYWdlQnVmZmVyKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIGlmICghaXNSZWNvcmRlZCkg
eworICAgICAgICBhdXRvJiBmZUltYWdlID0gZG93bmNhc3Q8RkVJbWFnZT4oZWZmZWN0LmdldCgp
KTsKKyAgICAgICAgaWYgKCFyZWNvcmRSZXNvdXJjZVVzZShmZUltYWdlLnNvdXJjZUltYWdlKCkp
KSB7CiAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVy
KHNvdXJjZUltYWdlLCBzb3VyY2VJbWFnZVJlY3QsIGZpbHRlciwgcmVzdWx0cyk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE4Nyw3ICsxNjMsMTEgQEAgdm9pZCBSZWNvcmRl
cjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25z
dCBGbG9hdFJlY3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlY29yZFJlc291cmNl
VXNlKCpzb3VyY2VJbWFnZSk7CisgICAgaWYgKCFyZWNvcmRSZXNvdXJjZVVzZSgqc291cmNlSW1h
Z2UpKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIo
c291cmNlSW1hZ2UsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyLCByZXN1bHRzKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKwogICAgIHJlY29yZERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHNvdXJj
ZUltYWdlLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgc291cmNlSW1hZ2VSZWN0LCBm
aWx0ZXIpOwogfQogCkBAIC0yMDYsMTIgKzE4NiwxMiBAQCB2b2lkIFJlY29yZGVyOjpkcmF3R2x5
cGhzQW5kQ2FjaGVGb250KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgq
CiB2b2lkIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVy
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGFwcGVuZFN0YXRlQ2hh
bmdlSXRlbUlmTmVjZXNzYXJ5KCk7Ci0gICAgaWYgKCFjYW5EcmF3SW1hZ2VCdWZmZXIoaW1hZ2VC
dWZmZXIpKSB7CisKKyAgICBpZiAoIXJlY29yZFJlc291cmNlVXNlKGltYWdlQnVmZmVyKSkgewog
ICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
cmVjb3JkUmVzb3VyY2VVc2UoaW1hZ2VCdWZmZXIpOwogICAgIHJlY29yZERyYXdJbWFnZUJ1ZmZl
cihpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aAppbmRleCA3Y2VmOWU2YjAxN2JjOTUxYzkzNWQwZjg3MzBhZmI2M2FmMGEyYTI1Li45YjJiMGI5
Mzc5MDFkODY1MTE2MWViODJiOTBmNGQwNWI5NDI1ZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgRm9udDsKIGNsYXNzIEds
eXBoQnVmZmVyOwogY2xhc3MgSW1hZ2U7CiBjbGFzcyBQaXhlbEJ1ZmZlcjsKK2NsYXNzIFNvdXJj
ZUltYWdlOwogCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGU7CiBzdHJ1Y3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnM7CkBAIC0xMzgsOSArMTM5LDEwIEBAIHByb3RlY3RlZDoKICNlbmRpZgogICAg
IHZpcnR1YWwgdm9pZCByZWNvcmRBcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSA9IDA7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoTmF0aXZlSW1hZ2UmKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlY29yZFJlc291cmNlVXNlKEZvbnQmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHJlY29yZFJlc291cmNlVXNlKEltYWdlQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCByZWNvcmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgcmVjb3JkUmVzb3VyY2VVc2UoSW1hZ2VCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29s
IHJlY29yZFJlc291cmNlVXNlKGNvbnN0IFNvdXJjZUltYWdlJikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgPSAwOwogCiAgICAgLy8gRklYTUU6IE1heWJl
IHJlbW92ZSB0aGlzPwogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3SW1hZ2VCdWZmZXIoY29uc3Qg
SW1hZ2VCdWZmZXImKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXJJbXBsLmNwcAppbmRleCBmYTFkNjJlZDU0OTBlNjk3YzliNmM3NjRhNDBmZWQ5Yjlm
MWJkYzlkLi5mZTUxNTU4ZDc4MjM1MzQxOWE2NGM5YTdmOWI4OTc5MDNhYTZmOWE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNvdXJjZUltYWdlLmgiCiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+
CiAKQEAgLTQxOCwyNSArNDE5LDQxIEBAIHZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRBcHBseURl
dmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQogICAgIGFwcGVuZDxBcHBseURldmlj
ZVNjYWxlRmFjdG9yPihzY2FsZUZhY3Rvcik7CiB9CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNv
cmRSZXNvdXJjZVVzZShOYXRpdmVJbWFnZSYgaW1hZ2UpCitib29sIFJlY29yZGVySW1wbDo6cmVj
b3JkUmVzb3VyY2VVc2UoTmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdlKQogewogICAgIGlmIChtX2Rl
bGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5yZWNvcmROYXRpdmVJbWFnZVVzZShpbWFnZSk7
Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICAgICAgbV9k
ZWxlZ2F0ZS0+cmVjb3JkTmF0aXZlSW1hZ2VVc2UobmF0aXZlSW1hZ2UpOworICAgIG1fZGlzcGxh
eUxpc3QuY2FjaGVOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSk7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShGb250JiBmb250KQorYm9v
bCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
cikKIHsKKyAgICBpZiAoIWNhbkRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+
cmVjb3JkRm9udFVzZShmb250KTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlRm9udChmb250KTsK
KyAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1hZ2VCdWZmZXIpOwor
ICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcik7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShJbWFn
ZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpCitib29sIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VV
c2UoY29uc3QgU291cmNlSW1hZ2UmIGltYWdlKQoreworICAgIGlmIChhdXRvIGltYWdlQnVmZmVy
ID0gaW1hZ2UuaW1hZ2VCdWZmZXJJZkV4aXN0cygpKQorICAgICAgICByZXR1cm4gcmVjb3JkUmVz
b3VyY2VVc2UoKmltYWdlQnVmZmVyKTsKKworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1h
Z2UubmF0aXZlSW1hZ2VJZkV4aXN0cygpKQorICAgICAgICByZXR1cm4gcmVjb3JkUmVzb3VyY2VV
c2UoKm5hdGl2ZUltYWdlKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlY29yZGVy
SW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYgZm9udCkKIHsKICAgICBpZiAobV9kZWxlZ2F0
ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+cmVjb3JkSW1hZ2VCdWZmZXJVc2UoaW1hZ2VCdWZmZXIp
OwotICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcik7CisgICAg
ICAgIG1fZGVsZWdhdGUtPnJlY29yZEZvbnRVc2UoZm9udCk7CisgICAgbV9kaXNwbGF5TGlzdC5j
YWNoZUZvbnQoZm9udCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIC8vIEZJWE1FOiBzaGFyZSB3
aXRoIFNoYWRvd0RhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBs
LmgKaW5kZXggZDRkMGI3NTdlZGQyOWNkYWYwZDU2M2NlNmVjY2UwYjVlMTQ1ZjQzMy4uZWQ0NzEw
YjNkNjkwM2JlZDYyNjljZGJjNmIyNTdmNTdmZmY1ODhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKQEAgLTEzNiw5ICsxMzYsMTAgQEAgcHJpdmF0ZToK
ICNlbmRpZgogICAgIHZvaWQgcmVjb3JkQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgZmlu
YWw7CiAKLSAgICB2b2lkIHJlY29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJikgZmluYWw7Ci0g
ICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShGb250JikgZmluYWw7Ci0gICAgdm9pZCByZWNvcmRS
ZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYpIGZpbmFsOworICAgIGJvb2wgcmVjb3JkUmVzb3VyY2VV
c2UoTmF0aXZlSW1hZ2UmKSBmaW5hbDsKKyAgICBib29sIHJlY29yZFJlc291cmNlVXNlKEltYWdl
QnVmZmVyJikgZmluYWw7CisgICAgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShjb25zdCBTb3VyY2VJ
bWFnZSYpIGZpbmFsOworICAgIGJvb2wgcmVjb3JkUmVzb3VyY2VVc2UoRm9udCYpIGZpbmFsOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVzdGVkQ29udGV4
dChjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGlu
aXRpYWxDVE0pIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNw
cAppbmRleCBhNDNiZTQ3OGZlZThhNDQ4MzJhYTYzNjljMmQ2NmViNjFjZjBjMjQ3Li42ZDg4OWFk
MWRhNTVhNTUzMmRjY2ZjYWE3NDkwNmU4ZjMxNTQyN2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUltYWdlRWxlbWVudC5jcHAKQEAgLTIxMCwxNCArMjEwLDI0IEBAIHN0ZDo6dHVwbGU8UmVm
UHRyPEltYWdlQnVmZmVyPiwgRmxvYXRSZWN0PiBTVkdGRUltYWdlRWxlbWVudDo6aW1hZ2VCdWZm
ZXJGb3JFZmZlCiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjpmaWx0
ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3Rv
ciYpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY2FjaGVkSW1hZ2UpCi0gICAgICAgIHJldHVybiBGRUlt
YWdlOjpjcmVhdGUoUmVmIHsgKm1fY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVy
ZXIoKSkgfSwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKKyAgICBpZiAobV9jYWNoZWRJbWFnZSkg
eworICAgICAgICBhdXRvIGltYWdlID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihy
ZW5kZXJlcigpKTsKKyAgICAgICAgaWYgKCFpbWFnZSB8fCBpbWFnZS0+aXNOdWxsKCkpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1h
Z2UtPnByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAg
aWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAg
IGF1dG8gaW1hZ2VSZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBpbWFnZS0+c2l6ZSgpIH07CisgICAg
ICAgIHJldHVybiBGRUltYWdlOjpjcmVhdGUoeyBuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgp
IH0sIGltYWdlUmVjdCwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKKyAgICB9CiAKICAgICBhdXRv
IFtpbWFnZUJ1ZmZlciwgaW1hZ2VSZWN0XSA9IGltYWdlQnVmZmVyRm9yRWZmZWN0KCk7CiAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
RkVJbWFnZTo6Y3JlYXRlKGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIGltYWdlUmVjdCwg
cHJlc2VydmVBc3BlY3RSYXRpbygpKTsKKyAgICByZXR1cm4gRkVJbWFnZTo6Y3JlYXRlKHsgaW1h
Z2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSB9LCBpbWFnZVJlY3QsIHByZXNlcnZlQXNwZWN0UmF0
aW8oKSk7CiB9CiAKIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNzQwODBjZTMwZTQwZDIxZGQ5MzAwZjY2MjBkNjE1
M2I3ZGM3YzM1ZS4uZjQxNDAxMjMzODkxOTAzODdhZDI3Njk2YTUwNTQ0NTRkZjg5MDI4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0yMDgsMTEgKzIwOCw2
IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lckludGVybmFsKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVm
UHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQot
ewotICAgIHJldHVybiBuYXRpdmVJbWFnZSgpOwotfQotCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IFNW
R0ltYWdlOjpuYXRpdmVJbWFnZSgpCiB7CiAgICAgcmV0dXJuIG5hdGl2ZUltYWdlKHNpemUoKSwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCA2YjNiMjI5
NTAyNjgxMGFhNWY4NDk0NGU0OTk0MTQ2OWQ3MTY5OGMzLi42Y2RiYTFjMzA4ODIwYTUxZDU2MTAx
YTdkNTM0YjQ0M2UxYzc1M2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aApAQCAtODYsNyArODYsNiBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhp
cyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9C
ZU9wYXF1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgZmluYWw7CiAgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZSgpIGZpbmFsOwogICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gbmF0aXZlSW1hZ2UoY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAppbmRleCA5NTU2NTk3
OGM4NjUzNTdlZDNjY2U5MjE2Mzc0MTgyOTllNzUyZjQzLi43NWRkNjgwNjIyMjdkYmExYWE5ZDZm
MzRhZTg3MzdhZTQ3M2UzNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtMzEsMTIgKzMxLDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWY8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlKFJlZjxJbWFnZT4mJiBp
bWFnZSwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJh
dGlvKQotewotICAgIGF1dG8gaW1hZ2VSZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBpbWFnZS0+c2l6
ZSgpIH07Ci0gICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgaW1hZ2VSZWN0LCBwcmVz
ZXJ2ZUFzcGVjdFJhdGlvKTsKLX0KLQogUmVmPEZFSW1hZ2U+IEZFSW1hZ2U6OmNyZWF0ZShTb3Vy
Y2VJbWFnZSYmIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwg
Y29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFSW1hZ2UoV1RGTW92ZShzb3VyY2VJbWFnZSks
IHNvdXJjZUltYWdlUmVjdCwgcHJlc2VydmVBc3BlY3RSYXRpbykpOwpAQCAtNTIsMjIgKzQ2LDE4
IEBAIEZFSW1hZ2U6OkZFSW1hZ2UoU291cmNlSW1hZ2UmJiBzb3VyY2VJbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvCiAKIEZsb2F0UmVjdCBGRUltYWdlOjpjYWxjdWxh
dGVJbWFnZVJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9y
JiwgY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24pIGNvbnN0CiB7Ci0gICAgYXV0
byBpbWFnZVJlY3QgPSBXVEY6OnN3aXRjaE9uKG1fc291cmNlSW1hZ2UsCi0gICAgICAgIFsmXSAo
Y29uc3QgUmVmPEltYWdlPiYpIHsKLSAgICAgICAgICAgIGF1dG8gaW1hZ2VSZWN0ID0gcHJpbWl0
aXZlU3VicmVnaW9uOwotICAgICAgICAgICAgYXV0byBzcmNSZWN0ID0gbV9zb3VyY2VJbWFnZVJl
Y3Q7Ci0gICAgICAgICAgICBtX3ByZXNlcnZlQXNwZWN0UmF0aW8udHJhbnNmb3JtUmVjdChpbWFn
ZVJlY3QsIHNyY1JlY3QpOwotICAgICAgICAgICAgcmV0dXJuIGltYWdlUmVjdDsKLSAgICAgICAg
fSwKLSAgICAgICAgWyZdIChjb25zdCBSZWY8SW1hZ2VCdWZmZXI+JikgewotICAgICAgICAgICAg
cmV0dXJuIHByaW1pdGl2ZVN1YnJlZ2lvbjsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdIChSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwotICAgICAgICB9Ci0gICAgKTsK
LSAgICByZXR1cm4gZmlsdGVyLmNsaXBUb01heEVmZmVjdFJlY3QoaW1hZ2VSZWN0LCBwcmltaXRp
dmVTdWJyZWdpb24pOworICAgIGlmIChtX3NvdXJjZUltYWdlLm5hdGl2ZUltYWdlSWZFeGlzdHMo
KSkgeworICAgICAgICBhdXRvIGltYWdlUmVjdCA9IHByaW1pdGl2ZVN1YnJlZ2lvbjsKKyAgICAg
ICAgYXV0byBzcmNSZWN0ID0gbV9zb3VyY2VJbWFnZVJlY3Q7CisgICAgICAgIG1fcHJlc2VydmVB
c3BlY3RSYXRpby50cmFuc2Zvcm1SZWN0KGltYWdlUmVjdCwgc3JjUmVjdCk7CisgICAgICAgIHJl
dHVybiBmaWx0ZXIuY2xpcFRvTWF4RWZmZWN0UmVjdChpbWFnZVJlY3QsIHByaW1pdGl2ZVN1YnJl
Z2lvbik7CisgICAgfQorCisgICAgaWYgKG1fc291cmNlSW1hZ2UuaW1hZ2VCdWZmZXJJZkV4aXN0
cygpKQorICAgICAgICByZXR1cm4gZmlsdGVyLm1heEVmZmVjdFJlY3QocHJpbWl0aXZlU3VicmVn
aW9uKTsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBGbG9hdFJlY3Qo
KTsKIH0KIAogLy8gRklYTUU6IE1vdmUgdGhlIGNsYXNzIEZFSW1hZ2VTb2Z0d2FyZUFwcGxpZXIg
dG8gc2VwYXJhdGUgc291cmNlIGFuZCBoZWFkZXIgZmlsZXMuCkBAIC04NywzMSArNzcsMzEgQEAg
Ym9vbCBGRUltYWdlU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwg
Y29uc3QgRmlsdGVySW1hZ2VWZWN0b3IKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICBhdXRvJiBzb3VyY2VJbWFnZSA9IG1fZWZmZWN0LnNvdXJjZUlt
YWdlKCk7CiAgICAgYXV0byBwcmltaXRpdmVTdWJyZWdpb24gPSByZXN1bHQucHJpbWl0aXZlU3Vi
cmVnaW9uKCk7CiAgICAgYXV0byYgY29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CiAK
LSAgICBXVEY6OnN3aXRjaE9uKG1fZWZmZWN0LnNvdXJjZUltYWdlKCksCi0gICAgICAgIFsmXSAo
Y29uc3QgUmVmPEltYWdlPiYgaW1hZ2UpIHsKLSAgICAgICAgICAgIGF1dG8gaW1hZ2VSZWN0ID0g
cHJpbWl0aXZlU3VicmVnaW9uOwotICAgICAgICAgICAgYXV0byBzcmNSZWN0ID0gbV9lZmZlY3Qu
c291cmNlSW1hZ2VSZWN0KCk7Ci0gICAgICAgICAgICBtX2VmZmVjdC5wcmVzZXJ2ZUFzcGVjdFJh
dGlvKCkudHJhbnNmb3JtUmVjdChpbWFnZVJlY3QsIHNyY1JlY3QpOwotICAgICAgICAgICAgaW1h
Z2VSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICAgICAgICAgIGltYWdlUmVj
dCA9IEludFJlY3QoaW1hZ2VSZWN0KSAtIHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdCgpLmxvY2F0
aW9uKCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBz
cmNSZWN0KTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdIChjb25zdCBSZWY8SW1hZ2VCdWZmZXI+
JiBpbWFnZUJ1ZmZlcikgewotICAgICAgICAgICAgYXV0byBpbWFnZVJlY3QgPSBwcmltaXRpdmVT
dWJyZWdpb247Ci0gICAgICAgICAgICBpbWFnZVJlY3QubW92ZUJ5KG1fZWZmZWN0LnNvdXJjZUlt
YWdlUmVjdCgpLmxvY2F0aW9uKCkpOwotICAgICAgICAgICAgaW1hZ2VSZWN0LnNjYWxlKGZpbHRl
ci5maWx0ZXJTY2FsZSgpKTsKLSAgICAgICAgICAgIGltYWdlUmVjdCA9IEludFJlY3QoaW1hZ2VS
ZWN0KSAtIHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdCgpLmxvY2F0aW9uKCk7Ci0gICAgICAgICAg
ICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgaW1hZ2VSZWN0LmxvY2F0aW9u
KCkpOwotICAgICAgICB9LAotICAgICAgICBbJl0gKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICAp
OwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBzb3VyY2VJ
bWFnZS5uYXRpdmVJbWFnZUlmRXhpc3RzKCkpIHsKKyAgICAgICAgYXV0byBpbWFnZVJlY3QgPSBw
cmltaXRpdmVTdWJyZWdpb247CisgICAgICAgIGF1dG8gc3JjUmVjdCA9IG1fZWZmZWN0LnNvdXJj
ZUltYWdlUmVjdCgpOworICAgICAgICBtX2VmZmVjdC5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCkudHJh
bnNmb3JtUmVjdChpbWFnZVJlY3QsIHNyY1JlY3QpOworICAgICAgICBpbWFnZVJlY3Quc2NhbGUo
ZmlsdGVyLmZpbHRlclNjYWxlKCkpOworICAgICAgICBpbWFnZVJlY3QgPSBJbnRSZWN0KGltYWdl
UmVjdCkgLSByZXN1bHQuYWJzb2x1dGVJbWFnZVJlY3QoKS5sb2NhdGlvbigpOworICAgICAgICBj
b250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqbmF0aXZlSW1hZ2UsIHNyY1JlY3Quc2l6ZSgpLCBpbWFn
ZVJlY3QsIHNyY1JlY3QpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAo
YXV0byBpbWFnZUJ1ZmZlciA9IHNvdXJjZUltYWdlLmltYWdlQnVmZmVySWZFeGlzdHMoKSkgewor
ICAgICAgICBhdXRvIGltYWdlUmVjdCA9IHByaW1pdGl2ZVN1YnJlZ2lvbjsKKyAgICAgICAgaW1h
Z2VSZWN0Lm1vdmVCeShtX2VmZmVjdC5zb3VyY2VJbWFnZVJlY3QoKS5sb2NhdGlvbigpKTsKKyAg
ICAgICAgaW1hZ2VSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKKyAgICAgICAgaW1h
Z2VSZWN0ID0gSW50UmVjdChpbWFnZVJlY3QpIC0gcmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0KCku
bG9jYXRpb24oKTsKKyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVy
LCBpbWFnZVJlY3QubG9jYXRpb24oKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICAKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHN0
ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBGRUltYWdlOjpjcmVhdGVTb2Z0d2Fy
ZUFwcGxpZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVJbWFnZS5oCmluZGV4IDA5ZGMzMzI4NTM5ZWNmMGFjZDNhYTgzMThhNGUzMGVkNGMz
ZDk2OGMuLjQ2NTZiYjlkNTJjOGVlOTRjMDY4NDk0MTY4NWY1MmE4M2M2NTk3MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
CiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgiCisjaW5jbHVkZSAiU291
cmNlSW1hZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSwxMyArMzYsNiBAQCBj
bGFzcyBJbWFnZUJ1ZmZlcjsKIAogY2xhc3MgRkVJbWFnZSBmaW5hbCA6IHB1YmxpYyBGaWx0ZXJF
ZmZlY3QgewogcHVibGljOgotICAgIHVzaW5nIFNvdXJjZUltYWdlID0gc3RkOjp2YXJpYW50PAot
ICAgICAgICBSZWY8SW1hZ2U+LAotICAgICAgICBSZWY8SW1hZ2VCdWZmZXI+LAotICAgICAgICBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIKLSAgICA+OwotCi0gICAgc3RhdGljIFJlZjxGRUlt
YWdlPiBjcmVhdGUoUmVmPEltYWdlPiYmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFs
dWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZFSW1hZ2U+IGNyZWF0ZShTb3Vy
Y2VJbWFnZSYmLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgU1ZHUHJl
c2VydmVBc3BlY3RSYXRpb1ZhbHVlJik7CiAKICAgICBjb25zdCBTb3VyY2VJbWFnZSYgc291cmNl
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUltYWdlOyB9CkBAIC03NSwxOSArNjksNyBA
QCBwcml2YXRlOgogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgRkVJbWFnZTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgV1RGOjpzd2l0Y2hPbihtX3NvdXJjZUlt
YWdlLAotICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZT4mIGltYWdlKSB7Ci0gICAgICAgICAg
ICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpKQotICAgICAgICAg
ICAgICAgIGVuY29kZXIgPDwgbmF0aXZlSW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cigpOwotICAgICAgICB9LAotICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZlcj4mIGlt
YWdlQnVmZmVyKSB7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IGltYWdlQnVmZmVyLT5yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdIChSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSB7Ci0gICAg
ICAgICAgICBlbmNvZGVyIDw8IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKLSAgICAgICAg
fQotICAgICk7Ci0KKyAgICBlbmNvZGVyIDw8IG1fc291cmNlSW1hZ2U7CiAgICAgZW5jb2RlciA8
PCBtX3NvdXJjZUltYWdlUmVjdDsKICAgICBlbmNvZGVyIDw8IG1fcHJlc2VydmVBc3BlY3RSYXRp
bzsKIH0KQEAgLTk1LDkgKzc3LDkgQEAgdm9pZCBGRUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBzdGQ6Om9wdGlvbmFsPFJlZjxG
RUltYWdlPj4gRkVJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgc3RkOjpv
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGltYWdlSWRlbnRpZmllcjsKLSAg
ICBkZWNvZGVyID4+IGltYWdlSWRlbnRpZmllcjsKLSAgICBpZiAoIWltYWdlSWRlbnRpZmllcikK
KyAgICBzdGQ6Om9wdGlvbmFsPFNvdXJjZUltYWdlPiBzb3VyY2VJbWFnZTsKKyAgICBkZWNvZGVy
ID4+IHNvdXJjZUltYWdlOworICAgIGlmICghc291cmNlSW1hZ2UpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gc291cmNlSW1hZ2VS
ZWN0OwpAQCAtMTEwLDcgKzkyLDcgQEAgc3RkOjpvcHRpb25hbDxSZWY8RkVJbWFnZT4+IEZFSW1h
Z2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghcHJlc2VydmVBc3BlY3RSYXRp
bykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBGRUltYWdlOjpj
cmVhdGUoKmltYWdlSWRlbnRpZmllciwgKnNvdXJjZUltYWdlUmVjdCwgKnByZXNlcnZlQXNwZWN0
UmF0aW8pOworICAgIHJldHVybiBGRUltYWdlOjpjcmVhdGUoV1RGTW92ZSgqc291cmNlSW1hZ2Up
LCAqc291cmNlSW1hZ2VSZWN0LCAqcHJlc2VydmVBc3BlY3RSYXRpbyk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA1NzdiYmYz
M2IyMGZkZjU3NTFiYTc1NDI0MzU2YTQzZmMwNzNiYzE0Li5kOWFmNTg0MGRmNjg0M2Q5ZTYxOWRi
NjYyZWM5MGVhNDgxODU3OTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0y
MzksMTggKzIzOSwxOCBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdGaWx0
ZXJlZEltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUgogICAgIGZvciAoYXV0byYg
ZWZmZWN0IDogZmlsdGVyLT5lZmZlY3RzT2ZUeXBlKEZpbHRlckVmZmVjdDo6VHlwZTo6RkVJbWFn
ZSkpIHsKICAgICAgICAgYXV0byYgZmVJbWFnZSA9IGRvd25jYXN0PEZFSW1hZ2U+KGVmZmVjdC5n
ZXQoKSk7CiAKLSAgICAgICAgY29uc3QgYXV0byogcmVzb3VyY2VJZGVudGlmaWVyID0gc3RkOjpn
ZXRfaWY8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPigmZmVJbWFnZS5zb3VyY2VJbWFnZSgp
KTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZUlkZW50aWZpZXIpIHsKKyAgICAgICAgYXV0byBpbWFn
ZUlkZW50aWZpZXIgPSBmZUltYWdlLnNvdXJjZUltYWdlKCkuaW1hZ2VJZGVudGlmaWVyKCk7Cisg
ICAgICAgIGlmICghaW1hZ2VJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChh
dXRvIG5hdGl2ZUltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZE5hdGl2ZUltYWdlKHsgKnJl
c291cmNlSWRlbnRpZmllciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9KSkgewotICAgICAgICAg
ICAgZmVJbWFnZS5zZXRJbWFnZVNvdXJjZShSZWY8SW1hZ2U+IHsgQml0bWFwSW1hZ2U6OmNyZWF0
ZShuYXRpdmVJbWFnZSkgfSk7CisgICAgICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gcmVzb3Vy
Y2VDYWNoZSgpLmNhY2hlZE5hdGl2ZUltYWdlKHsgaW1hZ2VJZGVudGlmaWVyLCBtX3dlYlByb2Nl
c3NJZGVudGlmaWVyIH0pKSB7CisgICAgICAgICAgICBmZUltYWdlLnNldEltYWdlU291cmNlKHsg
Km5hdGl2ZUltYWdlIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWRJbWFnZUJ1
ZmZlcih7ICpyZXNvdXJjZUlkZW50aWZpZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSkpIHsK
KyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkSW1h
Z2VCdWZmZXIoeyBpbWFnZUlkZW50aWZpZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSkpIHsK
ICAgICAgICAgICAgIGZlSW1hZ2Uuc2V0SW1hZ2VTb3VyY2UoeyAqaW1hZ2VCdWZmZXIgfSk7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyUHJveHkuY3BwCmluZGV4IDRhMzE3MmNmZGIyNjg4YzBjYTIyY2IyNzNkNTVi
YWJjNWViNWI1ZTguLjI0MzNmZGNjOTc0YWI2Njc5NzFhMjVhZjY0Nzg5MzU2MGEzMzFjOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKQEAgLTQxMiwz
NCArNDEyLDUxIEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRB
cHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjCiAgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcihzY2FsZUZh
Y3RvcikpOwogfQogCi12b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cmVjb3Jk
UmVzb3VyY2VVc2UoTmF0aXZlSW1hZ2UmIGltYWdlKQorYm9vbCBSZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyUHJveHk6OnJlY29yZFJlc291cmNlVXNlKE5hdGl2ZUltYWdlJiBpbWFnZSkKIHsKICAg
ICBpZiAoVU5MSUtFTFkoIW1fcmVuZGVyaW5nQmFja2VuZCkpIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIG1fcmVuZGVyaW5nQmFja2VuZC0+cmVjb3JkTmF0aXZlSW1hZ2VVc2UoaW1hZ2Up
OworICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQ
cm94eTo6cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYgZm9udCkKK2Jvb2wgUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNvdXJjZVVzZShJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZm
ZXIpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFtX3JlbmRlcmluZ0JhY2tlbmQpKSB7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBtX3JlbmRlcmluZ0JhY2tlbmQtPnJlY29yZEZvbnRVc2UoZm9u
dCk7CisgICAgaWYgKCFjYW5EcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBtX3JlbmRlcmluZ0JhY2tlbmQtPnJlY29yZEltYWdlQnVmZmVy
VXNlKGltYWdlQnVmZmVyKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBSZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZFJlc291cmNlVXNlKGNvbnN0IFNvdXJjZUltYWdl
JiBpbWFnZSkKK3sKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLmltYWdlQnVmZmVy
SWZFeGlzdHMoKSkKKyAgICAgICAgcmV0dXJuIHJlY29yZFJlc291cmNlVXNlKCppbWFnZUJ1ZmZl
cik7CisKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlSWZFeGlz
dHMoKSkKKyAgICAgICAgcmV0dXJuIHJlY29yZFJlc291cmNlVXNlKCpuYXRpdmVJbWFnZSk7CisK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHk6OnJlY29yZFJlc291cmNlVXNlKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKK2Jvb2wgUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmRSZXNvdXJjZVVzZShGb250JiBmb250
KQogewogICAgIGlmIChVTkxJS0VMWSghbV9yZW5kZXJpbmdCYWNrZW5kKSkgewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5yZWNvcmRJbWFnZUJ1ZmZlclVz
ZShpbWFnZUJ1ZmZlcik7CisgICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5yZWNvcmRGb250VXNlKGZv
bnQpOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXJQcm94eTo6Zmx1c2hDb250ZXh0KEdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllciBpZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKaW5kZXgg
YzI3NTM3YjJiYzlmNGZjYjExN2U5NmQ2NjYwYzI3NmMyMWU0Y2ExZi4uYTQxOGVmMmZiMDNlYjNl
MjIxY2NkN2Y1YTY0MTU0ODJkNzFjMzQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eS5oCkBAIC0xMzgsOSArMTM4LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKICAg
ICB2b2lkIHJlY29yZEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIGZpbmFsOwogCi0gICAg
dm9pZCByZWNvcmRSZXNvdXJjZVVzZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpIGZpbmFsOwotICAg
IHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6Rm9udCYpIGZpbmFsOwotICAgIHZvaWQg
cmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBmaW5hbDsKKyAgICBib29s
IHJlY29yZFJlc291cmNlVXNlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJikgZmluYWw7CisgICAgYm9v
bCByZWNvcmRSZXNvdXJjZVVzZShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGZpbmFsOworICAgIGJv
b2wgcmVjb3JkUmVzb3VyY2VVc2UoY29uc3QgV2ViQ29yZTo6U291cmNlSW1hZ2UmKSBmaW5hbDsK
KyAgICBib29sIHJlY29yZFJlc291cmNlVXNlKFdlYkNvcmU6OkZvbnQmKSBmaW5hbDsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZU5lc3RlZENv
bnRleHQoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgV2ViQ29y
ZTo6QWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKSBmaW5hbDsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>