<?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>215211</bug_id>
          
          <creation_ts>2020-08-05 22:10:47 -0700</creation_ts>
          <short_desc>Rename LeadingExpansion and TrailingExpansion to LeftExpansion and RightExpansion</short_desc>
          <delta_ts>2020-08-07 23:23:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>206208</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1678198</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-05 22:10:47 -0700</bug_when>
    <thetext>Rename LeadingExpansion and TrailingExpansion to LeftExpansion and RightExpansion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678199</commentid>
    <comment_count>1</comment_count>
      <attachid>406073</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-05 22:12:43 -0700</bug_when>
    <thetext>Created attachment 406073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678206</commentid>
    <comment_count>2</comment_count>
      <attachid>406076</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-05 22:57:25 -0700</bug_when>
    <thetext>Created attachment 406076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678208</commentid>
    <comment_count>3</comment_count>
      <attachid>406077</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-05 23:04:44 -0700</bug_when>
    <thetext>Created attachment 406077
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678306</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-06 11:03:05 -0700</bug_when>
    <thetext>Committed r265338: &lt;https://trac.webkit.org/changeset/265338&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 406077.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678307</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-06 11:04:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/66635560&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406073</attachid>
            <date>2020-08-05 22:12:43 -0700</date>
            <delta_ts>2020-08-05 22:57:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215211-20200805221242.patch</filename>
            <type>text/plain</type>
            <size>54498</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGY2NjQ5MGJiZjJjNDc4
NmVlYzU2N2UxOTYzNGIzYjc4YmMzY2M4NS4uNzk2YzhhZGQ0NTI1YTJiYmU3ZGJiYmM3M2Q2YTI2
NjFkNzQ2NDg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDIwLTA4LTA1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIExl
YWRpbmdFeHBhbnNpb24gYW5kIFRyYWlsaW5nRXhwYW5zaW9uIHRvIExlZnRFeHBhbnNpb24gYW5k
IFJpZ2h0RXhwYW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTUyMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAiTGVhZGluZyIgYW5kICJUcmFpbGluZyIgYXJlIHRlcm1zLW9mLWFydCB3aGljaCBy
ZXByZXNlbnQgbG9naWNhbCBvcmRlci4KKyAgICAgICAgSG93ZXZlciwgdGhlIGJlaGF2aW9yIG9m
IHRoZXNlIGZsYWdzIG9wZXJhdGVzIGluIHZpc3VhbCBvcmRlci4KKyAgICAgICAgSW5zdGVhZCwg
d2Ugc2hvdWxkIHJlbmFtZSB0aGVtIHRvIHRoZWlyIHZpc3VhbCBvcmRlciBhbmFsb2d1ZXM6IGxl
ZnQgYW5kIHJpZ2h0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5v
IGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6Om1lYXN1cmVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6anVzdGlmeVJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVp
bGRlcjo6UnVuOjpleHBhbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRl
cjo6UnVuOjp2aXN1YWxseUNvbGxhcHNlVHJhaWxpbmdXaGl0ZXNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhwYW5zaW9uTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRD
b250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6
OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZTo6bGVmdEV4cGFuc2lvbk9wcG9ydHVuaXR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpyaWdodEV4cGFuc2lvbk9wcG9ydHVuaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYXNjYWRlOjpsZWFkaW5nRXhwYW5zaW9uT3Bwb3J0dW5pdHkpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OnRyYWlsaW5nRXhwYW5zaW9uT3Bwb3J0dW5p
dHkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjpXaWR0aEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4cGFuc2lvbkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6
OmFkdmFuY2VJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhwYW5zaW9uQmVoYXZpb3JGb3JJbmxpbmVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGx5RXhwYW5zaW9uQmVoYXZpb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNp
c0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OnNlbGVjdGlvblJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5s
aW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnNldENhbkhhdmVMZWZ0RXhw
YW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6c2V0Q2FuSGF2ZVJpZ2h0RXhw
YW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6c2V0Rm9yY2VSaWdodEV4cGFu
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnNldEZvcmNlTGVmdEV4cGFuc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OklubGluZUJveEJpdGZpZWxkczo6SW5s
aW5lQm94Qml0ZmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6aGFzU2VsZWN0
ZWRDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnNldEhhc1Nl
bGVjdGVkQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpjYW5IYXZlTGVm
dEV4cGFuc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OmNhbkhhdmVS
aWdodEV4cGFuc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OmZvcmNl
UmlnaHRFeHBhbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94Ojpmb3Jj
ZUxlZnRFeHBhbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpzZXRD
YW5IYXZlTGVhZGluZ0V4cGFuc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVCb3g6OnNldENhbkhhdmVUcmFpbGluZ0V4cGFuc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVCb3g6OnNldEZvcmNlVHJhaWxpbmdFeHBhbnNpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpzZXRGb3JjZUxlYWRpbmdFeHBhbnNpb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpjYW5IYXZlTGVhZGluZ0V4cGFu
c2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OmNhbkhh
dmVUcmFpbGluZ0V4cGFuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVCb3g6OmZvcmNlVHJhaWxpbmdFeHBhbnNpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lQm94Ojpmb3JjZUxlYWRpbmdFeHBhbnNpb24gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZVRleHRCb3g6OmV4cGFuc2lvbkJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJG
aWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2Fk
Q29udHJvbDo6cGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmdldEF2
ZXJhZ2VDaGFyV2lkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmV4cGFuc2lvbkJlaGF2aW9y
KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OmluaXRpYWxpemVJbmxpbmVUZXh0Qm94KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW5saW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFJ1biBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0
cmljczo6Y29uc3RydWN0VGV4dFJ1bik6CisKIDIwMjAtMDgtMDQgIERldmluIFJvdXNzbyAgPGRy
b3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgICJEb3VibGVEb3duIENhc2lubyIgcmVzcGluIGJ1
dHRvbiBzdG9wcyB3b3JraW5nIHdpdGggdHJhY2twYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDg3ZGVl
ZjQ5OTIxYzViNWZhMWVlYmYyYWY2NTg1N2NlMTRmMmY2OTUuLjg5MTgwMjc5YWYyYjdmNzY1NmJj
ZGRmOGVlYzA4MzMzYjY1YzYxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMzg1LDcgKzM4NSw3IEBA
IFJlZjxUZXh0TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjptZWFzdXJlVGV4dChj
b25zdCBTdHJpbmcmIHRleHQpCiAgICAgYXV0byBkaXJlY3Rpb24gPSB0b1RleHREaXJlY3Rpb24o
c3RhdGUoKS5kaXJlY3Rpb24sICZjb21wdXRlZFN0eWxlKTsKICAgICBib29sIG92ZXJyaWRlID0g
Y29tcHV0ZWRTdHlsZSA/IGlzT3ZlcnJpZGUoY29tcHV0ZWRTdHlsZS0+dW5pY29kZUJpZGkoKSkg
OiBmYWxzZTsKIAotICAgIFRleHRSdW4gdGV4dFJ1bihub3JtYWxpemVkVGV4dCwgMCwgMCwgQWxs
b3dUcmFpbGluZ0V4cGFuc2lvbiwgZGlyZWN0aW9uLCBvdmVycmlkZSwgdHJ1ZSk7CisgICAgVGV4
dFJ1biB0ZXh0UnVuKG5vcm1hbGl6ZWRUZXh0LCAwLCAwLCBBbGxvd1JpZ2h0RXhwYW5zaW9uLCBk
aXJlY3Rpb24sIG92ZXJyaWRlLCB0cnVlKTsKICAgICBhdXRvJiBmb250ID0gZm9udFByb3h5KCk7
CiAgICAgYXV0byYgZm9udE1ldHJpY3MgPSBmb250LmZvbnRNZXRyaWNzKCk7CiAKQEAgLTQ5OCw3
ICs0OTgsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5h
bChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgIGF1dG8gZGlyZWN0aW9uID0g
dG9UZXh0RGlyZWN0aW9uKHN0YXRlKCkuZGlyZWN0aW9uLCAmY29tcHV0ZWRTdHlsZSk7CiAgICAg
Ym9vbCBvdmVycmlkZSA9IGNvbXB1dGVkU3R5bGUgPyBpc092ZXJyaWRlKGNvbXB1dGVkU3R5bGUt
PnVuaWNvZGVCaWRpKCkpIDogZmFsc2U7CiAKLSAgICBUZXh0UnVuIHRleHRSdW4obm9ybWFsaXpl
ZFRleHQsIDAsIDAsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24sIGRpcmVjdGlvbiwgb3ZlcnJpZGUs
IHRydWUpOworICAgIFRleHRSdW4gdGV4dFJ1bihub3JtYWxpemVkVGV4dCwgMCwgMCwgQWxsb3dS
aWdodEV4cGFuc2lvbiwgZGlyZWN0aW9uLCBvdmVycmlkZSwgdHJ1ZSk7CiAgICAgZmxvYXQgZm9u
dFdpZHRoID0gZm9udFByb3h5LndpZHRoKHRleHRSdW4pOwogICAgIGJvb2wgdXNlTWF4V2lkdGgg
PSBtYXhXaWR0aCAmJiBtYXhXaWR0aC52YWx1ZSgpIDwgZm9udFdpZHRoOwogICAgIGZsb2F0IHdp
ZHRoID0gdXNlTWF4V2lkdGggPyBtYXhXaWR0aC52YWx1ZSgpIDogZm9udFdpZHRoOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1
aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZUJ1aWxkZXIuY3BwCmluZGV4IDAyMzYxNThiY2ExYTI1OWY4YWZkZTcwMzJiNWUwZjg1M2Ux
ZDI5ODAuLjk2Y2I3Yjg0NDc4YTI0Y2Q5YmE3NGIzYWQ4ZjdjMDgzOGM0YTJiNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lQnVpbGRlci5jcHAKQEAgLTIyOCw4ICsyMjgsOCBAQCB2b2lkIExpbmVCdWlsZGVyOjpq
dXN0aWZ5UnVucyhJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKQogICAgIC8vIE5lZWQg
dG8gZml4IHVwIHRoZSBsYXN0IHJ1bidzIHRyYWlsaW5nIGV4cGFuc2lvbi4KICAgICBpZiAobGFz
dFJ1bldpdGhDb250ZW50ICYmIGxhc3RSdW5XaXRoQ29udGVudC0+aGFzRXhwYW5zaW9uT3Bwb3J0
dW5pdHkoKSkgewogICAgICAgICAvLyBUdXJuIG9mZiB0aGUgdHJhaWxpbmcgYml0cyBmaXJzdCBh
bmQgYWRkIHRoZSBmb3JiaWQgdHJhaWxpbmcgZXhwYW5zaW9uLgotICAgICAgICBhdXRvIGxlYWRp
bmdFeHBhbnNpb24gPSBsYXN0UnVuV2l0aENvbnRlbnQtPmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBM
ZWFkaW5nRXhwYW5zaW9uTWFzazsKLSAgICAgICAgbGFzdFJ1bldpdGhDb250ZW50LT5zZXRFeHBh
bnNpb25CZWhhdmlvcihsZWFkaW5nRXhwYW5zaW9uIHwgRm9yYmlkVHJhaWxpbmdFeHBhbnNpb24p
OworICAgICAgICBhdXRvIGxlZnRFeHBhbnNpb24gPSBsYXN0UnVuV2l0aENvbnRlbnQtPmV4cGFu
c2lvbkJlaGF2aW9yKCkgJiBMZWZ0RXhwYW5zaW9uTWFzazsKKyAgICAgICAgbGFzdFJ1bldpdGhD
b250ZW50LT5zZXRFeHBhbnNpb25CZWhhdmlvcihsZWZ0RXhwYW5zaW9uIHwgRm9yYmlkUmlnaHRF
eHBhbnNpb24pOwogICAgIH0KICAgICAvLyBOb3RoaW5nIHRvIGRpc3RyaWJ1dGU/CiAgICAgaWYg
KCFleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KQpAQCAtODI1LDcgKzgyNSw3IEBAIHZvaWQgTGlu
ZUJ1aWxkZXI6OlJ1bjo6ZXhwYW5kKGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVUZXh0SXRl
bSwgSW5saW5lTGF5b3V0CiAKICAgICBpZiAobV90cmFpbGluZ1doaXRlc3BhY2VUeXBlID09IFRy
YWlsaW5nV2hpdGVzcGFjZTo6Tm9uZSkgewogICAgICAgICBtX3RyYWlsaW5nV2hpdGVzcGFjZVdp
ZHRoID0geyB9OwotICAgICAgICBzZXRFeHBhbnNpb25CZWhhdmlvcihBbGxvd0xlYWRpbmdFeHBh
bnNpb24gfCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKTsKKyAgICAgICAgc2V0RXhwYW5zaW9uQmVo
YXZpb3IoQWxsb3dMZWZ0RXhwYW5zaW9uIHwgQWxsb3dSaWdodEV4cGFuc2lvbik7CiAgICAgICAg
IG1fdGV4dENvbnRlbnQtPmV4cGFuZChpbmxpbmVUZXh0SXRlbS5sZW5ndGgoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC04NzksNyArODc5LDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6UnVu
Ojp2aXN1YWxseUNvbGxhcHNlVHJhaWxpbmdXaGl0ZXNwYWNlKCkKICAgICAgICAgQVNTRVJUKG1f
ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCk7CiAgICAgICAgIG1fZXhwYW5zaW9uT3Bwb3J0dW5p
dHlDb3VudC0tOwogICAgIH0KLSAgICBzZXRFeHBhbnNpb25CZWhhdmlvcihBbGxvd0xlYWRpbmdF
eHBhbnNpb24gfCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKTsKKyAgICBzZXRFeHBhbnNpb25CZWhh
dmlvcihBbGxvd0xlZnRFeHBhbnNpb24gfCBBbGxvd1JpZ2h0RXhwYW5zaW9uKTsKIH0KIAogdm9p
ZCBMaW5lQnVpbGRlcjo6UnVuOjpzZXRFeHBhbnNpb25CZWhhdmlvcihFeHBhbnNpb25CZWhhdmlv
ciBleHBhbnNpb25CZWhhdmlvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDYyN2U1NjU0OGE4
MWM4MmNiMDViYmUwYTViMTgxMTQ0ZWFhZWM4OTMuLjdlMTc4ZDFiODkwOTQ1NjJkNGY1NGFiN2E0
NjlkZjZiZDMyZjVhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNjQ3LDcgKzY0Nyw3IEBA
IHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZHZhbmNlKHVuc2lnbmVkIG9mZnNldCwgR2x5
cGhCdWZmZXIqIGdseXBoQnVmZmVyLCBHCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHN0ZDo6
cGFpcjxib29sLCBib29sPiBleHBhbnNpb25Mb2NhdGlvbihib29sIGlkZW9ncmFwaCwgYm9vbCB0
cmVhdEFzU3BhY2UsIGJvb2wgbHRyLCBib29sIGlzQWZ0ZXJFeHBhbnNpb24sIGJvb2wgZm9yYmlk
TGVhZGluZ0V4cGFuc2lvbiwgYm9vbCBmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiwgYm9vbCBmb3Jj
ZUxlYWRpbmdFeHBhbnNpb24sIGJvb2wgZm9yY2VUcmFpbGluZ0V4cGFuc2lvbikKK3N0YXRpYyBp
bmxpbmUgc3RkOjpwYWlyPGJvb2wsIGJvb2w+IGV4cGFuc2lvbkxvY2F0aW9uKGJvb2wgaWRlb2dy
YXBoLCBib29sIHRyZWF0QXNTcGFjZSwgYm9vbCBsdHIsIGJvb2wgaXNBZnRlckV4cGFuc2lvbiwg
Ym9vbCBmb3JiaWRMZWZ0RXhwYW5zaW9uLCBib29sIGZvcmJpZFJpZ2h0RXhwYW5zaW9uLCBib29s
IGZvcmNlTGVmdEV4cGFuc2lvbiwgYm9vbCBmb3JjZVJpZ2h0RXhwYW5zaW9uKQogewogICAgIGJv
b2wgZXhwYW5kTGVmdCA9IGlkZW9ncmFwaDsKICAgICBib29sIGV4cGFuZFJpZ2h0ID0gaWRlb2dy
YXBoOwpAQCAtNjU5LDI4ICs2NTksMjggQEAgc3RhdGljIGlubGluZSBzdGQ6OnBhaXI8Ym9vbCwg
Ym9vbD4gZXhwYW5zaW9uTG9jYXRpb24oYm9vbCBpZGVvZ3JhcGgsIGJvb2wgdHJlYXQKICAgICB9
CiAgICAgaWYgKGlzQWZ0ZXJFeHBhbnNpb24pCiAgICAgICAgIGV4cGFuZExlZnQgPSBmYWxzZTsK
LSAgICBBU1NFUlQoIWZvcmJpZExlYWRpbmdFeHBhbnNpb24gfHwgIWZvcmNlTGVhZGluZ0V4cGFu
c2lvbik7Ci0gICAgQVNTRVJUKCFmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiB8fCAhZm9yY2VUcmFp
bGluZ0V4cGFuc2lvbik7Ci0gICAgaWYgKGZvcmJpZExlYWRpbmdFeHBhbnNpb24pCisgICAgQVNT
RVJUKCFmb3JiaWRMZWZ0RXhwYW5zaW9uIHx8ICFmb3JjZUxlZnRFeHBhbnNpb24pOworICAgIEFT
U0VSVCghZm9yYmlkUmlnaHRFeHBhbnNpb24gfHwgIWZvcmNlUmlnaHRFeHBhbnNpb24pOworICAg
IGlmIChmb3JiaWRMZWZ0RXhwYW5zaW9uKQogICAgICAgICBleHBhbmRMZWZ0ID0gZmFsc2U7Ci0g
ICAgaWYgKGZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uKQorICAgIGlmIChmb3JiaWRSaWdodEV4cGFu
c2lvbikKICAgICAgICAgZXhwYW5kUmlnaHQgPSBmYWxzZTsKLSAgICBpZiAoZm9yY2VMZWFkaW5n
RXhwYW5zaW9uKQorICAgIGlmIChmb3JjZUxlZnRFeHBhbnNpb24pCiAgICAgICAgIGV4cGFuZExl
ZnQgPSB0cnVlOwotICAgIGlmIChmb3JjZVRyYWlsaW5nRXhwYW5zaW9uKQorICAgIGlmIChmb3Jj
ZVJpZ2h0RXhwYW5zaW9uKQogICAgICAgICBleHBhbmRSaWdodCA9IHRydWU7CiAgICAgcmV0dXJu
IHN0ZDo6bWFrZV9wYWlyKGV4cGFuZExlZnQsIGV4cGFuZFJpZ2h0KTsKIH0KIAogdm9pZCBDb21w
bGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2VzKCkKIHsKLSAgICBib29s
IGFmdGVyRXhwYW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWFkaW5nRXhw
YW5zaW9uTWFzaykgPT0gRm9yYmlkTGVhZGluZ0V4cGFuc2lvbjsKKyAgICBib29sIGFmdGVyRXhw
YW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWZ0RXhwYW5zaW9uTWFzaykg
PT0gRm9yYmlkTGVmdEV4cGFuc2lvbjsKICAgICBzaXplX3QgcnVuQ291bnQgPSBtX2NvbXBsZXhU
ZXh0UnVucy5zaXplKCk7CiAgICAgYm9vbCBoYXNFeHRyYVNwYWNpbmcgPSAobV9mb250LmxldHRl
clNwYWNpbmcoKSB8fCBtX2ZvbnQud29yZFNwYWNpbmcoKSB8fCBtX2V4cGFuc2lvbikgJiYgIW1f
cnVuLnNwYWNpbmdEaXNhYmxlZCgpOwotICAgIGJvb2wgcnVuRm9yY2VzTGVhZGluZ0V4cGFuc2lv
biA9IChtX3J1bi5leHBhbnNpb25CZWhhdmlvcigpICYgTGVhZGluZ0V4cGFuc2lvbk1hc2spID09
IEZvcmNlTGVhZGluZ0V4cGFuc2lvbjsKLSAgICBib29sIHJ1bkZvcmNlc1RyYWlsaW5nRXhwYW5z
aW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBUcmFpbGluZ0V4cGFuc2lvbk1hc2sp
ID09IEZvcmNlVHJhaWxpbmdFeHBhbnNpb247Ci0gICAgYm9vbCBydW5Gb3JiaWRzTGVhZGluZ0V4
cGFuc2lvbiA9IChtX3J1bi5leHBhbnNpb25CZWhhdmlvcigpICYgTGVhZGluZ0V4cGFuc2lvbk1h
c2spID09IEZvcmJpZExlYWRpbmdFeHBhbnNpb247Ci0gICAgYm9vbCBydW5Gb3JiaWRzVHJhaWxp
bmdFeHBhbnNpb24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIFRyYWlsaW5nRXhwYW5z
aW9uTWFzaykgPT0gRm9yYmlkVHJhaWxpbmdFeHBhbnNpb247CisgICAgYm9vbCBydW5Gb3JjZXNM
ZWZ0RXhwYW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWZ0RXhwYW5zaW9u
TWFzaykgPT0gRm9yY2VMZWZ0RXhwYW5zaW9uOworICAgIGJvb2wgcnVuRm9yY2VzUmlnaHRFeHBh
bnNpb24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIFJpZ2h0RXhwYW5zaW9uTWFzaykg
PT0gRm9yY2VSaWdodEV4cGFuc2lvbjsKKyAgICBib29sIHJ1bkZvcmJpZHNMZWZ0RXhwYW5zaW9u
ID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWZ0RXhwYW5zaW9uTWFzaykgPT0gRm9y
YmlkTGVmdEV4cGFuc2lvbjsKKyAgICBib29sIHJ1bkZvcmJpZHNSaWdodEV4cGFuc2lvbiA9ICht
X3J1bi5leHBhbnNpb25CZWhhdmlvcigpICYgUmlnaHRFeHBhbnNpb25NYXNrKSA9PSBGb3JiaWRS
aWdodEV4cGFuc2lvbjsKIAogICAgIC8vIFdlIGFyZSBpdGVyYXRpbmcgaW4gZ2x5cGggb3JkZXIs
IG5vdCBzdHJpbmcgb3JkZXIuIENvbXBhcmUgdGhpcyB0byBXaWR0aEl0ZXJhdG9yOjphZHZhbmNl
SW50ZXJuYWwoKQogICAgIGZvciAoc2l6ZV90IHJ1bkluZGV4ID0gMDsgcnVuSW5kZXggPCBydW5D
b3VudDsgKytydW5JbmRleCkgewpAQCAtNzQwLDI1ICs3NDAsMjUgQEAgdm9pZCBDb21wbGV4VGV4
dENvbnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgICAgICBi
b29sIGlzRmlyc3RDaGFyYWN0ZXIgPSAhKGNoYXJhY3RlckluZGV4ICsgY29tcGxleFRleHRSdW4u
c3RyaW5nTG9jYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgYm9vbCBpc0xhc3RDaGFyYWN0ZXIg
PSBjaGFyYWN0ZXJJbmRleEluUnVuICsgMSA9PSBtX3J1bi5sZW5ndGgoKSB8fCAoVTE2X0lTX0xF
QUQoY2gpICYmIGNoYXJhY3RlckluZGV4SW5SdW4gKyAyID09IG1fcnVuLmxlbmd0aCgpICYmIFUx
Nl9JU19UUkFJTCgqKGNwICsgY2hhcmFjdGVySW5kZXggKyAxKSkpOwogCi0gICAgICAgICAgICAg
ICAgYm9vbCBmb3JjZUxlYWRpbmdFeHBhbnNpb24gPSBmYWxzZTsgLy8gT24gdGhlIGxlZnQsIHJl
Z2FyZGxlc3Mgb2YgbV9ydW4ubHRyKCkKLSAgICAgICAgICAgICAgICBib29sIGZvcmNlVHJhaWxp
bmdFeHBhbnNpb24gPSBmYWxzZTsgLy8gT24gdGhlIHJpZ2h0LCByZWdhcmRsZXNzIG9mIG1fcnVu
Lmx0cigpCi0gICAgICAgICAgICAgICAgYm9vbCBmb3JiaWRMZWFkaW5nRXhwYW5zaW9uID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgYm9vbCBmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiA9IGZhbHNl
OwotICAgICAgICAgICAgICAgIGlmIChydW5Gb3JjZXNMZWFkaW5nRXhwYW5zaW9uKQotICAgICAg
ICAgICAgICAgICAgICBmb3JjZUxlYWRpbmdFeHBhbnNpb24gPSBtX3J1bi5sdHIoKSA/IGlzRmly
c3RDaGFyYWN0ZXIgOiBpc0xhc3RDaGFyYWN0ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKHJ1bkZv
cmNlc1RyYWlsaW5nRXhwYW5zaW9uKQotICAgICAgICAgICAgICAgICAgICBmb3JjZVRyYWlsaW5n
RXhwYW5zaW9uID0gbV9ydW4ubHRyKCkgPyBpc0xhc3RDaGFyYWN0ZXIgOiBpc0ZpcnN0Q2hhcmFj
dGVyOwotICAgICAgICAgICAgICAgIGlmIChydW5Gb3JiaWRzTGVhZGluZ0V4cGFuc2lvbikKLSAg
ICAgICAgICAgICAgICAgICAgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8g
aXNGaXJzdENoYXJhY3RlciA6IGlzTGFzdENoYXJhY3RlcjsKLSAgICAgICAgICAgICAgICBpZiAo
cnVuRm9yYmlkc1RyYWlsaW5nRXhwYW5zaW9uKQotICAgICAgICAgICAgICAgICAgICBmb3JiaWRU
cmFpbGluZ0V4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8gaXNMYXN0Q2hhcmFjdGVyIDogaXNGaXJz
dENoYXJhY3RlcjsKKyAgICAgICAgICAgICAgICBib29sIGZvcmNlTGVmdEV4cGFuc2lvbiA9IGZh
bHNlOyAvLyBPbiB0aGUgbGVmdCwgcmVnYXJkbGVzcyBvZiBtX3J1bi5sdHIoKQorICAgICAgICAg
ICAgICAgIGJvb2wgZm9yY2VSaWdodEV4cGFuc2lvbiA9IGZhbHNlOyAvLyBPbiB0aGUgcmlnaHQs
IHJlZ2FyZGxlc3Mgb2YgbV9ydW4ubHRyKCkKKyAgICAgICAgICAgICAgICBib29sIGZvcmJpZExl
ZnRFeHBhbnNpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBib29sIGZvcmJpZFJpZ2h0RXhw
YW5zaW9uID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKHJ1bkZvcmNlc0xlZnRFeHBhbnNp
b24pCisgICAgICAgICAgICAgICAgICAgIGZvcmNlTGVmdEV4cGFuc2lvbiA9IG1fcnVuLmx0cigp
ID8gaXNGaXJzdENoYXJhY3RlciA6IGlzTGFzdENoYXJhY3RlcjsKKyAgICAgICAgICAgICAgICBp
ZiAocnVuRm9yY2VzUmlnaHRFeHBhbnNpb24pCisgICAgICAgICAgICAgICAgICAgIGZvcmNlUmln
aHRFeHBhbnNpb24gPSBtX3J1bi5sdHIoKSA/IGlzTGFzdENoYXJhY3RlciA6IGlzRmlyc3RDaGFy
YWN0ZXI7CisgICAgICAgICAgICAgICAgaWYgKHJ1bkZvcmJpZHNMZWZ0RXhwYW5zaW9uKQorICAg
ICAgICAgICAgICAgICAgICBmb3JiaWRMZWZ0RXhwYW5zaW9uID0gbV9ydW4ubHRyKCkgPyBpc0Zp
cnN0Q2hhcmFjdGVyIDogaXNMYXN0Q2hhcmFjdGVyOworICAgICAgICAgICAgICAgIGlmIChydW5G
b3JiaWRzUmlnaHRFeHBhbnNpb24pCisgICAgICAgICAgICAgICAgICAgIGZvcmJpZFJpZ2h0RXhw
YW5zaW9uID0gbV9ydW4ubHRyKCkgPyBpc0xhc3RDaGFyYWN0ZXIgOiBpc0ZpcnN0Q2hhcmFjdGVy
OwogICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBqdXN0aWZpY2F0aW9uIGFuZCB3b3JkLXNwYWNp
bmcuCiAgICAgICAgICAgICAgICAgc3RhdGljIGJvb2wgZXhwYW5kQXJvdW5kSWRlb2dyYXBocyA9
IEZvbnRDYXNjYWRlOjpjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpOwog
ICAgICAgICAgICAgICAgIGJvb2wgaWRlb2dyYXBoID0gZXhwYW5kQXJvdW5kSWRlb2dyYXBocyAm
JiBGb250Q2FzY2FkZTo6aXNDSktJZGVvZ3JhcGhPclN5bWJvbChjaCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHRyZWF0QXNTcGFjZSB8fCBpZGVvZ3JhcGggfHwgZm9yY2VMZWFkaW5nRXhwYW5zaW9u
IHx8IGZvcmNlVHJhaWxpbmdFeHBhbnNpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAodHJlYXRB
c1NwYWNlIHx8IGlkZW9ncmFwaCB8fCBmb3JjZUxlZnRFeHBhbnNpb24gfHwgZm9yY2VSaWdodEV4
cGFuc2lvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBEaXN0cmlidXRlIHRoZSBydW4ncyB0
b3RhbCBleHBhbnNpb24gZXZlbmx5IG92ZXIgYWxsIGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGlu
IHRoZSBydW4uCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2V4cGFuc2lvbikgewotICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwgZXhwYW5kUmlnaHRdID0gZXhwYW5z
aW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1fcnVuLmx0cigpLCBhZnRlckV4
cGFuc2lvbiwgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgZm9yYmlkVHJhaWxpbmdFeHBhbnNpb24s
IGZvcmNlTGVhZGluZ0V4cGFuc2lvbiwgZm9yY2VUcmFpbGluZ0V4cGFuc2lvbik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIFtleHBhbmRMZWZ0LCBleHBhbmRSaWdodF0gPSBleHBhbnNp
b25Mb2NhdGlvbihpZGVvZ3JhcGgsIHRyZWF0QXNTcGFjZSwgbV9ydW4ubHRyKCksIGFmdGVyRXhw
YW5zaW9uLCBmb3JiaWRMZWZ0RXhwYW5zaW9uLCBmb3JiaWRSaWdodEV4cGFuc2lvbiwgZm9yY2VM
ZWZ0RXhwYW5zaW9uLCBmb3JjZVJpZ2h0RXhwYW5zaW9uKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChleHBhbmRMZWZ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9leHBh
bnNpb24gLT0gbV9leHBhbnNpb25QZXJPcHBvcnR1bml0eTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBJbmNyZWFzZSBwcmV2aW91cyB3aWR0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDgwZmFiYjMyYWRiZjY5Y2Mx
ZTQ4MGIxN2JkMWM2OTljODlkZjQyNmMuLjNlZTY5YjdlMTliMWNhZDMxNWYyOGZjMjM1NDQzMTQz
ODlmYTYzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5jcHAKQEAgLTEwODYsOCArMTA4Niw4IEBAIGJvb2wgRm9udENhc2NhZGU6OmlzQ0pL
SWRlb2dyYXBoT3JTeW1ib2woVUNoYXIzMiBjKQogc3RkOjpwYWlyPHVuc2lnbmVkLCBib29sPiBG
b250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKGNvbnN0IExDaGFy
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBF
eHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvcikKIHsKICAgICB1bnNpZ25lZCBjb3Vu
dCA9IDA7Ci0gICAgYm9vbCBpc0FmdGVyRXhwYW5zaW9uID0gKGV4cGFuc2lvbkJlaGF2aW9yICYg
TGVhZGluZ0V4cGFuc2lvbk1hc2spID09IEZvcmJpZExlYWRpbmdFeHBhbnNpb247Ci0gICAgaWYg
KChleHBhbnNpb25CZWhhdmlvciAmIExlYWRpbmdFeHBhbnNpb25NYXNrKSA9PSBGb3JjZUxlYWRp
bmdFeHBhbnNpb24pIHsKKyAgICBib29sIGlzQWZ0ZXJFeHBhbnNpb24gPSAoZXhwYW5zaW9uQmVo
YXZpb3IgJiBMZWZ0RXhwYW5zaW9uTWFzaykgPT0gRm9yYmlkTGVmdEV4cGFuc2lvbjsKKyAgICBp
ZiAoKGV4cGFuc2lvbkJlaGF2aW9yICYgTGVmdEV4cGFuc2lvbk1hc2spID09IEZvcmNlTGVmdEV4
cGFuc2lvbikgewogICAgICAgICArK2NvdW50OwogICAgICAgICBpc0FmdGVyRXhwYW5zaW9uID0g
dHJ1ZTsKICAgICB9CkBAIC0xMTA4LDEwICsxMTA4LDEwIEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
Ym9vbD4gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbChjb25z
dCBMCiAgICAgICAgICAgICAgICAgaXNBZnRlckV4cGFuc2lvbiA9IGZhbHNlOwogICAgICAgICB9
CiAgICAgfQotICAgIGlmICghaXNBZnRlckV4cGFuc2lvbiAmJiAoZXhwYW5zaW9uQmVoYXZpb3Ig
JiBUcmFpbGluZ0V4cGFuc2lvbk1hc2spID09IEZvcmNlVHJhaWxpbmdFeHBhbnNpb24pIHsKKyAg
ICBpZiAoIWlzQWZ0ZXJFeHBhbnNpb24gJiYgKGV4cGFuc2lvbkJlaGF2aW9yICYgUmlnaHRFeHBh
bnNpb25NYXNrKSA9PSBGb3JjZVJpZ2h0RXhwYW5zaW9uKSB7CiAgICAgICAgICsrY291bnQ7CiAg
ICAgICAgIGlzQWZ0ZXJFeHBhbnNpb24gPSB0cnVlOwotICAgIH0gZWxzZSBpZiAoaXNBZnRlckV4
cGFuc2lvbiAmJiAoZXhwYW5zaW9uQmVoYXZpb3IgJiBUcmFpbGluZ0V4cGFuc2lvbk1hc2spID09
IEZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uKSB7CisgICAgfSBlbHNlIGlmIChpc0FmdGVyRXhwYW5z
aW9uICYmIChleHBhbnNpb25CZWhhdmlvciAmIFJpZ2h0RXhwYW5zaW9uTWFzaykgPT0gRm9yYmlk
UmlnaHRFeHBhbnNpb24pIHsKICAgICAgICAgQVNTRVJUKGNvdW50KTsKICAgICAgICAgLS1jb3Vu
dDsKICAgICAgICAgaXNBZnRlckV4cGFuc2lvbiA9IGZhbHNlOwpAQCAtMTEyMyw4ICsxMTIzLDgg
QEAgc3RkOjpwYWlyPHVuc2lnbmVkLCBib29sPiBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0
dW5pdHlDb3VudEludGVybmFsKGNvbnN0IFUKIHsKICAgICBzdGF0aWMgYm9vbCBleHBhbmRBcm91
bmRJZGVvZ3JhcGhzID0gY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsK
ICAgICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgYm9vbCBpc0FmdGVyRXhwYW5zaW9uID0gKGV4
cGFuc2lvbkJlaGF2aW9yICYgTGVhZGluZ0V4cGFuc2lvbk1hc2spID09IEZvcmJpZExlYWRpbmdF
eHBhbnNpb247Ci0gICAgaWYgKChleHBhbnNpb25CZWhhdmlvciAmIExlYWRpbmdFeHBhbnNpb25N
YXNrKSA9PSBGb3JjZUxlYWRpbmdFeHBhbnNpb24pIHsKKyAgICBib29sIGlzQWZ0ZXJFeHBhbnNp
b24gPSAoZXhwYW5zaW9uQmVoYXZpb3IgJiBMZWZ0RXhwYW5zaW9uTWFzaykgPT0gRm9yYmlkTGVm
dEV4cGFuc2lvbjsKKyAgICBpZiAoKGV4cGFuc2lvbkJlaGF2aW9yICYgTGVmdEV4cGFuc2lvbk1h
c2spID09IEZvcmNlTGVmdEV4cGFuc2lvbikgewogICAgICAgICArK2NvdW50OwogICAgICAgICBp
c0FmdGVyRXhwYW5zaW9uID0gdHJ1ZTsKICAgICB9CkBAIC0xMTcxLDEwICsxMTcxLDEwIEBAIHN0
ZDo6cGFpcjx1bnNpZ25lZCwgYm9vbD4gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5
Q291bnRJbnRlcm5hbChjb25zdCBVCiAgICAgICAgICAgICBpc0FmdGVyRXhwYW5zaW9uID0gZmFs
c2U7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCFpc0FmdGVyRXhwYW5zaW9uICYmIChleHBh
bnNpb25CZWhhdmlvciAmIFRyYWlsaW5nRXhwYW5zaW9uTWFzaykgPT0gRm9yY2VUcmFpbGluZ0V4
cGFuc2lvbikgeworICAgIGlmICghaXNBZnRlckV4cGFuc2lvbiAmJiAoZXhwYW5zaW9uQmVoYXZp
b3IgJiBSaWdodEV4cGFuc2lvbk1hc2spID09IEZvcmNlUmlnaHRFeHBhbnNpb24pIHsKICAgICAg
ICAgKytjb3VudDsKICAgICAgICAgaXNBZnRlckV4cGFuc2lvbiA9IHRydWU7Ci0gICAgfSBlbHNl
IGlmIChpc0FmdGVyRXhwYW5zaW9uICYmIChleHBhbnNpb25CZWhhdmlvciAmIFRyYWlsaW5nRXhw
YW5zaW9uTWFzaykgPT0gRm9yYmlkVHJhaWxpbmdFeHBhbnNpb24pIHsKKyAgICB9IGVsc2UgaWYg
KGlzQWZ0ZXJFeHBhbnNpb24gJiYgKGV4cGFuc2lvbkJlaGF2aW9yICYgUmlnaHRFeHBhbnNpb25N
YXNrKSA9PSBGb3JiaWRSaWdodEV4cGFuc2lvbikgewogICAgICAgICBBU1NFUlQoY291bnQpOwog
ICAgICAgICAtLWNvdW50OwogICAgICAgICBpc0FmdGVyRXhwYW5zaW9uID0gZmFsc2U7CkBAIC0x
MTkzLDcgKzExOTMsNyBAQCBzdGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IEZvbnRDYXNjYWRlOjpl
eHBhbnNpb25PcHBvcnR1bml0eUNvdW50KGNvbnN0IFN0cmluZ1ZpZQogICAgIHJldHVybiBleHBh
bnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwoc3RyaW5nVmlldy5jaGFyYWN0ZXJzMTYoKSwg
c3RyaW5nVmlldy5sZW5ndGgoKSwgZGlyZWN0aW9uLCBleHBhbnNpb25CZWhhdmlvcik7CiB9CiAK
LWJvb2wgRm9udENhc2NhZGU6OmxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eShjb25zdCBTdHJp
bmdWaWV3JiBzdHJpbmdWaWV3LCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKK2Jvb2wgRm9udENh
c2NhZGU6OmxlZnRFeHBhbnNpb25PcHBvcnR1bml0eShjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdW
aWV3LCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBpZiAoIXN0cmluZ1ZpZXcubGVu
Z3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMTIsNyArMTIxMiw3IEBAIGJvb2wg
Rm9udENhc2NhZGU6OmxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eShjb25zdCBTdHJpbmdWaWV3
JiBzdHJpbmdWaWV3LCBUZXh0CiAgICAgcmV0dXJuIGNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJ
bkNvbXBsZXhUZXh0KCkgJiYgaXNDSktJZGVvZ3JhcGhPclN5bWJvbChpbml0aWFsQ2hhcmFjdGVy
KTsKIH0KIAotYm9vbCBGb250Q2FzY2FkZTo6dHJhaWxpbmdFeHBhbnNpb25PcHBvcnR1bml0eShj
b25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKK2Jv
b2wgRm9udENhc2NhZGU6OnJpZ2h0RXhwYW5zaW9uT3Bwb3J0dW5pdHkoY29uc3QgU3RyaW5nVmll
dyYgc3RyaW5nVmlldywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgaWYgKCFzdHJp
bmdWaWV3Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA1OGE1NjdkODY2NDRiNDgz
OGQ2Zjg3MWRjNmZjZmViNTYwOGMyMGU5Li45YWQzYWU0YmVmMTIxZDZkMDE3ZjJiNzI1NDVkYmNk
NjFkMjU0YWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmgKQEAgLTE3NCwxMCArMTc0LDggQEAgcHVibGljOgogCiAgICAgLy8gV2hldGhlciBv
ciBub3QgdGhlcmUgaXMgYW4gZXhwYW5zaW9uIG9wcG9ydHVuaXR5IGp1c3QgYmVmb3JlIHRoZSBm
aXJzdCBjaGFyYWN0ZXIKICAgICAvLyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCB0YWtlIGEgaXNB
ZnRlckV4cGFuc2lvbiBmbGFnOyB0aGlzIGFzc3VtZXMgdGhhdCBpc0FmdGVyRXhwYW5zaW9uIGlz
IGZhbHNlCi0gICAgLy8gSGVyZSwgIkxlYWRpbmciIGFuZCAiVHJhaWxpbmciIGFyZSByZWxldmFu
dCBhZnRlciB0aGUgbGluZSBoYXMgYmVlbiByZWFycmFuZ2VkIGZvciBiaWRpLgotICAgIC8vICgi
TGVhZGluZyIgbWVhbnMgImxlZnQiIGFuZCAiVHJhaWxpbmciIG1lYW5zICJyaWdodC4iKQotICAg
IHN0YXRpYyBib29sIGxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eShjb25zdCBTdHJpbmdWaWV3
JiwgVGV4dERpcmVjdGlvbik7Ci0gICAgc3RhdGljIGJvb2wgdHJhaWxpbmdFeHBhbnNpb25PcHBv
cnR1bml0eShjb25zdCBTdHJpbmdWaWV3JiwgVGV4dERpcmVjdGlvbik7CisgICAgc3RhdGljIGJv
b2wgbGVmdEV4cGFuc2lvbk9wcG9ydHVuaXR5KGNvbnN0IFN0cmluZ1ZpZXcmLCBUZXh0RGlyZWN0
aW9uKTsKKyAgICBzdGF0aWMgYm9vbCByaWdodEV4cGFuc2lvbk9wcG9ydHVuaXR5KGNvbnN0IFN0
cmluZ1ZpZXcmLCBUZXh0RGlyZWN0aW9uKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHNldFNob3VsZFVzZVNtb290aGluZyhib29sKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBzaG91bGRVc2VTbW9vdGhpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKaW5kZXggNjE2M2JjZTI3YTI0ZmI3M2Y3
ZjQ3MGYwOTkyYWIxYzcyYTA1ZWY5ZS4uYjk5YTk1ZjdlYTYwMWMxNDFhZDYzODI1OGQzYzQ0ZThj
MjUwNTJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lk
dGhJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lk
dGhJdGVyYXRvci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgV2lkdGhJdGVyYXRvcjo6V2lkdGhJdGVy
YXRvcihjb25zdCBGb250Q2FzY2FkZSogZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2UK
ICAgICAsIG1fcnVuKHJ1bikKICAgICAsIG1fZmFsbGJhY2tGb250cyhmYWxsYmFja0ZvbnRzKQog
ICAgICwgbV9leHBhbnNpb24ocnVuLmV4cGFuc2lvbigpKQotICAgICwgbV9pc0FmdGVyRXhwYW5z
aW9uKChydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIExlYWRpbmdFeHBhbnNpb25NYXNrKSA9PSBG
b3JiaWRMZWFkaW5nRXhwYW5zaW9uKQorICAgICwgbV9pc0FmdGVyRXhwYW5zaW9uKChydW4uZXhw
YW5zaW9uQmVoYXZpb3IoKSAmIExlZnRFeHBhbnNpb25NYXNrKSA9PSBGb3JiaWRMZWZ0RXhwYW5z
aW9uKQogICAgICwgbV9hY2NvdW50Rm9yR2x5cGhCb3VuZHMoYWNjb3VudEZvckdseXBoQm91bmRz
KQogICAgICwgbV9lbmFibGVLZXJuaW5nKGZvbnQtPmVuYWJsZUtlcm5pbmcoKSkKICAgICAsIG1f
cmVxdWlyZXNTaGFwaW5nKGZvbnQtPnJlcXVpcmVzU2hhcGluZygpKQpAQCAtMTM5LDcgKzEzOSw3
IEBAIGlubGluZSBmbG9hdCBXaWR0aEl0ZXJhdG9yOjphcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBo
QnVmZmVyKiBnbHlwaEJ1ZmZlciwgYm9vbCBsCiAgICAgcmV0dXJuIGFmdGVyV2lkdGggLSBiZWZv
cmVXaWR0aDsKIH0KIAotc3RhdGljIGlubGluZSBzdGQ6OnBhaXI8Ym9vbCwgYm9vbD4gZXhwYW5z
aW9uTG9jYXRpb24oYm9vbCBpZGVvZ3JhcGgsIGJvb2wgdHJlYXRBc1NwYWNlLCBib29sIGx0ciwg
Ym9vbCBpc0FmdGVyRXhwYW5zaW9uLCBib29sIGZvcmJpZExlYWRpbmdFeHBhbnNpb24sIGJvb2wg
Zm9yYmlkVHJhaWxpbmdFeHBhbnNpb24sIGJvb2wgZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBib29s
IGZvcmNlVHJhaWxpbmdFeHBhbnNpb24pCitzdGF0aWMgaW5saW5lIHN0ZDo6cGFpcjxib29sLCBi
b29sPiBleHBhbnNpb25Mb2NhdGlvbihib29sIGlkZW9ncmFwaCwgYm9vbCB0cmVhdEFzU3BhY2Us
IGJvb2wgbHRyLCBib29sIGlzQWZ0ZXJFeHBhbnNpb24sIGJvb2wgZm9yYmlkTGVmdEV4cGFuc2lv
biwgYm9vbCBmb3JiaWRSaWdodEV4cGFuc2lvbiwgYm9vbCBmb3JjZUxlZnRFeHBhbnNpb24sIGJv
b2wgZm9yY2VSaWdodEV4cGFuc2lvbikKIHsKICAgICBib29sIGV4cGFuZExlZnQgPSBpZGVvZ3Jh
cGg7CiAgICAgYm9vbCBleHBhbmRSaWdodCA9IGlkZW9ncmFwaDsKQEAgLTE1NSwxNSArMTU1LDE1
IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpwYWlyPGJvb2wsIGJvb2w+IGV4cGFuc2lvbkxvY2F0aW9u
KGJvb2wgaWRlb2dyYXBoLCBib29sIHRyZWF0CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGV4
cGFuZFJpZ2h0ID0gZmFsc2U7CiAgICAgfQotICAgIEFTU0VSVCghZm9yYmlkTGVhZGluZ0V4cGFu
c2lvbiB8fCAhZm9yY2VMZWFkaW5nRXhwYW5zaW9uKTsKLSAgICBBU1NFUlQoIWZvcmJpZFRyYWls
aW5nRXhwYW5zaW9uIHx8ICFmb3JjZVRyYWlsaW5nRXhwYW5zaW9uKTsKLSAgICBpZiAoZm9yYmlk
TGVhZGluZ0V4cGFuc2lvbikKKyAgICBBU1NFUlQoIWZvcmJpZExlZnRFeHBhbnNpb24gfHwgIWZv
cmNlTGVmdEV4cGFuc2lvbik7CisgICAgQVNTRVJUKCFmb3JiaWRSaWdodEV4cGFuc2lvbiB8fCAh
Zm9yY2VSaWdodEV4cGFuc2lvbik7CisgICAgaWYgKGZvcmJpZExlZnRFeHBhbnNpb24pCiAgICAg
ICAgIGV4cGFuZExlZnQgPSBmYWxzZTsKLSAgICBpZiAoZm9yYmlkVHJhaWxpbmdFeHBhbnNpb24p
CisgICAgaWYgKGZvcmJpZFJpZ2h0RXhwYW5zaW9uKQogICAgICAgICBleHBhbmRSaWdodCA9IGZh
bHNlOwotICAgIGlmIChmb3JjZUxlYWRpbmdFeHBhbnNpb24pCisgICAgaWYgKGZvcmNlTGVmdEV4
cGFuc2lvbikKICAgICAgICAgZXhwYW5kTGVmdCA9IHRydWU7Ci0gICAgaWYgKGZvcmNlVHJhaWxp
bmdFeHBhbnNpb24pCisgICAgaWYgKGZvcmNlUmlnaHRFeHBhbnNpb24pCiAgICAgICAgIGV4cGFu
ZFJpZ2h0ID0gdHJ1ZTsKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoZXhwYW5kTGVmdCwgZXhw
YW5kUmlnaHQpOwogfQpAQCAtMTc1LDEwICsxNzUsMTAgQEAgaW5saW5lIHZvaWQgV2lkdGhJdGVy
YXRvcjo6YWR2YW5jZUludGVybmFsKFRleHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yLCBHbHlwaEJ1
ZmYKICAgICBib29sIHJ0bCA9IG1fcnVuLnJ0bCgpOwogICAgIGJvb2wgaGFzRXh0cmFTcGFjaW5n
ID0gKG1fZm9udC0+bGV0dGVyU3BhY2luZygpIHx8IG1fZm9udC0+d29yZFNwYWNpbmcoKSB8fCBt
X2V4cGFuc2lvbikgJiYgIW1fcnVuLnNwYWNpbmdEaXNhYmxlZCgpOwogCi0gICAgYm9vbCBydW5G
b3JjZXNMZWFkaW5nRXhwYW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWFk
aW5nRXhwYW5zaW9uTWFzaykgPT0gRm9yY2VMZWFkaW5nRXhwYW5zaW9uOwotICAgIGJvb2wgcnVu
Rm9yY2VzVHJhaWxpbmdFeHBhbnNpb24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIFRy
YWlsaW5nRXhwYW5zaW9uTWFzaykgPT0gRm9yY2VUcmFpbGluZ0V4cGFuc2lvbjsKLSAgICBib29s
IHJ1bkZvcmJpZHNMZWFkaW5nRXhwYW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkg
JiBMZWFkaW5nRXhwYW5zaW9uTWFzaykgPT0gRm9yYmlkTGVhZGluZ0V4cGFuc2lvbjsKLSAgICBi
b29sIHJ1bkZvcmJpZHNUcmFpbGluZ0V4cGFuc2lvbiA9IChtX3J1bi5leHBhbnNpb25CZWhhdmlv
cigpICYgVHJhaWxpbmdFeHBhbnNpb25NYXNrKSA9PSBGb3JiaWRUcmFpbGluZ0V4cGFuc2lvbjsK
KyAgICBib29sIHJ1bkZvcmNlc0xlZnRFeHBhbnNpb24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZp
b3IoKSAmIExlZnRFeHBhbnNpb25NYXNrKSA9PSBGb3JjZUxlZnRFeHBhbnNpb247CisgICAgYm9v
bCBydW5Gb3JjZXNSaWdodEV4cGFuc2lvbiA9IChtX3J1bi5leHBhbnNpb25CZWhhdmlvcigpICYg
UmlnaHRFeHBhbnNpb25NYXNrKSA9PSBGb3JjZVJpZ2h0RXhwYW5zaW9uOworICAgIGJvb2wgcnVu
Rm9yYmlkc0xlZnRFeHBhbnNpb24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIExlZnRF
eHBhbnNpb25NYXNrKSA9PSBGb3JiaWRMZWZ0RXhwYW5zaW9uOworICAgIGJvb2wgcnVuRm9yYmlk
c1JpZ2h0RXhwYW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBSaWdodEV4cGFu
c2lvbk1hc2spID09IEZvcmJpZFJpZ2h0RXhwYW5zaW9uOwogICAgIGZsb2F0IHdpZHRoU2luY2VM
YXN0Um91bmRpbmcgPSBtX3J1bldpZHRoU29GYXI7CiAgICAgZmxvYXQgbGVmdG92ZXJKdXN0aWZp
Y2F0aW9uV2lkdGggPSAwOwogICAgIG1fcnVuV2lkdGhTb0ZhciA9IGZsb29yZihtX3J1bldpZHRo
U29GYXIpOwpAQCAtMjYyLDIzICsyNjIsMjMgQEAgaW5saW5lIHZvaWQgV2lkdGhJdGVyYXRvcjo6
YWR2YW5jZUludGVybmFsKFRleHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yLCBHbHlwaEJ1ZmYKICAg
ICAgICAgICAgIHN0YXRpYyBib29sIGV4cGFuZEFyb3VuZElkZW9ncmFwaHMgPSBGb250Q2FzY2Fk
ZTo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKICAgICAgICAgICAg
IGJvb2wgdHJlYXRBc1NwYWNlID0gRm9udENhc2NhZGU6OnRyZWF0QXNTcGFjZShjaGFyYWN0ZXIp
OwogICAgICAgICAgICAgYm9vbCBjdXJyZW50SXNMYXN0Q2hhcmFjdGVyID0gY3VycmVudENoYXJh
Y3RlckluZGV4ICsgYWR2YW5jZUxlbmd0aCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fcnVuLmxl
bmd0aCgpKTsKLSAgICAgICAgICAgIGJvb2wgZm9yY2VMZWFkaW5nRXhwYW5zaW9uID0gZmFsc2U7
IC8vIE9uIHRoZSBsZWZ0LCByZWdhcmRsZXNzIG9mIG1fcnVuLmx0cigpCi0gICAgICAgICAgICBi
b29sIGZvcmNlVHJhaWxpbmdFeHBhbnNpb24gPSBmYWxzZTsgLy8gT24gdGhlIHJpZ2h0LCByZWdh
cmRsZXNzIG9mIG1fcnVuLmx0cigpCi0gICAgICAgICAgICBib29sIGZvcmJpZExlYWRpbmdFeHBh
bnNpb24gPSBmYWxzZTsKLSAgICAgICAgICAgIGJvb2wgZm9yYmlkVHJhaWxpbmdFeHBhbnNpb24g
PSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChydW5Gb3JjZXNMZWFkaW5nRXhwYW5zaW9uKQotICAg
ICAgICAgICAgICAgIGZvcmNlTGVhZGluZ0V4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8gIWN1cnJl
bnRDaGFyYWN0ZXJJbmRleCA6IGN1cnJlbnRJc0xhc3RDaGFyYWN0ZXI7Ci0gICAgICAgICAgICBp
ZiAocnVuRm9yY2VzVHJhaWxpbmdFeHBhbnNpb24pCi0gICAgICAgICAgICAgICAgZm9yY2VUcmFp
bGluZ0V4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8gY3VycmVudElzTGFzdENoYXJhY3RlciA6ICFj
dXJyZW50Q2hhcmFjdGVySW5kZXg7Ci0gICAgICAgICAgICBpZiAocnVuRm9yYmlkc0xlYWRpbmdF
eHBhbnNpb24pCi0gICAgICAgICAgICAgICAgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiA9IG1fcnVu
Lmx0cigpID8gIWN1cnJlbnRDaGFyYWN0ZXJJbmRleCA6IGN1cnJlbnRJc0xhc3RDaGFyYWN0ZXI7
Ci0gICAgICAgICAgICBpZiAocnVuRm9yYmlkc1RyYWlsaW5nRXhwYW5zaW9uKQotICAgICAgICAg
ICAgICAgIGZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uID0gbV9ydW4ubHRyKCkgPyBjdXJyZW50SXNM
YXN0Q2hhcmFjdGVyIDogIWN1cnJlbnRDaGFyYWN0ZXJJbmRleDsKKyAgICAgICAgICAgIGJvb2wg
Zm9yY2VMZWZ0RXhwYW5zaW9uID0gZmFsc2U7IC8vIE9uIHRoZSBsZWZ0LCByZWdhcmRsZXNzIG9m
IG1fcnVuLmx0cigpCisgICAgICAgICAgICBib29sIGZvcmNlUmlnaHRFeHBhbnNpb24gPSBmYWxz
ZTsgLy8gT24gdGhlIHJpZ2h0LCByZWdhcmRsZXNzIG9mIG1fcnVuLmx0cigpCisgICAgICAgICAg
ICBib29sIGZvcmJpZExlZnRFeHBhbnNpb24gPSBmYWxzZTsKKyAgICAgICAgICAgIGJvb2wgZm9y
YmlkUmlnaHRFeHBhbnNpb24gPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChydW5Gb3JjZXNMZWZ0
RXhwYW5zaW9uKQorICAgICAgICAgICAgICAgIGZvcmNlTGVmdEV4cGFuc2lvbiA9IG1fcnVuLmx0
cigpID8gIWN1cnJlbnRDaGFyYWN0ZXJJbmRleCA6IGN1cnJlbnRJc0xhc3RDaGFyYWN0ZXI7Cisg
ICAgICAgICAgICBpZiAocnVuRm9yY2VzUmlnaHRFeHBhbnNpb24pCisgICAgICAgICAgICAgICAg
Zm9yY2VSaWdodEV4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8gY3VycmVudElzTGFzdENoYXJhY3Rl
ciA6ICFjdXJyZW50Q2hhcmFjdGVySW5kZXg7CisgICAgICAgICAgICBpZiAocnVuRm9yYmlkc0xl
ZnRFeHBhbnNpb24pCisgICAgICAgICAgICAgICAgZm9yYmlkTGVmdEV4cGFuc2lvbiA9IG1fcnVu
Lmx0cigpID8gIWN1cnJlbnRDaGFyYWN0ZXJJbmRleCA6IGN1cnJlbnRJc0xhc3RDaGFyYWN0ZXI7
CisgICAgICAgICAgICBpZiAocnVuRm9yYmlkc1JpZ2h0RXhwYW5zaW9uKQorICAgICAgICAgICAg
ICAgIGZvcmJpZFJpZ2h0RXhwYW5zaW9uID0gbV9ydW4ubHRyKCkgPyBjdXJyZW50SXNMYXN0Q2hh
cmFjdGVyIDogIWN1cnJlbnRDaGFyYWN0ZXJJbmRleDsKICAgICAgICAgICAgIGJvb2wgaWRlb2dy
YXBoID0gKGV4cGFuZEFyb3VuZElkZW9ncmFwaHMgJiYgRm9udENhc2NhZGU6OmlzQ0pLSWRlb2dy
YXBoT3JTeW1ib2woY2hhcmFjdGVyKSk7Ci0gICAgICAgICAgICBpZiAodHJlYXRBc1NwYWNlIHx8
IGlkZW9ncmFwaCB8fCBmb3JjZUxlYWRpbmdFeHBhbnNpb24gfHwgZm9yY2VUcmFpbGluZ0V4cGFu
c2lvbikgeworICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8fCBpZGVvZ3JhcGggfHwgZm9y
Y2VMZWZ0RXhwYW5zaW9uIHx8IGZvcmNlUmlnaHRFeHBhbnNpb24pIHsKICAgICAgICAgICAgICAg
ICAvLyBEaXN0cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZlbmx5IG92ZXIgYWxs
IGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAgICAgICAgICAgaWYg
KG1fZXhwYW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gW2V4cGFuZExlZnQsIGV4
cGFuZFJpZ2h0XSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRBc1NwYWNlLCBt
X3J1bi5sdHIoKSwgbV9pc0FmdGVyRXhwYW5zaW9uLCBmb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBm
b3JiaWRUcmFpbGluZ0V4cGFuc2lvbiwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBmb3JjZVRyYWls
aW5nRXhwYW5zaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwgZXhw
YW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1f
cnVuLmx0cigpLCBtX2lzQWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlZnRFeHBhbnNpb24sIGZvcmJp
ZFJpZ2h0RXhwYW5zaW9uLCBmb3JjZUxlZnRFeHBhbnNpb24sIGZvcmNlUmlnaHRFeHBhbnNpb24p
OwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVmdCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fcnVuLmx0cigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gSW5jcmVhc2UgcHJldmlvdXMgd2lkdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEZsYWdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRGbGFncy5oCmluZGV4IDEwY2M3NjA4ZDI1Yzc1ZmY1NDU1OTEwOGM5OWYxNGUyYjMzYTQxZDYu
LmEzYTczNGVhNDc4OTA0MTJjM2RiOTk1ZGMxNzdhYjIwYmYxNTdlYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaApAQCAtNjEsMjAgKzYxLDE4IEBAIGVudW0gY2xh
c3MgTm9uQ0pLR2x5cGhPcmllbnRhdGlvbiA6IHVpbnQ4X3QgewogICAgIFVwcmlnaHQKIH07CiAK
LS8vIEhlcmUsICJMZWFkaW5nIiBhbmQgIlRyYWlsaW5nIiBhcmUgcmVsZXZhbnQgYWZ0ZXIgdGhl
IGxpbmUgaGFzIGJlZW4gcmVhcnJhbmdlZCBmb3IgYmlkaS4KLS8vICgiTGVhZGluZyIgbWVhbnMg
ImxlZnQiIGFuZCAiVHJhaWxpbmciIG1lYW5zICJyaWdodC4iKQogZW51bSBFeHBhbnNpb25CZWhh
dmlvckZsYWdzIHsKLSAgICBGb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiA9IDAgPDwgMCwKLSAgICBB
bGxvd1RyYWlsaW5nRXhwYW5zaW9uID0gMSA8PCAwLAotICAgIEZvcmNlVHJhaWxpbmdFeHBhbnNp
b24gPSAyIDw8IDAsCi0gICAgVHJhaWxpbmdFeHBhbnNpb25NYXNrID0gMyA8PCAwLAorICAgIEZv
cmJpZFJpZ2h0RXhwYW5zaW9uID0gMCA8PCAwLAorICAgIEFsbG93UmlnaHRFeHBhbnNpb24gPSAx
IDw8IDAsCisgICAgRm9yY2VSaWdodEV4cGFuc2lvbiA9IDIgPDwgMCwKKyAgICBSaWdodEV4cGFu
c2lvbk1hc2sgPSAzIDw8IDAsCiAKLSAgICBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uID0gMCA8PCAy
LAotICAgIEFsbG93TGVhZGluZ0V4cGFuc2lvbiA9IDEgPDwgMiwKLSAgICBGb3JjZUxlYWRpbmdF
eHBhbnNpb24gPSAyIDw8IDIsCi0gICAgTGVhZGluZ0V4cGFuc2lvbk1hc2sgPSAzIDw8IDIsCisg
ICAgRm9yYmlkTGVmdEV4cGFuc2lvbiA9IDAgPDwgMiwKKyAgICBBbGxvd0xlZnRFeHBhbnNpb24g
PSAxIDw8IDIsCisgICAgRm9yY2VMZWZ0RXhwYW5zaW9uID0gMiA8PCAyLAorICAgIExlZnRFeHBh
bnNpb25NYXNrID0gMyA8PCAyLAogCi0gICAgRGVmYXVsdEV4cGFuc2lvbiA9IEFsbG93VHJhaWxp
bmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLAorICAgIERlZmF1bHRFeHBhbnNp
b24gPSBBbGxvd1JpZ2h0RXhwYW5zaW9uIHwgRm9yYmlkTGVmdEV4cGFuc2lvbiwKIH07CiB0eXBl
ZGVmIHVuc2lnbmVkIEV4cGFuc2lvbkJlaGF2aW9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcAppbmRleCBkY2QwNDYxMzFlMTZjM2YyM2UwMmFi
N2YwNjMwNGNjOTg5YjJlMzUxLi5lNWNjOTkyNmE2ZGFlMGZiYWYzMmYyMDdkYWFiNmZiNDhjYTAw
ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlv
dXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5j
cHAKQEAgLTczNCwxMSArNzM0LDExIEBAIHN0YXRpYyBpbmxpbmUgRXhwYW5zaW9uQmVoYXZpb3Ig
ZXhwYW5zaW9uQmVoYXZpb3JGb3JJbmxpbmVUZXh0Qm94KFJlbmRlckJsb2NrRmxvCiB7CiAgICAg
Ly8gVGF0ZWNodXlva28gaXMgbW9kZWxlZCBhcyB0aGUgT2JqZWN0IFJlcGxhY2VtZW50IENoYXJh
Y3RlciAoVStGRkZDKSwgd2hpY2ggY2FuIG5ldmVyIGhhdmUgZXhwYW5zaW9uIG9wcG9ydHVuaXRp
ZXMgaW5zaWRlIG5vciBpbnRyaW5zaWNhbGx5IGFkamFjZW50IHRvIGl0LgogICAgIGlmICh0ZXh0
Qm94LnJlbmRlcmVyKCkuc3R5bGUoKS50ZXh0Q29tYmluZSgpID09IFRleHRDb21iaW5lOjpIb3Jp
em9udGFsKQotICAgICAgICByZXR1cm4gRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiB8IEZvcmJpZFRy
YWlsaW5nRXhwYW5zaW9uOworICAgICAgICByZXR1cm4gRm9yYmlkTGVmdEV4cGFuc2lvbiB8IEZv
cmJpZFJpZ2h0RXhwYW5zaW9uOwogCiAgICAgRXhwYW5zaW9uQmVoYXZpb3IgcmVzdWx0ID0gMDsK
LSAgICBib29sIHNldExlYWRpbmdFeHBhbnNpb24gPSBmYWxzZTsKLSAgICBib29sIHNldFRyYWls
aW5nRXhwYW5zaW9uID0gZmFsc2U7CisgICAgYm9vbCBzZXRMZWZ0RXhwYW5zaW9uID0gZmFsc2U7
CisgICAgYm9vbCBzZXRSaWdodEV4cGFuc2lvbiA9IGZhbHNlOwogICAgIGlmICh0ZXh0QWxpZ24g
PT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkgewogICAgICAgICAvLyBJZiB0aGUgbmV4dCBib3gg
aXMgcnVieSwgYW5kIHdlJ3JlIGp1c3RpZnlpbmcsIGFuZCB0aGUgZmlyc3QgYm94IGluIHRoZSBy
dWJ5IGJhc2UgaGFzIGEgbGVhZGluZyBleHBhbnNpb24sIGFuZCB3ZSBhcmUgYSB0ZXh0IGJveCwg
dGhlbiBmb3JjZSBhIHRyYWlsaW5nIGV4cGFuc2lvbi4KICAgICAgICAgaWYgKG5leHRSdW4gJiYg
aXM8UmVuZGVyUnVieVJ1bj4obmV4dFJ1bi0+cmVuZGVyZXIoKSkgJiYgZG93bmNhc3Q8UmVuZGVy
UnVieVJ1bj4obmV4dFJ1bi0+cmVuZGVyZXIoKSkucnVieUJhc2UoKSAmJiBuZXh0UnVuLT5yZW5k
ZXJlcigpLnN0eWxlKCkuY29sbGFwc2VXaGl0ZVNwYWNlKCkpIHsKQEAgLTc0NiwxMCArNzQ2LDEw
IEBAIHN0YXRpYyBpbmxpbmUgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3JGb3JJ
bmxpbmVUZXh0Qm94KFJlbmRlckJsb2NrRmxvCiAgICAgICAgICAgICBpZiAocnVieUJhc2UuZmly
c3RSb290Qm94KCkgJiYgIXJ1YnlCYXNlLmZpcnN0Um9vdEJveCgpLT5uZXh0Um9vdEJveCgpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGxlYWZDaGlsZCA9IHJ1YnlCYXNlLmZpcnN0Um9v
dEJveCgpLT5maXJzdExlYWZEZXNjZW5kYW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGlzPElubGluZVRleHRCb3g+KCpsZWFmQ2hpbGQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyBsZWFkaW5nRXhwYW5zaW9uT3Bwb3J0dW5pdHkgZG9lc24ndCBhY3R1
YWxseSB3b3JrIGJlY2F1c2UgaXQgZG9lc24ndCBwZXJmb3JtIHRoZSBVQkEKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChGb250Q2FzY2FkZTo6bGVhZGluZ0V4cGFuc2lvbk9wcG9ydHVuaXR5
KGRvd25jYXN0PFJlbmRlclRleHQ+KGxlYWZDaGlsZC0+cmVuZGVyZXIoKSkuc3RyaW5nVmlldygp
LCBsZWFmQ2hpbGQtPmRpcmVjdGlvbigpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFRyYWlsaW5nRXhwYW5zaW9uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgfD0gRm9yY2VUcmFpbGluZ0V4cGFuc2lvbjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGxlZnRFeHBhbnNpb25PcHBvcnR1bml0eSBkb2Vzbid0IGFjdHVh
bGx5IHdvcmsgYmVjYXVzZSBpdCBkb2Vzbid0IHBlcmZvcm0gdGhlIFVCQQorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKEZvbnRDYXNjYWRlOjpsZWZ0RXhwYW5zaW9uT3Bwb3J0dW5pdHkoZG93
bmNhc3Q8UmVuZGVyVGV4dD4obGVhZkNoaWxkLT5yZW5kZXJlcigpKS5zdHJpbmdWaWV3KCksIGxl
YWZDaGlsZC0+ZGlyZWN0aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
UmlnaHRFeHBhbnNpb24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dCB8PSBGb3JjZVJpZ2h0RXhwYW5zaW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtNzYxLDEwICs3NjEsMTAg
QEAgc3RhdGljIGlubGluZSBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvckZvcklu
bGluZVRleHRCb3goUmVuZGVyQmxvY2tGbG8KICAgICAgICAgICAgIGlmIChydWJ5QmFzZS5maXJz
dFJvb3RCb3goKSAmJiAhcnVieUJhc2UuZmlyc3RSb290Qm94KCktPm5leHRSb290Qm94KCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAoYXV0byogbGVhZkNoaWxkID0gcnVieUJhc2UuZmlyc3RSb290
Qm94KCktPmxhc3RMZWFmRGVzY2VuZGFudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChp
czxJbmxpbmVUZXh0Qm94PigqbGVhZkNoaWxkKSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgbGVhZGluZ0V4cGFuc2lvbk9wcG9ydHVuaXR5IGRvZXNuJ3QgYWN0dWFs
bHkgd29yayBiZWNhdXNlIGl0IGRvZXNuJ3QgcGVyZm9ybSB0aGUgVUJBCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoRm9udENhc2NhZGU6OnRyYWlsaW5nRXhwYW5zaW9uT3Bwb3J0dW5pdHko
ZG93bmNhc3Q8UmVuZGVyVGV4dD4obGVhZkNoaWxkLT5yZW5kZXJlcigpKS5zdHJpbmdWaWV3KCks
IGxlYWZDaGlsZC0+ZGlyZWN0aW9uKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0TGVhZGluZ0V4cGFuc2lvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0IHw9IEZvcmNlTGVhZGluZ0V4cGFuc2lvbjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGxlZnRFeHBhbnNpb25PcHBvcnR1bml0eSBkb2Vzbid0IGFjdHVhbGx5
IHdvcmsgYmVjYXVzZSBpdCBkb2Vzbid0IHBlcmZvcm0gdGhlIFVCQQorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKEZvbnRDYXNjYWRlOjpyaWdodEV4cGFuc2lvbk9wcG9ydHVuaXR5KGRvd25j
YXN0PFJlbmRlclRleHQ+KGxlYWZDaGlsZC0+cmVuZGVyZXIoKSkuc3RyaW5nVmlldygpLCBsZWFm
Q2hpbGQtPmRpcmVjdGlvbigpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExl
ZnRFeHBhbnNpb24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8
PSBGb3JjZUxlZnRFeHBhbnNpb247CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC03NzQsNDYgKzc3NCw0NiBAQCBz
dGF0aWMgaW5saW5lIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yRm9ySW5saW5l
VGV4dEJveChSZW5kZXJCbG9ja0ZsbwogICAgICAgICBpZiAoaXM8UmVuZGVyUnVieUJhc2U+KGJs
b2NrKSkgewogICAgICAgICAgICAgUmVuZGVyUnVieUJhc2UmIHJ1YnlCYXNlID0gZG93bmNhc3Q8
UmVuZGVyUnVieUJhc2U+KGJsb2NrKTsKICAgICAgICAgICAgIGlmICgmdGV4dEJveCA9PSBydWJ5
QmFzZS5maXJzdFJvb3RCb3goKS0+Zmlyc3RMZWFmRGVzY2VuZGFudCgpKSB7Ci0gICAgICAgICAg
ICAgICAgc2V0TGVhZGluZ0V4cGFuc2lvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcmVzdWx0
IHw9IEZvcmJpZExlYWRpbmdFeHBhbnNpb247CisgICAgICAgICAgICAgICAgc2V0TGVmdEV4cGFu
c2lvbiA9IHRydWU7CisgICAgICAgICAgICAgICAgcmVzdWx0IHw9IEZvcmJpZExlZnRFeHBhbnNp
b247CiAgICAgICAgICAgICB9IGlmICgmdGV4dEJveCA9PSBydWJ5QmFzZS5maXJzdFJvb3RCb3go
KS0+bGFzdExlYWZEZXNjZW5kYW50KCkpIHsKLSAgICAgICAgICAgICAgICBzZXRUcmFpbGluZ0V4
cGFuc2lvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcmVzdWx0IHw9IEZvcmJpZFRyYWlsaW5n
RXhwYW5zaW9uOworICAgICAgICAgICAgICAgIHNldFJpZ2h0RXhwYW5zaW9uID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQgfD0gRm9yYmlkUmlnaHRFeHBhbnNpb247CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCFzZXRMZWFkaW5nRXhwYW5zaW9uKQotICAg
ICAgICByZXN1bHQgfD0gaXNBZnRlckV4cGFuc2lvbiA/IEZvcmJpZExlYWRpbmdFeHBhbnNpb24g
OiBBbGxvd0xlYWRpbmdFeHBhbnNpb247Ci0gICAgaWYgKCFzZXRUcmFpbGluZ0V4cGFuc2lvbikK
LSAgICAgICAgcmVzdWx0IHw9IEFsbG93VHJhaWxpbmdFeHBhbnNpb247CisgICAgaWYgKCFzZXRM
ZWZ0RXhwYW5zaW9uKQorICAgICAgICByZXN1bHQgfD0gaXNBZnRlckV4cGFuc2lvbiA/IEZvcmJp
ZExlZnRFeHBhbnNpb24gOiBBbGxvd0xlZnRFeHBhbnNpb247CisgICAgaWYgKCFzZXRSaWdodEV4
cGFuc2lvbikKKyAgICAgICAgcmVzdWx0IHw9IEFsbG93UmlnaHRFeHBhbnNpb247CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGFwcGx5RXhwYW5zaW9uQmVoYXZp
b3IoSW5saW5lVGV4dEJveCYgdGV4dEJveCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVo
YXZpb3IpCiB7Ci0gICAgc3dpdGNoIChleHBhbnNpb25CZWhhdmlvciAmIExlYWRpbmdFeHBhbnNp
b25NYXNrKSB7Ci0gICAgY2FzZSBGb3JjZUxlYWRpbmdFeHBhbnNpb246Ci0gICAgICAgIHRleHRC
b3guc2V0Rm9yY2VMZWFkaW5nRXhwYW5zaW9uKCk7CisgICAgc3dpdGNoIChleHBhbnNpb25CZWhh
dmlvciAmIExlZnRFeHBhbnNpb25NYXNrKSB7CisgICAgY2FzZSBGb3JjZUxlZnRFeHBhbnNpb246
CisgICAgICAgIHRleHRCb3guc2V0Rm9yY2VMZWZ0RXhwYW5zaW9uKCk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbjoKLSAgICAgICAgdGV4dEJveC5zZXRD
YW5IYXZlTGVhZGluZ0V4cGFuc2lvbihmYWxzZSk7CisgICAgY2FzZSBGb3JiaWRMZWZ0RXhwYW5z
aW9uOgorICAgICAgICB0ZXh0Qm94LnNldENhbkhhdmVMZWZ0RXhwYW5zaW9uKGZhbHNlKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBbGxvd0xlYWRpbmdFeHBhbnNpb246Ci0gICAgICAgIHRl
eHRCb3guc2V0Q2FuSGF2ZUxlYWRpbmdFeHBhbnNpb24odHJ1ZSk7CisgICAgY2FzZSBBbGxvd0xl
ZnRFeHBhbnNpb246CisgICAgICAgIHRleHRCb3guc2V0Q2FuSGF2ZUxlZnRFeHBhbnNpb24odHJ1
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgc3dpdGNoIChleHBhbnNpb25CZWhh
dmlvciAmIFRyYWlsaW5nRXhwYW5zaW9uTWFzaykgewotICAgIGNhc2UgRm9yY2VUcmFpbGluZ0V4
cGFuc2lvbjoKLSAgICAgICAgdGV4dEJveC5zZXRGb3JjZVRyYWlsaW5nRXhwYW5zaW9uKCk7Cisg
ICAgc3dpdGNoIChleHBhbnNpb25CZWhhdmlvciAmIFJpZ2h0RXhwYW5zaW9uTWFzaykgeworICAg
IGNhc2UgRm9yY2VSaWdodEV4cGFuc2lvbjoKKyAgICAgICAgdGV4dEJveC5zZXRGb3JjZVJpZ2h0
RXhwYW5zaW9uKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9yYmlkVHJhaWxpbmdFeHBh
bnNpb246Ci0gICAgICAgIHRleHRCb3guc2V0Q2FuSGF2ZVRyYWlsaW5nRXhwYW5zaW9uKGZhbHNl
KTsKKyAgICBjYXNlIEZvcmJpZFJpZ2h0RXhwYW5zaW9uOgorICAgICAgICB0ZXh0Qm94LnNldENh
bkhhdmVSaWdodEV4cGFuc2lvbihmYWxzZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQWxs
b3dUcmFpbGluZ0V4cGFuc2lvbjoKLSAgICAgICAgdGV4dEJveC5zZXRDYW5IYXZlVHJhaWxpbmdF
eHBhbnNpb24odHJ1ZSk7CisgICAgY2FzZSBBbGxvd1JpZ2h0RXhwYW5zaW9uOgorICAgICAgICB0
ZXh0Qm94LnNldENhbkhhdmVSaWdodEV4cGFuc2lvbih0cnVlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAppbmRleCBiYTEzMTBkYTVlMTk3MjgwYTBlMzY2Mjgx
Y2FkYmFjYTg4MzE0ODkxLi5kYmM1YTQyNzA4YjcxZDQ4OWFhNDk5OTNiNzE4ZDg4MzEzMjExMjMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAKQEAgLTcwLDcgKzcw
LDcgQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGEKICAgICB9CiAKICAgICAvLyBGSVhNRTogV2h5
IGlzIHRoaXMgYWx3YXlzIExUUj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1biBmbGFn
cyBiZWxvdy4KLSAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFJlbmRlckJsb2NrOjpjb25zdHJ1
Y3RUZXh0UnVuKG1fc3RyLCBsaW5lU3R5bGUsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24pLCBMYXlv
dXRQb2ludCh4KCkgKyBwYWludE9mZnNldC54KCksIHkoKSArIHBhaW50T2Zmc2V0LnkoKSArIGxp
bmVTdHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpKSk7CisgICAgY29udGV4dC5kcmF3VGV4dChm
b250LCBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihtX3N0ciwgbGluZVN0eWxlLCBBbGxv
d1JpZ2h0RXhwYW5zaW9uKSwgTGF5b3V0UG9pbnQoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5KCkg
KyBwYWludE9mZnNldC55KCkgKyBsaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkpOwog
CiAgICAgLy8gUmVzdG9yZSB0aGUgcmVndWxhciBmaWxsIGNvbG9yLgogICAgIGlmICh0ZXh0Q29s
b3IgIT0gY29udGV4dC5maWxsQ29sb3IoKSkKQEAgLTExOSw3ICsxMTksNyBAQCBJbnRSZWN0IEVs
bGlwc2lzQm94OjpzZWxlY3Rpb25SZWN0KCkKICAgICBjb25zdCBSb290SW5saW5lQm94JiByb290
Qm94ID0gcm9vdCgpOwogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdheXMgTFRSPyBGaXgg
YnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93LgogICAgIExheW91dFJlY3Qg
c2VsZWN0aW9uUmVjdCB7IExheW91dFVuaXQoeCgpKSwgTGF5b3V0VW5pdCh5KCkgKyByb290Qm94
LnNlbGVjdGlvblRvcEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2soKSksIDBfbHUsIHJvb3RCb3gu
c2VsZWN0aW9uSGVpZ2h0QWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygpIH07Ci0gICAgZm9udC5h
ZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1biht
X3N0ciwgbGluZVN0eWxlLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSwgc2VsZWN0aW9uUmVjdCk7
CisgICAgZm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChSZW5kZXJCbG9jazo6Y29uc3Ry
dWN0VGV4dFJ1bihtX3N0ciwgbGluZVN0eWxlLCBBbGxvd1JpZ2h0RXhwYW5zaW9uKSwgc2VsZWN0
aW9uUmVjdCk7CiAgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb25hbCBwaXhlbCBzbmFwcGluZyBp
bnN0ZWFkLgogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHNlbGVjdGlvblJlY3QpOwogfQpA
QCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIC8vIEZJWE1FOiBXaHkg
aXMgdGhpcyBhbHdheXMgTFRSPyBGaXggYnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZsYWdz
IGJlbG93LgogICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCB7IExheW91dFVuaXQoeCgpICsg
cGFpbnRPZmZzZXQueCgpKSwgTGF5b3V0VW5pdCh5KCkgKyBwYWludE9mZnNldC55KCkgKyByb290
Qm94LnNlbGVjdGlvblRvcCgpKSwgMF9sdSwgcm9vdEJveC5zZWxlY3Rpb25IZWlnaHQoKSB9Owot
ICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV9zdHIsIHN0
eWxlLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKTsKKyAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJs
b2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fc3RyLCBzdHlsZSwgQWxsb3dSaWdodEV4cGFuc2lvbik7
CiAgICAgZm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChydW4sIHNlbGVjdGlvblJlY3Qp
OwogICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5n
RGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2Fs
ZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVC
b3guaAppbmRleCA1OWExMWQ2YTQ4YTgzMzhkN2UwYmE1ZTY0NDE3MjliMWY0Nzk5ZWI0Li5iZWNk
ZmNlNzZjYjNkZDcyMzAwN2NmMzk2M2YwOGE4YjJkYmMzMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUJveC5oCkBAIC0yODEsMTAgKzI4MSwxMCBAQCBwdWJsaWM6CiAgICAgZmxvYXQg
ZXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHBhbnNpb247IH0KIAogICAgIHZvaWQgc2V0
SGFzSHlwaGVuKGJvb2wgaGFzSHlwaGVuKSB7IG1fYml0ZmllbGRzLnNldEhhc0VsbGlwc2lzQm94
T3JIeXBoZW4oaGFzSHlwaGVuKTsgfQotICAgIHZvaWQgc2V0Q2FuSGF2ZUxlYWRpbmdFeHBhbnNp
b24oYm9vbCBjYW5IYXZlTGVhZGluZ0V4cGFuc2lvbikgeyBtX2JpdGZpZWxkcy5zZXRIYXNTZWxl
Y3RlZENoaWxkcmVuT3JDYW5IYXZlTGVhZGluZ0V4cGFuc2lvbihjYW5IYXZlTGVhZGluZ0V4cGFu
c2lvbik7IH0KLSAgICB2b2lkIHNldENhbkhhdmVUcmFpbGluZ0V4cGFuc2lvbihib29sIGNhbkhh
dmVUcmFpbGluZ0V4cGFuc2lvbikgeyBtX2JpdGZpZWxkcy5zZXRDYW5IYXZlVHJhaWxpbmdFeHBh
bnNpb24oY2FuSGF2ZVRyYWlsaW5nRXhwYW5zaW9uKTsgfQotICAgIHZvaWQgc2V0Rm9yY2VUcmFp
bGluZ0V4cGFuc2lvbigpIHsgbV9iaXRmaWVsZHMuc2V0Rm9yY2VUcmFpbGluZ0V4cGFuc2lvbih0
cnVlKTsgfQotICAgIHZvaWQgc2V0Rm9yY2VMZWFkaW5nRXhwYW5zaW9uKCkgeyBtX2JpdGZpZWxk
cy5zZXRGb3JjZUxlYWRpbmdFeHBhbnNpb24odHJ1ZSk7IH0KKyAgICB2b2lkIHNldENhbkhhdmVM
ZWZ0RXhwYW5zaW9uKGJvb2wgY2FuSGF2ZUxlZnRFeHBhbnNpb24pIHsgbV9iaXRmaWVsZHMuc2V0
SGFzU2VsZWN0ZWRDaGlsZHJlbk9yQ2FuSGF2ZUxlZnRFeHBhbnNpb24oY2FuSGF2ZUxlZnRFeHBh
bnNpb24pOyB9CisgICAgdm9pZCBzZXRDYW5IYXZlUmlnaHRFeHBhbnNpb24oYm9vbCBjYW5IYXZl
UmlnaHRFeHBhbnNpb24pIHsgbV9iaXRmaWVsZHMuc2V0Q2FuSGF2ZVJpZ2h0RXhwYW5zaW9uKGNh
bkhhdmVSaWdodEV4cGFuc2lvbik7IH0KKyAgICB2b2lkIHNldEZvcmNlUmlnaHRFeHBhbnNpb24o
KSB7IG1fYml0ZmllbGRzLnNldEZvcmNlUmlnaHRFeHBhbnNpb24odHJ1ZSk7IH0KKyAgICB2b2lk
IHNldEZvcmNlTGVmdEV4cGFuc2lvbigpIHsgbV9iaXRmaWVsZHMuc2V0Rm9yY2VMZWZ0RXhwYW5z
aW9uKHRydWUpOyB9CiAKIHByaXZhdGU6CiAgICAgSW5saW5lQm94KiBtX25leHRPbkxpbmUgeyBu
dWxscHRyIH07IC8vIFRoZSBuZXh0IGVsZW1lbnQgb24gdGhlIHNhbWUgbGluZSBhcyB1cy4KQEAg
LTMxNywxNCArMzE3LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAsIG1faGFzVmlydHVhbExv
Z2ljYWxIZWlnaHQoZmFsc2UpCiAgICAgICAgICAgICAsIG1faXNIb3Jpem9udGFsKGlzSG9yaXpv
bnRhbCkKICAgICAgICAgICAgICwgbV9lbmRzV2l0aEJyZWFrKGZhbHNlKQotICAgICAgICAgICAg
LCBtX2hhc1NlbGVjdGVkQ2hpbGRyZW5PckNhbkhhdmVMZWFkaW5nRXhwYW5zaW9uKGZhbHNlKQot
ICAgICAgICAgICAgLCBtX2NhbkhhdmVUcmFpbGluZ0V4cGFuc2lvbihmYWxzZSkKKyAgICAgICAg
ICAgICwgbV9oYXNTZWxlY3RlZENoaWxkcmVuT3JDYW5IYXZlTGVmdEV4cGFuc2lvbihmYWxzZSkK
KyAgICAgICAgICAgICwgbV9jYW5IYXZlUmlnaHRFeHBhbnNpb24oZmFsc2UpCiAgICAgICAgICAg
ICAsIG1fa25vd25Ub0hhdmVOb092ZXJmbG93KHRydWUpICAKICAgICAgICAgICAgICwgbV9oYXNF
bGxpcHNpc0JveE9ySHlwaGVuKGZhbHNlKQogICAgICAgICAgICAgLCBtX2Rpck92ZXJyaWRlKGZh
bHNlKQogICAgICAgICAgICAgLCBtX2JlaGF2ZXNMaWtlVGV4dChmYWxzZSkKLSAgICAgICAgICAg
ICwgbV9mb3JjZVRyYWlsaW5nRXhwYW5zaW9uKGZhbHNlKQotICAgICAgICAgICAgLCBtX2ZvcmNl
TGVhZGluZ0V4cGFuc2lvbihmYWxzZSkKKyAgICAgICAgICAgICwgbV9mb3JjZVJpZ2h0RXhwYW5z
aW9uKGZhbHNlKQorICAgICAgICAgICAgLCBtX2ZvcmNlTGVmdEV4cGFuc2lvbihmYWxzZSkKICAg
ICAgICAgICAgICwgbV9kZXRlcm1pbmVkSWZOZXh0T25MaW5lRXhpc3RzKGZhbHNlKQogICAgICAg
ICAgICAgLCBtX25leHRPbkxpbmVFeGlzdHMoZmFsc2UpCiAgICAgICAgIHsKQEAgLTM0OSwxNSAr
MzQ5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGZvciBSb290SW5saW5lQm94CiAgICAgICAg
IEFERF9CT09MRUFOX0JJVEZJRUxEKGVuZHNXaXRoQnJlYWssIEVuZHNXaXRoQnJlYWspOyAvLyBX
aGV0aGVyIHRoZSBsaW5lIGVuZHMgd2l0aCBhIDxicj4uCiAgICAgICAgIC8vIHNoYXJlZCBiZXR3
ZWVuIFJvb3RJbmxpbmVCb3ggYW5kIElubGluZVRleHRCb3gKLSAgICAgICAgQUREX0JPT0xFQU5f
QklURklFTEQoaGFzU2VsZWN0ZWRDaGlsZHJlbk9yQ2FuSGF2ZUxlYWRpbmdFeHBhbnNpb24sIEhh
c1NlbGVjdGVkQ2hpbGRyZW5PckNhbkhhdmVMZWFkaW5nRXhwYW5zaW9uKTsKLSAgICAgICAgQURE
X0JPT0xFQU5fQklURklFTEQoY2FuSGF2ZVRyYWlsaW5nRXhwYW5zaW9uLCBDYW5IYXZlVHJhaWxp
bmdFeHBhbnNpb24pOworICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChoYXNTZWxlY3RlZENo
aWxkcmVuT3JDYW5IYXZlTGVmdEV4cGFuc2lvbiwgSGFzU2VsZWN0ZWRDaGlsZHJlbk9yQ2FuSGF2
ZUxlZnRFeHBhbnNpb24pOworICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChjYW5IYXZlUmln
aHRFeHBhbnNpb24sIENhbkhhdmVSaWdodEV4cGFuc2lvbik7CiAgICAgICAgIEFERF9CT09MRUFO
X0JJVEZJRUxEKGtub3duVG9IYXZlTm9PdmVyZmxvdywgS25vd25Ub0hhdmVOb092ZXJmbG93KTsK
ICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaGFzRWxsaXBzaXNCb3hPckh5cGhlbiwgSGFz
RWxsaXBzaXNCb3hPckh5cGhlbik7CiAgICAgICAgIC8vIGZvciBJbmxpbmVUZXh0Qm94CiAgICAg
ICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGRpck92ZXJyaWRlLCBEaXJPdmVycmlkZSk7CiAgICAg
ICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGJlaGF2ZXNMaWtlVGV4dCwgQmVoYXZlc0xpa2VUZXh0
KTsgLy8gV2hldGhlciBvciBub3QgdGhpcyBvYmplY3QgcmVwcmVzZW50cyB0ZXh0IHdpdGggYSBu
b24temVybyBoZWlnaHQuIEluY2x1ZGVzIG5vbi1pbWFnZSBsaXN0IG1hcmtlcnMsIHRleHQgYm94
ZXMsIGJyLgotICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChmb3JjZVRyYWlsaW5nRXhwYW5z
aW9uLCBGb3JjZVRyYWlsaW5nRXhwYW5zaW9uKTsKLSAgICAgICAgQUREX0JPT0xFQU5fQklURklF
TEQoZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBGb3JjZUxlYWRpbmdFeHBhbnNpb24pOworICAgICAg
ICBBRERfQk9PTEVBTl9CSVRGSUVMRChmb3JjZVJpZ2h0RXhwYW5zaW9uLCBGb3JjZVJpZ2h0RXhw
YW5zaW9uKTsKKyAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoZm9yY2VMZWZ0RXhwYW5zaW9u
LCBGb3JjZUxlZnRFeHBhbnNpb24pOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgbXV0YWJsZSB1
bnNpZ25lZCBtX2RldGVybWluZWRJZk5leHRPbkxpbmVFeGlzdHMgOiAxOwpAQCAtMzk4LDE2ICsz
OTgsMTYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgZW5kc1dpdGhCcmVhaygpIGNvbnN0IHsgcmV0
dXJuIG1fYml0ZmllbGRzLmVuZHNXaXRoQnJlYWsoKTsgfQogICAgIHZvaWQgc2V0RW5kc1dpdGhC
cmVhayhib29sIGVuZHNXaXRoQnJlYWspIHsgbV9iaXRmaWVsZHMuc2V0RW5kc1dpdGhCcmVhayhl
bmRzV2l0aEJyZWFrKTsgfQogICAgIGJvb2wgaGFzRWxsaXBzaXNCb3goKSBjb25zdCB7IHJldHVy
biBtX2JpdGZpZWxkcy5oYXNFbGxpcHNpc0JveE9ySHlwaGVuKCk7IH0KLSAgICBib29sIGhhc1Nl
bGVjdGVkQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNTZWxlY3RlZENo
aWxkcmVuT3JDYW5IYXZlTGVhZGluZ0V4cGFuc2lvbigpOyB9Ci0gICAgdm9pZCBzZXRIYXNTZWxl
Y3RlZENoaWxkcmVuKGJvb2wgaGFzU2VsZWN0ZWRDaGlsZHJlbikgeyBtX2JpdGZpZWxkcy5zZXRI
YXNTZWxlY3RlZENoaWxkcmVuT3JDYW5IYXZlTGVhZGluZ0V4cGFuc2lvbihoYXNTZWxlY3RlZENo
aWxkcmVuKTsgfQorICAgIGJvb2wgaGFzU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJu
IG1fYml0ZmllbGRzLmhhc1NlbGVjdGVkQ2hpbGRyZW5PckNhbkhhdmVMZWZ0RXhwYW5zaW9uKCk7
IH0KKyAgICB2b2lkIHNldEhhc1NlbGVjdGVkQ2hpbGRyZW4oYm9vbCBoYXNTZWxlY3RlZENoaWxk
cmVuKSB7IG1fYml0ZmllbGRzLnNldEhhc1NlbGVjdGVkQ2hpbGRyZW5PckNhbkhhdmVMZWZ0RXhw
YW5zaW9uKGhhc1NlbGVjdGVkQ2hpbGRyZW4pOyB9CiAgICAgdm9pZCBzZXRIYXNFbGxpcHNpc0Jv
eChib29sIGhhc0VsbGlwc2lzQm94KSB7IG1fYml0ZmllbGRzLnNldEhhc0VsbGlwc2lzQm94T3JI
eXBoZW4oaGFzRWxsaXBzaXNCb3gpOyB9CiAKICAgICAvLyBGb3IgSW5saW5lVGV4dEJveAogICAg
IGJvb2wgaGFzSHlwaGVuKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaGFzRWxsaXBzaXNC
b3hPckh5cGhlbigpOyB9Ci0gICAgYm9vbCBjYW5IYXZlTGVhZGluZ0V4cGFuc2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1NlbGVjdGVkQ2hpbGRyZW5PckNhbkhhdmVMZWFkaW5n
RXhwYW5zaW9uKCk7IH0KLSAgICBib29sIGNhbkhhdmVUcmFpbGluZ0V4cGFuc2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fYml0ZmllbGRzLmNhbkhhdmVUcmFpbGluZ0V4cGFuc2lvbigpOyB9Ci0gICAg
Ym9vbCBmb3JjZVRyYWlsaW5nRXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMu
Zm9yY2VUcmFpbGluZ0V4cGFuc2lvbigpOyB9Ci0gICAgYm9vbCBmb3JjZUxlYWRpbmdFeHBhbnNp
b24oKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5mb3JjZUxlYWRpbmdFeHBhbnNpb24oKTsg
fQorICAgIGJvb2wgY2FuSGF2ZUxlZnRFeHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2JpdGZp
ZWxkcy5oYXNTZWxlY3RlZENoaWxkcmVuT3JDYW5IYXZlTGVmdEV4cGFuc2lvbigpOyB9CisgICAg
Ym9vbCBjYW5IYXZlUmlnaHRFeHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5j
YW5IYXZlUmlnaHRFeHBhbnNpb24oKTsgfQorICAgIGJvb2wgZm9yY2VSaWdodEV4cGFuc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmZvcmNlUmlnaHRFeHBhbnNpb24oKTsgfQorICAg
IGJvb2wgZm9yY2VMZWZ0RXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuZm9y
Y2VMZWZ0RXhwYW5zaW9uKCk7IH0KICAgICAKICAgICAvLyBGb3IgSW5saW5lRmxvd0JveCBhbmQg
SW5saW5lVGV4dEJveAogICAgIGJvb2wgZXh0cmFjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRm
aWVsZHMuZXh0cmFjdGVkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcAppbmRleCBkOTYyNmZiMTNlZDc1M2U0MjE2Y2M2MTIzNzAyYjU1OTEwZDUyMjZhLi4x
MjY3ZjAxZmQ1MTk3YTUyOTBmNjI0YTIzMWJlYmUwNzZkNjQ0YjA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0xNDQwLDIzICsxNDQwLDIzIEBAIGlu
bGluZSBjb25zdCBSZW5kZXJDb21iaW5lVGV4dCogSW5saW5lVGV4dEJveDo6Y29tYmluZWRUZXh0
KCkgY29uc3QKIAogRXhwYW5zaW9uQmVoYXZpb3IgSW5saW5lVGV4dEJveDo6ZXhwYW5zaW9uQmVo
YXZpb3IoKSBjb25zdAogewotICAgIEV4cGFuc2lvbkJlaGF2aW9yIGxlYWRpbmdCZWhhdmlvcjsK
LSAgICBpZiAoZm9yY2VMZWFkaW5nRXhwYW5zaW9uKCkpCi0gICAgICAgIGxlYWRpbmdCZWhhdmlv
ciA9IEZvcmNlTGVhZGluZ0V4cGFuc2lvbjsKLSAgICBlbHNlIGlmIChjYW5IYXZlTGVhZGluZ0V4
cGFuc2lvbigpKQotICAgICAgICBsZWFkaW5nQmVoYXZpb3IgPSBBbGxvd0xlYWRpbmdFeHBhbnNp
b247CisgICAgRXhwYW5zaW9uQmVoYXZpb3IgbGVmdEJlaGF2aW9yOworICAgIGlmIChmb3JjZUxl
ZnRFeHBhbnNpb24oKSkKKyAgICAgICAgbGVmdEJlaGF2aW9yID0gRm9yY2VMZWZ0RXhwYW5zaW9u
OworICAgIGVsc2UgaWYgKGNhbkhhdmVMZWZ0RXhwYW5zaW9uKCkpCisgICAgICAgIGxlZnRCZWhh
dmlvciA9IEFsbG93TGVmdEV4cGFuc2lvbjsKICAgICBlbHNlCi0gICAgICAgIGxlYWRpbmdCZWhh
dmlvciA9IEZvcmJpZExlYWRpbmdFeHBhbnNpb247CisgICAgICAgIGxlZnRCZWhhdmlvciA9IEZv
cmJpZExlZnRFeHBhbnNpb247CiAKLSAgICBFeHBhbnNpb25CZWhhdmlvciB0cmFpbGluZ0JlaGF2
aW9yOwotICAgIGlmIChmb3JjZVRyYWlsaW5nRXhwYW5zaW9uKCkpCi0gICAgICAgIHRyYWlsaW5n
QmVoYXZpb3IgPSBGb3JjZVRyYWlsaW5nRXhwYW5zaW9uOworICAgIEV4cGFuc2lvbkJlaGF2aW9y
IHJpZ2h0QmVoYXZpb3I7CisgICAgaWYgKGZvcmNlUmlnaHRFeHBhbnNpb24oKSkKKyAgICAgICAg
cmlnaHRCZWhhdmlvciA9IEZvcmNlUmlnaHRFeHBhbnNpb247CiAgICAgZWxzZSBpZiAoZXhwYW5z
aW9uKCkgJiYgbmV4dExlYWZPbkxpbmUoKSAmJiAhbmV4dExlYWZPbkxpbmUoKS0+aXNMaW5lQnJl
YWsoKSkKLSAgICAgICAgdHJhaWxpbmdCZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb247
CisgICAgICAgIHJpZ2h0QmVoYXZpb3IgPSBBbGxvd1JpZ2h0RXhwYW5zaW9uOwogICAgIGVsc2UK
LSAgICAgICAgdHJhaWxpbmdCZWhhdmlvciA9IEZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uOworICAg
ICAgICByaWdodEJlaGF2aW9yID0gRm9yYmlkUmlnaHRFeHBhbnNpb247CiAKLSAgICByZXR1cm4g
bGVhZGluZ0JlaGF2aW9yIHwgdHJhaWxpbmdCZWhhdmlvcjsKKyAgICByZXR1cm4gbGVmdEJlaGF2
aW9yIHwgcmlnaHRCZWhhdmlvcjsKIH0KIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCmluZGV4IDg3ODRkODVhZWJiNGFh
ZDI5N2U3OTVjNmI0Y2M1NzVmYWE2YzE4NmIuLjg2N2NmZDQxNjU5OWQ3MjNkMjBkOTQ3MjQyOGY1
MGE2OTQ0YTBiYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaApA
QCAtODAsMTQgKzgwLDE0IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIElubGluZUJveDo6aGFzSHlw
aGVuOwogICAgIHVzaW5nIElubGluZUJveDo6c2V0SGFzSHlwaGVuOwotICAgIHVzaW5nIElubGlu
ZUJveDo6Y2FuSGF2ZUxlYWRpbmdFeHBhbnNpb247Ci0gICAgdXNpbmcgSW5saW5lQm94OjpzZXRD
YW5IYXZlTGVhZGluZ0V4cGFuc2lvbjsKLSAgICB1c2luZyBJbmxpbmVCb3g6OmNhbkhhdmVUcmFp
bGluZ0V4cGFuc2lvbjsKLSAgICB1c2luZyBJbmxpbmVCb3g6OnNldENhbkhhdmVUcmFpbGluZ0V4
cGFuc2lvbjsKLSAgICB1c2luZyBJbmxpbmVCb3g6OmZvcmNlVHJhaWxpbmdFeHBhbnNpb247Ci0g
ICAgdXNpbmcgSW5saW5lQm94OjpzZXRGb3JjZVRyYWlsaW5nRXhwYW5zaW9uOwotICAgIHVzaW5n
IElubGluZUJveDo6Zm9yY2VMZWFkaW5nRXhwYW5zaW9uOwotICAgIHVzaW5nIElubGluZUJveDo6
c2V0Rm9yY2VMZWFkaW5nRXhwYW5zaW9uOworICAgIHVzaW5nIElubGluZUJveDo6Y2FuSGF2ZUxl
ZnRFeHBhbnNpb247CisgICAgdXNpbmcgSW5saW5lQm94OjpzZXRDYW5IYXZlTGVmdEV4cGFuc2lv
bjsKKyAgICB1c2luZyBJbmxpbmVCb3g6OmNhbkhhdmVSaWdodEV4cGFuc2lvbjsKKyAgICB1c2lu
ZyBJbmxpbmVCb3g6OnNldENhbkhhdmVSaWdodEV4cGFuc2lvbjsKKyAgICB1c2luZyBJbmxpbmVC
b3g6OmZvcmNlUmlnaHRFeHBhbnNpb247CisgICAgdXNpbmcgSW5saW5lQm94OjpzZXRGb3JjZVJp
Z2h0RXhwYW5zaW9uOworICAgIHVzaW5nIElubGluZUJveDo6Zm9yY2VMZWZ0RXhwYW5zaW9uOwor
ICAgIHVzaW5nIElubGluZUJveDo6c2V0Rm9yY2VMZWZ0RXhwYW5zaW9uOwogCiAgICAgc3RhdGlj
IGlubGluZSBib29sIGNvbXBhcmVCeVN0YXJ0KGNvbnN0IElubGluZVRleHRCb3gqIGZpcnN0LCBj
b25zdCBJbmxpbmVUZXh0Qm94KiBzZWNvbmQpIHsgcmV0dXJuIGZpcnN0LT5zdGFydCgpIDwgc2Vj
b25kLT5zdGFydCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCmluZGV4IDFjZDMyYjNlYjBiMzFiZmQzNmY4NzgyYTQz
NGFmNjI0MzJkZjdjMTYuLjA4ZWMwMGY3NDk2NWQ4MWJmNzEzMTVkZDMzZTZmOGUyYWIzZWExNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRy
b2w6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2luCiAg
ICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kKSB7CiAgICAg
ICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheWVkRmlsZW5hbWUgPSBmaWxlVGV4dFZhbHVlKCk7CiAg
ICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwot
ICAgICAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKGRpc3BsYXllZEZpbGVu
YW1lLCBzdHlsZSgpLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBSZXNwZWN0RGlyZWN0aW9uIHwg
UmVzcGVjdERpcmVjdGlvbk92ZXJyaWRlKTsKKyAgICAgICAgVGV4dFJ1biB0ZXh0UnVuID0gY29u
c3RydWN0VGV4dFJ1bihkaXNwbGF5ZWRGaWxlbmFtZSwgc3R5bGUoKSwgQWxsb3dSaWdodEV4cGFu
c2lvbiwgUmVzcGVjdERpcmVjdGlvbiB8IFJlc3BlY3REaXJlY3Rpb25PdmVycmlkZSk7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpbnQgaWNvbkhlaWdodCA9IG5vZGVIZWln
aHQodXBsb2FkQnV0dG9uKCkpOwpAQCAtMjAzLDEwICsyMDMsMTAgQEAgdm9pZCBSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYg
bWluTG9naWMKICAgICBjb25zdCBTdHJpbmcgY2hhcmFjdGVyQXNTdHJpbmcgPSBTdHJpbmcoJmNo
YXJhY3RlciwgMSk7CiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRD
YXNjYWRlKCk7CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgbmVlZCBmb3IgdGhpcyBjb25zdF9j
YXN0IGJ5IG1ha2luZyBjb25zdHJ1Y3RUZXh0UnVuIHRha2UgYSBjb25zdCBSZW5kZXJPYmplY3Qq
LgotICAgIGZsb2F0IG1pbkRlZmF1bHRMYWJlbFdpZHRoID0gZGVmYXVsdFdpZHRoTnVtQ2hhcnMg
KiBmb250LndpZHRoKGNvbnN0cnVjdFRleHRSdW4oY2hhcmFjdGVyQXNTdHJpbmcsIHN0eWxlKCks
IEFsbG93VHJhaWxpbmdFeHBhbnNpb24pKTsKKyAgICBmbG9hdCBtaW5EZWZhdWx0TGFiZWxXaWR0
aCA9IGRlZmF1bHRXaWR0aE51bUNoYXJzICogZm9udC53aWR0aChjb25zdHJ1Y3RUZXh0UnVuKGNo
YXJhY3RlckFzU3RyaW5nLCBzdHlsZSgpLCBBbGxvd1JpZ2h0RXhwYW5zaW9uKSk7CiAKICAgICBj
b25zdCBTdHJpbmcgbGFiZWwgPSB0aGVtZSgpLmZpbGVMaXN0RGVmYXVsdExhYmVsKGlucHV0RWxl
bWVudCgpLm11bHRpcGxlKCkpOwotICAgIGZsb2F0IGRlZmF1bHRMYWJlbFdpZHRoID0gZm9udC53
aWR0aChjb25zdHJ1Y3RUZXh0UnVuKGxhYmVsLCBzdHlsZSgpLCBBbGxvd1RyYWlsaW5nRXhwYW5z
aW9uKSk7CisgICAgZmxvYXQgZGVmYXVsdExhYmVsV2lkdGggPSBmb250LndpZHRoKGNvbnN0cnVj
dFRleHRSdW4obGFiZWwsIHN0eWxlKCksIEFsbG93UmlnaHRFeHBhbnNpb24pKTsKICAgICBpZiAo
SFRNTElucHV0RWxlbWVudCogYnV0dG9uID0gdXBsb2FkQnV0dG9uKCkpCiAgICAgICAgIGlmIChS
ZW5kZXJPYmplY3QqIGJ1dHRvblJlbmRlcmVyID0gYnV0dG9uLT5yZW5kZXJlcigpKQogICAgICAg
ICAgICAgZGVmYXVsdExhYmVsV2lkdGggKz0gYnV0dG9uUmVuZGVyZXItPm1heFByZWZlcnJlZExv
Z2ljYWxXaWR0aCgpICsgYWZ0ZXJCdXR0b25TcGFjaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDA0NjZjYmE5MDU5MjQ1MzI5ODM3MzE3M2FlZjIz
ZTE5ODAxZmRhZjEuLjdlOWYzODMyZDM2ZWZkMTkxM2NmNzM5NzAxMWViYjNkMjE5NDhlMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTE0OCw3ICsx
NDgsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAg
ICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIHRleHQgPSBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgdGV4dCwgJyAnKTsKLSAg
ICAgICAgICAgIGF1dG8gdGV4dFJ1biA9IGNvbnN0cnVjdFRleHRSdW4odGV4dCwgc3R5bGUoKSwg
QWxsb3dUcmFpbGluZ0V4cGFuc2lvbik7CisgICAgICAgICAgICBhdXRvIHRleHRSdW4gPSBjb25z
dHJ1Y3RUZXh0UnVuKHRleHQsIHN0eWxlKCksIEFsbG93UmlnaHRFeHBhbnNpb24pOwogICAgICAg
ICAgICAgd2lkdGggPSBzdGQ6Om1heCh3aWR0aCwgc2VsZWN0Rm9udCgpLndpZHRoKHRleHRSdW4p
KTsKICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTogSXMgY2VpbGluZyByaWdodCBoZXJlLCBv
ciBzaG91bGQgd2UgYmUgZG9pbmcgc29tZSBraW5kIG9mIHJvdW5kaW5nIGluc3RlYWQ/CkBAIC00
MzUsNyArNDM1LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKIAogICAgIHBhaW50SW5mby5j
b250ZXh0KCkuc2V0RmlsbENvbG9yKHRleHRDb2xvcik7CiAKLSAgICBUZXh0UnVuIHRleHRSdW4o
aXRlbVRleHQsIDAsIDAsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24sIGl0ZW1TdHlsZS5kaXJlY3Rp
b24oKSwgaXNPdmVycmlkZShpdGVtU3R5bGUudW5pY29kZUJpZGkoKSksIHRydWUpOworICAgIFRl
eHRSdW4gdGV4dFJ1bihpdGVtVGV4dCwgMCwgMCwgQWxsb3dSaWdodEV4cGFuc2lvbiwgaXRlbVN0
eWxlLmRpcmVjdGlvbigpLCBpc092ZXJyaWRlKGl0ZW1TdHlsZS51bmljb2RlQmlkaSgpKSwgdHJ1
ZSk7CiAgICAgRm9udENhc2NhZGUgaXRlbUZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7CiAg
ICAgTGF5b3V0UmVjdCByID0gaXRlbUJvdW5kaW5nQm94UmVjdChwYWludE9mZnNldCwgbGlzdElu
ZGV4KTsKICAgICByLm1vdmUoaXRlbU9mZnNldEZvckFsaWdubWVudCh0ZXh0UnVuLCAmaXRlbVN0
eWxlLCBpdGVtRm9udCwgcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5jcHAKaW5kZXggYTI5MDRjNTdiZDc0MzZjYTJmY2EwYjlkZTBkNjhlZmJiNjRi
MjlmNC4uN2FjNmUwMjNhOGNmYTFlY2U2ZjAwZjIzOTA3NDNhNjIyNWYzMjI5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCkBAIC0xNDIsNyAr
MTQyLDcgQEAgZmxvYXQgUmVuZGVyVGV4dENvbnRyb2w6OmdldEF2ZXJhZ2VDaGFyV2lkdGgoKQog
ICAgIGNvbnN0IFVDaGFyIGNoID0gJzAnOwogICAgIGNvbnN0IFN0cmluZyBzdHIgPSBTdHJpbmco
JmNoLCAxKTsKICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2Nh
ZGUoKTsKLSAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHN0ciwgc3R5bGUo
KSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbik7CisgICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3Ry
dWN0VGV4dFJ1bihzdHIsIHN0eWxlKCksIEFsbG93UmlnaHRFeHBhbnNpb24pOwogICAgIHJldHVy
biBmb250LndpZHRoKHRleHRSdW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXggNjk4Y2VlNWJhMmQ3OGI5MjEwOWIyZTVkOTBiZDVk
ZWJlOTc0NDEyMy4uNmYxOWM4NWIwOTMzMmMwMmMzNGQ3YTVmNzIxOTY4MjM3ZWEwYWQwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtODc4
LDggKzg3OCw4IEBAIHN0YXRpYyBib29sIGNyZWF0ZUxpbmVSdW5zKExpbmVTdGF0ZSYgbGluZSwg
Y29uc3QgTGluZVN0YXRlJiBwcmV2aW91c0xpbmUsIExheW91CiBzdGF0aWMgRXhwYW5zaW9uQmVo
YXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IoYm9vbCBpc0FmdGVyRXhwYW5zaW9uLCBib29sIGxhc3RS
dW5PbkxpbmUpCiB7CiAgICAgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3I7Ci0g
ICAgZXhwYW5zaW9uQmVoYXZpb3IgPSBpc0FmdGVyRXhwYW5zaW9uID8gRm9yYmlkTGVhZGluZ0V4
cGFuc2lvbiA6IEFsbG93TGVhZGluZ0V4cGFuc2lvbjsKLSAgICBleHBhbnNpb25CZWhhdmlvciB8
PSBsYXN0UnVuT25MaW5lID8gRm9yYmlkVHJhaWxpbmdFeHBhbnNpb24gOiBBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uOworICAgIGV4cGFuc2lvbkJlaGF2aW9yID0gaXNBZnRlckV4cGFuc2lvbiA/IEZv
cmJpZExlZnRFeHBhbnNpb24gOiBBbGxvd0xlZnRFeHBhbnNpb247CisgICAgZXhwYW5zaW9uQmVo
YXZpb3IgfD0gbGFzdFJ1bk9uTGluZSA/IEZvcmJpZFJpZ2h0RXhwYW5zaW9uIDogQWxsb3dSaWdo
dEV4cGFuc2lvbjsKICAgICByZXR1cm4gZXhwYW5zaW9uQmVoYXZpb3I7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oCmluZGV4IDRkOWYyYmRmNTMyMWU0
YWJjMWIxOGE5YWZkZDdkMjRjYmMxYTg4YTkuLmVjNGE3YTBmYTRiOTBmMjU2ODMzNGI4NTliZDhl
MTcwODQzYzA2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXQuaApAQCAtNzAsNyArNzAsNyBAQCBzdHJ1Y3QgUnVuIHsKICAgICBmbG9hdCBsb2dpY2FsUmln
aHQ7CiAgICAgLy8gVE9ETzogTW92ZSB0aGVzZSBvcHRpb25hbCBpdGVtcyBvdXQgb2YgU2ltcGxl
TGluZUxheW91dDo6UnVuIHRvIGEgc3VwcGxlbWVudGFyeSBzdHJ1Y3R1cmUuCiAgICAgZmxvYXQg
ZXhwYW5zaW9uIHsgMCB9OwotICAgIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9y
IHsgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiB8IEZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uIH07Cisg
ICAgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgeyBGb3JiaWRMZWZ0RXhwYW5z
aW9uIHwgRm9yYmlkUmlnaHRFeHBhbnNpb24gfTsKIH07CiAKIHN0cnVjdCBTaW1wbGVMaW5lU3Ry
dXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwCmluZGV4IDFlMmE4ODU3ZTkzOTNmZmQ0YWQyNDkyZDY1Y2EzMzY3OWM2
MGJhMjYuLjE2Y2MwYjZkMzgyNDc1NTM3NmFiY2NkYjMzNTY4MmIzNjEyMDU2YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHAKQEAgLTI3NywxMiArMjc3LDEyIEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbmxpbmVU
ZXh0Qm94KFJlbmRlckJsb2NrRmxvdyYgZmxvdywgSW5saW5lVGV4dEJveCYgaW5saW5lCiAgICAg
aW5saW5lVGV4dEJveC5zZXRFeHBhbnNpb25XaXRob3V0R3Jvd2luZyhydW4uZXhwYW5zaW9uKCkp
OwogCiAgICAgYXV0byBleHBhbnNpb25CZWhhdmlvciA9IHJ1bi5leHBhbnNpb25CZWhhdmlvcigp
OwotICAgIGlubGluZVRleHRCb3guc2V0Q2FuSGF2ZUxlYWRpbmdFeHBhbnNpb24oZXhwYW5zaW9u
QmVoYXZpb3IgJiBBbGxvd0xlYWRpbmdFeHBhbnNpb24pOwotICAgIGlubGluZVRleHRCb3guc2V0
Q2FuSGF2ZVRyYWlsaW5nRXhwYW5zaW9uKGV4cGFuc2lvbkJlaGF2aW9yICYgQWxsb3dUcmFpbGlu
Z0V4cGFuc2lvbik7Ci0gICAgaWYgKGV4cGFuc2lvbkJlaGF2aW9yICYgRm9yY2VUcmFpbGluZ0V4
cGFuc2lvbikKLSAgICAgICAgaW5saW5lVGV4dEJveC5zZXRGb3JjZVRyYWlsaW5nRXhwYW5zaW9u
KCk7Ci0gICAgaWYgKGV4cGFuc2lvbkJlaGF2aW9yICYgRm9yY2VMZWFkaW5nRXhwYW5zaW9uKQot
ICAgICAgICBpbmxpbmVUZXh0Qm94LnNldEZvcmNlTGVhZGluZ0V4cGFuc2lvbigpOworICAgIGlu
bGluZVRleHRCb3guc2V0Q2FuSGF2ZUxlZnRFeHBhbnNpb24oZXhwYW5zaW9uQmVoYXZpb3IgJiBB
bGxvd0xlZnRFeHBhbnNpb24pOworICAgIGlubGluZVRleHRCb3guc2V0Q2FuSGF2ZVJpZ2h0RXhw
YW5zaW9uKGV4cGFuc2lvbkJlaGF2aW9yICYgQWxsb3dSaWdodEV4cGFuc2lvbik7CisgICAgaWYg
KGV4cGFuc2lvbkJlaGF2aW9yICYgRm9yY2VSaWdodEV4cGFuc2lvbikKKyAgICAgICAgaW5saW5l
VGV4dEJveC5zZXRGb3JjZVJpZ2h0RXhwYW5zaW9uKCk7CisgICAgaWYgKGV4cGFuc2lvbkJlaGF2
aW9yICYgRm9yY2VMZWZ0RXhwYW5zaW9uKQorICAgICAgICBpbmxpbmVUZXh0Qm94LnNldEZvcmNl
TGVmdEV4cGFuc2lvbigpOwogfQogCiB2b2lkIGdlbmVyYXRlTGluZUJveFRyZWUoUmVuZGVyQmxv
Y2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQmIGxheW91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCmluZGV4IGRkMTg4YWUxMWIzN2Q3
OTdiMTJkODFkMjk2MzY5ZjdmMTk1NzZlYmEuLjFmZGU5ZmQ0MjE2ZjczMzRkNmNmZjNiMTY2ODFh
MDMwZWNkYmYwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJ
bmxpbmVUZXh0Qm94LmNwcApAQCAtMzkxLDcgKzM5MSw3IEBAIFRleHRSdW4gU1ZHSW5saW5lVGV4
dEJveDo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFNW
R1RlCiAgICAgVGV4dFJ1biBydW4oU3RyaW5nVmlldyhyZW5kZXJlcigpLnRleHQoKSkuc3Vic3Ry
aW5nKGZyYWdtZW50LmNoYXJhY3Rlck9mZnNldCwgZnJhZ21lbnQubGVuZ3RoKQogICAgICAgICAg
ICAgICAgICwgMCAvKiB4UG9zLCBvbmx5IHJlbGV2YW50IHdpdGggYWxsb3dUYWJzPXRydWUgKi8K
ICAgICAgICAgICAgICAgICAsIDAgLyogcGFkZGluZywgb25seSByZWxldmFudCBmb3IganVzdGlm
aWVkIHRleHQsIG5vdCByZWxldmFudCBmb3IgU1ZHICovCi0gICAgICAgICAgICAgICAgLCBBbGxv
d1RyYWlsaW5nRXhwYW5zaW9uCisgICAgICAgICAgICAgICAgLCBBbGxvd1JpZ2h0RXhwYW5zaW9u
CiAgICAgICAgICAgICAgICAgLCBkaXJlY3Rpb24oKQogICAgICAgICAgICAgICAgICwgZGlyT3Zl
cnJpZGUoKSB8fCBzdHlsZS5ydGxPcmRlcmluZygpID09IE9yZGVyOjpWaXN1YWwgLyogZGlyZWN0
aW9uYWxPdmVycmlkZSAqLyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TWV0cmljcy5jcHAKaW5kZXggMDY0YjRkYTEyNzJlZmE4MzRlYjIzNDVmNzljYmQ0MmMy
Zjg4NDUzYi4uMzkwOTFlZjhhZjNkOWIzMDQ4ZGM3YjJiMmNmNDgyMTE5OTY1ZmM1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAKQEAgLTY2
LDcgKzY2LDcgQEAgVGV4dFJ1biBTVkdUZXh0TWV0cmljczo6Y29uc3RydWN0VGV4dFJ1bihSZW5k
ZXJTVkdJbmxpbmVUZXh0JiB0ZXh0LCB1bnNpZ25lZCBwb3MKICAgICBUZXh0UnVuIHJ1bihTdHJp
bmdWaWV3KHRleHQudGV4dCgpKS5zdWJzdHJpbmcocG9zaXRpb24sIGxlbmd0aCkKICAgICAgICAg
ICAgICAgICAsIDAgLyogeFBvcywgb25seSByZWxldmFudCB3aXRoIGFsbG93VGFicz10cnVlICov
CiAgICAgICAgICAgICAgICAgLCAwIC8qIHBhZGRpbmcsIG9ubHkgcmVsZXZhbnQgZm9yIGp1c3Rp
ZmllZCB0ZXh0LCBub3QgcmVsZXZhbnQgZm9yIFNWRyAqLwotICAgICAgICAgICAgICAgICwgQWxs
b3dUcmFpbGluZ0V4cGFuc2lvbgorICAgICAgICAgICAgICAgICwgQWxsb3dSaWdodEV4cGFuc2lv
bgogICAgICAgICAgICAgICAgICwgc3R5bGUuZGlyZWN0aW9uKCkKICAgICAgICAgICAgICAgICAs
IGlzT3ZlcnJpZGUoc3R5bGUudW5pY29kZUJpZGkoKSkgLyogZGlyZWN0aW9uYWxPdmVycmlkZSAq
Lyk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406076</attachid>
            <date>2020-08-05 22:57:25 -0700</date>
            <delta_ts>2020-08-05 22:58:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215211-20200805225724.patch</filename>
            <type>text/plain</type>
            <size>55849</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGY2NjQ5MGJiZjJjNDc4
NmVlYzU2N2UxOTYzNGIzYjc4YmMzY2M4NS4uNzk2YzhhZGQ0NTI1YTJiYmU3ZGJiYmM3M2Q2YTI2
NjFkNzQ2NDg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDIwLTA4LTA1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIExl
YWRpbmdFeHBhbnNpb24gYW5kIFRyYWlsaW5nRXhwYW5zaW9uIHRvIExlZnRFeHBhbnNpb24gYW5k
IFJpZ2h0RXhwYW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTUyMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAiTGVhZGluZyIgYW5kICJUcmFpbGluZyIgYXJlIHRlcm1zLW9mLWFydCB3aGljaCBy
ZXByZXNlbnQgbG9naWNhbCBvcmRlci4KKyAgICAgICAgSG93ZXZlciwgdGhlIGJlaGF2aW9yIG9m
IHRoZXNlIGZsYWdzIG9wZXJhdGVzIGluIHZpc3VhbCBvcmRlci4KKyAgICAgICAgSW5zdGVhZCwg
d2Ugc2hvdWxkIHJlbmFtZSB0aGVtIHRvIHRoZWlyIHZpc3VhbCBvcmRlciBhbmFsb2d1ZXM6IGxl
ZnQgYW5kIHJpZ2h0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5v
IGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6Om1lYXN1cmVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6anVzdGlmeVJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVp
bGRlcjo6UnVuOjpleHBhbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRl
cjo6UnVuOjp2aXN1YWxseUNvbGxhcHNlVHJhaWxpbmdXaGl0ZXNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhwYW5zaW9uTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRD
b250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6
OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZTo6bGVmdEV4cGFuc2lvbk9wcG9ydHVuaXR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpyaWdodEV4cGFuc2lvbk9wcG9ydHVuaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYXNjYWRlOjpsZWFkaW5nRXhwYW5zaW9uT3Bwb3J0dW5pdHkpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OnRyYWlsaW5nRXhwYW5zaW9uT3Bwb3J0dW5p
dHkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjpXaWR0aEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4cGFuc2lvbkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6
OmFkdmFuY2VJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhwYW5zaW9uQmVoYXZpb3JGb3JJbmxpbmVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGx5RXhwYW5zaW9uQmVoYXZpb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNp
c0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OnNlbGVjdGlvblJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5s
aW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnNldENhbkhhdmVMZWZ0RXhw
YW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6c2V0Q2FuSGF2ZVJpZ2h0RXhw
YW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6c2V0Rm9yY2VSaWdodEV4cGFu
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnNldEZvcmNlTGVmdEV4cGFuc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OklubGluZUJveEJpdGZpZWxkczo6SW5s
aW5lQm94Qml0ZmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6aGFzU2VsZWN0
ZWRDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnNldEhhc1Nl
bGVjdGVkQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpjYW5IYXZlTGVm
dEV4cGFuc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OmNhbkhhdmVS
aWdodEV4cGFuc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OmZvcmNl
UmlnaHRFeHBhbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94Ojpmb3Jj
ZUxlZnRFeHBhbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpzZXRD
YW5IYXZlTGVhZGluZ0V4cGFuc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVCb3g6OnNldENhbkhhdmVUcmFpbGluZ0V4cGFuc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVCb3g6OnNldEZvcmNlVHJhaWxpbmdFeHBhbnNpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpzZXRGb3JjZUxlYWRpbmdFeHBhbnNpb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpjYW5IYXZlTGVhZGluZ0V4cGFu
c2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OmNhbkhh
dmVUcmFpbGluZ0V4cGFuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVCb3g6OmZvcmNlVHJhaWxpbmdFeHBhbnNpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lQm94Ojpmb3JjZUxlYWRpbmdFeHBhbnNpb24gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZVRleHRCb3g6OmV4cGFuc2lvbkJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJG
aWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2Fk
Q29udHJvbDo6cGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmdldEF2
ZXJhZ2VDaGFyV2lkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmV4cGFuc2lvbkJlaGF2aW9y
KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OmluaXRpYWxpemVJbmxpbmVUZXh0Qm94KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW5saW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFJ1biBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0
cmljczo6Y29uc3RydWN0VGV4dFJ1bik6CisKIDIwMjAtMDgtMDQgIERldmluIFJvdXNzbyAgPGRy
b3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgICJEb3VibGVEb3duIENhc2lubyIgcmVzcGluIGJ1
dHRvbiBzdG9wcyB3b3JraW5nIHdpdGggdHJhY2twYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDg3ZGVl
ZjQ5OTIxYzViNWZhMWVlYmYyYWY2NTg1N2NlMTRmMmY2OTUuLjg5MTgwMjc5YWYyYjdmNzY1NmJj
ZGRmOGVlYzA4MzMzYjY1YzYxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMzg1LDcgKzM4NSw3IEBA
IFJlZjxUZXh0TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjptZWFzdXJlVGV4dChj
b25zdCBTdHJpbmcmIHRleHQpCiAgICAgYXV0byBkaXJlY3Rpb24gPSB0b1RleHREaXJlY3Rpb24o
c3RhdGUoKS5kaXJlY3Rpb24sICZjb21wdXRlZFN0eWxlKTsKICAgICBib29sIG92ZXJyaWRlID0g
Y29tcHV0ZWRTdHlsZSA/IGlzT3ZlcnJpZGUoY29tcHV0ZWRTdHlsZS0+dW5pY29kZUJpZGkoKSkg
OiBmYWxzZTsKIAotICAgIFRleHRSdW4gdGV4dFJ1bihub3JtYWxpemVkVGV4dCwgMCwgMCwgQWxs
b3dUcmFpbGluZ0V4cGFuc2lvbiwgZGlyZWN0aW9uLCBvdmVycmlkZSwgdHJ1ZSk7CisgICAgVGV4
dFJ1biB0ZXh0UnVuKG5vcm1hbGl6ZWRUZXh0LCAwLCAwLCBBbGxvd1JpZ2h0RXhwYW5zaW9uLCBk
aXJlY3Rpb24sIG92ZXJyaWRlLCB0cnVlKTsKICAgICBhdXRvJiBmb250ID0gZm9udFByb3h5KCk7
CiAgICAgYXV0byYgZm9udE1ldHJpY3MgPSBmb250LmZvbnRNZXRyaWNzKCk7CiAKQEAgLTQ5OCw3
ICs0OTgsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5h
bChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgIGF1dG8gZGlyZWN0aW9uID0g
dG9UZXh0RGlyZWN0aW9uKHN0YXRlKCkuZGlyZWN0aW9uLCAmY29tcHV0ZWRTdHlsZSk7CiAgICAg
Ym9vbCBvdmVycmlkZSA9IGNvbXB1dGVkU3R5bGUgPyBpc092ZXJyaWRlKGNvbXB1dGVkU3R5bGUt
PnVuaWNvZGVCaWRpKCkpIDogZmFsc2U7CiAKLSAgICBUZXh0UnVuIHRleHRSdW4obm9ybWFsaXpl
ZFRleHQsIDAsIDAsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24sIGRpcmVjdGlvbiwgb3ZlcnJpZGUs
IHRydWUpOworICAgIFRleHRSdW4gdGV4dFJ1bihub3JtYWxpemVkVGV4dCwgMCwgMCwgQWxsb3dS
aWdodEV4cGFuc2lvbiwgZGlyZWN0aW9uLCBvdmVycmlkZSwgdHJ1ZSk7CiAgICAgZmxvYXQgZm9u
dFdpZHRoID0gZm9udFByb3h5LndpZHRoKHRleHRSdW4pOwogICAgIGJvb2wgdXNlTWF4V2lkdGgg
PSBtYXhXaWR0aCAmJiBtYXhXaWR0aC52YWx1ZSgpIDwgZm9udFdpZHRoOwogICAgIGZsb2F0IHdp
ZHRoID0gdXNlTWF4V2lkdGggPyBtYXhXaWR0aC52YWx1ZSgpIDogZm9udFdpZHRoOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1
aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZUJ1aWxkZXIuY3BwCmluZGV4IDAyMzYxNThiY2ExYTI1OWY4YWZkZTcwMzJiNWUwZjg1M2Ux
ZDI5ODAuLjk2Y2I3Yjg0NDc4YTI0Y2Q5YmE3NGIzYWQ4ZjdjMDgzOGM0YTJiNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lQnVpbGRlci5jcHAKQEAgLTIyOCw4ICsyMjgsOCBAQCB2b2lkIExpbmVCdWlsZGVyOjpq
dXN0aWZ5UnVucyhJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKQogICAgIC8vIE5lZWQg
dG8gZml4IHVwIHRoZSBsYXN0IHJ1bidzIHRyYWlsaW5nIGV4cGFuc2lvbi4KICAgICBpZiAobGFz
dFJ1bldpdGhDb250ZW50ICYmIGxhc3RSdW5XaXRoQ29udGVudC0+aGFzRXhwYW5zaW9uT3Bwb3J0
dW5pdHkoKSkgewogICAgICAgICAvLyBUdXJuIG9mZiB0aGUgdHJhaWxpbmcgYml0cyBmaXJzdCBh
bmQgYWRkIHRoZSBmb3JiaWQgdHJhaWxpbmcgZXhwYW5zaW9uLgotICAgICAgICBhdXRvIGxlYWRp
bmdFeHBhbnNpb24gPSBsYXN0UnVuV2l0aENvbnRlbnQtPmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBM
ZWFkaW5nRXhwYW5zaW9uTWFzazsKLSAgICAgICAgbGFzdFJ1bldpdGhDb250ZW50LT5zZXRFeHBh
bnNpb25CZWhhdmlvcihsZWFkaW5nRXhwYW5zaW9uIHwgRm9yYmlkVHJhaWxpbmdFeHBhbnNpb24p
OworICAgICAgICBhdXRvIGxlZnRFeHBhbnNpb24gPSBsYXN0UnVuV2l0aENvbnRlbnQtPmV4cGFu
c2lvbkJlaGF2aW9yKCkgJiBMZWZ0RXhwYW5zaW9uTWFzazsKKyAgICAgICAgbGFzdFJ1bldpdGhD
b250ZW50LT5zZXRFeHBhbnNpb25CZWhhdmlvcihsZWZ0RXhwYW5zaW9uIHwgRm9yYmlkUmlnaHRF
eHBhbnNpb24pOwogICAgIH0KICAgICAvLyBOb3RoaW5nIHRvIGRpc3RyaWJ1dGU/CiAgICAgaWYg
KCFleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KQpAQCAtODI1LDcgKzgyNSw3IEBAIHZvaWQgTGlu
ZUJ1aWxkZXI6OlJ1bjo6ZXhwYW5kKGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVUZXh0SXRl
bSwgSW5saW5lTGF5b3V0CiAKICAgICBpZiAobV90cmFpbGluZ1doaXRlc3BhY2VUeXBlID09IFRy
YWlsaW5nV2hpdGVzcGFjZTo6Tm9uZSkgewogICAgICAgICBtX3RyYWlsaW5nV2hpdGVzcGFjZVdp
ZHRoID0geyB9OwotICAgICAgICBzZXRFeHBhbnNpb25CZWhhdmlvcihBbGxvd0xlYWRpbmdFeHBh
bnNpb24gfCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKTsKKyAgICAgICAgc2V0RXhwYW5zaW9uQmVo
YXZpb3IoQWxsb3dMZWZ0RXhwYW5zaW9uIHwgQWxsb3dSaWdodEV4cGFuc2lvbik7CiAgICAgICAg
IG1fdGV4dENvbnRlbnQtPmV4cGFuZChpbmxpbmVUZXh0SXRlbS5sZW5ndGgoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC04NzksNyArODc5LDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6UnVu
Ojp2aXN1YWxseUNvbGxhcHNlVHJhaWxpbmdXaGl0ZXNwYWNlKCkKICAgICAgICAgQVNTRVJUKG1f
ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCk7CiAgICAgICAgIG1fZXhwYW5zaW9uT3Bwb3J0dW5p
dHlDb3VudC0tOwogICAgIH0KLSAgICBzZXRFeHBhbnNpb25CZWhhdmlvcihBbGxvd0xlYWRpbmdF
eHBhbnNpb24gfCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKTsKKyAgICBzZXRFeHBhbnNpb25CZWhh
dmlvcihBbGxvd0xlZnRFeHBhbnNpb24gfCBBbGxvd1JpZ2h0RXhwYW5zaW9uKTsKIH0KIAogdm9p
ZCBMaW5lQnVpbGRlcjo6UnVuOjpzZXRFeHBhbnNpb25CZWhhdmlvcihFeHBhbnNpb25CZWhhdmlv
ciBleHBhbnNpb25CZWhhdmlvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDYyN2U1NjU0OGE4
MWM4MmNiMDViYmUwYTViMTgxMTQ0ZWFhZWM4OTMuLjdlMTc4ZDFiODkwOTQ1NjJkNGY1NGFiN2E0
NjlkZjZiZDMyZjVhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNjQ3LDcgKzY0Nyw3IEBA
IHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZHZhbmNlKHVuc2lnbmVkIG9mZnNldCwgR2x5
cGhCdWZmZXIqIGdseXBoQnVmZmVyLCBHCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHN0ZDo6
cGFpcjxib29sLCBib29sPiBleHBhbnNpb25Mb2NhdGlvbihib29sIGlkZW9ncmFwaCwgYm9vbCB0
cmVhdEFzU3BhY2UsIGJvb2wgbHRyLCBib29sIGlzQWZ0ZXJFeHBhbnNpb24sIGJvb2wgZm9yYmlk
TGVhZGluZ0V4cGFuc2lvbiwgYm9vbCBmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiwgYm9vbCBmb3Jj
ZUxlYWRpbmdFeHBhbnNpb24sIGJvb2wgZm9yY2VUcmFpbGluZ0V4cGFuc2lvbikKK3N0YXRpYyBp
bmxpbmUgc3RkOjpwYWlyPGJvb2wsIGJvb2w+IGV4cGFuc2lvbkxvY2F0aW9uKGJvb2wgaWRlb2dy
YXBoLCBib29sIHRyZWF0QXNTcGFjZSwgYm9vbCBsdHIsIGJvb2wgaXNBZnRlckV4cGFuc2lvbiwg
Ym9vbCBmb3JiaWRMZWZ0RXhwYW5zaW9uLCBib29sIGZvcmJpZFJpZ2h0RXhwYW5zaW9uLCBib29s
IGZvcmNlTGVmdEV4cGFuc2lvbiwgYm9vbCBmb3JjZVJpZ2h0RXhwYW5zaW9uKQogewogICAgIGJv
b2wgZXhwYW5kTGVmdCA9IGlkZW9ncmFwaDsKICAgICBib29sIGV4cGFuZFJpZ2h0ID0gaWRlb2dy
YXBoOwpAQCAtNjU5LDI4ICs2NTksMjggQEAgc3RhdGljIGlubGluZSBzdGQ6OnBhaXI8Ym9vbCwg
Ym9vbD4gZXhwYW5zaW9uTG9jYXRpb24oYm9vbCBpZGVvZ3JhcGgsIGJvb2wgdHJlYXQKICAgICB9
CiAgICAgaWYgKGlzQWZ0ZXJFeHBhbnNpb24pCiAgICAgICAgIGV4cGFuZExlZnQgPSBmYWxzZTsK
LSAgICBBU1NFUlQoIWZvcmJpZExlYWRpbmdFeHBhbnNpb24gfHwgIWZvcmNlTGVhZGluZ0V4cGFu
c2lvbik7Ci0gICAgQVNTRVJUKCFmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiB8fCAhZm9yY2VUcmFp
bGluZ0V4cGFuc2lvbik7Ci0gICAgaWYgKGZvcmJpZExlYWRpbmdFeHBhbnNpb24pCisgICAgQVNT
RVJUKCFmb3JiaWRMZWZ0RXhwYW5zaW9uIHx8ICFmb3JjZUxlZnRFeHBhbnNpb24pOworICAgIEFT
U0VSVCghZm9yYmlkUmlnaHRFeHBhbnNpb24gfHwgIWZvcmNlUmlnaHRFeHBhbnNpb24pOworICAg
IGlmIChmb3JiaWRMZWZ0RXhwYW5zaW9uKQogICAgICAgICBleHBhbmRMZWZ0ID0gZmFsc2U7Ci0g
ICAgaWYgKGZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uKQorICAgIGlmIChmb3JiaWRSaWdodEV4cGFu
c2lvbikKICAgICAgICAgZXhwYW5kUmlnaHQgPSBmYWxzZTsKLSAgICBpZiAoZm9yY2VMZWFkaW5n
RXhwYW5zaW9uKQorICAgIGlmIChmb3JjZUxlZnRFeHBhbnNpb24pCiAgICAgICAgIGV4cGFuZExl
ZnQgPSB0cnVlOwotICAgIGlmIChmb3JjZVRyYWlsaW5nRXhwYW5zaW9uKQorICAgIGlmIChmb3Jj
ZVJpZ2h0RXhwYW5zaW9uKQogICAgICAgICBleHBhbmRSaWdodCA9IHRydWU7CiAgICAgcmV0dXJu
IHN0ZDo6bWFrZV9wYWlyKGV4cGFuZExlZnQsIGV4cGFuZFJpZ2h0KTsKIH0KIAogdm9pZCBDb21w
bGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2VzKCkKIHsKLSAgICBib29s
IGFmdGVyRXhwYW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWFkaW5nRXhw
YW5zaW9uTWFzaykgPT0gRm9yYmlkTGVhZGluZ0V4cGFuc2lvbjsKKyAgICBib29sIGFmdGVyRXhw
YW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWZ0RXhwYW5zaW9uTWFzaykg
PT0gRm9yYmlkTGVmdEV4cGFuc2lvbjsKICAgICBzaXplX3QgcnVuQ291bnQgPSBtX2NvbXBsZXhU
ZXh0UnVucy5zaXplKCk7CiAgICAgYm9vbCBoYXNFeHRyYVNwYWNpbmcgPSAobV9mb250LmxldHRl
clNwYWNpbmcoKSB8fCBtX2ZvbnQud29yZFNwYWNpbmcoKSB8fCBtX2V4cGFuc2lvbikgJiYgIW1f
cnVuLnNwYWNpbmdEaXNhYmxlZCgpOwotICAgIGJvb2wgcnVuRm9yY2VzTGVhZGluZ0V4cGFuc2lv
biA9IChtX3J1bi5leHBhbnNpb25CZWhhdmlvcigpICYgTGVhZGluZ0V4cGFuc2lvbk1hc2spID09
IEZvcmNlTGVhZGluZ0V4cGFuc2lvbjsKLSAgICBib29sIHJ1bkZvcmNlc1RyYWlsaW5nRXhwYW5z
aW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBUcmFpbGluZ0V4cGFuc2lvbk1hc2sp
ID09IEZvcmNlVHJhaWxpbmdFeHBhbnNpb247Ci0gICAgYm9vbCBydW5Gb3JiaWRzTGVhZGluZ0V4
cGFuc2lvbiA9IChtX3J1bi5leHBhbnNpb25CZWhhdmlvcigpICYgTGVhZGluZ0V4cGFuc2lvbk1h
c2spID09IEZvcmJpZExlYWRpbmdFeHBhbnNpb247Ci0gICAgYm9vbCBydW5Gb3JiaWRzVHJhaWxp
bmdFeHBhbnNpb24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIFRyYWlsaW5nRXhwYW5z
aW9uTWFzaykgPT0gRm9yYmlkVHJhaWxpbmdFeHBhbnNpb247CisgICAgYm9vbCBydW5Gb3JjZXNM
ZWZ0RXhwYW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWZ0RXhwYW5zaW9u
TWFzaykgPT0gRm9yY2VMZWZ0RXhwYW5zaW9uOworICAgIGJvb2wgcnVuRm9yY2VzUmlnaHRFeHBh
bnNpb24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIFJpZ2h0RXhwYW5zaW9uTWFzaykg
PT0gRm9yY2VSaWdodEV4cGFuc2lvbjsKKyAgICBib29sIHJ1bkZvcmJpZHNMZWZ0RXhwYW5zaW9u
ID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWZ0RXhwYW5zaW9uTWFzaykgPT0gRm9y
YmlkTGVmdEV4cGFuc2lvbjsKKyAgICBib29sIHJ1bkZvcmJpZHNSaWdodEV4cGFuc2lvbiA9ICht
X3J1bi5leHBhbnNpb25CZWhhdmlvcigpICYgUmlnaHRFeHBhbnNpb25NYXNrKSA9PSBGb3JiaWRS
aWdodEV4cGFuc2lvbjsKIAogICAgIC8vIFdlIGFyZSBpdGVyYXRpbmcgaW4gZ2x5cGggb3JkZXIs
IG5vdCBzdHJpbmcgb3JkZXIuIENvbXBhcmUgdGhpcyB0byBXaWR0aEl0ZXJhdG9yOjphZHZhbmNl
SW50ZXJuYWwoKQogICAgIGZvciAoc2l6ZV90IHJ1bkluZGV4ID0gMDsgcnVuSW5kZXggPCBydW5D
b3VudDsgKytydW5JbmRleCkgewpAQCAtNzQwLDI1ICs3NDAsMjUgQEAgdm9pZCBDb21wbGV4VGV4
dENvbnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgICAgICBi
b29sIGlzRmlyc3RDaGFyYWN0ZXIgPSAhKGNoYXJhY3RlckluZGV4ICsgY29tcGxleFRleHRSdW4u
c3RyaW5nTG9jYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgYm9vbCBpc0xhc3RDaGFyYWN0ZXIg
PSBjaGFyYWN0ZXJJbmRleEluUnVuICsgMSA9PSBtX3J1bi5sZW5ndGgoKSB8fCAoVTE2X0lTX0xF
QUQoY2gpICYmIGNoYXJhY3RlckluZGV4SW5SdW4gKyAyID09IG1fcnVuLmxlbmd0aCgpICYmIFUx
Nl9JU19UUkFJTCgqKGNwICsgY2hhcmFjdGVySW5kZXggKyAxKSkpOwogCi0gICAgICAgICAgICAg
ICAgYm9vbCBmb3JjZUxlYWRpbmdFeHBhbnNpb24gPSBmYWxzZTsgLy8gT24gdGhlIGxlZnQsIHJl
Z2FyZGxlc3Mgb2YgbV9ydW4ubHRyKCkKLSAgICAgICAgICAgICAgICBib29sIGZvcmNlVHJhaWxp
bmdFeHBhbnNpb24gPSBmYWxzZTsgLy8gT24gdGhlIHJpZ2h0LCByZWdhcmRsZXNzIG9mIG1fcnVu
Lmx0cigpCi0gICAgICAgICAgICAgICAgYm9vbCBmb3JiaWRMZWFkaW5nRXhwYW5zaW9uID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgYm9vbCBmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiA9IGZhbHNl
OwotICAgICAgICAgICAgICAgIGlmIChydW5Gb3JjZXNMZWFkaW5nRXhwYW5zaW9uKQotICAgICAg
ICAgICAgICAgICAgICBmb3JjZUxlYWRpbmdFeHBhbnNpb24gPSBtX3J1bi5sdHIoKSA/IGlzRmly
c3RDaGFyYWN0ZXIgOiBpc0xhc3RDaGFyYWN0ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKHJ1bkZv
cmNlc1RyYWlsaW5nRXhwYW5zaW9uKQotICAgICAgICAgICAgICAgICAgICBmb3JjZVRyYWlsaW5n
RXhwYW5zaW9uID0gbV9ydW4ubHRyKCkgPyBpc0xhc3RDaGFyYWN0ZXIgOiBpc0ZpcnN0Q2hhcmFj
dGVyOwotICAgICAgICAgICAgICAgIGlmIChydW5Gb3JiaWRzTGVhZGluZ0V4cGFuc2lvbikKLSAg
ICAgICAgICAgICAgICAgICAgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8g
aXNGaXJzdENoYXJhY3RlciA6IGlzTGFzdENoYXJhY3RlcjsKLSAgICAgICAgICAgICAgICBpZiAo
cnVuRm9yYmlkc1RyYWlsaW5nRXhwYW5zaW9uKQotICAgICAgICAgICAgICAgICAgICBmb3JiaWRU
cmFpbGluZ0V4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8gaXNMYXN0Q2hhcmFjdGVyIDogaXNGaXJz
dENoYXJhY3RlcjsKKyAgICAgICAgICAgICAgICBib29sIGZvcmNlTGVmdEV4cGFuc2lvbiA9IGZh
bHNlOyAvLyBPbiB0aGUgbGVmdCwgcmVnYXJkbGVzcyBvZiBtX3J1bi5sdHIoKQorICAgICAgICAg
ICAgICAgIGJvb2wgZm9yY2VSaWdodEV4cGFuc2lvbiA9IGZhbHNlOyAvLyBPbiB0aGUgcmlnaHQs
IHJlZ2FyZGxlc3Mgb2YgbV9ydW4ubHRyKCkKKyAgICAgICAgICAgICAgICBib29sIGZvcmJpZExl
ZnRFeHBhbnNpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBib29sIGZvcmJpZFJpZ2h0RXhw
YW5zaW9uID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKHJ1bkZvcmNlc0xlZnRFeHBhbnNp
b24pCisgICAgICAgICAgICAgICAgICAgIGZvcmNlTGVmdEV4cGFuc2lvbiA9IG1fcnVuLmx0cigp
ID8gaXNGaXJzdENoYXJhY3RlciA6IGlzTGFzdENoYXJhY3RlcjsKKyAgICAgICAgICAgICAgICBp
ZiAocnVuRm9yY2VzUmlnaHRFeHBhbnNpb24pCisgICAgICAgICAgICAgICAgICAgIGZvcmNlUmln
aHRFeHBhbnNpb24gPSBtX3J1bi5sdHIoKSA/IGlzTGFzdENoYXJhY3RlciA6IGlzRmlyc3RDaGFy
YWN0ZXI7CisgICAgICAgICAgICAgICAgaWYgKHJ1bkZvcmJpZHNMZWZ0RXhwYW5zaW9uKQorICAg
ICAgICAgICAgICAgICAgICBmb3JiaWRMZWZ0RXhwYW5zaW9uID0gbV9ydW4ubHRyKCkgPyBpc0Zp
cnN0Q2hhcmFjdGVyIDogaXNMYXN0Q2hhcmFjdGVyOworICAgICAgICAgICAgICAgIGlmIChydW5G
b3JiaWRzUmlnaHRFeHBhbnNpb24pCisgICAgICAgICAgICAgICAgICAgIGZvcmJpZFJpZ2h0RXhw
YW5zaW9uID0gbV9ydW4ubHRyKCkgPyBpc0xhc3RDaGFyYWN0ZXIgOiBpc0ZpcnN0Q2hhcmFjdGVy
OwogICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBqdXN0aWZpY2F0aW9uIGFuZCB3b3JkLXNwYWNp
bmcuCiAgICAgICAgICAgICAgICAgc3RhdGljIGJvb2wgZXhwYW5kQXJvdW5kSWRlb2dyYXBocyA9
IEZvbnRDYXNjYWRlOjpjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpOwog
ICAgICAgICAgICAgICAgIGJvb2wgaWRlb2dyYXBoID0gZXhwYW5kQXJvdW5kSWRlb2dyYXBocyAm
JiBGb250Q2FzY2FkZTo6aXNDSktJZGVvZ3JhcGhPclN5bWJvbChjaCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHRyZWF0QXNTcGFjZSB8fCBpZGVvZ3JhcGggfHwgZm9yY2VMZWFkaW5nRXhwYW5zaW9u
IHx8IGZvcmNlVHJhaWxpbmdFeHBhbnNpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAodHJlYXRB
c1NwYWNlIHx8IGlkZW9ncmFwaCB8fCBmb3JjZUxlZnRFeHBhbnNpb24gfHwgZm9yY2VSaWdodEV4
cGFuc2lvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBEaXN0cmlidXRlIHRoZSBydW4ncyB0
b3RhbCBleHBhbnNpb24gZXZlbmx5IG92ZXIgYWxsIGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGlu
IHRoZSBydW4uCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2V4cGFuc2lvbikgewotICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwgZXhwYW5kUmlnaHRdID0gZXhwYW5z
aW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1fcnVuLmx0cigpLCBhZnRlckV4
cGFuc2lvbiwgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgZm9yYmlkVHJhaWxpbmdFeHBhbnNpb24s
IGZvcmNlTGVhZGluZ0V4cGFuc2lvbiwgZm9yY2VUcmFpbGluZ0V4cGFuc2lvbik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIFtleHBhbmRMZWZ0LCBleHBhbmRSaWdodF0gPSBleHBhbnNp
b25Mb2NhdGlvbihpZGVvZ3JhcGgsIHRyZWF0QXNTcGFjZSwgbV9ydW4ubHRyKCksIGFmdGVyRXhw
YW5zaW9uLCBmb3JiaWRMZWZ0RXhwYW5zaW9uLCBmb3JiaWRSaWdodEV4cGFuc2lvbiwgZm9yY2VM
ZWZ0RXhwYW5zaW9uLCBmb3JjZVJpZ2h0RXhwYW5zaW9uKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChleHBhbmRMZWZ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9leHBh
bnNpb24gLT0gbV9leHBhbnNpb25QZXJPcHBvcnR1bml0eTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBJbmNyZWFzZSBwcmV2aW91cyB3aWR0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDgwZmFiYjMyYWRiZjY5Y2Mx
ZTQ4MGIxN2JkMWM2OTljODlkZjQyNmMuLjNlZTY5YjdlMTliMWNhZDMxNWYyOGZjMjM1NDQzMTQz
ODlmYTYzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5jcHAKQEAgLTEwODYsOCArMTA4Niw4IEBAIGJvb2wgRm9udENhc2NhZGU6OmlzQ0pL
SWRlb2dyYXBoT3JTeW1ib2woVUNoYXIzMiBjKQogc3RkOjpwYWlyPHVuc2lnbmVkLCBib29sPiBG
b250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKGNvbnN0IExDaGFy
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBF
eHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvcikKIHsKICAgICB1bnNpZ25lZCBjb3Vu
dCA9IDA7Ci0gICAgYm9vbCBpc0FmdGVyRXhwYW5zaW9uID0gKGV4cGFuc2lvbkJlaGF2aW9yICYg
TGVhZGluZ0V4cGFuc2lvbk1hc2spID09IEZvcmJpZExlYWRpbmdFeHBhbnNpb247Ci0gICAgaWYg
KChleHBhbnNpb25CZWhhdmlvciAmIExlYWRpbmdFeHBhbnNpb25NYXNrKSA9PSBGb3JjZUxlYWRp
bmdFeHBhbnNpb24pIHsKKyAgICBib29sIGlzQWZ0ZXJFeHBhbnNpb24gPSAoZXhwYW5zaW9uQmVo
YXZpb3IgJiBMZWZ0RXhwYW5zaW9uTWFzaykgPT0gRm9yYmlkTGVmdEV4cGFuc2lvbjsKKyAgICBp
ZiAoKGV4cGFuc2lvbkJlaGF2aW9yICYgTGVmdEV4cGFuc2lvbk1hc2spID09IEZvcmNlTGVmdEV4
cGFuc2lvbikgewogICAgICAgICArK2NvdW50OwogICAgICAgICBpc0FmdGVyRXhwYW5zaW9uID0g
dHJ1ZTsKICAgICB9CkBAIC0xMTA4LDEwICsxMTA4LDEwIEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
Ym9vbD4gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbChjb25z
dCBMCiAgICAgICAgICAgICAgICAgaXNBZnRlckV4cGFuc2lvbiA9IGZhbHNlOwogICAgICAgICB9
CiAgICAgfQotICAgIGlmICghaXNBZnRlckV4cGFuc2lvbiAmJiAoZXhwYW5zaW9uQmVoYXZpb3Ig
JiBUcmFpbGluZ0V4cGFuc2lvbk1hc2spID09IEZvcmNlVHJhaWxpbmdFeHBhbnNpb24pIHsKKyAg
ICBpZiAoIWlzQWZ0ZXJFeHBhbnNpb24gJiYgKGV4cGFuc2lvbkJlaGF2aW9yICYgUmlnaHRFeHBh
bnNpb25NYXNrKSA9PSBGb3JjZVJpZ2h0RXhwYW5zaW9uKSB7CiAgICAgICAgICsrY291bnQ7CiAg
ICAgICAgIGlzQWZ0ZXJFeHBhbnNpb24gPSB0cnVlOwotICAgIH0gZWxzZSBpZiAoaXNBZnRlckV4
cGFuc2lvbiAmJiAoZXhwYW5zaW9uQmVoYXZpb3IgJiBUcmFpbGluZ0V4cGFuc2lvbk1hc2spID09
IEZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uKSB7CisgICAgfSBlbHNlIGlmIChpc0FmdGVyRXhwYW5z
aW9uICYmIChleHBhbnNpb25CZWhhdmlvciAmIFJpZ2h0RXhwYW5zaW9uTWFzaykgPT0gRm9yYmlk
UmlnaHRFeHBhbnNpb24pIHsKICAgICAgICAgQVNTRVJUKGNvdW50KTsKICAgICAgICAgLS1jb3Vu
dDsKICAgICAgICAgaXNBZnRlckV4cGFuc2lvbiA9IGZhbHNlOwpAQCAtMTEyMyw4ICsxMTIzLDgg
QEAgc3RkOjpwYWlyPHVuc2lnbmVkLCBib29sPiBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0
dW5pdHlDb3VudEludGVybmFsKGNvbnN0IFUKIHsKICAgICBzdGF0aWMgYm9vbCBleHBhbmRBcm91
bmRJZGVvZ3JhcGhzID0gY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsK
ICAgICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgYm9vbCBpc0FmdGVyRXhwYW5zaW9uID0gKGV4
cGFuc2lvbkJlaGF2aW9yICYgTGVhZGluZ0V4cGFuc2lvbk1hc2spID09IEZvcmJpZExlYWRpbmdF
eHBhbnNpb247Ci0gICAgaWYgKChleHBhbnNpb25CZWhhdmlvciAmIExlYWRpbmdFeHBhbnNpb25N
YXNrKSA9PSBGb3JjZUxlYWRpbmdFeHBhbnNpb24pIHsKKyAgICBib29sIGlzQWZ0ZXJFeHBhbnNp
b24gPSAoZXhwYW5zaW9uQmVoYXZpb3IgJiBMZWZ0RXhwYW5zaW9uTWFzaykgPT0gRm9yYmlkTGVm
dEV4cGFuc2lvbjsKKyAgICBpZiAoKGV4cGFuc2lvbkJlaGF2aW9yICYgTGVmdEV4cGFuc2lvbk1h
c2spID09IEZvcmNlTGVmdEV4cGFuc2lvbikgewogICAgICAgICArK2NvdW50OwogICAgICAgICBp
c0FmdGVyRXhwYW5zaW9uID0gdHJ1ZTsKICAgICB9CkBAIC0xMTcxLDEwICsxMTcxLDEwIEBAIHN0
ZDo6cGFpcjx1bnNpZ25lZCwgYm9vbD4gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5
Q291bnRJbnRlcm5hbChjb25zdCBVCiAgICAgICAgICAgICBpc0FmdGVyRXhwYW5zaW9uID0gZmFs
c2U7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCFpc0FmdGVyRXhwYW5zaW9uICYmIChleHBh
bnNpb25CZWhhdmlvciAmIFRyYWlsaW5nRXhwYW5zaW9uTWFzaykgPT0gRm9yY2VUcmFpbGluZ0V4
cGFuc2lvbikgeworICAgIGlmICghaXNBZnRlckV4cGFuc2lvbiAmJiAoZXhwYW5zaW9uQmVoYXZp
b3IgJiBSaWdodEV4cGFuc2lvbk1hc2spID09IEZvcmNlUmlnaHRFeHBhbnNpb24pIHsKICAgICAg
ICAgKytjb3VudDsKICAgICAgICAgaXNBZnRlckV4cGFuc2lvbiA9IHRydWU7Ci0gICAgfSBlbHNl
IGlmIChpc0FmdGVyRXhwYW5zaW9uICYmIChleHBhbnNpb25CZWhhdmlvciAmIFRyYWlsaW5nRXhw
YW5zaW9uTWFzaykgPT0gRm9yYmlkVHJhaWxpbmdFeHBhbnNpb24pIHsKKyAgICB9IGVsc2UgaWYg
KGlzQWZ0ZXJFeHBhbnNpb24gJiYgKGV4cGFuc2lvbkJlaGF2aW9yICYgUmlnaHRFeHBhbnNpb25N
YXNrKSA9PSBGb3JiaWRSaWdodEV4cGFuc2lvbikgewogICAgICAgICBBU1NFUlQoY291bnQpOwog
ICAgICAgICAtLWNvdW50OwogICAgICAgICBpc0FmdGVyRXhwYW5zaW9uID0gZmFsc2U7CkBAIC0x
MTkzLDcgKzExOTMsNyBAQCBzdGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IEZvbnRDYXNjYWRlOjpl
eHBhbnNpb25PcHBvcnR1bml0eUNvdW50KGNvbnN0IFN0cmluZ1ZpZQogICAgIHJldHVybiBleHBh
bnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwoc3RyaW5nVmlldy5jaGFyYWN0ZXJzMTYoKSwg
c3RyaW5nVmlldy5sZW5ndGgoKSwgZGlyZWN0aW9uLCBleHBhbnNpb25CZWhhdmlvcik7CiB9CiAK
LWJvb2wgRm9udENhc2NhZGU6OmxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eShjb25zdCBTdHJp
bmdWaWV3JiBzdHJpbmdWaWV3LCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKK2Jvb2wgRm9udENh
c2NhZGU6OmxlZnRFeHBhbnNpb25PcHBvcnR1bml0eShjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdW
aWV3LCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBpZiAoIXN0cmluZ1ZpZXcubGVu
Z3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMTIsNyArMTIxMiw3IEBAIGJvb2wg
Rm9udENhc2NhZGU6OmxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eShjb25zdCBTdHJpbmdWaWV3
JiBzdHJpbmdWaWV3LCBUZXh0CiAgICAgcmV0dXJuIGNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJ
bkNvbXBsZXhUZXh0KCkgJiYgaXNDSktJZGVvZ3JhcGhPclN5bWJvbChpbml0aWFsQ2hhcmFjdGVy
KTsKIH0KIAotYm9vbCBGb250Q2FzY2FkZTo6dHJhaWxpbmdFeHBhbnNpb25PcHBvcnR1bml0eShj
b25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKK2Jv
b2wgRm9udENhc2NhZGU6OnJpZ2h0RXhwYW5zaW9uT3Bwb3J0dW5pdHkoY29uc3QgU3RyaW5nVmll
dyYgc3RyaW5nVmlldywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgaWYgKCFzdHJp
bmdWaWV3Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA1OGE1NjdkODY2NDRiNDgz
OGQ2Zjg3MWRjNmZjZmViNTYwOGMyMGU5Li45YWQzYWU0YmVmMTIxZDZkMDE3ZjJiNzI1NDVkYmNk
NjFkMjU0YWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmgKQEAgLTE3NCwxMCArMTc0LDggQEAgcHVibGljOgogCiAgICAgLy8gV2hldGhlciBv
ciBub3QgdGhlcmUgaXMgYW4gZXhwYW5zaW9uIG9wcG9ydHVuaXR5IGp1c3QgYmVmb3JlIHRoZSBm
aXJzdCBjaGFyYWN0ZXIKICAgICAvLyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCB0YWtlIGEgaXNB
ZnRlckV4cGFuc2lvbiBmbGFnOyB0aGlzIGFzc3VtZXMgdGhhdCBpc0FmdGVyRXhwYW5zaW9uIGlz
IGZhbHNlCi0gICAgLy8gSGVyZSwgIkxlYWRpbmciIGFuZCAiVHJhaWxpbmciIGFyZSByZWxldmFu
dCBhZnRlciB0aGUgbGluZSBoYXMgYmVlbiByZWFycmFuZ2VkIGZvciBiaWRpLgotICAgIC8vICgi
TGVhZGluZyIgbWVhbnMgImxlZnQiIGFuZCAiVHJhaWxpbmciIG1lYW5zICJyaWdodC4iKQotICAg
IHN0YXRpYyBib29sIGxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eShjb25zdCBTdHJpbmdWaWV3
JiwgVGV4dERpcmVjdGlvbik7Ci0gICAgc3RhdGljIGJvb2wgdHJhaWxpbmdFeHBhbnNpb25PcHBv
cnR1bml0eShjb25zdCBTdHJpbmdWaWV3JiwgVGV4dERpcmVjdGlvbik7CisgICAgc3RhdGljIGJv
b2wgbGVmdEV4cGFuc2lvbk9wcG9ydHVuaXR5KGNvbnN0IFN0cmluZ1ZpZXcmLCBUZXh0RGlyZWN0
aW9uKTsKKyAgICBzdGF0aWMgYm9vbCByaWdodEV4cGFuc2lvbk9wcG9ydHVuaXR5KGNvbnN0IFN0
cmluZ1ZpZXcmLCBUZXh0RGlyZWN0aW9uKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHNldFNob3VsZFVzZVNtb290aGluZyhib29sKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBzaG91bGRVc2VTbW9vdGhpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKaW5kZXggNjE2M2JjZTI3YTI0ZmI3M2Y3
ZjQ3MGYwOTkyYWIxYzcyYTA1ZWY5ZS4uYjk5YTk1ZjdlYTYwMWMxNDFhZDYzODI1OGQzYzQ0ZThj
MjUwNTJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lk
dGhJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lk
dGhJdGVyYXRvci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgV2lkdGhJdGVyYXRvcjo6V2lkdGhJdGVy
YXRvcihjb25zdCBGb250Q2FzY2FkZSogZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2UK
ICAgICAsIG1fcnVuKHJ1bikKICAgICAsIG1fZmFsbGJhY2tGb250cyhmYWxsYmFja0ZvbnRzKQog
ICAgICwgbV9leHBhbnNpb24ocnVuLmV4cGFuc2lvbigpKQotICAgICwgbV9pc0FmdGVyRXhwYW5z
aW9uKChydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIExlYWRpbmdFeHBhbnNpb25NYXNrKSA9PSBG
b3JiaWRMZWFkaW5nRXhwYW5zaW9uKQorICAgICwgbV9pc0FmdGVyRXhwYW5zaW9uKChydW4uZXhw
YW5zaW9uQmVoYXZpb3IoKSAmIExlZnRFeHBhbnNpb25NYXNrKSA9PSBGb3JiaWRMZWZ0RXhwYW5z
aW9uKQogICAgICwgbV9hY2NvdW50Rm9yR2x5cGhCb3VuZHMoYWNjb3VudEZvckdseXBoQm91bmRz
KQogICAgICwgbV9lbmFibGVLZXJuaW5nKGZvbnQtPmVuYWJsZUtlcm5pbmcoKSkKICAgICAsIG1f
cmVxdWlyZXNTaGFwaW5nKGZvbnQtPnJlcXVpcmVzU2hhcGluZygpKQpAQCAtMTM5LDcgKzEzOSw3
IEBAIGlubGluZSBmbG9hdCBXaWR0aEl0ZXJhdG9yOjphcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBo
QnVmZmVyKiBnbHlwaEJ1ZmZlciwgYm9vbCBsCiAgICAgcmV0dXJuIGFmdGVyV2lkdGggLSBiZWZv
cmVXaWR0aDsKIH0KIAotc3RhdGljIGlubGluZSBzdGQ6OnBhaXI8Ym9vbCwgYm9vbD4gZXhwYW5z
aW9uTG9jYXRpb24oYm9vbCBpZGVvZ3JhcGgsIGJvb2wgdHJlYXRBc1NwYWNlLCBib29sIGx0ciwg
Ym9vbCBpc0FmdGVyRXhwYW5zaW9uLCBib29sIGZvcmJpZExlYWRpbmdFeHBhbnNpb24sIGJvb2wg
Zm9yYmlkVHJhaWxpbmdFeHBhbnNpb24sIGJvb2wgZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBib29s
IGZvcmNlVHJhaWxpbmdFeHBhbnNpb24pCitzdGF0aWMgaW5saW5lIHN0ZDo6cGFpcjxib29sLCBi
b29sPiBleHBhbnNpb25Mb2NhdGlvbihib29sIGlkZW9ncmFwaCwgYm9vbCB0cmVhdEFzU3BhY2Us
IGJvb2wgbHRyLCBib29sIGlzQWZ0ZXJFeHBhbnNpb24sIGJvb2wgZm9yYmlkTGVmdEV4cGFuc2lv
biwgYm9vbCBmb3JiaWRSaWdodEV4cGFuc2lvbiwgYm9vbCBmb3JjZUxlZnRFeHBhbnNpb24sIGJv
b2wgZm9yY2VSaWdodEV4cGFuc2lvbikKIHsKICAgICBib29sIGV4cGFuZExlZnQgPSBpZGVvZ3Jh
cGg7CiAgICAgYm9vbCBleHBhbmRSaWdodCA9IGlkZW9ncmFwaDsKQEAgLTE1NSwxNSArMTU1LDE1
IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpwYWlyPGJvb2wsIGJvb2w+IGV4cGFuc2lvbkxvY2F0aW9u
KGJvb2wgaWRlb2dyYXBoLCBib29sIHRyZWF0CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGV4
cGFuZFJpZ2h0ID0gZmFsc2U7CiAgICAgfQotICAgIEFTU0VSVCghZm9yYmlkTGVhZGluZ0V4cGFu
c2lvbiB8fCAhZm9yY2VMZWFkaW5nRXhwYW5zaW9uKTsKLSAgICBBU1NFUlQoIWZvcmJpZFRyYWls
aW5nRXhwYW5zaW9uIHx8ICFmb3JjZVRyYWlsaW5nRXhwYW5zaW9uKTsKLSAgICBpZiAoZm9yYmlk
TGVhZGluZ0V4cGFuc2lvbikKKyAgICBBU1NFUlQoIWZvcmJpZExlZnRFeHBhbnNpb24gfHwgIWZv
cmNlTGVmdEV4cGFuc2lvbik7CisgICAgQVNTRVJUKCFmb3JiaWRSaWdodEV4cGFuc2lvbiB8fCAh
Zm9yY2VSaWdodEV4cGFuc2lvbik7CisgICAgaWYgKGZvcmJpZExlZnRFeHBhbnNpb24pCiAgICAg
ICAgIGV4cGFuZExlZnQgPSBmYWxzZTsKLSAgICBpZiAoZm9yYmlkVHJhaWxpbmdFeHBhbnNpb24p
CisgICAgaWYgKGZvcmJpZFJpZ2h0RXhwYW5zaW9uKQogICAgICAgICBleHBhbmRSaWdodCA9IGZh
bHNlOwotICAgIGlmIChmb3JjZUxlYWRpbmdFeHBhbnNpb24pCisgICAgaWYgKGZvcmNlTGVmdEV4
cGFuc2lvbikKICAgICAgICAgZXhwYW5kTGVmdCA9IHRydWU7Ci0gICAgaWYgKGZvcmNlVHJhaWxp
bmdFeHBhbnNpb24pCisgICAgaWYgKGZvcmNlUmlnaHRFeHBhbnNpb24pCiAgICAgICAgIGV4cGFu
ZFJpZ2h0ID0gdHJ1ZTsKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoZXhwYW5kTGVmdCwgZXhw
YW5kUmlnaHQpOwogfQpAQCAtMTc1LDEwICsxNzUsMTAgQEAgaW5saW5lIHZvaWQgV2lkdGhJdGVy
YXRvcjo6YWR2YW5jZUludGVybmFsKFRleHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yLCBHbHlwaEJ1
ZmYKICAgICBib29sIHJ0bCA9IG1fcnVuLnJ0bCgpOwogICAgIGJvb2wgaGFzRXh0cmFTcGFjaW5n
ID0gKG1fZm9udC0+bGV0dGVyU3BhY2luZygpIHx8IG1fZm9udC0+d29yZFNwYWNpbmcoKSB8fCBt
X2V4cGFuc2lvbikgJiYgIW1fcnVuLnNwYWNpbmdEaXNhYmxlZCgpOwogCi0gICAgYm9vbCBydW5G
b3JjZXNMZWFkaW5nRXhwYW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWFk
aW5nRXhwYW5zaW9uTWFzaykgPT0gRm9yY2VMZWFkaW5nRXhwYW5zaW9uOwotICAgIGJvb2wgcnVu
Rm9yY2VzVHJhaWxpbmdFeHBhbnNpb24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIFRy
YWlsaW5nRXhwYW5zaW9uTWFzaykgPT0gRm9yY2VUcmFpbGluZ0V4cGFuc2lvbjsKLSAgICBib29s
IHJ1bkZvcmJpZHNMZWFkaW5nRXhwYW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkg
JiBMZWFkaW5nRXhwYW5zaW9uTWFzaykgPT0gRm9yYmlkTGVhZGluZ0V4cGFuc2lvbjsKLSAgICBi
b29sIHJ1bkZvcmJpZHNUcmFpbGluZ0V4cGFuc2lvbiA9IChtX3J1bi5leHBhbnNpb25CZWhhdmlv
cigpICYgVHJhaWxpbmdFeHBhbnNpb25NYXNrKSA9PSBGb3JiaWRUcmFpbGluZ0V4cGFuc2lvbjsK
KyAgICBib29sIHJ1bkZvcmNlc0xlZnRFeHBhbnNpb24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZp
b3IoKSAmIExlZnRFeHBhbnNpb25NYXNrKSA9PSBGb3JjZUxlZnRFeHBhbnNpb247CisgICAgYm9v
bCBydW5Gb3JjZXNSaWdodEV4cGFuc2lvbiA9IChtX3J1bi5leHBhbnNpb25CZWhhdmlvcigpICYg
UmlnaHRFeHBhbnNpb25NYXNrKSA9PSBGb3JjZVJpZ2h0RXhwYW5zaW9uOworICAgIGJvb2wgcnVu
Rm9yYmlkc0xlZnRFeHBhbnNpb24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIExlZnRF
eHBhbnNpb25NYXNrKSA9PSBGb3JiaWRMZWZ0RXhwYW5zaW9uOworICAgIGJvb2wgcnVuRm9yYmlk
c1JpZ2h0RXhwYW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBSaWdodEV4cGFu
c2lvbk1hc2spID09IEZvcmJpZFJpZ2h0RXhwYW5zaW9uOwogICAgIGZsb2F0IHdpZHRoU2luY2VM
YXN0Um91bmRpbmcgPSBtX3J1bldpZHRoU29GYXI7CiAgICAgZmxvYXQgbGVmdG92ZXJKdXN0aWZp
Y2F0aW9uV2lkdGggPSAwOwogICAgIG1fcnVuV2lkdGhTb0ZhciA9IGZsb29yZihtX3J1bldpZHRo
U29GYXIpOwpAQCAtMjYyLDIzICsyNjIsMjMgQEAgaW5saW5lIHZvaWQgV2lkdGhJdGVyYXRvcjo6
YWR2YW5jZUludGVybmFsKFRleHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yLCBHbHlwaEJ1ZmYKICAg
ICAgICAgICAgIHN0YXRpYyBib29sIGV4cGFuZEFyb3VuZElkZW9ncmFwaHMgPSBGb250Q2FzY2Fk
ZTo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKICAgICAgICAgICAg
IGJvb2wgdHJlYXRBc1NwYWNlID0gRm9udENhc2NhZGU6OnRyZWF0QXNTcGFjZShjaGFyYWN0ZXIp
OwogICAgICAgICAgICAgYm9vbCBjdXJyZW50SXNMYXN0Q2hhcmFjdGVyID0gY3VycmVudENoYXJh
Y3RlckluZGV4ICsgYWR2YW5jZUxlbmd0aCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fcnVuLmxl
bmd0aCgpKTsKLSAgICAgICAgICAgIGJvb2wgZm9yY2VMZWFkaW5nRXhwYW5zaW9uID0gZmFsc2U7
IC8vIE9uIHRoZSBsZWZ0LCByZWdhcmRsZXNzIG9mIG1fcnVuLmx0cigpCi0gICAgICAgICAgICBi
b29sIGZvcmNlVHJhaWxpbmdFeHBhbnNpb24gPSBmYWxzZTsgLy8gT24gdGhlIHJpZ2h0LCByZWdh
cmRsZXNzIG9mIG1fcnVuLmx0cigpCi0gICAgICAgICAgICBib29sIGZvcmJpZExlYWRpbmdFeHBh
bnNpb24gPSBmYWxzZTsKLSAgICAgICAgICAgIGJvb2wgZm9yYmlkVHJhaWxpbmdFeHBhbnNpb24g
PSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChydW5Gb3JjZXNMZWFkaW5nRXhwYW5zaW9uKQotICAg
ICAgICAgICAgICAgIGZvcmNlTGVhZGluZ0V4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8gIWN1cnJl
bnRDaGFyYWN0ZXJJbmRleCA6IGN1cnJlbnRJc0xhc3RDaGFyYWN0ZXI7Ci0gICAgICAgICAgICBp
ZiAocnVuRm9yY2VzVHJhaWxpbmdFeHBhbnNpb24pCi0gICAgICAgICAgICAgICAgZm9yY2VUcmFp
bGluZ0V4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8gY3VycmVudElzTGFzdENoYXJhY3RlciA6ICFj
dXJyZW50Q2hhcmFjdGVySW5kZXg7Ci0gICAgICAgICAgICBpZiAocnVuRm9yYmlkc0xlYWRpbmdF
eHBhbnNpb24pCi0gICAgICAgICAgICAgICAgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiA9IG1fcnVu
Lmx0cigpID8gIWN1cnJlbnRDaGFyYWN0ZXJJbmRleCA6IGN1cnJlbnRJc0xhc3RDaGFyYWN0ZXI7
Ci0gICAgICAgICAgICBpZiAocnVuRm9yYmlkc1RyYWlsaW5nRXhwYW5zaW9uKQotICAgICAgICAg
ICAgICAgIGZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uID0gbV9ydW4ubHRyKCkgPyBjdXJyZW50SXNM
YXN0Q2hhcmFjdGVyIDogIWN1cnJlbnRDaGFyYWN0ZXJJbmRleDsKKyAgICAgICAgICAgIGJvb2wg
Zm9yY2VMZWZ0RXhwYW5zaW9uID0gZmFsc2U7IC8vIE9uIHRoZSBsZWZ0LCByZWdhcmRsZXNzIG9m
IG1fcnVuLmx0cigpCisgICAgICAgICAgICBib29sIGZvcmNlUmlnaHRFeHBhbnNpb24gPSBmYWxz
ZTsgLy8gT24gdGhlIHJpZ2h0LCByZWdhcmRsZXNzIG9mIG1fcnVuLmx0cigpCisgICAgICAgICAg
ICBib29sIGZvcmJpZExlZnRFeHBhbnNpb24gPSBmYWxzZTsKKyAgICAgICAgICAgIGJvb2wgZm9y
YmlkUmlnaHRFeHBhbnNpb24gPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChydW5Gb3JjZXNMZWZ0
RXhwYW5zaW9uKQorICAgICAgICAgICAgICAgIGZvcmNlTGVmdEV4cGFuc2lvbiA9IG1fcnVuLmx0
cigpID8gIWN1cnJlbnRDaGFyYWN0ZXJJbmRleCA6IGN1cnJlbnRJc0xhc3RDaGFyYWN0ZXI7Cisg
ICAgICAgICAgICBpZiAocnVuRm9yY2VzUmlnaHRFeHBhbnNpb24pCisgICAgICAgICAgICAgICAg
Zm9yY2VSaWdodEV4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8gY3VycmVudElzTGFzdENoYXJhY3Rl
ciA6ICFjdXJyZW50Q2hhcmFjdGVySW5kZXg7CisgICAgICAgICAgICBpZiAocnVuRm9yYmlkc0xl
ZnRFeHBhbnNpb24pCisgICAgICAgICAgICAgICAgZm9yYmlkTGVmdEV4cGFuc2lvbiA9IG1fcnVu
Lmx0cigpID8gIWN1cnJlbnRDaGFyYWN0ZXJJbmRleCA6IGN1cnJlbnRJc0xhc3RDaGFyYWN0ZXI7
CisgICAgICAgICAgICBpZiAocnVuRm9yYmlkc1JpZ2h0RXhwYW5zaW9uKQorICAgICAgICAgICAg
ICAgIGZvcmJpZFJpZ2h0RXhwYW5zaW9uID0gbV9ydW4ubHRyKCkgPyBjdXJyZW50SXNMYXN0Q2hh
cmFjdGVyIDogIWN1cnJlbnRDaGFyYWN0ZXJJbmRleDsKICAgICAgICAgICAgIGJvb2wgaWRlb2dy
YXBoID0gKGV4cGFuZEFyb3VuZElkZW9ncmFwaHMgJiYgRm9udENhc2NhZGU6OmlzQ0pLSWRlb2dy
YXBoT3JTeW1ib2woY2hhcmFjdGVyKSk7Ci0gICAgICAgICAgICBpZiAodHJlYXRBc1NwYWNlIHx8
IGlkZW9ncmFwaCB8fCBmb3JjZUxlYWRpbmdFeHBhbnNpb24gfHwgZm9yY2VUcmFpbGluZ0V4cGFu
c2lvbikgeworICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8fCBpZGVvZ3JhcGggfHwgZm9y
Y2VMZWZ0RXhwYW5zaW9uIHx8IGZvcmNlUmlnaHRFeHBhbnNpb24pIHsKICAgICAgICAgICAgICAg
ICAvLyBEaXN0cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZlbmx5IG92ZXIgYWxs
IGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAgICAgICAgICAgaWYg
KG1fZXhwYW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gW2V4cGFuZExlZnQsIGV4
cGFuZFJpZ2h0XSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRBc1NwYWNlLCBt
X3J1bi5sdHIoKSwgbV9pc0FmdGVyRXhwYW5zaW9uLCBmb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBm
b3JiaWRUcmFpbGluZ0V4cGFuc2lvbiwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBmb3JjZVRyYWls
aW5nRXhwYW5zaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwgZXhw
YW5kUmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1f
cnVuLmx0cigpLCBtX2lzQWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlZnRFeHBhbnNpb24sIGZvcmJp
ZFJpZ2h0RXhwYW5zaW9uLCBmb3JjZUxlZnRFeHBhbnNpb24sIGZvcmNlUmlnaHRFeHBhbnNpb24p
OwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVmdCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fcnVuLmx0cigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gSW5jcmVhc2UgcHJldmlvdXMgd2lkdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEZsYWdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRGbGFncy5oCmluZGV4IDEwY2M3NjA4ZDI1Yzc1ZmY1NDU1OTEwOGM5OWYxNGUyYjMzYTQxZDYu
LmEzYTczNGVhNDc4OTA0MTJjM2RiOTk1ZGMxNzdhYjIwYmYxNTdlYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaApAQCAtNjEsMjAgKzYxLDE4IEBAIGVudW0gY2xh
c3MgTm9uQ0pLR2x5cGhPcmllbnRhdGlvbiA6IHVpbnQ4X3QgewogICAgIFVwcmlnaHQKIH07CiAK
LS8vIEhlcmUsICJMZWFkaW5nIiBhbmQgIlRyYWlsaW5nIiBhcmUgcmVsZXZhbnQgYWZ0ZXIgdGhl
IGxpbmUgaGFzIGJlZW4gcmVhcnJhbmdlZCBmb3IgYmlkaS4KLS8vICgiTGVhZGluZyIgbWVhbnMg
ImxlZnQiIGFuZCAiVHJhaWxpbmciIG1lYW5zICJyaWdodC4iKQogZW51bSBFeHBhbnNpb25CZWhh
dmlvckZsYWdzIHsKLSAgICBGb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiA9IDAgPDwgMCwKLSAgICBB
bGxvd1RyYWlsaW5nRXhwYW5zaW9uID0gMSA8PCAwLAotICAgIEZvcmNlVHJhaWxpbmdFeHBhbnNp
b24gPSAyIDw8IDAsCi0gICAgVHJhaWxpbmdFeHBhbnNpb25NYXNrID0gMyA8PCAwLAorICAgIEZv
cmJpZFJpZ2h0RXhwYW5zaW9uID0gMCA8PCAwLAorICAgIEFsbG93UmlnaHRFeHBhbnNpb24gPSAx
IDw8IDAsCisgICAgRm9yY2VSaWdodEV4cGFuc2lvbiA9IDIgPDwgMCwKKyAgICBSaWdodEV4cGFu
c2lvbk1hc2sgPSAzIDw8IDAsCiAKLSAgICBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uID0gMCA8PCAy
LAotICAgIEFsbG93TGVhZGluZ0V4cGFuc2lvbiA9IDEgPDwgMiwKLSAgICBGb3JjZUxlYWRpbmdF
eHBhbnNpb24gPSAyIDw8IDIsCi0gICAgTGVhZGluZ0V4cGFuc2lvbk1hc2sgPSAzIDw8IDIsCisg
ICAgRm9yYmlkTGVmdEV4cGFuc2lvbiA9IDAgPDwgMiwKKyAgICBBbGxvd0xlZnRFeHBhbnNpb24g
PSAxIDw8IDIsCisgICAgRm9yY2VMZWZ0RXhwYW5zaW9uID0gMiA8PCAyLAorICAgIExlZnRFeHBh
bnNpb25NYXNrID0gMyA8PCAyLAogCi0gICAgRGVmYXVsdEV4cGFuc2lvbiA9IEFsbG93VHJhaWxp
bmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLAorICAgIERlZmF1bHRFeHBhbnNp
b24gPSBBbGxvd1JpZ2h0RXhwYW5zaW9uIHwgRm9yYmlkTGVmdEV4cGFuc2lvbiwKIH07CiB0eXBl
ZGVmIHVuc2lnbmVkIEV4cGFuc2lvbkJlaGF2aW9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcAppbmRleCBkY2QwNDYxMzFlMTZjM2YyM2UwMmFi
N2YwNjMwNGNjOTg5YjJlMzUxLi5lNWNjOTkyNmE2ZGFlMGZiYWYzMmYyMDdkYWFiNmZiNDhjYTAw
ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlv
dXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5j
cHAKQEAgLTczNCwxMSArNzM0LDExIEBAIHN0YXRpYyBpbmxpbmUgRXhwYW5zaW9uQmVoYXZpb3Ig
ZXhwYW5zaW9uQmVoYXZpb3JGb3JJbmxpbmVUZXh0Qm94KFJlbmRlckJsb2NrRmxvCiB7CiAgICAg
Ly8gVGF0ZWNodXlva28gaXMgbW9kZWxlZCBhcyB0aGUgT2JqZWN0IFJlcGxhY2VtZW50IENoYXJh
Y3RlciAoVStGRkZDKSwgd2hpY2ggY2FuIG5ldmVyIGhhdmUgZXhwYW5zaW9uIG9wcG9ydHVuaXRp
ZXMgaW5zaWRlIG5vciBpbnRyaW5zaWNhbGx5IGFkamFjZW50IHRvIGl0LgogICAgIGlmICh0ZXh0
Qm94LnJlbmRlcmVyKCkuc3R5bGUoKS50ZXh0Q29tYmluZSgpID09IFRleHRDb21iaW5lOjpIb3Jp
em9udGFsKQotICAgICAgICByZXR1cm4gRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiB8IEZvcmJpZFRy
YWlsaW5nRXhwYW5zaW9uOworICAgICAgICByZXR1cm4gRm9yYmlkTGVmdEV4cGFuc2lvbiB8IEZv
cmJpZFJpZ2h0RXhwYW5zaW9uOwogCiAgICAgRXhwYW5zaW9uQmVoYXZpb3IgcmVzdWx0ID0gMDsK
LSAgICBib29sIHNldExlYWRpbmdFeHBhbnNpb24gPSBmYWxzZTsKLSAgICBib29sIHNldFRyYWls
aW5nRXhwYW5zaW9uID0gZmFsc2U7CisgICAgYm9vbCBzZXRMZWZ0RXhwYW5zaW9uID0gZmFsc2U7
CisgICAgYm9vbCBzZXRSaWdodEV4cGFuc2lvbiA9IGZhbHNlOwogICAgIGlmICh0ZXh0QWxpZ24g
PT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkgewogICAgICAgICAvLyBJZiB0aGUgbmV4dCBib3gg
aXMgcnVieSwgYW5kIHdlJ3JlIGp1c3RpZnlpbmcsIGFuZCB0aGUgZmlyc3QgYm94IGluIHRoZSBy
dWJ5IGJhc2UgaGFzIGEgbGVhZGluZyBleHBhbnNpb24sIGFuZCB3ZSBhcmUgYSB0ZXh0IGJveCwg
dGhlbiBmb3JjZSBhIHRyYWlsaW5nIGV4cGFuc2lvbi4KICAgICAgICAgaWYgKG5leHRSdW4gJiYg
aXM8UmVuZGVyUnVieVJ1bj4obmV4dFJ1bi0+cmVuZGVyZXIoKSkgJiYgZG93bmNhc3Q8UmVuZGVy
UnVieVJ1bj4obmV4dFJ1bi0+cmVuZGVyZXIoKSkucnVieUJhc2UoKSAmJiBuZXh0UnVuLT5yZW5k
ZXJlcigpLnN0eWxlKCkuY29sbGFwc2VXaGl0ZVNwYWNlKCkpIHsKQEAgLTc0NiwxMCArNzQ2LDEw
IEBAIHN0YXRpYyBpbmxpbmUgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3JGb3JJ
bmxpbmVUZXh0Qm94KFJlbmRlckJsb2NrRmxvCiAgICAgICAgICAgICBpZiAocnVieUJhc2UuZmly
c3RSb290Qm94KCkgJiYgIXJ1YnlCYXNlLmZpcnN0Um9vdEJveCgpLT5uZXh0Um9vdEJveCgpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGxlYWZDaGlsZCA9IHJ1YnlCYXNlLmZpcnN0Um9v
dEJveCgpLT5maXJzdExlYWZEZXNjZW5kYW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGlzPElubGluZVRleHRCb3g+KCpsZWFmQ2hpbGQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyBsZWFkaW5nRXhwYW5zaW9uT3Bwb3J0dW5pdHkgZG9lc24ndCBhY3R1
YWxseSB3b3JrIGJlY2F1c2UgaXQgZG9lc24ndCBwZXJmb3JtIHRoZSBVQkEKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChGb250Q2FzY2FkZTo6bGVhZGluZ0V4cGFuc2lvbk9wcG9ydHVuaXR5
KGRvd25jYXN0PFJlbmRlclRleHQ+KGxlYWZDaGlsZC0+cmVuZGVyZXIoKSkuc3RyaW5nVmlldygp
LCBsZWFmQ2hpbGQtPmRpcmVjdGlvbigpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFRyYWlsaW5nRXhwYW5zaW9uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgfD0gRm9yY2VUcmFpbGluZ0V4cGFuc2lvbjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGxlZnRFeHBhbnNpb25PcHBvcnR1bml0eSBkb2Vzbid0IGFjdHVh
bGx5IHdvcmsgYmVjYXVzZSBpdCBkb2Vzbid0IHBlcmZvcm0gdGhlIFVCQQorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKEZvbnRDYXNjYWRlOjpsZWZ0RXhwYW5zaW9uT3Bwb3J0dW5pdHkoZG93
bmNhc3Q8UmVuZGVyVGV4dD4obGVhZkNoaWxkLT5yZW5kZXJlcigpKS5zdHJpbmdWaWV3KCksIGxl
YWZDaGlsZC0+ZGlyZWN0aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
UmlnaHRFeHBhbnNpb24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dCB8PSBGb3JjZVJpZ2h0RXhwYW5zaW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtNzYxLDEwICs3NjEsMTAg
QEAgc3RhdGljIGlubGluZSBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvckZvcklu
bGluZVRleHRCb3goUmVuZGVyQmxvY2tGbG8KICAgICAgICAgICAgIGlmIChydWJ5QmFzZS5maXJz
dFJvb3RCb3goKSAmJiAhcnVieUJhc2UuZmlyc3RSb290Qm94KCktPm5leHRSb290Qm94KCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAoYXV0byogbGVhZkNoaWxkID0gcnVieUJhc2UuZmlyc3RSb290
Qm94KCktPmxhc3RMZWFmRGVzY2VuZGFudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChp
czxJbmxpbmVUZXh0Qm94PigqbGVhZkNoaWxkKSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgbGVhZGluZ0V4cGFuc2lvbk9wcG9ydHVuaXR5IGRvZXNuJ3QgYWN0dWFs
bHkgd29yayBiZWNhdXNlIGl0IGRvZXNuJ3QgcGVyZm9ybSB0aGUgVUJBCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoRm9udENhc2NhZGU6OnRyYWlsaW5nRXhwYW5zaW9uT3Bwb3J0dW5pdHko
ZG93bmNhc3Q8UmVuZGVyVGV4dD4obGVhZkNoaWxkLT5yZW5kZXJlcigpKS5zdHJpbmdWaWV3KCks
IGxlYWZDaGlsZC0+ZGlyZWN0aW9uKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0TGVhZGluZ0V4cGFuc2lvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0IHw9IEZvcmNlTGVhZGluZ0V4cGFuc2lvbjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGxlZnRFeHBhbnNpb25PcHBvcnR1bml0eSBkb2Vzbid0IGFjdHVhbGx5
IHdvcmsgYmVjYXVzZSBpdCBkb2Vzbid0IHBlcmZvcm0gdGhlIFVCQQorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKEZvbnRDYXNjYWRlOjpyaWdodEV4cGFuc2lvbk9wcG9ydHVuaXR5KGRvd25j
YXN0PFJlbmRlclRleHQ+KGxlYWZDaGlsZC0+cmVuZGVyZXIoKSkuc3RyaW5nVmlldygpLCBsZWFm
Q2hpbGQtPmRpcmVjdGlvbigpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExl
ZnRFeHBhbnNpb24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8
PSBGb3JjZUxlZnRFeHBhbnNpb247CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC03NzQsNDYgKzc3NCw0NiBAQCBz
dGF0aWMgaW5saW5lIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yRm9ySW5saW5l
VGV4dEJveChSZW5kZXJCbG9ja0ZsbwogICAgICAgICBpZiAoaXM8UmVuZGVyUnVieUJhc2U+KGJs
b2NrKSkgewogICAgICAgICAgICAgUmVuZGVyUnVieUJhc2UmIHJ1YnlCYXNlID0gZG93bmNhc3Q8
UmVuZGVyUnVieUJhc2U+KGJsb2NrKTsKICAgICAgICAgICAgIGlmICgmdGV4dEJveCA9PSBydWJ5
QmFzZS5maXJzdFJvb3RCb3goKS0+Zmlyc3RMZWFmRGVzY2VuZGFudCgpKSB7Ci0gICAgICAgICAg
ICAgICAgc2V0TGVhZGluZ0V4cGFuc2lvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcmVzdWx0
IHw9IEZvcmJpZExlYWRpbmdFeHBhbnNpb247CisgICAgICAgICAgICAgICAgc2V0TGVmdEV4cGFu
c2lvbiA9IHRydWU7CisgICAgICAgICAgICAgICAgcmVzdWx0IHw9IEZvcmJpZExlZnRFeHBhbnNp
b247CiAgICAgICAgICAgICB9IGlmICgmdGV4dEJveCA9PSBydWJ5QmFzZS5maXJzdFJvb3RCb3go
KS0+bGFzdExlYWZEZXNjZW5kYW50KCkpIHsKLSAgICAgICAgICAgICAgICBzZXRUcmFpbGluZ0V4
cGFuc2lvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcmVzdWx0IHw9IEZvcmJpZFRyYWlsaW5n
RXhwYW5zaW9uOworICAgICAgICAgICAgICAgIHNldFJpZ2h0RXhwYW5zaW9uID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQgfD0gRm9yYmlkUmlnaHRFeHBhbnNpb247CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCFzZXRMZWFkaW5nRXhwYW5zaW9uKQotICAg
ICAgICByZXN1bHQgfD0gaXNBZnRlckV4cGFuc2lvbiA/IEZvcmJpZExlYWRpbmdFeHBhbnNpb24g
OiBBbGxvd0xlYWRpbmdFeHBhbnNpb247Ci0gICAgaWYgKCFzZXRUcmFpbGluZ0V4cGFuc2lvbikK
LSAgICAgICAgcmVzdWx0IHw9IEFsbG93VHJhaWxpbmdFeHBhbnNpb247CisgICAgaWYgKCFzZXRM
ZWZ0RXhwYW5zaW9uKQorICAgICAgICByZXN1bHQgfD0gaXNBZnRlckV4cGFuc2lvbiA/IEZvcmJp
ZExlZnRFeHBhbnNpb24gOiBBbGxvd0xlZnRFeHBhbnNpb247CisgICAgaWYgKCFzZXRSaWdodEV4
cGFuc2lvbikKKyAgICAgICAgcmVzdWx0IHw9IEFsbG93UmlnaHRFeHBhbnNpb247CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGFwcGx5RXhwYW5zaW9uQmVoYXZp
b3IoSW5saW5lVGV4dEJveCYgdGV4dEJveCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVo
YXZpb3IpCiB7Ci0gICAgc3dpdGNoIChleHBhbnNpb25CZWhhdmlvciAmIExlYWRpbmdFeHBhbnNp
b25NYXNrKSB7Ci0gICAgY2FzZSBGb3JjZUxlYWRpbmdFeHBhbnNpb246Ci0gICAgICAgIHRleHRC
b3guc2V0Rm9yY2VMZWFkaW5nRXhwYW5zaW9uKCk7CisgICAgc3dpdGNoIChleHBhbnNpb25CZWhh
dmlvciAmIExlZnRFeHBhbnNpb25NYXNrKSB7CisgICAgY2FzZSBGb3JjZUxlZnRFeHBhbnNpb246
CisgICAgICAgIHRleHRCb3guc2V0Rm9yY2VMZWZ0RXhwYW5zaW9uKCk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbjoKLSAgICAgICAgdGV4dEJveC5zZXRD
YW5IYXZlTGVhZGluZ0V4cGFuc2lvbihmYWxzZSk7CisgICAgY2FzZSBGb3JiaWRMZWZ0RXhwYW5z
aW9uOgorICAgICAgICB0ZXh0Qm94LnNldENhbkhhdmVMZWZ0RXhwYW5zaW9uKGZhbHNlKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBbGxvd0xlYWRpbmdFeHBhbnNpb246Ci0gICAgICAgIHRl
eHRCb3guc2V0Q2FuSGF2ZUxlYWRpbmdFeHBhbnNpb24odHJ1ZSk7CisgICAgY2FzZSBBbGxvd0xl
ZnRFeHBhbnNpb246CisgICAgICAgIHRleHRCb3guc2V0Q2FuSGF2ZUxlZnRFeHBhbnNpb24odHJ1
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgc3dpdGNoIChleHBhbnNpb25CZWhh
dmlvciAmIFRyYWlsaW5nRXhwYW5zaW9uTWFzaykgewotICAgIGNhc2UgRm9yY2VUcmFpbGluZ0V4
cGFuc2lvbjoKLSAgICAgICAgdGV4dEJveC5zZXRGb3JjZVRyYWlsaW5nRXhwYW5zaW9uKCk7Cisg
ICAgc3dpdGNoIChleHBhbnNpb25CZWhhdmlvciAmIFJpZ2h0RXhwYW5zaW9uTWFzaykgeworICAg
IGNhc2UgRm9yY2VSaWdodEV4cGFuc2lvbjoKKyAgICAgICAgdGV4dEJveC5zZXRGb3JjZVJpZ2h0
RXhwYW5zaW9uKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9yYmlkVHJhaWxpbmdFeHBh
bnNpb246Ci0gICAgICAgIHRleHRCb3guc2V0Q2FuSGF2ZVRyYWlsaW5nRXhwYW5zaW9uKGZhbHNl
KTsKKyAgICBjYXNlIEZvcmJpZFJpZ2h0RXhwYW5zaW9uOgorICAgICAgICB0ZXh0Qm94LnNldENh
bkhhdmVSaWdodEV4cGFuc2lvbihmYWxzZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQWxs
b3dUcmFpbGluZ0V4cGFuc2lvbjoKLSAgICAgICAgdGV4dEJveC5zZXRDYW5IYXZlVHJhaWxpbmdF
eHBhbnNpb24odHJ1ZSk7CisgICAgY2FzZSBBbGxvd1JpZ2h0RXhwYW5zaW9uOgorICAgICAgICB0
ZXh0Qm94LnNldENhbkhhdmVSaWdodEV4cGFuc2lvbih0cnVlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAppbmRleCBiYTEzMTBkYTVlMTk3MjgwYTBlMzY2Mjgx
Y2FkYmFjYTg4MzE0ODkxLi5kYmM1YTQyNzA4YjcxZDQ4OWFhNDk5OTNiNzE4ZDg4MzEzMjExMjMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAKQEAgLTcwLDcgKzcw
LDcgQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGEKICAgICB9CiAKICAgICAvLyBGSVhNRTogV2h5
IGlzIHRoaXMgYWx3YXlzIExUUj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1biBmbGFn
cyBiZWxvdy4KLSAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFJlbmRlckJsb2NrOjpjb25zdHJ1
Y3RUZXh0UnVuKG1fc3RyLCBsaW5lU3R5bGUsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24pLCBMYXlv
dXRQb2ludCh4KCkgKyBwYWludE9mZnNldC54KCksIHkoKSArIHBhaW50T2Zmc2V0LnkoKSArIGxp
bmVTdHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpKSk7CisgICAgY29udGV4dC5kcmF3VGV4dChm
b250LCBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihtX3N0ciwgbGluZVN0eWxlLCBBbGxv
d1JpZ2h0RXhwYW5zaW9uKSwgTGF5b3V0UG9pbnQoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5KCkg
KyBwYWludE9mZnNldC55KCkgKyBsaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkpOwog
CiAgICAgLy8gUmVzdG9yZSB0aGUgcmVndWxhciBmaWxsIGNvbG9yLgogICAgIGlmICh0ZXh0Q29s
b3IgIT0gY29udGV4dC5maWxsQ29sb3IoKSkKQEAgLTExOSw3ICsxMTksNyBAQCBJbnRSZWN0IEVs
bGlwc2lzQm94OjpzZWxlY3Rpb25SZWN0KCkKICAgICBjb25zdCBSb290SW5saW5lQm94JiByb290
Qm94ID0gcm9vdCgpOwogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdheXMgTFRSPyBGaXgg
YnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93LgogICAgIExheW91dFJlY3Qg
c2VsZWN0aW9uUmVjdCB7IExheW91dFVuaXQoeCgpKSwgTGF5b3V0VW5pdCh5KCkgKyByb290Qm94
LnNlbGVjdGlvblRvcEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2soKSksIDBfbHUsIHJvb3RCb3gu
c2VsZWN0aW9uSGVpZ2h0QWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygpIH07Ci0gICAgZm9udC5h
ZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1biht
X3N0ciwgbGluZVN0eWxlLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSwgc2VsZWN0aW9uUmVjdCk7
CisgICAgZm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChSZW5kZXJCbG9jazo6Y29uc3Ry
dWN0VGV4dFJ1bihtX3N0ciwgbGluZVN0eWxlLCBBbGxvd1JpZ2h0RXhwYW5zaW9uKSwgc2VsZWN0
aW9uUmVjdCk7CiAgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb25hbCBwaXhlbCBzbmFwcGluZyBp
bnN0ZWFkLgogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHNlbGVjdGlvblJlY3QpOwogfQpA
QCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIC8vIEZJWE1FOiBXaHkg
aXMgdGhpcyBhbHdheXMgTFRSPyBGaXggYnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZsYWdz
IGJlbG93LgogICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCB7IExheW91dFVuaXQoeCgpICsg
cGFpbnRPZmZzZXQueCgpKSwgTGF5b3V0VW5pdCh5KCkgKyBwYWludE9mZnNldC55KCkgKyByb290
Qm94LnNlbGVjdGlvblRvcCgpKSwgMF9sdSwgcm9vdEJveC5zZWxlY3Rpb25IZWlnaHQoKSB9Owot
ICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV9zdHIsIHN0
eWxlLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKTsKKyAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJs
b2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fc3RyLCBzdHlsZSwgQWxsb3dSaWdodEV4cGFuc2lvbik7
CiAgICAgZm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChydW4sIHNlbGVjdGlvblJlY3Qp
OwogICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5n
RGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2Fs
ZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVC
b3guaAppbmRleCA1OWExMWQ2YTQ4YTgzMzhkN2UwYmE1ZTY0NDE3MjliMWY0Nzk5ZWI0Li5iZWNk
ZmNlNzZjYjNkZDcyMzAwN2NmMzk2M2YwOGE4YjJkYmMzMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUJveC5oCkBAIC0yODEsMTAgKzI4MSwxMCBAQCBwdWJsaWM6CiAgICAgZmxvYXQg
ZXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHBhbnNpb247IH0KIAogICAgIHZvaWQgc2V0
SGFzSHlwaGVuKGJvb2wgaGFzSHlwaGVuKSB7IG1fYml0ZmllbGRzLnNldEhhc0VsbGlwc2lzQm94
T3JIeXBoZW4oaGFzSHlwaGVuKTsgfQotICAgIHZvaWQgc2V0Q2FuSGF2ZUxlYWRpbmdFeHBhbnNp
b24oYm9vbCBjYW5IYXZlTGVhZGluZ0V4cGFuc2lvbikgeyBtX2JpdGZpZWxkcy5zZXRIYXNTZWxl
Y3RlZENoaWxkcmVuT3JDYW5IYXZlTGVhZGluZ0V4cGFuc2lvbihjYW5IYXZlTGVhZGluZ0V4cGFu
c2lvbik7IH0KLSAgICB2b2lkIHNldENhbkhhdmVUcmFpbGluZ0V4cGFuc2lvbihib29sIGNhbkhh
dmVUcmFpbGluZ0V4cGFuc2lvbikgeyBtX2JpdGZpZWxkcy5zZXRDYW5IYXZlVHJhaWxpbmdFeHBh
bnNpb24oY2FuSGF2ZVRyYWlsaW5nRXhwYW5zaW9uKTsgfQotICAgIHZvaWQgc2V0Rm9yY2VUcmFp
bGluZ0V4cGFuc2lvbigpIHsgbV9iaXRmaWVsZHMuc2V0Rm9yY2VUcmFpbGluZ0V4cGFuc2lvbih0
cnVlKTsgfQotICAgIHZvaWQgc2V0Rm9yY2VMZWFkaW5nRXhwYW5zaW9uKCkgeyBtX2JpdGZpZWxk
cy5zZXRGb3JjZUxlYWRpbmdFeHBhbnNpb24odHJ1ZSk7IH0KKyAgICB2b2lkIHNldENhbkhhdmVM
ZWZ0RXhwYW5zaW9uKGJvb2wgY2FuSGF2ZUxlZnRFeHBhbnNpb24pIHsgbV9iaXRmaWVsZHMuc2V0
SGFzU2VsZWN0ZWRDaGlsZHJlbk9yQ2FuSGF2ZUxlZnRFeHBhbnNpb24oY2FuSGF2ZUxlZnRFeHBh
bnNpb24pOyB9CisgICAgdm9pZCBzZXRDYW5IYXZlUmlnaHRFeHBhbnNpb24oYm9vbCBjYW5IYXZl
UmlnaHRFeHBhbnNpb24pIHsgbV9iaXRmaWVsZHMuc2V0Q2FuSGF2ZVJpZ2h0RXhwYW5zaW9uKGNh
bkhhdmVSaWdodEV4cGFuc2lvbik7IH0KKyAgICB2b2lkIHNldEZvcmNlUmlnaHRFeHBhbnNpb24o
KSB7IG1fYml0ZmllbGRzLnNldEZvcmNlUmlnaHRFeHBhbnNpb24odHJ1ZSk7IH0KKyAgICB2b2lk
IHNldEZvcmNlTGVmdEV4cGFuc2lvbigpIHsgbV9iaXRmaWVsZHMuc2V0Rm9yY2VMZWZ0RXhwYW5z
aW9uKHRydWUpOyB9CiAKIHByaXZhdGU6CiAgICAgSW5saW5lQm94KiBtX25leHRPbkxpbmUgeyBu
dWxscHRyIH07IC8vIFRoZSBuZXh0IGVsZW1lbnQgb24gdGhlIHNhbWUgbGluZSBhcyB1cy4KQEAg
LTMxNywxNCArMzE3LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAsIG1faGFzVmlydHVhbExv
Z2ljYWxIZWlnaHQoZmFsc2UpCiAgICAgICAgICAgICAsIG1faXNIb3Jpem9udGFsKGlzSG9yaXpv
bnRhbCkKICAgICAgICAgICAgICwgbV9lbmRzV2l0aEJyZWFrKGZhbHNlKQotICAgICAgICAgICAg
LCBtX2hhc1NlbGVjdGVkQ2hpbGRyZW5PckNhbkhhdmVMZWFkaW5nRXhwYW5zaW9uKGZhbHNlKQot
ICAgICAgICAgICAgLCBtX2NhbkhhdmVUcmFpbGluZ0V4cGFuc2lvbihmYWxzZSkKKyAgICAgICAg
ICAgICwgbV9oYXNTZWxlY3RlZENoaWxkcmVuT3JDYW5IYXZlTGVmdEV4cGFuc2lvbihmYWxzZSkK
KyAgICAgICAgICAgICwgbV9jYW5IYXZlUmlnaHRFeHBhbnNpb24oZmFsc2UpCiAgICAgICAgICAg
ICAsIG1fa25vd25Ub0hhdmVOb092ZXJmbG93KHRydWUpICAKICAgICAgICAgICAgICwgbV9oYXNF
bGxpcHNpc0JveE9ySHlwaGVuKGZhbHNlKQogICAgICAgICAgICAgLCBtX2Rpck92ZXJyaWRlKGZh
bHNlKQogICAgICAgICAgICAgLCBtX2JlaGF2ZXNMaWtlVGV4dChmYWxzZSkKLSAgICAgICAgICAg
ICwgbV9mb3JjZVRyYWlsaW5nRXhwYW5zaW9uKGZhbHNlKQotICAgICAgICAgICAgLCBtX2ZvcmNl
TGVhZGluZ0V4cGFuc2lvbihmYWxzZSkKKyAgICAgICAgICAgICwgbV9mb3JjZVJpZ2h0RXhwYW5z
aW9uKGZhbHNlKQorICAgICAgICAgICAgLCBtX2ZvcmNlTGVmdEV4cGFuc2lvbihmYWxzZSkKICAg
ICAgICAgICAgICwgbV9kZXRlcm1pbmVkSWZOZXh0T25MaW5lRXhpc3RzKGZhbHNlKQogICAgICAg
ICAgICAgLCBtX25leHRPbkxpbmVFeGlzdHMoZmFsc2UpCiAgICAgICAgIHsKQEAgLTM0OSwxNSAr
MzQ5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGZvciBSb290SW5saW5lQm94CiAgICAgICAg
IEFERF9CT09MRUFOX0JJVEZJRUxEKGVuZHNXaXRoQnJlYWssIEVuZHNXaXRoQnJlYWspOyAvLyBX
aGV0aGVyIHRoZSBsaW5lIGVuZHMgd2l0aCBhIDxicj4uCiAgICAgICAgIC8vIHNoYXJlZCBiZXR3
ZWVuIFJvb3RJbmxpbmVCb3ggYW5kIElubGluZVRleHRCb3gKLSAgICAgICAgQUREX0JPT0xFQU5f
QklURklFTEQoaGFzU2VsZWN0ZWRDaGlsZHJlbk9yQ2FuSGF2ZUxlYWRpbmdFeHBhbnNpb24sIEhh
c1NlbGVjdGVkQ2hpbGRyZW5PckNhbkhhdmVMZWFkaW5nRXhwYW5zaW9uKTsKLSAgICAgICAgQURE
X0JPT0xFQU5fQklURklFTEQoY2FuSGF2ZVRyYWlsaW5nRXhwYW5zaW9uLCBDYW5IYXZlVHJhaWxp
bmdFeHBhbnNpb24pOworICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChoYXNTZWxlY3RlZENo
aWxkcmVuT3JDYW5IYXZlTGVmdEV4cGFuc2lvbiwgSGFzU2VsZWN0ZWRDaGlsZHJlbk9yQ2FuSGF2
ZUxlZnRFeHBhbnNpb24pOworICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChjYW5IYXZlUmln
aHRFeHBhbnNpb24sIENhbkhhdmVSaWdodEV4cGFuc2lvbik7CiAgICAgICAgIEFERF9CT09MRUFO
X0JJVEZJRUxEKGtub3duVG9IYXZlTm9PdmVyZmxvdywgS25vd25Ub0hhdmVOb092ZXJmbG93KTsK
ICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaGFzRWxsaXBzaXNCb3hPckh5cGhlbiwgSGFz
RWxsaXBzaXNCb3hPckh5cGhlbik7CiAgICAgICAgIC8vIGZvciBJbmxpbmVUZXh0Qm94CiAgICAg
ICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGRpck92ZXJyaWRlLCBEaXJPdmVycmlkZSk7CiAgICAg
ICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGJlaGF2ZXNMaWtlVGV4dCwgQmVoYXZlc0xpa2VUZXh0
KTsgLy8gV2hldGhlciBvciBub3QgdGhpcyBvYmplY3QgcmVwcmVzZW50cyB0ZXh0IHdpdGggYSBu
b24temVybyBoZWlnaHQuIEluY2x1ZGVzIG5vbi1pbWFnZSBsaXN0IG1hcmtlcnMsIHRleHQgYm94
ZXMsIGJyLgotICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChmb3JjZVRyYWlsaW5nRXhwYW5z
aW9uLCBGb3JjZVRyYWlsaW5nRXhwYW5zaW9uKTsKLSAgICAgICAgQUREX0JPT0xFQU5fQklURklF
TEQoZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBGb3JjZUxlYWRpbmdFeHBhbnNpb24pOworICAgICAg
ICBBRERfQk9PTEVBTl9CSVRGSUVMRChmb3JjZVJpZ2h0RXhwYW5zaW9uLCBGb3JjZVJpZ2h0RXhw
YW5zaW9uKTsKKyAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoZm9yY2VMZWZ0RXhwYW5zaW9u
LCBGb3JjZUxlZnRFeHBhbnNpb24pOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgbXV0YWJsZSB1
bnNpZ25lZCBtX2RldGVybWluZWRJZk5leHRPbkxpbmVFeGlzdHMgOiAxOwpAQCAtMzk4LDE2ICsz
OTgsMTYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgZW5kc1dpdGhCcmVhaygpIGNvbnN0IHsgcmV0
dXJuIG1fYml0ZmllbGRzLmVuZHNXaXRoQnJlYWsoKTsgfQogICAgIHZvaWQgc2V0RW5kc1dpdGhC
cmVhayhib29sIGVuZHNXaXRoQnJlYWspIHsgbV9iaXRmaWVsZHMuc2V0RW5kc1dpdGhCcmVhayhl
bmRzV2l0aEJyZWFrKTsgfQogICAgIGJvb2wgaGFzRWxsaXBzaXNCb3goKSBjb25zdCB7IHJldHVy
biBtX2JpdGZpZWxkcy5oYXNFbGxpcHNpc0JveE9ySHlwaGVuKCk7IH0KLSAgICBib29sIGhhc1Nl
bGVjdGVkQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNTZWxlY3RlZENo
aWxkcmVuT3JDYW5IYXZlTGVhZGluZ0V4cGFuc2lvbigpOyB9Ci0gICAgdm9pZCBzZXRIYXNTZWxl
Y3RlZENoaWxkcmVuKGJvb2wgaGFzU2VsZWN0ZWRDaGlsZHJlbikgeyBtX2JpdGZpZWxkcy5zZXRI
YXNTZWxlY3RlZENoaWxkcmVuT3JDYW5IYXZlTGVhZGluZ0V4cGFuc2lvbihoYXNTZWxlY3RlZENo
aWxkcmVuKTsgfQorICAgIGJvb2wgaGFzU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJu
IG1fYml0ZmllbGRzLmhhc1NlbGVjdGVkQ2hpbGRyZW5PckNhbkhhdmVMZWZ0RXhwYW5zaW9uKCk7
IH0KKyAgICB2b2lkIHNldEhhc1NlbGVjdGVkQ2hpbGRyZW4oYm9vbCBoYXNTZWxlY3RlZENoaWxk
cmVuKSB7IG1fYml0ZmllbGRzLnNldEhhc1NlbGVjdGVkQ2hpbGRyZW5PckNhbkhhdmVMZWZ0RXhw
YW5zaW9uKGhhc1NlbGVjdGVkQ2hpbGRyZW4pOyB9CiAgICAgdm9pZCBzZXRIYXNFbGxpcHNpc0Jv
eChib29sIGhhc0VsbGlwc2lzQm94KSB7IG1fYml0ZmllbGRzLnNldEhhc0VsbGlwc2lzQm94T3JI
eXBoZW4oaGFzRWxsaXBzaXNCb3gpOyB9CiAKICAgICAvLyBGb3IgSW5saW5lVGV4dEJveAogICAg
IGJvb2wgaGFzSHlwaGVuKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaGFzRWxsaXBzaXNC
b3hPckh5cGhlbigpOyB9Ci0gICAgYm9vbCBjYW5IYXZlTGVhZGluZ0V4cGFuc2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1NlbGVjdGVkQ2hpbGRyZW5PckNhbkhhdmVMZWFkaW5n
RXhwYW5zaW9uKCk7IH0KLSAgICBib29sIGNhbkhhdmVUcmFpbGluZ0V4cGFuc2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fYml0ZmllbGRzLmNhbkhhdmVUcmFpbGluZ0V4cGFuc2lvbigpOyB9Ci0gICAg
Ym9vbCBmb3JjZVRyYWlsaW5nRXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMu
Zm9yY2VUcmFpbGluZ0V4cGFuc2lvbigpOyB9Ci0gICAgYm9vbCBmb3JjZUxlYWRpbmdFeHBhbnNp
b24oKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5mb3JjZUxlYWRpbmdFeHBhbnNpb24oKTsg
fQorICAgIGJvb2wgY2FuSGF2ZUxlZnRFeHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2JpdGZp
ZWxkcy5oYXNTZWxlY3RlZENoaWxkcmVuT3JDYW5IYXZlTGVmdEV4cGFuc2lvbigpOyB9CisgICAg
Ym9vbCBjYW5IYXZlUmlnaHRFeHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5j
YW5IYXZlUmlnaHRFeHBhbnNpb24oKTsgfQorICAgIGJvb2wgZm9yY2VSaWdodEV4cGFuc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmZvcmNlUmlnaHRFeHBhbnNpb24oKTsgfQorICAg
IGJvb2wgZm9yY2VMZWZ0RXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuZm9y
Y2VMZWZ0RXhwYW5zaW9uKCk7IH0KICAgICAKICAgICAvLyBGb3IgSW5saW5lRmxvd0JveCBhbmQg
SW5saW5lVGV4dEJveAogICAgIGJvb2wgZXh0cmFjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRm
aWVsZHMuZXh0cmFjdGVkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcAppbmRleCBkOTYyNmZiMTNlZDc1M2U0MjE2Y2M2MTIzNzAyYjU1OTEwZDUyMjZhLi4x
MjY3ZjAxZmQ1MTk3YTUyOTBmNjI0YTIzMWJlYmUwNzZkNjQ0YjA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0xNDQwLDIzICsxNDQwLDIzIEBAIGlu
bGluZSBjb25zdCBSZW5kZXJDb21iaW5lVGV4dCogSW5saW5lVGV4dEJveDo6Y29tYmluZWRUZXh0
KCkgY29uc3QKIAogRXhwYW5zaW9uQmVoYXZpb3IgSW5saW5lVGV4dEJveDo6ZXhwYW5zaW9uQmVo
YXZpb3IoKSBjb25zdAogewotICAgIEV4cGFuc2lvbkJlaGF2aW9yIGxlYWRpbmdCZWhhdmlvcjsK
LSAgICBpZiAoZm9yY2VMZWFkaW5nRXhwYW5zaW9uKCkpCi0gICAgICAgIGxlYWRpbmdCZWhhdmlv
ciA9IEZvcmNlTGVhZGluZ0V4cGFuc2lvbjsKLSAgICBlbHNlIGlmIChjYW5IYXZlTGVhZGluZ0V4
cGFuc2lvbigpKQotICAgICAgICBsZWFkaW5nQmVoYXZpb3IgPSBBbGxvd0xlYWRpbmdFeHBhbnNp
b247CisgICAgRXhwYW5zaW9uQmVoYXZpb3IgbGVmdEJlaGF2aW9yOworICAgIGlmIChmb3JjZUxl
ZnRFeHBhbnNpb24oKSkKKyAgICAgICAgbGVmdEJlaGF2aW9yID0gRm9yY2VMZWZ0RXhwYW5zaW9u
OworICAgIGVsc2UgaWYgKGNhbkhhdmVMZWZ0RXhwYW5zaW9uKCkpCisgICAgICAgIGxlZnRCZWhh
dmlvciA9IEFsbG93TGVmdEV4cGFuc2lvbjsKICAgICBlbHNlCi0gICAgICAgIGxlYWRpbmdCZWhh
dmlvciA9IEZvcmJpZExlYWRpbmdFeHBhbnNpb247CisgICAgICAgIGxlZnRCZWhhdmlvciA9IEZv
cmJpZExlZnRFeHBhbnNpb247CiAKLSAgICBFeHBhbnNpb25CZWhhdmlvciB0cmFpbGluZ0JlaGF2
aW9yOwotICAgIGlmIChmb3JjZVRyYWlsaW5nRXhwYW5zaW9uKCkpCi0gICAgICAgIHRyYWlsaW5n
QmVoYXZpb3IgPSBGb3JjZVRyYWlsaW5nRXhwYW5zaW9uOworICAgIEV4cGFuc2lvbkJlaGF2aW9y
IHJpZ2h0QmVoYXZpb3I7CisgICAgaWYgKGZvcmNlUmlnaHRFeHBhbnNpb24oKSkKKyAgICAgICAg
cmlnaHRCZWhhdmlvciA9IEZvcmNlUmlnaHRFeHBhbnNpb247CiAgICAgZWxzZSBpZiAoZXhwYW5z
aW9uKCkgJiYgbmV4dExlYWZPbkxpbmUoKSAmJiAhbmV4dExlYWZPbkxpbmUoKS0+aXNMaW5lQnJl
YWsoKSkKLSAgICAgICAgdHJhaWxpbmdCZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb247
CisgICAgICAgIHJpZ2h0QmVoYXZpb3IgPSBBbGxvd1JpZ2h0RXhwYW5zaW9uOwogICAgIGVsc2UK
LSAgICAgICAgdHJhaWxpbmdCZWhhdmlvciA9IEZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uOworICAg
ICAgICByaWdodEJlaGF2aW9yID0gRm9yYmlkUmlnaHRFeHBhbnNpb247CiAKLSAgICByZXR1cm4g
bGVhZGluZ0JlaGF2aW9yIHwgdHJhaWxpbmdCZWhhdmlvcjsKKyAgICByZXR1cm4gbGVmdEJlaGF2
aW9yIHwgcmlnaHRCZWhhdmlvcjsKIH0KIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCmluZGV4IDg3ODRkODVhZWJiNGFh
ZDI5N2U3OTVjNmI0Y2M1NzVmYWE2YzE4NmIuLjg2N2NmZDQxNjU5OWQ3MjNkMjBkOTQ3MjQyOGY1
MGE2OTQ0YTBiYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaApA
QCAtODAsMTQgKzgwLDE0IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIElubGluZUJveDo6aGFzSHlw
aGVuOwogICAgIHVzaW5nIElubGluZUJveDo6c2V0SGFzSHlwaGVuOwotICAgIHVzaW5nIElubGlu
ZUJveDo6Y2FuSGF2ZUxlYWRpbmdFeHBhbnNpb247Ci0gICAgdXNpbmcgSW5saW5lQm94OjpzZXRD
YW5IYXZlTGVhZGluZ0V4cGFuc2lvbjsKLSAgICB1c2luZyBJbmxpbmVCb3g6OmNhbkhhdmVUcmFp
bGluZ0V4cGFuc2lvbjsKLSAgICB1c2luZyBJbmxpbmVCb3g6OnNldENhbkhhdmVUcmFpbGluZ0V4
cGFuc2lvbjsKLSAgICB1c2luZyBJbmxpbmVCb3g6OmZvcmNlVHJhaWxpbmdFeHBhbnNpb247Ci0g
ICAgdXNpbmcgSW5saW5lQm94OjpzZXRGb3JjZVRyYWlsaW5nRXhwYW5zaW9uOwotICAgIHVzaW5n
IElubGluZUJveDo6Zm9yY2VMZWFkaW5nRXhwYW5zaW9uOwotICAgIHVzaW5nIElubGluZUJveDo6
c2V0Rm9yY2VMZWFkaW5nRXhwYW5zaW9uOworICAgIHVzaW5nIElubGluZUJveDo6Y2FuSGF2ZUxl
ZnRFeHBhbnNpb247CisgICAgdXNpbmcgSW5saW5lQm94OjpzZXRDYW5IYXZlTGVmdEV4cGFuc2lv
bjsKKyAgICB1c2luZyBJbmxpbmVCb3g6OmNhbkhhdmVSaWdodEV4cGFuc2lvbjsKKyAgICB1c2lu
ZyBJbmxpbmVCb3g6OnNldENhbkhhdmVSaWdodEV4cGFuc2lvbjsKKyAgICB1c2luZyBJbmxpbmVC
b3g6OmZvcmNlUmlnaHRFeHBhbnNpb247CisgICAgdXNpbmcgSW5saW5lQm94OjpzZXRGb3JjZVJp
Z2h0RXhwYW5zaW9uOworICAgIHVzaW5nIElubGluZUJveDo6Zm9yY2VMZWZ0RXhwYW5zaW9uOwor
ICAgIHVzaW5nIElubGluZUJveDo6c2V0Rm9yY2VMZWZ0RXhwYW5zaW9uOwogCiAgICAgc3RhdGlj
IGlubGluZSBib29sIGNvbXBhcmVCeVN0YXJ0KGNvbnN0IElubGluZVRleHRCb3gqIGZpcnN0LCBj
b25zdCBJbmxpbmVUZXh0Qm94KiBzZWNvbmQpIHsgcmV0dXJuIGZpcnN0LT5zdGFydCgpIDwgc2Vj
b25kLT5zdGFydCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCmluZGV4IDFjZDMyYjNlYjBiMzFiZmQzNmY4NzgyYTQz
NGFmNjI0MzJkZjdjMTYuLjA4ZWMwMGY3NDk2NWQ4MWJmNzEzMTVkZDMzZTZmOGUyYWIzZWExNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRy
b2w6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2luCiAg
ICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpGb3JlZ3JvdW5kKSB7CiAgICAg
ICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheWVkRmlsZW5hbWUgPSBmaWxlVGV4dFZhbHVlKCk7CiAg
ICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwot
ICAgICAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKGRpc3BsYXllZEZpbGVu
YW1lLCBzdHlsZSgpLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBSZXNwZWN0RGlyZWN0aW9uIHwg
UmVzcGVjdERpcmVjdGlvbk92ZXJyaWRlKTsKKyAgICAgICAgVGV4dFJ1biB0ZXh0UnVuID0gY29u
c3RydWN0VGV4dFJ1bihkaXNwbGF5ZWRGaWxlbmFtZSwgc3R5bGUoKSwgQWxsb3dSaWdodEV4cGFu
c2lvbiwgUmVzcGVjdERpcmVjdGlvbiB8IFJlc3BlY3REaXJlY3Rpb25PdmVycmlkZSk7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpbnQgaWNvbkhlaWdodCA9IG5vZGVIZWln
aHQodXBsb2FkQnV0dG9uKCkpOwpAQCAtMjAzLDEwICsyMDMsMTAgQEAgdm9pZCBSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYg
bWluTG9naWMKICAgICBjb25zdCBTdHJpbmcgY2hhcmFjdGVyQXNTdHJpbmcgPSBTdHJpbmcoJmNo
YXJhY3RlciwgMSk7CiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRD
YXNjYWRlKCk7CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgbmVlZCBmb3IgdGhpcyBjb25zdF9j
YXN0IGJ5IG1ha2luZyBjb25zdHJ1Y3RUZXh0UnVuIHRha2UgYSBjb25zdCBSZW5kZXJPYmplY3Qq
LgotICAgIGZsb2F0IG1pbkRlZmF1bHRMYWJlbFdpZHRoID0gZGVmYXVsdFdpZHRoTnVtQ2hhcnMg
KiBmb250LndpZHRoKGNvbnN0cnVjdFRleHRSdW4oY2hhcmFjdGVyQXNTdHJpbmcsIHN0eWxlKCks
IEFsbG93VHJhaWxpbmdFeHBhbnNpb24pKTsKKyAgICBmbG9hdCBtaW5EZWZhdWx0TGFiZWxXaWR0
aCA9IGRlZmF1bHRXaWR0aE51bUNoYXJzICogZm9udC53aWR0aChjb25zdHJ1Y3RUZXh0UnVuKGNo
YXJhY3RlckFzU3RyaW5nLCBzdHlsZSgpLCBBbGxvd1JpZ2h0RXhwYW5zaW9uKSk7CiAKICAgICBj
b25zdCBTdHJpbmcgbGFiZWwgPSB0aGVtZSgpLmZpbGVMaXN0RGVmYXVsdExhYmVsKGlucHV0RWxl
bWVudCgpLm11bHRpcGxlKCkpOwotICAgIGZsb2F0IGRlZmF1bHRMYWJlbFdpZHRoID0gZm9udC53
aWR0aChjb25zdHJ1Y3RUZXh0UnVuKGxhYmVsLCBzdHlsZSgpLCBBbGxvd1RyYWlsaW5nRXhwYW5z
aW9uKSk7CisgICAgZmxvYXQgZGVmYXVsdExhYmVsV2lkdGggPSBmb250LndpZHRoKGNvbnN0cnVj
dFRleHRSdW4obGFiZWwsIHN0eWxlKCksIEFsbG93UmlnaHRFeHBhbnNpb24pKTsKICAgICBpZiAo
SFRNTElucHV0RWxlbWVudCogYnV0dG9uID0gdXBsb2FkQnV0dG9uKCkpCiAgICAgICAgIGlmIChS
ZW5kZXJPYmplY3QqIGJ1dHRvblJlbmRlcmVyID0gYnV0dG9uLT5yZW5kZXJlcigpKQogICAgICAg
ICAgICAgZGVmYXVsdExhYmVsV2lkdGggKz0gYnV0dG9uUmVuZGVyZXItPm1heFByZWZlcnJlZExv
Z2ljYWxXaWR0aCgpICsgYWZ0ZXJCdXR0b25TcGFjaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDA0NjZjYmE5MDU5MjQ1MzI5ODM3MzE3M2FlZjIz
ZTE5ODAxZmRhZjEuLjdlOWYzODMyZDM2ZWZkMTkxM2NmNzM5NzAxMWViYjNkMjE5NDhlMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTE0OCw3ICsx
NDgsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAg
ICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIHRleHQgPSBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgdGV4dCwgJyAnKTsKLSAg
ICAgICAgICAgIGF1dG8gdGV4dFJ1biA9IGNvbnN0cnVjdFRleHRSdW4odGV4dCwgc3R5bGUoKSwg
QWxsb3dUcmFpbGluZ0V4cGFuc2lvbik7CisgICAgICAgICAgICBhdXRvIHRleHRSdW4gPSBjb25z
dHJ1Y3RUZXh0UnVuKHRleHQsIHN0eWxlKCksIEFsbG93UmlnaHRFeHBhbnNpb24pOwogICAgICAg
ICAgICAgd2lkdGggPSBzdGQ6Om1heCh3aWR0aCwgc2VsZWN0Rm9udCgpLndpZHRoKHRleHRSdW4p
KTsKICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTogSXMgY2VpbGluZyByaWdodCBoZXJlLCBv
ciBzaG91bGQgd2UgYmUgZG9pbmcgc29tZSBraW5kIG9mIHJvdW5kaW5nIGluc3RlYWQ/CkBAIC00
MzUsNyArNDM1LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKIAogICAgIHBhaW50SW5mby5j
b250ZXh0KCkuc2V0RmlsbENvbG9yKHRleHRDb2xvcik7CiAKLSAgICBUZXh0UnVuIHRleHRSdW4o
aXRlbVRleHQsIDAsIDAsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24sIGl0ZW1TdHlsZS5kaXJlY3Rp
b24oKSwgaXNPdmVycmlkZShpdGVtU3R5bGUudW5pY29kZUJpZGkoKSksIHRydWUpOworICAgIFRl
eHRSdW4gdGV4dFJ1bihpdGVtVGV4dCwgMCwgMCwgQWxsb3dSaWdodEV4cGFuc2lvbiwgaXRlbVN0
eWxlLmRpcmVjdGlvbigpLCBpc092ZXJyaWRlKGl0ZW1TdHlsZS51bmljb2RlQmlkaSgpKSwgdHJ1
ZSk7CiAgICAgRm9udENhc2NhZGUgaXRlbUZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7CiAg
ICAgTGF5b3V0UmVjdCByID0gaXRlbUJvdW5kaW5nQm94UmVjdChwYWludE9mZnNldCwgbGlzdElu
ZGV4KTsKICAgICByLm1vdmUoaXRlbU9mZnNldEZvckFsaWdubWVudCh0ZXh0UnVuLCAmaXRlbVN0
eWxlLCBpdGVtRm9udCwgcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5jcHAKaW5kZXggYTI5MDRjNTdiZDc0MzZjYTJmY2EwYjlkZTBkNjhlZmJiNjRi
MjlmNC4uN2FjNmUwMjNhOGNmYTFlY2U2ZjAwZjIzOTA3NDNhNjIyNWYzMjI5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCkBAIC0xNDIsNyAr
MTQyLDcgQEAgZmxvYXQgUmVuZGVyVGV4dENvbnRyb2w6OmdldEF2ZXJhZ2VDaGFyV2lkdGgoKQog
ICAgIGNvbnN0IFVDaGFyIGNoID0gJzAnOwogICAgIGNvbnN0IFN0cmluZyBzdHIgPSBTdHJpbmco
JmNoLCAxKTsKICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2Nh
ZGUoKTsKLSAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHN0ciwgc3R5bGUo
KSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbik7CisgICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3Ry
dWN0VGV4dFJ1bihzdHIsIHN0eWxlKCksIEFsbG93UmlnaHRFeHBhbnNpb24pOwogICAgIHJldHVy
biBmb250LndpZHRoKHRleHRSdW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXggNjk4Y2VlNWJhMmQ3OGI5MjEwOWIyZTVkOTBiZDVk
ZWJlOTc0NDEyMy4uNmYxOWM4NWIwOTMzMmMwMmMzNGQ3YTVmNzIxOTY4MjM3ZWEwYWQwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtODc4
LDggKzg3OCw4IEBAIHN0YXRpYyBib29sIGNyZWF0ZUxpbmVSdW5zKExpbmVTdGF0ZSYgbGluZSwg
Y29uc3QgTGluZVN0YXRlJiBwcmV2aW91c0xpbmUsIExheW91CiBzdGF0aWMgRXhwYW5zaW9uQmVo
YXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IoYm9vbCBpc0FmdGVyRXhwYW5zaW9uLCBib29sIGxhc3RS
dW5PbkxpbmUpCiB7CiAgICAgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3I7Ci0g
ICAgZXhwYW5zaW9uQmVoYXZpb3IgPSBpc0FmdGVyRXhwYW5zaW9uID8gRm9yYmlkTGVhZGluZ0V4
cGFuc2lvbiA6IEFsbG93TGVhZGluZ0V4cGFuc2lvbjsKLSAgICBleHBhbnNpb25CZWhhdmlvciB8
PSBsYXN0UnVuT25MaW5lID8gRm9yYmlkVHJhaWxpbmdFeHBhbnNpb24gOiBBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uOworICAgIGV4cGFuc2lvbkJlaGF2aW9yID0gaXNBZnRlckV4cGFuc2lvbiA/IEZv
cmJpZExlZnRFeHBhbnNpb24gOiBBbGxvd0xlZnRFeHBhbnNpb247CisgICAgZXhwYW5zaW9uQmVo
YXZpb3IgfD0gbGFzdFJ1bk9uTGluZSA/IEZvcmJpZFJpZ2h0RXhwYW5zaW9uIDogQWxsb3dSaWdo
dEV4cGFuc2lvbjsKICAgICByZXR1cm4gZXhwYW5zaW9uQmVoYXZpb3I7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oCmluZGV4IDRkOWYyYmRmNTMyMWU0
YWJjMWIxOGE5YWZkZDdkMjRjYmMxYTg4YTkuLmVjNGE3YTBmYTRiOTBmMjU2ODMzNGI4NTliZDhl
MTcwODQzYzA2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXQuaApAQCAtNzAsNyArNzAsNyBAQCBzdHJ1Y3QgUnVuIHsKICAgICBmbG9hdCBsb2dpY2FsUmln
aHQ7CiAgICAgLy8gVE9ETzogTW92ZSB0aGVzZSBvcHRpb25hbCBpdGVtcyBvdXQgb2YgU2ltcGxl
TGluZUxheW91dDo6UnVuIHRvIGEgc3VwcGxlbWVudGFyeSBzdHJ1Y3R1cmUuCiAgICAgZmxvYXQg
ZXhwYW5zaW9uIHsgMCB9OwotICAgIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9y
IHsgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiB8IEZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uIH07Cisg
ICAgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgeyBGb3JiaWRMZWZ0RXhwYW5z
aW9uIHwgRm9yYmlkUmlnaHRFeHBhbnNpb24gfTsKIH07CiAKIHN0cnVjdCBTaW1wbGVMaW5lU3Ry
dXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwCmluZGV4IDFlMmE4ODU3ZTkzOTNmZmQ0YWQyNDkyZDY1Y2EzMzY3OWM2
MGJhMjYuLjE2Y2MwYjZkMzgyNDc1NTM3NmFiY2NkYjMzNTY4MmIzNjEyMDU2YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHAKQEAgLTI3NywxMiArMjc3LDEyIEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbmxpbmVU
ZXh0Qm94KFJlbmRlckJsb2NrRmxvdyYgZmxvdywgSW5saW5lVGV4dEJveCYgaW5saW5lCiAgICAg
aW5saW5lVGV4dEJveC5zZXRFeHBhbnNpb25XaXRob3V0R3Jvd2luZyhydW4uZXhwYW5zaW9uKCkp
OwogCiAgICAgYXV0byBleHBhbnNpb25CZWhhdmlvciA9IHJ1bi5leHBhbnNpb25CZWhhdmlvcigp
OwotICAgIGlubGluZVRleHRCb3guc2V0Q2FuSGF2ZUxlYWRpbmdFeHBhbnNpb24oZXhwYW5zaW9u
QmVoYXZpb3IgJiBBbGxvd0xlYWRpbmdFeHBhbnNpb24pOwotICAgIGlubGluZVRleHRCb3guc2V0
Q2FuSGF2ZVRyYWlsaW5nRXhwYW5zaW9uKGV4cGFuc2lvbkJlaGF2aW9yICYgQWxsb3dUcmFpbGlu
Z0V4cGFuc2lvbik7Ci0gICAgaWYgKGV4cGFuc2lvbkJlaGF2aW9yICYgRm9yY2VUcmFpbGluZ0V4
cGFuc2lvbikKLSAgICAgICAgaW5saW5lVGV4dEJveC5zZXRGb3JjZVRyYWlsaW5nRXhwYW5zaW9u
KCk7Ci0gICAgaWYgKGV4cGFuc2lvbkJlaGF2aW9yICYgRm9yY2VMZWFkaW5nRXhwYW5zaW9uKQot
ICAgICAgICBpbmxpbmVUZXh0Qm94LnNldEZvcmNlTGVhZGluZ0V4cGFuc2lvbigpOworICAgIGlu
bGluZVRleHRCb3guc2V0Q2FuSGF2ZUxlZnRFeHBhbnNpb24oZXhwYW5zaW9uQmVoYXZpb3IgJiBB
bGxvd0xlZnRFeHBhbnNpb24pOworICAgIGlubGluZVRleHRCb3guc2V0Q2FuSGF2ZVJpZ2h0RXhw
YW5zaW9uKGV4cGFuc2lvbkJlaGF2aW9yICYgQWxsb3dSaWdodEV4cGFuc2lvbik7CisgICAgaWYg
KGV4cGFuc2lvbkJlaGF2aW9yICYgRm9yY2VSaWdodEV4cGFuc2lvbikKKyAgICAgICAgaW5saW5l
VGV4dEJveC5zZXRGb3JjZVJpZ2h0RXhwYW5zaW9uKCk7CisgICAgaWYgKGV4cGFuc2lvbkJlaGF2
aW9yICYgRm9yY2VMZWZ0RXhwYW5zaW9uKQorICAgICAgICBpbmxpbmVUZXh0Qm94LnNldEZvcmNl
TGVmdEV4cGFuc2lvbigpOwogfQogCiB2b2lkIGdlbmVyYXRlTGluZUJveFRyZWUoUmVuZGVyQmxv
Y2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQmIGxheW91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCmluZGV4IGRkMTg4YWUxMWIzN2Q3
OTdiMTJkODFkMjk2MzY5ZjdmMTk1NzZlYmEuLjFmZGU5ZmQ0MjE2ZjczMzRkNmNmZjNiMTY2ODFh
MDMwZWNkYmYwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJ
bmxpbmVUZXh0Qm94LmNwcApAQCAtMzkxLDcgKzM5MSw3IEBAIFRleHRSdW4gU1ZHSW5saW5lVGV4
dEJveDo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFNW
R1RlCiAgICAgVGV4dFJ1biBydW4oU3RyaW5nVmlldyhyZW5kZXJlcigpLnRleHQoKSkuc3Vic3Ry
aW5nKGZyYWdtZW50LmNoYXJhY3Rlck9mZnNldCwgZnJhZ21lbnQubGVuZ3RoKQogICAgICAgICAg
ICAgICAgICwgMCAvKiB4UG9zLCBvbmx5IHJlbGV2YW50IHdpdGggYWxsb3dUYWJzPXRydWUgKi8K
ICAgICAgICAgICAgICAgICAsIDAgLyogcGFkZGluZywgb25seSByZWxldmFudCBmb3IganVzdGlm
aWVkIHRleHQsIG5vdCByZWxldmFudCBmb3IgU1ZHICovCi0gICAgICAgICAgICAgICAgLCBBbGxv
d1RyYWlsaW5nRXhwYW5zaW9uCisgICAgICAgICAgICAgICAgLCBBbGxvd1JpZ2h0RXhwYW5zaW9u
CiAgICAgICAgICAgICAgICAgLCBkaXJlY3Rpb24oKQogICAgICAgICAgICAgICAgICwgZGlyT3Zl
cnJpZGUoKSB8fCBzdHlsZS5ydGxPcmRlcmluZygpID09IE9yZGVyOjpWaXN1YWwgLyogZGlyZWN0
aW9uYWxPdmVycmlkZSAqLyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TWV0cmljcy5jcHAKaW5kZXggMDY0YjRkYTEyNzJlZmE4MzRlYjIzNDVmNzljYmQ0MmMy
Zjg4NDUzYi4uMzkwOTFlZjhhZjNkOWIzMDQ4ZGM3YjJiMmNmNDgyMTE5OTY1ZmM1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAKQEAgLTY2
LDcgKzY2LDcgQEAgVGV4dFJ1biBTVkdUZXh0TWV0cmljczo6Y29uc3RydWN0VGV4dFJ1bihSZW5k
ZXJTVkdJbmxpbmVUZXh0JiB0ZXh0LCB1bnNpZ25lZCBwb3MKICAgICBUZXh0UnVuIHJ1bihTdHJp
bmdWaWV3KHRleHQudGV4dCgpKS5zdWJzdHJpbmcocG9zaXRpb24sIGxlbmd0aCkKICAgICAgICAg
ICAgICAgICAsIDAgLyogeFBvcywgb25seSByZWxldmFudCB3aXRoIGFsbG93VGFicz10cnVlICov
CiAgICAgICAgICAgICAgICAgLCAwIC8qIHBhZGRpbmcsIG9ubHkgcmVsZXZhbnQgZm9yIGp1c3Rp
ZmllZCB0ZXh0LCBub3QgcmVsZXZhbnQgZm9yIFNWRyAqLwotICAgICAgICAgICAgICAgICwgQWxs
b3dUcmFpbGluZ0V4cGFuc2lvbgorICAgICAgICAgICAgICAgICwgQWxsb3dSaWdodEV4cGFuc2lv
bgogICAgICAgICAgICAgICAgICwgc3R5bGUuZGlyZWN0aW9uKCkKICAgICAgICAgICAgICAgICAs
IGlzT3ZlcnJpZGUoc3R5bGUudW5pY29kZUJpZGkoKSkgLyogZGlyZWN0aW9uYWxPdmVycmlkZSAq
Lyk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21w
bGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggMDg1MDlmZDdjYzY2ZmQyMmMxMWQ3ODdh
MWUzMzdjMTA3YjMyNTgzZi4uNTU5MzBjNjk0OGFjY2RiY2U5ODU1MTIxNjI1NTBjMGQ3NmQ5YThh
OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCBURVNUX0YoQ29t
cGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJblJUTE5vT3JpZ2lucykKICAg
ICBFWFBFQ1RfTkVBUihnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoMykuaGVpZ2h0KCksIDEyLjM2ODg5
NjkyNTg1OSwgMC4wMDAxKTsKIH0KIAotVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3Qs
IExlYWRpbmdFeHBhbnNpb24pCitURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgTGVm
dEV4cGFuc2lvbikKIHsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwog
ICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiKTsKQEAgLTI3MSw3ICsyNzEsNyBA
QCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgTGVhZGluZ0V4cGFuc2lvbikKIAog
ICAgIFVDaGFyIGNoYXJhY3RlcnNbXSA9IHsgJ2EnIH07CiAgICAgc2l6ZV90IGNoYXJhY3RlcnNM
ZW5ndGggPSBXVEZfQVJSQVlfTEVOR1RIKGNoYXJhY3RlcnMpOwotICAgIFRleHRSdW4gdGV4dFJ1
bihTdHJpbmdWaWV3KGNoYXJhY3RlcnMsIGNoYXJhY3RlcnNMZW5ndGgpLCAwLCAxMDAsIEZvcmNl
TGVhZGluZ0V4cGFuc2lvbik7CisgICAgVGV4dFJ1biB0ZXh0UnVuKFN0cmluZ1ZpZXcoY2hhcmFj
dGVycywgY2hhcmFjdGVyc0xlbmd0aCksIDAsIDEwMCwgRm9yY2VMZWZ0RXhwYW5zaW9uKTsKICAg
ICBhdXRvIHJ1biA9IENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46OmNyZWF0
ZSh7IEZsb2F0U2l6ZSgyNCwgMCkgfSwgeyB9LCB7IDE2IH0sIHsgMCB9LCBGbG9hdFNpemUoKSwg
Zm9udC5wcmltYXJ5Rm9udCgpLCBjaGFyYWN0ZXJzLCAwLCBjaGFyYWN0ZXJzTGVuZ3RoLCAwLCAx
LCB0cnVlKTsKICAgICBWZWN0b3I8UmVmPENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRl
eHRSdW4+PiBydW5zOwogICAgIHJ1bnMuYXBwZW5kKFdURk1vdmUocnVuKSk7Cg==
</data>
<flag name="review"
          id="421494"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406077</attachid>
            <date>2020-08-05 23:04:44 -0700</date>
            <delta_ts>2020-08-06 11:03:06 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-215211-20200805230444.patch</filename>
            <type>text/plain</type>
            <size>57587</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGY2NjQ5MGJiZjJjNDc4
NmVlYzU2N2UxOTYzNGIzYjc4YmMzY2M4NS4uYTAyNGY3ODE4ODJlNTA0YjJhNDBiNDY1ZWM0OWM5
MzJjM2E5NmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDIwLTA4LTA1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIExl
YWRpbmdFeHBhbnNpb24gYW5kIFRyYWlsaW5nRXhwYW5zaW9uIHRvIExlZnRFeHBhbnNpb24gYW5k
IFJpZ2h0RXhwYW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTUyMTEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICAiTGVhZGluZyIgYW5kICJUcmFpbGluZyIgYXJlIHRlcm1zLW9mLWFydCB3aGljaCByZXBy
ZXNlbnQgbG9naWNhbCBvcmRlci4KKyAgICAgICAgSG93ZXZlciwgdGhlIGJlaGF2aW9yIG9mIHRo
ZXNlIGZsYWdzIG9wZXJhdGVzIGluIHZpc3VhbCBvcmRlci4KKyAgICAgICAgSW5zdGVhZCwgd2Ug
c2hvdWxkIHJlbmFtZSB0aGVtIHRvIHRoZWlyIHZpc3VhbCBvcmRlciBhbmFsb2d1ZXM6IGxlZnQg
YW5kIHJpZ2h0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJl
aGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
Om1lYXN1cmVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVp
bGRlcjo6anVzdGlmeVJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRl
cjo6UnVuOjpleHBhbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6
UnVuOjp2aXN1YWxseUNvbGxhcHNlVHJhaWxpbmdXaGl0ZXNwYWNlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhwYW5zaW9uTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250
cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmV4
cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6bGVmdEV4cGFuc2lvbk9wcG9ydHVuaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpyaWdodEV4cGFuc2lvbk9wcG9ydHVuaXR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpsZWFkaW5nRXhwYW5zaW9uT3Bwb3J0dW5pdHkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OnRyYWlsaW5nRXhwYW5zaW9uT3Bwb3J0dW5pdHkp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjpXaWR0aEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4cGFuc2lvbkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFk
dmFuY2VJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhwYW5zaW9uQmVoYXZpb3JGb3JJbmxpbmVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6
OmFwcGx5RXhwYW5zaW9uQmVoYXZpb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0Jv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RWxsaXBzaXNCb3g6OnNlbGVjdGlvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5l
Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnNldENhbkhhdmVMZWZ0RXhwYW5z
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6c2V0Q2FuSGF2ZVJpZ2h0RXhwYW5z
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6c2V0Rm9yY2VSaWdodEV4cGFuc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnNldEZvcmNlTGVmdEV4cGFuc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OklubGluZUJveEJpdGZpZWxkczo6SW5saW5l
Qm94Qml0ZmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6aGFzU2VsZWN0ZWRD
aGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnNldEhhc1NlbGVj
dGVkQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpjYW5IYXZlTGVmdEV4
cGFuc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OmNhbkhhdmVSaWdo
dEV4cGFuc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OmZvcmNlUmln
aHRFeHBhbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94Ojpmb3JjZUxl
ZnRFeHBhbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpzZXRDYW5I
YXZlTGVhZGluZ0V4cGFuc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVC
b3g6OnNldENhbkhhdmVUcmFpbGluZ0V4cGFuc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVCb3g6OnNldEZvcmNlVHJhaWxpbmdFeHBhbnNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpzZXRGb3JjZUxlYWRpbmdFeHBhbnNpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpjYW5IYXZlTGVhZGluZ0V4cGFuc2lv
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OmNhbkhhdmVU
cmFpbGluZ0V4cGFuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVCb3g6OmZvcmNlVHJhaWxpbmdFeHBhbnNpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lQm94Ojpmb3JjZUxlYWRpbmdFeHBhbnNpb24gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZVRleHRCb3g6OmV4cGFuc2lvbkJlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxl
VXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbDo6cGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENv
bnRyb2w6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94
OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmdldEF2ZXJh
Z2VDaGFyV2lkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmV4cGFuc2lvbkJlaGF2aW9yKToK
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OmluaXRpYWxpemVJbmxpbmVUZXh0Qm94KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5s
aW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFJ1biBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0TWV0cmljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0cmlj
czo6Y29uc3RydWN0VGV4dFJ1bik6CisKIDIwMjAtMDgtMDQgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgICJEb3VibGVEb3duIENhc2lubyIgcmVzcGluIGJ1dHRv
biBzdG9wcyB3b3JraW5nIHdpdGggdHJhY2twYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDg3ZGVlZjQ5
OTIxYzViNWZhMWVlYmYyYWY2NTg1N2NlMTRmMmY2OTUuLjg5MTgwMjc5YWYyYjdmNzY1NmJjZGRm
OGVlYzA4MzMzYjY1YzYxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMzg1LDcgKzM4NSw3IEBAIFJl
ZjxUZXh0TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjptZWFzdXJlVGV4dChjb25z
dCBTdHJpbmcmIHRleHQpCiAgICAgYXV0byBkaXJlY3Rpb24gPSB0b1RleHREaXJlY3Rpb24oc3Rh
dGUoKS5kaXJlY3Rpb24sICZjb21wdXRlZFN0eWxlKTsKICAgICBib29sIG92ZXJyaWRlID0gY29t
cHV0ZWRTdHlsZSA/IGlzT3ZlcnJpZGUoY29tcHV0ZWRTdHlsZS0+dW5pY29kZUJpZGkoKSkgOiBm
YWxzZTsKIAotICAgIFRleHRSdW4gdGV4dFJ1bihub3JtYWxpemVkVGV4dCwgMCwgMCwgQWxsb3dU
cmFpbGluZ0V4cGFuc2lvbiwgZGlyZWN0aW9uLCBvdmVycmlkZSwgdHJ1ZSk7CisgICAgVGV4dFJ1
biB0ZXh0UnVuKG5vcm1hbGl6ZWRUZXh0LCAwLCAwLCBBbGxvd1JpZ2h0RXhwYW5zaW9uLCBkaXJl
Y3Rpb24sIG92ZXJyaWRlLCB0cnVlKTsKICAgICBhdXRvJiBmb250ID0gZm9udFByb3h5KCk7CiAg
ICAgYXV0byYgZm9udE1ldHJpY3MgPSBmb250LmZvbnRNZXRyaWNzKCk7CiAKQEAgLTQ5OCw3ICs0
OTgsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChj
b25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgIGF1dG8gZGlyZWN0aW9uID0gdG9U
ZXh0RGlyZWN0aW9uKHN0YXRlKCkuZGlyZWN0aW9uLCAmY29tcHV0ZWRTdHlsZSk7CiAgICAgYm9v
bCBvdmVycmlkZSA9IGNvbXB1dGVkU3R5bGUgPyBpc092ZXJyaWRlKGNvbXB1dGVkU3R5bGUtPnVu
aWNvZGVCaWRpKCkpIDogZmFsc2U7CiAKLSAgICBUZXh0UnVuIHRleHRSdW4obm9ybWFsaXplZFRl
eHQsIDAsIDAsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24sIGRpcmVjdGlvbiwgb3ZlcnJpZGUsIHRy
dWUpOworICAgIFRleHRSdW4gdGV4dFJ1bihub3JtYWxpemVkVGV4dCwgMCwgMCwgQWxsb3dSaWdo
dEV4cGFuc2lvbiwgZGlyZWN0aW9uLCBvdmVycmlkZSwgdHJ1ZSk7CiAgICAgZmxvYXQgZm9udFdp
ZHRoID0gZm9udFByb3h5LndpZHRoKHRleHRSdW4pOwogICAgIGJvb2wgdXNlTWF4V2lkdGggPSBt
YXhXaWR0aCAmJiBtYXhXaWR0aC52YWx1ZSgpIDwgZm9udFdpZHRoOwogICAgIGZsb2F0IHdpZHRo
ID0gdXNlTWF4V2lkdGggPyBtYXhXaWR0aC52YWx1ZSgpIDogZm9udFdpZHRoOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZUJ1aWxkZXIuY3BwCmluZGV4IDAyMzYxNThiY2ExYTI1OWY4YWZkZTcwMzJiNWUwZjg1M2UxZDI5
ODAuLjk2Y2I3Yjg0NDc4YTI0Y2Q5YmE3NGIzYWQ4ZjdjMDgzOGM0YTJiNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVM
aW5lQnVpbGRlci5jcHAKQEAgLTIyOCw4ICsyMjgsOCBAQCB2b2lkIExpbmVCdWlsZGVyOjpqdXN0
aWZ5UnVucyhJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKQogICAgIC8vIE5lZWQgdG8g
Zml4IHVwIHRoZSBsYXN0IHJ1bidzIHRyYWlsaW5nIGV4cGFuc2lvbi4KICAgICBpZiAobGFzdFJ1
bldpdGhDb250ZW50ICYmIGxhc3RSdW5XaXRoQ29udGVudC0+aGFzRXhwYW5zaW9uT3Bwb3J0dW5p
dHkoKSkgewogICAgICAgICAvLyBUdXJuIG9mZiB0aGUgdHJhaWxpbmcgYml0cyBmaXJzdCBhbmQg
YWRkIHRoZSBmb3JiaWQgdHJhaWxpbmcgZXhwYW5zaW9uLgotICAgICAgICBhdXRvIGxlYWRpbmdF
eHBhbnNpb24gPSBsYXN0UnVuV2l0aENvbnRlbnQtPmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWFk
aW5nRXhwYW5zaW9uTWFzazsKLSAgICAgICAgbGFzdFJ1bldpdGhDb250ZW50LT5zZXRFeHBhbnNp
b25CZWhhdmlvcihsZWFkaW5nRXhwYW5zaW9uIHwgRm9yYmlkVHJhaWxpbmdFeHBhbnNpb24pOwor
ICAgICAgICBhdXRvIGxlZnRFeHBhbnNpb24gPSBsYXN0UnVuV2l0aENvbnRlbnQtPmV4cGFuc2lv
bkJlaGF2aW9yKCkgJiBMZWZ0RXhwYW5zaW9uTWFzazsKKyAgICAgICAgbGFzdFJ1bldpdGhDb250
ZW50LT5zZXRFeHBhbnNpb25CZWhhdmlvcihsZWZ0RXhwYW5zaW9uIHwgRm9yYmlkUmlnaHRFeHBh
bnNpb24pOwogICAgIH0KICAgICAvLyBOb3RoaW5nIHRvIGRpc3RyaWJ1dGU/CiAgICAgaWYgKCFl
eHBhbnNpb25PcHBvcnR1bml0eUNvdW50KQpAQCAtODI1LDcgKzgyNSw3IEBAIHZvaWQgTGluZUJ1
aWxkZXI6OlJ1bjo6ZXhwYW5kKGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVUZXh0SXRlbSwg
SW5saW5lTGF5b3V0CiAKICAgICBpZiAobV90cmFpbGluZ1doaXRlc3BhY2VUeXBlID09IFRyYWls
aW5nV2hpdGVzcGFjZTo6Tm9uZSkgewogICAgICAgICBtX3RyYWlsaW5nV2hpdGVzcGFjZVdpZHRo
ID0geyB9OwotICAgICAgICBzZXRFeHBhbnNpb25CZWhhdmlvcihBbGxvd0xlYWRpbmdFeHBhbnNp
b24gfCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKTsKKyAgICAgICAgc2V0RXhwYW5zaW9uQmVoYXZp
b3IoQWxsb3dMZWZ0RXhwYW5zaW9uIHwgQWxsb3dSaWdodEV4cGFuc2lvbik7CiAgICAgICAgIG1f
dGV4dENvbnRlbnQtPmV4cGFuZChpbmxpbmVUZXh0SXRlbS5sZW5ndGgoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC04NzksNyArODc5LDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6UnVuOjp2
aXN1YWxseUNvbGxhcHNlVHJhaWxpbmdXaGl0ZXNwYWNlKCkKICAgICAgICAgQVNTRVJUKG1fZXhw
YW5zaW9uT3Bwb3J0dW5pdHlDb3VudCk7CiAgICAgICAgIG1fZXhwYW5zaW9uT3Bwb3J0dW5pdHlD
b3VudC0tOwogICAgIH0KLSAgICBzZXRFeHBhbnNpb25CZWhhdmlvcihBbGxvd0xlYWRpbmdFeHBh
bnNpb24gfCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKTsKKyAgICBzZXRFeHBhbnNpb25CZWhhdmlv
cihBbGxvd0xlZnRFeHBhbnNpb24gfCBBbGxvd1JpZ2h0RXhwYW5zaW9uKTsKIH0KIAogdm9pZCBM
aW5lQnVpbGRlcjo6UnVuOjpzZXRFeHBhbnNpb25CZWhhdmlvcihFeHBhbnNpb25CZWhhdmlvciBl
eHBhbnNpb25CZWhhdmlvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDYyN2U1NjU0OGE4MWM4
MmNiMDViYmUwYTViMTgxMTQ0ZWFhZWM4OTMuLjdlMTc4ZDFiODkwOTQ1NjJkNGY1NGFiN2E0Njlk
ZjZiZDMyZjVhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNjQ3LDcgKzY0Nyw3IEBAIHZv
aWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZHZhbmNlKHVuc2lnbmVkIG9mZnNldCwgR2x5cGhC
dWZmZXIqIGdseXBoQnVmZmVyLCBHCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHN0ZDo6cGFp
cjxib29sLCBib29sPiBleHBhbnNpb25Mb2NhdGlvbihib29sIGlkZW9ncmFwaCwgYm9vbCB0cmVh
dEFzU3BhY2UsIGJvb2wgbHRyLCBib29sIGlzQWZ0ZXJFeHBhbnNpb24sIGJvb2wgZm9yYmlkTGVh
ZGluZ0V4cGFuc2lvbiwgYm9vbCBmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiwgYm9vbCBmb3JjZUxl
YWRpbmdFeHBhbnNpb24sIGJvb2wgZm9yY2VUcmFpbGluZ0V4cGFuc2lvbikKK3N0YXRpYyBpbmxp
bmUgc3RkOjpwYWlyPGJvb2wsIGJvb2w+IGV4cGFuc2lvbkxvY2F0aW9uKGJvb2wgaWRlb2dyYXBo
LCBib29sIHRyZWF0QXNTcGFjZSwgYm9vbCBsdHIsIGJvb2wgaXNBZnRlckV4cGFuc2lvbiwgYm9v
bCBmb3JiaWRMZWZ0RXhwYW5zaW9uLCBib29sIGZvcmJpZFJpZ2h0RXhwYW5zaW9uLCBib29sIGZv
cmNlTGVmdEV4cGFuc2lvbiwgYm9vbCBmb3JjZVJpZ2h0RXhwYW5zaW9uKQogewogICAgIGJvb2wg
ZXhwYW5kTGVmdCA9IGlkZW9ncmFwaDsKICAgICBib29sIGV4cGFuZFJpZ2h0ID0gaWRlb2dyYXBo
OwpAQCAtNjU5LDI4ICs2NTksMjggQEAgc3RhdGljIGlubGluZSBzdGQ6OnBhaXI8Ym9vbCwgYm9v
bD4gZXhwYW5zaW9uTG9jYXRpb24oYm9vbCBpZGVvZ3JhcGgsIGJvb2wgdHJlYXQKICAgICB9CiAg
ICAgaWYgKGlzQWZ0ZXJFeHBhbnNpb24pCiAgICAgICAgIGV4cGFuZExlZnQgPSBmYWxzZTsKLSAg
ICBBU1NFUlQoIWZvcmJpZExlYWRpbmdFeHBhbnNpb24gfHwgIWZvcmNlTGVhZGluZ0V4cGFuc2lv
bik7Ci0gICAgQVNTRVJUKCFmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiB8fCAhZm9yY2VUcmFpbGlu
Z0V4cGFuc2lvbik7Ci0gICAgaWYgKGZvcmJpZExlYWRpbmdFeHBhbnNpb24pCisgICAgQVNTRVJU
KCFmb3JiaWRMZWZ0RXhwYW5zaW9uIHx8ICFmb3JjZUxlZnRFeHBhbnNpb24pOworICAgIEFTU0VS
VCghZm9yYmlkUmlnaHRFeHBhbnNpb24gfHwgIWZvcmNlUmlnaHRFeHBhbnNpb24pOworICAgIGlm
IChmb3JiaWRMZWZ0RXhwYW5zaW9uKQogICAgICAgICBleHBhbmRMZWZ0ID0gZmFsc2U7Ci0gICAg
aWYgKGZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uKQorICAgIGlmIChmb3JiaWRSaWdodEV4cGFuc2lv
bikKICAgICAgICAgZXhwYW5kUmlnaHQgPSBmYWxzZTsKLSAgICBpZiAoZm9yY2VMZWFkaW5nRXhw
YW5zaW9uKQorICAgIGlmIChmb3JjZUxlZnRFeHBhbnNpb24pCiAgICAgICAgIGV4cGFuZExlZnQg
PSB0cnVlOwotICAgIGlmIChmb3JjZVRyYWlsaW5nRXhwYW5zaW9uKQorICAgIGlmIChmb3JjZVJp
Z2h0RXhwYW5zaW9uKQogICAgICAgICBleHBhbmRSaWdodCA9IHRydWU7CiAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKGV4cGFuZExlZnQsIGV4cGFuZFJpZ2h0KTsKIH0KIAogdm9pZCBDb21wbGV4
VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2VzKCkKIHsKLSAgICBib29sIGFm
dGVyRXhwYW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWFkaW5nRXhwYW5z
aW9uTWFzaykgPT0gRm9yYmlkTGVhZGluZ0V4cGFuc2lvbjsKKyAgICBib29sIGFmdGVyRXhwYW5z
aW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWZ0RXhwYW5zaW9uTWFzaykgPT0g
Rm9yYmlkTGVmdEV4cGFuc2lvbjsKICAgICBzaXplX3QgcnVuQ291bnQgPSBtX2NvbXBsZXhUZXh0
UnVucy5zaXplKCk7CiAgICAgYm9vbCBoYXNFeHRyYVNwYWNpbmcgPSAobV9mb250LmxldHRlclNw
YWNpbmcoKSB8fCBtX2ZvbnQud29yZFNwYWNpbmcoKSB8fCBtX2V4cGFuc2lvbikgJiYgIW1fcnVu
LnNwYWNpbmdEaXNhYmxlZCgpOwotICAgIGJvb2wgcnVuRm9yY2VzTGVhZGluZ0V4cGFuc2lvbiA9
IChtX3J1bi5leHBhbnNpb25CZWhhdmlvcigpICYgTGVhZGluZ0V4cGFuc2lvbk1hc2spID09IEZv
cmNlTGVhZGluZ0V4cGFuc2lvbjsKLSAgICBib29sIHJ1bkZvcmNlc1RyYWlsaW5nRXhwYW5zaW9u
ID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBUcmFpbGluZ0V4cGFuc2lvbk1hc2spID09
IEZvcmNlVHJhaWxpbmdFeHBhbnNpb247Ci0gICAgYm9vbCBydW5Gb3JiaWRzTGVhZGluZ0V4cGFu
c2lvbiA9IChtX3J1bi5leHBhbnNpb25CZWhhdmlvcigpICYgTGVhZGluZ0V4cGFuc2lvbk1hc2sp
ID09IEZvcmJpZExlYWRpbmdFeHBhbnNpb247Ci0gICAgYm9vbCBydW5Gb3JiaWRzVHJhaWxpbmdF
eHBhbnNpb24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIFRyYWlsaW5nRXhwYW5zaW9u
TWFzaykgPT0gRm9yYmlkVHJhaWxpbmdFeHBhbnNpb247CisgICAgYm9vbCBydW5Gb3JjZXNMZWZ0
RXhwYW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWZ0RXhwYW5zaW9uTWFz
aykgPT0gRm9yY2VMZWZ0RXhwYW5zaW9uOworICAgIGJvb2wgcnVuRm9yY2VzUmlnaHRFeHBhbnNp
b24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIFJpZ2h0RXhwYW5zaW9uTWFzaykgPT0g
Rm9yY2VSaWdodEV4cGFuc2lvbjsKKyAgICBib29sIHJ1bkZvcmJpZHNMZWZ0RXhwYW5zaW9uID0g
KG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWZ0RXhwYW5zaW9uTWFzaykgPT0gRm9yYmlk
TGVmdEV4cGFuc2lvbjsKKyAgICBib29sIHJ1bkZvcmJpZHNSaWdodEV4cGFuc2lvbiA9IChtX3J1
bi5leHBhbnNpb25CZWhhdmlvcigpICYgUmlnaHRFeHBhbnNpb25NYXNrKSA9PSBGb3JiaWRSaWdo
dEV4cGFuc2lvbjsKIAogICAgIC8vIFdlIGFyZSBpdGVyYXRpbmcgaW4gZ2x5cGggb3JkZXIsIG5v
dCBzdHJpbmcgb3JkZXIuIENvbXBhcmUgdGhpcyB0byBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlSW50
ZXJuYWwoKQogICAgIGZvciAoc2l6ZV90IHJ1bkluZGV4ID0gMDsgcnVuSW5kZXggPCBydW5Db3Vu
dDsgKytydW5JbmRleCkgewpAQCAtNzQwLDI1ICs3NDAsMjUgQEAgdm9pZCBDb21wbGV4VGV4dENv
bnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgICAgICBib29s
IGlzRmlyc3RDaGFyYWN0ZXIgPSAhKGNoYXJhY3RlckluZGV4ICsgY29tcGxleFRleHRSdW4uc3Ry
aW5nTG9jYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgYm9vbCBpc0xhc3RDaGFyYWN0ZXIgPSBj
aGFyYWN0ZXJJbmRleEluUnVuICsgMSA9PSBtX3J1bi5sZW5ndGgoKSB8fCAoVTE2X0lTX0xFQUQo
Y2gpICYmIGNoYXJhY3RlckluZGV4SW5SdW4gKyAyID09IG1fcnVuLmxlbmd0aCgpICYmIFUxNl9J
U19UUkFJTCgqKGNwICsgY2hhcmFjdGVySW5kZXggKyAxKSkpOwogCi0gICAgICAgICAgICAgICAg
Ym9vbCBmb3JjZUxlYWRpbmdFeHBhbnNpb24gPSBmYWxzZTsgLy8gT24gdGhlIGxlZnQsIHJlZ2Fy
ZGxlc3Mgb2YgbV9ydW4ubHRyKCkKLSAgICAgICAgICAgICAgICBib29sIGZvcmNlVHJhaWxpbmdF
eHBhbnNpb24gPSBmYWxzZTsgLy8gT24gdGhlIHJpZ2h0LCByZWdhcmRsZXNzIG9mIG1fcnVuLmx0
cigpCi0gICAgICAgICAgICAgICAgYm9vbCBmb3JiaWRMZWFkaW5nRXhwYW5zaW9uID0gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgYm9vbCBmb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiA9IGZhbHNlOwot
ICAgICAgICAgICAgICAgIGlmIChydW5Gb3JjZXNMZWFkaW5nRXhwYW5zaW9uKQotICAgICAgICAg
ICAgICAgICAgICBmb3JjZUxlYWRpbmdFeHBhbnNpb24gPSBtX3J1bi5sdHIoKSA/IGlzRmlyc3RD
aGFyYWN0ZXIgOiBpc0xhc3RDaGFyYWN0ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKHJ1bkZvcmNl
c1RyYWlsaW5nRXhwYW5zaW9uKQotICAgICAgICAgICAgICAgICAgICBmb3JjZVRyYWlsaW5nRXhw
YW5zaW9uID0gbV9ydW4ubHRyKCkgPyBpc0xhc3RDaGFyYWN0ZXIgOiBpc0ZpcnN0Q2hhcmFjdGVy
OwotICAgICAgICAgICAgICAgIGlmIChydW5Gb3JiaWRzTGVhZGluZ0V4cGFuc2lvbikKLSAgICAg
ICAgICAgICAgICAgICAgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8gaXNG
aXJzdENoYXJhY3RlciA6IGlzTGFzdENoYXJhY3RlcjsKLSAgICAgICAgICAgICAgICBpZiAocnVu
Rm9yYmlkc1RyYWlsaW5nRXhwYW5zaW9uKQotICAgICAgICAgICAgICAgICAgICBmb3JiaWRUcmFp
bGluZ0V4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8gaXNMYXN0Q2hhcmFjdGVyIDogaXNGaXJzdENo
YXJhY3RlcjsKKyAgICAgICAgICAgICAgICBib29sIGZvcmNlTGVmdEV4cGFuc2lvbiA9IGZhbHNl
OyAvLyBPbiB0aGUgbGVmdCwgcmVnYXJkbGVzcyBvZiBtX3J1bi5sdHIoKQorICAgICAgICAgICAg
ICAgIGJvb2wgZm9yY2VSaWdodEV4cGFuc2lvbiA9IGZhbHNlOyAvLyBPbiB0aGUgcmlnaHQsIHJl
Z2FyZGxlc3Mgb2YgbV9ydW4ubHRyKCkKKyAgICAgICAgICAgICAgICBib29sIGZvcmJpZExlZnRF
eHBhbnNpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBib29sIGZvcmJpZFJpZ2h0RXhwYW5z
aW9uID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKHJ1bkZvcmNlc0xlZnRFeHBhbnNpb24p
CisgICAgICAgICAgICAgICAgICAgIGZvcmNlTGVmdEV4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8g
aXNGaXJzdENoYXJhY3RlciA6IGlzTGFzdENoYXJhY3RlcjsKKyAgICAgICAgICAgICAgICBpZiAo
cnVuRm9yY2VzUmlnaHRFeHBhbnNpb24pCisgICAgICAgICAgICAgICAgICAgIGZvcmNlUmlnaHRF
eHBhbnNpb24gPSBtX3J1bi5sdHIoKSA/IGlzTGFzdENoYXJhY3RlciA6IGlzRmlyc3RDaGFyYWN0
ZXI7CisgICAgICAgICAgICAgICAgaWYgKHJ1bkZvcmJpZHNMZWZ0RXhwYW5zaW9uKQorICAgICAg
ICAgICAgICAgICAgICBmb3JiaWRMZWZ0RXhwYW5zaW9uID0gbV9ydW4ubHRyKCkgPyBpc0ZpcnN0
Q2hhcmFjdGVyIDogaXNMYXN0Q2hhcmFjdGVyOworICAgICAgICAgICAgICAgIGlmIChydW5Gb3Ji
aWRzUmlnaHRFeHBhbnNpb24pCisgICAgICAgICAgICAgICAgICAgIGZvcmJpZFJpZ2h0RXhwYW5z
aW9uID0gbV9ydW4ubHRyKCkgPyBpc0xhc3RDaGFyYWN0ZXIgOiBpc0ZpcnN0Q2hhcmFjdGVyOwog
ICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBqdXN0aWZpY2F0aW9uIGFuZCB3b3JkLXNwYWNpbmcu
CiAgICAgICAgICAgICAgICAgc3RhdGljIGJvb2wgZXhwYW5kQXJvdW5kSWRlb2dyYXBocyA9IEZv
bnRDYXNjYWRlOjpjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpOwogICAg
ICAgICAgICAgICAgIGJvb2wgaWRlb2dyYXBoID0gZXhwYW5kQXJvdW5kSWRlb2dyYXBocyAmJiBG
b250Q2FzY2FkZTo6aXNDSktJZGVvZ3JhcGhPclN5bWJvbChjaCk7Ci0gICAgICAgICAgICAgICAg
aWYgKHRyZWF0QXNTcGFjZSB8fCBpZGVvZ3JhcGggfHwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uIHx8
IGZvcmNlVHJhaWxpbmdFeHBhbnNpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAodHJlYXRBc1Nw
YWNlIHx8IGlkZW9ncmFwaCB8fCBmb3JjZUxlZnRFeHBhbnNpb24gfHwgZm9yY2VSaWdodEV4cGFu
c2lvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBEaXN0cmlidXRlIHRoZSBydW4ncyB0b3Rh
bCBleHBhbnNpb24gZXZlbmx5IG92ZXIgYWxsIGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGluIHRo
ZSBydW4uCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2V4cGFuc2lvbikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwgZXhwYW5kUmlnaHRdID0gZXhwYW5zaW9u
TG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1fcnVuLmx0cigpLCBhZnRlckV4cGFu
c2lvbiwgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgZm9yYmlkVHJhaWxpbmdFeHBhbnNpb24sIGZv
cmNlTGVhZGluZ0V4cGFuc2lvbiwgZm9yY2VUcmFpbGluZ0V4cGFuc2lvbik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhdXRvIFtleHBhbmRMZWZ0LCBleHBhbmRSaWdodF0gPSBleHBhbnNpb25M
b2NhdGlvbihpZGVvZ3JhcGgsIHRyZWF0QXNTcGFjZSwgbV9ydW4ubHRyKCksIGFmdGVyRXhwYW5z
aW9uLCBmb3JiaWRMZWZ0RXhwYW5zaW9uLCBmb3JiaWRSaWdodEV4cGFuc2lvbiwgZm9yY2VMZWZ0
RXhwYW5zaW9uLCBmb3JjZVJpZ2h0RXhwYW5zaW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChleHBhbmRMZWZ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9leHBhbnNp
b24gLT0gbV9leHBhbnNpb25QZXJPcHBvcnR1bml0eTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBJbmNyZWFzZSBwcmV2aW91cyB3aWR0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDgwZmFiYjMyYWRiZjY5Y2MxZTQ4
MGIxN2JkMWM2OTljODlkZjQyNmMuLjNlZTY5YjdlMTliMWNhZDMxNWYyOGZjMjM1NDQzMTQzODlm
YTYzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5jcHAKQEAgLTEwODYsOCArMTA4Niw4IEBAIGJvb2wgRm9udENhc2NhZGU6OmlzQ0pLSWRl
b2dyYXBoT3JTeW1ib2woVUNoYXIzMiBjKQogc3RkOjpwYWlyPHVuc2lnbmVkLCBib29sPiBGb250
Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKGNvbnN0IExDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBFeHBh
bnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvcikKIHsKICAgICB1bnNpZ25lZCBjb3VudCA9
IDA7Ci0gICAgYm9vbCBpc0FmdGVyRXhwYW5zaW9uID0gKGV4cGFuc2lvbkJlaGF2aW9yICYgTGVh
ZGluZ0V4cGFuc2lvbk1hc2spID09IEZvcmJpZExlYWRpbmdFeHBhbnNpb247Ci0gICAgaWYgKChl
eHBhbnNpb25CZWhhdmlvciAmIExlYWRpbmdFeHBhbnNpb25NYXNrKSA9PSBGb3JjZUxlYWRpbmdF
eHBhbnNpb24pIHsKKyAgICBib29sIGlzQWZ0ZXJFeHBhbnNpb24gPSAoZXhwYW5zaW9uQmVoYXZp
b3IgJiBMZWZ0RXhwYW5zaW9uTWFzaykgPT0gRm9yYmlkTGVmdEV4cGFuc2lvbjsKKyAgICBpZiAo
KGV4cGFuc2lvbkJlaGF2aW9yICYgTGVmdEV4cGFuc2lvbk1hc2spID09IEZvcmNlTGVmdEV4cGFu
c2lvbikgewogICAgICAgICArK2NvdW50OwogICAgICAgICBpc0FmdGVyRXhwYW5zaW9uID0gdHJ1
ZTsKICAgICB9CkBAIC0xMTA4LDEwICsxMTA4LDEwIEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwgYm9v
bD4gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbChjb25zdCBM
CiAgICAgICAgICAgICAgICAgaXNBZnRlckV4cGFuc2lvbiA9IGZhbHNlOwogICAgICAgICB9CiAg
ICAgfQotICAgIGlmICghaXNBZnRlckV4cGFuc2lvbiAmJiAoZXhwYW5zaW9uQmVoYXZpb3IgJiBU
cmFpbGluZ0V4cGFuc2lvbk1hc2spID09IEZvcmNlVHJhaWxpbmdFeHBhbnNpb24pIHsKKyAgICBp
ZiAoIWlzQWZ0ZXJFeHBhbnNpb24gJiYgKGV4cGFuc2lvbkJlaGF2aW9yICYgUmlnaHRFeHBhbnNp
b25NYXNrKSA9PSBGb3JjZVJpZ2h0RXhwYW5zaW9uKSB7CiAgICAgICAgICsrY291bnQ7CiAgICAg
ICAgIGlzQWZ0ZXJFeHBhbnNpb24gPSB0cnVlOwotICAgIH0gZWxzZSBpZiAoaXNBZnRlckV4cGFu
c2lvbiAmJiAoZXhwYW5zaW9uQmVoYXZpb3IgJiBUcmFpbGluZ0V4cGFuc2lvbk1hc2spID09IEZv
cmJpZFRyYWlsaW5nRXhwYW5zaW9uKSB7CisgICAgfSBlbHNlIGlmIChpc0FmdGVyRXhwYW5zaW9u
ICYmIChleHBhbnNpb25CZWhhdmlvciAmIFJpZ2h0RXhwYW5zaW9uTWFzaykgPT0gRm9yYmlkUmln
aHRFeHBhbnNpb24pIHsKICAgICAgICAgQVNTRVJUKGNvdW50KTsKICAgICAgICAgLS1jb3VudDsK
ICAgICAgICAgaXNBZnRlckV4cGFuc2lvbiA9IGZhbHNlOwpAQCAtMTEyMyw4ICsxMTIzLDggQEAg
c3RkOjpwYWlyPHVuc2lnbmVkLCBib29sPiBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5p
dHlDb3VudEludGVybmFsKGNvbnN0IFUKIHsKICAgICBzdGF0aWMgYm9vbCBleHBhbmRBcm91bmRJ
ZGVvZ3JhcGhzID0gY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKICAg
ICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgYm9vbCBpc0FmdGVyRXhwYW5zaW9uID0gKGV4cGFu
c2lvbkJlaGF2aW9yICYgTGVhZGluZ0V4cGFuc2lvbk1hc2spID09IEZvcmJpZExlYWRpbmdFeHBh
bnNpb247Ci0gICAgaWYgKChleHBhbnNpb25CZWhhdmlvciAmIExlYWRpbmdFeHBhbnNpb25NYXNr
KSA9PSBGb3JjZUxlYWRpbmdFeHBhbnNpb24pIHsKKyAgICBib29sIGlzQWZ0ZXJFeHBhbnNpb24g
PSAoZXhwYW5zaW9uQmVoYXZpb3IgJiBMZWZ0RXhwYW5zaW9uTWFzaykgPT0gRm9yYmlkTGVmdEV4
cGFuc2lvbjsKKyAgICBpZiAoKGV4cGFuc2lvbkJlaGF2aW9yICYgTGVmdEV4cGFuc2lvbk1hc2sp
ID09IEZvcmNlTGVmdEV4cGFuc2lvbikgewogICAgICAgICArK2NvdW50OwogICAgICAgICBpc0Fm
dGVyRXhwYW5zaW9uID0gdHJ1ZTsKICAgICB9CkBAIC0xMTcxLDEwICsxMTcxLDEwIEBAIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgYm9vbD4gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291
bnRJbnRlcm5hbChjb25zdCBVCiAgICAgICAgICAgICBpc0FmdGVyRXhwYW5zaW9uID0gZmFsc2U7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCFpc0FmdGVyRXhwYW5zaW9uICYmIChleHBhbnNp
b25CZWhhdmlvciAmIFRyYWlsaW5nRXhwYW5zaW9uTWFzaykgPT0gRm9yY2VUcmFpbGluZ0V4cGFu
c2lvbikgeworICAgIGlmICghaXNBZnRlckV4cGFuc2lvbiAmJiAoZXhwYW5zaW9uQmVoYXZpb3Ig
JiBSaWdodEV4cGFuc2lvbk1hc2spID09IEZvcmNlUmlnaHRFeHBhbnNpb24pIHsKICAgICAgICAg
Kytjb3VudDsKICAgICAgICAgaXNBZnRlckV4cGFuc2lvbiA9IHRydWU7Ci0gICAgfSBlbHNlIGlm
IChpc0FmdGVyRXhwYW5zaW9uICYmIChleHBhbnNpb25CZWhhdmlvciAmIFRyYWlsaW5nRXhwYW5z
aW9uTWFzaykgPT0gRm9yYmlkVHJhaWxpbmdFeHBhbnNpb24pIHsKKyAgICB9IGVsc2UgaWYgKGlz
QWZ0ZXJFeHBhbnNpb24gJiYgKGV4cGFuc2lvbkJlaGF2aW9yICYgUmlnaHRFeHBhbnNpb25NYXNr
KSA9PSBGb3JiaWRSaWdodEV4cGFuc2lvbikgewogICAgICAgICBBU1NFUlQoY291bnQpOwogICAg
ICAgICAtLWNvdW50OwogICAgICAgICBpc0FmdGVyRXhwYW5zaW9uID0gZmFsc2U7CkBAIC0xMTkz
LDcgKzExOTMsNyBAQCBzdGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IEZvbnRDYXNjYWRlOjpleHBh
bnNpb25PcHBvcnR1bml0eUNvdW50KGNvbnN0IFN0cmluZ1ZpZQogICAgIHJldHVybiBleHBhbnNp
b25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwoc3RyaW5nVmlldy5jaGFyYWN0ZXJzMTYoKSwgc3Ry
aW5nVmlldy5sZW5ndGgoKSwgZGlyZWN0aW9uLCBleHBhbnNpb25CZWhhdmlvcik7CiB9CiAKLWJv
b2wgRm9udENhc2NhZGU6OmxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eShjb25zdCBTdHJpbmdW
aWV3JiBzdHJpbmdWaWV3LCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKK2Jvb2wgRm9udENhc2Nh
ZGU6OmxlZnRFeHBhbnNpb25PcHBvcnR1bml0eShjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3
LCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBpZiAoIXN0cmluZ1ZpZXcubGVuZ3Ro
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMTIsNyArMTIxMiw3IEBAIGJvb2wgRm9u
dENhc2NhZGU6OmxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eShjb25zdCBTdHJpbmdWaWV3JiBz
dHJpbmdWaWV3LCBUZXh0CiAgICAgcmV0dXJuIGNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNv
bXBsZXhUZXh0KCkgJiYgaXNDSktJZGVvZ3JhcGhPclN5bWJvbChpbml0aWFsQ2hhcmFjdGVyKTsK
IH0KIAotYm9vbCBGb250Q2FzY2FkZTo6dHJhaWxpbmdFeHBhbnNpb25PcHBvcnR1bml0eShjb25z
dCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKK2Jvb2wg
Rm9udENhc2NhZGU6OnJpZ2h0RXhwYW5zaW9uT3Bwb3J0dW5pdHkoY29uc3QgU3RyaW5nVmlldyYg
c3RyaW5nVmlldywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgaWYgKCFzdHJpbmdW
aWV3Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA1OGE1NjdkODY2NDRiNDgzOGQ2
Zjg3MWRjNmZjZmViNTYwOGMyMGU5Li45YWQzYWU0YmVmMTIxZDZkMDE3ZjJiNzI1NDVkYmNkNjFk
MjU0YWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmgKQEAgLTE3NCwxMCArMTc0LDggQEAgcHVibGljOgogCiAgICAgLy8gV2hldGhlciBvciBu
b3QgdGhlcmUgaXMgYW4gZXhwYW5zaW9uIG9wcG9ydHVuaXR5IGp1c3QgYmVmb3JlIHRoZSBmaXJz
dCBjaGFyYWN0ZXIKICAgICAvLyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCB0YWtlIGEgaXNBZnRl
ckV4cGFuc2lvbiBmbGFnOyB0aGlzIGFzc3VtZXMgdGhhdCBpc0FmdGVyRXhwYW5zaW9uIGlzIGZh
bHNlCi0gICAgLy8gSGVyZSwgIkxlYWRpbmciIGFuZCAiVHJhaWxpbmciIGFyZSByZWxldmFudCBh
ZnRlciB0aGUgbGluZSBoYXMgYmVlbiByZWFycmFuZ2VkIGZvciBiaWRpLgotICAgIC8vICgiTGVh
ZGluZyIgbWVhbnMgImxlZnQiIGFuZCAiVHJhaWxpbmciIG1lYW5zICJyaWdodC4iKQotICAgIHN0
YXRpYyBib29sIGxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eShjb25zdCBTdHJpbmdWaWV3Jiwg
VGV4dERpcmVjdGlvbik7Ci0gICAgc3RhdGljIGJvb2wgdHJhaWxpbmdFeHBhbnNpb25PcHBvcnR1
bml0eShjb25zdCBTdHJpbmdWaWV3JiwgVGV4dERpcmVjdGlvbik7CisgICAgc3RhdGljIGJvb2wg
bGVmdEV4cGFuc2lvbk9wcG9ydHVuaXR5KGNvbnN0IFN0cmluZ1ZpZXcmLCBUZXh0RGlyZWN0aW9u
KTsKKyAgICBzdGF0aWMgYm9vbCByaWdodEV4cGFuc2lvbk9wcG9ydHVuaXR5KGNvbnN0IFN0cmlu
Z1ZpZXcmLCBUZXh0RGlyZWN0aW9uKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IHNldFNob3VsZFVzZVNtb290aGluZyhib29sKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Ym9vbCBzaG91bGRVc2VTbW9vdGhpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKaW5kZXggNjE2M2JjZTI3YTI0ZmI3M2Y3ZjQ3
MGYwOTkyYWIxYzcyYTA1ZWY5ZS4uYjk5YTk1ZjdlYTYwMWMxNDFhZDYzODI1OGQzYzQ0ZThjMjUw
NTJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgV2lkdGhJdGVyYXRvcjo6V2lkdGhJdGVyYXRv
cihjb25zdCBGb250Q2FzY2FkZSogZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2UKICAg
ICAsIG1fcnVuKHJ1bikKICAgICAsIG1fZmFsbGJhY2tGb250cyhmYWxsYmFja0ZvbnRzKQogICAg
ICwgbV9leHBhbnNpb24ocnVuLmV4cGFuc2lvbigpKQotICAgICwgbV9pc0FmdGVyRXhwYW5zaW9u
KChydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIExlYWRpbmdFeHBhbnNpb25NYXNrKSA9PSBGb3Ji
aWRMZWFkaW5nRXhwYW5zaW9uKQorICAgICwgbV9pc0FmdGVyRXhwYW5zaW9uKChydW4uZXhwYW5z
aW9uQmVoYXZpb3IoKSAmIExlZnRFeHBhbnNpb25NYXNrKSA9PSBGb3JiaWRMZWZ0RXhwYW5zaW9u
KQogICAgICwgbV9hY2NvdW50Rm9yR2x5cGhCb3VuZHMoYWNjb3VudEZvckdseXBoQm91bmRzKQog
ICAgICwgbV9lbmFibGVLZXJuaW5nKGZvbnQtPmVuYWJsZUtlcm5pbmcoKSkKICAgICAsIG1fcmVx
dWlyZXNTaGFwaW5nKGZvbnQtPnJlcXVpcmVzU2hhcGluZygpKQpAQCAtMTM5LDcgKzEzOSw3IEBA
IGlubGluZSBmbG9hdCBXaWR0aEl0ZXJhdG9yOjphcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVm
ZmVyKiBnbHlwaEJ1ZmZlciwgYm9vbCBsCiAgICAgcmV0dXJuIGFmdGVyV2lkdGggLSBiZWZvcmVX
aWR0aDsKIH0KIAotc3RhdGljIGlubGluZSBzdGQ6OnBhaXI8Ym9vbCwgYm9vbD4gZXhwYW5zaW9u
TG9jYXRpb24oYm9vbCBpZGVvZ3JhcGgsIGJvb2wgdHJlYXRBc1NwYWNlLCBib29sIGx0ciwgYm9v
bCBpc0FmdGVyRXhwYW5zaW9uLCBib29sIGZvcmJpZExlYWRpbmdFeHBhbnNpb24sIGJvb2wgZm9y
YmlkVHJhaWxpbmdFeHBhbnNpb24sIGJvb2wgZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBib29sIGZv
cmNlVHJhaWxpbmdFeHBhbnNpb24pCitzdGF0aWMgaW5saW5lIHN0ZDo6cGFpcjxib29sLCBib29s
PiBleHBhbnNpb25Mb2NhdGlvbihib29sIGlkZW9ncmFwaCwgYm9vbCB0cmVhdEFzU3BhY2UsIGJv
b2wgbHRyLCBib29sIGlzQWZ0ZXJFeHBhbnNpb24sIGJvb2wgZm9yYmlkTGVmdEV4cGFuc2lvbiwg
Ym9vbCBmb3JiaWRSaWdodEV4cGFuc2lvbiwgYm9vbCBmb3JjZUxlZnRFeHBhbnNpb24sIGJvb2wg
Zm9yY2VSaWdodEV4cGFuc2lvbikKIHsKICAgICBib29sIGV4cGFuZExlZnQgPSBpZGVvZ3JhcGg7
CiAgICAgYm9vbCBleHBhbmRSaWdodCA9IGlkZW9ncmFwaDsKQEAgLTE1NSwxNSArMTU1LDE1IEBA
IHN0YXRpYyBpbmxpbmUgc3RkOjpwYWlyPGJvb2wsIGJvb2w+IGV4cGFuc2lvbkxvY2F0aW9uKGJv
b2wgaWRlb2dyYXBoLCBib29sIHRyZWF0CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGV4cGFu
ZFJpZ2h0ID0gZmFsc2U7CiAgICAgfQotICAgIEFTU0VSVCghZm9yYmlkTGVhZGluZ0V4cGFuc2lv
biB8fCAhZm9yY2VMZWFkaW5nRXhwYW5zaW9uKTsKLSAgICBBU1NFUlQoIWZvcmJpZFRyYWlsaW5n
RXhwYW5zaW9uIHx8ICFmb3JjZVRyYWlsaW5nRXhwYW5zaW9uKTsKLSAgICBpZiAoZm9yYmlkTGVh
ZGluZ0V4cGFuc2lvbikKKyAgICBBU1NFUlQoIWZvcmJpZExlZnRFeHBhbnNpb24gfHwgIWZvcmNl
TGVmdEV4cGFuc2lvbik7CisgICAgQVNTRVJUKCFmb3JiaWRSaWdodEV4cGFuc2lvbiB8fCAhZm9y
Y2VSaWdodEV4cGFuc2lvbik7CisgICAgaWYgKGZvcmJpZExlZnRFeHBhbnNpb24pCiAgICAgICAg
IGV4cGFuZExlZnQgPSBmYWxzZTsKLSAgICBpZiAoZm9yYmlkVHJhaWxpbmdFeHBhbnNpb24pCisg
ICAgaWYgKGZvcmJpZFJpZ2h0RXhwYW5zaW9uKQogICAgICAgICBleHBhbmRSaWdodCA9IGZhbHNl
OwotICAgIGlmIChmb3JjZUxlYWRpbmdFeHBhbnNpb24pCisgICAgaWYgKGZvcmNlTGVmdEV4cGFu
c2lvbikKICAgICAgICAgZXhwYW5kTGVmdCA9IHRydWU7Ci0gICAgaWYgKGZvcmNlVHJhaWxpbmdF
eHBhbnNpb24pCisgICAgaWYgKGZvcmNlUmlnaHRFeHBhbnNpb24pCiAgICAgICAgIGV4cGFuZFJp
Z2h0ID0gdHJ1ZTsKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoZXhwYW5kTGVmdCwgZXhwYW5k
UmlnaHQpOwogfQpAQCAtMTc1LDEwICsxNzUsMTAgQEAgaW5saW5lIHZvaWQgV2lkdGhJdGVyYXRv
cjo6YWR2YW5jZUludGVybmFsKFRleHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yLCBHbHlwaEJ1ZmYK
ICAgICBib29sIHJ0bCA9IG1fcnVuLnJ0bCgpOwogICAgIGJvb2wgaGFzRXh0cmFTcGFjaW5nID0g
KG1fZm9udC0+bGV0dGVyU3BhY2luZygpIHx8IG1fZm9udC0+d29yZFNwYWNpbmcoKSB8fCBtX2V4
cGFuc2lvbikgJiYgIW1fcnVuLnNwYWNpbmdEaXNhYmxlZCgpOwogCi0gICAgYm9vbCBydW5Gb3Jj
ZXNMZWFkaW5nRXhwYW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWFkaW5n
RXhwYW5zaW9uTWFzaykgPT0gRm9yY2VMZWFkaW5nRXhwYW5zaW9uOwotICAgIGJvb2wgcnVuRm9y
Y2VzVHJhaWxpbmdFeHBhbnNpb24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIFRyYWls
aW5nRXhwYW5zaW9uTWFzaykgPT0gRm9yY2VUcmFpbGluZ0V4cGFuc2lvbjsKLSAgICBib29sIHJ1
bkZvcmJpZHNMZWFkaW5nRXhwYW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBM
ZWFkaW5nRXhwYW5zaW9uTWFzaykgPT0gRm9yYmlkTGVhZGluZ0V4cGFuc2lvbjsKLSAgICBib29s
IHJ1bkZvcmJpZHNUcmFpbGluZ0V4cGFuc2lvbiA9IChtX3J1bi5leHBhbnNpb25CZWhhdmlvcigp
ICYgVHJhaWxpbmdFeHBhbnNpb25NYXNrKSA9PSBGb3JiaWRUcmFpbGluZ0V4cGFuc2lvbjsKKyAg
ICBib29sIHJ1bkZvcmNlc0xlZnRFeHBhbnNpb24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZpb3Io
KSAmIExlZnRFeHBhbnNpb25NYXNrKSA9PSBGb3JjZUxlZnRFeHBhbnNpb247CisgICAgYm9vbCBy
dW5Gb3JjZXNSaWdodEV4cGFuc2lvbiA9IChtX3J1bi5leHBhbnNpb25CZWhhdmlvcigpICYgUmln
aHRFeHBhbnNpb25NYXNrKSA9PSBGb3JjZVJpZ2h0RXhwYW5zaW9uOworICAgIGJvb2wgcnVuRm9y
Ymlkc0xlZnRFeHBhbnNpb24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIExlZnRFeHBh
bnNpb25NYXNrKSA9PSBGb3JiaWRMZWZ0RXhwYW5zaW9uOworICAgIGJvb2wgcnVuRm9yYmlkc1Jp
Z2h0RXhwYW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBSaWdodEV4cGFuc2lv
bk1hc2spID09IEZvcmJpZFJpZ2h0RXhwYW5zaW9uOwogICAgIGZsb2F0IHdpZHRoU2luY2VMYXN0
Um91bmRpbmcgPSBtX3J1bldpZHRoU29GYXI7CiAgICAgZmxvYXQgbGVmdG92ZXJKdXN0aWZpY2F0
aW9uV2lkdGggPSAwOwogICAgIG1fcnVuV2lkdGhTb0ZhciA9IGZsb29yZihtX3J1bldpZHRoU29G
YXIpOwpAQCAtMjYyLDIzICsyNjIsMjMgQEAgaW5saW5lIHZvaWQgV2lkdGhJdGVyYXRvcjo6YWR2
YW5jZUludGVybmFsKFRleHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yLCBHbHlwaEJ1ZmYKICAgICAg
ICAgICAgIHN0YXRpYyBib29sIGV4cGFuZEFyb3VuZElkZW9ncmFwaHMgPSBGb250Q2FzY2FkZTo6
Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKICAgICAgICAgICAgIGJv
b2wgdHJlYXRBc1NwYWNlID0gRm9udENhc2NhZGU6OnRyZWF0QXNTcGFjZShjaGFyYWN0ZXIpOwog
ICAgICAgICAgICAgYm9vbCBjdXJyZW50SXNMYXN0Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3Rl
ckluZGV4ICsgYWR2YW5jZUxlbmd0aCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fcnVuLmxlbmd0
aCgpKTsKLSAgICAgICAgICAgIGJvb2wgZm9yY2VMZWFkaW5nRXhwYW5zaW9uID0gZmFsc2U7IC8v
IE9uIHRoZSBsZWZ0LCByZWdhcmRsZXNzIG9mIG1fcnVuLmx0cigpCi0gICAgICAgICAgICBib29s
IGZvcmNlVHJhaWxpbmdFeHBhbnNpb24gPSBmYWxzZTsgLy8gT24gdGhlIHJpZ2h0LCByZWdhcmRs
ZXNzIG9mIG1fcnVuLmx0cigpCi0gICAgICAgICAgICBib29sIGZvcmJpZExlYWRpbmdFeHBhbnNp
b24gPSBmYWxzZTsKLSAgICAgICAgICAgIGJvb2wgZm9yYmlkVHJhaWxpbmdFeHBhbnNpb24gPSBm
YWxzZTsKLSAgICAgICAgICAgIGlmIChydW5Gb3JjZXNMZWFkaW5nRXhwYW5zaW9uKQotICAgICAg
ICAgICAgICAgIGZvcmNlTGVhZGluZ0V4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8gIWN1cnJlbnRD
aGFyYWN0ZXJJbmRleCA6IGN1cnJlbnRJc0xhc3RDaGFyYWN0ZXI7Ci0gICAgICAgICAgICBpZiAo
cnVuRm9yY2VzVHJhaWxpbmdFeHBhbnNpb24pCi0gICAgICAgICAgICAgICAgZm9yY2VUcmFpbGlu
Z0V4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8gY3VycmVudElzTGFzdENoYXJhY3RlciA6ICFjdXJy
ZW50Q2hhcmFjdGVySW5kZXg7Ci0gICAgICAgICAgICBpZiAocnVuRm9yYmlkc0xlYWRpbmdFeHBh
bnNpb24pCi0gICAgICAgICAgICAgICAgZm9yYmlkTGVhZGluZ0V4cGFuc2lvbiA9IG1fcnVuLmx0
cigpID8gIWN1cnJlbnRDaGFyYWN0ZXJJbmRleCA6IGN1cnJlbnRJc0xhc3RDaGFyYWN0ZXI7Ci0g
ICAgICAgICAgICBpZiAocnVuRm9yYmlkc1RyYWlsaW5nRXhwYW5zaW9uKQotICAgICAgICAgICAg
ICAgIGZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uID0gbV9ydW4ubHRyKCkgPyBjdXJyZW50SXNMYXN0
Q2hhcmFjdGVyIDogIWN1cnJlbnRDaGFyYWN0ZXJJbmRleDsKKyAgICAgICAgICAgIGJvb2wgZm9y
Y2VMZWZ0RXhwYW5zaW9uID0gZmFsc2U7IC8vIE9uIHRoZSBsZWZ0LCByZWdhcmRsZXNzIG9mIG1f
cnVuLmx0cigpCisgICAgICAgICAgICBib29sIGZvcmNlUmlnaHRFeHBhbnNpb24gPSBmYWxzZTsg
Ly8gT24gdGhlIHJpZ2h0LCByZWdhcmRsZXNzIG9mIG1fcnVuLmx0cigpCisgICAgICAgICAgICBi
b29sIGZvcmJpZExlZnRFeHBhbnNpb24gPSBmYWxzZTsKKyAgICAgICAgICAgIGJvb2wgZm9yYmlk
UmlnaHRFeHBhbnNpb24gPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChydW5Gb3JjZXNMZWZ0RXhw
YW5zaW9uKQorICAgICAgICAgICAgICAgIGZvcmNlTGVmdEV4cGFuc2lvbiA9IG1fcnVuLmx0cigp
ID8gIWN1cnJlbnRDaGFyYWN0ZXJJbmRleCA6IGN1cnJlbnRJc0xhc3RDaGFyYWN0ZXI7CisgICAg
ICAgICAgICBpZiAocnVuRm9yY2VzUmlnaHRFeHBhbnNpb24pCisgICAgICAgICAgICAgICAgZm9y
Y2VSaWdodEV4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8gY3VycmVudElzTGFzdENoYXJhY3RlciA6
ICFjdXJyZW50Q2hhcmFjdGVySW5kZXg7CisgICAgICAgICAgICBpZiAocnVuRm9yYmlkc0xlZnRF
eHBhbnNpb24pCisgICAgICAgICAgICAgICAgZm9yYmlkTGVmdEV4cGFuc2lvbiA9IG1fcnVuLmx0
cigpID8gIWN1cnJlbnRDaGFyYWN0ZXJJbmRleCA6IGN1cnJlbnRJc0xhc3RDaGFyYWN0ZXI7Cisg
ICAgICAgICAgICBpZiAocnVuRm9yYmlkc1JpZ2h0RXhwYW5zaW9uKQorICAgICAgICAgICAgICAg
IGZvcmJpZFJpZ2h0RXhwYW5zaW9uID0gbV9ydW4ubHRyKCkgPyBjdXJyZW50SXNMYXN0Q2hhcmFj
dGVyIDogIWN1cnJlbnRDaGFyYWN0ZXJJbmRleDsKICAgICAgICAgICAgIGJvb2wgaWRlb2dyYXBo
ID0gKGV4cGFuZEFyb3VuZElkZW9ncmFwaHMgJiYgRm9udENhc2NhZGU6OmlzQ0pLSWRlb2dyYXBo
T3JTeW1ib2woY2hhcmFjdGVyKSk7Ci0gICAgICAgICAgICBpZiAodHJlYXRBc1NwYWNlIHx8IGlk
ZW9ncmFwaCB8fCBmb3JjZUxlYWRpbmdFeHBhbnNpb24gfHwgZm9yY2VUcmFpbGluZ0V4cGFuc2lv
bikgeworICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8fCBpZGVvZ3JhcGggfHwgZm9yY2VM
ZWZ0RXhwYW5zaW9uIHx8IGZvcmNlUmlnaHRFeHBhbnNpb24pIHsKICAgICAgICAgICAgICAgICAv
LyBEaXN0cmlidXRlIHRoZSBydW4ncyB0b3RhbCBleHBhbnNpb24gZXZlbmx5IG92ZXIgYWxsIGV4
cGFuc2lvbiBvcHBvcnR1bml0aWVzIGluIHRoZSBydW4uCiAgICAgICAgICAgICAgICAgaWYgKG1f
ZXhwYW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gW2V4cGFuZExlZnQsIGV4cGFu
ZFJpZ2h0XSA9IGV4cGFuc2lvbkxvY2F0aW9uKGlkZW9ncmFwaCwgdHJlYXRBc1NwYWNlLCBtX3J1
bi5sdHIoKSwgbV9pc0FmdGVyRXhwYW5zaW9uLCBmb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBmb3Ji
aWRUcmFpbGluZ0V4cGFuc2lvbiwgZm9yY2VMZWFkaW5nRXhwYW5zaW9uLCBmb3JjZVRyYWlsaW5n
RXhwYW5zaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBbZXhwYW5kTGVmdCwgZXhwYW5k
UmlnaHRdID0gZXhwYW5zaW9uTG9jYXRpb24oaWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1fcnVu
Lmx0cigpLCBtX2lzQWZ0ZXJFeHBhbnNpb24sIGZvcmJpZExlZnRFeHBhbnNpb24sIGZvcmJpZFJp
Z2h0RXhwYW5zaW9uLCBmb3JjZUxlZnRFeHBhbnNpb24sIGZvcmNlUmlnaHRFeHBhbnNpb24pOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoZXhwYW5kTGVmdCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fcnVuLmx0cigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
SW5jcmVhc2UgcHJldmlvdXMgd2lkdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dEZsYWdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRG
bGFncy5oCmluZGV4IDEwY2M3NjA4ZDI1Yzc1ZmY1NDU1OTEwOGM5OWYxNGUyYjMzYTQxZDYuLmEz
YTczNGVhNDc4OTA0MTJjM2RiOTk1ZGMxNzdhYjIwYmYxNTdlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaApAQCAtNjEsMjAgKzYxLDE4IEBAIGVudW0gY2xhc3Mg
Tm9uQ0pLR2x5cGhPcmllbnRhdGlvbiA6IHVpbnQ4X3QgewogICAgIFVwcmlnaHQKIH07CiAKLS8v
IEhlcmUsICJMZWFkaW5nIiBhbmQgIlRyYWlsaW5nIiBhcmUgcmVsZXZhbnQgYWZ0ZXIgdGhlIGxp
bmUgaGFzIGJlZW4gcmVhcnJhbmdlZCBmb3IgYmlkaS4KLS8vICgiTGVhZGluZyIgbWVhbnMgImxl
ZnQiIGFuZCAiVHJhaWxpbmciIG1lYW5zICJyaWdodC4iKQogZW51bSBFeHBhbnNpb25CZWhhdmlv
ckZsYWdzIHsKLSAgICBGb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiA9IDAgPDwgMCwKLSAgICBBbGxv
d1RyYWlsaW5nRXhwYW5zaW9uID0gMSA8PCAwLAotICAgIEZvcmNlVHJhaWxpbmdFeHBhbnNpb24g
PSAyIDw8IDAsCi0gICAgVHJhaWxpbmdFeHBhbnNpb25NYXNrID0gMyA8PCAwLAorICAgIEZvcmJp
ZFJpZ2h0RXhwYW5zaW9uID0gMCA8PCAwLAorICAgIEFsbG93UmlnaHRFeHBhbnNpb24gPSAxIDw8
IDAsCisgICAgRm9yY2VSaWdodEV4cGFuc2lvbiA9IDIgPDwgMCwKKyAgICBSaWdodEV4cGFuc2lv
bk1hc2sgPSAzIDw8IDAsCiAKLSAgICBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uID0gMCA8PCAyLAot
ICAgIEFsbG93TGVhZGluZ0V4cGFuc2lvbiA9IDEgPDwgMiwKLSAgICBGb3JjZUxlYWRpbmdFeHBh
bnNpb24gPSAyIDw8IDIsCi0gICAgTGVhZGluZ0V4cGFuc2lvbk1hc2sgPSAzIDw8IDIsCisgICAg
Rm9yYmlkTGVmdEV4cGFuc2lvbiA9IDAgPDwgMiwKKyAgICBBbGxvd0xlZnRFeHBhbnNpb24gPSAx
IDw8IDIsCisgICAgRm9yY2VMZWZ0RXhwYW5zaW9uID0gMiA8PCAyLAorICAgIExlZnRFeHBhbnNp
b25NYXNrID0gMyA8PCAyLAogCi0gICAgRGVmYXVsdEV4cGFuc2lvbiA9IEFsbG93VHJhaWxpbmdF
eHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLAorICAgIERlZmF1bHRFeHBhbnNpb24g
PSBBbGxvd1JpZ2h0RXhwYW5zaW9uIHwgRm9yYmlkTGVmdEV4cGFuc2lvbiwKIH07CiB0eXBlZGVm
IHVuc2lnbmVkIEV4cGFuc2lvbkJlaGF2aW9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmluZGV4IDM1YTNmMGMxMTdhZDM1NzZiMGMwODAxZjNlNDg3
ZGIwNGMzNmE0N2MuLjkzOWE3OWFlZjNiYmY4MjA3NjZiOWZlZjdhYjZiMTNhZjgzNDcyZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCkBAIC02NDMs
NyArNjQzLDcgQEAgdm9pZCBQb3B1cE1lbnVXaW46OnBhaW50KGNvbnN0IEludFJlY3QmIGRhbWFn
ZVJlY3QsIEhEQyBoZGMpCiAKICAgICAgICAgU3RyaW5nIGl0ZW1UZXh0ID0gY2xpZW50KCktPml0
ZW1UZXh0KGluZGV4KTsKIAotICAgICAgICBUZXh0UnVuIHRleHRSdW4oaXRlbVRleHQsIDAsIDAs
IEFsbG93VHJhaWxpbmdFeHBhbnNpb24sIGl0ZW1TdHlsZS50ZXh0RGlyZWN0aW9uKCksIGl0ZW1T
dHlsZS5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSk7CisgICAgICAgIFRleHRSdW4gdGV4dFJ1
bihpdGVtVGV4dCwgMCwgMCwgQWxsb3dMZWZ0RXhwYW5zaW9uLCBpdGVtU3R5bGUudGV4dERpcmVj
dGlvbigpLCBpdGVtU3R5bGUuaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkpOwogICAgICAgICBj
b250ZXh0LnNldEZpbGxDb2xvcihvcHRpb25UZXh0Q29sb3IpOwogCiAgICAgICAgIEZvbnRDYXNj
YWRlIGl0ZW1Gb250ID0gbV9mb250OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21w
bGV4TGluZUxheW91dC5jcHAKaW5kZXggZGNkMDQ2MTMxZTE2YzNmMjNlMDJhYjdmMDYzMDRjYzk4
OWIyZTM1MS4uZTVjYzk5MjZhNmRhZTBmYmFmMzJmMjA3ZGFhYjZmYjQ4Y2EwMGY0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwCkBAIC03MzQs
MTEgKzczNCwxMSBAQCBzdGF0aWMgaW5saW5lIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJl
aGF2aW9yRm9ySW5saW5lVGV4dEJveChSZW5kZXJCbG9ja0ZsbwogewogICAgIC8vIFRhdGVjaHV5
b2tvIGlzIG1vZGVsZWQgYXMgdGhlIE9iamVjdCBSZXBsYWNlbWVudCBDaGFyYWN0ZXIgKFUrRkZG
QyksIHdoaWNoIGNhbiBuZXZlciBoYXZlIGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGluc2lkZSBu
b3IgaW50cmluc2ljYWxseSBhZGphY2VudCB0byBpdC4KICAgICBpZiAodGV4dEJveC5yZW5kZXJl
cigpLnN0eWxlKCkudGV4dENvbWJpbmUoKSA9PSBUZXh0Q29tYmluZTo6SG9yaXpvbnRhbCkKLSAg
ICAgICAgcmV0dXJuIEZvcmJpZExlYWRpbmdFeHBhbnNpb24gfCBGb3JiaWRUcmFpbGluZ0V4cGFu
c2lvbjsKKyAgICAgICAgcmV0dXJuIEZvcmJpZExlZnRFeHBhbnNpb24gfCBGb3JiaWRSaWdodEV4
cGFuc2lvbjsKIAogICAgIEV4cGFuc2lvbkJlaGF2aW9yIHJlc3VsdCA9IDA7Ci0gICAgYm9vbCBz
ZXRMZWFkaW5nRXhwYW5zaW9uID0gZmFsc2U7Ci0gICAgYm9vbCBzZXRUcmFpbGluZ0V4cGFuc2lv
biA9IGZhbHNlOworICAgIGJvb2wgc2V0TGVmdEV4cGFuc2lvbiA9IGZhbHNlOworICAgIGJvb2wg
c2V0UmlnaHRFeHBhbnNpb24gPSBmYWxzZTsKICAgICBpZiAodGV4dEFsaWduID09IFRleHRBbGln
bk1vZGU6Okp1c3RpZnkpIHsKICAgICAgICAgLy8gSWYgdGhlIG5leHQgYm94IGlzIHJ1YnksIGFu
ZCB3ZSdyZSBqdXN0aWZ5aW5nLCBhbmQgdGhlIGZpcnN0IGJveCBpbiB0aGUgcnVieSBiYXNlIGhh
cyBhIGxlYWRpbmcgZXhwYW5zaW9uLCBhbmQgd2UgYXJlIGEgdGV4dCBib3gsIHRoZW4gZm9yY2Ug
YSB0cmFpbGluZyBleHBhbnNpb24uCiAgICAgICAgIGlmIChuZXh0UnVuICYmIGlzPFJlbmRlclJ1
YnlSdW4+KG5leHRSdW4tPnJlbmRlcmVyKCkpICYmIGRvd25jYXN0PFJlbmRlclJ1YnlSdW4+KG5l
eHRSdW4tPnJlbmRlcmVyKCkpLnJ1YnlCYXNlKCkgJiYgbmV4dFJ1bi0+cmVuZGVyZXIoKS5zdHls
ZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB7CkBAIC03NDYsMTAgKzc0NiwxMCBAQCBzdGF0aWMg
aW5saW5lIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yRm9ySW5saW5lVGV4dEJv
eChSZW5kZXJCbG9ja0ZsbwogICAgICAgICAgICAgaWYgKHJ1YnlCYXNlLmZpcnN0Um9vdEJveCgp
ICYmICFydWJ5QmFzZS5maXJzdFJvb3RCb3goKS0+bmV4dFJvb3RCb3goKSkgewogICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBsZWFmQ2hpbGQgPSBydWJ5QmFzZS5maXJzdFJvb3RCb3goKS0+Zmly
c3RMZWFmRGVzY2VuZGFudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpczxJbmxpbmVU
ZXh0Qm94PigqbGVhZkNoaWxkKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFRoaXMgbGVhZGluZ0V4cGFuc2lvbk9wcG9ydHVuaXR5IGRvZXNuJ3QgYWN0dWFsbHkgd29yayBi
ZWNhdXNlIGl0IGRvZXNuJ3QgcGVyZm9ybSB0aGUgVUJBCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoRm9udENhc2NhZGU6OmxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eShkb3duY2FzdDxS
ZW5kZXJUZXh0PihsZWFmQ2hpbGQtPnJlbmRlcmVyKCkpLnN0cmluZ1ZpZXcoKSwgbGVhZkNoaWxk
LT5kaXJlY3Rpb24oKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUcmFpbGlu
Z0V4cGFuc2lvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0IHw9
IEZvcmNlVHJhaWxpbmdFeHBhbnNpb247CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogVGhpcyBsZWZ0RXhwYW5zaW9uT3Bwb3J0dW5pdHkgZG9lc24ndCBhY3R1YWxseSB3b3JrIGJl
Y2F1c2UgaXQgZG9lc24ndCBwZXJmb3JtIHRoZSBVQkEKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChGb250Q2FzY2FkZTo6bGVmdEV4cGFuc2lvbk9wcG9ydHVuaXR5KGRvd25jYXN0PFJlbmRl
clRleHQ+KGxlYWZDaGlsZC0+cmVuZGVyZXIoKSkuc3RyaW5nVmlldygpLCBsZWFmQ2hpbGQtPmRp
cmVjdGlvbigpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJpZ2h0RXhwYW5z
aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgfD0gRm9yY2VS
aWdodEV4cGFuc2lvbjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTc2MSwxMCArNzYxLDEwIEBAIHN0YXRpYyBp
bmxpbmUgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3JGb3JJbmxpbmVUZXh0Qm94
KFJlbmRlckJsb2NrRmxvCiAgICAgICAgICAgICBpZiAocnVieUJhc2UuZmlyc3RSb290Qm94KCkg
JiYgIXJ1YnlCYXNlLmZpcnN0Um9vdEJveCgpLT5uZXh0Um9vdEJveCgpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGF1dG8qIGxlYWZDaGlsZCA9IHJ1YnlCYXNlLmZpcnN0Um9vdEJveCgpLT5sYXN0
TGVhZkRlc2NlbmRhbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoaXM8SW5saW5lVGV4
dEJveD4oKmxlYWZDaGlsZCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eSBkb2Vzbid0IGFjdHVhbGx5IHdvcmsgYmVj
YXVzZSBpdCBkb2Vzbid0IHBlcmZvcm0gdGhlIFVCQQotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKEZvbnRDYXNjYWRlOjp0cmFpbGluZ0V4cGFuc2lvbk9wcG9ydHVuaXR5KGRvd25jYXN0PFJl
bmRlclRleHQ+KGxlYWZDaGlsZC0+cmVuZGVyZXIoKSkuc3RyaW5nVmlldygpLCBsZWFmQ2hpbGQt
PmRpcmVjdGlvbigpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExlYWRpbmdF
eHBhbnNpb24gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8PSBG
b3JjZUxlYWRpbmdFeHBhbnNpb247CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBsZWZ0RXhwYW5zaW9uT3Bwb3J0dW5pdHkgZG9lc24ndCBhY3R1YWxseSB3b3JrIGJlY2F1
c2UgaXQgZG9lc24ndCBwZXJmb3JtIHRoZSBVQkEKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChGb250Q2FzY2FkZTo6cmlnaHRFeHBhbnNpb25PcHBvcnR1bml0eShkb3duY2FzdDxSZW5kZXJU
ZXh0PihsZWFmQ2hpbGQtPnJlbmRlcmVyKCkpLnN0cmluZ1ZpZXcoKSwgbGVhZkNoaWxkLT5kaXJl
Y3Rpb24oKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMZWZ0RXhwYW5zaW9u
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgfD0gRm9yY2VMZWZ0
RXhwYW5zaW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtNzc0LDQ2ICs3NzQsNDYgQEAgc3RhdGljIGlubGlu
ZSBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvckZvcklubGluZVRleHRCb3goUmVu
ZGVyQmxvY2tGbG8KICAgICAgICAgaWYgKGlzPFJlbmRlclJ1YnlCYXNlPihibG9jaykpIHsKICAg
ICAgICAgICAgIFJlbmRlclJ1YnlCYXNlJiBydWJ5QmFzZSA9IGRvd25jYXN0PFJlbmRlclJ1YnlC
YXNlPihibG9jayk7CiAgICAgICAgICAgICBpZiAoJnRleHRCb3ggPT0gcnVieUJhc2UuZmlyc3RS
b290Qm94KCktPmZpcnN0TGVhZkRlc2NlbmRhbnQoKSkgewotICAgICAgICAgICAgICAgIHNldExl
YWRpbmdFeHBhbnNpb24gPSB0cnVlOwotICAgICAgICAgICAgICAgIHJlc3VsdCB8PSBGb3JiaWRM
ZWFkaW5nRXhwYW5zaW9uOworICAgICAgICAgICAgICAgIHNldExlZnRFeHBhbnNpb24gPSB0cnVl
OworICAgICAgICAgICAgICAgIHJlc3VsdCB8PSBGb3JiaWRMZWZ0RXhwYW5zaW9uOwogICAgICAg
ICAgICAgfSBpZiAoJnRleHRCb3ggPT0gcnVieUJhc2UuZmlyc3RSb290Qm94KCktPmxhc3RMZWFm
RGVzY2VuZGFudCgpKSB7Ci0gICAgICAgICAgICAgICAgc2V0VHJhaWxpbmdFeHBhbnNpb24gPSB0
cnVlOwotICAgICAgICAgICAgICAgIHJlc3VsdCB8PSBGb3JiaWRUcmFpbGluZ0V4cGFuc2lvbjsK
KyAgICAgICAgICAgICAgICBzZXRSaWdodEV4cGFuc2lvbiA9IHRydWU7CisgICAgICAgICAgICAg
ICAgcmVzdWx0IHw9IEZvcmJpZFJpZ2h0RXhwYW5zaW9uOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQotICAgIGlmICghc2V0TGVhZGluZ0V4cGFuc2lvbikKLSAgICAgICAgcmVzdWx0
IHw9IGlzQWZ0ZXJFeHBhbnNpb24gPyBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uIDogQWxsb3dMZWFk
aW5nRXhwYW5zaW9uOwotICAgIGlmICghc2V0VHJhaWxpbmdFeHBhbnNpb24pCi0gICAgICAgIHJl
c3VsdCB8PSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uOworICAgIGlmICghc2V0TGVmdEV4cGFuc2lv
bikKKyAgICAgICAgcmVzdWx0IHw9IGlzQWZ0ZXJFeHBhbnNpb24gPyBGb3JiaWRMZWZ0RXhwYW5z
aW9uIDogQWxsb3dMZWZ0RXhwYW5zaW9uOworICAgIGlmICghc2V0UmlnaHRFeHBhbnNpb24pCisg
ICAgICAgIHJlc3VsdCB8PSBBbGxvd1JpZ2h0RXhwYW5zaW9uOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseUV4cGFuc2lvbkJlaGF2aW9yKElubGluZVRl
eHRCb3gmIHRleHRCb3gsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yKQogewot
ICAgIHN3aXRjaCAoZXhwYW5zaW9uQmVoYXZpb3IgJiBMZWFkaW5nRXhwYW5zaW9uTWFzaykgewot
ICAgIGNhc2UgRm9yY2VMZWFkaW5nRXhwYW5zaW9uOgotICAgICAgICB0ZXh0Qm94LnNldEZvcmNl
TGVhZGluZ0V4cGFuc2lvbigpOworICAgIHN3aXRjaCAoZXhwYW5zaW9uQmVoYXZpb3IgJiBMZWZ0
RXhwYW5zaW9uTWFzaykgeworICAgIGNhc2UgRm9yY2VMZWZ0RXhwYW5zaW9uOgorICAgICAgICB0
ZXh0Qm94LnNldEZvcmNlTGVmdEV4cGFuc2lvbigpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEZvcmJpZExlYWRpbmdFeHBhbnNpb246Ci0gICAgICAgIHRleHRCb3guc2V0Q2FuSGF2ZUxlYWRp
bmdFeHBhbnNpb24oZmFsc2UpOworICAgIGNhc2UgRm9yYmlkTGVmdEV4cGFuc2lvbjoKKyAgICAg
ICAgdGV4dEJveC5zZXRDYW5IYXZlTGVmdEV4cGFuc2lvbihmYWxzZSk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQWxsb3dMZWFkaW5nRXhwYW5zaW9uOgotICAgICAgICB0ZXh0Qm94LnNldENh
bkhhdmVMZWFkaW5nRXhwYW5zaW9uKHRydWUpOworICAgIGNhc2UgQWxsb3dMZWZ0RXhwYW5zaW9u
OgorICAgICAgICB0ZXh0Qm94LnNldENhbkhhdmVMZWZ0RXhwYW5zaW9uKHRydWUpOwogICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIHN3aXRjaCAoZXhwYW5zaW9uQmVoYXZpb3IgJiBUcmFp
bGluZ0V4cGFuc2lvbk1hc2spIHsKLSAgICBjYXNlIEZvcmNlVHJhaWxpbmdFeHBhbnNpb246Ci0g
ICAgICAgIHRleHRCb3guc2V0Rm9yY2VUcmFpbGluZ0V4cGFuc2lvbigpOworICAgIHN3aXRjaCAo
ZXhwYW5zaW9uQmVoYXZpb3IgJiBSaWdodEV4cGFuc2lvbk1hc2spIHsKKyAgICBjYXNlIEZvcmNl
UmlnaHRFeHBhbnNpb246CisgICAgICAgIHRleHRCb3guc2V0Rm9yY2VSaWdodEV4cGFuc2lvbigp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uOgotICAg
ICAgICB0ZXh0Qm94LnNldENhbkhhdmVUcmFpbGluZ0V4cGFuc2lvbihmYWxzZSk7CisgICAgY2Fz
ZSBGb3JiaWRSaWdodEV4cGFuc2lvbjoKKyAgICAgICAgdGV4dEJveC5zZXRDYW5IYXZlUmlnaHRF
eHBhbnNpb24oZmFsc2UpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFsbG93VHJhaWxpbmdF
eHBhbnNpb246Ci0gICAgICAgIHRleHRCb3guc2V0Q2FuSGF2ZVRyYWlsaW5nRXhwYW5zaW9uKHRy
dWUpOworICAgIGNhc2UgQWxsb3dSaWdodEV4cGFuc2lvbjoKKyAgICAgICAgdGV4dEJveC5zZXRD
YW5IYXZlUmlnaHRFeHBhbnNpb24odHJ1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
bGxpcHNpc0JveC5jcHAKaW5kZXggYmExMzEwZGE1ZTE5NzI4MGEwZTM2NjI4MWNhZGJhY2E4ODMx
NDg5MS4uZGJjNWE0MjcwOGI3MWQ0ODlhYTQ5OTkzYjcxOGQ4ODMxMzIxMTIzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQg
RWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQsIExhCiAgICAgfQogCiAgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIGFs
d2F5cyBMVFI/IEZpeCBieSBwYXNzaW5nIGNvcnJlY3QgdGV4dCBydW4gZmxhZ3MgYmVsb3cuCi0g
ICAgY29udGV4dC5kcmF3VGV4dChmb250LCBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1biht
X3N0ciwgbGluZVN0eWxlLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSwgTGF5b3V0UG9pbnQoeCgp
ICsgcGFpbnRPZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkgKyBsaW5lU3R5bGUuZm9u
dE1ldHJpY3MoKS5hc2NlbnQoKSkpOworICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV9zdHIsIGxpbmVTdHlsZSwgQWxsb3dSaWdodEV4cGFu
c2lvbiksIExheW91dFBvaW50KHgoKSArIHBhaW50T2Zmc2V0LngoKSwgeSgpICsgcGFpbnRPZmZz
ZXQueSgpICsgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpKTsKIAogICAgIC8vIFJl
c3RvcmUgdGhlIHJlZ3VsYXIgZmlsbCBjb2xvci4KICAgICBpZiAodGV4dENvbG9yICE9IGNvbnRl
eHQuZmlsbENvbG9yKCkpCkBAIC0xMTksNyArMTE5LDcgQEAgSW50UmVjdCBFbGxpcHNpc0JveDo6
c2VsZWN0aW9uUmVjdCgpCiAgICAgY29uc3QgUm9vdElubGluZUJveCYgcm9vdEJveCA9IHJvb3Qo
KTsKICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3YXlzIExUUj8gRml4IGJ5IHBhc3Npbmcg
Y29ycmVjdCB0ZXh0IHJ1biBmbGFncyBiZWxvdy4KICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJl
Y3QgeyBMYXlvdXRVbml0KHgoKSksIExheW91dFVuaXQoeSgpICsgcm9vdEJveC5zZWxlY3Rpb25U
b3BBZGp1c3RlZEZvclByZWNlZGluZ0Jsb2NrKCkpLCAwX2x1LCByb290Qm94LnNlbGVjdGlvbkhl
aWdodEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2soKSB9OwotICAgIGZvbnQuYWRqdXN0U2VsZWN0
aW9uUmVjdEZvclRleHQoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV9zdHIsIGxpbmVT
dHlsZSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiksIHNlbGVjdGlvblJlY3QpOworICAgIGZvbnQu
YWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4o
bV9zdHIsIGxpbmVTdHlsZSwgQWxsb3dSaWdodEV4cGFuc2lvbiksIHNlbGVjdGlvblJlY3QpOwog
ICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uYWwgcGl4ZWwgc25hcHBpbmcgaW5zdGVhZC4KICAg
ICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChzZWxlY3Rpb25SZWN0KTsKIH0KQEAgLTE0MCw3ICsx
NDAsNyBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3
YXlzIExUUj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1biBmbGFncyBiZWxvdy4KICAg
ICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgeyBMYXlvdXRVbml0KHgoKSArIHBhaW50T2Zmc2V0
LngoKSksIExheW91dFVuaXQoeSgpICsgcGFpbnRPZmZzZXQueSgpICsgcm9vdEJveC5zZWxlY3Rp
b25Ub3AoKSksIDBfbHUsIHJvb3RCb3guc2VsZWN0aW9uSGVpZ2h0KCkgfTsKLSAgICBUZXh0UnVu
IHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fc3RyLCBzdHlsZSwgQWxsb3dU
cmFpbGluZ0V4cGFuc2lvbik7CisgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3Ry
dWN0VGV4dFJ1bihtX3N0ciwgc3R5bGUsIEFsbG93UmlnaHRFeHBhbnNpb24pOwogICAgIGZvbnQu
YWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQocnVuLCBzZWxlY3Rpb25SZWN0KTsKICAgICBjb250
ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihz
ZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwg
cnVuLmx0cigpKSwgYyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKaW5kZXgg
NTlhMTFkNmE0OGE4MzM4ZDdlMGJhNWU2NDQxNzI5YjFmNDc5OWViNC4uYmVjZGZjZTc2Y2IzZGQ3
MjMwMDdjZjM5NjNmMDhhOGIyZGJjMzFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVC
b3guaApAQCAtMjgxLDEwICsyODEsMTAgQEAgcHVibGljOgogICAgIGZsb2F0IGV4cGFuc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5zaW9uOyB9CiAKICAgICB2b2lkIHNldEhhc0h5cGhlbihi
b29sIGhhc0h5cGhlbikgeyBtX2JpdGZpZWxkcy5zZXRIYXNFbGxpcHNpc0JveE9ySHlwaGVuKGhh
c0h5cGhlbik7IH0KLSAgICB2b2lkIHNldENhbkhhdmVMZWFkaW5nRXhwYW5zaW9uKGJvb2wgY2Fu
SGF2ZUxlYWRpbmdFeHBhbnNpb24pIHsgbV9iaXRmaWVsZHMuc2V0SGFzU2VsZWN0ZWRDaGlsZHJl
bk9yQ2FuSGF2ZUxlYWRpbmdFeHBhbnNpb24oY2FuSGF2ZUxlYWRpbmdFeHBhbnNpb24pOyB9Ci0g
ICAgdm9pZCBzZXRDYW5IYXZlVHJhaWxpbmdFeHBhbnNpb24oYm9vbCBjYW5IYXZlVHJhaWxpbmdF
eHBhbnNpb24pIHsgbV9iaXRmaWVsZHMuc2V0Q2FuSGF2ZVRyYWlsaW5nRXhwYW5zaW9uKGNhbkhh
dmVUcmFpbGluZ0V4cGFuc2lvbik7IH0KLSAgICB2b2lkIHNldEZvcmNlVHJhaWxpbmdFeHBhbnNp
b24oKSB7IG1fYml0ZmllbGRzLnNldEZvcmNlVHJhaWxpbmdFeHBhbnNpb24odHJ1ZSk7IH0KLSAg
ICB2b2lkIHNldEZvcmNlTGVhZGluZ0V4cGFuc2lvbigpIHsgbV9iaXRmaWVsZHMuc2V0Rm9yY2VM
ZWFkaW5nRXhwYW5zaW9uKHRydWUpOyB9CisgICAgdm9pZCBzZXRDYW5IYXZlTGVmdEV4cGFuc2lv
bihib29sIGNhbkhhdmVMZWZ0RXhwYW5zaW9uKSB7IG1fYml0ZmllbGRzLnNldEhhc1NlbGVjdGVk
Q2hpbGRyZW5PckNhbkhhdmVMZWZ0RXhwYW5zaW9uKGNhbkhhdmVMZWZ0RXhwYW5zaW9uKTsgfQor
ICAgIHZvaWQgc2V0Q2FuSGF2ZVJpZ2h0RXhwYW5zaW9uKGJvb2wgY2FuSGF2ZVJpZ2h0RXhwYW5z
aW9uKSB7IG1fYml0ZmllbGRzLnNldENhbkhhdmVSaWdodEV4cGFuc2lvbihjYW5IYXZlUmlnaHRF
eHBhbnNpb24pOyB9CisgICAgdm9pZCBzZXRGb3JjZVJpZ2h0RXhwYW5zaW9uKCkgeyBtX2JpdGZp
ZWxkcy5zZXRGb3JjZVJpZ2h0RXhwYW5zaW9uKHRydWUpOyB9CisgICAgdm9pZCBzZXRGb3JjZUxl
ZnRFeHBhbnNpb24oKSB7IG1fYml0ZmllbGRzLnNldEZvcmNlTGVmdEV4cGFuc2lvbih0cnVlKTsg
fQogCiBwcml2YXRlOgogICAgIElubGluZUJveCogbV9uZXh0T25MaW5lIHsgbnVsbHB0ciB9OyAv
LyBUaGUgbmV4dCBlbGVtZW50IG9uIHRoZSBzYW1lIGxpbmUgYXMgdXMuCkBAIC0zMTcsMTQgKzMx
NywxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgLCBtX2hhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0
KGZhbHNlKQogICAgICAgICAgICAgLCBtX2lzSG9yaXpvbnRhbChpc0hvcml6b250YWwpCiAgICAg
ICAgICAgICAsIG1fZW5kc1dpdGhCcmVhayhmYWxzZSkKLSAgICAgICAgICAgICwgbV9oYXNTZWxl
Y3RlZENoaWxkcmVuT3JDYW5IYXZlTGVhZGluZ0V4cGFuc2lvbihmYWxzZSkKLSAgICAgICAgICAg
ICwgbV9jYW5IYXZlVHJhaWxpbmdFeHBhbnNpb24oZmFsc2UpCisgICAgICAgICAgICAsIG1faGFz
U2VsZWN0ZWRDaGlsZHJlbk9yQ2FuSGF2ZUxlZnRFeHBhbnNpb24oZmFsc2UpCisgICAgICAgICAg
ICAsIG1fY2FuSGF2ZVJpZ2h0RXhwYW5zaW9uKGZhbHNlKQogICAgICAgICAgICAgLCBtX2tub3du
VG9IYXZlTm9PdmVyZmxvdyh0cnVlKSAgCiAgICAgICAgICAgICAsIG1faGFzRWxsaXBzaXNCb3hP
ckh5cGhlbihmYWxzZSkKICAgICAgICAgICAgICwgbV9kaXJPdmVycmlkZShmYWxzZSkKICAgICAg
ICAgICAgICwgbV9iZWhhdmVzTGlrZVRleHQoZmFsc2UpCi0gICAgICAgICAgICAsIG1fZm9yY2VU
cmFpbGluZ0V4cGFuc2lvbihmYWxzZSkKLSAgICAgICAgICAgICwgbV9mb3JjZUxlYWRpbmdFeHBh
bnNpb24oZmFsc2UpCisgICAgICAgICAgICAsIG1fZm9yY2VSaWdodEV4cGFuc2lvbihmYWxzZSkK
KyAgICAgICAgICAgICwgbV9mb3JjZUxlZnRFeHBhbnNpb24oZmFsc2UpCiAgICAgICAgICAgICAs
IG1fZGV0ZXJtaW5lZElmTmV4dE9uTGluZUV4aXN0cyhmYWxzZSkKICAgICAgICAgICAgICwgbV9u
ZXh0T25MaW5lRXhpc3RzKGZhbHNlKQogICAgICAgICB7CkBAIC0zNDksMTUgKzM0OSwxNSBAQCBw
cml2YXRlOgogICAgICAgICAvLyBmb3IgUm9vdElubGluZUJveAogICAgICAgICBBRERfQk9PTEVB
Tl9CSVRGSUVMRChlbmRzV2l0aEJyZWFrLCBFbmRzV2l0aEJyZWFrKTsgLy8gV2hldGhlciB0aGUg
bGluZSBlbmRzIHdpdGggYSA8YnI+LgogICAgICAgICAvLyBzaGFyZWQgYmV0d2VlbiBSb290SW5s
aW5lQm94IGFuZCBJbmxpbmVUZXh0Qm94Ci0gICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGhh
c1NlbGVjdGVkQ2hpbGRyZW5PckNhbkhhdmVMZWFkaW5nRXhwYW5zaW9uLCBIYXNTZWxlY3RlZENo
aWxkcmVuT3JDYW5IYXZlTGVhZGluZ0V4cGFuc2lvbik7Ci0gICAgICAgIEFERF9CT09MRUFOX0JJ
VEZJRUxEKGNhbkhhdmVUcmFpbGluZ0V4cGFuc2lvbiwgQ2FuSGF2ZVRyYWlsaW5nRXhwYW5zaW9u
KTsKKyAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaGFzU2VsZWN0ZWRDaGlsZHJlbk9yQ2Fu
SGF2ZUxlZnRFeHBhbnNpb24sIEhhc1NlbGVjdGVkQ2hpbGRyZW5PckNhbkhhdmVMZWZ0RXhwYW5z
aW9uKTsKKyAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoY2FuSGF2ZVJpZ2h0RXhwYW5zaW9u
LCBDYW5IYXZlUmlnaHRFeHBhbnNpb24pOwogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChr
bm93blRvSGF2ZU5vT3ZlcmZsb3csIEtub3duVG9IYXZlTm9PdmVyZmxvdyk7CiAgICAgICAgIEFE
RF9CT09MRUFOX0JJVEZJRUxEKGhhc0VsbGlwc2lzQm94T3JIeXBoZW4sIEhhc0VsbGlwc2lzQm94
T3JIeXBoZW4pOwogICAgICAgICAvLyBmb3IgSW5saW5lVGV4dEJveAogICAgICAgICBBRERfQk9P
TEVBTl9CSVRGSUVMRChkaXJPdmVycmlkZSwgRGlyT3ZlcnJpZGUpOwogICAgICAgICBBRERfQk9P
TEVBTl9CSVRGSUVMRChiZWhhdmVzTGlrZVRleHQsIEJlaGF2ZXNMaWtlVGV4dCk7IC8vIFdoZXRo
ZXIgb3Igbm90IHRoaXMgb2JqZWN0IHJlcHJlc2VudHMgdGV4dCB3aXRoIGEgbm9uLXplcm8gaGVp
Z2h0LiBJbmNsdWRlcyBub24taW1hZ2UgbGlzdCBtYXJrZXJzLCB0ZXh0IGJveGVzLCBici4KLSAg
ICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoZm9yY2VUcmFpbGluZ0V4cGFuc2lvbiwgRm9yY2VU
cmFpbGluZ0V4cGFuc2lvbik7Ci0gICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGZvcmNlTGVh
ZGluZ0V4cGFuc2lvbiwgRm9yY2VMZWFkaW5nRXhwYW5zaW9uKTsKKyAgICAgICAgQUREX0JPT0xF
QU5fQklURklFTEQoZm9yY2VSaWdodEV4cGFuc2lvbiwgRm9yY2VSaWdodEV4cGFuc2lvbik7Cisg
ICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGZvcmNlTGVmdEV4cGFuc2lvbiwgRm9yY2VMZWZ0
RXhwYW5zaW9uKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIG11dGFibGUgdW5zaWduZWQgbV9k
ZXRlcm1pbmVkSWZOZXh0T25MaW5lRXhpc3RzIDogMTsKQEAgLTM5OCwxNiArMzk4LDE2IEBAIHBy
b3RlY3RlZDoKICAgICBib29sIGVuZHNXaXRoQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX2JpdGZp
ZWxkcy5lbmRzV2l0aEJyZWFrKCk7IH0KICAgICB2b2lkIHNldEVuZHNXaXRoQnJlYWsoYm9vbCBl
bmRzV2l0aEJyZWFrKSB7IG1fYml0ZmllbGRzLnNldEVuZHNXaXRoQnJlYWsoZW5kc1dpdGhCcmVh
ayk7IH0KICAgICBib29sIGhhc0VsbGlwc2lzQm94KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVs
ZHMuaGFzRWxsaXBzaXNCb3hPckh5cGhlbigpOyB9Ci0gICAgYm9vbCBoYXNTZWxlY3RlZENoaWxk
cmVuKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaGFzU2VsZWN0ZWRDaGlsZHJlbk9yQ2Fu
SGF2ZUxlYWRpbmdFeHBhbnNpb24oKTsgfQotICAgIHZvaWQgc2V0SGFzU2VsZWN0ZWRDaGlsZHJl
bihib29sIGhhc1NlbGVjdGVkQ2hpbGRyZW4pIHsgbV9iaXRmaWVsZHMuc2V0SGFzU2VsZWN0ZWRD
aGlsZHJlbk9yQ2FuSGF2ZUxlYWRpbmdFeHBhbnNpb24oaGFzU2VsZWN0ZWRDaGlsZHJlbik7IH0K
KyAgICBib29sIGhhc1NlbGVjdGVkQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxk
cy5oYXNTZWxlY3RlZENoaWxkcmVuT3JDYW5IYXZlTGVmdEV4cGFuc2lvbigpOyB9CisgICAgdm9p
ZCBzZXRIYXNTZWxlY3RlZENoaWxkcmVuKGJvb2wgaGFzU2VsZWN0ZWRDaGlsZHJlbikgeyBtX2Jp
dGZpZWxkcy5zZXRIYXNTZWxlY3RlZENoaWxkcmVuT3JDYW5IYXZlTGVmdEV4cGFuc2lvbihoYXNT
ZWxlY3RlZENoaWxkcmVuKTsgfQogICAgIHZvaWQgc2V0SGFzRWxsaXBzaXNCb3goYm9vbCBoYXNF
bGxpcHNpc0JveCkgeyBtX2JpdGZpZWxkcy5zZXRIYXNFbGxpcHNpc0JveE9ySHlwaGVuKGhhc0Vs
bGlwc2lzQm94KTsgfQogCiAgICAgLy8gRm9yIElubGluZVRleHRCb3gKICAgICBib29sIGhhc0h5
cGhlbigpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc0VsbGlwc2lzQm94T3JIeXBoZW4o
KTsgfQotICAgIGJvb2wgY2FuSGF2ZUxlYWRpbmdFeHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBt
X2JpdGZpZWxkcy5oYXNTZWxlY3RlZENoaWxkcmVuT3JDYW5IYXZlTGVhZGluZ0V4cGFuc2lvbigp
OyB9Ci0gICAgYm9vbCBjYW5IYXZlVHJhaWxpbmdFeHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBt
X2JpdGZpZWxkcy5jYW5IYXZlVHJhaWxpbmdFeHBhbnNpb24oKTsgfQotICAgIGJvb2wgZm9yY2VU
cmFpbGluZ0V4cGFuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmZvcmNlVHJhaWxp
bmdFeHBhbnNpb24oKTsgfQotICAgIGJvb2wgZm9yY2VMZWFkaW5nRXhwYW5zaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRmaWVsZHMuZm9yY2VMZWFkaW5nRXhwYW5zaW9uKCk7IH0KKyAgICBib29s
IGNhbkhhdmVMZWZ0RXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaGFzU2Vs
ZWN0ZWRDaGlsZHJlbk9yQ2FuSGF2ZUxlZnRFeHBhbnNpb24oKTsgfQorICAgIGJvb2wgY2FuSGF2
ZVJpZ2h0RXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuY2FuSGF2ZVJpZ2h0
RXhwYW5zaW9uKCk7IH0KKyAgICBib29sIGZvcmNlUmlnaHRFeHBhbnNpb24oKSBjb25zdCB7IHJl
dHVybiBtX2JpdGZpZWxkcy5mb3JjZVJpZ2h0RXhwYW5zaW9uKCk7IH0KKyAgICBib29sIGZvcmNl
TGVmdEV4cGFuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmZvcmNlTGVmdEV4cGFu
c2lvbigpOyB9CiAgICAgCiAgICAgLy8gRm9yIElubGluZUZsb3dCb3ggYW5kIElubGluZVRleHRC
b3gKICAgICBib29sIGV4dHJhY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmV4dHJh
Y3RlZCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5k
ZXggZDk2MjZmYjEzZWQ3NTNlNDIxNmNjNjEyMzcwMmI1NTkxMGQ1MjI2YS4uMTI2N2YwMWZkNTE5
N2E1MjkwZjYyNGEyMzFiZWJlMDc2ZDY0NGIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMTQ0MCwyMyArMTQ0MCwyMyBAQCBpbmxpbmUgY29uc3Qg
UmVuZGVyQ29tYmluZVRleHQqIElubGluZVRleHRCb3g6OmNvbWJpbmVkVGV4dCgpIGNvbnN0CiAK
IEV4cGFuc2lvbkJlaGF2aW9yIElubGluZVRleHRCb3g6OmV4cGFuc2lvbkJlaGF2aW9yKCkgY29u
c3QKIHsKLSAgICBFeHBhbnNpb25CZWhhdmlvciBsZWFkaW5nQmVoYXZpb3I7Ci0gICAgaWYgKGZv
cmNlTGVhZGluZ0V4cGFuc2lvbigpKQotICAgICAgICBsZWFkaW5nQmVoYXZpb3IgPSBGb3JjZUxl
YWRpbmdFeHBhbnNpb247Ci0gICAgZWxzZSBpZiAoY2FuSGF2ZUxlYWRpbmdFeHBhbnNpb24oKSkK
LSAgICAgICAgbGVhZGluZ0JlaGF2aW9yID0gQWxsb3dMZWFkaW5nRXhwYW5zaW9uOworICAgIEV4
cGFuc2lvbkJlaGF2aW9yIGxlZnRCZWhhdmlvcjsKKyAgICBpZiAoZm9yY2VMZWZ0RXhwYW5zaW9u
KCkpCisgICAgICAgIGxlZnRCZWhhdmlvciA9IEZvcmNlTGVmdEV4cGFuc2lvbjsKKyAgICBlbHNl
IGlmIChjYW5IYXZlTGVmdEV4cGFuc2lvbigpKQorICAgICAgICBsZWZ0QmVoYXZpb3IgPSBBbGxv
d0xlZnRFeHBhbnNpb247CiAgICAgZWxzZQotICAgICAgICBsZWFkaW5nQmVoYXZpb3IgPSBGb3Ji
aWRMZWFkaW5nRXhwYW5zaW9uOworICAgICAgICBsZWZ0QmVoYXZpb3IgPSBGb3JiaWRMZWZ0RXhw
YW5zaW9uOwogCi0gICAgRXhwYW5zaW9uQmVoYXZpb3IgdHJhaWxpbmdCZWhhdmlvcjsKLSAgICBp
ZiAoZm9yY2VUcmFpbGluZ0V4cGFuc2lvbigpKQotICAgICAgICB0cmFpbGluZ0JlaGF2aW9yID0g
Rm9yY2VUcmFpbGluZ0V4cGFuc2lvbjsKKyAgICBFeHBhbnNpb25CZWhhdmlvciByaWdodEJlaGF2
aW9yOworICAgIGlmIChmb3JjZVJpZ2h0RXhwYW5zaW9uKCkpCisgICAgICAgIHJpZ2h0QmVoYXZp
b3IgPSBGb3JjZVJpZ2h0RXhwYW5zaW9uOwogICAgIGVsc2UgaWYgKGV4cGFuc2lvbigpICYmIG5l
eHRMZWFmT25MaW5lKCkgJiYgIW5leHRMZWFmT25MaW5lKCktPmlzTGluZUJyZWFrKCkpCi0gICAg
ICAgIHRyYWlsaW5nQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uOworICAgICAgICBy
aWdodEJlaGF2aW9yID0gQWxsb3dSaWdodEV4cGFuc2lvbjsKICAgICBlbHNlCi0gICAgICAgIHRy
YWlsaW5nQmVoYXZpb3IgPSBGb3JiaWRUcmFpbGluZ0V4cGFuc2lvbjsKKyAgICAgICAgcmlnaHRC
ZWhhdmlvciA9IEZvcmJpZFJpZ2h0RXhwYW5zaW9uOwogCi0gICAgcmV0dXJuIGxlYWRpbmdCZWhh
dmlvciB8IHRyYWlsaW5nQmVoYXZpb3I7CisgICAgcmV0dXJuIGxlZnRCZWhhdmlvciB8IHJpZ2h0
QmVoYXZpb3I7CiB9CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guaAppbmRleCA4Nzg0ZDg1YWViYjRhYWQyOTdlNzk1YzZi
NGNjNTc1ZmFhNmMxODZiLi44NjdjZmQ0MTY1OTlkNzIzZDIwZDk0NzI0MjhmNTBhNjk0NGEwYmI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKQEAgLTgwLDE0ICs4
MCwxNCBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBJbmxpbmVCb3g6Omhhc0h5cGhlbjsKICAgICB1
c2luZyBJbmxpbmVCb3g6OnNldEhhc0h5cGhlbjsKLSAgICB1c2luZyBJbmxpbmVCb3g6OmNhbkhh
dmVMZWFkaW5nRXhwYW5zaW9uOwotICAgIHVzaW5nIElubGluZUJveDo6c2V0Q2FuSGF2ZUxlYWRp
bmdFeHBhbnNpb247Ci0gICAgdXNpbmcgSW5saW5lQm94OjpjYW5IYXZlVHJhaWxpbmdFeHBhbnNp
b247Ci0gICAgdXNpbmcgSW5saW5lQm94OjpzZXRDYW5IYXZlVHJhaWxpbmdFeHBhbnNpb247Ci0g
ICAgdXNpbmcgSW5saW5lQm94Ojpmb3JjZVRyYWlsaW5nRXhwYW5zaW9uOwotICAgIHVzaW5nIElu
bGluZUJveDo6c2V0Rm9yY2VUcmFpbGluZ0V4cGFuc2lvbjsKLSAgICB1c2luZyBJbmxpbmVCb3g6
OmZvcmNlTGVhZGluZ0V4cGFuc2lvbjsKLSAgICB1c2luZyBJbmxpbmVCb3g6OnNldEZvcmNlTGVh
ZGluZ0V4cGFuc2lvbjsKKyAgICB1c2luZyBJbmxpbmVCb3g6OmNhbkhhdmVMZWZ0RXhwYW5zaW9u
OworICAgIHVzaW5nIElubGluZUJveDo6c2V0Q2FuSGF2ZUxlZnRFeHBhbnNpb247CisgICAgdXNp
bmcgSW5saW5lQm94OjpjYW5IYXZlUmlnaHRFeHBhbnNpb247CisgICAgdXNpbmcgSW5saW5lQm94
OjpzZXRDYW5IYXZlUmlnaHRFeHBhbnNpb247CisgICAgdXNpbmcgSW5saW5lQm94Ojpmb3JjZVJp
Z2h0RXhwYW5zaW9uOworICAgIHVzaW5nIElubGluZUJveDo6c2V0Rm9yY2VSaWdodEV4cGFuc2lv
bjsKKyAgICB1c2luZyBJbmxpbmVCb3g6OmZvcmNlTGVmdEV4cGFuc2lvbjsKKyAgICB1c2luZyBJ
bmxpbmVCb3g6OnNldEZvcmNlTGVmdEV4cGFuc2lvbjsKIAogICAgIHN0YXRpYyBpbmxpbmUgYm9v
bCBjb21wYXJlQnlTdGFydChjb25zdCBJbmxpbmVUZXh0Qm94KiBmaXJzdCwgY29uc3QgSW5saW5l
VGV4dEJveCogc2Vjb25kKSB7IHJldHVybiBmaXJzdC0+c3RhcnQoKSA8IHNlY29uZC0+c3RhcnQo
KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxv
YWRDb250cm9sLmNwcAppbmRleCAxY2QzMmIzZWIwYjMxYmZkMzZmODc4MmE0MzRhZjYyNDMyZGY3
YzE2Li4wOGVjMDBmNzQ5NjVkODFiZjcxMzE1ZGQzM2U2ZjhlMmFiM2VhMTQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAK
QEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9i
amVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbgogICAgIGlmIChwYWlu
dEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCkgewogICAgICAgICBjb25zdCBT
dHJpbmcmIGRpc3BsYXllZEZpbGVuYW1lID0gZmlsZVRleHRWYWx1ZSgpOwogICAgICAgICBjb25z
dCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAgICAgICAgVGV4
dFJ1biB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bihkaXNwbGF5ZWRGaWxlbmFtZSwgc3R5bGUo
KSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgUmVzcGVjdERpcmVjdGlvbiB8IFJlc3BlY3REaXJl
Y3Rpb25PdmVycmlkZSk7CisgICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IGNvbnN0cnVjdFRleHRS
dW4oZGlzcGxheWVkRmlsZW5hbWUsIHN0eWxlKCksIEFsbG93UmlnaHRFeHBhbnNpb24sIFJlc3Bl
Y3REaXJlY3Rpb24gfCBSZXNwZWN0RGlyZWN0aW9uT3ZlcnJpZGUpOwogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAgICAgaW50IGljb25IZWlnaHQgPSBub2RlSGVpZ2h0KHVwbG9hZEJ1
dHRvbigpKTsKQEAgLTIwMywxMCArMjAzLDEwIEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRy
b2w6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljCiAg
ICAgY29uc3QgU3RyaW5nIGNoYXJhY3RlckFzU3RyaW5nID0gU3RyaW5nKCZjaGFyYWN0ZXIsIDEp
OwogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwog
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIG5lZWQgZm9yIHRoaXMgY29uc3RfY2FzdCBieSBtYWtp
bmcgY29uc3RydWN0VGV4dFJ1biB0YWtlIGEgY29uc3QgUmVuZGVyT2JqZWN0Ki4KLSAgICBmbG9h
dCBtaW5EZWZhdWx0TGFiZWxXaWR0aCA9IGRlZmF1bHRXaWR0aE51bUNoYXJzICogZm9udC53aWR0
aChjb25zdHJ1Y3RUZXh0UnVuKGNoYXJhY3RlckFzU3RyaW5nLCBzdHlsZSgpLCBBbGxvd1RyYWls
aW5nRXhwYW5zaW9uKSk7CisgICAgZmxvYXQgbWluRGVmYXVsdExhYmVsV2lkdGggPSBkZWZhdWx0
V2lkdGhOdW1DaGFycyAqIGZvbnQud2lkdGgoY29uc3RydWN0VGV4dFJ1bihjaGFyYWN0ZXJBc1N0
cmluZywgc3R5bGUoKSwgQWxsb3dSaWdodEV4cGFuc2lvbikpOwogCiAgICAgY29uc3QgU3RyaW5n
IGxhYmVsID0gdGhlbWUoKS5maWxlTGlzdERlZmF1bHRMYWJlbChpbnB1dEVsZW1lbnQoKS5tdWx0
aXBsZSgpKTsKLSAgICBmbG9hdCBkZWZhdWx0TGFiZWxXaWR0aCA9IGZvbnQud2lkdGgoY29uc3Ry
dWN0VGV4dFJ1bihsYWJlbCwgc3R5bGUoKSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbikpOworICAg
IGZsb2F0IGRlZmF1bHRMYWJlbFdpZHRoID0gZm9udC53aWR0aChjb25zdHJ1Y3RUZXh0UnVuKGxh
YmVsLCBzdHlsZSgpLCBBbGxvd1JpZ2h0RXhwYW5zaW9uKSk7CiAgICAgaWYgKEhUTUxJbnB1dEVs
ZW1lbnQqIGJ1dHRvbiA9IHVwbG9hZEJ1dHRvbigpKQogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0
KiBidXR0b25SZW5kZXJlciA9IGJ1dHRvbi0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIGRlZmF1
bHRMYWJlbFdpZHRoICs9IGJ1dHRvblJlbmRlcmVyLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgo
KSArIGFmdGVyQnV0dG9uU3BhY2luZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcAppbmRleCAwNDY2Y2JhOTA1OTI0NTMyOTgzNzMxNzNhZWYyM2UxOTgwMWZkYWYx
Li43ZTlmMzgzMmQzNmVmZDE5MTNjZjczOTcwMTFlYmIzZDIxOTQ4ZTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9p
ZCBSZW5kZXJMaXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgICAgICBpZiAodGV4
dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB0ZXh0
ID0gYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCksIHRleHQsICcgJyk7Ci0gICAgICAgICAgICBh
dXRvIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHN0eWxlKCksIEFsbG93VHJhaWxp
bmdFeHBhbnNpb24pOworICAgICAgICAgICAgYXV0byB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1
bih0ZXh0LCBzdHlsZSgpLCBBbGxvd1JpZ2h0RXhwYW5zaW9uKTsKICAgICAgICAgICAgIHdpZHRo
ID0gc3RkOjptYXgod2lkdGgsIHNlbGVjdEZvbnQoKS53aWR0aCh0ZXh0UnVuKSk7CiAgICAgICAg
IH0KICAgICAgICAgLy8gRklYTUU6IElzIGNlaWxpbmcgcmlnaHQgaGVyZSwgb3Igc2hvdWxkIHdl
IGJlIGRvaW5nIHNvbWUga2luZCBvZiByb3VuZGluZyBpbnN0ZWFkPwpAQCAtNDM1LDcgKzQzNSw3
IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAKICAgICBwYWludEluZm8uY29udGV4dCgpLnNl
dEZpbGxDb2xvcih0ZXh0Q29sb3IpOwogCi0gICAgVGV4dFJ1biB0ZXh0UnVuKGl0ZW1UZXh0LCAw
LCAwLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBpdGVtU3R5bGUuZGlyZWN0aW9uKCksIGlzT3Zl
cnJpZGUoaXRlbVN0eWxlLnVuaWNvZGVCaWRpKCkpLCB0cnVlKTsKKyAgICBUZXh0UnVuIHRleHRS
dW4oaXRlbVRleHQsIDAsIDAsIEFsbG93UmlnaHRFeHBhbnNpb24sIGl0ZW1TdHlsZS5kaXJlY3Rp
b24oKSwgaXNPdmVycmlkZShpdGVtU3R5bGUudW5pY29kZUJpZGkoKSksIHRydWUpOwogICAgIEZv
bnRDYXNjYWRlIGl0ZW1Gb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwogICAgIExheW91dFJl
Y3QgciA9IGl0ZW1Cb3VuZGluZ0JveFJlY3QocGFpbnRPZmZzZXQsIGxpc3RJbmRleCk7CiAgICAg
ci5tb3ZlKGl0ZW1PZmZzZXRGb3JBbGlnbm1lbnQodGV4dFJ1biwgJml0ZW1TdHlsZSwgaXRlbUZv
bnQsIHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwCmluZGV4IGEyOTA0YzU3YmQ3NDM2Y2EyZmNhMGI5ZGUwZDY4ZWZiYjY0YjI5ZjQuLjdhYzZl
MDIzYThjZmExZWNlNmYwMGYyMzkwNzQzYTYyMjVmMzIyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGZs
b2F0IFJlbmRlclRleHRDb250cm9sOjpnZXRBdmVyYWdlQ2hhcldpZHRoKCkKICAgICBjb25zdCBV
Q2hhciBjaCA9ICcwJzsKICAgICBjb25zdCBTdHJpbmcgc3RyID0gU3RyaW5nKCZjaCwgMSk7CiAg
ICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7Ci0gICAg
VGV4dFJ1biB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bihzdHIsIHN0eWxlKCksIEFsbG93VHJh
aWxpbmdFeHBhbnNpb24pOworICAgIFRleHRSdW4gdGV4dFJ1biA9IGNvbnN0cnVjdFRleHRSdW4o
c3RyLCBzdHlsZSgpLCBBbGxvd1JpZ2h0RXhwYW5zaW9uKTsKICAgICByZXR1cm4gZm9udC53aWR0
aCh0ZXh0UnVuKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXQuY3BwCmluZGV4IDY5OGNlZTViYTJkNzhiOTIxMDliMmU1ZDkwYmQ1ZGViZTk3NDQxMjMu
LjZmMTljODViMDkzMzJjMDJjMzRkN2E1ZjcyMTk2ODIzN2VhMGFkMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKQEAgLTg3OCw4ICs4NzgsOCBA
QCBzdGF0aWMgYm9vbCBjcmVhdGVMaW5lUnVucyhMaW5lU3RhdGUmIGxpbmUsIGNvbnN0IExpbmVT
dGF0ZSYgcHJldmlvdXNMaW5lLCBMYXlvdQogc3RhdGljIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFu
c2lvbkJlaGF2aW9yKGJvb2wgaXNBZnRlckV4cGFuc2lvbiwgYm9vbCBsYXN0UnVuT25MaW5lKQog
ewogICAgIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yOwotICAgIGV4cGFuc2lv
bkJlaGF2aW9yID0gaXNBZnRlckV4cGFuc2lvbiA/IEZvcmJpZExlYWRpbmdFeHBhbnNpb24gOiBB
bGxvd0xlYWRpbmdFeHBhbnNpb247Ci0gICAgZXhwYW5zaW9uQmVoYXZpb3IgfD0gbGFzdFJ1bk9u
TGluZSA/IEZvcmJpZFRyYWlsaW5nRXhwYW5zaW9uIDogQWxsb3dUcmFpbGluZ0V4cGFuc2lvbjsK
KyAgICBleHBhbnNpb25CZWhhdmlvciA9IGlzQWZ0ZXJFeHBhbnNpb24gPyBGb3JiaWRMZWZ0RXhw
YW5zaW9uIDogQWxsb3dMZWZ0RXhwYW5zaW9uOworICAgIGV4cGFuc2lvbkJlaGF2aW9yIHw9IGxh
c3RSdW5PbkxpbmUgPyBGb3JiaWRSaWdodEV4cGFuc2lvbiA6IEFsbG93UmlnaHRFeHBhbnNpb247
CiAgICAgcmV0dXJuIGV4cGFuc2lvbkJlaGF2aW9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuaAppbmRleCA0ZDlmMmJkZjUzMjFlNGFiYzFiMThhOWFm
ZGQ3ZDI0Y2JjMWE4OGE5Li5lYzRhN2EwZmE0YjkwZjI1NjgzMzRiODU5YmQ4ZTE3MDg0M2MwNjhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmgKQEAgLTcw
LDcgKzcwLDcgQEAgc3RydWN0IFJ1biB7CiAgICAgZmxvYXQgbG9naWNhbFJpZ2h0OwogICAgIC8v
IFRPRE86IE1vdmUgdGhlc2Ugb3B0aW9uYWwgaXRlbXMgb3V0IG9mIFNpbXBsZUxpbmVMYXlvdXQ6
OlJ1biB0byBhIHN1cHBsZW1lbnRhcnkgc3RydWN0dXJlLgogICAgIGZsb2F0IGV4cGFuc2lvbiB7
IDAgfTsKLSAgICBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciB7IEZvcmJpZExl
YWRpbmdFeHBhbnNpb24gfCBGb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiB9OworICAgIEV4cGFuc2lv
bkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yIHsgRm9yYmlkTGVmdEV4cGFuc2lvbiB8IEZvcmJp
ZFJpZ2h0RXhwYW5zaW9uIH07CiB9OwogCiBzdHJ1Y3QgU2ltcGxlTGluZVN0cnV0IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25z
LmNwcAppbmRleCAxZTJhODg1N2U5MzkzZmZkNGFkMjQ5MmQ2NWNhMzM2NzljNjBiYTI2Li4xNmNj
MGI2ZDM4MjQ3NTUzNzZhYmNjZGIzMzU2ODJiMzYxMjA1NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC0y
NzcsMTIgKzI3NywxMiBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplSW5saW5lVGV4dEJveChSZW5k
ZXJCbG9ja0Zsb3cmIGZsb3csIElubGluZVRleHRCb3gmIGlubGluZQogICAgIGlubGluZVRleHRC
b3guc2V0RXhwYW5zaW9uV2l0aG91dEdyb3dpbmcocnVuLmV4cGFuc2lvbigpKTsKIAogICAgIGF1
dG8gZXhwYW5zaW9uQmVoYXZpb3IgPSBydW4uZXhwYW5zaW9uQmVoYXZpb3IoKTsKLSAgICBpbmxp
bmVUZXh0Qm94LnNldENhbkhhdmVMZWFkaW5nRXhwYW5zaW9uKGV4cGFuc2lvbkJlaGF2aW9yICYg
QWxsb3dMZWFkaW5nRXhwYW5zaW9uKTsKLSAgICBpbmxpbmVUZXh0Qm94LnNldENhbkhhdmVUcmFp
bGluZ0V4cGFuc2lvbihleHBhbnNpb25CZWhhdmlvciAmIEFsbG93VHJhaWxpbmdFeHBhbnNpb24p
OwotICAgIGlmIChleHBhbnNpb25CZWhhdmlvciAmIEZvcmNlVHJhaWxpbmdFeHBhbnNpb24pCi0g
ICAgICAgIGlubGluZVRleHRCb3guc2V0Rm9yY2VUcmFpbGluZ0V4cGFuc2lvbigpOwotICAgIGlm
IChleHBhbnNpb25CZWhhdmlvciAmIEZvcmNlTGVhZGluZ0V4cGFuc2lvbikKLSAgICAgICAgaW5s
aW5lVGV4dEJveC5zZXRGb3JjZUxlYWRpbmdFeHBhbnNpb24oKTsKKyAgICBpbmxpbmVUZXh0Qm94
LnNldENhbkhhdmVMZWZ0RXhwYW5zaW9uKGV4cGFuc2lvbkJlaGF2aW9yICYgQWxsb3dMZWZ0RXhw
YW5zaW9uKTsKKyAgICBpbmxpbmVUZXh0Qm94LnNldENhbkhhdmVSaWdodEV4cGFuc2lvbihleHBh
bnNpb25CZWhhdmlvciAmIEFsbG93UmlnaHRFeHBhbnNpb24pOworICAgIGlmIChleHBhbnNpb25C
ZWhhdmlvciAmIEZvcmNlUmlnaHRFeHBhbnNpb24pCisgICAgICAgIGlubGluZVRleHRCb3guc2V0
Rm9yY2VSaWdodEV4cGFuc2lvbigpOworICAgIGlmIChleHBhbnNpb25CZWhhdmlvciAmIEZvcmNl
TGVmdEV4cGFuc2lvbikKKyAgICAgICAgaW5saW5lVGV4dEJveC5zZXRGb3JjZUxlZnRFeHBhbnNp
b24oKTsKIH0KIAogdm9pZCBnZW5lcmF0ZUxpbmVCb3hUcmVlKFJlbmRlckJsb2NrRmxvdyYgZmxv
dywgY29uc3QgTGF5b3V0JiBsYXlvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCBkZDE4OGFlMTFiMzdkNzk3YjEyZDgxZDI5
NjM2OWY3ZjE5NTc2ZWJhLi4xZmRlOWZkNDIxNmY3MzM0ZDZjZmYzYjE2NjgxYTAzMGVjZGJmMGQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJv
eC5jcHAKQEAgLTM5MSw3ICszOTEsNyBAQCBUZXh0UnVuIFNWR0lubGluZVRleHRCb3g6OmNvbnN0
cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBTVkdUZQogICAgIFRl
eHRSdW4gcnVuKFN0cmluZ1ZpZXcocmVuZGVyZXIoKS50ZXh0KCkpLnN1YnN0cmluZyhmcmFnbWVu
dC5jaGFyYWN0ZXJPZmZzZXQsIGZyYWdtZW50Lmxlbmd0aCkKICAgICAgICAgICAgICAgICAsIDAg
LyogeFBvcywgb25seSByZWxldmFudCB3aXRoIGFsbG93VGFicz10cnVlICovCiAgICAgICAgICAg
ICAgICAgLCAwIC8qIHBhZGRpbmcsIG9ubHkgcmVsZXZhbnQgZm9yIGp1c3RpZmllZCB0ZXh0LCBu
b3QgcmVsZXZhbnQgZm9yIFNWRyAqLwotICAgICAgICAgICAgICAgICwgQWxsb3dUcmFpbGluZ0V4
cGFuc2lvbgorICAgICAgICAgICAgICAgICwgQWxsb3dSaWdodEV4cGFuc2lvbgogICAgICAgICAg
ICAgICAgICwgZGlyZWN0aW9uKCkKICAgICAgICAgICAgICAgICAsIGRpck92ZXJyaWRlKCkgfHwg
c3R5bGUucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsIC8qIGRpcmVjdGlvbmFsT3ZlcnJp
ZGUgKi8pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRNZXRyaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJp
Y3MuY3BwCmluZGV4IDA2NGI0ZGExMjcyZWZhODM0ZWIyMzQ1Zjc5Y2JkNDJjMmY4ODQ1M2IuLjM5
MDkxZWY4YWYzZDliMzA0OGRjN2IyYjJjZjQ4MjExOTk2NWZjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCkBAIC02Niw3ICs2Niw3IEBA
IFRleHRSdW4gU1ZHVGV4dE1ldHJpY3M6OmNvbnN0cnVjdFRleHRSdW4oUmVuZGVyU1ZHSW5saW5l
VGV4dCYgdGV4dCwgdW5zaWduZWQgcG9zCiAgICAgVGV4dFJ1biBydW4oU3RyaW5nVmlldyh0ZXh0
LnRleHQoKSkuc3Vic3RyaW5nKHBvc2l0aW9uLCBsZW5ndGgpCiAgICAgICAgICAgICAgICAgLCAw
IC8qIHhQb3MsIG9ubHkgcmVsZXZhbnQgd2l0aCBhbGxvd1RhYnM9dHJ1ZSAqLwogICAgICAgICAg
ICAgICAgICwgMCAvKiBwYWRkaW5nLCBvbmx5IHJlbGV2YW50IGZvciBqdXN0aWZpZWQgdGV4dCwg
bm90IHJlbGV2YW50IGZvciBTVkcgKi8KLSAgICAgICAgICAgICAgICAsIEFsbG93VHJhaWxpbmdF
eHBhbnNpb24KKyAgICAgICAgICAgICAgICAsIEFsbG93UmlnaHRFeHBhbnNpb24KICAgICAgICAg
ICAgICAgICAsIHN0eWxlLmRpcmVjdGlvbigpCiAgICAgICAgICAgICAgICAgLCBpc092ZXJyaWRl
KHN0eWxlLnVuaWNvZGVCaWRpKCkpIC8qIGRpcmVjdGlvbmFsT3ZlcnJpZGUgKi8pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBv
cHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
d2luL1dlYlBvcHVwTWVudVdpbi5jcHAKaW5kZXggM2MxZWEwNjQ4NzNjNDUxMzUyODE2NDczYTBh
ZDIyMjYwODI5N2JjNy4uMmNhMzU3NDI2N2E2ZDgyZTA5YWI5ZDM2ODMzN2ViZWFhZDc0NDM4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9X
ZWJQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQg
V2ViUG9wdXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBw
YWdlQ29vcmRpbmF0ZXMsIFBsCiAKICAgICAgICAgU3RyaW5nIGl0ZW1UZXh0ID0gbV9wb3B1cENs
aWVudC0+aXRlbVRleHQoaW5kZXgpOwogCi0gICAgICAgIFRleHRSdW4gdGV4dFJ1bihpdGVtVGV4
dCwgMCwgMCwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgaXRlbVN0eWxlLnRleHREaXJlY3Rpb24o
KSwgaXRlbVN0eWxlLmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpKTsKKyAgICAgICAgVGV4dFJ1
biB0ZXh0UnVuKGl0ZW1UZXh0LCAwLCAwLCBBbGxvd1JpZ2h0RXhwYW5zaW9uLCBpdGVtU3R5bGUu
dGV4dERpcmVjdGlvbigpLCBpdGVtU3R5bGUuaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkpOwog
CiAgICAgICAgIG5vdFNlbGVjdGVkQmFja2luZ1N0b3JlQ29udGV4dC0+c2V0RmlsbENvbG9yKG9w
dGlvblRleHRDb2xvcik7CiAgICAgICAgIHNlbGVjdGVkQmFja2luZ1N0b3JlQ29udGV4dC0+c2V0
RmlsbENvbG9yKGFjdGl2ZU9wdGlvblRleHRDb2xvcik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDA4NTA5ZmQ3Y2M2NmZkMjJjMTFkNzg3YTFlMzM3YzEwN2IzMjU4M2YuLjU1OTMwYzY5NDhh
Y2NkYmNlOTg1NTEyMTYyNTUwYzBkNzZkOWE4YTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBA
IC0yNjEsNyArMjYxLDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRp
YWxBZHZhbmNlSW5SVExOb09yaWdpbnMpCiAgICAgRVhQRUNUX05FQVIoZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KDMpLmhlaWdodCgpLCAxMi4zNjg4OTY5MjU4NTksIDAuMDAwMSk7CiB9CiAKLVRFU1Rf
RihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBMZWFkaW5nRXhwYW5zaW9uKQorVEVTVF9GKENv
bXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIExlZnRFeHBhbnNpb24pCiB7CiAgICAgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKICAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHko
IlRpbWVzIik7CkBAIC0yNzEsNyArMjcxLDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxl
clRlc3QsIExlYWRpbmdFeHBhbnNpb24pCiAKICAgICBVQ2hhciBjaGFyYWN0ZXJzW10gPSB7ICdh
JyB9OwogICAgIHNpemVfdCBjaGFyYWN0ZXJzTGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChjaGFy
YWN0ZXJzKTsKLSAgICBUZXh0UnVuIHRleHRSdW4oU3RyaW5nVmlldyhjaGFyYWN0ZXJzLCBjaGFy
YWN0ZXJzTGVuZ3RoKSwgMCwgMTAwLCBGb3JjZUxlYWRpbmdFeHBhbnNpb24pOworICAgIFRleHRS
dW4gdGV4dFJ1bihTdHJpbmdWaWV3KGNoYXJhY3RlcnMsIGNoYXJhY3RlcnNMZW5ndGgpLCAwLCAx
MDAsIEZvcmNlTGVmdEV4cGFuc2lvbik7CiAgICAgYXV0byBydW4gPSBDb21wbGV4VGV4dENvbnRy
b2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpjcmVhdGUoeyBGbG9hdFNpemUoMjQsIDApIH0sIHsgfSwg
eyAxNiB9LCB7IDAgfSwgRmxvYXRTaXplKCksIGZvbnQucHJpbWFyeUZvbnQoKSwgY2hhcmFjdGVy
cywgMCwgY2hhcmFjdGVyc0xlbmd0aCwgMCwgMSwgdHJ1ZSk7CiAgICAgVmVjdG9yPFJlZjxDb21w
bGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuPj4gcnVuczsKICAgICBydW5zLmFwcGVu
ZChXVEZNb3ZlKHJ1bikpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>