<?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>178889</bug_id>
          
          <creation_ts>2017-10-26 15:07:49 -0700</creation_ts>
          <short_desc>Remove unneeded block selection calculation code</short_desc>
          <delta_ts>2017-10-26 16:51:19 -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="Megan Gardner">megan_gardner</reporter>
          <assigned_to name="Megan Gardner">megan_gardner</assigned_to>
          <cc>aestes</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1365046</commentid>
    <comment_count>0</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-10-26 15:07:49 -0700</bug_when>
    <thetext>Remove unneeded block selection calculation code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365050</commentid>
    <comment_count>1</comment_count>
      <attachid>325064</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-10-26 15:12:49 -0700</bug_when>
    <thetext>Created attachment 325064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365051</commentid>
    <comment_count>2</comment_count>
      <attachid>325064</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-10-26 15:15:17 -0700</bug_when>
    <thetext>Comment on attachment 325064
Patch

Woo!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365106</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-26 16:44:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/35210756&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365113</commentid>
    <comment_count>4</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-10-26 16:51:19 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/224068/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325064</attachid>
            <date>2017-10-26 15:12:49 -0700</date>
            <delta_ts>2017-10-26 15:15:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178889-20171026151248.patch</filename>
            <type>text/plain</type>
            <size>22481</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjQwNTMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE3LTEwLTI2ICBNZWdhbiBHYXJk
bmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVubmVlZGVk
IGJsb2NrIHNlbGVjdGlvbiBjYWxjdWxhdGlvbiBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg4ODkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmluZyBtb3JlIGJsb2NrIHNlbGVjdGlvbiBj
b2RlLiBNdWNoIG9mIHRoaXMgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkCisgICAgICAgIGJlZm9y
ZSwgYXMgdGhlIG9ubHkgdGhpbmdzIHRoYXQgd2VyZSB1c2luZyB0aGVzZSBmdW5jdGlvbnMgd2Vy
ZSByZW1vdmVkIGluIHRoZQorICAgICAgICBsYXN0IHBhdGNoLiBBbHNvIHJlbW92ZSB0aGUgY29k
ZSBkZWNpZGVkIGlmIHlvdSBzaG91bGQgbW92ZSB0byBibG9jayBtb2RlIG9yIG5vdCwKKyAgICAg
ICAgYXMgdGhlIGFuc3dlciBub3cgaXMgYWx3YXlzIE5PLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldp
dGhUb3VjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmFuZ2VGb3JCbG9ja0F0UG9p
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpkaXN0YW5jZUJldHdlZW5SZWN0c0ZvclBv
c2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6cmVjdHNFc3NlbnRpYWxseVRoZVNh
bWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0Ojp1bmlvbkRPTVJhbmdlcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OmNvbXB1dGVFZGdlQ2VudGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6ZXhwYW5kZWRSYW5nZUZyb21IYW5kbGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb250cmFjdGVkUmFuZ2VGcm9tSGFuZGxlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0ZUV4cGFuZEFuZFNocmlua1RocmVz
aG9sZHNGb3JIYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzd2l0
Y2hUb0Jsb2NrU2VsZWN0aW9uQXRQb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNob3VsZFN3aXRjaFRvQmxvY2tNb2RlRm9ySGFuZGxlKTogRGVsZXRlZC4KKwogMjAx
Ny0xMC0yNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW1BheW1l
bnQgUmVxdWVzdF0gRW5hYmxlIFBheW1lbnQgUmVxdWVzdCB3aGVuZXZlciBBcHBsZSBQYXkgaXMg
ZW5hYmxlZApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAkocmV2aXNpb24gMjI0MDI5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIzLDEwICsxMDIzLDYgQEAgcHJpdmF0ZToK
IAogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRTZWxlY3Rpb25SZWN0c1RvUm9vdFZpZXcoV2ViQ29y
ZTo6RnJhbWVWaWV3KiwgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+Jik7CiAgICAgUmVm
UHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZUZvcldlYlNlbGVjdGlvbkF0UG9zaXRpb24oY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24mLCBTZWxl
Y3Rpb25GbGFncyYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2VGb3JCbG9ja0F0
UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKLSAgICB2b2lkIGNvbXB1dGVFeHBhbmRB
bmRTaHJpbmtUaHJlc2hvbGRzRm9ySGFuZGxlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2Vs
ZWN0aW9uSGFuZGxlUG9zaXRpb24sIGZsb2F0JiBncm93VGhyZXNob2xkLCBmbG9hdCYgc2hyaW5r
VGhyZXNob2xkKTsKLSAgICBSZWY8V2ViQ29yZTo6UmFuZ2U+IGV4cGFuZGVkUmFuZ2VGcm9tSGFu
ZGxlKFdlYkNvcmU6OlJhbmdlJiwgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb24pOwotICAgIFJlZjxX
ZWJDb3JlOjpSYW5nZT4gY29udHJhY3RlZFJhbmdlRnJvbUhhbmRsZShXZWJDb3JlOjpSYW5nZSYg
Y3VycmVudFJhbmdlLCBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbiwgU2VsZWN0aW9uRmxhZ3MmKTsK
ICAgICB2b2lkIGdldEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uKEFzc2lzdGVkTm9kZUluZm9ybWF0
aW9uJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7CiAgICAg
dm9pZCBoYW5kbGVTeW50aGV0aWNDbGljayhXZWJDb3JlOjpOb2RlKiBub2RlUmVzcG9uZGluZ1Rv
Q2xpY2ssIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0aW9uKTsKQEAgLTEwMzUsOCAr
MTAzMSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNldFRleHRBdXRvc2l6aW5nKCk7CiAgICAg
V2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQ
b2ludChjb25zdCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJh
bmdlPiByYW5nZUZvckdyYW51bGFyaXR5QXRQb2ludChXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhBc3Npc3RlZE5vZGUpOwotICAgIGJvb2wgc2hvdWxkU3dpdGNoVG9CbG9ja01vZGVGb3JI
YW5kbGUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGhhbmRsZVBvaW50LCBTZWxlY3Rpb25IYW5k
bGVQb3NpdGlvbik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBzd2l0Y2hUb0Jsb2NrU2Vs
ZWN0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFNlbGVjdGlvbkhhbmRsZVBv
c2l0aW9uKTsKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKICAgICB2b2lkIHJlcXVlc3RT
dGFydERhdGFJbnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRp
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbik7CiAgICAgdm9pZCBy
ZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24pOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDIyNDAyOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05ODMsMTMg
Kzk4Myw2IEBAIHN0YXRpYyBib29sIGNhblNocmlua1RvVGV4dFNlbGVjdGlvbihOb2QKICAgICBy
ZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXItPmNoaWxkcmVuSW5saW5lKCkgJiYgKGlzPFJlbmRl
ckJsb2NrPigqcmVuZGVyZXIpICYmICFkb3duY2FzdDxSZW5kZXJCbG9jaz4oKnJlbmRlcmVyKS5p
bmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkpICYmICFyZW5kZXJlci0+aXNUYWJsZSgpOwogfQog
Ci1zdGF0aWMgYm9vbCBjYW5TaHJpbmtUb1RleHRTZWxlY3Rpb24oUmFuZ2UmIHJhbmdlKQotewot
ICAgIGlmIChyYW5nZS5zdGFydENvbnRhaW5lcigpLmlzVGV4dE5vZGUoKSAmJiByYW5nZS5lbmRD
b250YWluZXIoKS5pc1RleHROb2RlKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVy
biBjYW5TaHJpbmtUb1RleHRTZWxlY3Rpb24ocmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIo
KSk7Ci19Ci0KIHN0YXRpYyBib29sIGhhc0N1c3RvbUxpbmVIZWlnaHQoTm9kZSYgbm9kZSkKIHsK
ICAgICBhdXRvKiByZW5kZXJlciA9IG5vZGUucmVuZGVyZXIoKTsKQEAgLTEwNjgsMzAgKzEwNjEs
NiBAQCBSZWZQdHI8UmFuZ2U+IFdlYlBhZ2U6OnJhbmdlRm9yV2ViU2VsZWN0CiAgICAgcmV0dXJu
IHJhbmdlLT5jb2xsYXBzZWQoKSA/IG51bGxwdHIgOiByYW5nZTsKIH0KIAotUmVmUHRyPFJhbmdl
PiBXZWJQYWdlOjpyYW5nZUZvckJsb2NrQXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQpCi17
Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFu
ZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KChwb2ludCksIEhpdFRlc3RSZXF1ZXN0OjpSZWFk
T25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dV
c2VyQWdlbnRTaGFkb3dDb250ZW50IHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nKTsK
LQotICAgIE5vZGUqIGN1cnJlbnROb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwotICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2U7Ci0KLSAgICBpZiAoY3VycmVudE5vZGUtPmlzVGV4dE5vZGUoKSkgewot
ICAgICAgICByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLnZpc2libGVQb3NpdGlvbkZvclBv
aW50KHBvaW50KSwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOwotICAg
ICAgICBpZiAocmFuZ2UgJiYgIXJhbmdlLT5jb2xsYXBzZWQoKSkKLSAgICAgICAgICAgIHJldHVy
biByYW5nZTsKLSAgICB9Ci0KLSAgICBpZiAoIWN1cnJlbnROb2RlLT5pc0VsZW1lbnROb2RlKCkp
Ci0gICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnBhcmVudEVsZW1lbnQoKTsKLQot
ICAgIGlmICghY3VycmVudE5vZGUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKGN1cnJlbnROb2RlLT5kb2N1bWVudCgpKTsKLSAgICByYW5nZS0+
c2VsZWN0Tm9kZUNvbnRlbnRzKCpjdXJyZW50Tm9kZSk7Ci0gICAgcmV0dXJuIHJhbmdlOwotfQot
CiB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwg
dWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0
dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CkBAIC0xMzA3LDQwNiArMTI3NiwxMiBAQCBzdGF0aWMg
UmVmUHRyPFJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5CiAgICAgcmV0dXJuIChiYXNlIDwgZXh0
ZW50KSA/IFJhbmdlOjpjcmVhdGUoKmZyYW1lLT5kb2N1bWVudCgpLCBiYXNlLCBleHRlbnQpIDog
UmFuZ2U6OmNyZWF0ZSgqZnJhbWUtPmRvY3VtZW50KCksIGV4dGVudCwgYmFzZSk7CiB9CiAKLXN0
YXRpYyBjb25zdCBpbnQgbWF4SGl0VGVzdHMgPSAxMDsKLQotc3RhdGljIGlubGluZSBmbG9hdCBk
aXN0YW5jZUJldHdlZW5SZWN0c0ZvclBvc2l0aW9uKEludFJlY3QmIGZpcnN0LCBJbnRSZWN0JiBz
ZWNvbmQsIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uIGhhbmRsZVBvc2l0aW9uKQotewotICAgIHN3
aXRjaCAoaGFuZGxlUG9zaXRpb24pIHsKLSAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9u
OjpUb3A6Ci0gICAgICAgIHJldHVybiBhYnMoZmlyc3QueSgpIC0gc2Vjb25kLnkoKSk7Ci0gICAg
Y2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6UmlnaHQ6Ci0gICAgICAgIHJldHVybiBhYnMo
Zmlyc3QubWF4WCgpIC0gc2Vjb25kLm1heFgoKSk7Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQ
b3NpdGlvbjo6Qm90dG9tOgotICAgICAgICByZXR1cm4gYWJzKGZpcnN0Lm1heFkoKSAtIHNlY29u
ZC5tYXhZKCkpOwotICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkxlZnQ6Ci0gICAg
ICAgIHJldHVybiBhYnMoZmlyc3QueCgpIC0gc2Vjb25kLngoKSk7Ci0gICAgfQotfQotCi1zdGF0
aWMgaW5saW5lIGJvb2wgcmVjdHNFc3NlbnRpYWxseVRoZVNhbWUoSW50UmVjdCYgZmlyc3QsIElu
dFJlY3QmIHNlY29uZCwgZmxvYXQgYWxsb3dhYmxlUGVyY2VudERpZmZlcmVuY2UpCi17Ci0gICAg
Y29uc3QgZmxvYXQgbWluTWFnbml0dWRlUmF0aW8gPSAxLjAgLSBhbGxvd2FibGVQZXJjZW50RGlm
ZmVyZW5jZTsKLSAgICBjb25zdCBmbG9hdCBtYXhEaXNwbGFjZW1lbnRSYXRpbyA9IGFsbG93YWJs
ZVBlcmNlbnREaWZmZXJlbmNlOwotCi0gICAgZmxvYXQgeE9yaWdpblNoaWZ0UmF0aW8gPSBhYnMo
Zmlyc3QueCgpIC0gc2Vjb25kLngoKSkvc3RkOjptaW4oZmlyc3Qud2lkdGgoKSwgc2Vjb25kLndp
ZHRoKCkpOwotICAgIGZsb2F0IHlPcmlnaW5TaGlmdFJhdGlvID0gYWJzKGZpcnN0LnkoKSAtIHNl
Y29uZC55KCkpL3N0ZDo6bWluKGZpcnN0LmhlaWdodCgpLCBzZWNvbmQuaGVpZ2h0KCkpOwotCi0g
ICAgZmxvYXQgd2lkdGhSYXRpbyA9IHN0ZDo6bWluKGZpcnN0LndpZHRoKCkgLyBzZWNvbmQud2lk
dGgoKSwgc2Vjb25kLndpZHRoKCkgLyBmaXJzdC53aWR0aCgpKTsKLSAgICBmbG9hdCBoZWlnaHRS
YXRpbyA9IHN0ZDo6bWluKGZpcnN0LmhlaWdodCgpIC8gc2Vjb25kLmhlaWdodCgpLCBzZWNvbmQu
aGVpZ2h0KCkgLyBmaXJzdC5oZWlnaHQoKSk7Ci0gICAgcmV0dXJuICgod2lkdGhSYXRpbyA+IG1p
bk1hZ25pdHVkZVJhdGlvICYmIHhPcmlnaW5TaGlmdFJhdGlvIDwgbWF4RGlzcGxhY2VtZW50UmF0
aW8pCi0gICAgICAgICYmIChoZWlnaHRSYXRpbyA+IG1pbk1hZ25pdHVkZVJhdGlvICYmIHlPcmln
aW5TaGlmdFJhdGlvIDwgbWF4RGlzcGxhY2VtZW50UmF0aW8pKTsKLX0KLQotc3RhdGljIGlubGlu
ZSBSZWZQdHI8UmFuZ2U+IHVuaW9uRE9NUmFuZ2VzKFJhbmdlKiByYW5nZUEsIFJhbmdlKiByYW5n
ZUIpCi17Ci0gICAgaWYgKCFyYW5nZUIpCi0gICAgICAgIHJldHVybiByYW5nZUE7Ci0gICAgaWYg
KCFyYW5nZUEpCi0gICAgICAgIHJldHVybiByYW5nZUI7Ci0KLSAgICBhdXRvIHN0YXJ0VG9TdGFy
dENvbXBhcmlzb24gPSByYW5nZUEtPmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZTo6U1RBUlRf
VE9fU1RBUlQsICpyYW5nZUIpOwotICAgIGlmIChzdGFydFRvU3RhcnRDb21wYXJpc29uLmhhc0V4
Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gZW5kVG9FbmRD
b21wYXJpc29uID0gcmFuZ2VBLT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OkVORF9UT19F
TkQsICpyYW5nZUIpOwotICAgIGlmIChlbmRUb0VuZENvbXBhcmlzb24uaGFzRXhjZXB0aW9uKCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byogc3RhcnQgPSBzdGFydFRvU3Rh
cnRDb21wYXJpc29uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpIDw9IDAgPyByYW5nZUEgOiByYW5nZUI7
Ci0gICAgYXV0byogZW5kID0gZW5kVG9FbmRDb21wYXJpc29uLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
IDw9IDAgPyByYW5nZUIgOiByYW5nZUE7Ci0KLSAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZShyYW5n
ZUEtPm93bmVyRG9jdW1lbnQoKSwgJnN0YXJ0LT5zdGFydENvbnRhaW5lcigpLCBzdGFydC0+c3Rh
cnRPZmZzZXQoKSwgJmVuZC0+ZW5kQ29udGFpbmVyKCksIGVuZC0+ZW5kT2Zmc2V0KCkpOwotfQot
Ci1zdGF0aWMgaW5saW5lIEludFBvaW50IGNvbXB1dGVFZGdlQ2VudGVyKGNvbnN0IEludFJlY3Qm
IGJveCwgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb24gaGFuZGxlUG9zaXRpb24pCi17Ci0gICAgc3dp
dGNoIChoYW5kbGVQb3NpdGlvbikgewotICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246
OlRvcDoKLSAgICAgICAgcmV0dXJuIEludFBvaW50KGJveC54KCkgKyBib3gud2lkdGgoKSAvIDIs
IGJveC55KCkpOwotICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlJpZ2h0OgotICAg
ICAgICByZXR1cm4gSW50UG9pbnQoYm94Lm1heFgoKSwgYm94LnkoKSArIGJveC5oZWlnaHQoKSAv
IDIpOwotICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkJvdHRvbToKLSAgICAgICAg
cmV0dXJuIEludFBvaW50KGJveC54KCkgKyBib3gud2lkdGgoKSAvIDIsIGJveC5tYXhZKCkpOwot
ICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkxlZnQ6Ci0gICAgICAgIHJldHVybiBJ
bnRQb2ludChib3gueCgpLCBib3gueSgpICsgYm94LmhlaWdodCgpIC8gMik7Ci0gICAgfQotfQot
Ci1SZWY8UmFuZ2U+IFdlYlBhZ2U6OmV4cGFuZGVkUmFuZ2VGcm9tSGFuZGxlKFJhbmdlJiBjdXJy
ZW50UmFuZ2UsIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uIGhhbmRsZVBvc2l0aW9uKQotewotICAg
IEludFJlY3QgY3VycmVudEJveCA9IHNlbGVjdGlvbkJveEZvclJhbmdlKCZjdXJyZW50UmFuZ2Up
OwotICAgIEludFBvaW50IGVkZ2VDZW50ZXIgPSBjb21wdXRlRWRnZUNlbnRlcihjdXJyZW50Qm94
LCBoYW5kbGVQb3NpdGlvbik7Ci0gICAgc3RhdGljIGNvbnN0IGZsb2F0IG1heERpc3RhbmNlID0g
MTAwMDsKLSAgICBjb25zdCBmbG9hdCBtdWx0aXBsZSA9IHBvd2YobWF4RGlzdGFuY2UsIDEuMC8o
bWF4SGl0VGVzdHMgLSAxKSk7Ci0gICAgZmxvYXQgZGlzdGFuY2UgPSAxOwotCi0gICAgUmVmUHRy
PFJhbmdlPiBiZXN0UmFuZ2U7Ci0gICAgSW50UmVjdCBiZXN0UmVjdDsKLQotICAgIHdoaWxlIChk
aXN0YW5jZSA8IG1heERpc3RhbmNlKSB7Ci0gICAgICAgIGlmIChiZXN0UmFuZ2UpIHsKLSAgICAg
ICAgICAgIGlmIChkaXN0YW5jZUJldHdlZW5SZWN0c0ZvclBvc2l0aW9uKGJlc3RSZWN0LCBjdXJy
ZW50Qm94LCBoYW5kbGVQb3NpdGlvbikgPCBkaXN0YW5jZSkgewotICAgICAgICAgICAgICAgIC8v
IEJyZWFrIGVhcmx5LCB3ZSdyZSB1bmxpa2VseSB0byBkbyBhbnkgYmV0dGVyLgotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgSW50UG9p
bnQgdGVzdFBvaW50ID0gZWRnZUNlbnRlcjsKLSAgICAgICAgc3dpdGNoIChoYW5kbGVQb3NpdGlv
bikgewotICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpUb3A6Ci0gICAgICAg
ICAgICB0ZXN0UG9pbnQubW92ZSgwLCAtZGlzdGFuY2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlJpZ2h0OgotICAgICAgICAgICAg
dGVzdFBvaW50Lm1vdmUoZGlzdGFuY2UsIDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkJvdHRvbToKLSAgICAgICAgICAgIHRlc3RQ
b2ludC5tb3ZlKDAsIGRpc3RhbmNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0OgotICAgICAgICAgICAgdGVzdFBvaW50Lm1v
dmUoLWRpc3RhbmNlLCAwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZGlzdGFuY2UgPSBjZWlsZihkaXN0YW5jZSAqIG11bHRpcGxlKTsKLQotICAgICAgICBSZWZQ
dHI8UmFuZ2U+IG5ld1JhbmdlOwotICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlQXRQb3NpdGlv
biA9IHJhbmdlRm9yQmxvY2tBdFBvaW50KHRlc3RQb2ludCk7Ci0gICAgICAgIGlmICghcmFuZ2VB
dFBvc2l0aW9uIHx8ICZjdXJyZW50UmFuZ2Uub3duZXJEb2N1bWVudCgpICE9ICZyYW5nZUF0UG9z
aXRpb24tPm93bmVyRG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
IGlmIChyYW5nZUF0UG9zaXRpb24tPmNvbnRhaW5zKGN1cnJlbnRSYW5nZSkpCi0gICAgICAgICAg
ICBuZXdSYW5nZSA9IHJhbmdlQXRQb3NpdGlvbjsKLSAgICAgICAgZWxzZSBpZiAoY3VycmVudFJh
bmdlLmNvbnRhaW5zKCpyYW5nZUF0UG9zaXRpb24uZ2V0KCkpKQotICAgICAgICAgICAgbmV3UmFu
Z2UgPSAmY3VycmVudFJhbmdlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXdSYW5nZSA9
IHVuaW9uRE9NUmFuZ2VzKCZjdXJyZW50UmFuZ2UsIHJhbmdlQXRQb3NpdGlvbi5nZXQoKSk7Ci0K
LSAgICAgICAgSW50UmVjdCBjb3B5UmVjdCA9IHNlbGVjdGlvbkJveEZvclJhbmdlKG5ld1Jhbmdl
LmdldCgpKTsKLQotICAgICAgICAvLyBJcyBpdCBkaWZmZXJlbnQgYW5kIGJpZ2dlciB0aGFuIHRo
ZSBjdXJyZW50PwotICAgICAgICBib29sIGlzQmV0dGVyQ2hvaWNlID0gIShyZWN0c0Vzc2VudGlh
bGx5VGhlU2FtZShjb3B5UmVjdCwgY3VycmVudEJveCwgLjA1KSk7Ci0gICAgICAgIGlmIChpc0Jl
dHRlckNob2ljZSkgewotICAgICAgICAgICAgc3dpdGNoIChoYW5kbGVQb3NpdGlvbikgewotICAg
ICAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9wOgotICAgICAgICAgICAg
Y2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tOgotICAgICAgICAgICAgICAgIGlz
QmV0dGVyQ2hvaWNlID0gKGNvcHlSZWN0LmhlaWdodCgpID4gY3VycmVudEJveC5oZWlnaHQoKSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRs
ZVBvc2l0aW9uOjpSaWdodDoKLSAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRp
b246OkxlZnQ6Ci0gICAgICAgICAgICAgICAgaXNCZXR0ZXJDaG9pY2UgPSAoY29weVJlY3Qud2lk
dGgoKSA+IGN1cnJlbnRCb3gud2lkdGgoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChiZXN0UmFuZ2UgJiYgaXNCZXR0
ZXJDaG9pY2UpIHsKLSAgICAgICAgICAgIC8vIEZ1cnRoZXJvcmUsIGlzIGl0IHNtYWxsZXIgdGhh
biB0aGUgYmVzdCB3ZSd2ZSBmb3VuZCBzbyBmYXI/Ci0gICAgICAgICAgICBzd2l0Y2ggKGhhbmRs
ZVBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpU
b3A6Ci0gICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpCb3R0b206Ci0g
ICAgICAgICAgICAgICAgaXNCZXR0ZXJDaG9pY2UgPSAoY29weVJlY3QuaGVpZ2h0KCkgPCBiZXN0
UmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpSaWdodDoKLSAgICAgICAgICAgIGNhc2UgU2VsZWN0
aW9uSGFuZGxlUG9zaXRpb246OkxlZnQ6Ci0gICAgICAgICAgICAgICAgaXNCZXR0ZXJDaG9pY2Ug
PSAoY29weVJlY3Qud2lkdGgoKSA8IGJlc3RSZWN0LndpZHRoKCkpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzQmV0dGVy
Q2hvaWNlKSB7Ci0gICAgICAgICAgICBiZXN0UmFuZ2UgPSBuZXdSYW5nZTsKLSAgICAgICAgICAg
IGJlc3RSZWN0ID0gY29weVJlY3Q7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoYmVzdFJh
bmdlKQotICAgICAgICByZXR1cm4gYmVzdFJhbmdlLnJlbGVhc2VOb25OdWxsKCk7Ci0KLSAgICBy
ZXR1cm4gY3VycmVudFJhbmdlOwotfQotCi1SZWY8UmFuZ2U+IFdlYlBhZ2U6OmNvbnRyYWN0ZWRS
YW5nZUZyb21IYW5kbGUoUmFuZ2UmIGN1cnJlbnRSYW5nZSwgU2VsZWN0aW9uSGFuZGxlUG9zaXRp
b24gaGFuZGxlUG9zaXRpb24sIFNlbGVjdGlvbkZsYWdzJiBmbGFncykKLXsKLSAgICAvLyBTaHJp
bmtpbmcgd2l0aCBhIGJhc2UgYW5kIGV4dGVudCB3aWxsIGFsd2F5cyBnaXZlIGJldHRlciByZXN1
bHRzLiBJZiB3ZSBvbmx5IGhhdmUgYSBzaW5nbGUgZWxlbWVudCwKLSAgICAvLyBzZWUgaWYgd2Ug
Y2FuIGJyZWFrIHRoYXQgZG93biB0byBhIGJhc2UgYW5kIGV4dGVudC4gU2hyaW5raW5nIGJhc2Ug
YW5kIGV4dGVudCBpcyBjb21wYXJhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZC4KLSAgICAvLyBTaHJp
bmtpbmcgZG93biB0byBhbm90aGVyIGVsZW1lbnQgaXMgdW5saWtlbHkgdG8gbW92ZSBqdXN0IG9u
ZSBlZGdlLCBidXQgd2UgY2FuIHRyeSB0aGF0IGFzIGEgZmFsbGJhY2suCi0KLSAgICBJbnRSZWN0
IGN1cnJlbnRCb3ggPSBzZWxlY3Rpb25Cb3hGb3JSYW5nZSgmY3VycmVudFJhbmdlKTsKLSAgICBJ
bnRQb2ludCBlZGdlQ2VudGVyID0gY29tcHV0ZUVkZ2VDZW50ZXIoY3VycmVudEJveCwgaGFuZGxl
UG9zaXRpb24pOwotCi0gICAgZmxvYXQgbWF4RGlzdGFuY2U7Ci0KLSAgICBzd2l0Y2ggKGhhbmRs
ZVBvc2l0aW9uKSB7Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9wOgotICAg
IGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkJvdHRvbToKLSAgICAgICAgbWF4RGlzdGFu
Y2UgPSBjdXJyZW50Qm94LmhlaWdodCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbGVj
dGlvbkhhbmRsZVBvc2l0aW9uOjpSaWdodDoKLSAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0
aW9uOjpMZWZ0OgotICAgICAgICBtYXhEaXN0YW5jZSA9IGN1cnJlbnRCb3gud2lkdGgoKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY29uc3QgZmxvYXQgbXVsdGlwbGUgPSBwb3dmKG1h
eERpc3RhbmNlIC0gMSwgMS4wLyhtYXhIaXRUZXN0cyAtIDEpKTsKLSAgICBmbG9hdCBkaXN0YW5j
ZSA9IDE7Ci0gICAgUmVmUHRyPFJhbmdlPiBiZXN0UmFuZ2U7Ci0gICAgSW50UmVjdCBiZXN0UmVj
dDsKLQotICAgIHdoaWxlIChkaXN0YW5jZSA8IG1heERpc3RhbmNlKSB7Ci0gICAgICAgIGlmIChi
ZXN0UmFuZ2UpIHsKLSAgICAgICAgICAgIGZsb2F0IHNocmFua0Rpc3RhbmNlOwotICAgICAgICAg
ICAgc3dpdGNoIChoYW5kbGVQb3NpdGlvbikgewotICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb25I
YW5kbGVQb3NpdGlvbjo6VG9wOgotICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3Np
dGlvbjo6Qm90dG9tOgotICAgICAgICAgICAgICAgIHNocmFua0Rpc3RhbmNlID0gYWJzKGN1cnJl
bnRCb3guaGVpZ2h0KCkgLSBiZXN0UmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpSaWdodDoKLSAg
ICAgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkxlZnQ6Ci0gICAgICAgICAg
ICAgICAgc2hyYW5rRGlzdGFuY2UgPSBhYnMoY3VycmVudEJveC53aWR0aCgpIC0gYmVzdFJlY3Qu
d2lkdGgoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoc2hyYW5rRGlzdGFuY2UgPiBkaXN0YW5jZSkgewotICAgICAgICAgICAgICAgIC8v
IENlcnRhaW5seSBub3QgZ29pbmcgdG8gZG8gYW55IGJldHRlciB0aGFuIHRoYXQuCi0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBJbnRQ
b2ludCB0ZXN0UG9pbnQgPSBlZGdlQ2VudGVyOwotICAgICAgICBzd2l0Y2ggKGhhbmRsZVBvc2l0
aW9uKSB7Ci0gICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlRvcDoKLSAgICAg
ICAgICAgIHRlc3RQb2ludC5tb3ZlKDAsIGRpc3RhbmNlKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpSaWdodDoKLSAgICAgICAgICAg
IHRlc3RQb2ludC5tb3ZlKC1kaXN0YW5jZSwgMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tOgotICAgICAgICAgICAgdGVz
dFBvaW50Lm1vdmUoMCwgLWRpc3RhbmNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0OgotICAgICAgICAgICAgdGVzdFBvaW50
Lm1vdmUoZGlzdGFuY2UsIDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAg
ICAgICBkaXN0YW5jZSAqPSBtdWx0aXBsZTsKLQotICAgICAgICBSZWZQdHI8UmFuZ2U+IG5ld1Jh
bmdlID0gcmFuZ2VGb3JCbG9ja0F0UG9pbnQodGVzdFBvaW50KTsKLSAgICAgICAgaWYgKCFuZXdS
YW5nZSB8fCAmbmV3UmFuZ2UtPm93bmVyRG9jdW1lbnQoKSAhPSAmY3VycmVudFJhbmdlLm93bmVy
RG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChoYW5kbGVQ
b3NpdGlvbiA9PSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9wIHx8IGhhbmRsZVBvc2l0aW9u
ID09IFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0KQotICAgICAgICAgICAgbmV3UmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKG5ld1JhbmdlLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIG5l
d1JhbmdlLT5lbmRQb3NpdGlvbigpLCBjdXJyZW50UmFuZ2UuZW5kUG9zaXRpb24oKSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG5ld1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShuZXdSYW5nZS0+
c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBjdXJyZW50UmFuZ2Uuc3RhcnRQb3NpdGlvbigp
LCBuZXdSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLQotICAgICAgICBJbnRSZWN0IGNvcHlSZWN0
ID0gc2VsZWN0aW9uQm94Rm9yUmFuZ2UobmV3UmFuZ2UuZ2V0KCkpOwotICAgICAgICBpZiAoY29w
eVJlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgbmV3IHJhbmdlIGlzIGFu
IGVtcHR5IHJlY3RhbmdsZSwgd2UgdHJ5IHRoZSBibG9jayBhdCB0aGUgY3VycmVudCBwb2ludAot
ICAgICAgICAgICAgLy8gYW5kIHNlZSBpZiB0aGF0IGhhcyBhIHJlY3RhbmdsZSB0aGF0IGlzIGEg
YmV0dGVyIGNob2ljZS4KLSAgICAgICAgICAgIG5ld1JhbmdlID0gcmFuZ2VGb3JCbG9ja0F0UG9p
bnQodGVzdFBvaW50KTsKLSAgICAgICAgICAgIGNvcHlSZWN0ID0gc2VsZWN0aW9uQm94Rm9yUmFu
Z2UobmV3UmFuZ2UuZ2V0KCkpOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgaXNCZXR0ZXJDaG9p
Y2U7Ci0gICAgICAgIHN3aXRjaCAoaGFuZGxlUG9zaXRpb24pIHsKLSAgICAgICAgY2FzZSBTZWxl
Y3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9wOgotICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBv
c2l0aW9uOjpCb3R0b206Ci0gICAgICAgICAgICBpc0JldHRlckNob2ljZSA9IChjb3B5UmVjdC5o
ZWlnaHQoKSA8IGN1cnJlbnRCb3guaGVpZ2h0KCkpOwotICAgICAgICAgICAgaWYgKGNvcHlSZWN0
LmhlaWdodCgpID09IGN1cnJlbnRCb3guaGVpZ2h0KCkpCi0gICAgICAgICAgICAgICAgaXNCZXR0
ZXJDaG9pY2UgPSBjYW5TaHJpbmtUb1RleHRTZWxlY3Rpb24oKm5ld1JhbmdlLmdldCgpKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpM
ZWZ0OgotICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpSaWdodDoKLSAgICAg
ICAgICAgIGlzQmV0dGVyQ2hvaWNlID0gKGNvcHlSZWN0LndpZHRoKCkgPiBiZXN0UmVjdC53aWR0
aCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgaXNCZXR0ZXJD
aG9pY2UgPSBpc0JldHRlckNob2ljZSAmJiAhYXJlUmFuZ2VzRXF1YWwobmV3UmFuZ2UuZ2V0KCks
ICZjdXJyZW50UmFuZ2UpOwotICAgICAgICBpZiAoYmVzdFJhbmdlICYmIGlzQmV0dGVyQ2hvaWNl
KSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGhhbmRsZVBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBj
YXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpUb3A6Ci0gICAgICAgICAgICBjYXNlIFNlbGVj
dGlvbkhhbmRsZVBvc2l0aW9uOjpCb3R0b206Ci0gICAgICAgICAgICAgICAgaXNCZXR0ZXJDaG9p
Y2UgPSAoY29weVJlY3QuaGVpZ2h0KCkgPiBiZXN0UmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpM
ZWZ0OgotICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6UmlnaHQ6Ci0g
ICAgICAgICAgICAgICAgaXNCZXR0ZXJDaG9pY2UgPSAoY29weVJlY3Qud2lkdGgoKSA+IGJlc3RS
ZWN0LndpZHRoKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGlmIChpc0JldHRlckNob2ljZSkgewotICAgICAgICAgICAgYmVzdFJh
bmdlID0gbmV3UmFuZ2U7Ci0gICAgICAgICAgICBiZXN0UmVjdCA9IGNvcHlSZWN0OwotICAgICAg
ICB9Ci0KLSAgICB9Ci0KLSAgICBpZiAoIWJlc3RSYW5nZSkKLSAgICAgICAgYmVzdFJhbmdlID0g
JmN1cnJlbnRSYW5nZTsKLSAgICAKLSAgICAvLyBJZiB3ZSBjYW4gc2hyaW5rIGRvd24gdG8gdGV4
dCBvbmx5LCB0aGUgb25seSByZWFzb24gd2Ugd291bGRuJ3QgaXMgdGhhdAotICAgIC8vIHRoZXJl
IGFyZSBtdWx0aXBsZSBzdWItZWxlbWVudCBibG9ja3MgYmVuZWF0aCB1cy4gIElmIHdlIGRpZG4n
dCBmaW5kCi0gICAgLy8gbXVsdGlwbGUgc3ViLWVsZW1lbnQgYmxvY2tzLCBkb24ndCBzaHJpbmsg
dG8gYSBzdWItZWxlbWVudCBibG9jay4KLQotICAgIGlmIChjYW5TaHJpbmtUb1RleHRTZWxlY3Rp
b24oKmJlc3RSYW5nZS5nZXQoKSkpCi0gICAgICAgIGZsYWdzID0gTm9uZTsKLQotICAgIHJldHVy
biBiZXN0UmFuZ2UucmVsZWFzZU5vbk51bGwoKTsKLX0KLQotdm9pZCBXZWJQYWdlOjpjb21wdXRl
RXhwYW5kQW5kU2hyaW5rVGhyZXNob2xkc0ZvckhhbmRsZShjb25zdCBJbnRQb2ludCYgcG9pbnQs
IFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uIGhhbmRsZVBvc2l0aW9uLCBmbG9hdCYgZ3Jvd1RocmVz
aG9sZCwgZmxvYXQmIHNocmlua1RocmVzaG9sZCkKLXsKLSAgICBGcmFtZSYgZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIFJlZlB0cjxS
YW5nZT4gY3VycmVudFJhbmdlID0gbV9jdXJyZW50QmxvY2tTZWxlY3Rpb24gPyBtX2N1cnJlbnRC
bG9ja1NlbGVjdGlvbi5nZXQoKSA6IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9y
bWFsaXplZFJhbmdlKCk7Ci0KLSAgICBpZiAoIWN1cnJlbnRSYW5nZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgUmVmPFJhbmdlPiBleHBhbmRlZFJhbmdlID0gZXhwYW5kZWRSYW5nZUZyb21IYW5k
bGUoKmN1cnJlbnRSYW5nZSwgaGFuZGxlUG9zaXRpb24pOwotICAgIFNlbGVjdGlvbkZsYWdzIGZs
YWdzOwotICAgIFJlZlB0cjxSYW5nZT4gY29udHJhY3RlZFJhbmdlID0gY29udHJhY3RlZFJhbmdl
RnJvbUhhbmRsZSgqY3VycmVudFJhbmdlLCBoYW5kbGVQb3NpdGlvbiwgZmxhZ3MpOwotCi0gICAg
SW50UmVjdCBjdXJyZW50Qm91bmRzID0gc2VsZWN0aW9uQm94Rm9yUmFuZ2UoY3VycmVudFJhbmdl
LmdldCgpKTsKLSAgICBJbnRSZWN0IGV4cGFuZGVkQm91bmRzID0gc2VsZWN0aW9uQm94Rm9yUmFu
Z2UoZXhwYW5kZWRSYW5nZS5wdHIoKSk7Ci0gICAgSW50UmVjdCBjb250cmFjdGVkQm91bmRzID0g
c2VsZWN0aW9uQm94Rm9yUmFuZ2UoY29udHJhY3RlZFJhbmdlLmdldCgpKTsKLQotICAgIGZsb2F0
IGN1cnJlbnQ7Ci0gICAgZmxvYXQgZXhwYW5kZWQ7Ci0gICAgZmxvYXQgY29udHJhY3RlZDsKLSAg
ICBmbG9hdCBtYXhUaHJlc2hvbGQ7Ci0gICAgZmxvYXQgbWluVGhyZXNob2xkOwotCi0gICAgc3dp
dGNoIChoYW5kbGVQb3NpdGlvbikgewotICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246
OlRvcDogewotICAgICAgICBjdXJyZW50ID0gY3VycmVudEJvdW5kcy55KCk7Ci0gICAgICAgIGV4
cGFuZGVkID0gZXhwYW5kZWRCb3VuZHMueSgpOwotICAgICAgICBjb250cmFjdGVkID0gY29udHJh
Y3RlZEJvdW5kcy55KCk7Ci0gICAgICAgIG1heFRocmVzaG9sZCA9IEZMVF9NSU47Ci0gICAgICAg
IG1pblRocmVzaG9sZCA9IEZMVF9NQVg7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNl
IFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpSaWdodDogewotICAgICAgICBjdXJyZW50ID0gY3Vy
cmVudEJvdW5kcy5tYXhYKCk7Ci0gICAgICAgIGV4cGFuZGVkID0gZXhwYW5kZWRCb3VuZHMubWF4
WCgpOwotICAgICAgICBjb250cmFjdGVkID0gY29udHJhY3RlZEJvdW5kcy5tYXhYKCk7Ci0gICAg
ICAgIG1heFRocmVzaG9sZCA9IEZMVF9NQVg7Ci0gICAgICAgIG1pblRocmVzaG9sZCA9IEZMVF9N
SU47Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0
aW9uOjpCb3R0b206IHsKLSAgICAgICAgY3VycmVudCA9IGN1cnJlbnRCb3VuZHMubWF4WSgpOwot
ICAgICAgICBleHBhbmRlZCA9IGV4cGFuZGVkQm91bmRzLm1heFkoKTsKLSAgICAgICAgY29udHJh
Y3RlZCA9IGNvbnRyYWN0ZWRCb3VuZHMubWF4WSgpOwotICAgICAgICBtYXhUaHJlc2hvbGQgPSBG
TFRfTUFYOwotICAgICAgICBtaW5UaHJlc2hvbGQgPSBGTFRfTUlOOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6TGVmdDogewotICAgICAg
ICBjdXJyZW50ID0gY3VycmVudEJvdW5kcy54KCk7Ci0gICAgICAgIGV4cGFuZGVkID0gZXhwYW5k
ZWRCb3VuZHMueCgpOwotICAgICAgICBjb250cmFjdGVkID0gY29udHJhY3RlZEJvdW5kcy54KCk7
Ci0gICAgICAgIG1heFRocmVzaG9sZCA9IEZMVF9NSU47Ci0gICAgICAgIG1pblRocmVzaG9sZCA9
IEZMVF9NQVg7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMgY29u
c3QgZmxvYXQgZnJhY3Rpb25Ub0dyb3cgPSAwLjM7Ci0KLSAgICBncm93VGhyZXNob2xkID0gY3Vy
cmVudCArIChleHBhbmRlZCAtIGN1cnJlbnQpICogZnJhY3Rpb25Ub0dyb3c7Ci0gICAgc2hyaW5r
VGhyZXNob2xkID0gY3VycmVudCArIChjb250cmFjdGVkIC0gY3VycmVudCkgKiAoMSAtIGZyYWN0
aW9uVG9Hcm93KTsKLSAgICBpZiAoYXJlUmFuZ2VzRXF1YWwoZXhwYW5kZWRSYW5nZS5wdHIoKSwg
Y3VycmVudFJhbmdlLmdldCgpKSkKLSAgICAgICAgZ3Jvd1RocmVzaG9sZCA9IG1heFRocmVzaG9s
ZDsKLQotfQotCiB2b2lkIFdlYlBhZ2U6OmNsZWFyU2VsZWN0aW9uKCkKIHsKICAgICBtX2N1cnJl
bnRCbG9ja1NlbGVjdGlvbiA9IG51bGxwdHI7CiAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5zZWxlY3Rpb24oKS5jbGVhcigpOwogfQogCi1SZWZQdHI8
UmFuZ2U+IFdlYlBhZ2U6OnN3aXRjaFRvQmxvY2tTZWxlY3Rpb25BdFBvaW50KGNvbnN0IEludFBv
aW50JiBwb2ludCwgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb24gaGFuZGxlUG9zaXRpb24pCi17Ci0g
ICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKLSAgICBSZWZQdHI8UmFuZ2U+IG5ld1JhbmdlOwotICAgIFJlZlB0cjxSYW5nZT4g
Y3VycmVudFJhbmdlID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVk
UmFuZ2UoKTsKLSAgICBpZiAoY3VycmVudFJhbmdlKSB7Ci0gICAgICAgIE5vZGUqIGN1cnJlbnRO
b2RlID0gJmN1cnJlbnRSYW5nZS0+c3RhcnRDb250YWluZXIoKTsKLSAgICAgICAgaWYgKGN1cnJl
bnROb2RlLT5pc1RleHROb2RlKCkpIHsKLSAgICAgICAgICAgIG5ld1JhbmdlID0gZW5jbG9zaW5n
VGV4dFVuaXRPZkdyYW51bGFyaXR5KGN1cnJlbnRSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBQYXJh
Z3JhcGhHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQpOwotICAgICAgICAgICAgaWYgKG5l
d1JhbmdlICYmIG5ld1JhbmdlLT5jb2xsYXBzZWQoKSkKLSAgICAgICAgICAgICAgICBuZXdSYW5n
ZSA9IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICghbmV3UmFuZ2Ug
JiYgIWN1cnJlbnROb2RlLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgICAgICBjdXJyZW50Tm9k
ZSA9IGN1cnJlbnROb2RlLT5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgIAotICAgICAgICBpZiAo
IW5ld1JhbmdlICYmIGN1cnJlbnROb2RlKSB7Ci0gICAgICAgICAgICBuZXdSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoY3VycmVudE5vZGUtPmRvY3VtZW50KCkpOwotICAgICAgICAgICAgbmV3UmFuZ2Ut
PnNlbGVjdE5vZGVDb250ZW50cygqY3VycmVudE5vZGUpOwotICAgICAgICB9Ci0gICAgfQotICAg
IHJldHVybiBuZXdSYW5nZTsKLX0KLQotYm9vbCBXZWJQYWdlOjpzaG91bGRTd2l0Y2hUb0Jsb2Nr
TW9kZUZvckhhbmRsZShjb25zdCBJbnRQb2ludCYgaGFuZGxlUG9pbnQsIFNlbGVjdGlvbkhhbmRs
ZVBvc2l0aW9uIGhhbmRsZVBvc2l0aW9uKQotewotICAgIGlmICghbV9hbGxvd3NCbG9ja1NlbGVj
dGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFtX2Jsb2NrUmVjdEZvclRl
eHRTZWxlY3Rpb24uaGVpZ2h0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzd2l0Y2gg
KGhhbmRsZVBvc2l0aW9uKSB7Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9w
OgotICAgICAgICByZXR1cm4gaGFuZGxlUG9pbnQueSgpIDwgbV9ibG9ja1JlY3RGb3JUZXh0U2Vs
ZWN0aW9uLnkoKTsKLSAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpSaWdodDoKLSAg
ICAgICAgcmV0dXJuIGhhbmRsZVBvaW50LngoKSA+IG1fYmxvY2tSZWN0Rm9yVGV4dFNlbGVjdGlv
bi5tYXhYKCk7Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tOgotICAg
ICAgICByZXR1cm4gaGFuZGxlUG9pbnQueSgpID4gbV9ibG9ja1JlY3RGb3JUZXh0U2VsZWN0aW9u
Lm1heFkoKTsKLSAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0OgotICAgICAg
ICByZXR1cm4gaGFuZGxlUG9pbnQueCgpIDwgbV9ibG9ja1JlY3RGb3JUZXh0U2VsZWN0aW9uLngo
KTsKLSAgICB9Ci19Ci0KIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMo
Y29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKQEAgLTE3MjAsNyArMTI5NSw2
IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMKICAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlOwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7CiAgICAgU2VsZWN0aW9u
RmxhZ3MgZmxhZ3MgPSBOb25lOwotICAgIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uIGhhbmRsZVBv
c2l0aW9uID0gYmFzZUlzU3RhcnQgPyBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tIDog
U2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlRvcDsKIAogICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8
U2VsZWN0aW9uVG91Y2g+KHRvdWNoZXMpKSB7CiAgICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6U3Rh
cnRlZDoKQEAgLTE3NDUsMTAgKzEzMTksNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlv
bldpdGhUb3VjaGVzCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6
TW92ZWQ6Ci0gICAgICAgIGlmIChzaG91bGRTd2l0Y2hUb0Jsb2NrTW9kZUZvckhhbmRsZShwb2lu
dEluRG9jdW1lbnQsIGhhbmRsZVBvc2l0aW9uKSkgewotICAgICAgICAgICAgcmFuZ2UgPSBzd2l0
Y2hUb0Jsb2NrU2VsZWN0aW9uQXRQb2ludChwb2ludEluRG9jdW1lbnQsIGhhbmRsZVBvc2l0aW9u
KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByYW5nZSA9IHJhbmdlRm9yUG9zaXRpb24o
JmZyYW1lLCBwb3NpdGlvbiwgYmFzZUlzU3RhcnQpOworICAgICAgICByYW5nZSA9IHJhbmdlRm9y
UG9zaXRpb24oJmZyYW1lLCBwb3NpdGlvbiwgYmFzZUlzU3RhcnQpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgaWYgKHJhbmdlKQo=
</data>
<flag name="review"
          id="344602"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>