<?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>218865</bug_id>
          
          <creation_ts>2020-11-12 11:50:47 -0800</creation_ts>
          <short_desc>[GPU Process] GraphicsContext::drawPattern() should take a NativeImage argument</short_desc>
          <delta_ts>2020-11-12 14:32:19 -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>Canvas</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>217342</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>dino</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1706957</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-12 11:50:47 -0800</bug_when>
    <thetext>This will allow recording the DisplayList item DrawPattern with the renderingResourceIdentifier of the NativeImage. When replaying it back, the renderingResourceIdentifier will be resolved to a NativeImage and the item will be applied the same way we for DrawNativeImage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706962</commentid>
    <comment_count>1</comment_count>
      <attachid>413960</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-12 11:59:42 -0800</bug_when>
    <thetext>Created attachment 413960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706967</commentid>
    <comment_count>2</comment_count>
      <attachid>413962</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-12 12:06:58 -0800</bug_when>
    <thetext>Created attachment 413962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706970</commentid>
    <comment_count>3</comment_count>
      <attachid>413964</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-12 12:13:14 -0800</bug_when>
    <thetext>Created attachment 413964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707018</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-12 14:31:27 -0800</bug_when>
    <thetext>Committed r269753: &lt;https://trac.webkit.org/changeset/269753&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413964.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707020</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-12 14:32:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/71344323&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413960</attachid>
            <date>2020-11-12 11:59:42 -0800</date>
            <delta_ts>2020-11-12 12:06:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218865-20201112115941.patch</filename>
            <type>text/plain</type>
            <size>43718</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWVmNzg0MzhlNjA0ZGQ5
