<?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>224682</bug_id>
          
          <creation_ts>2021-04-16 11:00:42 -0700</creation_ts>
          <short_desc>Remove redundant renderObject in BreakingContext::handleText</short_desc>
          <delta_ts>2021-04-24 15:08:43 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1751154</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-04-16 11:00:42 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751156</commentid>
    <comment_count>1</comment_count>
      <attachid>426247</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-04-16 11:02:17 -0700</bug_when>
    <thetext>Created attachment 426247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751158</commentid>
    <comment_count>2</comment_count>
      <attachid>426247</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-16 11:04:40 -0700</bug_when>
    <thetext>Comment on attachment 426247
Patch

I would name this local variable &quot;renderer&quot;. Sure, its type is RenderText&amp;, but the role of the object is &quot;the renderer for the text we are handling&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751159</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-04-16 11:07:18 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 426247 [details]
&gt; Patch
&gt; 
&gt; I would name this local variable &quot;renderer&quot;. Sure, its type is RenderText&amp;,
&gt; but the role of the object is &quot;the renderer for the text we are handling&quot;.
ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751164</commentid>
    <comment_count>4</comment_count>
      <attachid>426249</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-04-16 11:12:44 -0700</bug_when>
    <thetext>Created attachment 426249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751234</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-16 14:13:19 -0700</bug_when>
    <thetext>Committed r276169 (236656@main): &lt;https://commits.webkit.org/236656@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426249.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753940</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-24 15:08:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/77110114&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426247</attachid>
            <date>2021-04-16 11:02:17 -0700</date>
            <delta_ts>2021-04-16 11:12:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224682-20210416110216.patch</filename>
            <type>text/plain</type>
            <size>4745</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY5MWNkZTc3ZjE1ODAx
MGZkZTY4ZWY4MGNlODNjODRkNThmYmM0Yi4uMmNkYTk2NzYwODk3ZjQ2NGMzMDMwNGI2NzM4MDNk
ZGE5MzhiZDBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA0LTE2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHJlZHVuZGFudCBy
ZW5kZXJPYmplY3QgaW4gQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ2ODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJlbmRlcmluZy9saW5lL0JyZWFr
aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVU
ZXh0KToKKwogMjAyMS0wNC0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIEFudG9pbmUncyByMjc2MTQxLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAppbmRleCBi
OTg3NjZlMjM5YWVkZDljMmZlMGRhNWM5NzJmZWYxNmI2NWNkMzNhLi41NTlhYTZjZDM0Mzc1YjM2
Y2M5NzFhY2I4MjkxOGQ1YWE1NjIwYmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbGluZS9CcmVha2luZ0NvbnRleHQuaApAQCAtNjcxLDkgKzY3MSw3IEBAIGlubGluZSBib29s
IEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3Vy
ZW1lbnRzLCBib29sCiAgICAgaWYgKCFtX2N1cnJlbnQub2Zmc2V0KCkpCiAgICAgICAgIG1fYXBw
bGllZFN0YXJ0V2lkdGggPSBmYWxzZTsKIAotICAgIFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0
ID0gKm1fY3VycmVudC5yZW5kZXJlcigpOwotICAgIFJlbmRlclRleHQmIHJlbmRlclRleHQgPSBk
b3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJPYmplY3QpOwotCisgICAgYXV0byYgcmVuZGVyVGV4
dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCptX2N1cnJlbnQucmVuZGVyZXIoKSk7CiAgICAgYm9v
bCBpc1NWR1RleHQgPSByZW5kZXJUZXh0LmlzU1ZHSW5saW5lVGV4dCgpOwogCiAgICAgLy8gSWYg
d2UgaGF2ZSBsZWZ0IGEgbm8td3JhcCBpbmxpbmUgYW5kIGVudGVyZWQgYW4gYXV0b3dyYXAgaW5s
aW5lIHdoaWxlIGlnbm9yaW5nIHNwYWNlcwpAQCAtODY1LDkgKzg2Myw5IEBAIGlubGluZSBib29s
IEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3Vy
ZW1lbnRzLCBib29sCiAgICAgICAgICAgICAgICAgICAgIGlmICghbV93aWR0aC5maXRzT25MaW5l
SW5jbHVkaW5nRXh0cmFXaWR0aChjaGFyV2lkdGgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBsaW5lV2FzVG9vV2lkZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9j
dXJyV1MgPT0gV2hpdGVTcGFjZTo6QnJlYWtTcGFjZXMpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJhaWxpbmdTcGFjZXNIYW5nKG1fbGluZUJyZWFrLCByZW5kZXJPYmplY3QsIGNhbkJy
ZWFrTWlkV29yZCwgcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNlKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0cmFpbGluZ1NwYWNlc0hhbmcobV9saW5lQnJlYWssIHJlbmRlclRleHQsIGNh
bkJyZWFrTWlkV29yZCwgcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNlKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGluZUJyZWFr
Lm1vdmVUbyhyZW5kZXJPYmplY3QsIG1fY3VycmVudC5vZmZzZXQoKSwgbV9jdXJyZW50Lm5leHRC
cmVha2FibGVQb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xpbmVC
cmVhay5tb3ZlVG8ocmVuZGVyVGV4dCwgbV9jdXJyZW50Lm9mZnNldCgpLCBtX2N1cnJlbnQubmV4
dEJyZWFrYWJsZVBvc2l0aW9uKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGlu
ZUJyZWFrZXIuc2tpcFRyYWlsaW5nV2hpdGVzcGFjZShtX2xpbmVCcmVhaywgbV9saW5lSW5mbyk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTk0
MiwxNCArOTQwLDE0IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChX
b3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBib29sCiAgICAgICAgICAgICBpZiAo
YyA9PSAnXG4nICYmIG1fcHJlc2VydmVzTmV3bGluZSkgewogICAgICAgICAgICAgICAgIGlmICgh
c3RvcHBlZElnbm9yaW5nU3BhY2VzICYmIG1fY3VycmVudC5vZmZzZXQoKSkKICAgICAgICAgICAg
ICAgICAgICAgZW5zdXJlQ2hhcmFjdGVyR2V0c0xpbmVCb3gobV9saW5lV2hpdGVzcGFjZUNvbGxh
cHNpbmdTdGF0ZSwgbV9jdXJyZW50KTsKLSAgICAgICAgICAgICAgICBjb21taXRMaW5lQnJlYWtB
dEN1cnJlbnRXaWR0aChyZW5kZXJPYmplY3QsIG1fY3VycmVudC5vZmZzZXQoKSwgbV9jdXJyZW50
Lm5leHRCcmVha2FibGVQb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICBjb21taXRMaW5lQnJl
YWtBdEN1cnJlbnRXaWR0aChyZW5kZXJUZXh0LCBtX2N1cnJlbnQub2Zmc2V0KCksIG1fY3VycmVu
dC5uZXh0QnJlYWthYmxlUG9zaXRpb24oKSk7CiAgICAgICAgICAgICAgICAgbV9saW5lQnJlYWsu
aW5jcmVtZW50KCk7CiAgICAgICAgICAgICAgICAgbV9saW5lSW5mby5zZXRQcmV2aW91c0xpbmVC
cm9rZUNsZWFubHkodHJ1ZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChtX2F1dG9XcmFwICYmIGJldHdlZW5Xb3Jkcykgewot
ICAgICAgICAgICAgICAgIGNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRoKHJlbmRlck9iamVj
dCwgbV9jdXJyZW50Lm9mZnNldCgpLCBtX2N1cnJlbnQubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCkp
OworICAgICAgICAgICAgICAgIGNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRoKHJlbmRlclRl
eHQsIG1fY3VycmVudC5vZmZzZXQoKSwgbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigp
KTsKICAgICAgICAgICAgICAgICB3cmFwV2lkdGhPZmZzZXQgPSAwOwogICAgICAgICAgICAgICAg
IHdyYXBXID0gd3JhcFdpZHRoT2Zmc2V0OwogICAgICAgICAgICAgICAgIC8vIEF1dG8td3JhcHBp
bmcgdGV4dCBzaG91bGQgbm90IHdyYXAgaW4gdGhlIG1pZGRsZSBvZiBhIHdvcmQgb25jZSBpdCBo
YXMgaGFkIGFuCkBAIC05NjIsNyArOTYwLDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0
OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wKICAg
ICAgICAgICAgIGlmIChtaWRXb3JkQnJlYWsgJiYgIVUxNl9JU19UUkFJTChjKSAmJiAhKFVfR0VU
X0dDX01BU0soYykgJiBVX0dDX01fTUFTSykpIHsKICAgICAgICAgICAgICAgICAvLyBSZW1lbWJl
ciB0aGlzIGFzIGEgYnJlYWthYmxlIHBvc2l0aW9uIGluIGNhc2UKICAgICAgICAgICAgICAgICAv
LyBhZGRpbmcgdGhlIGVuZCB3aWR0aCBmb3JjZXMgYSBicmVhay4KLSAgICAgICAgICAgICAgICBt
X2xpbmVCcmVhay5tb3ZlVG8ocmVuZGVyT2JqZWN0LCBtX2N1cnJlbnQub2Zmc2V0KCksIG1fY3Vy
cmVudC5uZXh0QnJlYWthYmxlUG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgbV9saW5lQnJl
YWsubW92ZVRvKHJlbmRlclRleHQsIG1fY3VycmVudC5vZmZzZXQoKSwgbV9jdXJyZW50Lm5leHRC
cmVha2FibGVQb3NpdGlvbigpKTsKICAgICAgICAgICAgICAgICBtaWRXb3JkQnJlYWsgJj0gY2Fu
QnJlYWtNaWRXb3JkOwogICAgICAgICAgICAgfQogCkBAIC0xMDI3LDcgKzEwMjUsNyBAQCBpbmxp
bmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29y
ZE1lYXN1cmVtZW50cywgYm9vbAogCiAgICAgICAgIGlmICghbV9jdXJyZW50Q2hhcmFjdGVySXNX
UyAmJiBwcmV2aW91c0NoYXJhY3RlcklzV1MpIHsKICAgICAgICAgICAgIGlmIChtX2F1dG9XcmFw
ICYmIG1fY3VycmVudFN0eWxlLT5icmVha09ubHlBZnRlcldoaXRlU3BhY2UoKSkKLSAgICAgICAg
ICAgICAgICBtX2xpbmVCcmVhay5tb3ZlVG8ocmVuZGVyT2JqZWN0LCBtX2N1cnJlbnQub2Zmc2V0
KCksIG1fY3VycmVudC5uZXh0QnJlYWthYmxlUG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAg
bV9saW5lQnJlYWsubW92ZVRvKHJlbmRlclRleHQsIG1fY3VycmVudC5vZmZzZXQoKSwgbV9jdXJy
ZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICht
X2NvbGxhcHNlV2hpdGVTcGFjZSAmJiBtX2N1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlICYmICFtX2ln
bm9yaW5nU3BhY2VzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426249</attachid>
            <date>2021-04-16 11:12:44 -0700</date>
            <delta_ts>2021-04-16 14:13:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224682-20210416111243.patch</filename>
            <type>text/plain</type>
            <size>22063</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY5MWNkZTc3ZjE1ODAx
