<?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>161473</bug_id>
          
          <creation_ts>2016-08-31 20:39:14 -0700</creation_ts>
          <short_desc>Clean up TextRun-related code</short_desc>
          <delta_ts>2016-09-01 00:39:16 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1225230</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-31 20:39:14 -0700</bug_when>
    <thetext>Clean up TextRun-related code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225231</commentid>
    <comment_count>1</comment_count>
      <attachid>287590</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-31 20:44:22 -0700</bug_when>
    <thetext>Created attachment 287590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225250</commentid>
    <comment_count>2</comment_count>
      <attachid>287599</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-31 21:53:00 -0700</bug_when>
    <thetext>Created attachment 287599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225281</commentid>
    <comment_count>3</comment_count>
      <attachid>287599</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-01 00:39:11 -0700</bug_when>
    <thetext>Comment on attachment 287599
Patch

Clearing flags on attachment: 287599

Committed r205282: &lt;http://trac.webkit.org/changeset/205282&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225282</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-01 00:39:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287590</attachid>
            <date>2016-08-31 20:44:22 -0700</date>
            <delta_ts>2016-08-31 21:52:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161473-20160831204208.patch</filename>
            <type>text/plain</type>
            <size>40178</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA3NzcyOGY2NDBiOGEx
YzRkMmRiYjM3ZGNhMGNlMTQ1OWVhZGM0YS4uOGM1YWJiYmE3N2I3MjZmYjUyMDU3MjJjYzBlYTYz
MzJkNDBlZGM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE2LTA4LTMxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAg
VGV4dFJ1bi1yZWxhdGVkIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MTQ3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNvbWUgYXNzb3J0ZWQgY2xlYW51cCwgaW5jbHVkaW5nOgorICAgICAgICAt
IFJlbmFtaW5nICJBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lv
biIgdG8gIkRlZmF1bHRFeHBhbnNpb24iCisgICAgICAgIC0gTWlncmF0aW5nIGZyb20gcG9pbnRl
cnMgdG8gcmVmZXJlbmNlcworICAgICAgICAtIE1pZ3JhdGluZyBmcm9tIGludHMgdG8gdW5zaWdu
ZWRzCisgICAgICAgIC0gVXNpbmcgcHJvcGVyIGNoYXJhY3RlciBuYW1lcyBmcm9tIENoYXJhY3Rl
ck5hbWVzLmgKKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhh
dmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpUZXh0UnVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRMYXlvdXQ6OmlzTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRMYXlvdXQ6OmNv
bnN0cnVjdFRleHRSdW4pOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpnZXRSZWxhdGl2ZU1h
cmtlclJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAg
ICAgIChSZW5kZXJNZW51TGlzdDo6dXBkYXRlT3B0aW9uc1dpZHRoKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojp3aWR0
aEZyb21DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojp0cmltbWVkUHJlZldp
ZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpoeXBoZW5XaWR0aCk6CisgICAgICAgIChXZWJDb3Jl
OjptYXhXb3JkRnJhZ21lbnRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0Ojp3aWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUv
QnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0V2lkdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6dHJ5SHlwaGVuYXRpbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
SW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94Ojpv
ZmZzZXRGb3JQb3NpdGlvbkluRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5l
VGV4dEJveDo6c2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdJbmxpbmVUZXh0Qm94Ojpsb2NhbFNlbGVjdGlvblJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3JvdW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0lubGluZVRleHRCb3g6OmFjcXVpcmVQYWludGluZ1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0lubGluZVRleHRCb3g6OnByZXBhcmVHcmFwaGljc0NvbnRleHRGb3JUZXh0UGFpbnRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFJ1
bik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25X
aXRoU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
V2l0aFNoYWRvd3MpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaDoKKwogMjAx
Ni0wOC0zMSAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
S2l0IHNob3VsZCBzZXQgYSBzdWJzeXN0ZW0gZm9yIG9zX2xvZyBzbyBpdCdzIGVhc2llciB0byBm
aWx0ZXIgZm9yIFdlYktpdCBsb2cgbWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA0YTNhMWRk
MjllNDM0MGE2MGQ2YzQxZDA3OGUzNTQzNjM2MGE1MDkzLi44OGZkYTg3OTk2Zjc3ZDFkYzYwZThm
MTMyNWI0YWZmMDI0MTU1OGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTYtMDgtMzEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAg
ICAgICBDbGVhbiB1cCBUZXh0UnVuLXJlbGF0ZWQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCAjaW5jbHVkZXMuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKwogMjAxNi0wOC0zMSAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViS2l0IHNob3VsZCBzZXQgYSBzdWJzeXN0ZW0gZm9yIG9zX2xv
ZyBzbyBpdCdzIGVhc2llciB0byBmaWx0ZXIgZm9yIFdlYktpdCBsb2cgbWVzc2FnZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAppbmRleCA3N2RlZTNiNDMzYWJm
YTQxYjZmMzcwOGU3MGRhN2EyODQ2YjA3ODlmLi5hODBmZTdlNjFkOTM5MWMwMGQ2MWY2N2U4NWQ3
ODY5YTBlODQwOGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UZXh0UnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1
bi5oCkBAIC00NSw3ICs0NSw3IEBAIHN0cnVjdCBXaWR0aEl0ZXJhdG9yOwogY2xhc3MgVGV4dFJ1
biB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
VGV4dFJ1bihTdHJpbmdWaWV3IHRleHQsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24g
PSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdF
eHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVy
U2NhbkZvckNvZGVQYXRoID0gdHJ1ZSkKKyAgICBleHBsaWNpdCBUZXh0UnVuKFN0cmluZ1ZpZXcg
dGV4dCwgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lvbiA9IDAsIEV4cGFuc2lvbkJlaGF2
aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24gPSBMVFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29sIGNo
YXJhY3RlclNjYW5Gb3JDb2RlUGF0aCA9IHRydWUpCiAgICAgICAgIDogbV90ZXh0KHRleHQpCiAg
ICAgICAgICwgbV9jaGFyYWN0ZXJzTGVuZ3RoKHRleHQubGVuZ3RoKCkpCiAgICAgICAgICwgbV90
YWJTaXplKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDVmMmIzMmY4ZDU5YzRh
YTIzNjEwNzQ0ZWZjMjlkY2Y5OTk2NmFiOTYuLmIxMzY5Y2I3YjUxMjg1ODY3ZTdhYzMyYWJlNTcw
MzkwYjYyYmE5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC01MSw3ICs1MSw3
IEBAIGNsYXNzIFRleHRMYXlvdXQgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzTmVlZGVk
KFJlbmRlclRleHQmIHRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogICAgIHsKLSAgICAg
ICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmdGV4dCwgdGV4
dC5zdHlsZSgpKTsKKyAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0
VGV4dFJ1bih0ZXh0LCB0ZXh0LnN0eWxlKCkpOwogICAgICAgICByZXR1cm4gZm9udC5jb2RlUGF0
aChydW4pID09IEZvbnRDYXNjYWRlOjpDb21wbGV4OwogICAgIH0KIApAQCAtNzYsNyArNzYsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4o
UmVuZGVyVGV4dCYgdGV4dCwgZmxvYXQgeFBvcykKICAgICB7Ci0gICAgICAgIFRleHRSdW4gcnVu
ID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJnRleHQsIHRleHQuc3R5bGUoKSk7Cisg
ICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwg
dGV4dC5zdHlsZSgpKTsKICAgICAgICAgcnVuLnNldENoYXJhY3RlcnNMZW5ndGgodGV4dC50ZXh0
TGVuZ3RoKCkpOwogICAgICAgICBBU1NFUlQocnVuLmNoYXJhY3RlcnNMZW5ndGgoKSA+PSBydW4u
bGVuZ3RoKCkpOwogICAgICAgICBydW4uc2V0WFBvcyh4UG9zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRGbGFncy5oCmluZGV4IGY1ZGJlZTJlMTVhMTNhZDM5NjhjMTY2ODMxMDA1
NWQwYThhNzhmYjcuLmNkNjhlNTg0ODNkNDA0MzVmM2Y4YzgyYWI1ZGQ1YTE3ZGM2NWU3MmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaApAQCAtNTIsNiArNTIsOCBA
QCBlbnVtIEV4cGFuc2lvbkJlaGF2aW9yRmxhZ3MgewogICAgIEFsbG93TGVhZGluZ0V4cGFuc2lv
biA9IDEgPDwgMiwKICAgICBGb3JjZUxlYWRpbmdFeHBhbnNpb24gPSAyIDw8IDIsCiAgICAgTGVh
ZGluZ0V4cGFuc2lvbk1hc2sgPSAzIDw8IDIsCisKKyAgICBEZWZhdWx0RXhwYW5zaW9uID0gQWxs
b3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24sCiB9OwogdHlwZWRl
ZiB1bnNpZ25lZCBFeHBhbnNpb25CZWhhdmlvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKaW5kZXggZDI2NGQyYTk3NjRhZDI1MzdiMzdhMzczMTg2ZmM5NjIxYjVh
NTk1Mi4uMTZkNTBkY2E0ZDI3YTlhNDc0ZTNhNjM3YTQ0YWNjNzRiMzM5NzM1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zODAxLDI0ICszODAxLDI0IEBA
IFRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgU3RyaW5nJiBzdHJp
bmcsIGNvbnN0IFJlbmRlclN0eWxlJiBzCiAgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW4oU3Ry
aW5nVmlldyhzdHJpbmcpLCBzdHlsZSwgZXhwYW5zaW9uLCBmbGFncyk7CiB9CiAKLVRleHRSdW4g
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCogdGV4dCwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24pCitUZXh0
UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQmIHRleHQs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQog
ewotICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKHRleHQtPnN0cmluZ1ZpZXcoKSwgc3R5bGUs
IGV4cGFuc2lvbik7CisgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW4odGV4dC5zdHJpbmdWaWV3
KCksIHN0eWxlLCBleHBhbnNpb24pOwogfQogCi1UZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1
Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQqIHRleHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4
cGFuc2lvbikKK1RleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVu
ZGVyVGV4dCYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQogewogICAgIHVu
c2lnbmVkIHN0b3AgPSBvZmZzZXQgKyBsZW5ndGg7Ci0gICAgQVNTRVJUKHN0b3AgPD0gdGV4dC0+
dGV4dExlbmd0aCgpKTsKLSAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bih0ZXh0LT5zdHJpbmdW
aWV3KG9mZnNldCwgc3RvcCksIHN0eWxlLCBleHBhbnNpb24pOworICAgIEFTU0VSVChzdG9wIDw9
IHRleHQudGV4dExlbmd0aCgpKTsKKyAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bih0ZXh0LnN0
cmluZ1ZpZXcob2Zmc2V0LCBzdG9wKSwgc3R5bGUsIGV4cGFuc2lvbik7CiB9CiAKLVRleHRSdW4g
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIGlu
dCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhw
YW5zaW9uKQorVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBMQ2hh
ciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKIHsKICAgICByZXR1cm4gY29uc3RydWN0VGV4
dFJ1bihTdHJpbmdWaWV3KGNoYXJhY3RlcnMsIGxlbmd0aCksIHN0eWxlLCBleHBhbnNpb24pOwog
fQogCi1UZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lv
bkJlaGF2aW9yIGV4cGFuc2lvbikKK1RleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRS
dW4oY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24pCiB7CiAgICAgcmV0dXJu
IGNvbnN0cnVjdFRleHRSdW4oU3RyaW5nVmlldyhjaGFyYWN0ZXJzLCBsZW5ndGgpLCBzdHlsZSwg
ZXhwYW5zaW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXgg
ZDMyZmJlZGQzZDU2OTExNzJlYjg3ODE1ODEyZWE5N2YwMDJhNzQxYi4uNzFmYjA5ZGIyYjJiYWJj
ZmFiODZkODgzNjY5NDVhN2JjMjkyMDhmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmgKQEAgLTIwNCwxNyArMjA0LDE3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0
aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxl
JiwKLSAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwg
Rm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzID0gRGVmYXVsdFRleHRSdW5GbGFn
cyk7CisgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dFJ1
bkZsYWdzID0gRGVmYXVsdFRleHRSdW5GbGFncyk7CiAgICAgc3RhdGljIFRleHRSdW4gY29uc3Ry
dWN0VGV4dFJ1bihjb25zdCBTdHJpbmcmLCBjb25zdCBSZW5kZXJTdHlsZSYsCi0gICAgICAgIEV4
cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdF
eHBhbnNpb24sIFRleHRSdW5GbGFncyA9IERlZmF1bHRUZXh0UnVuRmxhZ3MpOwotICAgIHN0YXRp
YyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCosIGNvbnN0IFJlbmRl
clN0eWxlJiwKLSAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5z
aW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbik7Ci0gICAgc3RhdGljIFRleHRSdW4gY29uc3Ry
dWN0VGV4dFJ1bihjb25zdCBSZW5kZXJUZXh0KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiwKLSAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBB
bGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbik7Ci0gICAgc3Rh
dGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgaW50
IGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmLAotICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9
IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uKTsKLSAgICBz
dGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBp
bnQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYsCi0gICAgICAgIEV4cGFuc2lvbkJlaGF2aW9y
ID0gQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24pOworICAg
ICAgICBFeHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHRSdW5GbGFncyA9
IERlZmF1bHRUZXh0UnVuRmxhZ3MpOworICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRS
dW4oY29uc3QgUmVuZGVyVGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwKKyAgICAgICAgRXhwYW5z
aW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9uKTsKKyAgICBzdGF0aWMgVGV4dFJ1biBjb25z
dHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmLAorICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9
IERlZmF1bHRFeHBhbnNpb24pOworICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4o
Y29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5
bGUmLAorICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24pOworICAg
IHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmLAorICAgICAgICBFeHBhbnNpb25C
ZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24pOwogICAgIAogICAgIExheW91dFVuaXQgcGFnaW5h
dGlvblN0cnV0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uU3RydXQoTGF5b3V0VW5p
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5k
ZXggZmNiNjAyMWRhNzIzNmQ4NjA1NGQ0ZjJhN2UxNmMyNWQ4NGMzMDg1Yi4uZDRlNDM4YTQ1Yjcw
NTEyYjdiZTAzYTRmNWZhN2Q0M2NjYTQ4ZTZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMTU0Myw3ICsxNTQzLDcgQEAgdm9pZCBSZW5k
ZXJMaXN0TWFya2VyOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBBc3Rlcmlza3M6CiAgICAgICAgIGNhc2UgRm9vdG5vdGVz
OiB7Ci0gICAgICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0
UnVuKG1fdGV4dCwgc3R5bGUoKSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRp
bmdFeHBhbnNpb24sIERlZmF1bHRUZXh0UnVuRmxhZ3MpOworICAgICAgICAgICAgVGV4dFJ1biBy
dW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihtX3RleHQsIHN0eWxlKCkpOwogICAg
ICAgICAgICAgbG9naWNhbFdpZHRoID0gZm9udC53aWR0aChydW4pOyAvLyBubyBzdWZmaXggZm9y
IHRoZXNlIHR5cGVzCiAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTYzMCw3ICsx
NjMwLDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocygpCiAgICAgICAgICAgICBpZiAobV90ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAg
ICBsb2dpY2FsV2lkdGggPSAwOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
VGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihtX3RleHQsIHN0eWxl
KCksIEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBEZWZh
dWx0VGV4dFJ1bkZsYWdzKTsKKyAgICAgICAgICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJs
b2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fdGV4dCwgc3R5bGUoKSk7CiAgICAgICAgICAgICAgICAg
TGF5b3V0VW5pdCBpdGVtV2lkdGggPSBmb250LndpZHRoKHJ1bik7CiAgICAgICAgICAgICAgICAg
VUNoYXIgc3VmZml4U3BhY2VbMl0gPSB7IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9saXN0SXRl
bS52YWx1ZSgpKSwgJyAnIH07CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBzdWZmaXhTcGFj
ZVdpZHRoID0gZm9udC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihzdWZmaXhT
cGFjZSwgMiwgc3R5bGUoKSkpOwpAQCAtMTc2Myw3ICsxNzYzLDcgQEAgRmxvYXRSZWN0IFJlbmRl
ckxpc3RNYXJrZXI6OmdldFJlbGF0aXZlTWFya2VyUmVjdCgpCiAgICAgICAgIGNhc2UgQXN0ZXJp
c2tzOgogICAgICAgICBjYXNlIEZvb3Rub3RlczogewogICAgICAgICAgICAgY29uc3QgRm9udENh
c2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7Ci0gICAgICAgICAgICBUZXh0UnVu
IHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fdGV4dCwgc3R5bGUoKSwgQWxs
b3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24sIERlZmF1bHRUZXh0
UnVuRmxhZ3MpOworICAgICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3Ry
dWN0VGV4dFJ1bihtX3RleHQsIHN0eWxlKCkpOwogICAgICAgICAgICAgcmVsYXRpdmVSZWN0ID0g
RmxvYXRSZWN0KDAsIDAsIGZvbnQud2lkdGgocnVuKSwgZm9udC5mb250TWV0cmljcygpLmhlaWdo
dCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xODU3LDcgKzE4NTcsNyBA
QCBGbG9hdFJlY3QgUmVuZGVyTGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KCkKICAg
ICAgICAgICAgIGlmIChtX3RleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBG
bG9hdFJlY3QoKTsKICAgICAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUo
KS5mb250Q2FzY2FkZSgpOwotICAgICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6
Y29uc3RydWN0VGV4dFJ1bihtX3RleHQsIHN0eWxlKCksIEFsbG93VHJhaWxpbmdFeHBhbnNpb24g
fCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKKyAgICAgICAg
ICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV90ZXh0LCBz
dHlsZSgpKTsKICAgICAgICAgICAgIGZsb2F0IGl0ZW1XaWR0aCA9IGZvbnQud2lkdGgocnVuKTsK
ICAgICAgICAgICAgIFVDaGFyIHN1ZmZpeFNwYWNlWzJdID0geyBsaXN0TWFya2VyU3VmZml4KHR5
cGUsIG1fbGlzdEl0ZW0udmFsdWUoKSksICcgJyB9OwogICAgICAgICAgICAgZmxvYXQgc3VmZml4
U3BhY2VXaWR0aCA9IGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oc3Vm
Zml4U3BhY2UsIDIsIHN0eWxlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVudUxpc3QuY3BwCmluZGV4IDIzZjA5YjI2OGZhNTM5ZGQ3ZTMzZGFiNzMwZmU3NWZhNjM3NDEy
Y2QuLjg5Y2FlYzQ0ODExMTBhYWNiYTUzOGIyZWEwNmNkMWRkMTQ2MzUzZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMjE5LDEzICsyMTksMTMg
QEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6dXBkYXRlT3B0aW9uc1dpZHRoKCkKICAgICAgICAgICAg
ICAgICBvcHRpb25XaWR0aCArPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob3B0aW9uU3R5bGUtPnRl
eHRJbmRlbnQoKSwgMCk7CiAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRl
KCk7Ci0gICAgICAgICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0
VGV4dFJ1bih0ZXh0LCBzdHlsZSgpLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVh
ZGluZ0V4cGFuc2lvbiwgRGVmYXVsdFRleHRSdW5GbGFncyk7CisgICAgICAgICAgICAgICAgVGV4
dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCBzdHlsZSgpKTsK
ICAgICAgICAgICAgICAgICBvcHRpb25XaWR0aCArPSBmb250LndpZHRoKHJ1bik7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBtYXhPcHRpb25XaWR0aCA9IHN0ZDo6bWF4KG1heE9wdGlvbldp
ZHRoLCBvcHRpb25XaWR0aCk7CiAgICAgICAgIH0gZWxzZSBpZiAoIXRleHQuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2Nh
ZGUoKTsKLSAgICAgICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRl
eHRSdW4odGV4dCwgc3R5bGUoKSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRp
bmdFeHBhbnNpb24sIERlZmF1bHRUZXh0UnVuRmxhZ3MpOworICAgICAgICAgICAgVGV4dFJ1biBy
dW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCBzdHlsZSgpKTsKICAgICAg
ICAgICAgIG1heE9wdGlvbldpZHRoID0gc3RkOjptYXgobWF4T3B0aW9uV2lkdGgsIGZvbnQud2lk
dGgocnVuKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAKaW5kZXggYTZiNTIxN2M5NWU5NmNjMGQ3MWU3NTE1Y2VhMWRkNWNmZjM5MDAyYy4u
MjM5ODk3OWExZjg3NWU3YzMwNmFhZDNhMzY0NDQ1NDllYmI4ODYxZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtNDUyLDcgKzQ1Miw3IEBAIExheW91dFJlY3Qg
UmVuZGVyVGV4dDo6bG9jYWxDYXJldFJlY3QoSW5saW5lQm94KiBpbmxpbmVCb3gsIHVuc2lnbmVk
IGNhcmV0T2Zmc2V0CiAgICAgcmV0dXJuIGJveC5yb290KCkuY29tcHV0ZUNhcmV0UmVjdChsZWZ0
LCBjYXJldFdpZHRoLCBleHRyYVdpZHRoVG9FbmRPZkxpbmUpOwogfQogCi1BTFdBWVNfSU5MSU5F
IGZsb2F0IFJlbmRlclRleHQ6OndpZHRoRnJvbUNhY2hlKGNvbnN0IEZvbnRDYXNjYWRlJiBmLCBp
bnQgc3RhcnQsIGludCBsZW4sIGZsb2F0IHhQb3MsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxs
YmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93LCBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpIGNvbnN0CitBTFdBWVNfSU5MSU5FIGZsb2F0IFJlbmRlclRleHQ6OndpZHRoRnJv
bUNhY2hlKGNvbnN0IEZvbnRDYXNjYWRlJiBmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVu
LCBmbG9hdCB4UG9zLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywgR2x5cGhP
dmVyZmxvdyogZ2x5cGhPdmVyZmxvdywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAog
ewogICAgIGlmIChzdHlsZS5oYXNUZXh0Q29tYmluZSgpICYmIGlzPFJlbmRlckNvbWJpbmVUZXh0
PigqdGhpcykpIHsKICAgICAgICAgY29uc3QgUmVuZGVyQ29tYmluZVRleHQmIGNvbWJpbmVUZXh0
ID0gZG93bmNhc3Q8UmVuZGVyQ29tYmluZVRleHQ+KCp0aGlzKTsKQEAgLTQ2Niw3ICs0NjYsNyBA
QCBBTFdBWVNfSU5MSU5FIGZsb2F0IFJlbmRlclRleHQ6OndpZHRoRnJvbUNhY2hlKGNvbnN0IEZv
bnRDYXNjYWRlJiBmLCBpbnQgc3RhcnQsCiAgICAgICAgIGJvb2wgaXNTcGFjZTsKICAgICAgICAg
QVNTRVJUKG1fdGV4dCk7CiAgICAgICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqbV90ZXh0LmltcGwo
KTsKLSAgICAgICAgZm9yIChpbnQgaSA9IHN0YXJ0OyBpIDwgc3RhcnQgKyBsZW47IGkrKykgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGFydDsgaSA8IHN0YXJ0ICsgbGVuOyBpKyspIHsK
ICAgICAgICAgICAgIGNoYXIgYyA9IHRleHRbaV07CiAgICAgICAgICAgICBpZiAoYyA8PSAnICcp
IHsKICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnICcgfHwgYyA9PSAnXG4nKSB7CkBAIC00OTIs
NyArNDkyLDcgQEAgQUxXQVlTX0lOTElORSBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNo
ZShjb25zdCBGb250Q2FzY2FkZSYgZiwgaW50IHN0YXJ0LAogICAgICAgICByZXR1cm4gdzsKICAg
ICB9CiAKLSAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRo
aXMsIHN0YXJ0LCBsZW4sIHN0eWxlKTsKKyAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKCp0aGlzLCBzdGFydCwgbGVuLCBzdHlsZSk7CiAgICAgcnVuLnNldENo
YXJhY3RlcnNMZW5ndGgodGV4dExlbmd0aCgpIC0gc3RhcnQpOwogICAgIEFTU0VSVChydW4uY2hh
cmFjdGVyc0xlbmd0aCgpID49IHJ1bi5sZW5ndGgoKSk7CiAKQEAgLTYwOCw3ICs2MDgsNyBAQCB2
b2lkIFJlbmRlclRleHQ6OnRyaW1tZWRQcmVmV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwKICAgICBi
ZWdpbldTID0gIXN0cmlwRnJvbnRTcGFjZXMgJiYgbV9oYXNCZWdpbldTOwogICAgIGVuZFdTID0g
bV9oYXNFbmRXUzsKIAotICAgIGludCBsZW4gPSB0ZXh0TGVuZ3RoKCk7CisgICAgdW5zaWduZWQg
bGVuID0gdGV4dExlbmd0aCgpOwogCiAgICAgaWYgKCFsZW4gfHwgKHN0cmlwRnJvbnRTcGFjZXMg
JiYgdGV4dCgpLT5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpKSB7CiAgICAgICAgIGJlZ2luTWlu
VyA9IDA7CkBAIC02MzIsMTAgKzYzMiw5IEBAIHZvaWQgUmVuZGVyVGV4dDo6dHJpbW1lZFByZWZX
aWR0aHMoZmxvYXQgbGVhZFdpZHRoLAogCiAgICAgQVNTRVJUKG1fdGV4dCk7CiAgICAgU3RyaW5n
SW1wbCYgdGV4dCA9ICptX3RleHQuaW1wbCgpOwotICAgIGlmICh0ZXh0WzBdID09ICcgJyB8fCAo
dGV4dFswXSA9PSAnXG4nICYmICFzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKSkgfHwgdGV4dFswXSA9
PSAnXHQnKSB7CisgICAgaWYgKHRleHRbMF0gPT0gc3BhY2UgfHwgKHRleHRbMF0gPT0gbmV3bGlu
ZUNoYXJhY3RlciAmJiAhc3R5bGUucHJlc2VydmVOZXdsaW5lKCkpIHx8IHRleHRbMF0gPT0gJ1x0
JykgewogICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRl
KCk7IC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgZmlyc3QtbGluZS4KICAgICAgICAgaWYgKHN0cmlw
RnJvbnRTcGFjZXMpIHsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyIHNwYWNlID0gJyAnOwogICAg
ICAgICAgICAgZmxvYXQgc3BhY2VXaWR0aCA9IGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0
cnVjdFRleHRSdW4oJnNwYWNlLCAxLCBzdHlsZSkpOwogICAgICAgICAgICAgbWF4VyAtPSBzcGFj
ZVdpZHRoOwogICAgICAgICB9IGVsc2UKQEAgLTY1Myw4ICs2NTIsOCBAQCB2b2lkIFJlbmRlclRl
eHQ6OnRyaW1tZWRQcmVmV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwKICAgICAgICAgYm9vbCBmaXJz
dExpbmUgPSB0cnVlOwogICAgICAgICBiZWdpbk1heFcgPSBtYXhXOwogICAgICAgICBlbmRNYXhX
ID0gbWF4VzsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAg
ICAgICAgaW50IGxpbmVsZW4gPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuOyBpKyspIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpbmVsZW4gPSAwOwogICAgICAgICAg
ICAgd2hpbGUgKGkgKyBsaW5lbGVuIDwgbGVuICYmIHRleHRbaSArIGxpbmVsZW5dICE9ICdcbicp
CiAgICAgICAgICAgICAgICAgbGluZWxlbisrOwogCkBAIC03MjYsMjAgKzcyNSwyMiBAQCB2b2lk
IFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0
aCkKICAgICAgICAgbV9rbm93blRvSGF2ZU5vT3ZlcmZsb3dBbmROb0ZhbGxiYWNrRm9udHMgPSB0
cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIGZsb2F0IGh5cGhlbldpZHRoKFJlbmRlclRleHQqIHJl
bmRlcmVyLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCkKK3N0YXRpYyBpbmxpbmUgZmxvYXQgaHlw
aGVuV2lkdGgoUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQog
ewotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwotICAg
IHJldHVybiBmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHN0eWxlLmh5
cGhlblN0cmluZygpLnN0cmluZygpLCBzdHlsZSkpOworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7CisgICAgYXV0byB0ZXh0UnVuID0gUmVuZGVyQmxvY2s6
OmNvbnN0cnVjdFRleHRSdW4oc3R5bGUuaHlwaGVuU3RyaW5nKCkuc3RyaW5nKCksIHN0eWxlKTsK
KyAgICByZXR1cm4gZm9udC53aWR0aCh0ZXh0UnVuKTsKIH0KIAotc3RhdGljIGZsb2F0IG1heFdv
cmRGcmFnbWVudFdpZHRoKFJlbmRlclRleHQqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBTdHJpbmdWaWV3IHdvcmQsIGludCBtaW5p
bXVtUHJlZml4TGVuZ3RoLCB1bnNpZ25lZCBtaW5pbXVtU3VmZml4TGVuZ3RoLCBpbnQmIHN1ZmZp
eFN0YXJ0LCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxv
dyYgZ2x5cGhPdmVyZmxvdykKK3N0YXRpYyBmbG9hdCBtYXhXb3JkRnJhZ21lbnRXaWR0aChSZW5k
ZXJUZXh0JiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgU3RyaW5nVmlldyB3b3JkLCB1bnNpZ25lZCBtaW5pbXVtUHJlZml4TGVuZ3Ro
LCB1bnNpZ25lZCBtaW5pbXVtU3VmZml4TGVuZ3RoLCB1bnNpZ25lZCYgc3VmZml4U3RhcnQsIEhh
c2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93JiBnbHlwaE92
ZXJmbG93KQogewogICAgIHN1ZmZpeFN0YXJ0ID0gMDsKICAgICBpZiAod29yZC5sZW5ndGgoKSA8
PSBtaW5pbXVtU3VmZml4TGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFZlY3Rvcjxp
bnQsIDg+IGh5cGhlbkxvY2F0aW9uczsKLSAgICBpbnQgaHlwaGVuTG9jYXRpb24gPSB3b3JkLmxl
bmd0aCgpIC0gbWluaW11bVN1ZmZpeExlbmd0aDsKKyAgICBBU1NFUlQod29yZC5sZW5ndGgoKSA+
PSBtaW5pbXVtU3VmZml4TGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBoeXBoZW5Mb2NhdGlvbiA9IHdv
cmQubGVuZ3RoKCkgLSBtaW5pbXVtU3VmZml4TGVuZ3RoOwogICAgIHdoaWxlICgoaHlwaGVuTG9j
YXRpb24gPSBsYXN0SHlwaGVuTG9jYXRpb24od29yZCwgaHlwaGVuTG9jYXRpb24sIHN0eWxlLmxv
Y2FsZSgpKSkgPj0gbWluaW11bVByZWZpeExlbmd0aCkKICAgICAgICAgaHlwaGVuTG9jYXRpb25z
LmFwcGVuZChoeXBoZW5Mb2NhdGlvbik7CiAKQEAgLTc1OCw3ICs3NTksNyBAQCBzdGF0aWMgZmxv
YXQgbWF4V29yZEZyYWdtZW50V2lkdGgoUmVuZGVyVGV4dCogcmVuZGVyZXIsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZQogCiAgICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0
cnVjdFRleHRSdW4oZnJhZ21lbnRXaXRoSHlwaGVuLnRvU3RyaW5nKCksIHN0eWxlKTsKICAgICAg
ICAgcnVuLnNldENoYXJhY3RlcnNMZW5ndGgoZnJhZ21lbnRXaXRoSHlwaGVuLmxlbmd0aCgpKTsK
LSAgICAgICAgcnVuLnNldENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCghcmVuZGVyZXItPmNhblVz
ZVNpbXBsZUZvbnRDb2RlUGF0aCgpKTsKKyAgICAgICAgcnVuLnNldENoYXJhY3RlclNjYW5Gb3JD
b2RlUGF0aCghcmVuZGVyZXIuY2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCkpOwogICAgICAgICBm
bG9hdCBmcmFnbWVudFdpZHRoID0gZm9udC53aWR0aChydW4sICZmYWxsYmFja0ZvbnRzLCAmZ2x5
cGhPdmVyZmxvdyk7CiAKICAgICAgICAgLy8gTmFycm93IHByZWZpeGVzIGFyZSBpZ25vcmVkLiBT
ZWUgdHJ5SHlwaGVuYXRpbmcgaW4gUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcC4KQEAgLTgwNywx
OSArODA4LDE3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgLy8gSWYgYXV0b21hdGlj
IGh5cGhlbmF0aW9uIGlzIGFsbG93ZWQsIHdlIGtlZXAgdHJhY2sgb2YgdGhlIHdpZHRoIG9mIHRo
ZSB3aWRlc3Qgd29yZCAob3Igd29yZAogICAgIC8vIGZyYWdtZW50KSBlbmNvdW50ZXJlZCBzbyBm
YXIsIGFuZCBvbmx5IHRyeSBoeXBoZW5hdGluZyB3b3JkcyB0aGF0IGFyZSB3aWRlci4KICAgICBm
bG9hdCBtYXhXb3JkV2lkdGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCk7Ci0g
ICAgaW50IG1pbmltdW1QcmVmaXhMZW5ndGggPSAwOwotICAgIGludCBtaW5pbXVtU3VmZml4TGVu
Z3RoID0gMDsKKyAgICB1bnNpZ25lZCBtaW5pbXVtUHJlZml4TGVuZ3RoID0gMDsKKyAgICB1bnNp
Z25lZCBtaW5pbXVtU3VmZml4TGVuZ3RoID0gMDsKICAgICBpZiAoc3R5bGUuaHlwaGVucygpID09
IEh5cGhlbnNBdXRvICYmIGNhbkh5cGhlbmF0ZShzdHlsZS5sb2NhbGUoKSkpIHsKICAgICAgICAg
bWF4V29yZFdpZHRoID0gMDsKIAogICAgICAgICAvLyBNYXAgJ2h5cGhlbmF0ZS1saW1pdC17YmVm
b3JlLGFmdGVyfTogYXV0bzsnIHRvIDIuCi0gICAgICAgIG1pbmltdW1QcmVmaXhMZW5ndGggPSBz
dHlsZS5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlKCk7Ci0gICAgICAgIGlmIChtaW5pbXVtUHJlZml4
TGVuZ3RoIDwgMCkKLSAgICAgICAgICAgIG1pbmltdW1QcmVmaXhMZW5ndGggPSAyOworICAgICAg
ICBhdXRvIGJlZm9yZSA9IHN0eWxlLmh5cGhlbmF0aW9uTGltaXRCZWZvcmUoKTsKKyAgICAgICAg
bWluaW11bVByZWZpeExlbmd0aCA9IGJlZm9yZSA8IDAgPyAyIDogYmVmb3JlOwogCi0gICAgICAg
IG1pbmltdW1TdWZmaXhMZW5ndGggPSBzdHlsZS5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKTsKLSAg
ICAgICAgaWYgKG1pbmltdW1TdWZmaXhMZW5ndGggPCAwKQotICAgICAgICAgICAgbWluaW11bVN1
ZmZpeExlbmd0aCA9IDI7CisgICAgICAgIGF1dG8gYWZ0ZXIgPSBzdHlsZS5oeXBoZW5hdGlvbkxp
bWl0QWZ0ZXIoKTsKKyAgICAgICAgbWluaW11bVN1ZmZpeExlbmd0aCA9IGFmdGVyIDwgMCA/IDIg
OiBhZnRlcjsKICAgICB9CiAKICAgICBPcHRpb25hbDxpbnQ+IGZpcnN0R2x5cGhMZWZ0T3ZlcmZs
b3c7CkBAIC05MDYsMTIgKzkwNSwxMiBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdyA9IHdpZHRoRnJvbUNhY2hlKGZvbnQsIGks
IHdvcmRMZW4sIGxlYWRXaWR0aCArIGN1cnJNYXhXaWR0aCwgJmZhbGxiYWNrRm9udHMsICZnbHlw
aE92ZXJmbG93LCBzdHlsZSk7CiAgICAgICAgICAgICAgICAgaWYgKGMgPT0gc29mdEh5cGhlbiAm
JiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuc05vbmUpCi0gICAgICAgICAgICAgICAgICAgIGN1
cnJNaW5XaWR0aCA9IGh5cGhlbldpZHRoKHRoaXMsIGZvbnQpOworICAgICAgICAgICAgICAgICAg
ICBjdXJyTWluV2lkdGggPSBoeXBoZW5XaWR0aCgqdGhpcywgZm9udCk7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGlmICh3ID4gbWF4V29yZFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAg
aW50IHN1ZmZpeFN0YXJ0OwotICAgICAgICAgICAgICAgIGZsb2F0IG1heEZyYWdtZW50V2lkdGgg
PSBtYXhXb3JkRnJhZ21lbnRXaWR0aCh0aGlzLCBzdHlsZSwgZm9udCwgU3RyaW5nVmlldyhtX3Rl
eHQpLnN1YnN0cmluZyhpLCB3b3JkTGVuKSwgbWluaW11bVByZWZpeExlbmd0aCwgbWluaW11bVN1
ZmZpeExlbmd0aCwgc3VmZml4U3RhcnQsIGZhbGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOwor
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN1ZmZpeFN0YXJ0OworICAgICAgICAgICAgICAgIGZs
b2F0IG1heEZyYWdtZW50V2lkdGggPSBtYXhXb3JkRnJhZ21lbnRXaWR0aCgqdGhpcywgc3R5bGUs
IGZvbnQsIFN0cmluZ1ZpZXcobV90ZXh0KS5zdWJzdHJpbmcoaSwgd29yZExlbiksIG1pbmltdW1Q
cmVmaXhMZW5ndGgsIG1pbmltdW1TdWZmaXhMZW5ndGgsIHN1ZmZpeFN0YXJ0LCBmYWxsYmFja0Zv
bnRzLCBnbHlwaE92ZXJmbG93KTsKIAogICAgICAgICAgICAgICAgIGlmIChzdWZmaXhTdGFydCkg
ewogICAgICAgICAgICAgICAgICAgICBmbG9hdCBzdWZmaXhXaWR0aDsKQEAgLTk4NSw3ICs5ODQs
NyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0
IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgICAgICAgICAgICAgICAgICBtX21heFdp
ZHRoID0gY3Vyck1heFdpZHRoOwogICAgICAgICAgICAgICAgIGN1cnJNYXhXaWR0aCA9IDA7CiAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgaSwgMSwgc3R5bGUpOworICAgICAgICAgICAg
ICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oKnRoaXMsIGks
IDEsIHN0eWxlKTsKICAgICAgICAgICAgICAgICBydW4uc2V0Q2hhcmFjdGVyc0xlbmd0aChsZW4g
LSBpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocnVuLmNoYXJhY3RlcnNMZW5ndGgoKSA+PSBy
dW4ubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIHJ1bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xs
YXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsKQEAgLTEzMjUsNyArMTMyNCw3IEBA
IGZsb2F0IFJlbmRlclRleHQ6OndpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbiwgY29u
c3QgRm9udENhc2NhZGUmIGYsIGZsb2F0CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdyA9
IHdpZHRoRnJvbUNhY2hlKGYsIGZyb20sIGxlbiwgeFBvcywgZmFsbGJhY2tGb250cywgZ2x5cGhP
dmVyZmxvdywgc3R5bGUpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFRleHRSdW4gcnVuID0gUmVu
ZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZnJvbSwgbGVuLCBzdHlsZSk7CisgICAg
ICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oKnRoaXMsIGZy
b20sIGxlbiwgc3R5bGUpOwogICAgICAgICBydW4uc2V0Q2hhcmFjdGVyc0xlbmd0aCh0ZXh0TGVu
Z3RoKCkgLSBmcm9tKTsKICAgICAgICAgQVNTRVJUKHJ1bi5jaGFyYWN0ZXJzTGVuZ3RoKCkgPj0g
cnVuLmxlbmd0aCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKaW5kZXgg
ZWIwMzMwZmUxNWY3N2ZjNTcyNmNlODRhMWE2MGI0MWM0ZTFiYjc2Zi4uODFhZTQyMmY3ZGNlZjc2
NDAyNDhkNmE1OTJiMTgyNWUzYTI0ZTY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5oCkBAIC0xOTYsNyArMTk2LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExv
Y2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBIaXRUZXN0QWN0aW9uKSBmaW5hbCB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGZsb2F0IHdpZHRoRnJvbUNh
Y2hlKGNvbnN0IEZvbnRDYXNjYWRlJiwgaW50IHN0YXJ0LCBpbnQgbGVuLCBmbG9hdCB4UG9zLCBI
YXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyosIGNvbnN0
IFJlbmRlclN0eWxlJikgY29uc3Q7CisgICAgZmxvYXQgd2lkdGhGcm9tQ2FjaGUoY29uc3QgRm9u
dENhc2NhZGUmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuLCBmbG9hdCB4UG9zLCBIYXNo
U2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyosIGNvbnN0IFJl
bmRlclN0eWxlJikgY29uc3Q7CiAgICAgYm9vbCBpc0FsbEFTQ0lJKCkgY29uc3QgeyByZXR1cm4g
bV9pc0FsbEFTQ0lJOyB9CiAgICAgYm9vbCBjb21wdXRlVXNlQmFja3NsYXNoQXNZZW5TeW1ib2wo
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmlu
ZGV4IDhhMmVmYTVmYWVhYzU3NWRmZjk3ZWI4MjBlMDg5MzFlNjBiYjZkMjcuLmY5YzljOTFkMDhj
OGE4Y2EwNmNhNTI1NjZiMzdiOGVjZTFiZTBhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTU3NSw3ICs1NzUsNyBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIGZsb2F0IG1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4
dFJ1bihzdHJpbmcsIG1fc3R5bGUsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFk
aW5nRXhwYW5zaW9uLCBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKKyAgICAgICAgVGV4dFJ1biBydW4g
PSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihzdHJpbmcsIG1fc3R5bGUpOwogICAgICAg
ICByZXR1cm4gbV9mb250LndpZHRoKHJ1bik7CiAgICAgfQogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKaW5kZXggM2I3NTM3NzAx
NDEyMzBjNmRiODExYjA5ZTg0NTg0ODBjZDExZmM1NS4uODliMTZlMzAyY2I0YzkxZmEzNGEwNTk4
NDEyNDQ5MzI1MTQ0ZTkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvQnJlYWtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
QnJlYWtpbmdDb250ZXh0LmgKQEAgLTY0NCw3ICs2NDQsNyBAQCBBTFdBWVNfSU5MSU5FIGZsb2F0
IHRleHRXaWR0aChSZW5kZXJUZXh0JiB0ZXh0LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4s
IGNvbgogICAgIGlmIChsYXlvdXQpCiAgICAgICAgIHJldHVybiBGb250Q2FzY2FkZTo6d2lkdGgo
KmxheW91dCwgZnJvbSwgbGVuLCAmZmFsbGJhY2tGb250cyk7CiAKLSAgICBUZXh0UnVuIHJ1biA9
IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZ0ZXh0LCBmcm9tLCBsZW4sIHN0eWxlKTsK
KyAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIGZy
b20sIGxlbiwgc3R5bGUpOwogICAgIHJ1bi5zZXRDaGFyYWN0ZXJzTGVuZ3RoKHRleHQudGV4dExl
bmd0aCgpIC0gZnJvbSk7CiAgICAgQVNTRVJUKHJ1bi5jaGFyYWN0ZXJzTGVuZ3RoKCkgPj0gcnVu
Lmxlbmd0aCgpKTsKIApAQCAtNjkzLDcgKzY5Myw3IEBAIGlubGluZSB2b2lkIHRyeUh5cGhlbmF0
aW5nKFJlbmRlclRleHQmIHRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBBdG9t
CiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRleHQu
c3R5bGUoKTsKLSAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVu
KCZ0ZXh0LCBsYXN0U3BhY2UsIHBvcyAtIGxhc3RTcGFjZSwgc3R5bGUpOworICAgIFRleHRSdW4g
cnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgbGFzdFNwYWNlLCBwb3Mg
LSBsYXN0U3BhY2UsIHN0eWxlKTsKICAgICBydW4uc2V0Q2hhcmFjdGVyc0xlbmd0aCh0ZXh0LnRl
eHRMZW5ndGgoKSAtIGxhc3RTcGFjZSk7CiAgICAgQVNTRVJUKHJ1bi5jaGFyYWN0ZXJzTGVuZ3Ro
KCkgPj0gcnVuLmxlbmd0aCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5kZXggNzUxNTVjODI3MjM3ZjBlZjQwN2EzOGZhNjgw
YjExMzUwNTg1MzAxYy4uNjg5MTY0YWU2NjYzZmI3ZGIxYzM1MDY0MTkzZTlhMWQ4N2YwMzdkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3gu
Y3BwCkBAIC04OCw3ICs4OCw3IEBAIGludCBTVkdJbmxpbmVUZXh0Qm94OjpvZmZzZXRGb3JQb3Np
dGlvbkluRnJhZ21lbnQoY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVuCiAgICBmbG9hdCBz
Y2FsaW5nRmFjdG9yID0gcmVuZGVyZXIoKS5zY2FsaW5nRmFjdG9yKCk7CiAgICAgQVNTRVJUKHNj
YWxpbmdGYWN0b3IpOwogCi0gICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bigm
cmVuZGVyZXIoKS5zdHlsZSgpLCBmcmFnbWVudCk7CisgICAgVGV4dFJ1biB0ZXh0UnVuID0gY29u
c3RydWN0VGV4dFJ1bihyZW5kZXJlcigpLnN0eWxlKCksIGZyYWdtZW50KTsKIAogICAgIC8vIEV2
ZW50dWFsbHkgaGFuZGxlIGxlbmd0aEFkanVzdD0ic3BhY2luZ0FuZEdseXBocyIuCiAgICAgLy8g
RklYTUU6IEhhbmRsZSB2ZXJ0aWNhbCB0ZXh0LgpAQCAtMTA3LDEwICsxMDcsOSBAQCBmbG9hdCBT
VkdJbmxpbmVUZXh0Qm94Ojpwb3NpdGlvbkZvck9mZnNldCh1bnNpZ25lZCkgY29uc3QKICAgICBy
ZXR1cm4gMDsKIH0KIAotRmxvYXRSZWN0IFNWR0lubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RG
b3JUZXh0RnJhZ21lbnQoY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCwgdW5zaWduZWQg
c3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgZW5kUG9zaXRpb24sIGNvbnN0IFJlbmRlclN0eWxlKiBz
dHlsZSkgY29uc3QKK0Zsb2F0UmVjdCBTVkdJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25SZWN0Rm9y
VGV4dEZyYWdtZW50KGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIHVuc2lnbmVkIHN0
YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGVuZFBvc2l0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc3RhcnRQ
b3NpdGlvbiA8IGVuZFBvc2l0aW9uKTsKLSAgICBBU1NFUlQoc3R5bGUpOwogCiAgICAgZmxvYXQg
c2NhbGluZ0ZhY3RvciA9IHJlbmRlcmVyKCkuc2NhbGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChz
Y2FsaW5nRmFjdG9yKTsKQEAgLTE1Nyw3ICsxNTYsNyBAQCBMYXlvdXRSZWN0IFNWR0lubGluZVRl
eHRCb3g6OmxvY2FsU2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCB1bnNpZ25l
ZAogICAgICAgICBpZiAoIW1hcFN0YXJ0RW5kUG9zaXRpb25zSW50b0ZyYWdtZW50Q29vcmRpbmF0
ZXMoZnJhZ21lbnQsIGZyYWdtZW50U3RhcnRQb3NpdGlvbiwgZnJhZ21lbnRFbmRQb3NpdGlvbikp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBGbG9hdFJlY3QgZnJhZ21lbnRSZWN0
ID0gc2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudChmcmFnbWVudCwgZnJhZ21lbnRTdGFydFBv
c2l0aW9uLCBmcmFnbWVudEVuZFBvc2l0aW9uLCAmc3R5bGUpOworICAgICAgICBGbG9hdFJlY3Qg
ZnJhZ21lbnRSZWN0ID0gc2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudChmcmFnbWVudCwgZnJh
Z21lbnRTdGFydFBvc2l0aW9uLCBmcmFnbWVudEVuZFBvc2l0aW9uLCBzdHlsZSk7CiAgICAgICAg
IGZyYWdtZW50LmJ1aWxkRnJhZ21lbnRUcmFuc2Zvcm0oZnJhZ21lbnRUcmFuc2Zvcm0pOwogICAg
ICAgICBpZiAoIWZyYWdtZW50VHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKICAgICAgICAgICAgIGZy
YWdtZW50UmVjdCA9IGZyYWdtZW50VHJhbnNmb3JtLm1hcFJlY3QoZnJhZ21lbnRSZWN0KTsKQEAg
LTIyNSw3ICsyMjQsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFj
a2dyb3VuZChQYWludEluZm8mIHBhaW50SW5mbykKICAgICAgICAgICAgIHBhaW50SW5mby5jb250
ZXh0KCkuY29uY2F0Q1RNKGZyYWdtZW50VHJhbnNmb3JtKTsKIAogICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLmZpbGxSZWN0KHNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21lbnQoZnJhZ21l
bnQsIGZyYWdtZW50U3RhcnRQb3NpdGlvbiwgZnJhZ21lbnRFbmRQb3NpdGlvbiwgJnN0eWxlKSwg
YmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChz
ZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdtZW50KGZyYWdtZW50LCBmcmFnbWVudFN0YXJ0UG9zaXRp
b24sIGZyYWdtZW50RW5kUG9zaXRpb24sIHN0eWxlKSwgYmFja2dyb3VuZENvbG9yKTsKIAogICAg
ICAgICBtX3BhaW50aW5nUmVzb3VyY2VNb2RlID0gQXBwbHlUb0RlZmF1bHRNb2RlOwogICAgIH0K
QEAgLTMwNiwxMyArMzA1LDE1IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgICAg
ICAgICAgaWYgKCFoYXNGaWxsKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICBtX3BhaW50aW5nUmVzb3VyY2VNb2RlID0gQXBwbHlUb0ZpbGxNb2RlIHwgQXBw
bHlUb1RleHRNb2RlOwotICAgICAgICAgICAgICAgIHBhaW50VGV4dChwYWludEluZm8uY29udGV4
dCgpLCAmc3R5bGUsIHNlbGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWlu
dFNlbGVjdGVkVGV4dE9ubHkpOworICAgICAgICAgICAgICAgIEFTU0VSVChzZWxlY3Rpb25TdHls
ZSk7CisgICAgICAgICAgICAgICAgcGFpbnRUZXh0KHBhaW50SW5mby5jb250ZXh0KCksIHN0eWxl
LCAqc2VsZWN0aW9uU3R5bGUsIGZyYWdtZW50LCBoYXNTZWxlY3Rpb24sIHBhaW50U2VsZWN0ZWRU
ZXh0T25seSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhaW50
VHlwZVN0cm9rZToKICAgICAgICAgICAgICAgICBpZiAoIWhhc1Zpc2libGVTdHJva2UpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIG1fcGFpbnRpbmdSZXNv
dXJjZU1vZGUgPSBBcHBseVRvU3Ryb2tlTW9kZSB8IEFwcGx5VG9UZXh0TW9kZTsKLSAgICAgICAg
ICAgICAgICBwYWludFRleHQocGFpbnRJbmZvLmNvbnRleHQoKSwgJnN0eWxlLCBzZWxlY3Rpb25T
dHlsZSwgZnJhZ21lbnQsIGhhc1NlbGVjdGlvbiwgcGFpbnRTZWxlY3RlZFRleHRPbmx5KTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoc2VsZWN0aW9uU3R5bGUpOworICAgICAgICAgICAgICAgIHBh
aW50VGV4dChwYWludEluZm8uY29udGV4dCgpLCBzdHlsZSwgKnNlbGVjdGlvblN0eWxlLCBmcmFn
bWVudCwgaGFzU2VsZWN0aW9uLCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYWludFR5cGVNYXJrZXJzOgogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtMzMzLDE3ICszMzQsMTYgQEAgdm9pZCBTVkdJbmxpbmVUZXh0
Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2UKICAgICBBU1NFUlQoIW1fcGFpbnRpbmdSZXNvdXJjZSk7CiB9CiAKLWJvb2wgU1ZHSW5s
aW5lVGV4dEJveDo6YWNxdWlyZVBhaW50aW5nUmVzb3VyY2UoR3JhcGhpY3NDb250ZXh0KiYgY29u
dGV4dCwgZmxvYXQgc2NhbGluZ0ZhY3RvciwgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVy
LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIFNWR0lubGluZVRleHRCb3g6OmFjcXVp
cmVQYWludGluZ1Jlc291cmNlKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGZsb2F0IHNjYWxp
bmdGYWN0b3IsIFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQogewogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsKLSAgICBBU1NFUlQoc3R5
bGUpOwogICAgIEFTU0VSVChtX3BhaW50aW5nUmVzb3VyY2VNb2RlICE9IEFwcGx5VG9EZWZhdWx0
TW9kZSk7CiAKICAgICBDb2xvciBmYWxsYmFja0NvbG9yOwogICAgIGlmIChtX3BhaW50aW5nUmVz
b3VyY2VNb2RlICYgQXBwbHlUb0ZpbGxNb2RlKQotICAgICAgICBtX3BhaW50aW5nUmVzb3VyY2Ug
PSBSZW5kZXJTVkdSZXNvdXJjZTo6ZmlsbFBhaW50aW5nUmVzb3VyY2UocmVuZGVyZXIsICpzdHls
ZSwgZmFsbGJhY2tDb2xvcik7CisgICAgICAgIG1fcGFpbnRpbmdSZXNvdXJjZSA9IFJlbmRlclNW
R1Jlc291cmNlOjpmaWxsUGFpbnRpbmdSZXNvdXJjZShyZW5kZXJlciwgc3R5bGUsIGZhbGxiYWNr
Q29sb3IpOwogICAgIGVsc2UgaWYgKG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUgJiBBcHBseVRvU3Ry
b2tlTW9kZSkKLSAgICAgICAgbV9wYWludGluZ1Jlc291cmNlID0gUmVuZGVyU1ZHUmVzb3VyY2U6
OnN0cm9rZVBhaW50aW5nUmVzb3VyY2UocmVuZGVyZXIsICpzdHlsZSwgZmFsbGJhY2tDb2xvcik7
CisgICAgICAgIG1fcGFpbnRpbmdSZXNvdXJjZSA9IFJlbmRlclNWR1Jlc291cmNlOjpzdHJva2VQ
YWludGluZ1Jlc291cmNlKHJlbmRlcmVyLCBzdHlsZSwgZmFsbGJhY2tDb2xvcik7CiAgICAgZWxz
ZSB7CiAgICAgICAgIC8vIFdlJ3JlIGVpdGhlciBjYWxsZWQgZm9yIHN0cm9raW5nIG9yIGZpbGxp
bmcuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzUyLDEzICszNTIsMTMgQEAg
Ym9vbCBTVkdJbmxpbmVUZXh0Qm94OjphY3F1aXJlUGFpbnRpbmdSZXNvdXJjZShHcmFwaGljc0Nv
bnRleHQqJiBjb250ZXh0LCBmbG9hdAogICAgIGlmICghbV9wYWludGluZ1Jlc291cmNlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIW1fcGFpbnRpbmdSZXNvdXJjZS0+YXBwbHlS
ZXNvdXJjZShyZW5kZXJlciwgKnN0eWxlLCBjb250ZXh0LCBtX3BhaW50aW5nUmVzb3VyY2VNb2Rl
KSkgeworICAgIGlmICghbV9wYWludGluZ1Jlc291cmNlLT5hcHBseVJlc291cmNlKHJlbmRlcmVy
LCBzdHlsZSwgY29udGV4dCwgbV9wYWludGluZ1Jlc291cmNlTW9kZSkpIHsKICAgICAgICAgaWYg
KGZhbGxiYWNrQ29sb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZVNvbGlkQ29sb3IqIGZhbGxiYWNrUmVzb3VyY2UgPSBSZW5kZXJTVkdSZXNvdXJjZTo6c2hhcmVk
U29saWRQYWludGluZ1Jlc291cmNlKCk7CiAgICAgICAgICAgICBmYWxsYmFja1Jlc291cmNlLT5z
ZXRDb2xvcihmYWxsYmFja0NvbG9yKTsKIAogICAgICAgICAgICAgbV9wYWludGluZ1Jlc291cmNl
ID0gZmFsbGJhY2tSZXNvdXJjZTsKLSAgICAgICAgICAgIG1fcGFpbnRpbmdSZXNvdXJjZS0+YXBw
bHlSZXNvdXJjZShyZW5kZXJlciwgKnN0eWxlLCBjb250ZXh0LCBtX3BhaW50aW5nUmVzb3VyY2VN
b2RlKTsKKyAgICAgICAgICAgIG1fcGFpbnRpbmdSZXNvdXJjZS0+YXBwbHlSZXNvdXJjZShyZW5k
ZXJlciwgc3R5bGUsIGNvbnRleHQsIG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpyZWxl
YXNlUGFpbnRpbmdSZXNvdXJjZShHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBjb25zdAogICAg
IG1fcGFpbnRpbmdSZXNvdXJjZSA9IG51bGxwdHI7CiB9CiAKLWJvb2wgU1ZHSW5saW5lVGV4dEJv
eDo6cHJlcGFyZUdyYXBoaWNzQ29udGV4dEZvclRleHRQYWludGluZyhHcmFwaGljc0NvbnRleHQq
JiBjb250ZXh0LCBmbG9hdCBzY2FsaW5nRmFjdG9yLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUp
Citib29sIFNWR0lubGluZVRleHRCb3g6OnByZXBhcmVHcmFwaGljc0NvbnRleHRGb3JUZXh0UGFp
bnRpbmcoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgZmxvYXQgc2NhbGluZ0ZhY3RvciwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIHJldHVybiBhY3F1aXJlUGFpbnRpbmdSZXNv
dXJjZShjb250ZXh0LCBzY2FsaW5nRmFjdG9yLCBwYXJlbnQoKS0+cmVuZGVyZXIoKSwgc3R5bGUp
OwogfQpAQCAtMzg2LDE2ICszODYsMTQgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpyZXN0b3Jl
R3JhcGhpY3NDb250ZXh0QWZ0ZXJUZXh0UGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0KiYKICAgICBy
ZWxlYXNlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0LCAvKiBwYXRoICovbnVsbHB0cik7CiB9CiAK
LVRleHRSdW4gU1ZHSW5saW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQpIGNvbnN0CitUZXh0
UnVuIFNWR0lubGluZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50KSBjb25zdAogewotICAgIEFT
U0VSVChzdHlsZSk7Ci0KICAgICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KHJlbmRlcmVyKCkudGV4
dCgpKS5zdWJzdHJpbmcoZnJhZ21lbnQuY2hhcmFjdGVyT2Zmc2V0LCBmcmFnbWVudC5sZW5ndGgp
CiAgICAgICAgICAgICAgICAgLCAwIC8qIHhQb3MsIG9ubHkgcmVsZXZhbnQgd2l0aCBhbGxvd1Rh
YnM9dHJ1ZSAqLwogICAgICAgICAgICAgICAgICwgMCAvKiBwYWRkaW5nLCBvbmx5IHJlbGV2YW50
IGZvciBqdXN0aWZpZWQgdGV4dCwgbm90IHJlbGV2YW50IGZvciBTVkcgKi8KICAgICAgICAgICAg
ICAgICAsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24KICAgICAgICAgICAgICAgICAsIGRpcmVjdGlv
bigpCi0gICAgICAgICAgICAgICAgLCBkaXJPdmVycmlkZSgpIHx8IHN0eWxlLT5ydGxPcmRlcmlu
ZygpID09IFZpc3VhbE9yZGVyIC8qIGRpcmVjdGlvbmFsT3ZlcnJpZGUgKi8pOworICAgICAgICAg
ICAgICAgICwgZGlyT3ZlcnJpZGUoKSB8fCBzdHlsZS5ydGxPcmRlcmluZygpID09IFZpc3VhbE9y
ZGVyIC8qIGRpcmVjdGlvbmFsT3ZlcnJpZGUgKi8pOwogCiAgICAgLy8gV2UgaGFuZGxlIGxldHRl
ciAmIHdvcmQgc3BhY2luZyBvdXJzZWx2ZXMuCiAgICAgcnVuLmRpc2FibGVTcGFjaW5nKCk7CkBA
IC01MzgsMTcgKzUzNiwxNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlv
bldpdGhTdHlsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFRleHREZQogICAgIHBhdGguYWRk
UmVjdChGbG9hdFJlY3QoZGVjb3JhdGlvbk9yaWdpbiwgRmxvYXRTaXplKHdpZHRoLCB0aGlja25l
c3MpKSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIgPSAmY29udGV4dDsKLSAg
ICBpZiAoYWNxdWlyZVBhaW50aW5nUmVzb3VyY2UoY29udGV4dFB0ciwgc2NhbGluZ0ZhY3Rvciwg
ZGVjb3JhdGlvblJlbmRlcmVyLCAmZGVjb3JhdGlvblN0eWxlKSkKKyAgICBpZiAoYWNxdWlyZVBh
aW50aW5nUmVzb3VyY2UoY29udGV4dFB0ciwgc2NhbGluZ0ZhY3RvciwgZGVjb3JhdGlvblJlbmRl
cmVyLCBkZWNvcmF0aW9uU3R5bGUpKQogICAgICAgICByZWxlYXNlUGFpbnRpbmdSZXNvdXJjZShj
b250ZXh0UHRyLCAmcGF0aCk7CiB9CiAKLXZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSog
c3R5bGUsIFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQs
IHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGVuZFBvc2l0aW9uKQordm9pZCBTVkdJ
bmxpbmVUZXh0Qm94OjpwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgU1ZH
VGV4dEZyYWdtZW50JiBmcmFnbWVudCwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQg
ZW5kUG9zaXRpb24pCiB7CiAgICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHJlbmRlcmVyKCkuc2Nh
bGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsKIAogICAgIGNvbnN0IEZv
bnRDYXNjYWRlJiBzY2FsZWRGb250ID0gcmVuZGVyZXIoKS5zY2FsZWRGb250KCk7Ci0gICAgY29u
c3QgU2hhZG93RGF0YSogc2hhZG93ID0gc3R5bGUtPnRleHRTaGFkb3coKTsKKyAgICBjb25zdCBT
aGFkb3dEYXRhKiBzaGFkb3cgPSBzdHlsZS50ZXh0U2hhZG93KCk7CiAKICAgICBGbG9hdFBvaW50
IHRleHRPcmlnaW4oZnJhZ21lbnQueCwgZnJhZ21lbnQueSk7CiAgICAgRmxvYXRTaXplIHRleHRT
aXplKGZyYWdtZW50LndpZHRoLCBmcmFnbWVudC5oZWlnaHQpOwpAQCAtNTg3LDExICs1ODUsOCBA
QCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgUmVuZAogICAgIH0gd2hpbGUgKHNoYWRvdyk7CiB9CiAKLXZv
aWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2VsZWN0aW9uU3R5
bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgaGFzU2VsZWN0aW9uLCBi
b29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSkKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSYgc2VsZWN0aW9uU3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYg
ZnJhZ21lbnQsIGJvb2wgaGFzU2VsZWN0aW9uLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSkK
IHsKLSAgICBBU1NFUlQoc3R5bGUpOwotICAgIEFTU0VSVChzZWxlY3Rpb25TdHlsZSk7Ci0KICAg
ICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uID0gMDsKICAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9
IDA7CiAgICAgaWYgKGhhc1NlbGVjdGlvbikgewpAQCAtNjEyLDEyICs2MDcsMTIgQEAgdm9pZCBT
VkdJbmxpbmVUZXh0Qm94OjpwYWludFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBSZW5kZXJTdHlsZSogc3QKIAogICAgIC8vIERyYXcgdGV4dCB1c2luZyBzZWxlY3Rpb24gc3R5
bGUgZnJvbSB0aGUgc3RhcnQgdG8gdGhlIGVuZCBwb3NpdGlvbiBvZiB0aGUgc2VsZWN0aW9uCiAg
ICAgaWYgKHN0eWxlICE9IHNlbGVjdGlvblN0eWxlKQotICAgICAgICBTVkdSZXNvdXJjZXNDYWNo
ZTo6Y2xpZW50U3R5bGVDaGFuZ2VkKHBhcmVudCgpLT5yZW5kZXJlcigpLCBTdHlsZURpZmZlcmVu
Y2VSZXBhaW50LCAqc2VsZWN0aW9uU3R5bGUpOworICAgICAgICBTVkdSZXNvdXJjZXNDYWNoZTo6
Y2xpZW50U3R5bGVDaGFuZ2VkKHBhcmVudCgpLT5yZW5kZXJlcigpLCBTdHlsZURpZmZlcmVuY2VS
ZXBhaW50LCBzZWxlY3Rpb25TdHlsZSk7CiAKICAgICBwYWludFRleHRXaXRoU2hhZG93cyhjb250
ZXh0LCBzZWxlY3Rpb25TdHlsZSwgdGV4dFJ1biwgZnJhZ21lbnQsIHN0YXJ0UG9zaXRpb24sIGVu
ZFBvc2l0aW9uKTsKIAogICAgIGlmIChzdHlsZSAhPSBzZWxlY3Rpb25TdHlsZSkKLSAgICAgICAg
U1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFN0eWxlQ2hhbmdlZChwYXJlbnQoKS0+cmVuZGVyZXIo
KSwgU3R5bGVEaWZmZXJlbmNlUmVwYWludCwgKnN0eWxlKTsKKyAgICAgICAgU1ZHUmVzb3VyY2Vz
Q2FjaGU6OmNsaWVudFN0eWxlQ2hhbmdlZChwYXJlbnQoKS0+cmVuZGVyZXIoKSwgU3R5bGVEaWZm
ZXJlbmNlUmVwYWludCwgc3R5bGUpOwogCiAgICAgLy8gRXZlbnR1YWxseSBkcmF3IHRleHQgdXNp
bmcgcmVndWxhciBzdHlsZSBmcm9tIHRoZSBlbmQgcG9zaXRpb24gb2YgdGhlIHNlbGVjdGlvbiB0
byB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGNodW5rIHBhcnQKICAgICBpZiAoZW5kUG9zaXRpb24g
PCBmcmFnbWVudC5sZW5ndGggJiYgIXBhaW50U2VsZWN0ZWRUZXh0T25seSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmgKaW5kZXggMWUzMmE0MjIy
OTRlNTYzOWNiMzJmZWE1OTkzZGYwZDQzMjVkZTgwZS4uNjZjNGVhZTA0NTI4NmU1ODM3YjAwZjRh
M2U0MzJkYmQxZTU4OGYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVUZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdJbmxpbmVUZXh0Qm94LmgKQEAgLTY0LDIzICs2NCwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRTdGFydHNOZXdUZXh0Q2h1bmsoYm9vbCBuZXdUZXh0Q2h1bmspIHsgbV9zdGFydHNOZXdUZXh0
Q2h1bmsgPSBuZXdUZXh0Q2h1bms7IH0KIAogICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbkluRnJh
Z21lbnQoY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgZmxvYXQgcG9zaXRpb24sIGJvb2wgaW5jbHVk
ZVBhcnRpYWxHbHlwaHMpIGNvbnN0OwotICAgIEZsb2F0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yVGV4
dEZyYWdtZW50KGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIHVuc2lnbmVkIGZyYWdtZW50U3RhcnRQ
b3NpdGlvbiwgdW5zaWduZWQgZnJhZ21lbnRFbmRQb3NpdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUq
KSBjb25zdDsKKyAgICBGbG9hdFJlY3Qgc2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudChjb25z
dCBTVkdUZXh0RnJhZ21lbnQmLCB1bnNpZ25lZCBmcmFnbWVudFN0YXJ0UG9zaXRpb24sIHVuc2ln
bmVkIGZyYWdtZW50RW5kUG9zaXRpb24sIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKIHBy
aXZhdGU6CiAgICAgYm9vbCBpc1NWR0lubGluZVRleHRCb3goKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVy
U3R5bGUqLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmKSBjb25zdDsKKyAgICBUZXh0UnVuIGNvbnN0
cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmKSBj
b25zdDsKIAotICAgIGJvb2wgYWNxdWlyZVBhaW50aW5nUmVzb3VyY2UoR3JhcGhpY3NDb250ZXh0
KiYsIGZsb2F0IHNjYWxpbmdGYWN0b3IsIFJlbmRlckJveE1vZGVsT2JqZWN0JiwgY29uc3QgUmVu
ZGVyU3R5bGUqKTsKKyAgICBib29sIGFjcXVpcmVQYWludGluZ1Jlc291cmNlKEdyYXBoaWNzQ29u
dGV4dComLCBmbG9hdCBzY2FsaW5nRmFjdG9yLCBSZW5kZXJCb3hNb2RlbE9iamVjdCYsIGNvbnN0
IFJlbmRlclN0eWxlJik7CiAgICAgdm9pZCByZWxlYXNlUGFpbnRpbmdSZXNvdXJjZShHcmFwaGlj
c0NvbnRleHQqJiwgY29uc3QgUGF0aCopOwogCi0gICAgYm9vbCBwcmVwYXJlR3JhcGhpY3NDb250
ZXh0Rm9yVGV4dFBhaW50aW5nKEdyYXBoaWNzQ29udGV4dComLCBmbG9hdCBzY2FsaW5nRmFjdG9y
LCBjb25zdCBSZW5kZXJTdHlsZSopOworICAgIGJvb2wgcHJlcGFyZUdyYXBoaWNzQ29udGV4dEZv
clRleHRQYWludGluZyhHcmFwaGljc0NvbnRleHQqJiwgZmxvYXQgc2NhbGluZ0ZhY3RvciwgY29u
c3QgUmVuZGVyU3R5bGUmKTsKICAgICB2b2lkIHJlc3RvcmVHcmFwaGljc0NvbnRleHRBZnRlclRl
eHRQYWludGluZyhHcmFwaGljc0NvbnRleHQqJik7CiAKICAgICB2b2lkIHBhaW50RGVjb3JhdGlv
bihHcmFwaGljc0NvbnRleHQmLCBUZXh0RGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50
Jik7CiAgICAgdm9pZCBwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0Jiwg
VGV4dERlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIFJlbmRlckJveE1vZGVsT2Jq
ZWN0JiBkZWNvcmF0aW9uUmVuZGVyZXIpOwotICAgIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3Mo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUqLCBUZXh0UnVuJiwgY29uc3QgU1ZH
VGV4dEZyYWdtZW50JiwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgZW5kUG9zaXRp
b24pOwotICAgIHZvaWQgcGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0
eWxlKiwgY29uc3QgUmVuZGVyU3R5bGUqIHNlbGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJh
Z21lbnQmLCBib29sIGhhc1NlbGVjdGlvbiwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOwor
ICAgIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVu
ZGVyU3R5bGUmLCBUZXh0UnVuJiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgdW5zaWduZWQgc3Rh
cnRQb3NpdGlvbiwgdW5zaWduZWQgZW5kUG9zaXRpb24pOworICAgIHZvaWQgcGFpbnRUZXh0KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUmIHNl
bGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBib29sIGhhc1NlbGVjdGlvbiwg
Ym9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOwogCiAgICAgYm9vbCBub2RlQXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24m
IGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIEhpdFRlc3RBY3Rp
b24pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5tbQppbmRleCBiNzQwYmZmNjdhYjY3NzZjOGFlY2JjNmJkNzJmZWY1N2Ew
OGM4NmZiLi5hOGQwNGMwZTJkOGJkM2M5Yjg1NDE2NmZjMTVlY2JmYWY4ODRiNTM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KQEAg
LTM4LDcgKzM4LDYgQEAKICNpbXBvcnQgIldlYktpdE5TU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0
ICJXZWJOU1Bhc3RlYm9hcmRFeHRyYXMuaCIKICNpbXBvcnQgIldlYk5TVVJMRXh0cmFzLmgiCi0j
aW1wb3J0ICJXZWJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGUuaCIK
ICNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJu
YWwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA3YjkwODNhNTE0Njg3
ODY3NmU1YmVkYzAwZDJhNjE3NzlkNmEzYjgxLi5lYzMwMTliODJhOWQ1NzUyNWIxNGVmYzEyM2Ri
MzllZjY3NTIwYTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yNjEs
NyArMjYxLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TbWFydFJlcGxhY2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVGV4dFJ1bi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV0FLV2luZG93Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dLVmlldy5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287599</attachid>
            <date>2016-08-31 21:53:00 -0700</date>
            <delta_ts>2016-09-01 00:39:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161473-20160831215047.patch</filename>
            <type>text/plain</type>
            <size>43925</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA3NzcyOGY2NDBiOGEx