MzQ0OGY4MDFlZjM1ODM4M2NkN2Y5YzM5Mi4uYjk5NTA1MDBhZWZlOTdmMzVjMjUyMTYwOGU5MTlm
ZmNkZWQ4Yjg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIwLTExLTEyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybigpIHNob3VsZCB0YWtlIGEgTmF0aXZlSW1hZ2Ug
YXJndW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxODg2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gcmVjb3JkaW5nIHRoZSBEaXNwbGF5TGlzdCBpdGVtIERyYXdQYXR0ZXJuLCB0aGUgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyCisgICAgICAgIG9mIHRoZSBOYXRpdmVJbWFnZSB3aWxs
IGJlIHJlY29yZGVkLiBXaGVuIHJlcGxheWluZyBpdCBiYWNrLCB0aGUKKyAgICAgICAgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHdpbGwgYmUgcmVzb2x2ZWQgdG8gYSBOYXRpdmVJbWFnZSBh
bmQgdGhlCisgICAgICAgIGl0ZW0gd2lsbCBiZSBhcHBsaWVkIHRoZSBzYW1lIHdheSB3ZSBmb3Ig
RHJhd05hdGl2ZUltYWdlLgorCisgICAgICAgIERyYXdQYXR0ZXJuIHdpbGwgYmUgaW5saW5lIERp
c3BsYXlMaXN0IGl0ZW0gYW5kIHNob3VsZCBub3QgbmVlZCBlbmNvZGluZworICAgICAgICBvciBk
ZWNvZGluZyB3aGVuIHNlbmRpbmcgaXQgdG8gdGhlIEdQVS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1Bh
dHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1J
bWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1QYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybVBhdHRlcm4pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6
ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6Y29w
eVRvIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNE
cmF3aW5nSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNJbmxpbmVJdGVt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRlcm46OkRy
YXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6
YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRlcm46OkRyYXdQ
YXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6aW1h
Z2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
UGF0dGVybjo6aW1hZ2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3UGF0dGVybjo6dGlsZVJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdQYXR0ZXJuOjpwYXR0ZXJuVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6aW1hZ2UgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjplbmNvZGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjpk
ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjphcHBseU5hdGl2ZUltYWdlSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtUGF0dGVybik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuaDoKKwogMjAyMC0xMS0xMiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSB2ZXJ0aWNhbC1hbGlnbjogc3VwZXIgYW5kIHN1
YiB2YWx1ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4NDI0Yzk2NjRiN2M0
YzY0MWYxZWUyNjJjNzM5NGZlZjdhMzJjN2MxLi43ZWFhYzYzYjhiZWE2YzY2MjJlOThkYWMyZWNl
YzQ2YzRlMzhkNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTExLTEyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybigpIHNob3VsZCB0YWtlIGEgTmF0aXZlSW1hZ2Ug
YXJndW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxODg2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorCiAy
MDIwLTExLTEyICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gVW5yZXZpZXdlZCwgbm9uLXVuaWZpZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXgg
OGNiMTI1OTc5NDk2YmQxOTA5Y2U3MjJhYzBjNmJkNzcyMjA0OTU3NC4uNWNhY2E4NTQ1MmMxYTY5
OGI5NWU0ZGY0NDAwODU4Yzk2MzQ1ZWNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC04NDIsNiArODQyLDE5IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoUmVmUHRyPElt
YWdlQnVmZmVyPiBpbWFnZSwgY29uc3QKICAgICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhX
VEZNb3ZlKGltYWdlKSwgKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogfQog
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpIHx8ICFwYXR0ZXJuVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd1BhdHRl
cm4oaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBkcmF3UGxhdGZvcm1QYXR0ZXJuKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRp
b25zKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiByZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CmluZGV4IDRmOTJjZGFjZWU0MDUzYWFjMjA4OTk1OTQzZDI2NWM4MjgwNGM1YWYuLjA4YWIzYjIy
MDBmYTlkMmQ3ZDViYTVlNWJiM2E1OGFkY2MxMjU2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zOTIsMTIgKzM5Miwx
MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pOwogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwotCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoUmVmUHRyPEltYWdlQnVm
ZmVyPiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgfSk7CiAgICAgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoUmVmUHRy
PEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KTsKICAgICB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZl
cihSZWZQdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsK
IAorICAgIHZvaWQgZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxl
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSB7IH0pOworCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBJbnRlcnBvbGF0
aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OyB9CiAKQEAgLTY1MCw3ICs2NTAsOCBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJv
dW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImKTsKIAotICAgIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2Uo
Y29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNv
bnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpOworICAgIHZvaWQgZHJhd1BsYXRmb3JtUGF0dGVybihjb25zdCBQ
bGF0Zm9ybUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIAogICAg
IEZsb2F0UmVjdCBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KGNv
bnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcsIENvbG9yJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRl
eCA4ZmJjODcyM2UzM2RmYTQzNjVhZmUzN2RlMjU3ZGFmMjUxOGQxYmUzLi41YzgyNWY3ZDQxYjk4
NjE2ZDE3ZmRiOGViZTdjZmZkN2QyYmZjYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC03MCw4ICs3MCw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29u
c3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0
IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2
ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRl
cm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBk
cmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9p
bnQmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5k
ZXggMDk4ZjYwMTM2ZWMwMDdiZGQ4Yzc2YjdjODE0NjFiMWU2MDM2OTA0OS4uOTM3YWE0ZDM1OTNk
MWQyMzkxNzMzZjBjMDI3NzRhMjExMTMzNjVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTM5LDEwICsxMzksMTEgQEAgdm9pZCBJbWFnZTo6Zmls
bFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LAogCiB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewotICAgIGlmICghbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoJmN0
eHQpKQorICAgIGF1dG8gdGlsZUltYWdlID0gcHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZShvcHRpb25zLm9yaWVudGF0aW9uKCkgPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJv
bUltYWdlKTsKKyAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY3R4
dC5kcmF3UGF0dGVybigqdGhpcywgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CisgICAgY3R4dC5kcmF3UGF0dGVybigqdGlsZUlt
YWdlLCBzaXplKCksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IHNwYWNpbmcsIG9wdGlvbnMpOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAg
aW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcAppbmRleCBlN2M0YTc5Y2MwOTgxNmNlMDZkOTliZDE5YTgxMzM3ZTljMWQ4YjE0Li41YzQ5
OWU4OWU4MGQwMmI0Nzg1ZWQ2ZjczMjNiODFmZmRhNmUwZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCkBAIC02NTUsMTkgKzY1NSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9h
dAogICAgIENhaXJvOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSgqcGxhdGZvcm1Db250ZXh0KCks
IHJlY3QsIHJvdW5kZWRIb2xlUmVjdCwgQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6
U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0
ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
UGxhdGZvcm1QYXR0ZXJuKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQorICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIXBhdHRlcm5UcmFuc2Zvcm0uaXNJ
bnZlcnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAgICAg
ICAgbV9pbXBsLT5kcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAgIGlmIChhdXRvIG5h
dGl2ZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAg
Q2Fpcm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQoKSwgbmF0aXZlSW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKKyAgICBDYWlybzo6ZHJhd1Bh
dHRlcm4oKnBsYXRmb3JtQ29udGV4dCgpLCBwbGF0Zm9ybUltYWdlLmdldCgpLCBJbnRTaXplKGlt
YWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRB
bnRpYWxpYXMoYm9vbCBlbmFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNw
cAppbmRleCBjZTg1N2ZkMmEzMTcwNmNmNGMxZmZjODE1NGJjMjAwYjAwNDcwMzE0Li4xNDZhNWVj
YWQ1MDUxNDVjOWY4OTUwNmVjOGRiMDU3NzIzNmViM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHAKQEAgLTI3NiwxMCArMjc2LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFNpCiAgICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBp
bWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMs
IHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpT
aGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2Uu
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJu
KG1fcGxhdGZvcm1Db250ZXh0LCBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBJ
bnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9y
bSwgcGhhc2UsIG9wdGlvbnMpOworICAgIFVOVVNFRF9QQVJBTShzcGFjaW5nKTsKKyAgICBDYWly
bzo6ZHJhd1BhdHRlcm4obV9wbGF0Zm9ybUNvbnRleHQsIGltYWdlLnBsYXRmb3JtSW1hZ2UoKS5n
ZXQoKSwgSW50U2l6ZShpbWFnZVNpemUpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCA1ZjQxODQ1NzlkYzgyM2Iz
ZTY1Zjc5MWQ3YmYxNjg0MDc2NzhjMmFlLi4xYmU1YTAyZDRkNjNjMTkwMzM4NTEzYTk1ZWU0NTNk
NzNhMDE0Njk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaApAQCAtNzMsNyAr
NzMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2Um
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRl
cm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKE5h
dGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3Qo
Y29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0xpbmUoY29u
c3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAppbmRleCAyNmUwNGMwOTg4MjRhY2FmNGZiOGM4NzcyMzI3ZTkwOWYwNmJmZjYyLi5jOTI3
NzcyZWMxMTQ4NjJkNjgyMmFkZDQ4Yzk4ZDk5NTY0ZWU0NTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CkBAIC00MTUsMTYgKzQxNSwxMSBAQCBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNr
KHZvaWQqIGluZm8pCiAgICAgfSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0
dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1BsYXRmb3JtUGF0dGVybihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSB8fCAhcGF0dGVyblRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdQYXR0ZXJuKGltYWdl
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBv
cHRpb25zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNvbnRleHQpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgZGVzdFJlY3Qp
OwpAQCAtNDQyLDI2ICs0MzcsMjMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJu
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICBmbG9h
dCBhZGp1c3RlZFggPSBwaGFzZS54KCkgLSBkZXN0UmVjdC54KCkgKyB0aWxlUmVjdC54KCkgKiBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsgLy8gV2UgdHJhbnNs
YXRlZCB0aGUgY29udGV4dCBzbyB0aGF0IGRlc3RSZWN0LngoKSBpcyB0aGUgb3JpZ2luLCBzbyBz
dWJ0cmFjdCBpdCBvdXQuCiAgICAgZmxvYXQgYWRqdXN0ZWRZID0gZGVzdFJlY3QuaGVpZ2h0KCkg
LSAocGhhc2UueSgpIC0gZGVzdFJlY3QueSgpICsgdGlsZVJlY3QueSgpICogbmFycm93UHJlY2lz
aW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSkgKyBzY2FsZWRUaWxlSGVpZ2h0KTsKIAot
ICAgIGF1dG8gdGlsZUltYWdlID0gaW1hZ2UucHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZShvcHRpb25zLm9yaWVudGF0aW9uKCkgPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJv
bUltYWdlKTsKLQotICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpKTsKKyAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodChpbWFn
ZS5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViSW1hZ2U7Ci0gICAgRmxv
YXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLnNpemUoKTsKICAgICBpZiAodGlsZVJlY3Quc2l6ZSgp
ID09IGltYWdlU2l6ZSkKLSAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2UtPnBsYXRmb3JtSW1h
Z2UoKTsKKyAgICAgICAgc3ViSW1hZ2UgPSBpbWFnZTsKICAgICBlbHNlIHsKICAgICAgICAgLy8g
Q29weWluZyBhIHN1Yi1pbWFnZSBvdXQgb2YgYSBwYXJ0aWFsbHktZGVjb2RlZCBpbWFnZSBzdG9w
cyB0aGUgZGVjb2Rpbmcgb2YgdGhlIG9yaWdpbmFsIGltYWdlLiBJdCBzaG91bGQgbmV2ZXIgaGFw
cGVuCiAgICAgICAgIC8vIGJlY2F1c2Ugc3ViLWltYWdlcyBhcmUgb25seSB1c2VkIGZvciBib3Jk
ZXItaW1hZ2UsIHdoaWNoIG9ubHkgcmVuZGVycyB3aGVuIHRoZSBpbWFnZSBpcyBmdWxseSBkZWNv
ZGVkLgotICAgICAgICBBU1NFUlQoaCA9PSBpbWFnZS5oZWlnaHQoKSk7Ci0gICAgICAgIHN1Yklt
YWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpLCB0aWxlUmVjdCkpOworICAgICAgICBBU1NFUlQoaCA9PSBpbWFn
ZVNpemUuaGVpZ2h0KCkpOworICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0
ZVdpdGhJbWFnZUluUmVjdChpbWFnZS5nZXQoKSwgdGlsZVJlY3QpKTsKICAgICB9CiAKICAgICAv
LyBJZiB3ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNhdXNlIHdlIGhhdmUg
YSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcsCiAgICAgLy8gZmFs
bCBiYWNrIHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQgbWVjaGFuaXNtLgog
ICAgIGZsb2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkgKiBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9hdCB3ID0gQ0dJbWFn
ZUdldFdpZHRoKHRpbGVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKLSAgICBpZiAodyA9
PSBpbWFnZS5zaXplKCkud2lkdGgoKSAmJiBoID09IGltYWdlLnNpemUoKS5oZWlnaHQoKSAmJiAh
c3BhY2luZy53aWR0aCgpICYmICFzcGFjaW5nLmhlaWdodCgpKSB7CisgICAgZmxvYXQgdyA9IENH
SW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSk7CisgICAgaWYgKHcgPT0gaW1hZ2VTaXplLndpZHRo
KCkgJiYgaCA9PSBpbWFnZVNpemUuaGVpZ2h0KCkgJiYgIXNwYWNpbmcud2lkdGgoKSAmJiAhc3Bh
Y2luZy5oZWlnaHQoKSkgewogICAgICAgICAvLyBGSVhNRTogQ0cgc2VlbXMgdG8gc25hcCB0aGUg
aW1hZ2VzIHRvIGludGVncmFsIHNpemVzLiBXaGVuIHdlIGNhcmUgKGUuZy4gd2l0aCBib3JkZXIt
aW1hZ2UtcmVwZWF0OiByb3VuZCksCiAgICAgICAgIC8vIHdlIHNob3VsZCB0aWxlIGFsbCBidXQg
dGhlIGxhc3QsIGFuZCBzdGV0Y2ggdGhlIGxhc3QgaW1hZ2UgdG8gZml0LgogICAgICAgICBDR0Nv
bnRleHREcmF3VGlsZWRJbWFnZShjb250ZXh0LCBGbG9hdFJlY3QoYWRqdXN0ZWRYLCBhZGp1c3Rl
ZFksIHNjYWxlZFRpbGVXaWR0aCwgc2NhbGVkVGlsZUhlaWdodCksIHN1YkltYWdlLmdldCgpKTsK
QEAgLTQ3MCw3ICs0NjIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1h
Z2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdAogICAgICAgICBDR0Fm
ZmluZVRyYW5zZm9ybSBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybU1ha2UobmFycm93UHJlY2lz
aW9uVG9DR0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKSwgMCwgMCwgbmFycm93UHJlY2lzaW9u
VG9DR0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uZCgpKSwgYWRqdXN0ZWRYLCBhZGp1c3RlZFkpOwog
ICAgICAgICBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybUNvbmNhdChtYXRyaXgsIENHQ29udGV4
dEdldENUTShjb250ZXh0KSk7CiAgICAgICAgIC8vIFRoZSB0b3Agb2YgYSBwYXJ0aWFsbHktZGVj
b2RlZCBpbWFnZSBpcyBkcmF3biBhdCB0aGUgYm90dG9tIG9mIHRoZSB0aWxlLiBNYXAgaXQgdG8g
dGhlIHRvcC4KLSAgICAgICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1UcmFuc2xhdGUobWF0
cml4LCAwLCBpbWFnZS5zaXplKCkuaGVpZ2h0KCkgLSBoKTsKKyAgICAgICAgbWF0cml4ID0gQ0dB
ZmZpbmVUcmFuc2Zvcm1UcmFuc2xhdGUobWF0cml4LCAwLCBpbWFnZVNpemUuaGVpZ2h0KCkgLSBo
KTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBtYXRyaXggPSBDR0FmZmluZVRy
YW5zZm9ybVNjYWxlKG1hdHJpeCwgMSwgLTEpOwogICAgICAgICBtYXRyaXggPSBDR0FmZmluZVRy
YW5zZm9ybVRyYW5zbGF0ZShtYXRyaXgsIDAsIC1oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggNDNhMjNlMTY0YzQ5NjRiNjU2ZGI5MmJmZDExZDg3
NDkzMzRkOTg1NC4uZTUyOTI0YjFhMDFlM2QzMzUzNTE1OWE3OWVjZjUyZWY3ODFmZmY2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTMyMiwxMCAr
MzIyLDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgZ2V0PERyYXdQYXRo
PigpLn5EcmF3UGF0aCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXR0ZXJuOiB7Ci0gICAgICAgIGdldDxEcmF3UGF0dGVybj4oKS5+RHJhd1BhdHRl
cm4oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29t
cG9zaXRlZFJlY3Q6IHsKICAgICAgICAgZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKS5+RmlsbENv
bXBvc2l0ZWRSZWN0KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQyNCw2ICs0MjAsMTAgQEAgdm9p
ZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd05hdGl2ZUltYWdlPjo6dmFsdWUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdQYXR0ZXJu
Pjo6dmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdMaW5lOiB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1
Y3RpYmxlPERyYXdMaW5lPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CkBAIC01NzcsMTQgKzU3
NywxNCBAQCB2b2lkIEl0ZW1IYW5kbGU6OmNvcHlUbyhJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBj
b25zdAogICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdOYXRpdmVJbWFnZShnZXQ8RHJhd05h
dGl2ZUltYWdlPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3UGF0aDogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdQYXRoKGdldDxEcmF3
UGF0aD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d1BhdHRlcm46IHsKICAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBEcmF3UGF0dGVybihnZXQ8RHJh
d1BhdHRlcm4+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdQYXRoOiB7CisgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd1BhdGgoZ2V0PERyYXdQ
YXRoPigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
Q29tcG9zaXRlZFJlY3Q6IHsKICAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBGaWxsQ29tcG9zaXRl
ZFJlY3QoZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1UeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAppbmRleCBlOTkwZGVlNDNiZmRhZjM5
MDczYTM1NmY2MGZhNWVkM2IyODRhZjY4Li43N2M5Y2Q0MWNkZGRlNmY3MzVlM2M5ODMxMTFiYzg5
ODE0N2NjM2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCkBA
IC0yMDgsOCArMjA4LDggQEAgYm9vbCBpc0RyYXdpbmdJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9y
VGV4dDoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1BhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CisgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd1BhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6
RmlsbENvbXBvc2l0ZWRSZWN0OgpAQCAtMjU0LDcgKzI1NCw2IEBAIGJvb2wgaXNJbmxpbmVJdGVt
KEl0ZW1UeXBlIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRo
OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxDb21wb3NpdGVkUmVjdDoKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoKICAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKQEAgLTI4Miw2ICsyODEsNyBAQCBib29sIGlz
SW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNl
OgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TmF0aXZlSW1hZ2U6CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAKaW5kZXggNjgyZWZlY2ZlZTQzOWI2OGMzZjlmOTgxZGRkY2YwMmFl
YjZlYjEyOS4uOWMxZTNiNWZiNmFlYmIwNjRjYjQyMzdhNGRhMmVmYmZlOTkwODRkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNDU4LDI1ICs0NTgsMzEgQEAgc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdOYXRp
dmVJbWFnZSYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLURyYXdQYXR0ZXJuOjpEcmF3UGF0
dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi0gICAgOiBtX2ltYWdlKGltYWdlKQotICAg
ICwgbV9wYXR0ZXJuVHJhbnNmb3JtKHBhdHRlcm5UcmFuc2Zvcm0pCi0gICAgLCBtX3RpbGVSZWN0
KHRpbGVSZWN0KQorRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQorICAgIDogbV9pbWFnZUlkZW50aWZpZXIoaW1hZ2VJZGVudGlmaWVyKQorICAgICwg
bV9pbWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwgbV9kZXN0aW5hdGlvbihkZXN0UmVjdCkKKyAg
ICAsIG1fdGlsZVJlY3QodGlsZVJlY3QpCisgICAgLCBtX3BhdHRlcm5UcmFuc2Zvcm0ocGF0dGVy
blRyYW5zZm9ybSkKICAgICAsIG1fcGhhc2UocGhhc2UpCiAgICAgLCBtX3NwYWNpbmcoc3BhY2lu
ZykKICAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQogewogfQogCi12b2lkIERyYXdQYXR0ZXJuOjph
cHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CitOT19SRVRVUk5fRFVFX1RPX0FT
U0VSVCB2b2lkIERyYXdQYXR0ZXJuOjphcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewot
ICAgIGNvbnRleHQuZHJhd1BhdHRlcm4obV9pbWFnZS5nZXQoKSwgbV9kZXN0aW5hdGlvbiwgbV90
aWxlUmVjdCwgbV9wYXR0ZXJuVHJhbnNmb3JtLCBtX3BoYXNlLCBtX3NwYWNpbmcsIG1fb3B0aW9u
cyk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgRHJhd1BhdHRlcm46OmFw
cGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTmF0aXZlSW1hZ2UmIGltYWdlKSBjb25zdAor
eworICAgIGNvbnRleHQuZHJhd1BhdHRlcm4oaW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0
aW9uLCBtX3RpbGVSZWN0LCBtX3BhdHRlcm5UcmFuc2Zvcm0sIG1fcGhhc2UsIG1fc3BhY2luZywg
bV9vcHRpb25zKTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IERyYXdQYXR0ZXJuJiBpdGVtKQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgi
aW1hZ2UiLCBpdGVtLmltYWdlKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiaW1hZ2UtaWRlbnRp
ZmllciIsIGl0ZW0uaW1hZ2VJZGVudGlmaWVyKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0
dGVybi10cmFuc2Zvcm0iLCBpdGVtLnBhdHRlcm5UcmFuc2Zvcm0oKSk7CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJ0aWxlLXJlY3QiLCBpdGVtLnRpbGVSZWN0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0
eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0UmVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oCmluZGV4IDNlYjc0ZDc4ZGI1MWRiODNlMzU5NmE2ZjliNzNkMmRlNjM1OTMxNjEuLjdj
MTNlM2U1Y2UyNWU2NTc2OTVlMTk2ODdkYWVkOWI2ZmQ1YjM5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaApAQCAtMTA3OSw5MSArMTA3OSwzNiBAQCBwcml2YXRlOgogY2xhc3Mg
RHJhd1BhdHRlcm4gewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRl
bVR5cGUgPSBJdGVtVHlwZTo6RHJhd1BhdHRlcm47Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzSW5saW5lSXRlbSA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGlu
ZUl0ZW0gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0g
dHJ1ZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQ
T1JUIERyYXdQYXR0ZXJuKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSk7CiAKLSAgICBjb25zdCBJbWFnZSYgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2lt
YWdlLmdldCgpOyB9Ci0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuVHJhbnNmb3JtOyB9Ci0gICAgRmxvYXRSZWN0IHRp
bGVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV90aWxlUmVjdDsgfQorICAgIFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlSWRl
bnRpZmllcjsgfQorICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUoKSBjb25zdCB7IHJldHVybiBtX2lt
YWdlU2l6ZTsgfQogICAgIEZsb2F0UmVjdCBkZXN0UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVz
dGluYXRpb247IH0KKyAgICBGbG9hdFJlY3QgdGlsZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3Rp
bGVSZWN0OyB9CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuVHJhbnNmb3JtOyB9CiAgICAgRmxvYXRQb2ludCBwaGFz
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGhhc2U7IH0KICAgICBGbG9hdFNpemUgc3BhY2luZygpIGNv
bnN0IHsgcmV0dXJuIG1fc3BhY2luZzsgfQogCi0gICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdDsKKyAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGFwcGx5KEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0OworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0
aXZlSW1hZ2UmKSBjb25zdDsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRz
KCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX2Rl
c3RpbmF0aW9uOyB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPERyYXdQYXR0ZXJuPiBkZWNvZGUoRGVjb2RlciYpOwotCiBwcml2YXRlOgotICAgIG11dGFi
bGUgUmVmPEltYWdlPiBtX2ltYWdlOyAvLyBGSVhNRTogRHJhd2luZyBpbWFnZXMgY2FuIGNhdXNl
IHRoZWlyIGFuaW1hdGlvbnMgdG8gcHJvZ3Jlc3MuIFRoaXMgc2hvdWxkbid0IGhhdmUgdG8gYmUg
bXV0YWJsZS4KLSAgICBBZmZpbmVUcmFuc2Zvcm0gbV9wYXR0ZXJuVHJhbnNmb3JtOwotICAgIEZs
b2F0UmVjdCBtX3RpbGVSZWN0OworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX2lt
YWdlSWRlbnRpZmllcjsKKyAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7CiAgICAgRmxvYXRSZWN0
IG1fZGVzdGluYXRpb247CisgICAgRmxvYXRSZWN0IG1fdGlsZVJlY3Q7CisgICAgQWZmaW5lVHJh
bnNmb3JtIG1fcGF0dGVyblRyYW5zZm9ybTsKICAgICBGbG9hdFBvaW50IG1fcGhhc2U7CiAgICAg
RmxvYXRTaXplIG1fc3BhY2luZzsKICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7
CiB9OwogCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBEcmF3UGF0dGVybjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgSW1hZ2VIYW5kbGUgaW1hZ2VIYW5kbGU7
Ci0gICAgaW1hZ2VIYW5kbGUuaW1hZ2UgPSBtX2ltYWdlLnB0cigpOwotICAgIGVuY29kZXIgPDwg
aW1hZ2VIYW5kbGU7Ci0gICAgZW5jb2RlciA8PCBtX3BhdHRlcm5UcmFuc2Zvcm07Ci0gICAgZW5j
b2RlciA8PCBtX3RpbGVSZWN0OwotICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvbjsKLSAgICBl
bmNvZGVyIDw8IG1fcGhhc2U7Ci0gICAgZW5jb2RlciA8PCBtX3NwYWNpbmc7Ci0gICAgZW5jb2Rl
ciA8PCBtX29wdGlvbnM7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxE
cmF3UGF0dGVybj4gRHJhd1BhdHRlcm46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAg
IE9wdGlvbmFsPEltYWdlSGFuZGxlPiBpbWFnZUhhbmRsZTsKLSAgICBkZWNvZGVyID4+IGltYWdl
SGFuZGxlOwotICAgIGlmICghaW1hZ2VIYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0KLSAgICBPcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IHBhdHRlcm5UcmFuc2Zvcm07Ci0g
ICAgZGVjb2RlciA+PiBwYXR0ZXJuVHJhbnNmb3JtOwotICAgIGlmICghcGF0dGVyblRyYW5zZm9y
bSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPEZsb2F0UmVj
dD4gdGlsZVJlY3Q7Ci0gICAgZGVjb2RlciA+PiB0aWxlUmVjdDsKLSAgICBpZiAoIXRpbGVSZWN0
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBkZXN0aW5hdGlvbjsKLSAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOwotICAgIGlmICghZGVz
dGluYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxG
bG9hdFBvaW50PiBwaGFzZTsKLSAgICBkZWNvZGVyID4+IHBoYXNlOwotICAgIGlmICghcGhhc2Up
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxGbG9hdFNpemU+
IHNwYWNpbmc7Ci0gICAgZGVjb2RlciA+PiBzcGFjaW5nOwotICAgIGlmICghc3BhY2luZykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPEltYWdlUGFpbnRpbmdP
cHRpb25zPiBvcHRpb25zOwotICAgIGRlY29kZXIgPj4gb3B0aW9uczsKLSAgICBpZiAoIW9wdGlv
bnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4ge3sgKmltYWdl
SGFuZGxlLT5pbWFnZSwgKmRlc3RpbmF0aW9uLCAqdGlsZVJlY3QsICpwYXR0ZXJuVHJhbnNmb3Jt
LCAqcGhhc2UsICpzcGFjaW5nLCAqb3B0aW9ucyB9fTsKLX0KLQogY2xhc3MgQmVnaW5UcmFuc3Bh
cmVuY3lMYXllciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVt
VHlwZSA9IEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDAxNjAwM2FjNmQ2YTM2OGYwMWJmOWViZTI5
Yjc5Y2M1ODExMTBjZGIuLmY1MDAwNWE0NTRiMzlmNDVjZDBmZjcxYWQ3ZDE5Y2ExY2Q3YzcwZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTE4Miw5ICsx
ODIsMTIgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGMKICAgICBhcHBlbmQ8RHJhd05hdGl2ZUlt
YWdlPihpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJu
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKE5h
dGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiB7Ci0gICAgYXBwZW5kPERyYXdQYXR0ZXJuPihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CisgICAgaWYgKG1fZGVs
ZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUtPmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAg
IG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CisgICAgYXBwZW5kPERyYXdQ
YXR0ZXJuPihpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRp
b25zKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6c2F2ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaAppbmRleCA0YWFjNDVkNzVlMGQyZDE1MTIxYzZmOTZmYzgyNDlkMTViMTU4
YzQyLi43N2NiYTMzNmRjNWI5NGY0ZGIyMWRhNjYxMTA3YmQ0YzMyY2Y3MDg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTEwMyw4ICsxMDMsOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1
bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hv
clBvaW50LCBGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdJbWFn
ZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZl
SW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBm
bG9hdCBib3JkZXJUaGlja25lc3MpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0xpbmUoY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
cGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA2NGU2NmViZDE3MzM0NzhmODA0YWE0MWMw
ZTI0YWJkZjYwN2M5MGI2Li45YjcxODllOTg5ZGIyY2EzN2FlZGM0MDZkMjJlMDEzZTRjODRiNzlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC00NSwzMSAr
NDUsNDIgQEAgUmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb24KIAogUmVwbGF5ZXI6On5SZXBsYXllcigp
ID0gZGVmYXVsdDsKIAordGVtcGxhdGU8Y2xhc3MgVD4KK2lubGluZSBzdGF0aWMgYm9vbCBhcHBs
eUltYWdlQnVmZmVySXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEltYWdlQnVm
ZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzLCBJdGVtSGFuZGxlIGl0ZW0pCit7CisgICAgaWYgKCFp
dGVtLmlzPFQ+KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvJiBpbWFnZUJ1ZmZl
ckl0ZW0gPSBpdGVtLmdldDxUPigpOworICAgIGlmIChhdXRvKiBpbWFnZUJ1ZmZlciA9IGltYWdl
QnVmZmVycy5nZXQoaW1hZ2VCdWZmZXJJdGVtLmltYWdlQnVmZmVySWRlbnRpZmllcigpKSkKKyAg
ICAgICAgaW1hZ2VCdWZmZXJJdGVtLmFwcGx5KGNvbnRleHQsICppbWFnZUJ1ZmZlcik7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIFQ+CitpbmxpbmUgc3RhdGljIGJvb2wg
YXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRp
dmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtKQoreworICAgIGlm
ICghaXRlbS5pczxUPigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byYgbmF0aXZl
SW1hZ2VJdGVtID0gaXRlbS5nZXQ8VD4oKTsKKyAgICBpZiAoYXV0byogaW1hZ2UgPSBuYXRpdmVJ
bWFnZXMuZ2V0KG5hdGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50aWZpZXIoKSkpCisgICAgICAgIG5h
dGl2ZUltYWdlSXRlbS5hcHBseShjb250ZXh0LCAqaW1hZ2UpOworICAgIHJldHVybiB0cnVlOwor
fQorCiB2b2lkIFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQogewogICAgIGlm
IChtX2RlbGVnYXRlICYmIG1fZGVsZWdhdGUtPmFwcGx5KGl0ZW0sIG1fY29udGV4dCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChpdGVtLmlzPENsaXBUb0ltYWdlQnVmZmVyPigpKSB7Ci0g
ICAgICAgIGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KCk7Ci0g
ICAgICAgIGlmIChhdXRvKiBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJzLmdldChjbGlwSXRl
bS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICBjbGlwSXRlbS5hcHBseSht
X2NvbnRleHQsICppbWFnZUJ1ZmZlcik7CisgICAgaWYgKGFwcGx5SW1hZ2VCdWZmZXJJdGVtPERy
YXdJbWFnZUJ1ZmZlcj4obV9jb250ZXh0LCBtX2ltYWdlQnVmZmVycywgaXRlbSkpCisgICAgICAg
IHJldHVybjsKKyAgICBpZiAoYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+
KG1fY29udGV4dCwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQogICAgICAgICByZXR1cm47Ci0gICAg
fQogCi0gICAgaWYgKGl0ZW0uaXM8RHJhd0ltYWdlQnVmZmVyPigpKSB7Ci0gICAgICAgIGF1dG8m
IGRyYXdJdGVtID0gaXRlbS5nZXQ8RHJhd0ltYWdlQnVmZmVyPigpOwotICAgICAgICBpZiAoYXV0
byogaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVycy5nZXQoZHJhd0l0ZW0uaW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyKCkpKQotICAgICAgICAgICAgZHJhd0l0ZW0uYXBwbHkobV9jb250ZXh0LCAqaW1h
Z2VCdWZmZXIpOworICAgIGlmIChhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZlSW1hZ2U+
KG1fY29udGV4dCwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIAotICAgIGlmIChpdGVtLmlzPERyYXdOYXRpdmVJbWFnZT4oKSkgewotICAgICAgICBh
dXRvJiBkcmF3SXRlbSA9IGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKTsKLSAgICAgICAgaWYg
KGF1dG8qIGltYWdlID0gbV9uYXRpdmVJbWFnZXMuZ2V0KGRyYXdJdGVtLmltYWdlSWRlbnRpZmll
cigpKSkKLSAgICAgICAgICAgIGRyYXdJdGVtLmFwcGx5KG1fY29udGV4dCwgKmltYWdlKTsKKyAg
ICBpZiAoYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KG1fY29udGV4dCwgbV9uYXRp
dmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgaXRlbS5hcHBs
eShtX2NvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggOGMw
ZGEyN2U4NmJkMTE3NGM4NGQ4M2MyZTc3MGYyNjIyYWU5ZWY3ZS4uMjlhODJhODk3ODIyOWIwZjU4
NzNhYmRmODJiZmFmODA2Y2YxNjU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3Bw
CkBAIC00MTYsMTkgKzQxNiwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmx1c2goKQogICAg
IERpcmVjdDJEOjpmbHVzaCgqcGxhdGZvcm1Db250ZXh0KCkpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybVBhdHRlcm4oY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkgfHwgIXBhdHRlcm5UcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5k
cmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgc3BhY2luZywgb3B0aW9ucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBB
U1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAgIGlmIChhdXRvIHRpbGVJbWFnZSA9IGlt
YWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKHRoaXMpKQotICAgICAgICBEaXJlY3QyRDo6
ZHJhd1BhdHRlcm4oKnBsYXRmb3JtQ29udGV4dCgpLCBXVEZNb3ZlKHRpbGVJbWFnZSksIEludFNp
emUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsK
KyAgICBhdXRvIHRpbGVJbWFnZSA9IGltYWdlOworICAgIERpcmVjdDJEOjpkcmF3UGF0dGVybigq
cGxhdGZvcm1Db250ZXh0KCksIFdURk1vdmUodGlsZUltYWdlKSwgSW50U2l6ZShpbWFnZS5zaXpl
KCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25z
LmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogfQogCiAvLyBEcmF3
cyBhIGZpbGxlZCByZWN0YW5nbGUgd2l0aCBhIHN0cm9rZWQgYm9yZGVyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCAxYzYxZTQyNzE1NzE5ZTM1MzRjN2E3ODI5
M2RhODZlZDc4OWI3MjJlLi4wYzRmM2E0OTczNjliMDQwZTVmZWZlYzE3MjFkMGM3ZTZlY2Y4Yzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcApAQCAtMjc0LDExICsy
NzQsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFn
ZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2EKICAgICBEaXJlY3QyRDo6ZHJhd05hdGl2
ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGlt
YWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3Qy
RDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRDo6ZHJhd1BhdHRlcm4oKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGF1dG8qIGNvbnRleHQgPSAmZ3JhcGhpY3ND
b250ZXh0KCk7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKGNvbnRleHQpKQotICAgICAgICBEaXJlY3QyRDo6ZHJhd1BhdHRlcm4obV9wbGF0
Zm9ybUNvbnRleHQsIFdURk1vdmUoc3VyZmFjZSksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVz
dFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucy5jb21wb3Np
dGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKKyAgICBpZiAoYXV0byBzdXJmYWNl
ID0gaW1hZ2UucGxhdGZvcm1JbWFnZSgpKQorICAgICAgICBEaXJlY3QyRDo6ZHJhd1BhdHRlcm4o
bV9wbGF0Zm9ybUNvbnRleHQsIFdURk1vdmUoc3VyZmFjZSksIEludFNpemUoaW1hZ2VTaXplKSwg
ZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucy5jb21w
b3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxv
YXQgYm9yZGVyVGhpY2tuZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCmlu
ZGV4IDU0ZjBmOGIyZWUwNWRlZjYyMTFiZWJjNjQwOTc5YTQwNjliOWRmMTMuLjkyY2UzZjA5YmI4
NmYwOGFjZDVjMjZhYjU4NjA3ZGEyMjhmN2U3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1w
bERpcmVjdDJELmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIHZvaWQgZHJhd0dseXBo
cyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCwgdW5zaWduZWQsIGNv
bnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CiAKICAgICBib29s
IGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwotICAgIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBi
b29sIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0
dGVybigoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0
KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBG
bG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggNTQ5NWZj
YWZiMGFjOTlkNjMxZTc4NzNhOWExYWJkYzEyYTNhYzdmNC4uNDdiZmJlYzkzZGE2MmM2MDBjYjA3
NzdlN2ViY2QzNWRhNjJlNjhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMjY0LDgg
KzI2NCw2IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9S
RVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjCiAgICAgICAgIHJldHVybiBkZWNvZGVB
bmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KGRhdGEsIGxlbmd0aCwgaGFu
ZGxlTG9jYXRpb24pOwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0aDoK
ICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd1BhdGg+KGRh
dGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5
TGlzdDo6RHJhd1BhdHRlcm4+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6CiAgICAgICAgIHJl
dHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxDb21wb3NpdGVkUmVjdD4oZGF0
YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkZpbGxQYXRoOgpAQCAtMzAyLDYgKzMwMCw3IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJ
dGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVj
CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNlOgogICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CiAgICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKKyAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdMaW5lOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoKICAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDVmMWJkYjRjOTU1NTIzZWI1NWRjZmMxM2JlOGZiNmI5
NWZiNjlkYTMuLjI3ZThmYzA1YjMyN2RkMmY1YmNkN2YxYmM3YzA5ODA4OTQ1NmM5ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0yMTgsOCArMjE4LDYgQEAgcHJvdGVjdGVkOgog
ICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEcmF3TGluZXNGb3JUZXh0PihpdGVtLmdldDxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0xpbmVzRm9yVGV4dD4oKSk7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0aDoKICAgICAgICAgICAgIHJldHVybiBJUEM6OkVu
Y29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdGg+
KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aD4oKSk7Ci0gICAgICAgIGNh
c2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAg
ICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd1BhdHRlcm4+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
UGF0dGVybj4oKSk7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpGaWxsQ29tcG9zaXRlZFJlY3Q6CiAgICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjpl
bmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxDb21wb3NpdGVkUmVj
dD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxDb21wb3NpdGVkUmVjdD4oKSk7
CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUGF0aDoK
QEAgLTI1Niw2ICsyNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKICAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKICAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAgICAgIGNh
c2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoKICAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgo=
</data>
<flag name="commit-queue"
          id="430679"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413962</attachid>
            <date>2020-11-12 12:06:58 -0800</date>
            <delta_ts>2020-11-12 12:14:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218865-20201112120657.patch</filename>
            <type>text/plain</type>
            <size>47463</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWVmNzg0MzhlNjA0ZGQ5