MGZkZTY4ZWY4MGNlODNjODRkNThmYmM0Yi4uNDFlZDdiNzY4MDQ2MmMyOWIyM2UzOTFjZTY4NzYw
Mjk4MjM0OTdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA0LTE2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHJlZHVuZGFudCBy
ZW5kZXJPYmplY3QgaW4gQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ2ODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHJlbmRlcmluZy9saW5lL0JyZWFraW5n
Q29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0
KToKKwogMjAyMS0wNC0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIEFudG9pbmUncyByMjc2MTQxLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAppbmRleCBiOTg3
NjZlMjM5YWVkZDljMmZlMGRhNWM5NzJmZWYxNmI2NWNkMzNhLi42MDY0YzczZDc4NTY4ZmM4Y2Uw
YTE1ZjIxMTU0OTEyNTgwMWE5ODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9CcmVha2luZ0NvbnRleHQuaApAQCAtNjcxLDE3ICs2NzEsMTUgQEAgaW5saW5lIGJvb2wg
QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJl
bWVudHMsIGJvb2wKICAgICBpZiAoIW1fY3VycmVudC5vZmZzZXQoKSkKICAgICAgICAgbV9hcHBs
aWVkU3RhcnRXaWR0aCA9IGZhbHNlOwogCi0gICAgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3Qg
PSAqbV9jdXJyZW50LnJlbmRlcmVyKCk7Ci0gICAgUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCA9IGRv
d25jYXN0PFJlbmRlclRleHQ+KHJlbmRlck9iamVjdCk7Ci0KLSAgICBib29sIGlzU1ZHVGV4dCA9
IHJlbmRlclRleHQuaXNTVkdJbmxpbmVUZXh0KCk7CisgICAgYXV0byYgcmVuZGVyZXIgPSBkb3du
Y2FzdDxSZW5kZXJUZXh0PigqbV9jdXJyZW50LnJlbmRlcmVyKCkpOworICAgIGJvb2wgaXNTVkdU
ZXh0ID0gcmVuZGVyZXIuaXNTVkdJbmxpbmVUZXh0KCk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGxl
ZnQgYSBuby13cmFwIGlubGluZSBhbmQgZW50ZXJlZCBhbiBhdXRvd3JhcCBpbmxpbmUgd2hpbGUg
aWdub3Jpbmcgc3BhY2VzCiAgICAgLy8gdGhlbiB3ZSBuZWVkIHRvIG1hcmsgdGhlIHN0YXJ0IG9m
IHRoZSBhdXRvd3JhcCBpbmxpbmUgYXMgYSBwb3RlbnRpYWwgbGluZWJyZWFrIG5vdy4KICAgICBp
ZiAobV9hdXRvV3JhcCAmJiAhUmVuZGVyU3R5bGU6OmF1dG9XcmFwKG1fbGFzdFdTKSAmJiBtX2ln
bm9yaW5nU3BhY2VzKQotICAgICAgICBjb21taXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0aChyZW5k
ZXJUZXh0KTsKKyAgICAgICAgY29tbWl0TGluZUJyZWFrQXRDdXJyZW50V2lkdGgocmVuZGVyZXIp
OwogCi0gICAgaWYgKHJlbmRlclRleHQuc3R5bGUoKS5oYXNUZXh0Q29tYmluZSgpICYmIGlzPFJl
bmRlckNvbWJpbmVUZXh0PigqbV9jdXJyZW50LnJlbmRlcmVyKCkpKSB7CisgICAgaWYgKHJlbmRl
cmVyLnN0eWxlKCkuaGFzVGV4dENvbWJpbmUoKSAmJiBpczxSZW5kZXJDb21iaW5lVGV4dD4oKm1f
Y3VycmVudC5yZW5kZXJlcigpKSkgewogICAgICAgICBhdXRvJiBjb21iaW5lUmVuZGVyZXIgPSBk
b3duY2FzdDxSZW5kZXJDb21iaW5lVGV4dD4oKm1fY3VycmVudC5yZW5kZXJlcigpKTsKICAgICAg
ICAgY29tYmluZVJlbmRlcmVyLmNvbWJpbmVUZXh0SWZOZWVkZWQoKTsKICAgICAgICAgLy8gVGhl
IGxlbmd0aCBvZiB0aGUgcmVuZGVyZXIncyB0ZXh0IG1heSBoYXZlIGNoYW5nZWQuIEluY3JlbWVu
dCBzdGFsZSBpdGVyYXRvciBwb3NpdGlvbnMKQEAgLTY5MiwxNCArNjkwLDE0IEBAIGlubGluZSBi
b29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVh
c3VyZW1lbnRzLCBib29sCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUgPSBsaW5lU3R5bGUocmVuZGVyVGV4dCwgbV9saW5lSW5mbyk7CisgICAgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlID0gbGluZVN0eWxlKHJlbmRlcmVyLCBtX2xpbmVJbmZvKTsKICAg
ICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7CiAgICAgYm9v
bCBpc0ZpeGVkUGl0Y2ggPSBmb250LmlzRml4ZWRQaXRjaCgpOwogICAgIGJvb2wgY2FuSHlwaGVu
YXRlID0gc3R5bGUuaHlwaGVucygpID09IEh5cGhlbnM6OkF1dG8gJiYgV2ViQ29yZTo6Y2FuSHlw
aGVuYXRlKHN0eWxlLmNvbXB1dGVkTG9jYWxlKCkpOwogICAgIGJvb2wgY2FuSGFuZ1B1bmN0dWF0
aW9uQXRTdGFydCA9IHN0eWxlLmhhbmdpbmdQdW5jdHVhdGlvbigpLmNvbnRhaW5zKEhhbmdpbmdQ
dW5jdHVhdGlvbjo6Rmlyc3QpOwogICAgIGJvb2wgY2FuSGFuZ1B1bmN0dWF0aW9uQXRFbmQgPSBz
dHlsZS5oYW5naW5nUHVuY3R1YXRpb24oKS5jb250YWlucyhIYW5naW5nUHVuY3R1YXRpb246Okxh
c3QpOwogICAgIGJvb2wgY2FuSGFuZ1N0b3BPckNvbW1hQXRMaW5lRW5kID0gc3R5bGUuaGFuZ2lu
Z1B1bmN0dWF0aW9uKCkuY29udGFpbnMoSGFuZ2luZ1B1bmN0dWF0aW9uOjpBbGxvd0VuZCk7Ci0g
ICAgaW50IGVuZFB1bmN0dWF0aW9uSW5kZXggPSBjYW5IYW5nUHVuY3R1YXRpb25BdEVuZCAmJiBt
X2NvbGxhcHNlV2hpdGVTcGFjZSA/IHJlbmRlclRleHQubGFzdENoYXJhY3RlckluZGV4U3RyaXBw
aW5nU3BhY2VzKCkgOiByZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgoKSAtIDE7CisgICAgaW50IGVu
ZFB1bmN0dWF0aW9uSW5kZXggPSBjYW5IYW5nUHVuY3R1YXRpb25BdEVuZCAmJiBtX2NvbGxhcHNl
V2hpdGVTcGFjZSA/IHJlbmRlcmVyLmxhc3RDaGFyYWN0ZXJJbmRleFN0cmlwcGluZ1NwYWNlcygp
IDogcmVuZGVyZXIudGV4dCgpLmxlbmd0aCgpIC0gMTsKICAgICB1bnNpZ25lZCBsYXN0U3BhY2Ug
PSBtX2N1cnJlbnQub2Zmc2V0KCk7CiAgICAgZmxvYXQgd29yZFNwYWNpbmcgPSBtX2N1cnJlbnRT
dHlsZS0+Zm9udENhc2NhZGUoKS53b3JkU3BhY2luZygpOwogICAgIGZsb2F0IGxhc3RTcGFjZVdv
cmRTcGFjaW5nID0gMDsKQEAgLTcyNiwxNSArNzI0LDE1IEBAIGlubGluZSBib29sIEJyZWFraW5n
Q29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBi
b29sCiAgICAgICAgIGJyZWFrQWxsID0gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKG1fcmVuZGVy
VGV4dEluZm8udGV4dCAhPSAmcmVuZGVyVGV4dCkgewotICAgICAgICB1cGRhdGVDb3VudGVySWZO
ZWVkZWQocmVuZGVyVGV4dCk7Ci0gICAgICAgIG1fcmVuZGVyVGV4dEluZm8udGV4dCA9ICZyZW5k
ZXJUZXh0OworICAgIGlmIChtX3JlbmRlclRleHRJbmZvLnRleHQgIT0gJnJlbmRlcmVyKSB7Cisg
ICAgICAgIHVwZGF0ZUNvdW50ZXJJZk5lZWRlZChyZW5kZXJlcik7CisgICAgICAgIG1fcmVuZGVy
VGV4dEluZm8udGV4dCA9ICZyZW5kZXJlcjsKICAgICAgICAgbV9yZW5kZXJUZXh0SW5mby5mb250
ID0gJmZvbnQ7Ci0gICAgICAgIG1fcmVuZGVyVGV4dEluZm8ubGF5b3V0ID0gZm9udC5jcmVhdGVM
YXlvdXQocmVuZGVyVGV4dCwgbV93aWR0aC5jdXJyZW50V2lkdGgoKSwgbV9jb2xsYXBzZVdoaXRl
U3BhY2UpOwotICAgICAgICBtX3JlbmRlclRleHRJbmZvLmxpbmVCcmVha0l0ZXJhdG9yLnJlc2V0
U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKHJlbmRlclRleHQudGV4dCgpLCBzdHlsZS5jb21wdXRl
ZExvY2FsZSgpLCBpdGVyYXRvck1vZGUpOworICAgICAgICBtX3JlbmRlclRleHRJbmZvLmxheW91
dCA9IGZvbnQuY3JlYXRlTGF5b3V0KHJlbmRlcmVyLCBtX3dpZHRoLmN1cnJlbnRXaWR0aCgpLCBt
X2NvbGxhcHNlV2hpdGVTcGFjZSk7CisgICAgICAgIG1fcmVuZGVyVGV4dEluZm8ubGluZUJyZWFr
SXRlcmF0b3IucmVzZXRTdHJpbmdBbmRSZWxlYXNlSXRlcmF0b3IocmVuZGVyZXIudGV4dCgpLCBz
dHlsZS5jb21wdXRlZExvY2FsZSgpLCBpdGVyYXRvck1vZGUpOwogICAgIH0gZWxzZSBpZiAobV9y
ZW5kZXJUZXh0SW5mby5sYXlvdXQgJiYgbV9yZW5kZXJUZXh0SW5mby5mb250ICE9ICZmb250KSB7
CiAgICAgICAgIG1fcmVuZGVyVGV4dEluZm8uZm9udCA9ICZmb250OwotICAgICAgICBtX3JlbmRl
clRleHRJbmZvLmxheW91dCA9IGZvbnQuY3JlYXRlTGF5b3V0KHJlbmRlclRleHQsIG1fd2lkdGgu
Y3VycmVudFdpZHRoKCksIG1fY29sbGFwc2VXaGl0ZVNwYWNlKTsKKyAgICAgICAgbV9yZW5kZXJU
ZXh0SW5mby5sYXlvdXQgPSBmb250LmNyZWF0ZUxheW91dChyZW5kZXJlciwgbV93aWR0aC5jdXJy
ZW50V2lkdGgoKSwgbV9jb2xsYXBzZVdoaXRlU3BhY2UpOwogICAgIH0KIAogICAgIEhhc2hTZXQ8
Y29uc3QgRm9udCo+IGZhbGxiYWNrRm9udHM7CkBAIC03NDcsNyArNzQ1LDcgQEAgaW5saW5lIGJv
b2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFz
dXJlbWVudHMsIGJvb2wKICAgICAvLyB3b3JkcyB3aXRoIHRoZWlyIHRyYWlsaW5nIHNwYWNlLCB0
aGVuIHN1YnRyYWN0IGl0cyB3aWR0aC4KICAgICBUZXh0TGF5b3V0KiB0ZXh0TGF5b3V0ID0gbV9y
ZW5kZXJUZXh0SW5mby5sYXlvdXQuZ2V0KCk7CiAgICAgV29yZFRyYWlsaW5nU3BhY2Ugd29yZFRy
YWlsaW5nU3BhY2Uoc3R5bGUsICF0ZXh0TGF5b3V0KTsKLSAgICBmb3IgKDsgbV9jdXJyZW50Lm9m
ZnNldCgpIDwgcmVuZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCk7IG1fY3VycmVudC5mYXN0SW5jcmVt
ZW50SW5UZXh0Tm9kZSgpKSB7CisgICAgZm9yICg7IG1fY3VycmVudC5vZmZzZXQoKSA8IHJlbmRl
cmVyLnRleHQoKS5sZW5ndGgoKTsgbV9jdXJyZW50LmZhc3RJbmNyZW1lbnRJblRleHROb2RlKCkp
IHsKICAgICAgICAgYm9vbCBwcmV2aW91c0NoYXJhY3RlcklzU3BhY2UgPSBtX2N1cnJlbnRDaGFy
YWN0ZXJJc1NwYWNlOwogICAgICAgICBib29sIHByZXZpb3VzQ2hhcmFjdGVySXNXUyA9IG1fY3Vy
cmVudENoYXJhY3RlcklzV1M7CiAgICAgICAgIFVDaGFyIGMgPSBtX2N1cnJlbnQuY3VycmVudCgp
OwpAQCAtNzYyLDEyICs3NjAsMTIgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5k
bGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChjYW5IYW5nUHVuY3R1YXRpb25BdFN0YXJ0ICYmIG1fd2lkdGguaXNG
aXJzdExpbmUoKSAmJiAhbV93aWR0aC5jb21taXR0ZWRXaWR0aCgpICYmICF3cmFwVyAmJiAhaW5s
aW5lTG9naWNhbFdpZHRoKG1fY3VycmVudC5yZW5kZXJlcigpLCB0cnVlLCBmYWxzZSkpIHsKLSAg
ICAgICAgICAgIG1fd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aCgtcmVuZGVyVGV4dC5oYW5nYWJs
ZVB1bmN0dWF0aW9uU3RhcnRXaWR0aChtX2N1cnJlbnQub2Zmc2V0KCkpKTsKKyAgICAgICAgICAg
IG1fd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aCgtcmVuZGVyZXIuaGFuZ2FibGVQdW5jdHVhdGlv
blN0YXJ0V2lkdGgobV9jdXJyZW50Lm9mZnNldCgpKSk7CiAgICAgICAgICAgICBjYW5IYW5nUHVu
Y3R1YXRpb25BdFN0YXJ0ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlm
IChjYW5IYW5nUHVuY3R1YXRpb25BdEVuZCAmJiAhbV9uZXh0T2JqZWN0ICYmIChpbnQpbV9jdXJy
ZW50Lm9mZnNldCgpID09IGVuZFB1bmN0dWF0aW9uSW5kZXggJiYgIWlubGluZUxvZ2ljYWxXaWR0
aChtX2N1cnJlbnQucmVuZGVyZXIoKSwgZmFsc2UsIHRydWUpKSB7Ci0gICAgICAgICAgICBtX3dp
ZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgoLXJlbmRlclRleHQuaGFuZ2FibGVQdW5jdHVhdGlvbkVu
ZFdpZHRoKGVuZFB1bmN0dWF0aW9uSW5kZXgpKTsKKyAgICAgICAgICAgIG1fd2lkdGguYWRkVW5j
b21taXR0ZWRXaWR0aCgtcmVuZGVyZXIuaGFuZ2FibGVQdW5jdHVhdGlvbkVuZFdpZHRoKGVuZFB1
bmN0dWF0aW9uSW5kZXgpKTsKICAgICAgICAgICAgIGNhbkhhbmdQdW5jdHVhdGlvbkF0RW5kID0g
ZmFsc2U7CiAgICAgICAgIH0KIApAQCAtNzc1LDcgKzc3Myw3IEBAIGlubGluZSBib29sIEJyZWFr
aW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRz
LCBib29sCiAgICAgICAgICAgICBtX2xpbmVJbmZvLnNldEVtcHR5KGZhbHNlLCAmbV9ibG9jaywg
Jm1fd2lkdGgpOwogCiAgICAgICAgIGlmIChjID09IHNvZnRIeXBoZW4gJiYgbV9hdXRvV3JhcCAm
JiAhaHlwaGVuV2lkdGggJiYgc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnM6Ok5vbmUpIHsKLSAg
ICAgICAgICAgIGh5cGhlbldpZHRoID0gbWVhc3VyZUh5cGhlbldpZHRoKHJlbmRlclRleHQsIGZv
bnQsICZmYWxsYmFja0ZvbnRzKTsKKyAgICAgICAgICAgIGh5cGhlbldpZHRoID0gbWVhc3VyZUh5
cGhlbldpZHRoKHJlbmRlcmVyLCBmb250LCAmZmFsbGJhY2tGb250cyk7CiAgICAgICAgICAgICBt
X3dpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgoaHlwaGVuV2lkdGgpOwogICAgICAgICB9CiAKQEAg
LTc4NSw4ICs3ODMsOCBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQo
V29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogCiAgICAgICAgIGlmIChj
YW5CcmVha01pZFdvcmQgJiYgIW1pZFdvcmRCcmVhayAmJiAoIW1fY3VycmVudENoYXJhY3Rlcklz
U3BhY2UgfHwgbV9hdFN0YXJ0IHx8IHN0eWxlLndoaXRlU3BhY2UoKSAhPSBXaGl0ZVNwYWNlOjpQ
cmVXcmFwKSkgewogICAgICAgICAgICAgd3JhcFcgKz0gY2hhcldpZHRoOwotICAgICAgICAgICAg
Ym9vbCBtaWRXb3JkQnJlYWtJc0JlZm9yZVN1cnJvZ2F0ZVBhaXIgPSBVMTZfSVNfTEVBRChjKSAm
JiBVMTZfSVNfVFJBSUwocmVuZGVyVGV4dC5jaGFyYWN0ZXJBdChtX2N1cnJlbnQub2Zmc2V0KCkg
KyAxKSk7Ci0gICAgICAgICAgICBjaGFyV2lkdGggPSB0ZXh0V2lkdGgocmVuZGVyVGV4dCwgbV9j
dXJyZW50Lm9mZnNldCgpLCBtaWRXb3JkQnJlYWtJc0JlZm9yZVN1cnJvZ2F0ZVBhaXIgPyAyIDog
MSwgZm9udCwgbV93aWR0aC5jb21taXR0ZWRXaWR0aCgpICsgd3JhcFcsIGlzRml4ZWRQaXRjaCwg
bV9jb2xsYXBzZVdoaXRlU3BhY2UsIGZhbGxiYWNrRm9udHMsIHRleHRMYXlvdXQpOworICAgICAg
ICAgICAgYm9vbCBtaWRXb3JkQnJlYWtJc0JlZm9yZVN1cnJvZ2F0ZVBhaXIgPSBVMTZfSVNfTEVB
RChjKSAmJiBVMTZfSVNfVFJBSUwocmVuZGVyZXIuY2hhcmFjdGVyQXQobV9jdXJyZW50Lm9mZnNl
dCgpICsgMSkpOworICAgICAgICAgICAgY2hhcldpZHRoID0gdGV4dFdpZHRoKHJlbmRlcmVyLCBt
X2N1cnJlbnQub2Zmc2V0KCksIG1pZFdvcmRCcmVha0lzQmVmb3JlU3Vycm9nYXRlUGFpciA/IDIg
OiAxLCBmb250LCBtX3dpZHRoLmNvbW1pdHRlZFdpZHRoKCkgKyB3cmFwVywgaXNGaXhlZFBpdGNo
LCBtX2NvbGxhcHNlV2hpdGVTcGFjZSwgZmFsbGJhY2tGb250cywgdGV4dExheW91dCk7CiAgICAg
ICAgICAgICBtaWRXb3JkQnJlYWsgPSBtX3dpZHRoLmNvbW1pdHRlZFdpZHRoKCkgKyB3cmFwVyAr
IGNoYXJXaWR0aCA+IG1fd2lkdGguYXZhaWxhYmxlV2lkdGgoKTsKICAgICAgICAgfQogCkBAIC03
OTUsMTYgKzc5MywxNiBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQo
V29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAgJiYg
KHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zOjpOb25lIHx8IChtX2N1cnJlbnQucHJldmlvdXNJ
blNhbWVOb2RlKCkgIT0gc29mdEh5cGhlbikpKTsKICAgICAgICAgbV9jdXJyZW50LnNldE5leHRC
cmVha2FibGVQb3NpdGlvbihuZXh0QnJlYWthYmxlUG9zaXRpb24pOwogICAgICAgICAKLSAgICAg
ICAgaWYgKGNhbkhhbmdTdG9wT3JDb21tYUF0TGluZUVuZCAmJiByZW5kZXJUZXh0LmlzSGFuZ2Fi
bGVTdG9wT3JDb21tYShjKSAmJiBtX3dpZHRoLmZpdHNPbkxpbmUoKSkgeworICAgICAgICBpZiAo
Y2FuSGFuZ1N0b3BPckNvbW1hQXRMaW5lRW5kICYmIHJlbmRlcmVyLmlzSGFuZ2FibGVTdG9wT3JD
b21tYShjKSAmJiBtX3dpZHRoLmZpdHNPbkxpbmUoKSkgewogICAgICAgICAgICAgLy8gV2UgbmVl
ZCB0byBzZWUgaWYgYSBtZWFzdXJlbWVudCB0aGF0IGV4Y2x1ZGVzIHRoZSBzdG9wIHdvdWxkIGZp
dC4gSWYgc28sIHRoZW4gd2Ugc2hvdWxkIGhhbmcKICAgICAgICAgICAgIC8vIHRoZSBzdG9wL2Nv
bW1hIGF0IHRoZSBlbmQuIEZpcnN0IG1lYXN1cmUgaW5jbHVkaW5nIHRoZSBjb21tYS4KICAgICAg
ICAgICAgIG1faGFuZ3NBdEVuZCA9IGZhbHNlOwogICAgICAgICAgICAgZmxvYXQgaW5saW5lU3Rh
cnRXaWR0aCA9ICFtX2FwcGxpZWRTdGFydFdpZHRoID8gaW5saW5lTG9naWNhbFdpZHRoKG1fY3Vy
cmVudC5yZW5kZXJlcigpLCB0cnVlLCBmYWxzZSkgOiAwX2x1OwotICAgICAgICAgICAgZmxvYXQg
d2lkdGhJbmNsdWRpbmdDb21tYSA9IGNvbXB1dGVBZGRpdGlvbmFsQmV0d2VlbldvcmRzV2lkdGgo
cmVuZGVyVGV4dCwgdGV4dExheW91dCwgYywgd29yZFRyYWlsaW5nU3BhY2UsIGZhbGxiYWNrRm9u
dHMsIHdvcmRNZWFzdXJlbWVudHMsIGZvbnQsIGlzRml4ZWRQaXRjaCwgbGFzdFNwYWNlLCBsYXN0
U3BhY2VXb3JkU3BhY2luZywgd29yZFNwYWNpbmdGb3JXb3JkTWVhc3VyZW1lbnQsIG1fY3VycmVu
dC5vZmZzZXQoKSArIDEpICsgaW5saW5lU3RhcnRXaWR0aDsKKyAgICAgICAgICAgIGZsb2F0IHdp
ZHRoSW5jbHVkaW5nQ29tbWEgPSBjb21wdXRlQWRkaXRpb25hbEJldHdlZW5Xb3Jkc1dpZHRoKHJl
bmRlcmVyLCB0ZXh0TGF5b3V0LCBjLCB3b3JkVHJhaWxpbmdTcGFjZSwgZmFsbGJhY2tGb250cywg
d29yZE1lYXN1cmVtZW50cywgZm9udCwgaXNGaXhlZFBpdGNoLCBsYXN0U3BhY2UsIGxhc3RTcGFj
ZVdvcmRTcGFjaW5nLCB3b3JkU3BhY2luZ0ZvcldvcmRNZWFzdXJlbWVudCwgbV9jdXJyZW50Lm9m
ZnNldCgpICsgMSkgKyBpbmxpbmVTdGFydFdpZHRoOwogICAgICAgICAgICAgbV93aWR0aC5hZGRV
bmNvbW1pdHRlZFdpZHRoKHdpZHRoSW5jbHVkaW5nQ29tbWEpOwogICAgICAgICAgICAgaWYgKCFt
X3dpZHRoLmZpdHNPbkxpbmUoKSkgewogICAgICAgICAgICAgICAgIC8vIFNlZSBpZiB3ZSBmaXQg
d2l0aG91dCB0aGUgY29tbWEgaW52b2x2ZWQuIElmIHdlIGRvLCB0aGVuIHRoaXMgaXMgYSBwb3Rl
bnRpYWwgaGFuZyBwb2ludC4KLSAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aFdpdGhvdXRTdG9w
T3JDb21tYSA9IGNvbXB1dGVBZGRpdGlvbmFsQmV0d2VlbldvcmRzV2lkdGgocmVuZGVyVGV4dCwg
dGV4dExheW91dCwgbGFzdENoYXJhY3Rlciwgd29yZFRyYWlsaW5nU3BhY2UsIGZhbGxiYWNrRm9u
dHMsIHdvcmRNZWFzdXJlbWVudHMsIGZvbnQsIGlzRml4ZWRQaXRjaCwgbGFzdFNwYWNlLCBsYXN0
U3BhY2VXb3JkU3BhY2luZywgd29yZFNwYWNpbmdGb3JXb3JkTWVhc3VyZW1lbnQsIG1fY3VycmVu
dC5vZmZzZXQoKSkgKyBpbmxpbmVTdGFydFdpZHRoOworICAgICAgICAgICAgICAgIGZsb2F0IHdp
ZHRoV2l0aG91dFN0b3BPckNvbW1hID0gY29tcHV0ZUFkZGl0aW9uYWxCZXR3ZWVuV29yZHNXaWR0
aChyZW5kZXJlciwgdGV4dExheW91dCwgbGFzdENoYXJhY3Rlciwgd29yZFRyYWlsaW5nU3BhY2Us
IGZhbGxiYWNrRm9udHMsIHdvcmRNZWFzdXJlbWVudHMsIGZvbnQsIGlzRml4ZWRQaXRjaCwgbGFz
dFNwYWNlLCBsYXN0U3BhY2VXb3JkU3BhY2luZywgd29yZFNwYWNpbmdGb3JXb3JkTWVhc3VyZW1l
bnQsIG1fY3VycmVudC5vZmZzZXQoKSkgKyBpbmxpbmVTdGFydFdpZHRoOwogICAgICAgICAgICAg
ICAgIG1fd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aCh3aWR0aFdpdGhvdXRTdG9wT3JDb21tYSAt
IHdpZHRoSW5jbHVkaW5nQ29tbWEpOwogICAgICAgICAgICAgICAgIGlmIChtX3dpZHRoLmZpdHNP
bkxpbmUoKSkKICAgICAgICAgICAgICAgICAgICAgbV9oYW5nc0F0RW5kID0gdHJ1ZTsKQEAgLTgz
MCw3ICs4MjgsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29y
ZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgZmxvYXQgYWRkaXRpb25h
bFRlbXBXaWR0aCA9IGNvbXB1dGVBZGRpdGlvbmFsQmV0d2VlbldvcmRzV2lkdGgocmVuZGVyVGV4
dCwgdGV4dExheW91dCwgYywgd29yZFRyYWlsaW5nU3BhY2UsIGZhbGxiYWNrRm9udHMsIHdvcmRN
ZWFzdXJlbWVudHMsIGZvbnQsIGlzRml4ZWRQaXRjaCwgbGFzdFNwYWNlLCBsYXN0U3BhY2VXb3Jk
U3BhY2luZywgd29yZFNwYWNpbmdGb3JXb3JkTWVhc3VyZW1lbnQsIG1fY3VycmVudC5vZmZzZXQo
KSk7CisgICAgICAgICAgICBmbG9hdCBhZGRpdGlvbmFsVGVtcFdpZHRoID0gY29tcHV0ZUFkZGl0
aW9uYWxCZXR3ZWVuV29yZHNXaWR0aChyZW5kZXJlciwgdGV4dExheW91dCwgYywgd29yZFRyYWls
aW5nU3BhY2UsIGZhbGxiYWNrRm9udHMsIHdvcmRNZWFzdXJlbWVudHMsIGZvbnQsIGlzRml4ZWRQ
aXRjaCwgbGFzdFNwYWNlLCBsYXN0U3BhY2VXb3JkU3BhY2luZywgd29yZFNwYWNpbmdGb3JXb3Jk
TWVhc3VyZW1lbnQsIG1fY3VycmVudC5vZmZzZXQoKSk7CiAgICAgICAgICAgICBtX3dpZHRoLmFk
ZFVuY29tbWl0dGVkV2lkdGgoYWRkaXRpb25hbFRlbXBXaWR0aCk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIFdvcmRNZWFzdXJlbWVudCYgd29yZE1lYXN1cmVtZW50ID0gd29yZE1lYXN1cmVt
ZW50cy5sYXN0KCk7CkBAIC04NTYsNyArODU0LDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250
ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wK
ICAgICAgICAgICAgICAgICAvLyBhcyBjYW5kaWRhdGUgd2lkdGggZm9yIHRoaXMgbGluZS4KICAg
ICAgICAgICAgICAgICBib29sIGxpbmVXYXNUb29XaWRlID0gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgaWYgKGZpdHNPbkxpbmVPckhhbmdzQXRFbmQoKSAmJiBtX2N1cnJlbnRDaGFyYWN0ZXJJc1dT
ICYmIG1fY3VycmVudFN0eWxlLT5icmVha09ubHlBZnRlcldoaXRlU3BhY2UoKSAmJiAoIW1pZFdv
cmRCcmVhayB8fCBtX2N1cnJXUyA9PSBXaGl0ZVNwYWNlOjpCcmVha1NwYWNlcykpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgY2hhcldpZHRoID0gdGV4dFdpZHRoKHJlbmRlclRleHQsIG1f
Y3VycmVudC5vZmZzZXQoKSwgMSwgZm9udCwgbV93aWR0aC5jdXJyZW50V2lkdGgoKSwgaXNGaXhl
ZFBpdGNoLCBtX2NvbGxhcHNlV2hpdGVTcGFjZSwgd29yZE1lYXN1cmVtZW50LmZhbGxiYWNrRm9u
dHMsIHRleHRMYXlvdXQpICsgKGFwcGx5V29yZFNwYWNpbmcgPyB3b3JkU3BhY2luZyA6IDApOwor
ICAgICAgICAgICAgICAgICAgICBmbG9hdCBjaGFyV2lkdGggPSB0ZXh0V2lkdGgocmVuZGVyZXIs
IG1fY3VycmVudC5vZmZzZXQoKSwgMSwgZm9udCwgbV93aWR0aC5jdXJyZW50V2lkdGgoKSwgaXNG
aXhlZFBpdGNoLCBtX2NvbGxhcHNlV2hpdGVTcGFjZSwgd29yZE1lYXN1cmVtZW50LmZhbGxiYWNr
Rm9udHMsIHRleHRMYXlvdXQpICsgKGFwcGx5V29yZFNwYWNpbmcgPyB3b3JkU3BhY2luZyA6IDAp
OwogICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBsaW5lIGlzIHRvbyBiaWcgZXZlbiB3
aXRob3V0IHRoZSBleHRyYSBzcGFjZQogICAgICAgICAgICAgICAgICAgICAvLyBhdCB0aGUgZW5k
IG9mIHRoZSBsaW5lLiBJZiBpdCBpcyBub3QsIGRvIG5vdGhpbmcuCiAgICAgICAgICAgICAgICAg
ICAgIC8vIElmIHRoZSBsaW5lIG5lZWRzIHRoZSBleHRyYSB3aGl0ZXNwYWNlIHRvIGJlIHRvbyBs
b25nLApAQCAtODY1LDkgKzg2Myw5IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFu
ZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBib29sCiAgICAgICAg
ICAgICAgICAgICAgIGlmICghbV93aWR0aC5maXRzT25MaW5lSW5jbHVkaW5nRXh0cmFXaWR0aChj
aGFyV2lkdGgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lV2FzVG9vV2lkZSA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9jdXJyV1MgPT0gV2hpdGVTcGFjZTo6
QnJlYWtTcGFjZXMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWxpbmdTcGFjZXNI
YW5nKG1fbGluZUJyZWFrLCByZW5kZXJPYmplY3QsIGNhbkJyZWFrTWlkV29yZCwgcHJldmlvdXND
aGFyYWN0ZXJJc1NwYWNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpbGluZ1Nw
YWNlc0hhbmcobV9saW5lQnJlYWssIHJlbmRlcmVyLCBjYW5CcmVha01pZFdvcmQsIHByZXZpb3Vz
Q2hhcmFjdGVySXNTcGFjZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2xpbmVCcmVhay5tb3ZlVG8ocmVuZGVyT2JqZWN0LCBt
X2N1cnJlbnQub2Zmc2V0KCksIG1fY3VycmVudC5uZXh0QnJlYWthYmxlUG9zaXRpb24oKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9saW5lQnJlYWsubW92ZVRvKHJlbmRlcmVyLCBt
X2N1cnJlbnQub2Zmc2V0KCksIG1fY3VycmVudC5uZXh0QnJlYWthYmxlUG9zaXRpb24oKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9saW5lQnJlYWtlci5za2lwVHJhaWxpbmdXaGl0
ZXNwYWNlKG1fbGluZUJyZWFrLCBtX2xpbmVJbmZvKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgfQpAQCAtODc2LDggKzg3NCw4IEBAIGlubGluZSBib29s
IEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3Vy
ZW1lbnRzLCBib29sCiAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IHRyeSB0byBoeXBoZW5h
dGUgYXQgdGhlIGZpbmFsIGJyZWFrIG9mIGEgYmxvY2ssIHNpbmNlIHRoaXMgbWVhbnMgdGhlcmUg
aXMKICAgICAgICAgICAgICAgICAgICAgLy8gbm8gbW9yZSBjb250ZW50LCBhbmQgYSBoeXBoZW5h
dGVkIHNpbmdsZSB3b3JkIHdvdWxkIGVuZCB1cCBvbiBhIGxpbmUgYnkgaXRzZWxmLiBUaGlzIGxv
b2tzCiAgICAgICAgICAgICAgICAgICAgIC8vIGJhZCBzbyBqdXN0IGRvbid0IGFsbG93IGl0Lgot
ICAgICAgICAgICAgICAgICAgICBpZiAoY2FuSHlwaGVuYXRlICYmICFtX3dpZHRoLmZpdHNPbkxp
bmUoKSAmJiAobV9uZXh0T2JqZWN0IHx8ICFyZW5kZXJUZXh0LmNvbnRhaW5zT25seUhUTUxXaGl0
ZXNwYWNlKG1fY3VycmVudC5vZmZzZXQoKSwgcmVuZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCkgLSBt
X2N1cnJlbnQub2Zmc2V0KCkpIHx8IGlzTGluZUVtcHR5KSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgdHJ5SHlwaGVuYXRpbmcocmVuZGVyVGV4dCwgZm9udCwgc3R5bGUuY29tcHV0ZWRMb2Nh
bGUoKSwgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIG1fYmxvY2tTdHlsZS5oeXBoZW5hdGlv
bkxpbWl0TGluZXMoKSwgc3R5bGUuaHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpLCBzdHlsZS5oeXBo
ZW5hdGlvbkxpbWl0QWZ0ZXIoKSwgbGFzdFNwYWNlLCBtX2N1cnJlbnQub2Zmc2V0KCksIG1fd2lk
dGguY3VycmVudFdpZHRoKCkgLSBhZGRpdGlvbmFsVGVtcFdpZHRoLCBtX3dpZHRoLmF2YWlsYWJs
ZVdpZHRoKCksIGlzRml4ZWRQaXRjaCwgbV9jb2xsYXBzZVdoaXRlU3BhY2UsIGxhc3RTcGFjZVdv
cmRTcGFjaW5nLCBtX2xpbmVCcmVhaywgbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigp
LCBtX2xpbmVCcmVha2VyLm1faHlwaGVuYXRlZCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChj
YW5IeXBoZW5hdGUgJiYgIW1fd2lkdGguZml0c09uTGluZSgpICYmIChtX25leHRPYmplY3QgfHwg
IXJlbmRlcmVyLmNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNlKG1fY3VycmVudC5vZmZzZXQoKSwg
cmVuZGVyZXIudGV4dCgpLmxlbmd0aCgpIC0gbV9jdXJyZW50Lm9mZnNldCgpKSB8fCBpc0xpbmVF
bXB0eSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeUh5cGhlbmF0aW5nKHJlbmRlcmVy
LCBmb250LCBzdHlsZS5jb21wdXRlZExvY2FsZSgpLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5l
cywgbV9ibG9ja1N0eWxlLmh5cGhlbmF0aW9uTGltaXRMaW5lcygpLCBzdHlsZS5oeXBoZW5hdGlv
bkxpbWl0QmVmb3JlKCksIHN0eWxlLmh5cGhlbmF0aW9uTGltaXRBZnRlcigpLCBsYXN0U3BhY2Us
IG1fY3VycmVudC5vZmZzZXQoKSwgbV93aWR0aC5jdXJyZW50V2lkdGgoKSAtIGFkZGl0aW9uYWxU
ZW1wV2lkdGgsIG1fd2lkdGguYXZhaWxhYmxlV2lkdGgoKSwgaXNGaXhlZFBpdGNoLCBtX2NvbGxh
cHNlV2hpdGVTcGFjZSwgbGFzdFNwYWNlV29yZFNwYWNpbmcsIG1fbGluZUJyZWFrLCBtX2N1cnJl
bnQubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCksIG1fbGluZUJyZWFrZXIubV9oeXBoZW5hdGVkKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2xpbmVCcmVha2VyLm1faHlwaGVuYXRlZCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYXRFbmQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk0MiwxNCArOTQwLDE0IEBAIGlu
bGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3
b3JkTWVhc3VyZW1lbnRzLCBib29sCiAgICAgICAgICAgICBpZiAoYyA9PSAnXG4nICYmIG1fcHJl
c2VydmVzTmV3bGluZSkgewogICAgICAgICAgICAgICAgIGlmICghc3RvcHBlZElnbm9yaW5nU3Bh
Y2VzICYmIG1fY3VycmVudC5vZmZzZXQoKSkKICAgICAgICAgICAgICAgICAgICAgZW5zdXJlQ2hh
cmFjdGVyR2V0c0xpbmVCb3gobV9saW5lV2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZSwgbV9jdXJy
ZW50KTsKLSAgICAgICAgICAgICAgICBjb21taXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0aChyZW5k
ZXJPYmplY3QsIG1fY3VycmVudC5vZmZzZXQoKSwgbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3Np
dGlvbigpKTsKKyAgICAgICAgICAgICAgICBjb21taXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0aChy
ZW5kZXJlciwgbV9jdXJyZW50Lm9mZnNldCgpLCBtX2N1cnJlbnQubmV4dEJyZWFrYWJsZVBvc2l0
aW9uKCkpOwogICAgICAgICAgICAgICAgIG1fbGluZUJyZWFrLmluY3JlbWVudCgpOwogICAgICAg
ICAgICAgICAgIG1fbGluZUluZm8uc2V0UHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KHRydWUpOwog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAobV9hdXRvV3JhcCAmJiBiZXR3ZWVuV29yZHMpIHsKLSAgICAgICAgICAgICAgICBjb21t
aXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0aChyZW5kZXJPYmplY3QsIG1fY3VycmVudC5vZmZzZXQo
KSwgbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICBj
b21taXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0aChyZW5kZXJlciwgbV9jdXJyZW50Lm9mZnNldCgp
LCBtX2N1cnJlbnQubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCkpOwogICAgICAgICAgICAgICAgIHdy
YXBXaWR0aE9mZnNldCA9IDA7CiAgICAgICAgICAgICAgICAgd3JhcFcgPSB3cmFwV2lkdGhPZmZz
ZXQ7CiAgICAgICAgICAgICAgICAgLy8gQXV0by13cmFwcGluZyB0ZXh0IHNob3VsZCBub3Qgd3Jh
cCBpbiB0aGUgbWlkZGxlIG9mIGEgd29yZCBvbmNlIGl0IGhhcyBoYWQgYW4KQEAgLTk2Miw3ICs5
NjAsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1
cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAgaWYgKG1pZFdvcmRC
cmVhayAmJiAhVTE2X0lTX1RSQUlMKGMpICYmICEoVV9HRVRfR0NfTUFTSyhjKSAmIFVfR0NfTV9N
QVNLKSkgewogICAgICAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoaXMgYXMgYSBicmVha2FibGUg
cG9zaXRpb24gaW4gY2FzZQogICAgICAgICAgICAgICAgIC8vIGFkZGluZyB0aGUgZW5kIHdpZHRo
IGZvcmNlcyBhIGJyZWFrLgotICAgICAgICAgICAgICAgIG1fbGluZUJyZWFrLm1vdmVUbyhyZW5k
ZXJPYmplY3QsIG1fY3VycmVudC5vZmZzZXQoKSwgbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3Np
dGlvbigpKTsKKyAgICAgICAgICAgICAgICBtX2xpbmVCcmVhay5tb3ZlVG8ocmVuZGVyZXIsIG1f
Y3VycmVudC5vZmZzZXQoKSwgbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpKTsKICAg
ICAgICAgICAgICAgICBtaWRXb3JkQnJlYWsgJj0gY2FuQnJlYWtNaWRXb3JkOwogICAgICAgICAg
ICAgfQogCkBAIC05ODcsNyArOTg1LDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0Ojpo
YW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIC8vIE1lYXN1cmluZyB0aGUgd2lkdGggb2YgY29tcGxleCB0
ZXh0IGNoYXJhY3Rlci1ieS1jaGFyYWN0ZXIsIHJhdGhlciB0aGFuIG1lYXN1cmluZyBpdCBhbGwg
dG9nZXRoZXIsCiAgICAgICAgICAgICAvLyBjb3VsZCBwcm9kdWNlIGNvbnNpZGVyYWJseSBkaWZm
ZXJlbnQgd2lkdGggdmFsdWVzLgotICAgICAgICAgICAgaWYgKCFyZW5kZXJUZXh0LmNhblVzZVNp
bXBsZUZvbnRDb2RlUGF0aCgpICYmIG1pZFdvcmRCcmVhayAmJiBtX3dpZHRoLmZpdHNPbkxpbmUo
KSkgeworICAgICAgICAgICAgaWYgKCFyZW5kZXJlci5jYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgo
KSAmJiBtaWRXb3JkQnJlYWsgJiYgbV93aWR0aC5maXRzT25MaW5lKCkpIHsKICAgICAgICAgICAg
ICAgICBtaWRXb3JkQnJlYWsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICB3cmFwVyA9IHdyYXBX
aWR0aE9mZnNldCArIGFkZGl0aW9uYWxUZW1wV2lkdGg7CiAgICAgICAgICAgICB9CkBAIC0xMDAx
LDEzICs5OTksMTMgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdv
cmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wKICAgICAgICAgICAgICAgICBs
YXN0U3BhY2UgPSBtX2N1cnJlbnQub2Zmc2V0KCk7IC8vIGUuZy4sICJGb28gICAgZ29vIiwgZG9u
J3QgYWRkIGluIGFueSBvZiB0aGUgaWdub3JlZCBzcGFjZXMuCiAgICAgICAgICAgICAgICAgbV9s
aW5lV2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZS5zdG9wSWdub3JpbmdTcGFjZXMoSW5saW5lSXRl
cmF0b3IobnVsbHB0ciwgbV9jdXJyZW50LnJlbmRlcmVyKCksIG1fY3VycmVudC5vZmZzZXQoKSkp
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1faGFuZ3NBdEVuZCAmJiAhcmVuZGVy
VGV4dC5pc0hhbmdhYmxlU3RvcE9yQ29tbWEoYykpCisgICAgICAgICAgICBpZiAobV9oYW5nc0F0
RW5kICYmICFyZW5kZXJlci5pc0hhbmdhYmxlU3RvcE9yQ29tbWEoYykpCiAgICAgICAgICAgICAg
ICAgbV9oYW5nc0F0RW5kID0gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXNTVkdU
ZXh0ICYmIG1fY3VycmVudC5vZmZzZXQoKSkgewogICAgICAgICAgICAgLy8gRm9yY2UgY3JlYXRp
b24gb2YgbmV3IElubGluZUJveGVzIGZvciBlYWNoIGFic29sdXRlIHBvc2l0aW9uZWQgY2hhcmFj
dGVyICh0aG9zZSB0aGF0IHN0YXJ0IG5ldyB0ZXh0IGNodW5rcykuCi0gICAgICAgICAgICBpZiAo
ZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lVGV4dD4ocmVuZGVyVGV4dCkuY2hhcmFjdGVyU3RhcnRz
TmV3VGV4dENodW5rKG1fY3VycmVudC5vZmZzZXQoKSkpCisgICAgICAgICAgICBpZiAoZG93bmNh
c3Q8UmVuZGVyU1ZHSW5saW5lVGV4dD4ocmVuZGVyZXIpLmNoYXJhY3RlclN0YXJ0c05ld1RleHRD
aHVuayhtX2N1cnJlbnQub2Zmc2V0KCkpKQogICAgICAgICAgICAgICAgIGVuc3VyZUNoYXJhY3Rl
ckdldHNMaW5lQm94KG1fbGluZVdoaXRlc3BhY2VDb2xsYXBzaW5nU3RhdGUsIG1fY3VycmVudCk7
CiAgICAgICAgIH0KIApAQCAtMTAyMCwxNCArMTAxOCwxNCBAQCBpbmxpbmUgYm9vbCBCcmVha2lu
Z0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywg
Ym9vbAogICAgICAgICAgICAgaWYgKG1fbmV4dE9iamVjdCAmJiBtX3N0YXJ0T2ZJZ25vcmVkU3Bh
Y2VzLm9mZnNldCgpICYmIG1fbmV4dE9iamVjdC0+aXNCUigpICYmIChtX2Jsb2NrU3R5bGUudGV4
dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6UmlnaHQgfHwgbV9ibG9ja1N0eWxlLnRleHRBbGln
bigpID09IFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0KSkgewogICAgICAgICAgICAgICAgIG1f
c3RhcnRPZklnbm9yZWRTcGFjZXMuc2V0T2Zmc2V0KG1fc3RhcnRPZklnbm9yZWRTcGFjZXMub2Zm
c2V0KCkgLSAxKTsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGp1c3QgYSBzaW5nbGUg
dHJhaWxpbmcgc3BhY2Ugc3RhcnQgaWdub3JpbmcgaXQgbm93IHNvIGl0IGNvbGxhcHNlcyBhd2F5
LgotICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQub2Zmc2V0KCkgPT0gcmVuZGVyVGV4dC50
ZXh0KCkubGVuZ3RoKCkgLSAxKQorICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQub2Zmc2V0
KCkgPT0gcmVuZGVyZXIudGV4dCgpLmxlbmd0aCgpIC0gMSkKICAgICAgICAgICAgICAgICAgICAg
bV9saW5lV2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZS5zdGFydElnbm9yaW5nU3BhY2VzKG1fc3Rh
cnRPZklnbm9yZWRTcGFjZXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCFtX2N1cnJlbnRDaGFyYWN0ZXJJc1dTICYmIHByZXZpb3VzQ2hhcmFjdGVySXNXUykgewog
ICAgICAgICAgICAgaWYgKG1fYXV0b1dyYXAgJiYgbV9jdXJyZW50U3R5bGUtPmJyZWFrT25seUFm
dGVyV2hpdGVTcGFjZSgpKQotICAgICAgICAgICAgICAgIG1fbGluZUJyZWFrLm1vdmVUbyhyZW5k
ZXJPYmplY3QsIG1fY3VycmVudC5vZmZzZXQoKSwgbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3Np
dGlvbigpKTsKKyAgICAgICAgICAgICAgICBtX2xpbmVCcmVhay5tb3ZlVG8ocmVuZGVyZXIsIG1f
Y3VycmVudC5vZmZzZXQoKSwgbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChtX2NvbGxhcHNlV2hpdGVTcGFjZSAmJiBtX2N1cnJlbnRD
aGFyYWN0ZXJJc1NwYWNlICYmICFtX2lnbm9yaW5nU3BhY2VzKQpAQCAtMTA0MywxMCArMTA0MSwx
MCBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVt
ZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogCiAgICAgd29yZE1lYXN1cmVtZW50cy5ncm93
KHdvcmRNZWFzdXJlbWVudHMuc2l6ZSgpICsgMSk7CiAgICAgV29yZE1lYXN1cmVtZW50JiB3b3Jk
TWVhc3VyZW1lbnQgPSB3b3JkTWVhc3VyZW1lbnRzLmxhc3QoKTsKLSAgICB3b3JkTWVhc3VyZW1l
bnQucmVuZGVyZXIgPSAmcmVuZGVyVGV4dDsKKyAgICB3b3JkTWVhc3VyZW1lbnQucmVuZGVyZXIg
PSAmcmVuZGVyZXI7CiAKICAgICAvLyBJTVBPUlRBTlQ6IGN1cnJlbnQubV9wb3MgaXMgPiBsZW5n
dGggaGVyZSEKLSAgICBmbG9hdCBhZGRpdGlvbmFsVGVtcFdpZHRoID0gbV9pZ25vcmluZ1NwYWNl
cyA/IDAgOiB0ZXh0V2lkdGgocmVuZGVyVGV4dCwgbGFzdFNwYWNlLCBtX2N1cnJlbnQub2Zmc2V0
KCkgLSBsYXN0U3BhY2UsIGZvbnQsIG1fd2lkdGguY3VycmVudFdpZHRoKCksIGlzRml4ZWRQaXRj
aCwgbV9jb2xsYXBzZVdoaXRlU3BhY2UsIHdvcmRNZWFzdXJlbWVudC5mYWxsYmFja0ZvbnRzLCB0
ZXh0TGF5b3V0KTsKKyAgICBmbG9hdCBhZGRpdGlvbmFsVGVtcFdpZHRoID0gbV9pZ25vcmluZ1Nw
YWNlcyA/IDAgOiB0ZXh0V2lkdGgocmVuZGVyZXIsIGxhc3RTcGFjZSwgbV9jdXJyZW50Lm9mZnNl
dCgpIC0gbGFzdFNwYWNlLCBmb250LCBtX3dpZHRoLmN1cnJlbnRXaWR0aCgpLCBpc0ZpeGVkUGl0
Y2gsIG1fY29sbGFwc2VXaGl0ZVNwYWNlLCB3b3JkTWVhc3VyZW1lbnQuZmFsbGJhY2tGb250cywg
dGV4dExheW91dCk7CiAgICAgd29yZE1lYXN1cmVtZW50LnN0YXJ0T2Zmc2V0ID0gbGFzdFNwYWNl
OwogICAgIHdvcmRNZWFzdXJlbWVudC5lbmRPZmZzZXQgPSBtX2N1cnJlbnQub2Zmc2V0KCk7CiAg
ICAgd29yZE1lYXN1cmVtZW50LndpZHRoID0gbV9pZ25vcmluZ1NwYWNlcyA/IDAgOiBhZGRpdGlv
bmFsVGVtcFdpZHRoICsgd29yZFNwYWNpbmdGb3JXb3JkTWVhc3VyZW1lbnQ7CkBAIC0xMDcxLDcg
KzEwNjksNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1l
YXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAvLyBubyBtb3JlIGNv
bnRlbnQsIGFuZCBhIGh5cGhlbmF0ZWQgc2luZ2xlIHdvcmQgd291bGQgZW5kIHVwIG9uIGEgbGlu
ZSBieSBpdHNlbGYuIFRoaXMgbG9va3MKICAgICAgICAgLy8gYmFkIHNvIGp1c3QgZG9uJ3QgYWxs
b3cgaXQuCiAgICAgICAgIGlmIChjYW5IeXBoZW5hdGUgJiYgKG1fbmV4dE9iamVjdCB8fCBpc0xp
bmVFbXB0eSkpCi0gICAgICAgICAgICB0cnlIeXBoZW5hdGluZyhyZW5kZXJUZXh0LCBmb250LCBz
dHlsZS5jb21wdXRlZExvY2FsZSgpLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgbV9ibG9j
a1N0eWxlLmh5cGhlbmF0aW9uTGltaXRMaW5lcygpLCBzdHlsZS5oeXBoZW5hdGlvbkxpbWl0QmVm
b3JlKCksIHN0eWxlLmh5cGhlbmF0aW9uTGltaXRBZnRlcigpLCBsYXN0U3BhY2UsIG1fY3VycmVu
dC5vZmZzZXQoKSwgbV93aWR0aC5jdXJyZW50V2lkdGgoKSAtIGFkZGl0aW9uYWxUZW1wV2lkdGgs
IG1fd2lkdGguYXZhaWxhYmxlV2lkdGgoKSwgaXNGaXhlZFBpdGNoLCBtX2NvbGxhcHNlV2hpdGVT
cGFjZSwgbGFzdFNwYWNlV29yZFNwYWNpbmcsIG1fbGluZUJyZWFrLCBtX2N1cnJlbnQubmV4dEJy
ZWFrYWJsZVBvc2l0aW9uKCksIG1fbGluZUJyZWFrZXIubV9oeXBoZW5hdGVkKTsKKyAgICAgICAg
ICAgIHRyeUh5cGhlbmF0aW5nKHJlbmRlcmVyLCBmb250LCBzdHlsZS5jb21wdXRlZExvY2FsZSgp
LCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgbV9ibG9ja1N0eWxlLmh5cGhlbmF0aW9uTGlt
aXRMaW5lcygpLCBzdHlsZS5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlKCksIHN0eWxlLmh5cGhlbmF0
aW9uTGltaXRBZnRlcigpLCBsYXN0U3BhY2UsIG1fY3VycmVudC5vZmZzZXQoKSwgbV93aWR0aC5j
dXJyZW50V2lkdGgoKSAtIGFkZGl0aW9uYWxUZW1wV2lkdGgsIG1fd2lkdGguYXZhaWxhYmxlV2lk
dGgoKSwgaXNGaXhlZFBpdGNoLCBtX2NvbGxhcHNlV2hpdGVTcGFjZSwgbGFzdFNwYWNlV29yZFNw
YWNpbmcsIG1fbGluZUJyZWFrLCBtX2N1cnJlbnQubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCksIG1f
bGluZUJyZWFrZXIubV9oeXBoZW5hdGVkKTsKIAogICAgICAgICBpZiAoIWh5cGhlbmF0ZWQgJiYg
bV9saW5lQnJlYWsucHJldmlvdXNJblNhbWVOb2RlKCkgPT0gc29mdEh5cGhlbiAmJiBzdHlsZS5o
eXBoZW5zKCkgIT0gSHlwaGVuczo6Tm9uZSkgewogICAgICAgICAgICAgaHlwaGVuYXRlZCA9IHRy
dWU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>