YzRkMmRiYjM3ZGNhMGNlMTQ1OWVhZGM0YS4uNDRkNmJlMTRlYTY3MGYzNjQyZmU3NjdkNjVkOTA4
OWRmYTQxY2NmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE2LTA4LTMxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAg
VGV4dFJ1bi1yZWxhdGVkIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MTQ3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNvbWUgYXNzb3J0ZWQgY2xlYW51cCwgaW5jbHVkaW5nOgorICAgICAgICAt
IFJlbmFtaW5nICJBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lv
biIgdG8gIkRlZmF1bHRFeHBhbnNpb24iCisgICAgICAgIC0gTWlncmF0aW5nIGZyb20gcG9pbnRl
cnMgdG8gcmVmZXJlbmNlcworICAgICAgICAtIE1pZ3JhdGluZyBmcm9tIGludHMgdG8gdW5zaWdu
ZWRzCisgICAgICAgIC0gVXNpbmcgcHJvcGVyIGNoYXJhY3RlciBuYW1lcyBmcm9tIENoYXJhY3Rl
ck5hbWVzLmgKKyAgICAgICAgLSBTaW1wbGlmeWluZyBDb3JlVGV4dFNQSS5oCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFJ1bjo6VGV4dFJ1bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TGF5b3V0Ojppc05lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TGF5b3V0Ojpjb25zdHJ1Y3RUZXh0UnVuKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcGkvY29jb2EvQ29yZVRleHRTUEkuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L1RleHRGbGFncy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlv
bnNXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dDo6d2lkdGhGcm9tQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dDo6dHJpbW1lZFByZWZXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6aHlwaGVu
V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6bWF4V29yZEZyYWdtZW50V2lkdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6d2lkdGgpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgor
ICAgICAgICAqIHJlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oOgorICAgICAgICAoV2Vi
Q29yZTo6dGV4dFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUh5cGhlbmF0aW5nKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRpb25JbkZyYWdtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJh
Z21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6bG9jYWxTZWxlY3Rp
b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0
aW9uQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjphY3F1aXJlUGFpbnRpbmdS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwcmVwYXJlR3Jh
cGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGlu
ZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5l
VGV4dEJveDo6cGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0lubGluZVRleHRCb3g6OnBhaW50VGV4dFdpdGhTaGFkb3dzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9T
VkdJbmxpbmVUZXh0Qm94Lmg6CisKIDIwMTYtMDgtMzEgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdCBzaG91bGQgc2V0IGEgc3Vic3lzdGVtIGZvciBv
c19sb2cgc28gaXQncyBlYXNpZXIgdG8gZmlsdGVyIGZvciBXZWJLaXQgbG9nIG1lc3NhZ2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKaW5kZXggNGEzYTFkZDI5ZTQzNDBhNjBkNmM0MWQwNzhlMzU0MzYzNjBhNTA5
My4uODhmZGE4Nzk5NmY3N2QxZGM2MGU4ZjEzMjViNGFmZjAyNDE1NThhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA4LTMxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgVGV4dFJ1bi1yZWxhdGVkIGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTQ3
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSB1bnVzZWQgI2luY2x1ZGVzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0Ns
aWVudC5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisKIDIwMTYtMDgtMzEgIEtl
aXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdCBzaG91bGQg
c2V0IGEgc3Vic3lzdGVtIGZvciBvc19sb2cgc28gaXQncyBlYXNpZXIgdG8gZmlsdGVyIGZvciBX
ZWJLaXQgbG9nIG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UZXh0UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0
UnVuLmgKaW5kZXggNzdkZWUzYjQzM2FiZmE0MWI2ZjM3MDhlNzBkYTdhMjg0NmIwNzg5Zi4uYTgw
ZmU3ZTYxZDkzOTFjMDBkNjFmNjdlODVkNzg2OWEwZTg0MDhiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaApAQCAtNDUsNyArNDUsNyBAQCBzdHJ1Y3QgV2lk
dGhJdGVyYXRvcjsKIGNsYXNzIFRleHRSdW4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIGV4cGxpY2l0IFRleHRSdW4oU3RyaW5nVmlldyB0ZXh0LCBmbG9hdCB4
cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0gMCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9u
QmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lv
biwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlk
ZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCA9IHRydWUpCisgICAgZXhw
bGljaXQgVGV4dFJ1bihTdHJpbmdWaWV3IHRleHQsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBh
bnNpb24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRF
eHBhbnNpb24sIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSLCBib29sIGRpcmVjdGlvbmFs
T3ZlcnJpZGUgPSBmYWxzZSwgYm9vbCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVlKQog
ICAgICAgICA6IG1fdGV4dCh0ZXh0KQogICAgICAgICAsIG1fY2hhcmFjdGVyc0xlbmd0aCh0ZXh0
Lmxlbmd0aCgpKQogICAgICAgICAsIG1fdGFiU2l6ZSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVy
LmNwcAppbmRleCA1ZjJiMzJmOGQ1OWM0YWEyMzYxMDc0NGVmYzI5ZGNmOTk5NjZhYjk2Li5iMTM2
OWNiN2I1MTI4NTg2N2U3YWMzMmFiZTU3MDM5MGI2MmJhOTczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBUZXh0TGF5b3V0IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBpc05lZWRlZChSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCkKICAgICB7Ci0gICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNv
bnN0cnVjdFRleHRSdW4oJnRleHQsIHRleHQuc3R5bGUoKSk7CisgICAgICAgIFRleHRSdW4gcnVu
ID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgdGV4dC5zdHlsZSgpKTsKICAg
ICAgICAgcmV0dXJuIGZvbnQuY29kZVBhdGgocnVuKSA9PSBGb250Q2FzY2FkZTo6Q29tcGxleDsK
ICAgICB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMg
VGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlclRleHQmIHRleHQsIGZsb2F0IHhQb3MpCiAg
ICAgewotICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVu
KCZ0ZXh0LCB0ZXh0LnN0eWxlKCkpOworICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2Nr
Ojpjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHRleHQuc3R5bGUoKSk7CiAgICAgICAgIHJ1bi5zZXRD
aGFyYWN0ZXJzTGVuZ3RoKHRleHQudGV4dExlbmd0aCgpKTsKICAgICAgICAgQVNTRVJUKHJ1bi5j
aGFyYWN0ZXJzTGVuZ3RoKCkgPj0gcnVuLmxlbmd0aCgpKTsKICAgICAgICAgcnVuLnNldFhQb3Mo
eFBvcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvQ29y
ZVRleHRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9Db3JlVGV4dFNQ
SS5oCmluZGV4IDA4ZDUxMGRiZjNiOWQ3YTM1YTgxYjA1ZGRhZTQxMDA0MWRkMTkyMzcuLmVlNWUy
MmI2ODQ1MjEzZDg4MjNkMDRhNjQwNGQ1ZWJmZmJjZjA4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9Db3JlVGV4dFNQSS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9Db3JlVGV4dFNQSS5oCkBAIC00Miw2ICs0MiwxOCBAQCBl
bnVtIHsKICAgICBrQ1RGb250VUlGb250U3lzdGVtVWx0cmFMaWdodCA9IDEwNCwKIH07CiAKK3R5
cGVkZWYgQ0ZfT1BUSU9OUyh1aW50MzJfdCwgQ1RGb250VHJhbnNmb3JtT3B0aW9ucykKK3sKKyAg
ICBrQ1RGb250VHJhbnNmb3JtQXBwbHlTaGFwaW5nID0gKDEgPDwgMCksCisgICAga0NURm9udFRy
YW5zZm9ybUFwcGx5UG9zaXRpb25pbmcgPSAoMSA8PCAxKQorfTsKKwordHlwZWRlZiBDRl9PUFRJ
T05TKHVpbnQzMl90LCBDVEZvbnREZXNjcmlwdG9yT3B0aW9ucykKK3sKKyAgICBrQ1RGb250RGVz
Y3JpcHRvck9wdGlvblN5c3RlbVVJRm9udCA9IDEgPDwgMSwKKyAgICBrQ1RGb250RGVzY3JpcHRv
ck9wdGlvblByZWZlckFwcGxlU3lzdGVtRm9udCA9IGtDVEZvbnRPcHRpb25zUHJlZmVyU3lzdGVt
Rm9udAorfTsKKwogI2VuZGlmCiAKIGV4dGVybiAiQyIgewpAQCAtNTIsMTYgKzY0LDcgQEAgdHlw
ZWRlZiB2b2lkICgqQ1RVbmlDaGFyRGlzcG9zZUNhbGxiYWNrKShjb25zdCBVbmlDaGFyKiBjaGFy
cywgdm9pZCogcmVmQ29uKTsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RGb250UmVmZXJl
bmNlVVJMQXR0cmlidXRlOwogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVEZvbnRPcHRpY2Fs
U2l6ZUF0dHJpYnV0ZTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmICFVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQotdHlwZWRlZiBDRl9PUFRJT05TKHVpbnQzMl90LCBDVEZvbnRUcmFuc2Zvcm1P
cHRpb25zKQotewotICAgIGtDVEZvbnRUcmFuc2Zvcm1BcHBseVNoYXBpbmcgPSAoMSA8PCAwKSwK
LSAgICBrQ1RGb250VHJhbnNmb3JtQXBwbHlQb3NpdGlvbmluZyA9ICgxIDw8IDEpCi19OwotI2Vu
ZGlmCiBib29sIENURm9udFRyYW5zZm9ybUdseXBocyhDVEZvbnRSZWYsIENHR2x5cGggZ2x5cGhz
W10sIENHU2l6ZSBhZHZhbmNlc1tdLCBDRkluZGV4IGNvdW50LCBDVEZvbnRUcmFuc2Zvcm1PcHRp
b25zKTsKLSNlbmRpZgogCiBDR1NpemUgQ1RSdW5HZXRJbml0aWFsQWR2YW5jZShDVFJ1blJlZiBy
dW4pOwogQ1RMaW5lUmVmIENUTGluZUNyZWF0ZVdpdGhVbmlDaGFyUHJvdmlkZXIoQ1RVbmlDaGFy
UHJvdmlkZXJDYWxsYmFjayBwcm92aWRlLCBDVFVuaUNoYXJEaXNwb3NlQ2FsbGJhY2sgZGlzcG9z
ZSwgdm9pZCogcmVmQ29uKTsKQEAgLTczLDI2ICs3NiwxNSBAQCBDVEZvbnREZXNjcmlwdG9yUmVm
IENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKENGU3RyaW5nUmVmIHN0eWxlLCBD
RlN0cgogQ1RGb250RGVzY3JpcHRvclJlZiBDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhT
eW1ib2xpY1RyYWl0cyhDVEZvbnREZXNjcmlwdG9yUmVmIG9yaWdpbmFsLCBDVEZvbnRTeW1ib2xp
Y1RyYWl0cyBzeW1UcmFpdFZhbHVlLCBDVEZvbnRTeW1ib2xpY1RyYWl0cyBzeW1UcmFpdE1hc2sp
OwogQ0ZCaXRWZWN0b3JSZWYgQ1RGb250Q29weUdseXBoQ292ZXJhZ2VGb3JGZWF0dXJlKENURm9u
dFJlZiwgQ0ZEaWN0aW9uYXJ5UmVmIGZlYXR1cmUpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0j
aWYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCi10eXBlZGVmIENGX09QVElPTlModWludDMyX3Qs
IENURm9udERlc2NyaXB0b3JPcHRpb25zKQotewotICAgIGtDVEZvbnREZXNjcmlwdG9yT3B0aW9u
U3lzdGVtVUlGb250ID0gMSA8PCAxLAotICAgIGtDVEZvbnREZXNjcmlwdG9yT3B0aW9uUHJlZmVy
QXBwbGVTeXN0ZW1Gb250ID0ga0NURm9udE9wdGlvbnNQcmVmZXJTeXN0ZW1Gb250Ci19OwotCiBD
VEZvbnREZXNjcmlwdG9yUmVmIENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoQXR0cmlidXRlc0Fu
ZE9wdGlvbnMoQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMsIENURm9udERlc2NyaXB0b3JPcHRp
b25zKTsKIAogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVEZvbnREZXNjcmlwdG9yVGV4dFN0
eWxlQXR0cmlidXRlOwogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVEZvbnRVSUZvbnREZXNp
Z25UcmFpdDsKLSNlbmRpZgotI2VuZGlmCiAKIGJvb2wgQ1RGb250RGVzY3JpcHRvcklzU3lzdGVt
VUlGb250KENURm9udERlc2NyaXB0b3JSZWYpOwogQ1RGb250UmVmIENURm9udENyZWF0ZUZvckNT
UyhDRlN0cmluZ1JlZiBuYW1lLCB1aW50MTZfdCB3ZWlnaHQsIENURm9udFN5bWJvbGljVHJhaXRz
LCBDR0Zsb2F0IHNpemUpOwogQ1RGb250UmVmIENURm9udENyZWF0ZUZvckNoYXJhY3RlcnNXaXRo
TGFuZ3VhZ2UoQ1RGb250UmVmIGN1cnJlbnRGb250LCBjb25zdCBVVEYxNkNoYXIgKmNoYXJhY3Rl
cnMsIENGSW5kZXggbGVuZ3RoLCBDRlN0cmluZ1JlZiBsYW5ndWFnZSwgQ0ZJbmRleCAqY292ZXJl
ZExlbmd0aCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKIGV4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBrQ1RVSUZvbnRUZXh0U3R5bGVTaG9ydEhlYWRsaW5lOwogZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtDVFVJRm9udFRleHRTdHlsZVNob3J0Qm9keTsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBrQ1RVSUZvbnRUZXh0U3R5bGVTaG9ydFN1YmhlYWQ7CkBAIC0xMTgsMTQgKzExMCwxMSBAQCBl
eHRlcm4gY29uc3QgQ0dGbG9hdCBrQ1RGb250V2VpZ2h0U2VtaWJvbGQ7CiBleHRlcm4gY29uc3Qg
Q0dGbG9hdCBrQ1RGb250V2VpZ2h0Qm9sZDsKIGV4dGVybiBjb25zdCBDR0Zsb2F0IGtDVEZvbnRX
ZWlnaHRIZWF2eTsKIGV4dGVybiBjb25zdCBDR0Zsb2F0IGtDVEZvbnRXZWlnaHRCbGFjazsKLSNl
bmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDVFVJ
Rm9udFRleHRTdHlsZVRpdGxlMTsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RVSUZvbnRU
ZXh0U3R5bGVUaXRsZTI7CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NUVUlGb250VGV4dFN0
eWxlVGl0bGUzOwogQ1RGb250RGVzY3JpcHRvclJlZiBDVEZvbnRDcmVhdGVQaHlzaWNhbEZvbnRE
ZXNjcmlwdG9yRm9yQ2hhcmFjdGVyc1dpdGhMYW5ndWFnZShDVEZvbnRSZWYgY3VycmVudEZvbnQs
IGNvbnN0IFVURjE2Q2hhciogY2hhcmFjdGVycywgQ0ZJbmRleCBsZW5ndGgsIENGU3RyaW5nUmVm
IGxhbmd1YWdlLCBDRkluZGV4KiBjb3ZlcmVkTGVuZ3RoKTsKLSNlbmRpZgogCiBDVEZvbnRSZWYg
Q1RGb250Q3JlYXRlUGh5c2ljYWxGb250Rm9yQ2hhcmFjdGVyc1dpdGhMYW5ndWFnZShDVEZvbnRS
ZWYsIGNvbnN0IFVURjE2Q2hhciogY2hhcmFjdGVycywgQ0ZJbmRleCBsZW5ndGgsIENGU3RyaW5n
UmVmIGxhbmd1YWdlLCBDRkluZGV4KiBjb3ZlcmVkTGVuZ3RoKTsKIGJvb2wgQ1RGb250SXNBcHBs
ZUNvbG9yRW1vamkoQ1RGb250UmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dEZsYWdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRG
bGFncy5oCmluZGV4IGY1ZGJlZTJlMTVhMTNhZDM5NjhjMTY2ODMxMDA1NWQwYThhNzhmYjcuLmNk
NjhlNTg0ODNkNDA0MzVmM2Y4YzgyYWI1ZGQ1YTE3ZGM2NWU3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaApAQCAtNTIsNiArNTIsOCBAQCBlbnVtIEV4cGFuc2lv
bkJlaGF2aW9yRmxhZ3MgewogICAgIEFsbG93TGVhZGluZ0V4cGFuc2lvbiA9IDEgPDwgMiwKICAg
ICBGb3JjZUxlYWRpbmdFeHBhbnNpb24gPSAyIDw8IDIsCiAgICAgTGVhZGluZ0V4cGFuc2lvbk1h
c2sgPSAzIDw8IDIsCisKKyAgICBEZWZhdWx0RXhwYW5zaW9uID0gQWxsb3dUcmFpbGluZ0V4cGFu
c2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24sCiB9OwogdHlwZWRlZiB1bnNpZ25lZCBFeHBh
bnNpb25CZWhhdmlvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
aW5kZXggZDI2NGQyYTk3NjRhZDI1MzdiMzdhMzczMTg2ZmM5NjIxYjVhNTk1Mi4uMTZkNTBkY2E0
ZDI3YTlhNDc0ZTNhNjM3YTQ0YWNjNzRiMzM5NzM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zODAxLDI0ICszODAxLDI0IEBAIFRleHRSdW4gUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFJlbmRl
clN0eWxlJiBzCiAgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW4oU3RyaW5nVmlldyhzdHJpbmcp
LCBzdHlsZSwgZXhwYW5zaW9uLCBmbGFncyk7CiB9CiAKLVRleHRSdW4gUmVuZGVyQmxvY2s6OmNv
bnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCogdGV4dCwgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24pCitUZXh0UnVuIFJlbmRlckJsb2Nr
Ojpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQmIHRleHQsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQogewotICAgIHJldHVybiBj
b25zdHJ1Y3RUZXh0UnVuKHRleHQtPnN0cmluZ1ZpZXcoKSwgc3R5bGUsIGV4cGFuc2lvbik7Cisg
ICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW4odGV4dC5zdHJpbmdWaWV3KCksIHN0eWxlLCBleHBh
bnNpb24pOwogfQogCi1UZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0
IFJlbmRlclRleHQqIHRleHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKK1RleHRS
dW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCYgdGV4dCwg
dW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQogewogICAgIHVuc2lnbmVkIHN0b3AgPSBv
ZmZzZXQgKyBsZW5ndGg7Ci0gICAgQVNTRVJUKHN0b3AgPD0gdGV4dC0+dGV4dExlbmd0aCgpKTsK
LSAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bih0ZXh0LT5zdHJpbmdWaWV3KG9mZnNldCwgc3Rv
cCksIHN0eWxlLCBleHBhbnNpb24pOworICAgIEFTU0VSVChzdG9wIDw9IHRleHQudGV4dExlbmd0
aCgpKTsKKyAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bih0ZXh0LnN0cmluZ1ZpZXcob2Zmc2V0
LCBzdG9wKSwgc3R5bGUsIGV4cGFuc2lvbik7CiB9CiAKLVRleHRSdW4gUmVuZGVyQmxvY2s6OmNv
bnN0cnVjdFRleHRSdW4oY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQorVGV4dFJ1
biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBMQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2
aW9yIGV4cGFuc2lvbikKIHsKICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihTdHJpbmdWaWV3
KGNoYXJhY3RlcnMsIGxlbmd0aCksIHN0eWxlLCBleHBhbnNpb24pOwogfQogCi1UZXh0UnVuIFJl
bmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBpbnQg
bGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFu
c2lvbikKK1RleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBF
eHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24pCiB7CiAgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRS
dW4oU3RyaW5nVmlldyhjaGFyYWN0ZXJzLCBsZW5ndGgpLCBzdHlsZSwgZXhwYW5zaW9uKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggZDMyZmJlZGQzZDU2OTEx
NzJlYjg3ODE1ODEyZWE5N2YwMDJhNzQxYi4uNzFmYjA5ZGIyYjJiYWJjZmFiODZkODgzNjY5NDVh
N2JjMjkyMDhmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTIw
NCwxNyArMjA0LDE3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgVGV4dFJ1biBjb25z
dHJ1Y3RUZXh0UnVuKFN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiwKLSAgICAgICAgRXhw
YW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4
cGFuc2lvbiwgVGV4dFJ1bkZsYWdzID0gRGVmYXVsdFRleHRSdW5GbGFncyk7CisgICAgICAgIEV4
cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzID0gRGVmYXVs
dFRleHRSdW5GbGFncyk7CiAgICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25z
dCBTdHJpbmcmLCBjb25zdCBSZW5kZXJTdHlsZSYsCi0gICAgICAgIEV4cGFuc2lvbkJlaGF2aW9y
ID0gQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24sIFRleHRS
dW5GbGFncyA9IERlZmF1bHRUZXh0UnVuRmxhZ3MpOwotICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0
cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCosIGNvbnN0IFJlbmRlclN0eWxlJiwKLSAgICAg
ICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVh
ZGluZ0V4cGFuc2lvbik7Ci0gICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25z
dCBSZW5kZXJUZXh0KiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJl
bmRlclN0eWxlJiwKLSAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhw
YW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbik7Ci0gICAgc3RhdGljIFRleHRSdW4gY29u
c3RydWN0VGV4dFJ1bihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCwgY29uc3Qg
UmVuZGVyU3R5bGUmLAotICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdF
eHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uKTsKLSAgICBzdGF0aWMgVGV4dFJ1biBj
b25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjb25z
dCBSZW5kZXJTdHlsZSYsCi0gICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFpbGlu
Z0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24pOworICAgICAgICBFeHBhbnNpb25C
ZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHRSdW5GbGFncyA9IERlZmF1bHRUZXh0UnVu
RmxhZ3MpOworICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVy
VGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwKKyAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBE
ZWZhdWx0RXhwYW5zaW9uKTsKKyAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNv
bnN0IFJlbmRlclRleHQmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3Qg
UmVuZGVyU3R5bGUmLAorICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNp
b24pOworICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgTENoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmLAorICAgICAgICBF
eHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24pOworICAgIHN0YXRpYyBUZXh0UnVu
IGNvbnN0cnVjdFRleHRSdW4oY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0
aCwgY29uc3QgUmVuZGVyU3R5bGUmLAorICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IERlZmF1
bHRFeHBhbnNpb24pOwogICAgIAogICAgIExheW91dFVuaXQgcGFnaW5hdGlvblN0cnV0KCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uU3RydXQoTGF5b3V0VW5pdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggZmNiNjAyMWRhNzIz
NmQ4NjA1NGQ0ZjJhN2UxNmMyNWQ4NGMzMDg1Yi4uZDRlNDM4YTQ1YjcwNTEyYjdiZTAzYTRmNWZh
N2Q0M2NjYTQ4ZTZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcApAQCAtMTU0Myw3ICsxNTQzLDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBBc3Rlcmlza3M6CiAgICAgICAgIGNhc2UgRm9vdG5vdGVzOiB7Ci0gICAgICAgICAg
ICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fdGV4dCwgc3R5
bGUoKSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24sIERl
ZmF1bHRUZXh0UnVuRmxhZ3MpOworICAgICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9j
azo6Y29uc3RydWN0VGV4dFJ1bihtX3RleHQsIHN0eWxlKCkpOwogICAgICAgICAgICAgbG9naWNh
bFdpZHRoID0gZm9udC53aWR0aChydW4pOyAvLyBubyBzdWZmaXggZm9yIHRoZXNlIHR5cGVzCiAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTYzMCw3ICsxNjMwLDcgQEAgdm9pZCBS
ZW5kZXJMaXN0TWFya2VyOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgICAg
ICAgICBpZiAobV90ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGgg
PSAwOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgVGV4dFJ1biBydW4gPSBS
ZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihtX3RleHQsIHN0eWxlKCksIEFsbG93VHJhaWxp
bmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBEZWZhdWx0VGV4dFJ1bkZsYWdz
KTsKKyAgICAgICAgICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RU
ZXh0UnVuKG1fdGV4dCwgc3R5bGUoKSk7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBpdGVt
V2lkdGggPSBmb250LndpZHRoKHJ1bik7CiAgICAgICAgICAgICAgICAgVUNoYXIgc3VmZml4U3Bh
Y2VbMl0gPSB7IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9saXN0SXRlbS52YWx1ZSgpKSwgJyAn
IH07CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBzdWZmaXhTcGFjZVdpZHRoID0gZm9udC53
aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihzdWZmaXhTcGFjZSwgMiwgc3R5bGUo
KSkpOwpAQCAtMTc2Myw3ICsxNzYzLDcgQEAgRmxvYXRSZWN0IFJlbmRlckxpc3RNYXJrZXI6Omdl
dFJlbGF0aXZlTWFya2VyUmVjdCgpCiAgICAgICAgIGNhc2UgQXN0ZXJpc2tzOgogICAgICAgICBj
YXNlIEZvb3Rub3RlczogewogICAgICAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBz
dHlsZSgpLmZvbnRDYXNjYWRlKCk7Ci0gICAgICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJs
b2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fdGV4dCwgc3R5bGUoKSwgQWxsb3dUcmFpbGluZ0V4cGFu
c2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24sIERlZmF1bHRUZXh0UnVuRmxhZ3MpOworICAg
ICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihtX3Rl
eHQsIHN0eWxlKCkpOwogICAgICAgICAgICAgcmVsYXRpdmVSZWN0ID0gRmxvYXRSZWN0KDAsIDAs
IGZvbnQud2lkdGgocnVuKSwgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xODU3LDcgKzE4NTcsNyBAQCBGbG9hdFJlY3QgUmVu
ZGVyTGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KCkKICAgICAgICAgICAgIGlmICht
X3RleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKICAg
ICAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgp
OwotICAgICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1
bihtX3RleHQsIHN0eWxlKCksIEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5n
RXhwYW5zaW9uLCBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKKyAgICAgICAgICAgIFRleHRSdW4gcnVu
ID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV90ZXh0LCBzdHlsZSgpKTsKICAgICAg
ICAgICAgIGZsb2F0IGl0ZW1XaWR0aCA9IGZvbnQud2lkdGgocnVuKTsKICAgICAgICAgICAgIFVD
aGFyIHN1ZmZpeFNwYWNlWzJdID0geyBsaXN0TWFya2VyU3VmZml4KHR5cGUsIG1fbGlzdEl0ZW0u
dmFsdWUoKSksICcgJyB9OwogICAgICAgICAgICAgZmxvYXQgc3VmZml4U3BhY2VXaWR0aCA9IGZv
bnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oc3VmZml4U3BhY2UsIDIsIHN0
eWxlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmlu
ZGV4IDIzZjA5YjI2OGZhNTM5ZGQ3ZTMzZGFiNzMwZmU3NWZhNjM3NDEyY2QuLjg5Y2FlYzQ0ODEx
MTBhYWNiYTUzOGIyZWEwNmNkMWRkMTQ2MzUzZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMjE5LDEzICsyMTksMTMgQEAgdm9pZCBSZW5kZXJN
ZW51TGlzdDo6dXBkYXRlT3B0aW9uc1dpZHRoKCkKICAgICAgICAgICAgICAgICBvcHRpb25XaWR0
aCArPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob3B0aW9uU3R5bGUtPnRleHRJbmRlbnQoKSwgMCk7
CiAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgY29u
c3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7Ci0gICAgICAgICAg
ICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCBz
dHlsZSgpLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwg
RGVmYXVsdFRleHRSdW5GbGFncyk7CisgICAgICAgICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5k
ZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCBzdHlsZSgpKTsKICAgICAgICAgICAgICAg
ICBvcHRpb25XaWR0aCArPSBmb250LndpZHRoKHJ1bik7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBtYXhPcHRpb25XaWR0aCA9IHN0ZDo6bWF4KG1heE9wdGlvbldpZHRoLCBvcHRpb25XaWR0
aCk7CiAgICAgICAgIH0gZWxzZSBpZiAoIXRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBj
b25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAgICAgICAg
ICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgc3R5
bGUoKSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24sIERl
ZmF1bHRUZXh0UnVuRmxhZ3MpOworICAgICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9j
azo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCBzdHlsZSgpKTsKICAgICAgICAgICAgIG1heE9wdGlv
bldpZHRoID0gc3RkOjptYXgobWF4T3B0aW9uV2lkdGgsIGZvbnQud2lkdGgocnVuKSk7CiAgICAg
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXgg
YTZiNTIxN2M5NWU5NmNjMGQ3MWU3NTE1Y2VhMWRkNWNmZjM5MDAyYy4uMjM5ODk3OWExZjg3NWU3
YzMwNmFhZDNhMzY0NDQ1NDllYmI4ODYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcApAQCAtNDUyLDcgKzQ1Miw3IEBAIExheW91dFJlY3QgUmVuZGVyVGV4dDo6bG9j
YWxDYXJldFJlY3QoSW5saW5lQm94KiBpbmxpbmVCb3gsIHVuc2lnbmVkIGNhcmV0T2Zmc2V0CiAg
ICAgcmV0dXJuIGJveC5yb290KCkuY29tcHV0ZUNhcmV0UmVjdChsZWZ0LCBjYXJldFdpZHRoLCBl
eHRyYVdpZHRoVG9FbmRPZkxpbmUpOwogfQogCi1BTFdBWVNfSU5MSU5FIGZsb2F0IFJlbmRlclRl
eHQ6OndpZHRoRnJvbUNhY2hlKGNvbnN0IEZvbnRDYXNjYWRlJiBmLCBpbnQgc3RhcnQsIGludCBs
ZW4sIGZsb2F0IHhQb3MsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBHbHlw
aE92ZXJmbG93KiBnbHlwaE92ZXJmbG93LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0
CitBTFdBWVNfSU5MSU5FIGZsb2F0IFJlbmRlclRleHQ6OndpZHRoRnJvbUNhY2hlKGNvbnN0IEZv
bnRDYXNjYWRlJiBmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuLCBmbG9hdCB4UG9zLCBI
YXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyogZ2x5cGhP
dmVyZmxvdywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewogICAgIGlmIChzdHls
ZS5oYXNUZXh0Q29tYmluZSgpICYmIGlzPFJlbmRlckNvbWJpbmVUZXh0PigqdGhpcykpIHsKICAg
ICAgICAgY29uc3QgUmVuZGVyQ29tYmluZVRleHQmIGNvbWJpbmVUZXh0ID0gZG93bmNhc3Q8UmVu
ZGVyQ29tYmluZVRleHQ+KCp0aGlzKTsKQEAgLTQ2Niw3ICs0NjYsNyBAQCBBTFdBWVNfSU5MSU5F
IGZsb2F0IFJlbmRlclRleHQ6OndpZHRoRnJvbUNhY2hlKGNvbnN0IEZvbnRDYXNjYWRlJiBmLCBp
bnQgc3RhcnQsCiAgICAgICAgIGJvb2wgaXNTcGFjZTsKICAgICAgICAgQVNTRVJUKG1fdGV4dCk7
CiAgICAgICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqbV90ZXh0LmltcGwoKTsKLSAgICAgICAgZm9y
IChpbnQgaSA9IHN0YXJ0OyBpIDwgc3RhcnQgKyBsZW47IGkrKykgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBzdGFydDsgaSA8IHN0YXJ0ICsgbGVuOyBpKyspIHsKICAgICAgICAgICAgIGNo
YXIgYyA9IHRleHRbaV07CiAgICAgICAgICAgICBpZiAoYyA8PSAnICcpIHsKICAgICAgICAgICAg
ICAgICBpZiAoYyA9PSAnICcgfHwgYyA9PSAnXG4nKSB7CkBAIC00OTIsNyArNDkyLDcgQEAgQUxX
QVlTX0lOTElORSBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZShjb25zdCBGb250Q2Fz
Y2FkZSYgZiwgaW50IHN0YXJ0LAogICAgICAgICByZXR1cm4gdzsKICAgICB9CiAKLSAgICBUZXh0
UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIHN0YXJ0LCBsZW4s
IHN0eWxlKTsKKyAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVu
KCp0aGlzLCBzdGFydCwgbGVuLCBzdHlsZSk7CiAgICAgcnVuLnNldENoYXJhY3RlcnNMZW5ndGgo
dGV4dExlbmd0aCgpIC0gc3RhcnQpOwogICAgIEFTU0VSVChydW4uY2hhcmFjdGVyc0xlbmd0aCgp
ID49IHJ1bi5sZW5ndGgoKSk7CiAKQEAgLTYwOCw3ICs2MDgsNyBAQCB2b2lkIFJlbmRlclRleHQ6
OnRyaW1tZWRQcmVmV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwKICAgICBiZWdpbldTID0gIXN0cmlw
RnJvbnRTcGFjZXMgJiYgbV9oYXNCZWdpbldTOwogICAgIGVuZFdTID0gbV9oYXNFbmRXUzsKIAot
ICAgIGludCBsZW4gPSB0ZXh0TGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbGVuID0gdGV4dExlbmd0
aCgpOwogCiAgICAgaWYgKCFsZW4gfHwgKHN0cmlwRnJvbnRTcGFjZXMgJiYgdGV4dCgpLT5jb250
YWluc09ubHlXaGl0ZXNwYWNlKCkpKSB7CiAgICAgICAgIGJlZ2luTWluVyA9IDA7CkBAIC02MzIs
MTAgKzYzMiw5IEBAIHZvaWQgUmVuZGVyVGV4dDo6dHJpbW1lZFByZWZXaWR0aHMoZmxvYXQgbGVh
ZFdpZHRoLAogCiAgICAgQVNTRVJUKG1fdGV4dCk7CiAgICAgU3RyaW5nSW1wbCYgdGV4dCA9ICpt
X3RleHQuaW1wbCgpOwotICAgIGlmICh0ZXh0WzBdID09ICcgJyB8fCAodGV4dFswXSA9PSAnXG4n
ICYmICFzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKSkgfHwgdGV4dFswXSA9PSAnXHQnKSB7CisgICAg
aWYgKHRleHRbMF0gPT0gc3BhY2UgfHwgKHRleHRbMF0gPT0gbmV3bGluZUNoYXJhY3RlciAmJiAh
c3R5bGUucHJlc2VydmVOZXdsaW5lKCkpIHx8IHRleHRbMF0gPT0gJ1x0JykgewogICAgICAgICBj
b25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7IC8vIEZJWE1FOiBU
aGlzIGlnbm9yZXMgZmlyc3QtbGluZS4KICAgICAgICAgaWYgKHN0cmlwRnJvbnRTcGFjZXMpIHsK
LSAgICAgICAgICAgIGNvbnN0IFVDaGFyIHNwYWNlID0gJyAnOwogICAgICAgICAgICAgZmxvYXQg
c3BhY2VXaWR0aCA9IGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJnNw
YWNlLCAxLCBzdHlsZSkpOwogICAgICAgICAgICAgbWF4VyAtPSBzcGFjZVdpZHRoOwogICAgICAg
ICB9IGVsc2UKQEAgLTY1Myw4ICs2NTIsOCBAQCB2b2lkIFJlbmRlclRleHQ6OnRyaW1tZWRQcmVm
V2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwKICAgICAgICAgYm9vbCBmaXJzdExpbmUgPSB0cnVlOwog
ICAgICAgICBiZWdpbk1heFcgPSBtYXhXOwogICAgICAgICBlbmRNYXhXID0gbWF4VzsKLSAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgaW50IGxpbmVs
ZW4gPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGxpbmVsZW4gPSAwOwogICAgICAgICAgICAgd2hpbGUgKGkgKyBs
aW5lbGVuIDwgbGVuICYmIHRleHRbaSArIGxpbmVsZW5dICE9ICdcbicpCiAgICAgICAgICAgICAg
ICAgbGluZWxlbisrOwogCkBAIC03MjYsMjAgKzcyNSwyMiBAQCB2b2lkIFJlbmRlclRleHQ6OmNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCkKICAgICAgICAgbV9r
bm93blRvSGF2ZU5vT3ZlcmZsb3dBbmROb0ZhbGxiYWNrRm9udHMgPSB0cnVlOwogfQogCi1zdGF0
aWMgaW5saW5lIGZsb2F0IGh5cGhlbldpZHRoKFJlbmRlclRleHQqIHJlbmRlcmVyLCBjb25zdCBG
b250Q2FzY2FkZSYgZm9udCkKK3N0YXRpYyBpbmxpbmUgZmxvYXQgaHlwaGVuV2lkdGgoUmVuZGVy
VGV4dCYgcmVuZGVyZXIsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogewotICAgIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgIHJldHVybiBmb250Lndp
ZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHN0eWxlLmh5cGhlblN0cmluZygpLnN0
cmluZygpLCBzdHlsZSkpOworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVy
LnN0eWxlKCk7CisgICAgYXV0byB0ZXh0UnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRS
dW4oc3R5bGUuaHlwaGVuU3RyaW5nKCkuc3RyaW5nKCksIHN0eWxlKTsKKyAgICByZXR1cm4gZm9u
dC53aWR0aCh0ZXh0UnVuKTsKIH0KIAotc3RhdGljIGZsb2F0IG1heFdvcmRGcmFnbWVudFdpZHRo
KFJlbmRlclRleHQqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250LCBTdHJpbmdWaWV3IHdvcmQsIGludCBtaW5pbXVtUHJlZml4TGVuZ3Ro
LCB1bnNpZ25lZCBtaW5pbXVtU3VmZml4TGVuZ3RoLCBpbnQmIHN1ZmZpeFN0YXJ0LCBIYXNoU2V0
PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyYgZ2x5cGhPdmVyZmxv
dykKK3N0YXRpYyBmbG9hdCBtYXhXb3JkRnJhZ21lbnRXaWR0aChSZW5kZXJUZXh0JiByZW5kZXJl
ciwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgU3Ry
aW5nVmlldyB3b3JkLCB1bnNpZ25lZCBtaW5pbXVtUHJlZml4TGVuZ3RoLCB1bnNpZ25lZCBtaW5p
bXVtU3VmZml4TGVuZ3RoLCB1bnNpZ25lZCYgc3VmZml4U3RhcnQsIEhhc2hTZXQ8Y29uc3QgRm9u
dCo+JiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93JiBnbHlwaE92ZXJmbG93KQogewogICAg
IHN1ZmZpeFN0YXJ0ID0gMDsKICAgICBpZiAod29yZC5sZW5ndGgoKSA8PSBtaW5pbXVtU3VmZml4
TGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFZlY3RvcjxpbnQsIDg+IGh5cGhlbkxv
Y2F0aW9uczsKLSAgICBpbnQgaHlwaGVuTG9jYXRpb24gPSB3b3JkLmxlbmd0aCgpIC0gbWluaW11
bVN1ZmZpeExlbmd0aDsKKyAgICBBU1NFUlQod29yZC5sZW5ndGgoKSA+PSBtaW5pbXVtU3VmZml4
TGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBoeXBoZW5Mb2NhdGlvbiA9IHdvcmQubGVuZ3RoKCkgLSBt
aW5pbXVtU3VmZml4TGVuZ3RoOwogICAgIHdoaWxlICgoaHlwaGVuTG9jYXRpb24gPSBsYXN0SHlw
aGVuTG9jYXRpb24od29yZCwgaHlwaGVuTG9jYXRpb24sIHN0eWxlLmxvY2FsZSgpKSkgPj0gbWlu
aW11bVByZWZpeExlbmd0aCkKICAgICAgICAgaHlwaGVuTG9jYXRpb25zLmFwcGVuZChoeXBoZW5M
b2NhdGlvbik7CiAKQEAgLTc1OCw3ICs3NTksNyBAQCBzdGF0aWMgZmxvYXQgbWF4V29yZEZyYWdt
ZW50V2lkdGgoUmVuZGVyVGV4dCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZQog
CiAgICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oZnJh
Z21lbnRXaXRoSHlwaGVuLnRvU3RyaW5nKCksIHN0eWxlKTsKICAgICAgICAgcnVuLnNldENoYXJh
Y3RlcnNMZW5ndGgoZnJhZ21lbnRXaXRoSHlwaGVuLmxlbmd0aCgpKTsKLSAgICAgICAgcnVuLnNl
dENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCghcmVuZGVyZXItPmNhblVzZVNpbXBsZUZvbnRDb2Rl
UGF0aCgpKTsKKyAgICAgICAgcnVuLnNldENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCghcmVuZGVy
ZXIuY2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCkpOwogICAgICAgICBmbG9hdCBmcmFnbWVudFdp
ZHRoID0gZm9udC53aWR0aChydW4sICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdyk7CiAK
ICAgICAgICAgLy8gTmFycm93IHByZWZpeGVzIGFyZSBpZ25vcmVkLiBTZWUgdHJ5SHlwaGVuYXRp
bmcgaW4gUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcC4KQEAgLTgwNywxOSArODA4LDE3IEBAIHZv
aWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdp
ZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgLy8gSWYgYXV0b21hdGljIGh5cGhlbmF0aW9uIGlz
IGFsbG93ZWQsIHdlIGtlZXAgdHJhY2sgb2YgdGhlIHdpZHRoIG9mIHRoZSB3aWRlc3Qgd29yZCAo
b3Igd29yZAogICAgIC8vIGZyYWdtZW50KSBlbmNvdW50ZXJlZCBzbyBmYXIsIGFuZCBvbmx5IHRy
eSBoeXBoZW5hdGluZyB3b3JkcyB0aGF0IGFyZSB3aWRlci4KICAgICBmbG9hdCBtYXhXb3JkV2lk
dGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCk7Ci0gICAgaW50IG1pbmltdW1Q
cmVmaXhMZW5ndGggPSAwOwotICAgIGludCBtaW5pbXVtU3VmZml4TGVuZ3RoID0gMDsKKyAgICB1
bnNpZ25lZCBtaW5pbXVtUHJlZml4TGVuZ3RoID0gMDsKKyAgICB1bnNpZ25lZCBtaW5pbXVtU3Vm
Zml4TGVuZ3RoID0gMDsKICAgICBpZiAoc3R5bGUuaHlwaGVucygpID09IEh5cGhlbnNBdXRvICYm
IGNhbkh5cGhlbmF0ZShzdHlsZS5sb2NhbGUoKSkpIHsKICAgICAgICAgbWF4V29yZFdpZHRoID0g
MDsKIAogICAgICAgICAvLyBNYXAgJ2h5cGhlbmF0ZS1saW1pdC17YmVmb3JlLGFmdGVyfTogYXV0
bzsnIHRvIDIuCi0gICAgICAgIG1pbmltdW1QcmVmaXhMZW5ndGggPSBzdHlsZS5oeXBoZW5hdGlv
bkxpbWl0QmVmb3JlKCk7Ci0gICAgICAgIGlmIChtaW5pbXVtUHJlZml4TGVuZ3RoIDwgMCkKLSAg
ICAgICAgICAgIG1pbmltdW1QcmVmaXhMZW5ndGggPSAyOworICAgICAgICBhdXRvIGJlZm9yZSA9
IHN0eWxlLmh5cGhlbmF0aW9uTGltaXRCZWZvcmUoKTsKKyAgICAgICAgbWluaW11bVByZWZpeExl
bmd0aCA9IGJlZm9yZSA8IDAgPyAyIDogYmVmb3JlOwogCi0gICAgICAgIG1pbmltdW1TdWZmaXhM
ZW5ndGggPSBzdHlsZS5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKTsKLSAgICAgICAgaWYgKG1pbmlt
dW1TdWZmaXhMZW5ndGggPCAwKQotICAgICAgICAgICAgbWluaW11bVN1ZmZpeExlbmd0aCA9IDI7
CisgICAgICAgIGF1dG8gYWZ0ZXIgPSBzdHlsZS5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKTsKKyAg
ICAgICAgbWluaW11bVN1ZmZpeExlbmd0aCA9IGFmdGVyIDwgMCA/IDIgOiBhZnRlcjsKICAgICB9
CiAKICAgICBPcHRpb25hbDxpbnQ+IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3c7CkBAIC05MDYsMTIg
KzkwNSwxMiBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhz
KGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgdyA9IHdpZHRoRnJvbUNhY2hlKGZvbnQsIGksIHdvcmRMZW4sIGxlYWRX
aWR0aCArIGN1cnJNYXhXaWR0aCwgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92ZXJmbG93LCBzdHls
ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGMgPT0gc29mdEh5cGhlbiAmJiBzdHlsZS5oeXBoZW5z
KCkgIT0gSHlwaGVuc05vbmUpCi0gICAgICAgICAgICAgICAgICAgIGN1cnJNaW5XaWR0aCA9IGh5
cGhlbldpZHRoKHRoaXMsIGZvbnQpOworICAgICAgICAgICAgICAgICAgICBjdXJyTWluV2lkdGgg
PSBoeXBoZW5XaWR0aCgqdGhpcywgZm9udCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmICh3ID4gbWF4V29yZFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgaW50IHN1ZmZpeFN0YXJ0
OwotICAgICAgICAgICAgICAgIGZsb2F0IG1heEZyYWdtZW50V2lkdGggPSBtYXhXb3JkRnJhZ21l
bnRXaWR0aCh0aGlzLCBzdHlsZSwgZm9udCwgU3RyaW5nVmlldyhtX3RleHQpLnN1YnN0cmluZyhp
LCB3b3JkTGVuKSwgbWluaW11bVByZWZpeExlbmd0aCwgbWluaW11bVN1ZmZpeExlbmd0aCwgc3Vm
Zml4U3RhcnQsIGZhbGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOworICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHN1ZmZpeFN0YXJ0OworICAgICAgICAgICAgICAgIGZsb2F0IG1heEZyYWdtZW50
V2lkdGggPSBtYXhXb3JkRnJhZ21lbnRXaWR0aCgqdGhpcywgc3R5bGUsIGZvbnQsIFN0cmluZ1Zp
ZXcobV90ZXh0KS5zdWJzdHJpbmcoaSwgd29yZExlbiksIG1pbmltdW1QcmVmaXhMZW5ndGgsIG1p
bmltdW1TdWZmaXhMZW5ndGgsIHN1ZmZpeFN0YXJ0LCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJm
bG93KTsKIAogICAgICAgICAgICAgICAgIGlmIChzdWZmaXhTdGFydCkgewogICAgICAgICAgICAg
ICAgICAgICBmbG9hdCBzdWZmaXhXaWR0aDsKQEAgLTk4NSw3ICs5ODQsNyBAQCB2b2lkIFJlbmRl
clRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFz
aFNldDxjb25zdCBGbwogICAgICAgICAgICAgICAgICAgICBtX21heFdpZHRoID0gY3Vyck1heFdp
ZHRoOwogICAgICAgICAgICAgICAgIGN1cnJNYXhXaWR0aCA9IDA7CiAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVj
dFRleHRSdW4odGhpcywgaSwgMSwgc3R5bGUpOworICAgICAgICAgICAgICAgIFRleHRSdW4gcnVu
ID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oKnRoaXMsIGksIDEsIHN0eWxlKTsKICAg
ICAgICAgICAgICAgICBydW4uc2V0Q2hhcmFjdGVyc0xlbmd0aChsZW4gLSBpKTsKICAgICAgICAg
ICAgICAgICBBU1NFUlQocnVuLmNoYXJhY3RlcnNMZW5ndGgoKSA+PSBydW4ubGVuZ3RoKCkpOwog
ICAgICAgICAgICAgICAgIHJ1bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2Uo
KSwgc3R5bGUudGFiU2l6ZSgpKTsKQEAgLTEzMjUsNyArMTMyNCw3IEBAIGZsb2F0IFJlbmRlclRl
eHQ6OndpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbiwgY29uc3QgRm9udENhc2NhZGUm
IGYsIGZsb2F0CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdyA9IHdpZHRoRnJvbUNhY2hl
KGYsIGZyb20sIGxlbiwgeFBvcywgZmFsbGJhY2tGb250cywgZ2x5cGhPdmVyZmxvdywgc3R5bGUp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0
cnVjdFRleHRSdW4odGhpcywgZnJvbSwgbGVuLCBzdHlsZSk7CisgICAgICAgIFRleHRSdW4gcnVu
ID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oKnRoaXMsIGZyb20sIGxlbiwgc3R5bGUp
OwogICAgICAgICBydW4uc2V0Q2hhcmFjdGVyc0xlbmd0aCh0ZXh0TGVuZ3RoKCkgLSBmcm9tKTsK
ICAgICAgICAgQVNTRVJUKHJ1bi5jaGFyYWN0ZXJzTGVuZ3RoKCkgPj0gcnVuLmxlbmd0aCgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKaW5kZXggZWIwMzMwZmUxNWY3N2Zj
NTcyNmNlODRhMWE2MGI0MWM0ZTFiYjc2Zi4uODFhZTQyMmY3ZGNlZjc2NDAyNDhkNmE1OTJiMTgy
NWUzYTI0ZTY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC0xOTYs
NyArMTk2LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgY29uc3Qg
TGF5b3V0UG9pbnQmLCBIaXRUZXN0QWN0aW9uKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGZsb2F0IHdpZHRoRnJvbUNhY2hlKGNvbnN0IEZvbnRD
YXNjYWRlJiwgaW50IHN0YXJ0LCBpbnQgbGVuLCBmbG9hdCB4UG9zLCBIYXNoU2V0PGNvbnN0IEZv
bnQqPiogZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyosIGNvbnN0IFJlbmRlclN0eWxlJikg
Y29uc3Q7CisgICAgZmxvYXQgd2lkdGhGcm9tQ2FjaGUoY29uc3QgRm9udENhc2NhZGUmLCB1bnNp
Z25lZCBzdGFydCwgdW5zaWduZWQgbGVuLCBmbG9hdCB4UG9zLCBIYXNoU2V0PGNvbnN0IEZvbnQq
PiogZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyosIGNvbnN0IFJlbmRlclN0eWxlJikgY29u
c3Q7CiAgICAgYm9vbCBpc0FsbEFTQ0lJKCkgY29uc3QgeyByZXR1cm4gbV9pc0FsbEFTQ0lJOyB9
CiAgICAgYm9vbCBjb21wdXRlVXNlQmFja3NsYXNoQXNZZW5TeW1ib2woKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IDhhMmVmYTVmYWVh
YzU3NWRmZjk3ZWI4MjBlMDg5MzFlNjBiYjZkMjcuLmY5YzljOTFkMDhjOGE4Y2EwNmNhNTI1NjZi
MzdiOGVjZTFiZTBhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KQEAgLTU3NSw3ICs1NzUsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIGZsb2F0IG1lYXN1
cmVUZXh0KGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAg
ICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihzdHJpbmcsIG1f
c3R5bGUsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBE
ZWZhdWx0VGV4dFJ1bkZsYWdzKTsKKyAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6
Y29uc3RydWN0VGV4dFJ1bihzdHJpbmcsIG1fc3R5bGUpOwogICAgICAgICByZXR1cm4gbV9mb250
LndpZHRoKHJ1bik7CiAgICAgfQogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKaW5kZXggM2I3NTM3NzAxNDEyMzBjNmRiODExYjA5
ZTg0NTg0ODBjZDExZmM1NS4uODliMTZlMzAyY2I0YzkxZmEzNGEwNTk4NDEyNDQ5MzI1MTQ0ZTkw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0
LmgKQEAgLTY0NCw3ICs2NDQsNyBAQCBBTFdBWVNfSU5MSU5FIGZsb2F0IHRleHRXaWR0aChSZW5k
ZXJUZXh0JiB0ZXh0LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGNvbgogICAgIGlmIChs
YXlvdXQpCiAgICAgICAgIHJldHVybiBGb250Q2FzY2FkZTo6d2lkdGgoKmxheW91dCwgZnJvbSwg
bGVuLCAmZmFsbGJhY2tGb250cyk7CiAKLSAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKCZ0ZXh0LCBmcm9tLCBsZW4sIHN0eWxlKTsKKyAgICBUZXh0UnVuIHJ1
biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIGZyb20sIGxlbiwgc3R5bGUp
OwogICAgIHJ1bi5zZXRDaGFyYWN0ZXJzTGVuZ3RoKHRleHQudGV4dExlbmd0aCgpIC0gZnJvbSk7
CiAgICAgQVNTRVJUKHJ1bi5jaGFyYWN0ZXJzTGVuZ3RoKCkgPj0gcnVuLmxlbmd0aCgpKTsKIApA
QCAtNjkzLDcgKzY5Myw3IEBAIGlubGluZSB2b2lkIHRyeUh5cGhlbmF0aW5nKFJlbmRlclRleHQm
IHRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBBdG9tCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRleHQuc3R5bGUoKTsKLSAgICBU
ZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZ0ZXh0LCBsYXN0U3Bh
Y2UsIHBvcyAtIGxhc3RTcGFjZSwgc3R5bGUpOworICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxv
Y2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgbGFzdFNwYWNlLCBwb3MgLSBsYXN0U3BhY2UsIHN0
eWxlKTsKICAgICBydW4uc2V0Q2hhcmFjdGVyc0xlbmd0aCh0ZXh0LnRleHRMZW5ndGgoKSAtIGxh
c3RTcGFjZSk7CiAgICAgQVNTRVJUKHJ1bi5jaGFyYWN0ZXJzTGVuZ3RoKCkgPj0gcnVuLmxlbmd0
aCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4
dEJveC5jcHAKaW5kZXggNzUxNTVjODI3MjM3ZjBlZjQwN2EzOGZhNjgwYjExMzUwNTg1MzAxYy4u
Njg5MTY0YWU2NjYzZmI3ZGIxYzM1MDY0MTkzZTlhMWQ4N2YwMzdkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCkBAIC04OCw3ICs4
OCw3IEBAIGludCBTVkdJbmxpbmVUZXh0Qm94OjpvZmZzZXRGb3JQb3NpdGlvbkluRnJhZ21lbnQo
Y29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVuCiAgICBmbG9hdCBzY2FsaW5nRmFjdG9yID0g
cmVuZGVyZXIoKS5zY2FsaW5nRmFjdG9yKCk7CiAgICAgQVNTRVJUKHNjYWxpbmdGYWN0b3IpOwog
Ci0gICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bigmcmVuZGVyZXIoKS5zdHls
ZSgpLCBmcmFnbWVudCk7CisgICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bihy
ZW5kZXJlcigpLnN0eWxlKCksIGZyYWdtZW50KTsKIAogICAgIC8vIEV2ZW50dWFsbHkgaGFuZGxl
IGxlbmd0aEFkanVzdD0ic3BhY2luZ0FuZEdseXBocyIuCiAgICAgLy8gRklYTUU6IEhhbmRsZSB2
ZXJ0aWNhbCB0ZXh0LgpAQCAtMTA3LDEwICsxMDcsOSBAQCBmbG9hdCBTVkdJbmxpbmVUZXh0Qm94
Ojpwb3NpdGlvbkZvck9mZnNldCh1bnNpZ25lZCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAot
RmxvYXRSZWN0IFNWR0lubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21lbnQo
Y29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwg
dW5zaWduZWQgZW5kUG9zaXRpb24sIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKK0Zs
b2F0UmVjdCBTVkdJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdtZW50KGNv
bnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVu
c2lnbmVkIGVuZFBvc2l0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc3RhcnRQb3NpdGlvbiA8IGVuZFBv
c2l0aW9uKTsKLSAgICBBU1NFUlQoc3R5bGUpOwogCiAgICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9
IHJlbmRlcmVyKCkuc2NhbGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsK
QEAgLTE1Nyw3ICsxNTYsNyBAQCBMYXlvdXRSZWN0IFNWR0lubGluZVRleHRCb3g6OmxvY2FsU2Vs
ZWN0aW9uUmVjdCh1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZAogICAgICAgICBpZiAo
IW1hcFN0YXJ0RW5kUG9zaXRpb25zSW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMoZnJhZ21lbnQsIGZy
YWdtZW50U3RhcnRQb3NpdGlvbiwgZnJhZ21lbnRFbmRQb3NpdGlvbikpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBGbG9hdFJlY3QgZnJhZ21lbnRSZWN0ID0gc2VsZWN0aW9uUmVj
dEZvclRleHRGcmFnbWVudChmcmFnbWVudCwgZnJhZ21lbnRTdGFydFBvc2l0aW9uLCBmcmFnbWVu
dEVuZFBvc2l0aW9uLCAmc3R5bGUpOworICAgICAgICBGbG9hdFJlY3QgZnJhZ21lbnRSZWN0ID0g
c2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudChmcmFnbWVudCwgZnJhZ21lbnRTdGFydFBvc2l0
aW9uLCBmcmFnbWVudEVuZFBvc2l0aW9uLCBzdHlsZSk7CiAgICAgICAgIGZyYWdtZW50LmJ1aWxk
RnJhZ21lbnRUcmFuc2Zvcm0oZnJhZ21lbnRUcmFuc2Zvcm0pOwogICAgICAgICBpZiAoIWZyYWdt
ZW50VHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKICAgICAgICAgICAgIGZyYWdtZW50UmVjdCA9IGZy
YWdtZW50VHJhbnNmb3JtLm1hcFJlY3QoZnJhZ21lbnRSZWN0KTsKQEAgLTIyNSw3ICsyMjQsNyBA
QCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZChQYWludElu
Zm8mIHBhaW50SW5mbykKICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY29uY2F0Q1RN
KGZyYWdtZW50VHJhbnNmb3JtKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZp
bGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZp
bGxSZWN0KHNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21lbnQoZnJhZ21lbnQsIGZyYWdtZW50U3Rh
cnRQb3NpdGlvbiwgZnJhZ21lbnRFbmRQb3NpdGlvbiwgJnN0eWxlKSwgYmFja2dyb3VuZENvbG9y
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzZWxlY3Rpb25SZWN0Rm9y
VGV4dEZyYWdtZW50KGZyYWdtZW50LCBmcmFnbWVudFN0YXJ0UG9zaXRpb24sIGZyYWdtZW50RW5k
UG9zaXRpb24sIHN0eWxlKSwgYmFja2dyb3VuZENvbG9yKTsKIAogICAgICAgICBtX3BhaW50aW5n
UmVzb3VyY2VNb2RlID0gQXBwbHlUb0RlZmF1bHRNb2RlOwogICAgIH0KQEAgLTMwNiwxMyArMzA1
LDE1IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgICAgICAgICAgaWYgKCFoYXNG
aWxsKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBtX3Bh
aW50aW5nUmVzb3VyY2VNb2RlID0gQXBwbHlUb0ZpbGxNb2RlIHwgQXBwbHlUb1RleHRNb2RlOwot
ICAgICAgICAgICAgICAgIHBhaW50VGV4dChwYWludEluZm8uY29udGV4dCgpLCAmc3R5bGUsIHNl
bGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWludFNlbGVjdGVkVGV4dE9u
bHkpOworICAgICAgICAgICAgICAgIEFTU0VSVChzZWxlY3Rpb25TdHlsZSk7CisgICAgICAgICAg
ICAgICAgcGFpbnRUZXh0KHBhaW50SW5mby5jb250ZXh0KCksIHN0eWxlLCAqc2VsZWN0aW9uU3R5
bGUsIGZyYWdtZW50LCBoYXNTZWxlY3Rpb24sIHBhaW50U2VsZWN0ZWRUZXh0T25seSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhaW50VHlwZVN0cm9rZToKICAg
ICAgICAgICAgICAgICBpZiAoIWhhc1Zpc2libGVTdHJva2UpCiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUgPSBBcHBs
eVRvU3Ryb2tlTW9kZSB8IEFwcGx5VG9UZXh0TW9kZTsKLSAgICAgICAgICAgICAgICBwYWludFRl
eHQocGFpbnRJbmZvLmNvbnRleHQoKSwgJnN0eWxlLCBzZWxlY3Rpb25TdHlsZSwgZnJhZ21lbnQs
IGhhc1NlbGVjdGlvbiwgcGFpbnRTZWxlY3RlZFRleHRPbmx5KTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoc2VsZWN0aW9uU3R5bGUpOworICAgICAgICAgICAgICAgIHBhaW50VGV4dChwYWludElu
Zm8uY29udGV4dCgpLCBzdHlsZSwgKnNlbGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0
aW9uLCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBQYWludFR5cGVNYXJrZXJzOgogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwpAQCAtMzMzLDE3ICszMzQsMTYgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICBBU1NF
UlQoIW1fcGFpbnRpbmdSZXNvdXJjZSk7CiB9CiAKLWJvb2wgU1ZHSW5saW5lVGV4dEJveDo6YWNx
dWlyZVBhaW50aW5nUmVzb3VyY2UoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgZmxvYXQgc2Nh
bGluZ0ZhY3RvciwgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUpCitib29sIFNWR0lubGluZVRleHRCb3g6OmFjcXVpcmVQYWludGluZ1Jlc291
cmNlKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGZsb2F0IHNjYWxpbmdGYWN0b3IsIFJlbmRl
ckJveE1vZGVsT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewog
ICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsKLSAgICBBU1NFUlQoc3R5bGUpOwogICAgIEFTU0VS
VChtX3BhaW50aW5nUmVzb3VyY2VNb2RlICE9IEFwcGx5VG9EZWZhdWx0TW9kZSk7CiAKICAgICBD
b2xvciBmYWxsYmFja0NvbG9yOwogICAgIGlmIChtX3BhaW50aW5nUmVzb3VyY2VNb2RlICYgQXBw
bHlUb0ZpbGxNb2RlKQotICAgICAgICBtX3BhaW50aW5nUmVzb3VyY2UgPSBSZW5kZXJTVkdSZXNv
dXJjZTo6ZmlsbFBhaW50aW5nUmVzb3VyY2UocmVuZGVyZXIsICpzdHlsZSwgZmFsbGJhY2tDb2xv
cik7CisgICAgICAgIG1fcGFpbnRpbmdSZXNvdXJjZSA9IFJlbmRlclNWR1Jlc291cmNlOjpmaWxs
UGFpbnRpbmdSZXNvdXJjZShyZW5kZXJlciwgc3R5bGUsIGZhbGxiYWNrQ29sb3IpOwogICAgIGVs
c2UgaWYgKG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUgJiBBcHBseVRvU3Ryb2tlTW9kZSkKLSAgICAg
ICAgbV9wYWludGluZ1Jlc291cmNlID0gUmVuZGVyU1ZHUmVzb3VyY2U6OnN0cm9rZVBhaW50aW5n
UmVzb3VyY2UocmVuZGVyZXIsICpzdHlsZSwgZmFsbGJhY2tDb2xvcik7CisgICAgICAgIG1fcGFp
bnRpbmdSZXNvdXJjZSA9IFJlbmRlclNWR1Jlc291cmNlOjpzdHJva2VQYWludGluZ1Jlc291cmNl
KHJlbmRlcmVyLCBzdHlsZSwgZmFsbGJhY2tDb2xvcik7CiAgICAgZWxzZSB7CiAgICAgICAgIC8v
IFdlJ3JlIGVpdGhlciBjYWxsZWQgZm9yIHN0cm9raW5nIG9yIGZpbGxpbmcuCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzUyLDEzICszNTIsMTMgQEAgYm9vbCBTVkdJbmxpbmVU
ZXh0Qm94OjphY3F1aXJlUGFpbnRpbmdSZXNvdXJjZShHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0
LCBmbG9hdAogICAgIGlmICghbV9wYWludGluZ1Jlc291cmNlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAoIW1fcGFpbnRpbmdSZXNvdXJjZS0+YXBwbHlSZXNvdXJjZShyZW5kZXJl
ciwgKnN0eWxlLCBjb250ZXh0LCBtX3BhaW50aW5nUmVzb3VyY2VNb2RlKSkgeworICAgIGlmICgh
bV9wYWludGluZ1Jlc291cmNlLT5hcHBseVJlc291cmNlKHJlbmRlcmVyLCBzdHlsZSwgY29udGV4
dCwgbV9wYWludGluZ1Jlc291cmNlTW9kZSkpIHsKICAgICAgICAgaWYgKGZhbGxiYWNrQ29sb3Iu
aXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IqIGZh
bGxiYWNrUmVzb3VyY2UgPSBSZW5kZXJTVkdSZXNvdXJjZTo6c2hhcmVkU29saWRQYWludGluZ1Jl
c291cmNlKCk7CiAgICAgICAgICAgICBmYWxsYmFja1Jlc291cmNlLT5zZXRDb2xvcihmYWxsYmFj
a0NvbG9yKTsKIAogICAgICAgICAgICAgbV9wYWludGluZ1Jlc291cmNlID0gZmFsbGJhY2tSZXNv
dXJjZTsKLSAgICAgICAgICAgIG1fcGFpbnRpbmdSZXNvdXJjZS0+YXBwbHlSZXNvdXJjZShyZW5k
ZXJlciwgKnN0eWxlLCBjb250ZXh0LCBtX3BhaW50aW5nUmVzb3VyY2VNb2RlKTsKKyAgICAgICAg
ICAgIG1fcGFpbnRpbmdSZXNvdXJjZS0+YXBwbHlSZXNvdXJjZShyZW5kZXJlciwgc3R5bGUsIGNv
bnRleHQsIG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0z
NzYsNyArMzc2LDcgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpyZWxlYXNlUGFpbnRpbmdSZXNv
dXJjZShHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBjb25zdAogICAgIG1fcGFpbnRpbmdSZXNv
dXJjZSA9IG51bGxwdHI7CiB9CiAKLWJvb2wgU1ZHSW5saW5lVGV4dEJveDo6cHJlcGFyZUdyYXBo
aWNzQ29udGV4dEZvclRleHRQYWludGluZyhHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBmbG9h
dCBzY2FsaW5nRmFjdG9yLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitib29sIFNWR0lubGlu
ZVRleHRCb3g6OnByZXBhcmVHcmFwaGljc0NvbnRleHRGb3JUZXh0UGFpbnRpbmcoR3JhcGhpY3ND
b250ZXh0KiYgY29udGV4dCwgZmxvYXQgc2NhbGluZ0ZhY3RvciwgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlKQogewogICAgIHJldHVybiBhY3F1aXJlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0LCBz
Y2FsaW5nRmFjdG9yLCBwYXJlbnQoKS0+cmVuZGVyZXIoKSwgc3R5bGUpOwogfQpAQCAtMzg2LDE2
ICszODYsMTQgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpyZXN0b3JlR3JhcGhpY3NDb250ZXh0
QWZ0ZXJUZXh0UGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0KiYKICAgICByZWxlYXNlUGFpbnRpbmdS
ZXNvdXJjZShjb250ZXh0LCAvKiBwYXRoICovbnVsbHB0cik7CiB9CiAKLVRleHRSdW4gU1ZHSW5s
aW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNv
bnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQpIGNvbnN0CitUZXh0UnVuIFNWR0lubGluZVRl
eHRCb3g6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBT
VkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50KSBjb25zdAogewotICAgIEFTU0VSVChzdHlsZSk7Ci0K
ICAgICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KHJlbmRlcmVyKCkudGV4dCgpKS5zdWJzdHJpbmco
ZnJhZ21lbnQuY2hhcmFjdGVyT2Zmc2V0LCBmcmFnbWVudC5sZW5ndGgpCiAgICAgICAgICAgICAg
ICAgLCAwIC8qIHhQb3MsIG9ubHkgcmVsZXZhbnQgd2l0aCBhbGxvd1RhYnM9dHJ1ZSAqLwogICAg
ICAgICAgICAgICAgICwgMCAvKiBwYWRkaW5nLCBvbmx5IHJlbGV2YW50IGZvciBqdXN0aWZpZWQg
dGV4dCwgbm90IHJlbGV2YW50IGZvciBTVkcgKi8KICAgICAgICAgICAgICAgICAsIEFsbG93VHJh
aWxpbmdFeHBhbnNpb24KICAgICAgICAgICAgICAgICAsIGRpcmVjdGlvbigpCi0gICAgICAgICAg
ICAgICAgLCBkaXJPdmVycmlkZSgpIHx8IHN0eWxlLT5ydGxPcmRlcmluZygpID09IFZpc3VhbE9y
ZGVyIC8qIGRpcmVjdGlvbmFsT3ZlcnJpZGUgKi8pOworICAgICAgICAgICAgICAgICwgZGlyT3Zl
cnJpZGUoKSB8fCBzdHlsZS5ydGxPcmRlcmluZygpID09IFZpc3VhbE9yZGVyIC8qIGRpcmVjdGlv
bmFsT3ZlcnJpZGUgKi8pOwogCiAgICAgLy8gV2UgaGFuZGxlIGxldHRlciAmIHdvcmQgc3BhY2lu
ZyBvdXJzZWx2ZXMuCiAgICAgcnVuLmRpc2FibGVTcGFjaW5nKCk7CkBAIC01MzgsMTcgKzUzNiwx
NyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbldpdGhTdHlsZShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIFRleHREZQogICAgIHBhdGguYWRkUmVjdChGbG9hdFJlY3Qo
ZGVjb3JhdGlvbk9yaWdpbiwgRmxvYXRTaXplKHdpZHRoLCB0aGlja25lc3MpKSk7CiAKICAgICBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIgPSAmY29udGV4dDsKLSAgICBpZiAoYWNxdWlyZVBh
aW50aW5nUmVzb3VyY2UoY29udGV4dFB0ciwgc2NhbGluZ0ZhY3RvciwgZGVjb3JhdGlvblJlbmRl
cmVyLCAmZGVjb3JhdGlvblN0eWxlKSkKKyAgICBpZiAoYWNxdWlyZVBhaW50aW5nUmVzb3VyY2Uo
Y29udGV4dFB0ciwgc2NhbGluZ0ZhY3RvciwgZGVjb3JhdGlvblJlbmRlcmVyLCBkZWNvcmF0aW9u
U3R5bGUpKQogICAgICAgICByZWxlYXNlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0UHRyLCAmcGF0
aCk7CiB9CiAKLXZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIFRleHRSdW4m
IHRleHRSdW4sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIHVuc2lnbmVkIHN0YXJ0
UG9zaXRpb24sIHVuc2lnbmVkIGVuZFBvc2l0aW9uKQordm9pZCBTVkdJbmxpbmVUZXh0Qm94Ojpw
YWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBm
cmFnbWVudCwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgZW5kUG9zaXRpb24pCiB7
CiAgICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHJlbmRlcmVyKCkuc2NhbGluZ0ZhY3RvcigpOwog
ICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsKIAogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBzY2Fs
ZWRGb250ID0gcmVuZGVyZXIoKS5zY2FsZWRGb250KCk7Ci0gICAgY29uc3QgU2hhZG93RGF0YSog
c2hhZG93ID0gc3R5bGUtPnRleHRTaGFkb3coKTsKKyAgICBjb25zdCBTaGFkb3dEYXRhKiBzaGFk
b3cgPSBzdHlsZS50ZXh0U2hhZG93KCk7CiAKICAgICBGbG9hdFBvaW50IHRleHRPcmlnaW4oZnJh
Z21lbnQueCwgZnJhZ21lbnQueSk7CiAgICAgRmxvYXRTaXplIHRleHRTaXplKGZyYWdtZW50Lndp
ZHRoLCBmcmFnbWVudC5oZWlnaHQpOwpAQCAtNTg3LDExICs1ODUsOCBAQCB2b2lkIFNWR0lubGlu
ZVRleHRCb3g6OnBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgUmVuZAogICAgIH0gd2hpbGUgKHNoYWRvdyk7CiB9CiAKLXZvaWQgU1ZHSW5saW5lVGV4
dEJveDo6cGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVuZGVyU3R5
bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2VsZWN0aW9uU3R5bGUsIGNvbnN0IFNWR1Rl
eHRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgaGFzU2VsZWN0aW9uLCBib29sIHBhaW50U2VsZWN0
ZWRUZXh0T25seSkKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSYgc2VsZWN0aW9uU3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wg
aGFzU2VsZWN0aW9uLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSkKIHsKLSAgICBBU1NFUlQo
c3R5bGUpOwotICAgIEFTU0VSVChzZWxlY3Rpb25TdHlsZSk7Ci0KICAgICB1bnNpZ25lZCBzdGFy
dFBvc2l0aW9uID0gMDsKICAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IDA7CiAgICAgaWYgKGhh
c1NlbGVjdGlvbikgewpAQCAtNjEyLDEyICs2MDcsMTIgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94
OjpwYWludFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSog
c3QKIAogICAgIC8vIERyYXcgdGV4dCB1c2luZyBzZWxlY3Rpb24gc3R5bGUgZnJvbSB0aGUgc3Rh
cnQgdG8gdGhlIGVuZCBwb3NpdGlvbiBvZiB0aGUgc2VsZWN0aW9uCiAgICAgaWYgKHN0eWxlICE9
IHNlbGVjdGlvblN0eWxlKQotICAgICAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50U3R5bGVD
aGFuZ2VkKHBhcmVudCgpLT5yZW5kZXJlcigpLCBTdHlsZURpZmZlcmVuY2VSZXBhaW50LCAqc2Vs
ZWN0aW9uU3R5bGUpOworICAgICAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50U3R5bGVDaGFu
Z2VkKHBhcmVudCgpLT5yZW5kZXJlcigpLCBTdHlsZURpZmZlcmVuY2VSZXBhaW50LCBzZWxlY3Rp
b25TdHlsZSk7CiAKICAgICBwYWludFRleHRXaXRoU2hhZG93cyhjb250ZXh0LCBzZWxlY3Rpb25T
dHlsZSwgdGV4dFJ1biwgZnJhZ21lbnQsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKIAog
ICAgIGlmIChzdHlsZSAhPSBzZWxlY3Rpb25TdHlsZSkKLSAgICAgICAgU1ZHUmVzb3VyY2VzQ2Fj
aGU6OmNsaWVudFN0eWxlQ2hhbmdlZChwYXJlbnQoKS0+cmVuZGVyZXIoKSwgU3R5bGVEaWZmZXJl
bmNlUmVwYWludCwgKnN0eWxlKTsKKyAgICAgICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFN0
eWxlQ2hhbmdlZChwYXJlbnQoKS0+cmVuZGVyZXIoKSwgU3R5bGVEaWZmZXJlbmNlUmVwYWludCwg
c3R5bGUpOwogCiAgICAgLy8gRXZlbnR1YWxseSBkcmF3IHRleHQgdXNpbmcgcmVndWxhciBzdHls
ZSBmcm9tIHRoZSBlbmQgcG9zaXRpb24gb2YgdGhlIHNlbGVjdGlvbiB0byB0aGUgZW5kIG9mIHRo
ZSBjdXJyZW50IGNodW5rIHBhcnQKICAgICBpZiAoZW5kUG9zaXRpb24gPCBmcmFnbWVudC5sZW5n
dGggJiYgIXBhaW50U2VsZWN0ZWRUZXh0T25seSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmgKaW5kZXggMWUzMmE0MjIyOTRlNTYzOWNiMzJmZWE1
OTkzZGYwZDQzMjVkZTgwZS4uNjZjNGVhZTA0NTI4NmU1ODM3YjAwZjRhM2U0MzJkYmQxZTU4OGYx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94
LmgKQEAgLTY0LDIzICs2NCwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGFydHNOZXdUZXh0
Q2h1bmsoYm9vbCBuZXdUZXh0Q2h1bmspIHsgbV9zdGFydHNOZXdUZXh0Q2h1bmsgPSBuZXdUZXh0
Q2h1bms7IH0KIAogICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbkluRnJhZ21lbnQoY29uc3QgU1ZH
VGV4dEZyYWdtZW50JiwgZmxvYXQgcG9zaXRpb24sIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMp
IGNvbnN0OwotICAgIEZsb2F0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdtZW50KGNvbnN0
IFNWR1RleHRGcmFnbWVudCYsIHVuc2lnbmVkIGZyYWdtZW50U3RhcnRQb3NpdGlvbiwgdW5zaWdu
ZWQgZnJhZ21lbnRFbmRQb3NpdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdDsKKyAgICBG
bG9hdFJlY3Qgc2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudChjb25zdCBTVkdUZXh0RnJhZ21l
bnQmLCB1bnNpZ25lZCBmcmFnbWVudFN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGZyYWdtZW50RW5k
UG9zaXRpb24sIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgYm9v
bCBpc1NWR0lubGluZVRleHRCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBT
VkdUZXh0RnJhZ21lbnQmKSBjb25zdDsKKyAgICBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29u
c3QgUmVuZGVyU3R5bGUmLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmKSBjb25zdDsKIAotICAgIGJv
b2wgYWNxdWlyZVBhaW50aW5nUmVzb3VyY2UoR3JhcGhpY3NDb250ZXh0KiYsIGZsb2F0IHNjYWxp
bmdGYWN0b3IsIFJlbmRlckJveE1vZGVsT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUqKTsKKyAg
ICBib29sIGFjcXVpcmVQYWludGluZ1Jlc291cmNlKEdyYXBoaWNzQ29udGV4dComLCBmbG9hdCBz
Y2FsaW5nRmFjdG9yLCBSZW5kZXJCb3hNb2RlbE9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJik7
CiAgICAgdm9pZCByZWxlYXNlUGFpbnRpbmdSZXNvdXJjZShHcmFwaGljc0NvbnRleHQqJiwgY29u
c3QgUGF0aCopOwogCi0gICAgYm9vbCBwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50
aW5nKEdyYXBoaWNzQ29udGV4dComLCBmbG9hdCBzY2FsaW5nRmFjdG9yLCBjb25zdCBSZW5kZXJT
dHlsZSopOworICAgIGJvb2wgcHJlcGFyZUdyYXBoaWNzQ29udGV4dEZvclRleHRQYWludGluZyhH
cmFwaGljc0NvbnRleHQqJiwgZmxvYXQgc2NhbGluZ0ZhY3RvciwgY29uc3QgUmVuZGVyU3R5bGUm
KTsKICAgICB2b2lkIHJlc3RvcmVHcmFwaGljc0NvbnRleHRBZnRlclRleHRQYWludGluZyhHcmFw
aGljc0NvbnRleHQqJik7CiAKICAgICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRl
eHQmLCBUZXh0RGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50Jik7CiAgICAgdm9pZCBw
YWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0JiwgVGV4dERlY29yYXRpb24s
IGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIFJlbmRlckJveE1vZGVsT2JqZWN0JiBkZWNvcmF0aW9u
UmVuZGVyZXIpOwotICAgIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgUmVuZGVyU3R5bGUqLCBUZXh0UnVuJiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50Jiwg
dW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgZW5kUG9zaXRpb24pOwotICAgIHZvaWQg
cGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgUmVu
ZGVyU3R5bGUqIHNlbGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBib29sIGhh
c1NlbGVjdGlvbiwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOworICAgIHZvaWQgcGFpbnRU
ZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBUZXh0
UnVuJiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5z
aWduZWQgZW5kUG9zaXRpb24pOworICAgIHZvaWQgcGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUmIHNlbGVjdGlvblN0eWxlLCBj
b25zdCBTVkdUZXh0RnJhZ21lbnQmLCBib29sIGhhc1NlbGVjdGlvbiwgYm9vbCBwYWludFNlbGVj
dGVkVGV4dE9ubHkpOwogCiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250
YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBs
aW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5t
bQppbmRleCBiNzQwYmZmNjdhYjY3NzZjOGFlY2JjNmJkNzJmZWY1N2EwOGM4NmZiLi5hOGQwNGMw
ZTJkOGJkM2M5Yjg1NDE2NmZjMTVlY2JmYWY4ODRiNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KQEAgLTM4LDcgKzM4LDYgQEAK
ICNpbXBvcnQgIldlYktpdE5TU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJOU1Bhc3RlYm9h
cmRFeHRyYXMuaCIKICNpbXBvcnQgIldlYk5TVVJMRXh0cmFzLmgiCi0jaW1wb3J0ICJXZWJTdHJp
bmdUcnVuY2F0b3IuaCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYlVJ
RGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA3YjkwODNhNTE0Njg3ODY3NmU1YmVkYzAwZDJh
NjE3NzlkNmEzYjgxLi5lYzMwMTliODJhOWQ1NzUyNWIxNGVmYzEyM2RiMzllZjY3NTIwYTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yNjEsNyArMjYxLDYgQEAKICNp
bXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TbWFydFJl
cGxhY2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvVGV4dFJ1bi5oPgogI2ltcG9ydCA8V2ViQ29yZS9U
aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaD4KICNpbXBvcnQgPFdlYkNvcmUvV0FLV2lu
ZG93Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dLVmlldy5oPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>