MzQ0OGY4MDFlZjM1ODM4M2NkN2Y5YzM5Mi4uMTJiYjliM2YzMDY1YTAxMDNhY2EwYTRhMGMyM2I2
NjQ0MmEyMjQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIwLTExLTEyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybigpIHNob3VsZCB0YWtlIGEgTmF0aXZlSW1hZ2Ug
YXJndW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxODg2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gcmVjb3JkaW5nIHRoZSBEaXNwbGF5TGlzdCBpdGVtIERyYXdQYXR0ZXJuLCB0aGUgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyCisgICAgICAgIG9mIHRoZSBOYXRpdmVJbWFnZSB3aWxs
IGJlIHJlY29yZGVkLiBXaGVuIHJlcGxheWluZyBpdCBiYWNrLCB0aGUKKyAgICAgICAgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHdpbGwgYmUgcmVzb2x2ZWQgdG8gYSBOYXRpdmVJbWFnZSBh
bmQgdGhlCisgICAgICAgIGl0ZW0gd2lsbCBiZSBhcHBsaWVkIHRoZSBzYW1lIHdheSB3ZSBmb3Ig
RHJhd05hdGl2ZUltYWdlLgorCisgICAgICAgIERyYXdQYXR0ZXJuIHdpbGwgYmUgaW5saW5lIERp
c3BsYXlMaXN0IGl0ZW0gYW5kIHNob3VsZCBub3QgbmVlZCBlbmNvZGluZworICAgICAgICBvciBk
ZWNvZGluZyB3aGVuIHNlbmRpbmcgaXQgdG8gdGhlIEdQVS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1Bh
dHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1J
bWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1QYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybVBhdHRlcm4pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6
ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6Y29w
eVRvIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNE
cmF3aW5nSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNJbmxpbmVJdGVt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRlcm46OkRy
YXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6
YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRlcm46OkRyYXdQ
YXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6aW1h
Z2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
UGF0dGVybjo6aW1hZ2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3UGF0dGVybjo6dGlsZVJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdQYXR0ZXJuOjpwYXR0ZXJuVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6aW1hZ2UgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjplbmNvZGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjpk
ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjphcHBseU5hdGl2ZUltYWdlSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6
CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHREaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdQbGF0Zm9ybVBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3UGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmg6CisKIDIwMjAt
MTEtMTIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJ
bnRlZ3JhdGlvbl0gdmVydGljYWwtYWxpZ246IHN1cGVyIGFuZCBzdWIgdmFsdWVzIGFyZSBub3Qg
c3VwcG9ydGVkIHlldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODQyNGM5NjY0YjdjNGM2NDFmMWVlMjYyYzczOTRm
ZWY3YTMyYzdjMS4uN2VhYWM2M2I4YmVhNmM2NjIyZTk4ZGFjMmVjZWM0NmM0ZTM4ZDZmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0xMS0xMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1BhdHRlcm4oKSBzaG91bGQgdGFrZSBhIE5hdGl2ZUltYWdlIGFyZ3VtZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4NjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKwogMjAyMC0xMS0xMiAgRGllZ28g
UGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVucmV2aWV3
ZWQsIG5vbi11bmlmaWVkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDhjYjEyNTk3OTQ5NmJkMTkw
OWNlNzIyYWMwYzZiZDc3MjIwNDk1NzQuLjVjYWNhODU0NTJjMWE2OThiOTVlNGRmNDQwMDg1OGM5
NjM0NWVjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcApAQCAtODQyLDYgKzg0MiwxOSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2Us
IGNvbnN0CiAgICAgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoV1RGTW92ZShpbWFnZSksICp0
aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KIAordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAh
cGF0dGVyblRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdQYXR0ZXJuKGltYWdlLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZHJhd1BsYXRmb3JtUGF0
dGVybihpbWFnZS5wbGF0Zm9ybUltYWdlKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7Cit9CisKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpjbGlwUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYg
cmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA0ZjkyY2RhY2Vl
NDA1M2FhYzIwODk5NTk0M2QyNjVjODI4MDRjNWFmLi4wOGFiM2IyMjAwZmE5ZDJkN2Q1YmE1ZTVi
YjNhNThhZGNjMTI1NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMzkyLDEyICszOTIsMTIgQEAgcHVibGljOgogICAg
IHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKICAgICB2b2lkIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwog
ICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSk7CiAgICAgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoUmVmUHRyPEltYWdlQnVm
ZmVyPiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKKyAgICB2b2lkIGRyYXdQ
YXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9
KTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eShJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eTsgfQogCkBAIC02NTAsNyArNjUwLDggQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgcGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0
IENvbG9yJik7CiAKLSAgICB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSk7CisgICAgdm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdl
UHRyJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KTsKKyAgICB2b2lkIGRyYXdQbGF0Zm9ybVBhdHRlcm4oY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYs
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAKICAgICBGbG9hdFJlY3QgY29tcHV0
ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBi
b29sIHByaW50aW5nLCBDb2xvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGZiYzg3MjNlMzNkZmE0
MzY1YWZlMzdkZTI1N2RhZjI1MThkMWJlMy4uNWM4MjVmN2Q0MWI5ODYxNmQxN2ZkYjhlYmU3Y2Zm
ZDdkMmJmY2M4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzAsOCArNzAsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwg
dW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNo
b3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZs
b2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5h
dGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxv
YXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRy
YXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JikgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDA5OGY2MDEzNmVjMDA3
YmRkOGM3NmI3YzgxNDYxYjFlNjAzNjkwNDkuLjkzN2FhNGQzNTkzZDFkMjM5MTczM2YwYzAyNzc0
YTIxMTEzMzY1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHAKQEAgLTEzOSwxMCArMTM5LDExIEBAIHZvaWQgSW1hZ2U6OmZpbGxXaXRoU29saWRDb2xvcihH
cmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKIAogdm9pZCBJ
bWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
LSAgICBpZiAoIW5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCZjdHh0KSkKKyAgICBhdXRvIHRp
bGVJbWFnZSA9IHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUob3B0aW9u
cy5vcmllbnRhdGlvbigpID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSk7CisgICAgaWYg
KCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRo
aXMsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wdGlvbnMpOworICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRpbGVJbWFnZSwgc2l6ZSgpLCBkZXN0
UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25z
KTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+
ZGlkRHJhdygqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggZTdjNGE3
OWNjMDk4MTZjZTA2ZDk5YmQxOWE4MTMzN2U5YzFkOGIxNC4uNWM0OTllODllODBkMDJiNDc4NWVk
NmY3MzIzYjgxZmZkYTZlMGZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAt
NjU1LDE5ICs2NTUsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQKICAgICBDYWlybzo6Zmls
bFJlY3RXaXRoUm91bmRlZEhvbGUoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCByb3VuZGVkSG9s
ZVJlY3QsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRl
KSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtUGF0dGVybihj
b25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpIHx8ICFwYXR0ZXJuVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd1Bh
dHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IHNwYWNpbmcsIG9wdGlvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgQVNTRVJU
KGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdl
Lm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVy
bigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCks
IEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNv
bnRleHQoKSwgcGxhdGZvcm1JbWFnZS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0
UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5h
YmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKaW5kZXggY2U4NTdmZDJh
MzE3MDZjZjRjMWZmYzgxNTRiYzIwMGIwMDQ3MDMxNC4uMTQ2YTVlY2FkNTA1MTQ1YzlmODk1MDZl
YzhkYjA1NzcyMzZlYjNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3Bw
CkBAIC0yNzYsMTAgKzI3NiwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJh
d05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaQogICAgIENhaXJv
OjpkcmF3UGxhdGZvcm1JbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UucGxhdGZvcm1JbWFn
ZSgpLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUp
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQYXR0ZXJuKEltYWdl
JiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxl
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4o
TmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsKLSAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybihtX3BsYXRmb3JtQ29udGV4
dCwgbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXpl
KCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25z
KTsKKyAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7CisgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKG1f
cGxhdGZvcm1Db250ZXh0LCBpbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIEludFNpemUoaW1h
Z2VTaXplKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0
aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmgKaW5kZXggNWY0MTg0NTc5ZGM4MjNiM2U2NWY3OTFkN2JmMTY4NDA3
Njc4YzJhZS4uMWJlNWEwMmQ0ZDYzYzE5MDMzODUxM2E5NWVlNDUzZDczYTAxNDY5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYs
IGZsb2F0KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBj
b25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggMjZlMDRj
MDk4ODI0YWNhZjRmYjhjODc3MjMyN2U5MDlmMDZiZmY2Mi4uYzkyNzc3MmVjMTE0ODYyZDY4MjJh
ZGQ0OGM5OGQ5OTU2NGVlNDU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNDE1LDE2ICs0MTUs
MTEgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQogICAg
IH0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybVBhdHRlcm4o
Y29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIXBhdHRlcm5U
cmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2lt
cGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29u
dGV4dCgpOwogICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAg
ICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGRlc3RSZWN0KTsKQEAgLTQ0MiwyNiArNDM3
LDIzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAgICAgZmxvYXQgYWRqdXN0ZWRYID0gcGhh
c2UueCgpIC0gZGVzdFJlY3QueCgpICsgdGlsZVJlY3QueCgpICogbmFycm93UHJlY2lzaW9uVG9G
bG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7IC8vIFdlIHRyYW5zbGF0ZWQgdGhlIGNvbnRleHQg
c28gdGhhdCBkZXN0UmVjdC54KCkgaXMgdGhlIG9yaWdpbiwgc28gc3VidHJhY3QgaXQgb3V0Lgog
ICAgIGZsb2F0IGFkanVzdGVkWSA9IGRlc3RSZWN0LmhlaWdodCgpIC0gKHBoYXNlLnkoKSAtIGRl
c3RSZWN0LnkoKSArIHRpbGVSZWN0LnkoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVy
blRyYW5zZm9ybS5kKCkpICsgc2NhbGVkVGlsZUhlaWdodCk7CiAKLSAgICBhdXRvIHRpbGVJbWFn
ZSA9IGltYWdlLnByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUob3B0aW9u
cy5vcmllbnRhdGlvbigpID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSk7Ci0KLSAgICBm
bG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQo
KSk7CisgICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpOwogCiAgICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlOwotICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUg
PSBpbWFnZS5zaXplKCk7CiAgICAgaWYgKHRpbGVSZWN0LnNpemUoKSA9PSBpbWFnZVNpemUpCi0g
ICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgICAgIHN1
YkltYWdlID0gaW1hZ2U7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIENvcHlpbmcgYSBzdWItaW1h
Z2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2Ugc3RvcHMgdGhlIGRlY29kaW5nIG9m
IHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQgc2hvdWxkIG5ldmVyIGhhcHBlbgogICAgICAgICAvLyBi
ZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9ubHkgdXNlZCBmb3IgYm9yZGVyLWltYWdlLCB3aGljaCBv
bmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1hZ2UgaXMgZnVsbHkgZGVjb2RlZC4KLSAgICAgICAgQVNT
RVJUKGggPT0gaW1hZ2UuaGVpZ2h0KCkpOwotICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJ
bWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQo
KSwgdGlsZVJlY3QpKTsKKyAgICAgICAgQVNTRVJUKGggPT0gaW1hZ2VTaXplLmhlaWdodCgpKTsK
KyAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3Qo
aW1hZ2UuZ2V0KCksIHRpbGVSZWN0KSk7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgbmVlZCB0byBw
YWludCBnYXBzIGJldHdlZW4gdGlsZXMgYmVjYXVzZSB3ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRl
ZCBpbWFnZSBvciBub24temVybyBzcGFjaW5nLAogICAgIC8vIGZhbGwgYmFjayB0byB0aGUgbGVz
cyBlZmZpY2llbnQgQ0dQYXR0ZXJuLWJhc2VkIG1lY2hhbmlzbS4KICAgICBmbG9hdCBzY2FsZWRU
aWxlV2lkdGggPSB0aWxlUmVjdC53aWR0aCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0
ZXJuVHJhbnNmb3JtLmEoKSk7Ci0gICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7Ci0gICAgaWYgKHcgPT0gaW1hZ2Uuc2l6ZSgpLndp
ZHRoKCkgJiYgaCA9PSBpbWFnZS5zaXplKCkuaGVpZ2h0KCkgJiYgIXNwYWNpbmcud2lkdGgoKSAm
JiAhc3BhY2luZy5oZWlnaHQoKSkgeworICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgoaW1h
Z2UuZ2V0KCkpOworICAgIGlmICh3ID09IGltYWdlU2l6ZS53aWR0aCgpICYmIGggPT0gaW1hZ2VT
aXplLmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcuaGVpZ2h0KCkpIHsK
ICAgICAgICAgLy8gRklYTUU6IENHIHNlZW1zIHRvIHNuYXAgdGhlIGltYWdlcyB0byBpbnRlZ3Jh
bCBzaXplcy4gV2hlbiB3ZSBjYXJlIChlLmcuIHdpdGggYm9yZGVyLWltYWdlLXJlcGVhdDogcm91
bmQpLAogICAgICAgICAvLyB3ZSBzaG91bGQgdGlsZSBhbGwgYnV0IHRoZSBsYXN0LCBhbmQgc3Rl
dGNoIHRoZSBsYXN0IGltYWdlIHRvIGZpdC4KICAgICAgICAgQ0dDb250ZXh0RHJhd1RpbGVkSW1h
Z2UoY29udGV4dCwgRmxvYXRSZWN0KGFkanVzdGVkWCwgYWRqdXN0ZWRZLCBzY2FsZWRUaWxlV2lk
dGgsIHNjYWxlZFRpbGVIZWlnaHQpLCBzdWJJbWFnZS5nZXQoKSk7CkBAIC00NzAsNyArNDYyLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbWF0
cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChwYXR0
ZXJuVHJhbnNmb3JtLmEoKSksIDAsIDAsIG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChwYXR0ZXJu
VHJhbnNmb3JtLmQoKSksIGFkanVzdGVkWCwgYWRqdXN0ZWRZKTsKICAgICAgICAgbWF0cml4ID0g
Q0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQobWF0cml4LCBDR0NvbnRleHRHZXRDVE0oY29udGV4dCkp
OwogICAgICAgICAvLyBUaGUgdG9wIG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2UgaXMgZHJh
d24gYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGlsZS4gTWFwIGl0IHRvIHRoZSB0b3AuCi0gICAgICAg
IG1hdHJpeCA9IENHQWZmaW5lVHJhbnNmb3JtVHJhbnNsYXRlKG1hdHJpeCwgMCwgaW1hZ2Uuc2l6
ZSgpLmhlaWdodCgpIC0gaCk7CisgICAgICAgIG1hdHJpeCA9IENHQWZmaW5lVHJhbnNmb3JtVHJh
bnNsYXRlKG1hdHJpeCwgMCwgaW1hZ2VTaXplLmhlaWdodCgpIC0gaCk7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAgICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1TY2FsZShtYXRy
aXgsIDEsIC0xKTsKICAgICAgICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1UcmFuc2xhdGUo
bWF0cml4LCAwLCAtaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwCmluZGV4IDQzYTIzZTE2NGM0OTY0YjY1NmRiOTJiZmQxMWQ4NzQ5MzM0ZDk4NTQuLmU1Mjky
NGIxYTAxZTNkMzM1MzUxNTlhNzllY2Y1MmVmNzgxZmZmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC0zMjIsMTAgKzMyMiw2IEBAIHZvaWQgSXRl
bUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIGdldDxEcmF3UGF0aD4oKS5+RHJhd1BhdGgoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjog
ewotICAgICAgICBnZXQ8RHJhd1BhdHRlcm4+KCkufkRyYXdQYXR0ZXJuKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OiB7CiAg
ICAgICAgIGdldDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCkufkZpbGxDb21wb3NpdGVkUmVjdCgpOwog
ICAgICAgICByZXR1cm47CkBAIC00MjQsNiArNDIwLDEwIEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVz
dHJveSgpCiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPERyYXdOYXRpdmVJbWFnZT46OnZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjogeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3UGF0dGVybj46OnZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZTogewogICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3TGluZT46
OnZhbHVlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTc3LDE0ICs1NzcsMTQgQEAgdm9pZCBJdGVt
SGFuZGxlOjpjb3B5VG8oSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKICAgICAgICAgbmV3
IChpdGVtT2Zmc2V0KSBEcmF3TmF0aXZlSW1hZ2UoZ2V0PERyYXdOYXRpdmVJbWFnZT4oKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6IHsKLSAg
ICAgICAgbmV3IChpdGVtT2Zmc2V0KSBEcmF3UGF0aChnZXQ8RHJhd1BhdGg+KCkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB7CiAgICAg
ICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd1BhdHRlcm4oZ2V0PERyYXdQYXR0ZXJuPigpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDogeworICAg
ICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdQYXRoKGdldDxEcmF3UGF0aD4oKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OiB7
CiAgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRmlsbENvbXBvc2l0ZWRSZWN0KGdldDxGaWxsQ29t
cG9zaXRlZFJlY3Q+KCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtVHlwZS5jcHAKaW5kZXggZTk5MGRlZTQzYmZkYWYzOTA3M2EzNTZmNjBmYTVlZDNi
Mjg0YWY2OC4uNzdjOWNkNDFjZGRkZTZmNzM1ZTNjOTgzMTExYmM4OTgxNDdjYzNjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcApAQCAtMjA4LDggKzIwOCw4IEBA
IGJvb2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdMaW5lOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQ
YXRoOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgogICAgIGNhc2UgSXRlbVR5cGU6OkVu
ZFRyYW5zcGFyZW5jeUxheWVyOgogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVj
dDoKQEAgLTI1NCw3ICsyNTQsNiBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xp
bmVzRm9yVGV4dDoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3UGF0dGVybjoKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6
CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJl
Y3RXaXRoQ29sb3I6CkBAIC0yODIsNiArMjgxLDcgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5
cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3SW1hZ2VCdWZmZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdl
OgorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdMaW5lOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgogICAgIGNhc2UgSXRlbVR5cGU6
OkVuZFRyYW5zcGFyZW5jeUxheWVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
CmluZGV4IDY4MmVmZWNmZWU0MzliNjhjM2Y5Zjk4MWRkZGNmMDJhZWI2ZWIxMjkuLjljMWUzYjVm
YjZhZWJiMDY0Y2I0MjM3YTRkYTJlZmJmZTk5MDg0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAKQEAgLTQ1OCwyNSArNDU4LDMxIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCiAg
ICAgcmV0dXJuIHRzOwogfQogCi1EcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQotICAgIDogbV9pbWFnZShpbWFnZSkKLSAgICAsIG1fcGF0dGVyblRyYW5z
Zm9ybShwYXR0ZXJuVHJhbnNmb3JtKQotICAgICwgbV90aWxlUmVjdCh0aWxlUmVjdCkKK0RyYXdQ
YXR0ZXJuOjpEcmF3UGF0dGVybihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVu
dGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IG1f
aW1hZ2VJZGVudGlmaWVyKGltYWdlSWRlbnRpZmllcikKKyAgICAsIG1faW1hZ2VTaXplKGltYWdl
U2l6ZSkKICAgICAsIG1fZGVzdGluYXRpb24oZGVzdFJlY3QpCisgICAgLCBtX3RpbGVSZWN0KHRp
bGVSZWN0KQorICAgICwgbV9wYXR0ZXJuVHJhbnNmb3JtKHBhdHRlcm5UcmFuc2Zvcm0pCiAgICAg
LCBtX3BoYXNlKHBoYXNlKQogICAgICwgbV9zcGFjaW5nKHNwYWNpbmcpCiAgICAgLCBtX29wdGlv
bnMob3B0aW9ucykKIHsKIH0KIAotdm9pZCBEcmF3UGF0dGVybjo6YXBwbHkoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KSBjb25zdAorTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBEcmF3UGF0
dGVybjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKLSAgICBjb250ZXh0LmRyYXdQ
YXR0ZXJuKG1faW1hZ2UuZ2V0KCksIG1fZGVzdGluYXRpb24sIG1fdGlsZVJlY3QsIG1fcGF0dGVy
blRyYW5zZm9ybSwgbV9waGFzZSwgbV9zcGFjaW5nLCBtX29wdGlvbnMpOworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit2b2lkIERyYXdQYXR0ZXJuOjphcHBseShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIE5hdGl2ZUltYWdlJiBpbWFnZSkgY29uc3QKK3sKKyAgICBjb250ZXh0LmRy
YXdQYXR0ZXJuKGltYWdlLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvbiwgbV90aWxlUmVjdCwg
bV9wYXR0ZXJuVHJhbnNmb3JtLCBtX3BoYXNlLCBtX3NwYWNpbmcsIG1fb3B0aW9ucyk7CiB9CiAK
IHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3
UGF0dGVybiYgaXRlbSkKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlIiwgaXRlbS5pbWFn
ZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWlkZW50aWZpZXIiLCBpdGVtLmltYWdl
SWRlbnRpZmllcigpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdHRlcm4tdHJhbnNmb3JtIiwg
aXRlbS5wYXR0ZXJuVHJhbnNmb3JtKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgidGlsZS1yZWN0
IiwgaXRlbS50aWxlUmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0
ZW0uZGVzdFJlY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCAzZWI3
NGQ3OGRiNTFkYjgzZTM1OTZhNmY5YjczZDJkZTYzNTkzMTYxLi43YzEzZTNlNWNlMjVlNjU3Njk1
ZTE5Njg3ZGFlZDliNmZkNWIzOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgK
QEAgLTEwNzksOTEgKzEwNzksMzYgQEAgcHJpdmF0ZToKIGNsYXNzIERyYXdQYXR0ZXJuIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6
OkRyYXdQYXR0ZXJuOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBm
YWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IHRydWU7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBEcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmF3UGF0dGVybihS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0gICAg
Y29uc3QgSW1hZ2UmIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQotICAg
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGF0dGVyblRyYW5zZm9ybTsgfQotICAgIEZsb2F0UmVjdCB0aWxlUmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGlsZVJlY3Q7IH0KKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1h
Z2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUlkZW50aWZpZXI7IH0KKyAgICBG
bG9hdFNpemUgaW1hZ2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZVNpemU7IH0KICAgICBG
bG9hdFJlY3QgZGVzdFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CisgICAg
RmxvYXRSZWN0IHRpbGVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV90aWxlUmVjdDsgfQorICAgIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGF0dGVyblRyYW5zZm9ybTsgfQogICAgIEZsb2F0UG9pbnQgcGhhc2UoKSBjb25zdCB7IHJldHVy
biBtX3BoYXNlOyB9CiAgICAgRmxvYXRTaXplIHNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nw
YWNpbmc7IH0KIAotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAg
Tk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25z
dDsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdlJikgY29uc3Q7
CiAKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJu
IFdURjo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCi0g
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owot
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxEcmF3UGF0dGVybj4g
ZGVjb2RlKERlY29kZXImKTsKLQogcHJpdmF0ZToKLSAgICBtdXRhYmxlIFJlZjxJbWFnZT4gbV9p
bWFnZTsgLy8gRklYTUU6IERyYXdpbmcgaW1hZ2VzIGNhbiBjYXVzZSB0aGVpciBhbmltYXRpb25z
IHRvIHByb2dyZXNzLiBUaGlzIHNob3VsZG4ndCBoYXZlIHRvIGJlIG11dGFibGUuCi0gICAgQWZm
aW5lVHJhbnNmb3JtIG1fcGF0dGVyblRyYW5zZm9ybTsKLSAgICBGbG9hdFJlY3QgbV90aWxlUmVj
dDsKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9pbWFnZUlkZW50aWZpZXI7Cisg
ICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwor
ICAgIEZsb2F0UmVjdCBtX3RpbGVSZWN0OworICAgIEFmZmluZVRyYW5zZm9ybSBtX3BhdHRlcm5U
cmFuc2Zvcm07CiAgICAgRmxvYXRQb2ludCBtX3BoYXNlOwogICAgIEZsb2F0U2l6ZSBtX3NwYWNp
bmc7CiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOwogfTsKIAotdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgRHJhd1BhdHRlcm46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAotewotICAgIEltYWdlSGFuZGxlIGltYWdlSGFuZGxlOwotICAgIGltYWdlSGFuZGxl
LmltYWdlID0gbV9pbWFnZS5wdHIoKTsKLSAgICBlbmNvZGVyIDw8IGltYWdlSGFuZGxlOwotICAg
IGVuY29kZXIgPDwgbV9wYXR0ZXJuVHJhbnNmb3JtOwotICAgIGVuY29kZXIgPDwgbV90aWxlUmVj
dDsKLSAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb247Ci0gICAgZW5jb2RlciA8PCBtX3BoYXNl
OwotICAgIGVuY29kZXIgPDwgbV9zcGFjaW5nOwotICAgIGVuY29kZXIgPDwgbV9vcHRpb25zOwot
fQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RHJhd1BhdHRlcm4+IERyYXdQ
YXR0ZXJuOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxJbWFnZUhh
bmRsZT4gaW1hZ2VIYW5kbGU7Ci0gICAgZGVjb2RlciA+PiBpbWFnZUhhbmRsZTsKLSAgICBpZiAo
IWltYWdlSGFuZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9u
YWw8QWZmaW5lVHJhbnNmb3JtPiBwYXR0ZXJuVHJhbnNmb3JtOwotICAgIGRlY29kZXIgPj4gcGF0
dGVyblRyYW5zZm9ybTsKLSAgICBpZiAoIXBhdHRlcm5UcmFuc2Zvcm0pCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHRpbGVSZWN0OwotICAg
IGRlY29kZXIgPj4gdGlsZVJlY3Q7Ci0gICAgaWYgKCF0aWxlUmVjdCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZGVzdGluYXRpb247Ci0g
ICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvbjsKLSAgICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gcGhhc2U7
Ci0gICAgZGVjb2RlciA+PiBwaGFzZTsKLSAgICBpZiAoIXBoYXNlKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8RmxvYXRTaXplPiBzcGFjaW5nOwotICAgIGRl
Y29kZXIgPj4gc3BhY2luZzsKLSAgICBpZiAoIXNwYWNpbmcpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxJbWFnZVBhaW50aW5nT3B0aW9ucz4gb3B0aW9uczsK
LSAgICBkZWNvZGVyID4+IG9wdGlvbnM7Ci0gICAgaWYgKCFvcHRpb25zKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7ICppbWFnZUhhbmRsZS0+aW1hZ2UsICpk
ZXN0aW5hdGlvbiwgKnRpbGVSZWN0LCAqcGF0dGVyblRyYW5zZm9ybSwgKnBoYXNlLCAqc3BhY2lu
ZywgKm9wdGlvbnMgfX07Ci19Ci0KIGNsYXNzIEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIgewogcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6
QmVnaW5UcmFuc3BhcmVuY3lMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAppbmRleCAwMTYwMDNhYzZkNmEzNjhmMDFiZjllYmUyOWI3OWNjNTgxMTEwY2RiLi5m
NTAwMDVhNDU0YjM5ZjQ1Y2QwZmY3MWFkN2QxOWNhMWNkN2M3MGVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xODIsOSArMTgyLDEyIEBAIHZvaWQgUmVj
b3JkZXI6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjCiAgICAgYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaW1hZ2UucmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
dGlvbnMpOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCit2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGFwcGVuZDxE
cmF3UGF0dGVybj4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOworICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAgICBt
X2RlbGVnYXRlLT5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICBtX2Rpc3BsYXlMaXN0LmNh
Y2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgIGFwcGVuZDxEcmF3UGF0dGVybj4oaW1hZ2UucmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAKIHZvaWQg
UmVjb3JkZXI6OnNhdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5k
ZXggNGFhYzQ1ZDc1ZTBkMmQxNTEyMWM2Zjk2ZmM4MjQ5ZDE1YjE1OGM0Mi4uNzdjYmEzMzZkYzVi
OTRmNGRiMjFkYTY2MTEwN2JkNGMzMmNmNzA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oCkBAIC0xMDMsOCArMTAzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdH
bHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5z
aWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290
aGluZ01vZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6
SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0
ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92
ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tu
ZXNzKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAKaW5kZXggNjRlNjZlYmQxNzMzNDc4ZjgwNGFhNDFjMGUyNGFiZGY2MDdjOTBiNi4u
OWI3MTg5ZTk4OWRiMmNhMzdhZWRjNDA2ZDIyZTAxM2U0Yzg0Yjc5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtNDUsMzEgKzQ1LDQyIEBAIFJlcGxheWVy
OjpSZXBsYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IERpc3BsYXlMaXN0JiBk
aXNwbGF5TGlzdCwgY29uCiAKIFJlcGxheWVyOjp+UmVwbGF5ZXIoKSA9IGRlZmF1bHQ7CiAKK3Rl
bXBsYXRlPGNsYXNzIFQ+CitpbmxpbmUgc3RhdGljIGJvb2wgYXBwbHlJbWFnZUJ1ZmZlckl0ZW0o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdl
QnVmZmVycywgSXRlbUhhbmRsZSBpdGVtKQoreworICAgIGlmICghaXRlbS5pczxUPigpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byYgaW1hZ2VCdWZmZXJJdGVtID0gaXRlbS5nZXQ8
VD4oKTsKKyAgICBpZiAoYXV0byogaW1hZ2VCdWZmZXIgPSBpbWFnZUJ1ZmZlcnMuZ2V0KGltYWdl
QnVmZmVySXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSkpCisgICAgICAgIGltYWdlQnVmZmVy
SXRlbS5hcHBseShjb250ZXh0LCAqaW1hZ2VCdWZmZXIpOworICAgIHJldHVybiB0cnVlOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBUPgoraW5saW5lIHN0YXRpYyBib29sIGFwcGx5TmF0aXZlSW1hZ2VJ
dGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBu
YXRpdmVJbWFnZXMsIEl0ZW1IYW5kbGUgaXRlbSkKK3sKKyAgICBpZiAoIWl0ZW0uaXM8VD4oKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8mIG5hdGl2ZUltYWdlSXRlbSA9IGl0ZW0u
Z2V0PFQ+KCk7CisgICAgaWYgKGF1dG8qIGltYWdlID0gbmF0aXZlSW1hZ2VzLmdldChuYXRpdmVJ
bWFnZUl0ZW0uaW1hZ2VJZGVudGlmaWVyKCkpKQorICAgICAgICBuYXRpdmVJbWFnZUl0ZW0uYXBw
bHkoY29udGV4dCwgKmltYWdlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBSZXBsYXll
cjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkKIHsKICAgICBpZiAobV9kZWxlZ2F0ZSAmJiBt
X2RlbGVnYXRlLT5hcHBseShpdGVtLCBtX2NvbnRleHQpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoaXRlbS5pczxDbGlwVG9JbWFnZUJ1ZmZlcj4oKSkgewotICAgICAgICBhdXRvJiBjbGlw
SXRlbSA9IGl0ZW0uZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpOwotICAgICAgICBpZiAoYXV0byog
aW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVycy5nZXQoY2xpcEl0ZW0uaW1hZ2VCdWZmZXJJZGVu
dGlmaWVyKCkpKQotICAgICAgICAgICAgY2xpcEl0ZW0uYXBwbHkobV9jb250ZXh0LCAqaW1hZ2VC
dWZmZXIpOworICAgIGlmIChhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KG1f
Y29udGV4dCwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQorICAgICAgICByZXR1cm47CisgICAgaWYg
KGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihtX2NvbnRleHQsIG1faW1h
Z2VCdWZmZXJzLCBpdGVtKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGlmIChpdGVt
LmlzPERyYXdJbWFnZUJ1ZmZlcj4oKSkgewotICAgICAgICBhdXRvJiBkcmF3SXRlbSA9IGl0ZW0u
Z2V0PERyYXdJbWFnZUJ1ZmZlcj4oKTsKLSAgICAgICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0g
bV9pbWFnZUJ1ZmZlcnMuZ2V0KGRyYXdJdGVtLmltYWdlQnVmZmVySWRlbnRpZmllcigpKSkKLSAg
ICAgICAgICAgIGRyYXdJdGVtLmFwcGx5KG1fY29udGV4dCwgKmltYWdlQnVmZmVyKTsKKyAgICBp
ZiAoYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUltYWdlPihtX2NvbnRleHQsIG1fbmF0
aXZlSW1hZ2VzLCBpdGVtKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAo
aXRlbS5pczxEcmF3TmF0aXZlSW1hZ2U+KCkpIHsKLSAgICAgICAgYXV0byYgZHJhd0l0ZW0gPSBp
dGVtLmdldDxEcmF3TmF0aXZlSW1hZ2U+KCk7Ci0gICAgICAgIGlmIChhdXRvKiBpbWFnZSA9IG1f
bmF0aXZlSW1hZ2VzLmdldChkcmF3SXRlbS5pbWFnZUlkZW50aWZpZXIoKSkpCi0gICAgICAgICAg
ICBkcmF3SXRlbS5hcHBseShtX2NvbnRleHQsICppbWFnZSk7CisgICAgaWYgKGFwcGx5TmF0aXZl
SW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihtX2NvbnRleHQsIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGl0ZW0uYXBwbHkobV9jb250ZXh0KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHAKaW5kZXggZDYxMzQ1NTczZGM5OTEwMGZiMTM1NDkwYTVkMmIxM2E4MGRhM2M3MC4uMmM5
YWE4ODY5NjllYjA1MmVlYzYzMmNlOWM2ZTlkNTU3MjFmOTc2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTU2MCw3
ICs1NjAsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShO
YXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsbwogICAgIGFwcGVuZChjcmVhdGVDb21t
YW5kPERyYXdOYXRpdmVJbWFnZT4obmF0aXZlSW1hZ2UucGxhdGZvcm1JbWFnZSgpLCBkZXN0UmVj
dCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUp
KSk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0
dGVybihOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewogICAgIHN0cnVjdCBEcmF3UGF0dGVybiBmaW5hbCA6IFBhaW50aW5n
T3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBJbnRTaXpl
LCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgQWZmaW5lVHJhbnNmb3JtLCBGbG9hdFBvaW50LCBJbWFn
ZVBhaW50aW5nT3B0aW9ucz4gewogICAgICAgICB2aXJ0dWFsIH5EcmF3UGF0dGVybigpID0gZGVm
YXVsdDsKQEAgLTU3Nyw4ICs1NzcsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRy
YXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdAogICAgIH07
CiAKICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7Ci0gICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2Ug
PSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBhcHBlbmQoY3Jl
YXRlQ29tbWFuZDxEcmF3UGF0dGVybj4obmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSwgSW50
U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBvcHRpb25zKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BhdHRlcm4+
KG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgSW50U2l6ZShpbWFnZVNpemUpLCBkZXN0UmVj
dCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKSk7CiB9CiAKIHZv
aWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggNDViNDQzMjU2ZmU1NWRjNGQwNGZlMDVl
MjU1MTU3NTdhZjY1NmRjYy4uODBhMjZmZDk4ZTg0NDcxNjdiMTc2MWFmODkzMDcxMTZiMTEwMmNh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkcmF3SW1hZ2VC
dWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgV2ViQ29y
ZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3
UGF0dGVybihXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25z
dCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJh
d1BhdHRlcm4oV2ViQ29yZTo6TmF0aXZlSW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0xpbmUoY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHREaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IDhjMGRhMjdlODZiZDExNzRjODRk
ODNjMmU3NzBmMjYyMmFlOWVmN2UuLjI5YTgyYTg5NzgyMjliMGY1ODczYWJkZjgyYmZhZjgwNmNm
MTY1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAtNDE2LDE5ICs0MTYs
MTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZsdXNoKCkKICAgICBEaXJlY3QyRDo6Zmx1c2go
KnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0
ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
UGxhdGZvcm1QYXR0ZXJuKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpIHx8ICFwYXR0ZXJuVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2Us
IGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9w
dGlvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgQVNTRVJUKGhhc1BsYXRmb3Jt
Q29udGV4dCgpKTsKLSAgICBpZiAoYXV0byB0aWxlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSh0aGlzKSkKLSAgICAgICAgRGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKCpwbGF0
Zm9ybUNvbnRleHQoKSwgV1RGTW92ZSh0aWxlSW1hZ2UpLCBJbnRTaXplKGltYWdlLnNpemUoKSks
IGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMuY29t
cG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CisgICAgYXV0byB0aWxlSW1h
Z2UgPSBpbWFnZTsKKyAgICBEaXJlY3QyRDo6ZHJhd1BhdHRlcm4oKnBsYXRmb3JtQ29udGV4dCgp
LCBXVEZNb3ZlKHRpbGVJbWFnZSksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRp
bGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRv
cigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKIH0KIAogLy8gRHJhd3MgYSBmaWxsZWQgcmVjdGFu
Z2xlIHdpdGggYSBzdHJva2VkIGJvcmRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJl
Y3QyRC5jcHAKaW5kZXggMWM2MWU0MjcxNTcxOWUzNTM0YzdhNzgyOTNkYTg2ZWQ3ODliNzIyZS4u
MGM0ZjNhNDk3MzY5YjA0MGU1ZmVmZWMxNzIxZDBjN2U2ZWNmOGM5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJl
Y3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKQEAgLTI3NCwxMSArMjc0LDEwIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hCiAgICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShtX3BsYXRmb3Jt
Q29udGV4dCwgaW1hZ2UucGxhdGZvcm1JbWFnZSgpLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0
LCBzcmNSZWN0LCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0
YXRlKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3UGF0dGVy
bihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRy
YXdQYXR0ZXJuKChOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKLSAgICBhdXRvKiBjb250ZXh0ID0gJmdyYXBoaWNzQ29udGV4dCgpOwotICAgIGlm
IChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb250ZXh0
KSkKLSAgICAgICAgRGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBXVEZN
b3ZlKHN1cmZhY2UpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0
aW9ucy5ibGVuZE1vZGUoKSk7CisgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLnBsYXRmb3Jt
SW1hZ2UoKSkKKyAgICAgICAgRGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0
LCBXVEZNb3ZlKHN1cmZhY2UpLCBJbnRTaXplKGltYWdlU2l6ZSksIGRlc3RSZWN0LCB0aWxlUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwg
b3B0aW9ucy5ibGVuZE1vZGUoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJEOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVz
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAppbmRleCA1NGYwZjhiMmVlMDVk
ZWY2MjExYmViYzY0MDk3OWE0MDY5YjlkZjEzLi45MmNlM2YwOWJiODZmMDhhY2Q1YzI2YWI1ODYw
N2RhMjI4ZjdlNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC02
OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNv
bnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBGbG9hdFBvaW50Jiwg
Rm9udFNtb290aGluZ01vZGUpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICBi
b29sIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0
ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1h
Z2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4oKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDU0OTVmY2FmYjBhYzk5ZDYzMWU3ODcz
YTlhMWFiZGMxMmEzYWM3ZjQuLjQ3YmZiZWM5M2RhNjJjNjAwY2IwNzc3ZTdlYmNkMzVkYTYyZTY4
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTI2NCw4ICsyNjQsNiBAQCBPcHRpb25h
bDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmRlYwogICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlM
aXN0OjpEcmF3TGluZXNGb3JUZXh0PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdGg6CiAgICAgICAgIHJldHVybiBk
ZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRs
ZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm46
Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJu
PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgogICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3Jl
YXRlPERpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q+KGRhdGEsIGxlbmd0aCwgaGFuZGxl
TG9jYXRpb24pOwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUGF0aDoKQEAg
LTMwMiw2ICszMDAsNyBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9V
TlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlYwogICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd0ltYWdlQnVmZmVyOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpE
cmF3TmF0aXZlSW1hZ2U6CisgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXR0
ZXJuOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZToKICAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHku
aAppbmRleCA1ZjFiZGI0Yzk1NTUyM2ViNTVkY2ZjMTNiZThmYjZiOTVmYjY5ZGEzLi4yN2U4ZmMw
NWIzMjdkZDJmNWJjZDdmMWJjN2MwOTgwODk0NTZjOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaApAQCAtMjE4LDggKzIxOCw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIHJldHVy
biBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd0xpbmVzRm9yVGV4dD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdMaW5l
c0ZvclRleHQ+KCkpOwogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd1BhdGg6CiAgICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5n
bGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXRoPihpdGVtLmdldDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd1BhdGg+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpF
bmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0
ZXJuPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRlcm4+KCkpOwogICAg
ICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRS
ZWN0OgogICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q+KGl0ZW0uZ2V0PFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q+KCkpOwogICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFBhdGg6CkBAIC0yNTYsNiArMjU0LDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd0VsbGlwc2U6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3SW1hZ2VCdWZmZXI6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoK
</data>
<flag name="commit-queue"
          id="430681"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413964</attachid>
            <date>2020-11-12 12:13:14 -0800</date>
            <delta_ts>2020-11-12 14:31:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218865-20201112121313.patch</filename>
            <type>text/plain</type>
            <size>47452</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWVmNzg0MzhlNjA0ZGQ5
