<?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>187914</bug_id>
          
          <creation_ts>2018-07-23 11:31:56 -0700</creation_ts>
          <short_desc>Convert some obvious never-null pointers to references in the editing code</short_desc>
          <delta_ts>2018-07-23 16:08:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1444335</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-07-23 11:31:56 -0700</bug_when>
    <thetext>Convert some obvious never-null pointers to references in the editing code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444395</commentid>
    <comment_count>1</comment_count>
      <attachid>345602</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-07-23 13:43:15 -0700</bug_when>
    <thetext>Created attachment 345602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444461</commentid>
    <comment_count>2</comment_count>
      <attachid>345602</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-23 16:07:42 -0700</bug_when>
    <thetext>Comment on attachment 345602
Patch

Clearing flags on attachment: 345602

Committed r234116: &lt;https://trac.webkit.org/changeset/234116&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444462</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-23 16:07:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444463</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-23 16:08:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/42519867&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345602</attachid>
            <date>2018-07-23 13:43:15 -0700</date>
            <delta_ts>2018-07-23 16:07:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187914-20180723134314.patch</filename>
            <type>text/plain</type>
            <size>31725</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTA3LTIzICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29udmVydCBzb21lIG9idmlvdXMgbmV2
ZXItbnVsbCBwb2ludGVycyB0byByZWZlcmVuY2VzIGluIHRoZSBlZGl0aW5nIGNvZGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzkxNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeHVwIHRyaXZpYWwg
Y2FzZXMgb2YgbmV2ZXItbnVsbCBwb2ludGVycyB0aGF0IHJlYWxseSBzaG91bGQgYmUgcmVmZXJl
bmNlcy4KKworICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnNob3VsZEFwcGx5SW5saW5lU3R5bGVUb1J1
bik6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5
bGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVt
b3ZlSW1wbGljaXRseVN0eWxlZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHls
ZUNvbW1hbmQ6OnJlbW92ZUNTU1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVD
b21tYW5kOjphcHBseUlubGluZVN0eWxlVG9QdXNoRG93bik6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZUNoYW5nZSk6CisgICAgICAgICogZWRp
dGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpv
dmVycmlkZVdpdGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbmZs
aWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbXBsaWNpdFN0eWxlT2ZFbGVtZW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aEltcGxpY2l0U3R5
bGVPZkF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpl
eHRyYWN0Q29uZmxpY3RpbmdJbXBsaWNpdFN0eWxlT2ZBdHRyaWJ1dGVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6c3R5bGVJc1ByZXNlbnRJbkNvbXB1dGVkU3R5bGVP
Zk5vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjplbGVtZW50SXNT
dHlsZWRTcGFuT3JIVE1MRXF1aXZhbGVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5
bGU6Om1lcmdlSW5saW5lU3R5bGVPZkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGlu
Z1N0eWxlOjp3cmFwcGluZ1N0eWxlRm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0aW5nU3R5bGU6OmxlZ2FjeUZvbnRTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQ2hhbmdlOjpTdHlsZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNoYW5n
ZTo6ZXh0cmFjdFRleHRTdHlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6bGVnYWN5Rm9udFNpemVG
cm9tQ1NTVmFsdWUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmg6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVu
dCBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpzZWxlY3Rpb25TdGFydENTU1Byb3BlcnR5VmFsdWUpOgorICAgICAgICAqIGVk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNw
YW5JbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aXNJbmxpbmVOb2RlV2l0aFN0eWxlKToKKyAg
ICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvcjo6YXBwZW5kRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRN
YXJrdXBBY2N1bXVsYXRvcjo6c2VyaWFsaXplTm9kZXMpOgorCiAyMDE4LTA3LTIyICBEZWFuIEph
Y2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBmdWxsc2NyZWVuIGVudigpIHZhcmlh
YmxlcyBzaG91bGQgaGF2ZSBpbml0aWFsIHZhbHVlcwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDIzNDEwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NTgsNyArODU4LDcgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6c2hvdWxkQXBwbHlJbmxp
bgogICAgICAgICBpZiAobm9kZS0+aGFzQ2hpbGROb2RlcygpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIC8vIFdlIGRvbid0IGNvbnNpZGVyIG1faXNJbmxpbmVFbGVtZW50VG9SZW1v
dmVGdW5jdGlvbiBoZXJlIGJlY2F1c2Ugd2UgbmV2ZXIgYXBwbHkgc3R5bGUgd2hlbiBtX2lzSW5s
aW5lRWxlbWVudFRvUmVtb3ZlRnVuY3Rpb24gaXMgc3BlY2lmaWVkCi0gICAgICAgIGlmICghc3R5
bGUuc3R5bGVJc1ByZXNlbnRJbkNvbXB1dGVkU3R5bGVPZk5vZGUobm9kZSkpCisgICAgICAgIGlm
ICghc3R5bGUuc3R5bGVJc1ByZXNlbnRJbkNvbXB1dGVkU3R5bGVPZk5vZGUoKm5vZGUpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChtX3N0eWxlZElubGluZUVsZW1lbnQg
JiYgIWVuY2xvc2luZ0VsZW1lbnRXaXRoVGFnKHBvc2l0aW9uQmVmb3JlTm9kZShub2RlKSwgbV9z
dHlsZWRJbmxpbmVFbGVtZW50LT50YWdRTmFtZSgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtOTAzLDcgKzkwMyw3IEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGlu
ZVN0eWwKICAgICAgICAgaWYgKG1vZGUgPT0gUmVtb3ZlTm9uZSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICBpZiAoZXh0cmFjdGVkU3R5bGUpCi0gICAgICAgICAgICBleHRyYWN0
ZWRTdHlsZS0+bWVyZ2VJbmxpbmVTdHlsZU9mRWxlbWVudCgmZWxlbWVudCwgRWRpdGluZ1N0eWxl
OjpPdmVycmlkZVZhbHVlcyk7CisgICAgICAgICAgICBleHRyYWN0ZWRTdHlsZS0+bWVyZ2VJbmxp
bmVTdHlsZU9mRWxlbWVudChlbGVtZW50LCBFZGl0aW5nU3R5bGU6Ok92ZXJyaWRlVmFsdWVzKTsK
ICAgICAgICAgcmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbihlbGVtZW50KTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpAQCAtOTM3LDIxICs5MzcsMTkgQEAgYm9vbCBBcHBseVN0eWxl
Q29tbWFuZDo6cmVtb3ZlSW1wbGljaXRseQogewogICAgIGlmIChtb2RlID09IFJlbW92ZU5vbmUp
IHsKICAgICAgICAgQVNTRVJUKCFleHRyYWN0ZWRTdHlsZSk7Ci0gICAgICAgIHJldHVybiBzdHls
ZS5jb25mbGljdHNXaXRoSW1wbGljaXRTdHlsZU9mRWxlbWVudCgmZWxlbWVudCkgfHwgc3R5bGUu
Y29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkF0dHJpYnV0ZXMoJmVsZW1lbnQpOworICAgICAg
ICByZXR1cm4gc3R5bGUuY29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoZWxlbWVu
dCkgfHwgc3R5bGUuY29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkF0dHJpYnV0ZXMoZWxlbWVu
dCk7CiAgICAgfQogCiAgICAgQVNTRVJUKG1vZGUgPT0gUmVtb3ZlSWZOZWVkZWQgfHwgbW9kZSA9
PSBSZW1vdmVBbHdheXMpOwotICAgIGlmIChzdHlsZS5jb25mbGljdHNXaXRoSW1wbGljaXRTdHls
ZU9mRWxlbWVudCgmZWxlbWVudCwgZXh0cmFjdGVkU3R5bGUsIG1vZGUgPT0gUmVtb3ZlQWx3YXlz
ID8gRWRpdGluZ1N0eWxlOjpFeHRyYWN0TWF0Y2hpbmdTdHlsZSA6IEVkaXRpbmdTdHlsZTo6RG9O
b3RFeHRyYWN0TWF0Y2hpbmdTdHlsZSkpIHsKKyAgICBpZiAoc3R5bGUuY29uZmxpY3RzV2l0aElt
cGxpY2l0U3R5bGVPZkVsZW1lbnQoZWxlbWVudCwgZXh0cmFjdGVkU3R5bGUsIG1vZGUgPT0gUmVt
b3ZlQWx3YXlzID8gRWRpdGluZ1N0eWxlOjpFeHRyYWN0TWF0Y2hpbmdTdHlsZSA6IEVkaXRpbmdT
dHlsZTo6RG9Ob3RFeHRyYWN0TWF0Y2hpbmdTdHlsZSkpIHsKICAgICAgICAgcmVwbGFjZVdpdGhT
cGFuT3JSZW1vdmVJZldpdGhvdXRBdHRyaWJ1dGVzKGVsZW1lbnQpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKICAgICAvLyB1bmljb2RlLWJpZGkgYW5kIGRpcmVjdGlvbiBhcmUgcHVz
aGVkIGRvd24gc2VwYXJhdGVseSBzbyBkb24ndCBwdXNoIGRvd24gd2l0aCBvdGhlciBzdHlsZXMK
ICAgICBWZWN0b3I8UXVhbGlmaWVkTmFtZT4gYXR0cmlidXRlczsKLSAgICBpZiAoIXN0eWxlLmV4
dHJhY3RDb25mbGljdGluZ0ltcGxpY2l0U3R5bGVPZkF0dHJpYnV0ZXMoJmVsZW1lbnQsIGV4dHJh
Y3RlZFN0eWxlID8gRWRpdGluZ1N0eWxlOjpQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24gOiBFZGl0
aW5nU3R5bGU6OkRvTm90UHJlc2VydmVXcml0aW5nRGlyZWN0aW9uLAotICAgICAgICBleHRyYWN0
ZWRTdHlsZSwgYXR0cmlidXRlcywgbW9kZSA9PSBSZW1vdmVBbHdheXMgPyBFZGl0aW5nU3R5bGU6
OkV4dHJhY3RNYXRjaGluZ1N0eWxlIDogRWRpdGluZ1N0eWxlOjpEb05vdEV4dHJhY3RNYXRjaGlu
Z1N0eWxlKSkgeworICAgIGlmICghc3R5bGUuZXh0cmFjdENvbmZsaWN0aW5nSW1wbGljaXRTdHls
ZU9mQXR0cmlidXRlcyhlbGVtZW50LCBleHRyYWN0ZWRTdHlsZSA/IEVkaXRpbmdTdHlsZTo6UHJl
c2VydmVXcml0aW5nRGlyZWN0aW9uIDogRWRpdGluZ1N0eWxlOjpEb05vdFByZXNlcnZlV3JpdGlu
Z0RpcmVjdGlvbiwgZXh0cmFjdGVkU3R5bGUsIGF0dHJpYnV0ZXMsIG1vZGUgPT0gUmVtb3ZlQWx3
YXlzID8gRWRpdGluZ1N0eWxlOjpFeHRyYWN0TWF0Y2hpbmdTdHlsZSA6IEVkaXRpbmdTdHlsZTo6
RG9Ob3RFeHRyYWN0TWF0Y2hpbmdTdHlsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
CiAKICAgICBmb3IgKGF1dG8mIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZXMpCiAgICAgICAgIHJlbW92
ZU5vZGVBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlKTsKQEAgLTk2NSwxMCArOTYzLDEwIEBA
IGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUltcGxpY2l0bHkKIGJvb2wgQXBwbHlTdHls
ZUNvbW1hbmQ6OnJlbW92ZUNTU1N0eWxlKEVkaXRpbmdTdHlsZSYgc3R5bGUsIEhUTUxFbGVtZW50
JiBlbGVtZW50LCBJbmxpbmVTdHlsZVJlbW92YWxNb2RlIG1vZGUsIEVkaXRpbmdTdHlsZSogZXh0
cmFjdGVkU3R5bGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gUmVtb3ZlTm9uZSkKLSAgICAgICAgcmV0
dXJuIHN0eWxlLmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudCgmZWxlbWVudCk7Cisg
ICAgICAgIHJldHVybiBzdHlsZS5jb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQoZWxl
bWVudCk7CiAKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gbmV3SW5saW5lU3R5
bGU7Ci0gICAgaWYgKCFzdHlsZS5jb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQoJmVs
ZW1lbnQsIG5ld0lubGluZVN0eWxlLCBleHRyYWN0ZWRTdHlsZSkpCisgICAgaWYgKCFzdHlsZS5j
b25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQoZWxlbWVudCwgbmV3SW5saW5lU3R5bGUs
IGV4dHJhY3RlZFN0eWxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG5ld0lu
bGluZVN0eWxlLT5pc0VtcHR5KCkpCkBAIC0xMDEyLDcgKzEwMTAsNyBAQCB2b2lkIEFwcGx5U3R5
bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlCiAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gbmV3
SW5saW5lU3R5bGUgPSBzdHlsZTsKICAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGRv
d25jYXN0PEhUTUxFbGVtZW50Pihub2RlKS5pbmxpbmVTdHlsZSgpKSB7CiAgICAgICAgIG5ld0lu
bGluZVN0eWxlID0gc3R5bGUtPmNvcHkoKTsKLSAgICAgICAgbmV3SW5saW5lU3R5bGUtPm1lcmdl
SW5saW5lU3R5bGVPZkVsZW1lbnQoJmRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSwgRWRpdGlu
Z1N0eWxlOjpPdmVycmlkZVZhbHVlcyk7CisgICAgICAgIG5ld0lubGluZVN0eWxlLT5tZXJnZUlu
bGluZVN0eWxlT2ZFbGVtZW50KGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSwgRWRpdGluZ1N0
eWxlOjpPdmVycmlkZVZhbHVlcyk7CiAgICAgfQogCiAgICAgLy8gU2luY2UgYWRkSW5saW5lU3R5
bGVJZk5lZWRlZCBjYW4ndCBhZGQgc3R5bGVzIHRvIGJsb2NrLWZsb3cgcmVuZGVyIG9iamVjdHMs
IGFkZCBzdHlsZSBhdHRyaWJ1dGUgaW5zdGVhZC4KQEAgLTE0NjIsNyArMTQ2MCw3IEBAIHZvaWQg
QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGUKICAgICAgICAgaWYgKHN0eWxlQ29u
dGFpbmVyKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBleGlzdGluZ1N0eWxlID0gc3R5bGVDb250
YWluZXItPmlubGluZVN0eWxlKCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGlubGluZVN0eWxl
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoZXhpc3RpbmdTdHlsZSk7Ci0gICAgICAgICAgICAgICAg
aW5saW5lU3R5bGUtPm92ZXJyaWRlV2l0aFN0eWxlKHN0eWxlVG9NZXJnZSk7CisgICAgICAgICAg
ICAgICAgaW5saW5lU3R5bGUtPm92ZXJyaWRlV2l0aFN0eWxlKCpzdHlsZVRvTWVyZ2UpOwogICAg
ICAgICAgICAgICAgIHNldE5vZGVBdHRyaWJ1dGUoKnN0eWxlQ29udGFpbmVyLCBzdHlsZUF0dHIs
IGlubGluZVN0eWxlLT5zdHlsZSgpLT5hc1RleHQoKSk7CiAgICAgICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgICAgICBzZXROb2RlQXR0cmlidXRlKCpzdHlsZUNvbnRhaW5lciwgc3R5bGVBdHRy
LCBzdHlsZVRvTWVyZ2UtPmFzVGV4dCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAJKHJldmlzaW9uIDIzNDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIGlu
dCBpZGVudGlmaWVyRm9yU3R5bGVQcm9wZXJ0eShUJiBzdHlsZSwKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGdldFByb3BlcnRpZXNOb3RJbihTdHls
ZVByb3BlcnRpZXMmIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIFQmIGJhc2VTdHlsZSk7
CiBlbnVtIExlZ2FjeUZvbnRTaXplTW9kZSB7IEFsd2F5c1VzZUxlZ2FjeUZvbnRTaXplLCBVc2VM
ZWdhY3lGb250U2l6ZU9ubHlJZlBpeGVsVmFsdWVzTWF0Y2ggfTsKLXN0YXRpYyBpbnQgbGVnYWN5
Rm9udFNpemVGcm9tQ1NTVmFsdWUoRG9jdW1lbnQqLCBDU1NQcmltaXRpdmVWYWx1ZSosIGJvb2wg
c2hvdWxkVXNlRml4ZWRGb250RGVmYXVsdFNpemUsIExlZ2FjeUZvbnRTaXplTW9kZSk7CitzdGF0
aWMgaW50IGxlZ2FjeUZvbnRTaXplRnJvbUNTU1ZhbHVlKERvY3VtZW50JiwgQ1NTUHJpbWl0aXZl
VmFsdWUqLCBib29sIHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplLCBMZWdhY3lGb250U2l6
ZU1vZGUpOwogc3RhdGljIGJvb2wgaGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kQ29sb3IoU3R5bGVQ
cm9wZXJ0aWVzKik7CiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBiYWNrZ3JvdW5kQ29sb3JJbkVm
ZmVjdChOb2RlKik7CiAKQEAgLTU4Myw5ICs1ODMsOSBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6c2V0
U3R5bGUoUmVmUHRyPE11dGFiCiAgICAgZXh0cmFjdEZvbnRTaXplRGVsdGEoKTsKIH0KIAotdm9p
ZCBFZGl0aW5nU3R5bGU6Om92ZXJyaWRlV2l0aFN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyog
c3R5bGUpCit2b2lkIEVkaXRpbmdTdHlsZTo6b3ZlcnJpZGVXaXRoU3R5bGUoY29uc3QgU3R5bGVQ
cm9wZXJ0aWVzJiBzdHlsZSkKIHsKLSAgICByZXR1cm4gbWVyZ2VTdHlsZShzdHlsZSwgT3ZlcnJp
ZGVWYWx1ZXMpOworICAgIHJldHVybiBtZXJnZVN0eWxlKCZzdHlsZSwgT3ZlcnJpZGVWYWx1ZXMp
OwogfQogCiBzdGF0aWMgdm9pZCBhcHBseVRleHREZWNvcmF0aW9uQ2hhbmdlVG9WYWx1ZUxpc3Qo
Q1NTVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFRleHREZWNvcmF0aW9uQ2hhbmdlIGNoYW5nZSwgUmVm
PENTU1ByaW1pdGl2ZVZhbHVlPiYmIHZhbHVlKQpAQCAtODA2LDExICs4MDYsOSBAQCBzdGF0aWMg
UmVmUHRyPENTU1ZhbHVlTGlzdD4gdGV4dERlY29yYXRpCiAgICAgcmV0dXJuIGRvd25jYXN0PENT
U1ZhbHVlTGlzdD4odmFsdWUuZ2V0KCkpOwogfQogCi1ib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxp
Y3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQsIFJlZlB0
cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiogbmV3SW5saW5lU3R5bGVQdHIsIEVkaXRpbmdTdHls
ZSogZXh0cmFjdGVkU3R5bGUpIGNvbnN0Citib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0
aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQsIFJlZlB0cjxNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPiogbmV3SW5saW5lU3R5bGVQdHIsIEVkaXRpbmdTdHlsZSogZXh0
cmFjdGVkU3R5bGUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGVsZW1lbnQpOwotCi0gICAgY29uc3Qg
U3R5bGVQcm9wZXJ0aWVzKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnQtPmlubGluZVN0eWxlKCk7Cisg
ICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnQuaW5saW5lU3R5
bGUoKTsKICAgICBpZiAoIWlubGluZVN0eWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ym9vbCBjb25mbGljdHMgPSBmYWxzZTsKQEAgLTg2Myw3ICs4NjEsNyBAQCBib29sIEVkaXRpbmdT
dHlsZTo6Y29uZmxpY3RzV2l0aElubGluZVN0CiAgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCA9IG1fbXV0YWJsZVN0eWxlLT5wcm9wZXJ0eUF0KGkpLmlkKCk7CiAKICAgICAgICAgLy8g
V2UgZG9uJ3Qgb3ZlcnJpZGUgd2hpdGVzcGFjZSBwcm9wZXJ0eSBvZiBhIHRhYiBzcGFuIGJlY2F1
c2UgdGhhdCB3b3VsZCBjb2xsYXBzZSB0aGUgdGFiIGludG8gYSBzcGFjZS4KLSAgICAgICAgaWYg
KHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXaGl0ZVNwYWNlICYmIGlzVGFiU3Bhbk5vZGUoZWxl
bWVudCkpCisgICAgICAgIGlmIChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2hpdGVTcGFjZSAm
JiBpc1RhYlNwYW5Ob2RlKCZlbGVtZW50KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIGlmIChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5F
ZmZlY3QgJiYgaW5saW5lU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlUZXh0
RGVjb3JhdGlvbikpIHsKQEAgLTkxNywxNiArOTE1LDE2IEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8
Y29uc3QgSFRNTEVsZW1lbnRFcXUKIH0KIAogCi1ib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3Rz
V2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIEVkaXRpbmdT
dHlsZSogZXh0cmFjdGVkU3R5bGUsIFNob3VsZEV4dHJhY3RNYXRjaGluZ1N0eWxlIHNob3VsZEV4
dHJhY3RNYXRjaGluZ1N0eWxlKSBjb25zdAorYm9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dp
dGhJbXBsaWNpdFN0eWxlT2ZFbGVtZW50KEhUTUxFbGVtZW50JiBlbGVtZW50LCBFZGl0aW5nU3R5
bGUqIGV4dHJhY3RlZFN0eWxlLCBTaG91bGRFeHRyYWN0TWF0Y2hpbmdTdHlsZSBzaG91bGRFeHRy
YWN0TWF0Y2hpbmdTdHlsZSkgY29uc3QKIHsKICAgICBpZiAoaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBmb3IgKGF1dG8mIGVxdWl2YWxlbnQgOiBodG1sRWxlbWVudEVx
dWl2YWxlbnRzKCkpIHsKLSAgICAgICAgaWYgKGVxdWl2YWxlbnQtPm1hdGNoZXMoKmVsZW1lbnQp
ICYmIGVxdWl2YWxlbnQtPnByb3BlcnR5RXhpc3RzSW5TdHlsZSgqdGhpcykKLSAgICAgICAgICAg
ICYmIChzaG91bGRFeHRyYWN0TWF0Y2hpbmdTdHlsZSA9PSBFeHRyYWN0TWF0Y2hpbmdTdHlsZSB8
fCAhZXF1aXZhbGVudC0+dmFsdWVJc1ByZXNlbnRJblN0eWxlKCplbGVtZW50LCAqdGhpcykpKSB7
CisgICAgICAgIGlmIChlcXVpdmFsZW50LT5tYXRjaGVzKGVsZW1lbnQpICYmIGVxdWl2YWxlbnQt
PnByb3BlcnR5RXhpc3RzSW5TdHlsZSgqdGhpcykKKyAgICAgICAgICAgICYmIChzaG91bGRFeHRy
YWN0TWF0Y2hpbmdTdHlsZSA9PSBFeHRyYWN0TWF0Y2hpbmdTdHlsZSB8fCAhZXF1aXZhbGVudC0+
dmFsdWVJc1ByZXNlbnRJblN0eWxlKGVsZW1lbnQsICp0aGlzKSkpIHsKICAgICAgICAgICAgIGlm
IChleHRyYWN0ZWRTdHlsZSkKLSAgICAgICAgICAgICAgICBlcXVpdmFsZW50LT5hZGRUb1N0eWxl
KGVsZW1lbnQsIGV4dHJhY3RlZFN0eWxlKTsKKyAgICAgICAgICAgICAgICBlcXVpdmFsZW50LT5h
ZGRUb1N0eWxlKCZlbGVtZW50LCBleHRyYWN0ZWRTdHlsZSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTk0OCwyNCArOTQ2LDIyIEBAIHN0YXRpYyBjb25z
dCBWZWN0b3I8Y29uc3QgSFRNTEF0dHJpYnV0ZUUKICAgICByZXR1cm4gZXF1aXZhbGVudHM7CiB9
CiAKLWJvb2wgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW1wbGljaXRTdHlsZU9mQXR0cmli
dXRlcyhIVE1MRWxlbWVudCogZWxlbWVudCkgY29uc3QKK2Jvb2wgRWRpdGluZ1N0eWxlOjpjb25m
bGljdHNXaXRoSW1wbGljaXRTdHlsZU9mQXR0cmlidXRlcyhIVE1MRWxlbWVudCYgZWxlbWVudCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQoZWxlbWVudCk7CiAgICAgaWYgKGlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yIChhdXRvJiBlcXVpdmFsZW50IDogaHRtbEF0dHJp
YnV0ZUVxdWl2YWxlbnRzKCkpIHsKLSAgICAgICAgaWYgKGVxdWl2YWxlbnQtPm1hdGNoZXMoKmVs
ZW1lbnQpICYmIGVxdWl2YWxlbnQtPnByb3BlcnR5RXhpc3RzSW5TdHlsZSgqdGhpcykgJiYgIWVx
dWl2YWxlbnQtPnZhbHVlSXNQcmVzZW50SW5TdHlsZSgqZWxlbWVudCwgKnRoaXMpKQorICAgICAg
ICBpZiAoZXF1aXZhbGVudC0+bWF0Y2hlcyhlbGVtZW50KSAmJiBlcXVpdmFsZW50LT5wcm9wZXJ0
eUV4aXN0c0luU3R5bGUoKnRoaXMpICYmICFlcXVpdmFsZW50LT52YWx1ZUlzUHJlc2VudEluU3R5
bGUoZWxlbWVudCwgKnRoaXMpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEVkaXRpbmdTdHlsZTo6ZXh0cmFjdENvbmZsaWN0
aW5nSW1wbGljaXRTdHlsZU9mQXR0cmlidXRlcyhIVE1MRWxlbWVudCogZWxlbWVudCwgU2hvdWxk
UHJlc2VydmVXcml0aW5nRGlyZWN0aW9uIHNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbiwK
K2Jvb2wgRWRpdGluZ1N0eWxlOjpleHRyYWN0Q29uZmxpY3RpbmdJbXBsaWNpdFN0eWxlT2ZBdHRy
aWJ1dGVzKEhUTUxFbGVtZW50JiBlbGVtZW50LCBTaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rp
b24gc2hvdWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uLAogICAgIEVkaXRpbmdTdHlsZSogZXh0
cmFjdGVkU3R5bGUsIFZlY3RvcjxRdWFsaWZpZWROYW1lPiYgY29uZmxpY3RpbmdBdHRyaWJ1dGVz
LCBTaG91bGRFeHRyYWN0TWF0Y2hpbmdTdHlsZSBzaG91bGRFeHRyYWN0TWF0Y2hpbmdTdHlsZSkg
Y29uc3QKIHsKLSAgICBBU1NFUlQoZWxlbWVudCk7CiAgICAgLy8gSFRNTEF0dHJpYnV0ZUVxdWl2
YWxlbnQ6OmFkZFRvU3R5bGUgZG9lc24ndCBzdXBwb3J0IHVuaWNvZGUtYmlkaSBhbmQgZGlyZWN0
aW9uIHByb3BlcnRpZXMKICAgICBBU1NFUlQoIWV4dHJhY3RlZFN0eWxlIHx8IHNob3VsZFByZXNl
cnZlV3JpdGluZ0RpcmVjdGlvbiA9PSBQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24pOwogICAgIGlm
ICghbV9tdXRhYmxlU3R5bGUpCkBAIC05NzcsMTIgKzk3MywxMiBAQCBib29sIEVkaXRpbmdTdHls
ZTo6ZXh0cmFjdENvbmZsaWN0aW5nSW1wCiAgICAgICAgIGlmIChzaG91bGRQcmVzZXJ2ZVdyaXRp
bmdEaXJlY3Rpb24gPT0gUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uICYmIGVxdWl2YWxlbnQtPmF0
dHJpYnV0ZU5hbWUoKSA9PSBIVE1MTmFtZXM6OmRpckF0dHIpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICBpZiAoIWVxdWl2YWxlbnQtPm1hdGNoZXMoKmVsZW1lbnQpIHx8ICFlcXVp
dmFsZW50LT5wcm9wZXJ0eUV4aXN0c0luU3R5bGUoKnRoaXMpCi0gICAgICAgICAgICB8fCAoc2hv
dWxkRXh0cmFjdE1hdGNoaW5nU3R5bGUgPT0gRG9Ob3RFeHRyYWN0TWF0Y2hpbmdTdHlsZSAmJiBl
cXVpdmFsZW50LT52YWx1ZUlzUHJlc2VudEluU3R5bGUoKmVsZW1lbnQsICp0aGlzKSkpCisgICAg
ICAgIGlmICghZXF1aXZhbGVudC0+bWF0Y2hlcyhlbGVtZW50KSB8fCAhZXF1aXZhbGVudC0+cHJv
cGVydHlFeGlzdHNJblN0eWxlKCp0aGlzKQorICAgICAgICAgICAgfHwgKHNob3VsZEV4dHJhY3RN
YXRjaGluZ1N0eWxlID09IERvTm90RXh0cmFjdE1hdGNoaW5nU3R5bGUgJiYgZXF1aXZhbGVudC0+
dmFsdWVJc1ByZXNlbnRJblN0eWxlKGVsZW1lbnQsICp0aGlzKSkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBpZiAoZXh0cmFjdGVkU3R5bGUpCi0gICAgICAgICAgICBlcXVpdmFs
ZW50LT5hZGRUb1N0eWxlKGVsZW1lbnQsIGV4dHJhY3RlZFN0eWxlKTsKKyAgICAgICAgICAgIGVx
dWl2YWxlbnQtPmFkZFRvU3R5bGUoJmVsZW1lbnQsIGV4dHJhY3RlZFN0eWxlKTsKICAgICAgICAg
Y29uZmxpY3RpbmdBdHRyaWJ1dGVzLmFwcGVuZChlcXVpdmFsZW50LT5hdHRyaWJ1dGVOYW1lKCkp
OwogICAgICAgICByZW1vdmVkID0gdHJ1ZTsKICAgICB9CkBAIC05OTAsMTEgKzk4NiwxMSBAQCBi
b29sIEVkaXRpbmdTdHlsZTo6ZXh0cmFjdENvbmZsaWN0aW5nSW1wCiAgICAgcmV0dXJuIHJlbW92
ZWQ7CiB9CiAKLWJvb2wgRWRpdGluZ1N0eWxlOjpzdHlsZUlzUHJlc2VudEluQ29tcHV0ZWRTdHls
ZU9mTm9kZShOb2RlKiBub2RlKSBjb25zdAorYm9vbCBFZGl0aW5nU3R5bGU6OnN0eWxlSXNQcmVz
ZW50SW5Db21wdXRlZFN0eWxlT2ZOb2RlKE5vZGUmIG5vZGUpIGNvbnN0CiB7CiAgICAgaWYgKGlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
ciBjb21wdXRlZFN0eWxlKG5vZGUpOworICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0b3IgY29tcHV0
ZWRTdHlsZSgmbm9kZSk7CiAKICAgICBib29sIHNob3VsZEFkZFVuZGVybGluZSA9IHVuZGVybGlu
ZUNoYW5nZSgpID09IFRleHREZWNvcmF0aW9uQ2hhbmdlOjpBZGQ7CiAgICAgYm9vbCBzaG91bGRB
ZGRMaW5lVGhyb3VnaCA9IHN0cmlrZVRocm91Z2hDaGFuZ2UoKSA9PSBUZXh0RGVjb3JhdGlvbkNo
YW5nZTo6QWRkOwpAQCAtMTAxNiwzNyArMTAxMiwzNyBAQCBib29sIEVkaXRpbmdTdHlsZTo6c3R5
bGVJc1ByZXNlbnRJbkNvbXB1CiAgICAgcmV0dXJuICFtX211dGFibGVTdHlsZSB8fCBnZXRQcm9w
ZXJ0aWVzTm90SW4oKm1fbXV0YWJsZVN0eWxlLCBjb21wdXRlZFN0eWxlKS0+aXNFbXB0eSgpOwog
fQogCi1ib29sIEVkaXRpbmdTdHlsZTo6ZWxlbWVudElzU3R5bGVkU3Bhbk9ySFRNTEVxdWl2YWxl
bnQoY29uc3QgSFRNTEVsZW1lbnQqIGVsZW1lbnQpCitib29sIEVkaXRpbmdTdHlsZTo6ZWxlbWVu
dElzU3R5bGVkU3Bhbk9ySFRNTEVxdWl2YWxlbnQoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQp
CiB7CiAgICAgYm9vbCBlbGVtZW50SXNTcGFuT3JFbGVtZW50RXF1aXZhbGVudCA9IGZhbHNlOwot
ICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c3BhblRhZykpCisgICAgaWYg
KGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnNwYW5UYWcpKQogICAgICAgICBlbGVtZW50
SXNTcGFuT3JFbGVtZW50RXF1aXZhbGVudCA9IHRydWU7CiAgICAgZWxzZSB7CiAgICAgICAgIGZv
ciAoYXV0byYgZXF1aXZhbGVudCA6IGh0bWxFbGVtZW50RXF1aXZhbGVudHMoKSkgewotICAgICAg
ICAgICAgaWYgKGVxdWl2YWxlbnQtPm1hdGNoZXMoKmVsZW1lbnQpKSB7CisgICAgICAgICAgICBp
ZiAoZXF1aXZhbGVudC0+bWF0Y2hlcyhlbGVtZW50KSkgewogICAgICAgICAgICAgICAgIGVsZW1l
bnRJc1NwYW5PckVsZW1lbnRFcXVpdmFsZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghZWxlbWVudC0+
aGFzQXR0cmlidXRlcygpKQorICAgIGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpCiAgICAg
ICAgIHJldHVybiBlbGVtZW50SXNTcGFuT3JFbGVtZW50RXF1aXZhbGVudDsgLy8gc3BhbiwgYiwg
ZXRjLi4uIHdpdGhvdXQgYW55IGF0dHJpYnV0ZXMKIAogICAgIHVuc2lnbmVkIG1hdGNoZWRBdHRy
aWJ1dGVzID0gMDsKICAgICBmb3IgKGF1dG8mIGVxdWl2YWxlbnQgOiBodG1sQXR0cmlidXRlRXF1
aXZhbGVudHMoKSkgewotICAgICAgICBpZiAoZXF1aXZhbGVudC0+bWF0Y2hlcygqZWxlbWVudCkg
JiYgZXF1aXZhbGVudC0+YXR0cmlidXRlTmFtZSgpICE9IEhUTUxOYW1lczo6ZGlyQXR0cikKKyAg
ICAgICAgaWYgKGVxdWl2YWxlbnQtPm1hdGNoZXMoZWxlbWVudCkgJiYgZXF1aXZhbGVudC0+YXR0
cmlidXRlTmFtZSgpICE9IEhUTUxOYW1lczo6ZGlyQXR0cikKICAgICAgICAgICAgIG1hdGNoZWRB
dHRyaWJ1dGVzKys7CiAgICAgfQogCiAgICAgaWYgKCFlbGVtZW50SXNTcGFuT3JFbGVtZW50RXF1
aXZhbGVudCAmJiAhbWF0Y2hlZEF0dHJpYnV0ZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsgLy8g
ZWxlbWVudCBpcyBub3QgYSBzcGFuLCBhIGh0bWwgZWxlbWVudCBlcXVpdmFsZW50LCBvciBmb250
IGVsZW1lbnQuCiAgICAgCi0gICAgaWYgKGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpjbGFzc0F0dHIpID09IEFwcGxlU3R5bGVTcGFuQ2xhc3MpCisg
ICAgaWYgKGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6
OmNsYXNzQXR0cikgPT0gQXBwbGVTdHlsZVNwYW5DbGFzcykKICAgICAgICAgbWF0Y2hlZEF0dHJp
YnV0ZXMrKzsKIAotICAgIGlmIChlbGVtZW50LT5oYXNBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHls
ZUF0dHIpKSB7Ci0gICAgICAgIGlmIChjb25zdCBTdHlsZVByb3BlcnRpZXMqIHN0eWxlID0gZWxl
bWVudC0+aW5saW5lU3R5bGUoKSkgeworICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZShIVE1M
TmFtZXM6OnN0eWxlQXR0cikpIHsKKyAgICAgICAgaWYgKGNvbnN0IFN0eWxlUHJvcGVydGllcyog
c3R5bGUgPSBlbGVtZW50LmlubGluZVN0eWxlKCkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHBy
b3BlcnR5Q291bnQgPSBzdHlsZS0+cHJvcGVydHlDb3VudCgpOwogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5Q291bnQ7ICsraSkgewogICAgICAgICAgICAgICAg
IGlmICghaXNFZGl0aW5nUHJvcGVydHkoc3R5bGUtPnByb3BlcnR5QXQoaSkuaWQoKSkpCkBAIC0x
MDU3LDggKzEwNTMsOCBAQCBib29sIEVkaXRpbmdTdHlsZTo6ZWxlbWVudElzU3R5bGVkU3Bhbk9y
CiAgICAgfQogCiAgICAgLy8gZm9udCB3aXRoIGNvbG9yIGF0dHJpYnV0ZSwgc3BhbiB3aXRoIHN0
eWxlIGF0dHJpYnV0ZSwgZXRjLi4uCi0gICAgQVNTRVJUKG1hdGNoZWRBdHRyaWJ1dGVzIDw9IGVs
ZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCkpOwotICAgIHJldHVybiBtYXRjaGVkQXR0cmlidXRlcyA+
PSBlbGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOworICAgIEFTU0VSVChtYXRjaGVkQXR0cmlidXRl
cyA8PSBlbGVtZW50LmF0dHJpYnV0ZUNvdW50KCkpOworICAgIHJldHVybiBtYXRjaGVkQXR0cmli
dXRlcyA+PSBlbGVtZW50LmF0dHJpYnV0ZUNvdW50KCk7CiB9CiAKIHZvaWQgRWRpdGluZ1N0eWxl
OjpwcmVwYXJlVG9BcHBseUF0KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgU2hvdWxkUHJlc2Vy
dmVXcml0aW5nRGlyZWN0aW9uIHNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbikKQEAgLTEx
MDcsMjEgKzExMDMsMjAgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlVHlwaW5nU3R5bGUoRG9j
dQogICAgIG1lcmdlU3R5bGUodHlwaW5nU3R5bGUtPnN0eWxlKCksIE92ZXJyaWRlVmFsdWVzKTsK
IH0KIAotdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlSW5saW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVk
RWxlbWVudCogZWxlbWVudCwgQ1NTUHJvcGVydHlPdmVycmlkZU1vZGUgbW9kZSwgUHJvcGVydGll
c1RvSW5jbHVkZSBwcm9wZXJ0aWVzVG9JbmNsdWRlKQordm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdl
SW5saW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCYgZWxlbWVudCwgQ1NTUHJvcGVydHlP
dmVycmlkZU1vZGUgbW9kZSwgUHJvcGVydGllc1RvSW5jbHVkZSBwcm9wZXJ0aWVzVG9JbmNsdWRl
KQogewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICBpZiAoIWVsZW1lbnQtPmlubGluZVN0eWxl
KCkpCisgICAgaWYgKCFlbGVtZW50LmlubGluZVN0eWxlKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHN3aXRjaCAocHJvcGVydGllc1RvSW5jbHVkZSkgewogICAgIGNhc2UgQWxsUHJvcGVydGll
czoKLSAgICAgICAgbWVyZ2VTdHlsZShlbGVtZW50LT5pbmxpbmVTdHlsZSgpLCBtb2RlKTsKKyAg
ICAgICAgbWVyZ2VTdHlsZShlbGVtZW50LmlubGluZVN0eWxlKCksIG1vZGUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBPbmx5RWRpdGluZ0luaGVyaXRhYmxlUHJvcGVydGllczoKLSAgICAg
ICAgbWVyZ2VTdHlsZShjb3B5RWRpdGluZ1Byb3BlcnRpZXMoZWxlbWVudC0+aW5saW5lU3R5bGUo
KSwgT25seUluaGVyaXRhYmxlRWRpdGluZ1Byb3BlcnRpZXMpLnB0cigpLCBtb2RlKTsKKyAgICAg
ICAgbWVyZ2VTdHlsZShjb3B5RWRpdGluZ1Byb3BlcnRpZXMoZWxlbWVudC5pbmxpbmVTdHlsZSgp
LCBPbmx5SW5oZXJpdGFibGVFZGl0aW5nUHJvcGVydGllcykucHRyKCksIG1vZGUpOwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0OgotICAgICAgICBt
ZXJnZVN0eWxlKGNvcHlFZGl0aW5nUHJvcGVydGllcyhlbGVtZW50LT5pbmxpbmVTdHlsZSgpLCBB
bGxFZGl0aW5nUHJvcGVydGllcykucHRyKCksIG1vZGUpOworICAgICAgICBtZXJnZVN0eWxlKGNv
cHlFZGl0aW5nUHJvcGVydGllcyhlbGVtZW50LmlubGluZVN0eWxlKCksIEFsbEVkaXRpbmdQcm9w
ZXJ0aWVzKS5wdHIoKSwgbW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CkBAIC0xMTc2
LDE1ICsxMTcxLDE1IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZUlubGluZUFuZEltcGxpY2kK
ICAgICB9CiB9CiAKLVJlZjxFZGl0aW5nU3R5bGU+IEVkaXRpbmdTdHlsZTo6d3JhcHBpbmdTdHls
ZUZvclNlcmlhbGl6YXRpb24oTm9kZSogY29udGV4dCwgYm9vbCBzaG91bGRBbm5vdGF0ZSkKK1Jl
ZjxFZGl0aW5nU3R5bGU+IEVkaXRpbmdTdHlsZTo6d3JhcHBpbmdTdHlsZUZvclNlcmlhbGl6YXRp
b24oTm9kZSYgY29udGV4dCwgYm9vbCBzaG91bGRBbm5vdGF0ZSkKIHsKICAgICBpZiAoc2hvdWxk
QW5ub3RhdGUpIHsKLSAgICAgICAgYXV0byB3cmFwcGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpj
cmVhdGUoY29udGV4dCwgRWRpdGluZ1N0eWxlOjpFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KTsK
KyAgICAgICAgYXV0byB3cmFwcGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoJmNvbnRl
eHQsIEVkaXRpbmdTdHlsZTo6RWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAKICAgICAgICAg
Ly8gU3R5bGVzIHRoYXQgTWFpbCBibG9ja3F1b3RlcyBjb250cmlidXRlIHNob3VsZCBvbmx5IGJl
IHBsYWNlZCBvbiB0aGUgTWFpbCBibG9ja3F1b3RlLAogICAgICAgICAvLyB0byBoZWxwIHVzIGRp
ZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVzIGZyb20gb25lcyB0aGF0IHRoZSB1c2VyIGhhcyBhcHBs
aWVkLgogICAgICAgICAvLyBUaGlzIGhlbHBzIHVzIGdldCB0aGUgY29sb3Igb2YgY29udGVudCBw
YXN0ZWQgaW50byBibG9ja3F1b3RlcyByaWdodC4KLSAgICAgICAgd3JhcHBpbmdTdHlsZS0+cmVt
b3ZlU3R5bGVBZGRlZEJ5Tm9kZShlbmNsb3NpbmdOb2RlT2ZUeXBlKGZpcnN0UG9zaXRpb25Jbk9y
QmVmb3JlTm9kZShjb250ZXh0KSwgaXNNYWlsQmxvY2txdW90ZSwgQ2FuQ3Jvc3NFZGl0aW5nQm91
bmRhcnkpKTsKKyAgICAgICAgd3JhcHBpbmdTdHlsZS0+cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kZShl
bmNsb3NpbmdOb2RlT2ZUeXBlKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZSgmY29udGV4dCks
IGlzTWFpbEJsb2NrcXVvdGUsIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KSk7CiAKICAgICAgICAg
Ly8gQ2FsbCBjb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVydGllcyBmaXJzdCBvciBvdGhlcndp
c2UgaXQnbGwgY29weSB0aGUgdmFsdWUgb3ZlciBmcm9tIGluLWVmZmVjdCB0byB0ZXh0LWRlY29y
YXRpb25zLgogICAgICAgICB3cmFwcGluZ1N0eWxlLT5jb2xsYXBzZVRleHREZWNvcmF0aW9uUHJv
cGVydGllcygpOwpAQCAtMTE5NSwxMSArMTE5MCw5IEBAIFJlZjxFZGl0aW5nU3R5bGU+IEVkaXRp
bmdTdHlsZTo6d3JhcHBpbmcKICAgICBhdXRvIHdyYXBwaW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6
OmNyZWF0ZSgpOwogCiAgICAgLy8gV2hlbiBub3QgYW5ub3RhdGluZyBmb3IgaW50ZXJjaGFuZ2Us
IHdlIG9ubHkgcHJlc2VydmUgaW5saW5lIHN0eWxlIGRlY2xhcmF0aW9ucy4KLSAgICBmb3IgKE5v
ZGUqIG5vZGUgPSBjb250ZXh0OyBub2RlICYmICFub2RlLT5pc0RvY3VtZW50Tm9kZSgpOyBub2Rl
ID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChpczxTdHlsZWRFbGVtZW50Pigq
bm9kZSkgJiYgIWlzTWFpbEJsb2NrcXVvdGUobm9kZSkpIHsKLSAgICAgICAgICAgIHdyYXBwaW5n
U3R5bGUtPm1lcmdlSW5saW5lQW5kSW1wbGljaXRTdHlsZU9mRWxlbWVudChkb3duY2FzdDxTdHls
ZWRFbGVtZW50Pigqbm9kZSksIEVkaXRpbmdTdHlsZTo6RG9Ob3RPdmVycmlkZVZhbHVlcywKLSAg
ICAgICAgICAgICAgICBFZGl0aW5nU3R5bGU6OkVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpOwot
ICAgICAgICB9CisgICAgZm9yIChOb2RlKiBub2RlID0gJmNvbnRleHQ7IG5vZGUgJiYgIW5vZGUt
PmlzRG9jdW1lbnROb2RlKCk7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAg
aWYgKGlzPFN0eWxlZEVsZW1lbnQ+KCpub2RlKSAmJiAhaXNNYWlsQmxvY2txdW90ZShub2RlKSkK
KyAgICAgICAgICAgIHdyYXBwaW5nU3R5bGUtPm1lcmdlSW5saW5lQW5kSW1wbGljaXRTdHlsZU9m
RWxlbWVudChkb3duY2FzdDxTdHlsZWRFbGVtZW50Pigqbm9kZSksIEVkaXRpbmdTdHlsZTo6RG9O
b3RPdmVycmlkZVZhbHVlcywgRWRpdGluZ1N0eWxlOjpFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0
KTsKICAgICB9CiAKICAgICByZXR1cm4gd3JhcHBpbmdTdHlsZTsKQEAgLTE0MDUsNyArMTM5OCw3
IEBAIGJvb2wgRWRpdGluZ1N0eWxlOjppc0Zsb2F0aW5nKCkKICAgICByZXR1cm4gdiAmJiAhdi0+
ZXF1YWxzKCpub25lVmFsdWUpOwogfQogCi1pbnQgRWRpdGluZ1N0eWxlOjpsZWdhY3lGb250U2l6
ZShEb2N1bWVudCogZG9jdW1lbnQpIGNvbnN0CitpbnQgRWRpdGluZ1N0eWxlOjpsZWdhY3lGb250
U2l6ZShEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBj
c3NWYWx1ZSA9IG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5
Rm9udFNpemUpOwogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KGNzc1ZhbHVlKSkKQEAg
LTE2MTAsNyArMTYwMyw3IEBAIFN0eWxlQ2hhbmdlOjpTdHlsZUNoYW5nZShFZGl0aW5nU3R5bGUq
IHMKICAgICByZWNvbmNpbGVUZXh0RGVjb3JhdGlvblByb3BlcnRpZXMobXV0YWJsZVN0eWxlLmdl
dCgpKTsKICAgICBib29sIHNob3VsZFN0eWxlV2l0aENTUyA9IGRvY3VtZW50LT5mcmFtZSgpLT5l
ZGl0b3IoKS5zaG91bGRTdHlsZVdpdGhDU1MoKTsKICAgICBpZiAoIXNob3VsZFN0eWxlV2l0aENT
UykKLSAgICAgICAgZXh0cmFjdFRleHRTdHlsZXMoZG9jdW1lbnQsICptdXRhYmxlU3R5bGUsIGNv
bXB1dGVkU3R5bGUudXNlRml4ZWRGb250RGVmYXVsdFNpemUoKSk7CisgICAgICAgIGV4dHJhY3RU
ZXh0U3R5bGVzKCpkb2N1bWVudCwgKm11dGFibGVTdHlsZSwgY29tcHV0ZWRTdHlsZS51c2VGaXhl
ZEZvbnREZWZhdWx0U2l6ZSgpKTsKIAogICAgIGJvb2wgc2hvdWxkQWRkVW5kZXJsaW5lID0gc3R5
bGUtPnVuZGVybGluZUNoYW5nZSgpID09IFRleHREZWNvcmF0aW9uQ2hhbmdlOjpBZGQ7CiAgICAg
Ym9vbCBzaG91bGRBZGRTdHJpa2VUaHJvdWdoID0gc3R5bGUtPnN0cmlrZVRocm91Z2hDaGFuZ2Uo
KSA9PSBUZXh0RGVjb3JhdGlvbkNoYW5nZTo6QWRkOwpAQCAtMTY4Myw3ICsxNjc2LDcgQEAgc3Rh
dGljIHZvaWQgc2V0VGV4dERlY29yYXRpb25Qcm9wZXJ0eShNdQogICAgIH0KIH0KIAotdm9pZCBT
dHlsZUNoYW5nZTo6ZXh0cmFjdFRleHRTdHlsZXMoRG9jdW1lbnQqIGRvY3VtZW50LCBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgYm9vbCBzaG91bGRVc2VGaXhlZEZvbnREZWZhdWx0U2l6
ZSkKK3ZvaWQgU3R5bGVDaGFuZ2U6OmV4dHJhY3RUZXh0U3R5bGVzKERvY3VtZW50JiBkb2N1bWVu
dCwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUsIGJvb2wgc2hvdWxkVXNlRml4ZWRGb250
RGVmYXVsdFNpemUpCiB7CiAgICAgaWYgKGlkZW50aWZpZXJGb3JTdHlsZVByb3BlcnR5KHN0eWxl
LCBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpID09IENTU1ZhbHVlQm9sZCkgewogICAgICAgICBzdHls
ZS5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpOwpAQCAtMTgyNiwxNiArMTgx
OSwxNCBAQCBzdGF0aWMgYm9vbCBpc0NTU1ZhbHVlTGVuZ3RoKENTU1ByaW1pdGl2CiAgICAgcmV0
dXJuIHZhbHVlLT5pc0ZvbnRJbmRlcGVuZGVudExlbmd0aCgpOwogfQogCi1pbnQgbGVnYWN5Rm9u
dFNpemVGcm9tQ1NTVmFsdWUoRG9jdW1lbnQqIGRvY3VtZW50LCBDU1NQcmltaXRpdmVWYWx1ZSog
dmFsdWUsIGJvb2wgc2hvdWxkVXNlRml4ZWRGb250RGVmYXVsdFNpemUsIExlZ2FjeUZvbnRTaXpl
TW9kZSBtb2RlKQoraW50IGxlZ2FjeUZvbnRTaXplRnJvbUNTU1ZhbHVlKERvY3VtZW50JiBkb2N1
bWVudCwgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlLCBib29sIHNob3VsZFVzZUZpeGVkRm9udERl
ZmF1bHRTaXplLCBMZWdhY3lGb250U2l6ZU1vZGUgbW9kZSkKIHsKLSAgICBBU1NFUlQoZG9jdW1l
bnQpOyAvLyBGSVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIHRha2UgYSBEb2N1bWVudCYKLQogICAg
IGlmIChpc0NTU1ZhbHVlTGVuZ3RoKHZhbHVlKSkgewogICAgICAgICBpbnQgcGl4ZWxGb250U2l6
ZSA9IHZhbHVlLT5pbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAgICAg
aW50IGxlZ2FjeUZvbnRTaXplID0gU3R5bGU6OmxlZ2FjeUZvbnRTaXplRm9yUGl4ZWxTaXplKHBp
eGVsRm9udFNpemUsIHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplLCAqZG9jdW1lbnQpOwor
ICAgICAgICBpbnQgbGVnYWN5Rm9udFNpemUgPSBTdHlsZTo6bGVnYWN5Rm9udFNpemVGb3JQaXhl
bFNpemUocGl4ZWxGb250U2l6ZSwgc2hvdWxkVXNlRml4ZWRGb250RGVmYXVsdFNpemUsIGRvY3Vt
ZW50KTsKICAgICAgICAgLy8gVXNlIGxlZ2FjeSBmb250IHNpemUgb25seSBpZiBwaXhlbCB2YWx1
ZSBtYXRjaGVzIGV4YWN0bHkgdG8gdGhhdCBvZiBsZWdhY3kgZm9udCBzaXplLgogICAgICAgICBp
bnQgY3NzUHJpbWl0aXZlRXF1aXZhbGVudCA9IGxlZ2FjeUZvbnRTaXplIC0gMSArIENTU1ZhbHVl
WFNtYWxsOwotICAgICAgICBpZiAobW9kZSA9PSBBbHdheXNVc2VMZWdhY3lGb250U2l6ZSB8fCBT
dHlsZTo6Zm9udFNpemVGb3JLZXl3b3JkKGNzc1ByaW1pdGl2ZUVxdWl2YWxlbnQsIHNob3VsZFVz
ZUZpeGVkRm9udERlZmF1bHRTaXplLCAqZG9jdW1lbnQpID09IHBpeGVsRm9udFNpemUpCisgICAg
ICAgIGlmIChtb2RlID09IEFsd2F5c1VzZUxlZ2FjeUZvbnRTaXplIHx8IFN0eWxlOjpmb250U2l6
ZUZvcktleXdvcmQoY3NzUHJpbWl0aXZlRXF1aXZhbGVudCwgc2hvdWxkVXNlRml4ZWRGb250RGVm
YXVsdFNpemUsIGRvY3VtZW50KSA9PSBwaXhlbEZvbnRTaXplKQogICAgICAgICAgICAgcmV0dXJu
IGxlZ2FjeUZvbnRTaXplOwogCiAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmdTdHlsZS5oCShyZXZpc2lvbiAyMzQxMDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcg
QEAgcHVibGljOgogICAgIGJvb2wgdGV4dERpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uJikgY29u
c3Q7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTdHlsZShSZWZQdHI8
TXV0YWJsZVN0eWxlUHJvcGVydGllcz4mJik7Ci0gICAgdm9pZCBvdmVycmlkZVdpdGhTdHlsZShj
b25zdCBTdHlsZVByb3BlcnRpZXMqKTsKKyAgICB2b2lkIG92ZXJyaWRlV2l0aFN0eWxlKGNvbnN0
IFN0eWxlUHJvcGVydGllcyYpOwogICAgIHZvaWQgb3ZlcnJpZGVUeXBpbmdTdHlsZUF0KGNvbnN0
IEVkaXRpbmdTdHlsZSYsIGNvbnN0IFBvc2l0aW9uJik7CiAgICAgdm9pZCBjbGVhcigpOwogICAg
IFJlZjxFZGl0aW5nU3R5bGU+IGNvcHkoKSBjb25zdDsKQEAgLTEyNywyNSArMTI3LDIzIEBAIHB1
YmxpYzoKICAgICBlbnVtIFNob3VsZElnbm9yZVRleHRPbmx5UHJvcGVydGllcyB7IElnbm9yZVRl
eHRPbmx5UHJvcGVydGllcywgRG9Ob3RJZ25vcmVUZXh0T25seVByb3BlcnRpZXMgfTsKICAgICBU
cmlTdGF0ZSB0cmlTdGF0ZU9mU3R5bGUoRWRpdGluZ1N0eWxlKikgY29uc3Q7CiAgICAgVHJpU3Rh
dGUgdHJpU3RhdGVPZlN0eWxlKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBjb25zdDsKLSAgICBi
b29sIGNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVt
ZW50KSBjb25zdCB7IHJldHVybiBjb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQoZWxl
bWVudCwgMCwgMCk7IH0KLSAgICBib29sIGNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVu
dChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4m
IG5ld0lubGluZVN0eWxlLAotICAgICAgICBFZGl0aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlKSBj
b25zdAorICAgIGJvb2wgY29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVs
ZW1lbnQmIGVsZW1lbnQpIGNvbnN0IHsgcmV0dXJuIGNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9m
RWxlbWVudChlbGVtZW50LCBudWxscHRyLCBudWxscHRyKTsgfQorICAgIGJvb2wgY29uZmxpY3Rz
V2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQsIFJlZlB0cjxN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiYgbmV3SW5saW5lU3R5bGUsIEVkaXRpbmdTdHlsZSogZXh0
cmFjdGVkU3R5bGUpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gY29uZmxpY3RzV2l0aElu
bGluZVN0eWxlT2ZFbGVtZW50KGVsZW1lbnQsICZuZXdJbmxpbmVTdHlsZSwgZXh0cmFjdGVkU3R5
bGUpOwogICAgIH0KLSAgICBib29sIGNvbmZsaWN0c1dpdGhJbXBsaWNpdFN0eWxlT2ZFbGVtZW50
KEhUTUxFbGVtZW50KiwgRWRpdGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSA9IG51bGxwdHIsIFNo
b3VsZEV4dHJhY3RNYXRjaGluZ1N0eWxlID0gRG9Ob3RFeHRyYWN0TWF0Y2hpbmdTdHlsZSkgY29u
c3Q7Ci0gICAgYm9vbCBjb25mbGljdHNXaXRoSW1wbGljaXRTdHlsZU9mQXR0cmlidXRlcyhIVE1M
RWxlbWVudCopIGNvbnN0OwotICAgIGJvb2wgZXh0cmFjdENvbmZsaWN0aW5nSW1wbGljaXRTdHls
ZU9mQXR0cmlidXRlcyhIVE1MRWxlbWVudCosIFNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlv
biwgRWRpdGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSwKLSAgICAgICAgICAgIFZlY3RvcjxRdWFs
aWZpZWROYW1lPiYgY29uZmxpY3RpbmdBdHRyaWJ1dGVzLCBTaG91bGRFeHRyYWN0TWF0Y2hpbmdT
dHlsZSkgY29uc3Q7Ci0gICAgYm9vbCBzdHlsZUlzUHJlc2VudEluQ29tcHV0ZWRTdHlsZU9mTm9k
ZShOb2RlKikgY29uc3Q7CisgICAgYm9vbCBjb25mbGljdHNXaXRoSW1wbGljaXRTdHlsZU9mRWxl
bWVudChIVE1MRWxlbWVudCYsIEVkaXRpbmdTdHlsZSogZXh0cmFjdGVkU3R5bGUgPSBudWxscHRy
LCBTaG91bGRFeHRyYWN0TWF0Y2hpbmdTdHlsZSA9IERvTm90RXh0cmFjdE1hdGNoaW5nU3R5bGUp
IGNvbnN0OworICAgIGJvb2wgY29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkF0dHJpYnV0ZXMo
SFRNTEVsZW1lbnQmKSBjb25zdDsKKyAgICBib29sIGV4dHJhY3RDb25mbGljdGluZ0ltcGxpY2l0
U3R5bGVPZkF0dHJpYnV0ZXMoSFRNTEVsZW1lbnQmLCBTaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJl
Y3Rpb24sIEVkaXRpbmdTdHlsZSogZXh0cmFjdGVkU3R5bGUsIFZlY3RvcjxRdWFsaWZpZWROYW1l
PiYgY29uZmxpY3RpbmdBdHRyaWJ1dGVzLCBTaG91bGRFeHRyYWN0TWF0Y2hpbmdTdHlsZSkgY29u
c3Q7CisgICAgYm9vbCBzdHlsZUlzUHJlc2VudEluQ29tcHV0ZWRTdHlsZU9mTm9kZShOb2RlJikg
Y29uc3Q7CiAKLSAgICBzdGF0aWMgYm9vbCBlbGVtZW50SXNTdHlsZWRTcGFuT3JIVE1MRXF1aXZh
bGVudChjb25zdCBIVE1MRWxlbWVudCopOworICAgIHN0YXRpYyBib29sIGVsZW1lbnRJc1N0eWxl
ZFNwYW5PckhUTUxFcXVpdmFsZW50KGNvbnN0IEhUTUxFbGVtZW50Jik7CiAKICAgICB2b2lkIHBy
ZXBhcmVUb0FwcGx5QXQoY29uc3QgUG9zaXRpb24mLCBTaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJl
Y3Rpb24gPSBEb05vdFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbik7CiAgICAgdm9pZCBtZXJnZVR5
cGluZ1N0eWxlKERvY3VtZW50Jik7CiAgICAgZW51bSBDU1NQcm9wZXJ0eU92ZXJyaWRlTW9kZSB7
IE92ZXJyaWRlVmFsdWVzLCBEb05vdE92ZXJyaWRlVmFsdWVzIH07Ci0gICAgdm9pZCBtZXJnZUlu
bGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQqLCBDU1NQcm9wZXJ0eU92ZXJyaWRlTW9k
ZSwgUHJvcGVydGllc1RvSW5jbHVkZSA9IEFsbFByb3BlcnRpZXMpOwotICAgIHN0YXRpYyBSZWY8
RWRpdGluZ1N0eWxlPiB3cmFwcGluZ1N0eWxlRm9yU2VyaWFsaXphdGlvbihOb2RlKiBjb250ZXh0
LCBib29sIHNob3VsZEFubm90YXRlKTsKKyAgICB2b2lkIG1lcmdlSW5saW5lU3R5bGVPZkVsZW1l
bnQoU3R5bGVkRWxlbWVudCYsIENTU1Byb3BlcnR5T3ZlcnJpZGVNb2RlLCBQcm9wZXJ0aWVzVG9J
bmNsdWRlID0gQWxsUHJvcGVydGllcyk7CisgICAgc3RhdGljIFJlZjxFZGl0aW5nU3R5bGU+IHdy
YXBwaW5nU3R5bGVGb3JTZXJpYWxpemF0aW9uKE5vZGUmIGNvbnRleHQsIGJvb2wgc2hvdWxkQW5u
b3RhdGUpOwogICAgIHZvaWQgbWVyZ2VTdHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50Jik7CiAg
ICAgdm9pZCBtZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRFbGVtZW50
Jik7CiAgICAgdm9pZCByZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQoU3R5bGVkRWxlbWVu
dCYsIE5vZGUqIGNvbnRleHQpOwpAQCAtMTUzLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGZvcmNlSW5saW5lKCk7CiAgICAgYm9vbCBjb252ZXJ0UG9zaXRpb25TdHlsZSgpOwogICAgIGJv
b2wgaXNGbG9hdGluZygpOwotICAgIGludCBsZWdhY3lGb250U2l6ZShEb2N1bWVudCopIGNvbnN0
OworICAgIGludCBsZWdhY3lGb250U2l6ZShEb2N1bWVudCYpIGNvbnN0OwogCiAgICAgZmxvYXQg
Zm9udFNpemVEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNpemVEZWx0YTsgfQogICAgIGJv
b2wgaGFzRm9udFNpemVEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNpemVEZWx0YSAhPSBO
b0ZvbnREZWx0YTsgfQpAQCAtMTgzLDcgKzE4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFu
dCA9IGZhbHNlKTsKICAgICB2b2lkIGV4dHJhY3RGb250U2l6ZURlbHRhKCk7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gVHJpU3RhdGUgdHJpU3RhdGVPZlN0eWxlKFQmIHN0eWxlVG9Db21wYXJl
LCBTaG91bGRJZ25vcmVUZXh0T25seVByb3BlcnRpZXMpIGNvbnN0OwotICAgIGJvb2wgY29uZmxp
Y3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQqLCBSZWZQdHI8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4qIG5ld0lubGluZVN0eWxlLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3Rl
ZFN0eWxlKSBjb25zdDsKKyAgICBib29sIGNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVu
dChTdHlsZWRFbGVtZW50JiwgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+KiBuZXdJbmxp
bmVTdHlsZSwgRWRpdGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSkgY29uc3Q7CiAgICAgdm9pZCBt
ZXJnZUlubGluZUFuZEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCYsIENTU1By
b3BlcnR5T3ZlcnJpZGVNb2RlLCBQcm9wZXJ0aWVzVG9JbmNsdWRlKTsKICAgICB2b2lkIG1lcmdl
U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiwgQ1NTUHJvcGVydHlPdmVycmlkZU1vZGUpOwog
CkBAIC0yMjQsNyArMjIyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7CiAgICAgfQogcHJpdmF0ZToKLSAgICB2b2lkIGV4dHJhY3RUZXh0U3R5bGVzKERvY3Vt
ZW50KiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYsIGJvb2wgc2hvdWxkVXNlRml4ZWRGb250RGVm
YXVsdFNpemUpOworICAgIHZvaWQgZXh0cmFjdFRleHRTdHlsZXMoRG9jdW1lbnQmLCBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzJiwgYm9vbCBzaG91bGRVc2VGaXhlZEZvbnREZWZhdWx0U2l6ZSk7CiAK
ICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gbV9jc3NTdHlsZTsKICAgICBib29s
IG1fYXBwbHlCb2xkID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShy
ZXZpc2lvbiAyMzQxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMDUsNyArMTAwNSw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlv
blN0YXJ0Q1NTUHJvcGVydHkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaWYgKHBy
b3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlGb250U2l6ZSkKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6
bnVtYmVyKHNlbGVjdGlvblN0eWxlLT5sZWdhY3lGb250U2l6ZSgmZG9jdW1lbnQoKSkpOworICAg
ICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoc2VsZWN0aW9uU3R5bGUtPmxlZ2FjeUZvbnRTaXpl
KGRvY3VtZW50KCkpKTsKICAgICByZXR1cm4gc2VsZWN0aW9uU3R5bGUtPnN0eWxlKCktPmdldFBy
b3BlcnR5VmFsdWUocHJvcGVydHlJRCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzQxMDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTAyLDEzICs1MDIsMTIgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6cmVtb3ZlUmVkdQogICAgICAgICAgICAgICAgIFZlY3RvcjxRdWFsaWZpZWROYW1l
PiBhdHRyaWJ1dGVzOwogICAgICAgICAgICAgICAgIEhUTUxFbGVtZW50JiBodG1sRWxlbWVudCA9
IGRvd25jYXN0PEhUTUxFbGVtZW50PigqZWxlbWVudCk7CiAKLSAgICAgICAgICAgICAgICBpZiAo
bmV3SW5saW5lU3R5bGUtPmNvbmZsaWN0c1dpdGhJbXBsaWNpdFN0eWxlT2ZFbGVtZW50KCZodG1s
RWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobmV3SW5saW5lU3R5bGUtPmNvbmZsaWN0
c1dpdGhJbXBsaWNpdFN0eWxlT2ZFbGVtZW50KGh0bWxFbGVtZW50KSkgewogICAgICAgICAgICAg
ICAgICAgICAvLyBlLmcuIDxiIHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsOyI+IGlzIGNvbnZl
cnRlZCB0byA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsiPgogICAgICAgICAgICAg
ICAgICAgICBub2RlID0gcmVwbGFjZUVsZW1lbnRXaXRoU3BhblByZXNlcnZpbmdDaGlsZHJlbkFu
ZEF0dHJpYnV0ZXMoaHRtbEVsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4obm9kZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGluc2VydGVkTm9kZXMuZGlkUmVwbGFjZU5vZGUoJmh0bWxFbGVtZW50LCBub2RlLmdldCgpKTsK
LSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5ld0lubGluZVN0eWxlLT5leHRyYWN0Q29uZmxp
Y3RpbmdJbXBsaWNpdFN0eWxlT2ZBdHRyaWJ1dGVzKCZodG1sRWxlbWVudCwgRWRpdGluZ1N0eWxl
OjpQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24sIDAsIGF0dHJpYnV0ZXMsCi0gICAgICAgICAgICAg
ICAgICAgIEVkaXRpbmdTdHlsZTo6RG9Ob3RFeHRyYWN0TWF0Y2hpbmdTdHlsZSkpIHsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKG5ld0lubGluZVN0eWxlLT5leHRyYWN0Q29uZmxpY3RpbmdJ
bXBsaWNpdFN0eWxlT2ZBdHRyaWJ1dGVzKGh0bWxFbGVtZW50LCBFZGl0aW5nU3R5bGU6OlByZXNl
cnZlV3JpdGluZ0RpcmVjdGlvbiwgbnVsbHB0ciwgYXR0cmlidXRlcywgRWRpdGluZ1N0eWxlOjpE
b05vdEV4dHJhY3RNYXRjaGluZ1N0eWxlKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBlLmcu
IDxmb250IHNpemU9IjMiIHN0eWxlPSJmb250LXNpemU6IDIwcHg7Ij4gaXMgY29udmVydGVkIHRv
IDxmb250IHN0eWxlPSJmb250LXNpemU6IDIwcHg7Ij4KICAgICAgICAgICAgICAgICAgICAgZm9y
IChhdXRvJiBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGVzKQogICAgICAgICAgICAgICAgICAgICAgICAg
cmVtb3ZlTm9kZUF0dHJpYnV0ZSgqZWxlbWVudCwgYXR0cmlidXRlKTsKQEAgLTkwOSw3ICs5MDgs
NyBAQCBzdGF0aWMgYm9vbCBpc0lubGluZU5vZGVXaXRoU3R5bGUoY29uc3QgCiAgICAgICAgIHx8
IGNsYXNzQXR0cmlidXRlVmFsdWUgPT0gQXBwbGVQYXN0ZUFzUXVvdGF0aW9uKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBFZGl0aW5nU3R5bGU6OmVsZW1lbnRJc1N0eWxlZFNw
YW5PckhUTUxFcXVpdmFsZW50KGVsZW1lbnQpOworICAgIHJldHVybiBFZGl0aW5nU3R5bGU6OmVs
ZW1lbnRJc1N0eWxlZFNwYW5PckhUTUxFcXVpdmFsZW50KCplbGVtZW50KTsKIH0KIAogaW5saW5l
IE5vZGUqIG5vZGVUb1NwbGl0VG9Bdm9pZFBhc3RpbmdJbnRvSW5saW5lTm9kZXNXaXRoU3R5bGUo
Y29uc3QgUG9zaXRpb24mIGluc2VydGlvblBvcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAJKHJldmlzaW9uIDIzNDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY2LDcgKzQ2Niw3IEBAIHZvaWQgU3R5bGVkTWFya3Vw
QWNjdW11bGF0b3I6OmFwcGVuZEVsZW0KICAgICAgICAgICAgIG5ld0lubGluZVN0eWxlID0gRWRp
dGluZ1N0eWxlOjpjcmVhdGUoKTsKIAogICAgICAgICBpZiAoaXM8U3R5bGVkRWxlbWVudD4oZWxl
bWVudCkgJiYgZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oZWxlbWVudCkuaW5saW5lU3R5bGUoKSkK
LSAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5vdmVycmlkZVdpdGhTdHlsZShkb3duY2FzdDxT
dHlsZWRFbGVtZW50PihlbGVtZW50KS5pbmxpbmVTdHlsZSgpKTsKKyAgICAgICAgICAgIG5ld0lu
bGluZVN0eWxlLT5vdmVycmlkZVdpdGhTdHlsZSgqZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oZWxl
bWVudCkuaW5saW5lU3R5bGUoKSk7CiAKICAgICAgICAgaWYgKHNob3VsZEFubm90YXRlT3JGb3Jj
ZUlubGluZSkgewogICAgICAgICAgICAgaWYgKHNob3VsZEFubm90YXRlKCkpCkBAIC01MDQsNyAr
NTA0LDcgQEAgTm9kZSogU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZQogICAgIH0K
IAogICAgIGlmIChtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgJiYgbV9oaWdoZXN0Tm9kZVRv
QmVTZXJpYWxpemVkLT5wYXJlbnROb2RlKCkpCi0gICAgICAgIG1fd3JhcHBpbmdTdHlsZSA9IEVk
aXRpbmdTdHlsZTo6d3JhcHBpbmdTdHlsZUZvclNlcmlhbGl6YXRpb24obV9oaWdoZXN0Tm9kZVRv
QmVTZXJpYWxpemVkLT5wYXJlbnROb2RlKCksIHNob3VsZEFubm90YXRlKCkpOworICAgICAgICBt
X3dyYXBwaW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OndyYXBwaW5nU3R5bGVGb3JTZXJpYWxpemF0
aW9uKCptX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQtPnBhcmVudE5vZGUoKSwgc2hvdWxkQW5u
b3RhdGUoKSk7CiAKICAgICByZXR1cm4gdHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6YXRpb24oc3Rh
cnROb2RlLCBwYXN0RW5kLCBFbWl0U3RyaW5nKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>