MzQ0OGY4MDFlZjM1ODM4M2NkN2Y5YzM5Mi4uMTJiYjliM2YzMDY1YTAxMDNhY2EwYTRhMGMyM2I2
NjQ0MmEyMjQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIwLTExLTEyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybigpIHNob3VsZCB0YWtlIGEgTmF0aXZlSW1hZ2Ug
YXJndW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxODg2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gcmVjb3JkaW5nIHRoZSBEaXNwbGF5TGlzdCBpdGVtIERyYXdQYXR0ZXJuLCB0aGUgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyCisgICAgICAgIG9mIHRoZSBOYXRpdmVJbWFnZSB3aWxs
IGJlIHJlY29yZGVkLiBXaGVuIHJlcGxheWluZyBpdCBiYWNrLCB0aGUKKyAgICAgICAgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHdpbGwgYmUgcmVzb2x2ZWQgdG8gYSBOYXRpdmVJbWFnZSBh
bmQgdGhlCisgICAgICAgIGl0ZW0gd2lsbCBiZSBhcHBsaWVkIHRoZSBzYW1lIHdheSB3ZSBmb3Ig
RHJhd05hdGl2ZUltYWdlLgorCisgICAgICAgIERyYXdQYXR0ZXJuIHdpbGwgYmUgaW5saW5lIERp
c3BsYXlMaXN0IGl0ZW0gYW5kIHNob3VsZCBub3QgbmVlZCBlbmNvZGluZworICAgICAgICBvciBk
ZWNvZGluZyB3aGVuIHNlbmRpbmcgaXQgdG8gdGhlIEdQVS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1Bh
dHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1J
bWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1QYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybVBhdHRlcm4pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6
ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6Y29w
eVRvIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNE
cmF3aW5nSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNJbmxpbmVJdGVt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRlcm46OkRy
YXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6
YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRlcm46OkRyYXdQ
YXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6aW1h
Z2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
UGF0dGVybjo6aW1hZ2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3UGF0dGVybjo6dGlsZVJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdQYXR0ZXJuOjpwYXR0ZXJuVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6aW1hZ2UgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjplbmNvZGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjpk
ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjphcHBseU5hdGl2ZUltYWdlSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6
CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHREaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdQbGF0Zm9ybVBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3UGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmg6CisKIDIwMjAt
MTEtMTIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJ
bnRlZ3JhdGlvbl0gdmVydGljYWwtYWxpZ246IHN1cGVyIGFuZCBzdWIgdmFsdWVzIGFyZSBub3Qg
c3VwcG9ydGVkIHlldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODQyNGM5NjY0YjdjNGM2NDFmMWVlMjYyYzczOTRm
ZWY3YTMyYzdjMS4uN2VhYWM2M2I4YmVhNmM2NjIyZTk4ZGFjMmVjZWM0NmM0ZTM4ZDZmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0xMS0xMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1BhdHRlcm4oKSBzaG91bGQgdGFrZSBhIE5hdGl2ZUltYWdlIGFyZ3VtZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4NjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKwogMjAyMC0xMS0xMiAgRGllZ28g
UGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVucmV2aWV3
ZWQsIG5vbi11bmlmaWVkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDhjYjEyNTk3OTQ5NmJkMTkw
OWNlNzIyYWMwYzZiZDc3MjIwNDk1NzQuLjVjYWNhODU0NTJjMWE2OThiOTVlNGRmNDQwMDg1OGM5
NjM0NWVjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcApAQCAtODQyLDYgKzg0MiwxOSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2Us
IGNvbnN0CiAgICAgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoV1RGTW92ZShpbWFnZSksICp0
aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KIAordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAh
cGF0dGVyblRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdQYXR0ZXJuKGltYWdlLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZHJhd1BsYXRmb3JtUGF0
dGVybihpbWFnZS5wbGF0Zm9ybUltYWdlKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7Cit9CisKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpjbGlwUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYg
cmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA0ZjkyY2RhY2Vl
NDA1M2FhYzIwODk5NTk0M2QyNjVjODI4MDRjNWFmLi4wOGFiM2IyMjAwZmE5ZDJkN2Q1YmE1ZTVi
YjNhNThhZGNjMTI1NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMzkyLDEyICszOTIsMTIgQEAgcHVibGljOgogICAg
IHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKICAgICB2b2lkIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwog
ICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSk7CiAgICAgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoUmVmUHRyPEltYWdlQnVm
ZmVyPiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKKyAgICB2b2lkIGRyYXdQ
YXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9
KTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eShJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eTsgfQogCkBAIC02NTAsNyArNjUwLDggQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgcGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0
IENvbG9yJik7CiAKLSAgICB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSk7CisgICAgdm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdl
UHRyJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KTsKKyAgICB2b2lkIGRyYXdQbGF0Zm9ybVBhdHRlcm4oY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYs
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAKICAgICBGbG9hdFJlY3QgY29tcHV0
ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBi
b29sIHByaW50aW5nLCBDb2xvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGZiYzg3MjNlMzNkZmE0
MzY1YWZlMzdkZTI1N2RhZjI1MThkMWJlMy4uNWM4MjVmN2Q0MWI5ODYxNmQxN2ZkYjhlYmU3Y2Zm
ZDdkMmJmY2M4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzAsOCArNzAsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwg
dW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNo
b3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZs
b2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5h
dGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxv
YXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRy
YXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JikgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDA5OGY2MDEzNmVjMDA3
YmRkOGM3NmI3YzgxNDYxYjFlNjAzNjkwNDkuLjkzN2FhNGQzNTkzZDFkMjM5MTczM2YwYzAyNzc0
YTIxMTEzMzY1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHAKQEAgLTEzOSwxMCArMTM5LDExIEBAIHZvaWQgSW1hZ2U6OmZpbGxXaXRoU29saWRDb2xvcihH
cmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKIAogdm9pZCBJ
bWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
LSAgICBpZiAoIW5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCZjdHh0KSkKKyAgICBhdXRvIHRp
bGVJbWFnZSA9IHByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUob3B0aW9u
cy5vcmllbnRhdGlvbigpID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSk7CisgICAgaWYg
KCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRo
aXMsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wdGlvbnMpOworICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRpbGVJbWFnZSwgc2l6ZSgpLCBkZXN0
UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25z
KTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+
ZGlkRHJhdygqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggZTdjNGE3
OWNjMDk4MTZjZTA2ZDk5YmQxOWE4MTMzN2U5YzFkOGIxNC4uMWI3MGM0M2MyYzdkYWM2MWY5NWFk
ZTQzZmFmNzE1YTJmNGVhODFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAt
NjU1LDE5ICs2NTUsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQKICAgICBDYWlybzo6Zmls
bFJlY3RXaXRoUm91bmRlZEhvbGUoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCByb3VuZGVkSG9s
ZVJlY3QsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRl
KSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtUGF0dGVybihj
b25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpIHx8ICFwYXR0ZXJuVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd1Bh
dHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IHNwYWNpbmcsIG9wdGlvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgQVNTRVJU
KGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdl
Lm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVy
bigqcGxhdGZvcm1Db250ZXh0KCksIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCks
IEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNv
bnRleHQoKSwgaW1hZ2UuZ2V0KCksIEludFNpemUoaW1hZ2VTaXplKSwgZGVzdFJlY3QsIHRpbGVS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IGNlODU3ZmQyYTMxNzA2Y2Y0YzFm
ZmM4MTU0YmMyMDBiMDA0NzAzMTQuLjE0NmE1ZWNhZDUwNTE0NWM5Zjg5NTA2ZWM4ZGIwNTc3MjM2
ZWIzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtMjc2LDEw
ICsyNzYsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFn
ZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2kKICAgICBDYWlybzo6ZHJhd1BsYXRm
b3JtSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdlLnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdl
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAg
aWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
KQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4obV9wbGF0Zm9ybUNvbnRleHQsIG5hdGl2ZUlt
YWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJl
Y3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CisgICAgVU5V
U0VEX1BBUkFNKHNwYWNpbmcpOworICAgIENhaXJvOjpkcmF3UGF0dGVybihtX3BsYXRmb3JtQ29u
dGV4dCwgaW1hZ2UucGxhdGZvcm1JbWFnZSgpLmdldCgpLCBJbnRTaXplKGltYWdlU2l6ZSksIGRl
c3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5oCmluZGV4IDVmNDE4NDU3OWRjODIzYjNlNjVmNzkxZDdiZjE2ODQwNzY3OGMyYWUuLjFi
ZTVhMDJkNGQ2M2MxOTAzMzg1MTNhOTVlZTQ1M2Q3M2EwMTQ2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lk
IGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9p
bnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQ
b2ludCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDI2ZTA0YzA5ODgyNGFjYWY0
ZmI4Yzg3NzIzMjdlOTA5ZjA2YmZmNjIuLmM5Mjc3NzJlYzExNDg2MmQ2ODIyYWRkNDhjOThkOTk1
NjRlZTQ1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTQxNSwxNiArNDE1LDExIEBAIHN0YXRp
YyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKICAgICB9KTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1QYXR0ZXJuKGNvbnN0IFBsYXRm
b3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFwYXR0ZXJuVHJhbnNmb3JtLmlz
SW52ZXJ0aWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAg
ICAgIG1faW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAg
ICBDR0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0
Q2xpcFRvUmVjdChjb250ZXh0LCBkZXN0UmVjdCk7CkBAIC00NDIsMjYgKzQzNywyMyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdAogICAgIGZsb2F0IGFkanVzdGVkWCA9IHBoYXNlLngoKSAtIGRl
c3RSZWN0LngoKSArIHRpbGVSZWN0LngoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVy
blRyYW5zZm9ybS5hKCkpOyAvLyBXZSB0cmFuc2xhdGVkIHRoZSBjb250ZXh0IHNvIHRoYXQgZGVz
dFJlY3QueCgpIGlzIHRoZSBvcmlnaW4sIHNvIHN1YnRyYWN0IGl0IG91dC4KICAgICBmbG9hdCBh
ZGp1c3RlZFkgPSBkZXN0UmVjdC5oZWlnaHQoKSAtIChwaGFzZS55KCkgLSBkZXN0UmVjdC55KCkg
KyB0aWxlUmVjdC55KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0u
ZCgpKSArIHNjYWxlZFRpbGVIZWlnaHQpOwogCi0gICAgYXV0byB0aWxlSW1hZ2UgPSBpbWFnZS5w
cmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKG9wdGlvbnMub3JpZW50YXRp
b24oKSA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpOwotCi0gICAgZmxvYXQgaCA9IENH
SW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOworICAgIGZs
b2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBzdWJJbWFnZTsKLSAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6
ZSgpOwogICAgIGlmICh0aWxlUmVjdC5zaXplKCkgPT0gaW1hZ2VTaXplKQotICAgICAgICBzdWJJ
bWFnZSA9IHRpbGVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOworICAgICAgICBzdWJJbWFnZSA9IGlt
YWdlOwogICAgIGVsc2UgewogICAgICAgICAvLyBDb3B5aW5nIGEgc3ViLWltYWdlIG91dCBvZiBh
IHBhcnRpYWxseS1kZWNvZGVkIGltYWdlIHN0b3BzIHRoZSBkZWNvZGluZyBvZiB0aGUgb3JpZ2lu
YWwgaW1hZ2UuIEl0IHNob3VsZCBuZXZlciBoYXBwZW4KICAgICAgICAgLy8gYmVjYXVzZSBzdWIt
aW1hZ2VzIGFyZSBvbmx5IHVzZWQgZm9yIGJvcmRlci1pbWFnZSwgd2hpY2ggb25seSByZW5kZXJz
IHdoZW4gdGhlIGltYWdlIGlzIGZ1bGx5IGRlY29kZWQuCi0gICAgICAgIEFTU0VSVChoID09IGlt
YWdlLmhlaWdodCgpKTsKLSAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVX
aXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHRpbGVSZWN0
KSk7CisgICAgICAgIEFTU0VSVChoID09IGltYWdlU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIHN1
YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KGltYWdlLmdldCgp
LCB0aWxlUmVjdCkpOwogICAgIH0KIAogICAgIC8vIElmIHdlIG5lZWQgdG8gcGFpbnQgZ2FwcyBi
ZXR3ZWVuIHRpbGVzIGJlY2F1c2Ugd2UgaGF2ZSBhIHBhcnRpYWxseSBsb2FkZWQgaW1hZ2Ugb3Ig
bm9uLXplcm8gc3BhY2luZywKICAgICAvLyBmYWxsIGJhY2sgdG8gdGhlIGxlc3MgZWZmaWNpZW50
IENHUGF0dGVybi1iYXNlZCBtZWNoYW5pc20uCiAgICAgZmxvYXQgc2NhbGVkVGlsZVdpZHRoID0g
dGlsZVJlY3Qud2lkdGgoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9y
bS5hKCkpOwotICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdlLT5wbGF0Zm9y
bUltYWdlKCkuZ2V0KCkpOwotICAgIGlmICh3ID09IGltYWdlLnNpemUoKS53aWR0aCgpICYmIGgg
PT0gaW1hZ2Uuc2l6ZSgpLmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcu
aGVpZ2h0KCkpIHsKKyAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKTsK
KyAgICBpZiAodyA9PSBpbWFnZVNpemUud2lkdGgoKSAmJiBoID09IGltYWdlU2l6ZS5oZWlnaHQo
KSAmJiAhc3BhY2luZy53aWR0aCgpICYmICFzcGFjaW5nLmhlaWdodCgpKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBDRyBzZWVtcyB0byBzbmFwIHRoZSBpbWFnZXMgdG8gaW50ZWdyYWwgc2l6ZXMuIFdo
ZW4gd2UgY2FyZSAoZS5nLiB3aXRoIGJvcmRlci1pbWFnZS1yZXBlYXQ6IHJvdW5kKSwKICAgICAg
ICAgLy8gd2Ugc2hvdWxkIHRpbGUgYWxsIGJ1dCB0aGUgbGFzdCwgYW5kIHN0ZXRjaCB0aGUgbGFz
dCBpbWFnZSB0byBmaXQuCiAgICAgICAgIENHQ29udGV4dERyYXdUaWxlZEltYWdlKGNvbnRleHQs
IEZsb2F0UmVjdChhZGp1c3RlZFgsIGFkanVzdGVkWSwgc2NhbGVkVGlsZVdpZHRoLCBzY2FsZWRU
aWxlSGVpZ2h0KSwgc3ViSW1hZ2UuZ2V0KCkpOwpAQCAtNDcwLDcgKzQ2Miw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0CiAgICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIG1hdHJpeCA9IENHQWZm
aW5lVHJhbnNmb3JtTWFrZShuYXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQocGF0dGVyblRyYW5zZm9y
bS5hKCkpLCAwLCAwLCBuYXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQocGF0dGVyblRyYW5zZm9ybS5k
KCkpLCBhZGp1c3RlZFgsIGFkanVzdGVkWSk7CiAgICAgICAgIG1hdHJpeCA9IENHQWZmaW5lVHJh
bnNmb3JtQ29uY2F0KG1hdHJpeCwgQ0dDb250ZXh0R2V0Q1RNKGNvbnRleHQpKTsKICAgICAgICAg
Ly8gVGhlIHRvcCBvZiBhIHBhcnRpYWxseS1kZWNvZGVkIGltYWdlIGlzIGRyYXduIGF0IHRoZSBi
b3R0b20gb2YgdGhlIHRpbGUuIE1hcCBpdCB0byB0aGUgdG9wLgotICAgICAgICBtYXRyaXggPSBD
R0FmZmluZVRyYW5zZm9ybVRyYW5zbGF0ZShtYXRyaXgsIDAsIGltYWdlLnNpemUoKS5oZWlnaHQo
KSAtIGgpOworICAgICAgICBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybVRyYW5zbGF0ZShtYXRy
aXgsIDAsIGltYWdlU2l6ZS5oZWlnaHQoKSAtIGgpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgIG1hdHJpeCA9IENHQWZmaW5lVHJhbnNmb3JtU2NhbGUobWF0cml4LCAxLCAtMSk7
CiAgICAgICAgIG1hdHJpeCA9IENHQWZmaW5lVHJhbnNmb3JtVHJhbnNsYXRlKG1hdHJpeCwgMCwg
LWgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA0
M2EyM2UxNjRjNDk2NGI2NTZkYjkyYmZkMTFkODc0OTMzNGQ5ODU0Li5lNTI5MjRiMWEwMWUzZDMz
NTM1MTU5YTc5ZWNmNTJlZjc4MWZmZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmNwcApAQCAtMzIyLDEwICszMjIsNiBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRl
c3Ryb3koKQogICAgICAgICBnZXQ8RHJhd1BhdGg+KCkufkRyYXdQYXRoKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46IHsKLSAgICAgICAg
Z2V0PERyYXdQYXR0ZXJuPigpLn5EcmF3UGF0dGVybigpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDogewogICAgICAgICBnZXQ8
RmlsbENvbXBvc2l0ZWRSZWN0PigpLn5GaWxsQ29tcG9zaXRlZFJlY3QoKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtNDI0LDYgKzQyMCwxMCBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3TmF0
aXZlSW1hZ2U+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1BhdHRlcm46IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZp
YWxseV9kZXN0cnVjdGlibGU8RHJhd1BhdHRlcm4+Ojp2YWx1ZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6IHsKICAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd0xpbmU+Ojp2YWx1ZSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTU3NywxNCArNTc3LDE0IEBAIHZvaWQgSXRlbUhhbmRsZTo6Y29w
eVRvKEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0CiAgICAgICAgIG5ldyAoaXRlbU9mZnNl
dCkgRHJhd05hdGl2ZUltYWdlKGdldDxEcmF3TmF0aXZlSW1hZ2U+KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOiB7Ci0gICAgICAgIG5ldyAo
aXRlbU9mZnNldCkgRHJhd1BhdGgoZ2V0PERyYXdQYXRoPigpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjogewogICAgICAgICBuZXcgKGl0
ZW1PZmZzZXQpIERyYXdQYXR0ZXJuKGdldDxEcmF3UGF0dGVybj4oKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6IHsKKyAgICAgICAgbmV3IChp
dGVtT2Zmc2V0KSBEcmF3UGF0aChnZXQ8RHJhd1BhdGg+KCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDogewogICAgICAgICBu
ZXcgKGl0ZW1PZmZzZXQpIEZpbGxDb21wb3NpdGVkUmVjdChnZXQ8RmlsbENvbXBvc2l0ZWRSZWN0
PigpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuY3BwCmluZGV4IGU5OTBkZWU0M2JmZGFmMzkwNzNhMzU2ZjYwZmE1ZWQzYjI4NGFmNjguLjc3
YzljZDQxY2RkZGU2ZjczNWUzYzk4MzExMWJjODk4MTQ3Y2MzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1U
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKQEAgLTIwOCw4ICsyMDgsOCBAQCBib29sIGlzRHJh
d2luZ0l0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdOYXRpdmVJbWFnZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGF0dGVybjoKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKICAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVu
Y3lMYXllcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6CkBAIC0yNTQs
NyArMjU0LDYgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1Bh
dHRlcm46CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgogICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxQYXRoOgogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9y
OgpAQCAtMjgyLDYgKzI4MSw3IEBAIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0lt
YWdlQnVmZmVyOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKKyAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKICAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3Bh
cmVuY3lMYXllcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCA2ODJl
ZmVjZmVlNDM5YjY4YzNmOWY5ODFkZGRjZjAyYWViNmViMTI5Li45YzFlM2I1ZmI2YWViYjA2NGNi
NDIzN2E0ZGEyZWZiZmU5OTA4NGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
Y3BwCkBAIC00NTgsMjUgKzQ1OCwzMSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQogICAgIHJldHVybiB0
czsKIH0KIAotRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKLSAgICA6IG1faW1hZ2UoaW1hZ2UpCi0gICAgLCBtX3BhdHRlcm5UcmFuc2Zvcm0ocGF0dGVy
blRyYW5zZm9ybSkKLSAgICAsIG1fdGlsZVJlY3QodGlsZVJlY3QpCitEcmF3UGF0dGVybjo6RHJh
d1BhdHRlcm4oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisgICAgOiBtX2ltYWdlSWRlbnRp
ZmllcihpbWFnZUlkZW50aWZpZXIpCisgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAg
LCBtX2Rlc3RpbmF0aW9uKGRlc3RSZWN0KQorICAgICwgbV90aWxlUmVjdCh0aWxlUmVjdCkKKyAg
ICAsIG1fcGF0dGVyblRyYW5zZm9ybShwYXR0ZXJuVHJhbnNmb3JtKQogICAgICwgbV9waGFzZShw
aGFzZSkKICAgICAsIG1fc3BhY2luZyhzcGFjaW5nKQogICAgICwgbV9vcHRpb25zKG9wdGlvbnMp
CiB7CiB9CiAKLXZvaWQgRHJhd1BhdHRlcm46OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkgY29uc3QKK05PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgRHJhd1BhdHRlcm46OmFwcGx5
KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7Ci0gICAgY29udGV4dC5kcmF3UGF0dGVybihtX2lt
YWdlLmdldCgpLCBtX2Rlc3RpbmF0aW9uLCBtX3RpbGVSZWN0LCBtX3BhdHRlcm5UcmFuc2Zvcm0s
IG1fcGhhc2UsIG1fc3BhY2luZywgbV9vcHRpb25zKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKwordm9pZCBEcmF3UGF0dGVybjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBOYXRpdmVJbWFnZSYgaW1hZ2UpIGNvbnN0Cit7CisgICAgY29udGV4dC5kcmF3UGF0dGVybihp
bWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb24sIG1fdGlsZVJlY3QsIG1fcGF0dGVyblRy
YW5zZm9ybSwgbV9waGFzZSwgbV9zcGFjaW5nLCBtX29wdGlvbnMpOwogfQogCiBzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1BhdHRlcm4mIGl0
ZW0pCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFnZSIsIGl0ZW0uaW1hZ2UoKSk7CisgICAg
dHMuZHVtcFByb3BlcnR5KCJpbWFnZS1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUlkZW50aWZpZXIo
KSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXR0ZXJuLXRyYW5zZm9ybSIsIGl0ZW0ucGF0dGVy
blRyYW5zZm9ybSgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoInRpbGUtcmVjdCIsIGl0ZW0udGls
ZVJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RSZWN0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggM2ViNzRkNzhkYjUxZGI4
M2UzNTk2YTZmOWI3M2QyZGU2MzU5MzE2MS4uN2MxM2UzZTVjZTI1ZTY1NzY5NWUxOTY4N2RhZWQ5
YjZmZDViMzkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0xMDc5LDkx
ICsxMDc5LDM2IEBAIHByaXZhdGU6CiBjbGFzcyBEcmF3UGF0dGVybiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpEcmF3UGF0dGVy
bjsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
RHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd1BhdHRlcm4oUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAotICAgIGNvbnN0IEltYWdl
JiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KLSAgICBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5U
cmFuc2Zvcm07IH0KLSAgICBGbG9hdFJlY3QgdGlsZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3Rp
bGVSZWN0OyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VJZGVudGlmaWVyOyB9CisgICAgRmxvYXRTaXplIGlt
YWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTaXplOyB9CiAgICAgRmxvYXRSZWN0IGRl
c3RSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQorICAgIEZsb2F0UmVjdCB0
aWxlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZVJlY3Q7IH0KKyAgICBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5UcmFu
c2Zvcm07IH0KICAgICBGbG9hdFBvaW50IHBoYXNlKCkgY29uc3QgeyByZXR1cm4gbV9waGFzZTsg
fQogICAgIEZsb2F0U2l6ZSBzcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zcGFjaW5nOyB9CiAK
LSAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIE5PX1JFVFVSTl9E
VUVfVE9fQVNTRVJUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgdm9p
ZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBOYXRpdmVJbWFnZSYpIGNvbnN0OwogCiAgICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxv
cHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KIAotICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RHJhd1BhdHRlcm4+IGRlY29kZShEZWNv
ZGVyJik7Ci0KIHByaXZhdGU6Ci0gICAgbXV0YWJsZSBSZWY8SW1hZ2U+IG1faW1hZ2U7IC8vIEZJ
WE1FOiBEcmF3aW5nIGltYWdlcyBjYW4gY2F1c2UgdGhlaXIgYW5pbWF0aW9ucyB0byBwcm9ncmVz
cy4gVGhpcyBzaG91bGRuJ3QgaGF2ZSB0byBiZSBtdXRhYmxlLgotICAgIEFmZmluZVRyYW5zZm9y
bSBtX3BhdHRlcm5UcmFuc2Zvcm07Ci0gICAgRmxvYXRSZWN0IG1fdGlsZVJlY3Q7CisgICAgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1faW1hZ2VJZGVudGlmaWVyOworICAgIEZsb2F0U2l6
ZSBtX2ltYWdlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKKyAgICBGbG9hdFJl
Y3QgbV90aWxlUmVjdDsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gbV9wYXR0ZXJuVHJhbnNmb3JtOwog
ICAgIEZsb2F0UG9pbnQgbV9waGFzZTsKICAgICBGbG9hdFNpemUgbV9zcGFjaW5nOwogICAgIElt
YWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKIH07CiAKLXRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+Ci12b2lkIERyYXdQYXR0ZXJuOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsK
LSAgICBJbWFnZUhhbmRsZSBpbWFnZUhhbmRsZTsKLSAgICBpbWFnZUhhbmRsZS5pbWFnZSA9IG1f
aW1hZ2UucHRyKCk7Ci0gICAgZW5jb2RlciA8PCBpbWFnZUhhbmRsZTsKLSAgICBlbmNvZGVyIDw8
IG1fcGF0dGVyblRyYW5zZm9ybTsKLSAgICBlbmNvZGVyIDw8IG1fdGlsZVJlY3Q7Ci0gICAgZW5j
b2RlciA8PCBtX2Rlc3RpbmF0aW9uOwotICAgIGVuY29kZXIgPDwgbV9waGFzZTsKLSAgICBlbmNv
ZGVyIDw8IG1fc3BhY2luZzsKLSAgICBlbmNvZGVyIDw8IG1fb3B0aW9uczsKLX0KLQotdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPERyYXdQYXR0ZXJuPiBEcmF3UGF0dGVybjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8SW1hZ2VIYW5kbGU+IGltYWdl
SGFuZGxlOwotICAgIGRlY29kZXIgPj4gaW1hZ2VIYW5kbGU7Ci0gICAgaWYgKCFpbWFnZUhhbmRs
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPEFmZmluZVRy
YW5zZm9ybT4gcGF0dGVyblRyYW5zZm9ybTsKLSAgICBkZWNvZGVyID4+IHBhdHRlcm5UcmFuc2Zv
cm07Ci0gICAgaWYgKCFwYXR0ZXJuVHJhbnNmb3JtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiB0aWxlUmVjdDsKLSAgICBkZWNvZGVyID4+
IHRpbGVSZWN0OwotICAgIGlmICghdGlsZVJlY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGRlc3RpbmF0aW9uOwotICAgIGRlY29kZXIg
Pj4gZGVzdGluYXRpb247Ci0gICAgaWYgKCFkZXN0aW5hdGlvbikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBoYXNlOwotICAgIGRlY29k
ZXIgPj4gcGhhc2U7Ci0gICAgaWYgKCFwaGFzZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLQotICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gc3BhY2luZzsKLSAgICBkZWNvZGVyID4+IHNw
YWNpbmc7Ci0gICAgaWYgKCFzcGFjaW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgT3B0aW9uYWw8SW1hZ2VQYWludGluZ09wdGlvbnM+IG9wdGlvbnM7Ci0gICAgZGVjb2Rl
ciA+PiBvcHRpb25zOwotICAgIGlmICghb3B0aW9ucykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgIHJldHVybiB7eyAqaW1hZ2VIYW5kbGUtPmltYWdlLCAqZGVzdGluYXRpb24s
ICp0aWxlUmVjdCwgKnBhdHRlcm5UcmFuc2Zvcm0sICpwaGFzZSwgKnNwYWNpbmcsICpvcHRpb25z
IH19OwotfQotCiBjbGFzcyBCZWdpblRyYW5zcGFyZW5jeUxheWVyIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5k
ZXggMDE2MDAzYWM2ZDZhMzY4ZjAxYmY5ZWJlMjliNzljYzU4MTExMGNkYi4uZjUwMDA1YTQ1NGIz
OWY0NWNkMGZmNzFhZDdkMTljYTFjZDdjNzBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcApAQCAtMTgyLDkgKzE4MiwxMiBAQCB2b2lkIFJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgYwogICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdlLnJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0K
IAotdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQor
dm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhcHBlbmQ8RHJhd1BhdHRlcm4+
KGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFj
aW5nLCBvcHRpb25zKTsKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+
Y2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CisgICAgbV9kaXNwbGF5TGlzdC5jYWNoZU5hdGl2ZUlt
YWdlKGltYWdlKTsKKyAgICBhcHBlbmQ8RHJhd1BhdHRlcm4+KGltYWdlLnJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCiB2b2lkIFJlY29yZGVyOjpz
YXZlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDRhYWM0NWQ3
NWUwZDJkMTUxMjFjNmY5NmZjODI0OWQxNWIxNThjNDIuLjc3Y2JhMzM2ZGM1Yjk0ZjRkYjIxZGE2
NjExMDdiZDRjMzJjZjcwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aApAQCAtMTAzLDggKzEwMyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0
IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVy
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2Us
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3
UGF0dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2lu
dCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmlu
ZGV4IDY0ZTY2ZWJkMTczMzQ3OGY4MDRhYTQxYzBlMjRhYmRmNjA3YzkwYjYuLjliNzE4OWU5ODlk
YjJjYTM3YWVkYzQwNmQyMmUwMTNlNGM4NGI3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAKQEAgLTQ1LDMxICs0NSw0MiBAQCBSZXBsYXllcjo6UmVwbGF5ZXIo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3Qs
IGNvbgogCiBSZXBsYXllcjo6flJlcGxheWVyKCkgPSBkZWZhdWx0OwogCit0ZW1wbGF0ZTxjbGFz
cyBUPgoraW5saW5lIHN0YXRpYyBib29sIGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMsIEl0
ZW1IYW5kbGUgaXRlbSkKK3sKKyAgICBpZiAoIWl0ZW0uaXM8VD4oKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGF1dG8mIGltYWdlQnVmZmVySXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CisgICAg
aWYgKGF1dG8qIGltYWdlQnVmZmVyID0gaW1hZ2VCdWZmZXJzLmdldChpbWFnZUJ1ZmZlckl0ZW0u
aW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkpKQorICAgICAgICBpbWFnZUJ1ZmZlckl0ZW0uYXBwbHko
Y29udGV4dCwgKmltYWdlQnVmZmVyKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8
Y2xhc3MgVD4KK2lubGluZSBzdGF0aWMgYm9vbCBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2Vz
LCBJdGVtSGFuZGxlIGl0ZW0pCit7CisgICAgaWYgKCFpdGVtLmlzPFQ+KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBhdXRvJiBuYXRpdmVJbWFnZUl0ZW0gPSBpdGVtLmdldDxUPigpOwor
ICAgIGlmIChhdXRvKiBpbWFnZSA9IG5hdGl2ZUltYWdlcy5nZXQobmF0aXZlSW1hZ2VJdGVtLmlt
YWdlSWRlbnRpZmllcigpKSkKKyAgICAgICAgbmF0aXZlSW1hZ2VJdGVtLmFwcGx5KGNvbnRleHQs
ICppbWFnZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUmVwbGF5ZXI6OmFwcGx5SXRl
bShJdGVtSGFuZGxlIGl0ZW0pCiB7CiAgICAgaWYgKG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+
YXBwbHkoaXRlbSwgbV9jb250ZXh0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGl0ZW0u
aXM8Q2xpcFRvSW1hZ2VCdWZmZXI+KCkpIHsKLSAgICAgICAgYXV0byYgY2xpcEl0ZW0gPSBpdGVt
LmdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKTsKLSAgICAgICAgaWYgKGF1dG8qIGltYWdlQnVmZmVy
ID0gbV9pbWFnZUJ1ZmZlcnMuZ2V0KGNsaXBJdGVtLmltYWdlQnVmZmVySWRlbnRpZmllcigpKSkK
LSAgICAgICAgICAgIGNsaXBJdGVtLmFwcGx5KG1fY29udGV4dCwgKmltYWdlQnVmZmVyKTsKKyAg
ICBpZiAoYXBwbHlJbWFnZUJ1ZmZlckl0ZW08RHJhd0ltYWdlQnVmZmVyPihtX2NvbnRleHQsIG1f
aW1hZ2VCdWZmZXJzLCBpdGVtKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChhcHBseUltYWdl
QnVmZmVySXRlbTxDbGlwVG9JbWFnZUJ1ZmZlcj4obV9jb250ZXh0LCBtX2ltYWdlQnVmZmVycywg
aXRlbSkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBpZiAoaXRlbS5pczxEcmF3SW1h
Z2VCdWZmZXI+KCkpIHsKLSAgICAgICAgYXV0byYgZHJhd0l0ZW0gPSBpdGVtLmdldDxEcmF3SW1h
Z2VCdWZmZXI+KCk7Ci0gICAgICAgIGlmIChhdXRvKiBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZm
ZXJzLmdldChkcmF3SXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICBk
cmF3SXRlbS5hcHBseShtX2NvbnRleHQsICppbWFnZUJ1ZmZlcik7CisgICAgaWYgKGFwcGx5TmF0
aXZlSW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFnZT4obV9jb250ZXh0LCBtX25hdGl2ZUltYWdlcywg
aXRlbSkpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGl0ZW0uaXM8RHJh
d05hdGl2ZUltYWdlPigpKSB7Ci0gICAgICAgIGF1dG8mIGRyYXdJdGVtID0gaXRlbS5nZXQ8RHJh
d05hdGl2ZUltYWdlPigpOwotICAgICAgICBpZiAoYXV0byogaW1hZ2UgPSBtX25hdGl2ZUltYWdl
cy5nZXQoZHJhd0l0ZW0uaW1hZ2VJZGVudGlmaWVyKCkpKQotICAgICAgICAgICAgZHJhd0l0ZW0u
YXBwbHkobV9jb250ZXh0LCAqaW1hZ2UpOworICAgIGlmIChhcHBseU5hdGl2ZUltYWdlSXRlbTxE
cmF3UGF0dGVybj4obV9jb250ZXh0LCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCiAgICAgICAgIHJl
dHVybjsKLSAgICB9CiAKICAgICBpdGVtLmFwcGx5KG1fY29udGV4dCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4
IGQ2MTM0NTU3M2RjOTkxMDBmYjEzNTQ5MGE1ZDJiMTNhODBkYTNjNzAuLjJjOWFhODg2OTY5ZWIw
NTJlZWM2MzJjZTljNmU5ZDU1NzIxZjk3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01NjAsNyArNTYwLDcgQEAg
dm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2Um
IG5hdGl2ZUltYWdlLCBjb25zdCBGbG8KICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0
aXZlSW1hZ2U+KG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwogfQogCi12
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oTmF0aXZl
SW1hZ2UmIG5hdGl2ZUltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsKICAgICBzdHJ1Y3QgRHJhd1BhdHRlcm4gZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwg
T3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgSW50U2l6ZSwgRmxvYXRSZWN0
LCBGbG9hdFJlY3QsIEFmZmluZVRyYW5zZm9ybSwgRmxvYXRQb2ludCwgSW1hZ2VQYWludGluZ09w
dGlvbnM+IHsKICAgICAgICAgdmlydHVhbCB+RHJhd1BhdHRlcm4oKSA9IGRlZmF1bHQ7CkBAIC01
NzcsOCArNTc3LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QKICAgICB9OwogCiAgICAgVU5V
U0VEX1BBUkFNKHNwYWNpbmcpOwotICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UubmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8
RHJhd1BhdHRlcm4+KG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCksIEludFNpemUoaW1hZ2Uu
c2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0
aW9ucykpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihuYXRpdmVJbWFn
ZS5wbGF0Zm9ybUltYWdlKCksIEludFNpemUoaW1hZ2VTaXplKSwgZGVzdFJlY3QsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucykpOwogfQogCiB2b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9y
ZGVyVGhpY2tuZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5oCmluZGV4IDQ1YjQ0MzI1NmZlNTVkYzRkMDRmZTA1ZTI1NTE1NzU3YWY2
NTZkY2MuLjgwYTI2ZmQ5OGU4NDQ3MTY3YjE3NjFhZjg5MzA3MTE2YjExMDJjYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAg
LTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKFdlYkNv
cmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoV2ViQ29y
ZTo6TmF0aXZlSW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oV2Vi
Q29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IGZsb2F0KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGly
ZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dERpcmVjdDJELmNwcAppbmRleCA4YzBkYTI3ZTg2YmQxMTc0Yzg0ZDgzYzJlNzcwZjI2
MjJhZTllZjdlLi4yOWE4MmE4OTc4MjI5YjBmNTg3M2FiZGY4MmJmYWY4MDZjZjE2NTk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKQEAgLTQxNiwxOSArNDE2LDE0IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmbHVzaCgpCiAgICAgRGlyZWN0MkQ6OmZsdXNoKCpwbGF0Zm9ybUNv
bnRleHQoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtUGF0
dGVybihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhcGF0
dGVyblRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwg
dGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7
Ci0gICAgaWYgKGF1dG8gdGlsZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUodGhpcykpCi0gICAgICAgIERpcmVjdDJEOjpkcmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0
KCksIFdURk1vdmUodGlsZUltYWdlKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwg
dGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJh
dG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOworICAgIGF1dG8gdGlsZUltYWdlID0gaW1hZ2U7
CisgICAgRGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQoKSwgV1RGTW92ZSh0
aWxlSW1hZ2UpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9u
cy5ibGVuZE1vZGUoKSk7CiB9CiAKIC8vIERyYXdzIGEgZmlsbGVkIHJlY3RhbmdsZSB3aXRoIGEg
c3Ryb2tlZCBib3JkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmlu
ZGV4IDFjNjFlNDI3MTU3MTllMzUzNGM3YTc4MjkzZGE4NmVkNzg5YjcyMmUuLjBjNGYzYTQ5NzM2
OWIwNDBlNWZlZmVjMTcyMWQwYzdlNmVjZjhjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQuY3BwCkBAIC0yNzQsMTEgKzI3NCwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYQogICAgIERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGlt
YWdlLnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3UGF0dGVybigo
TmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0g
ICAgYXV0byogY29udGV4dCA9ICZncmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoYXV0byBzdXJm
YWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29udGV4dCkpCi0gICAgICAg
IERpcmVjdDJEOjpkcmF3UGF0dGVybihtX3BsYXRmb3JtQ29udGV4dCwgV1RGTW92ZShzdXJmYWNl
KSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRN
b2RlKCkpOworICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5wbGF0Zm9ybUltYWdlKCkpCisg
ICAgICAgIERpcmVjdDJEOjpkcmF3UGF0dGVybihtX3BsYXRmb3JtQ29udGV4dCwgV1RGTW92ZShz
dXJmYWNlKSwgSW50U2l6ZShpbWFnZVNpemUpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxl
bmRNb2RlKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd1Jl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKaW5kZXggNTRmMGY4YjJlZTA1ZGVmNjIxMWJlYmM2
NDA5NzlhNDA2OWI5ZGYxMy4uOTJjZTNmMDliYjg2ZjA4YWNkNWMyNmFiNTg2MDdkYTIyOGY3ZTc4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaApAQCAtNjksOCArNjksOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1
ZmZlciYsIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhp
bmdNb2RlKSBvdmVycmlkZTsKIAogICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2Us
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBkcmF3TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIGJvb2wgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUlt
YWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKChOYXRpdmVJbWFnZSYsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJh
d1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0xp
bmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAppbmRleCA1NDk1ZmNhZmIwYWM5OWQ2MzFlNzg3M2E5YTFhYmRjMTJh
M2FjN2Y0Li40N2JmYmVjOTNkYTYyYzYwMGNiMDc3N2U3ZWJjZDM1ZGE2MmU2OGRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0yNjQsOCArMjY0LDYgQEAgT3B0aW9uYWw8RGlzcGxheUxp
c3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpkZWMKICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0xp
bmVzRm9yVGV4dD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRoOgogICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3Jl
YXRlPERpc3BsYXlMaXN0OjpEcmF3UGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICBy
ZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3UGF0dGVybj4oZGF0YSwgbGVu
Z3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZp
bGxDb21wb3NpdGVkUmVjdDoKICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5
TGlzdDo6RmlsbENvbXBvc2l0ZWRSZWN0PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsK
ICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFBhdGg6CkBAIC0zMDIsNiArMzAw
LDcgQEAgT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVS
TiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWMKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd0VsbGlwc2U6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJ
bWFnZUJ1ZmZlcjoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUlt
YWdlOgorICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkRyYXdSZWN0OgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpF
bmRUcmFuc3BhcmVuY3lMYXllcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggNWYx
YmRiNGM5NTU1MjNlYjU1ZGNmYzEzYmU4ZmI2Yjk1ZmI2OWRhMy4uMjdlOGZjMDViMzI3ZGQyZjVi
Y2Q3ZjFiYzdjMDk4MDg5NDU2YzllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAg
LTIxOCw4ICsyMTgsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNv
ZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0Zv
clRleHQ+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TGluZXNGb3JUZXh0Pigp
KTsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRo
OgogICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdQYXRoPigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5j
b2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybj4oaXRlbS5n
ZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuPigpKTsKICAgICAgICAgY2FzZSBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKICAgICAg
ICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RmlsbENvbXBvc2l0ZWRSZWN0PihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RmlsbENvbXBvc2l0ZWRSZWN0PigpKTsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxQYXRoOgpAQCAtMjU2LDYgKzI1NCw3IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxp
cHNlOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0lt
YWdlQnVmZmVyOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RHJhd05hdGl2ZUltYWdlOgorICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3TGluZToKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdSZWN0OgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>