<?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>137670</bug_id>
          
          <creation_ts>2014-10-13 14:11:16 -0700</creation_ts>
          <short_desc>Use modern loops in RenderLayerCompositor</short_desc>
          <delta_ts>2014-10-13 15:35:57 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1041347</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-13 14:11:16 -0700</bug_when>
    <thetext>Use modern loops in RenderLayerCompositor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041349</commentid>
    <comment_count>1</comment_count>
      <attachid>239743</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-13 14:13:18 -0700</bug_when>
    <thetext>Created attachment 239743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041366</commentid>
    <comment_count>2</comment_count>
      <attachid>239748</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-13 14:34:55 -0700</bug_when>
    <thetext>Created attachment 239748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041382</commentid>
    <comment_count>3</comment_count>
      <attachid>239748</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-13 15:35:52 -0700</bug_when>
    <thetext>Comment on attachment 239748
Patch

Clearing flags on attachment: 239748

Committed r174661: &lt;http://trac.webkit.org/changeset/174661&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041383</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-13 15:35:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239743</attachid>
            <date>2014-10-13 14:13:18 -0700</date>
            <delta_ts>2014-10-13 14:34:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137670-20141013141322.patch</filename>
            <type>text/plain</type>
            <size>21956</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWYwNjQ2ZWUzNDYxNTZi
NWM0ODA1OTYzMDBmODIwNWE2MGQ2OTg1YS4uMjI4ZjRhZDk4M2YwYzBmNDAwNmU0NjBlZTNlMjIy
NjQ4OGEyM2QzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM3IEBACiAyMDE0LTEwLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIG1vZGVybiBsb29wcyBp
biBSZW5kZXJMYXllckNvbXBvc2l0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzY3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBtb2Rlcm4gcmFuZ2UgZm9yLWxvb3BzIGluIFJlbmRlckxheWVy
Q29tcG9zaXRvci4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6T3ZlcmxhcE1hcENvbnRhaW5lcjo6b3ZlcmxhcHNMYXllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpPdmVybGFwTWFwOjpSZWN0TGlzdDo6
aW50ZXJzZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVw
ZGF0ZVNjcm9sbENvb3JkaW5hdGVkTGF5ZXJzQWZ0ZXJGbHVzaCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUN1c3RvbUxheWVyc0FmdGVyRmx1c2gpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXBNYXBS
ZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21w
dXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHNGb3JOYW1lZEZsb3dGaXhlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVt
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVS
ZWdpb25Db21wb3NpdGluZ1JlcXVpcmVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZUZvck5hbWVkRmxvd0Zp
eGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZENv
bXBvc2l0aW5nTGF5ZXJUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cmVidWlsZFJlZ2lvbkNvbXBvc2l0aW5nTGF5ZXJUcmVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0Rl
c2NlbmRhbnRHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnJlY3Vyc2l2ZVJlcGFpbnRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpyZXNldFRyYWNr
ZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpsYXllckhhczNEQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlZ2lzdGVyQWxsU2Nyb2xs
aW5nTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dW5y
ZWdpc3RlckFsbFNjcm9sbGluZ0xheWVycyk6CisKKzIwMTQtMTAtMTMgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZv
ciBGaWx0ZXIgLyBGaWx0ZXJPcGVyYXRpb24gc3ViY2xhc3NlcwogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NjQ0CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggZmE5MDI3NjZl
Yzk3YzNiNTE4MjIyNGRhOWQzY2I1NmUwZmU1MjM4MS4uMDJmYzQxMjdjY2Q1NzYzYTE2MDI1MmEy
YWMyY2Y4ZGI3NGFlMjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTExNSw4ICsxMTUsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vIG5ldmVyIG92ZXJsYXAgd2l0aCBlYWNoIG90aGVyLgogICAgICAgICBpZiAoIWJvdW5k
cy5pbnRlcnNlY3RzKG1fYm91bmRpbmdCb3gpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sYXllclJlY3RzLnNpemUoKTsgaSsr
KSB7Ci0gICAgICAgICAgICBpZiAobV9sYXllclJlY3RzW2ldLmludGVyc2VjdHMoYm91bmRzKSkK
KyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBsYXllclJlY3QgOiBtX2xheWVyUmVjdHMpIHsKKyAg
ICAgICAgICAgIGlmIChsYXllclJlY3QuaW50ZXJzZWN0cyhib3VuZHMpKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIw
NCw4ICsyMDQsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKCFyZWN0cy5zaXplKCkgfHwg
IWJvdW5kaW5nUmVjdC5pbnRlcnNlY3RzKHJlY3QpKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlY3RzLnNpemUo
KTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlY3RzW2ldLmludGVyc2VjdHMocmVjdCkp
CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGN1cnJlbnRSZWN0IDogcmVjdHMpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoY3VycmVudFJlY3QuaW50ZXJzZWN0cyhyZWN0KSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC01MDIsOCArNTAyLDggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkTGF5ZXJzQWZ0ZXJGbHVzaCgpCiAgICAgdXBkYXRlQ3Vz
dG9tTGF5ZXJzQWZ0ZXJGbHVzaCgpOwogI2VuZGlmCiAKLSAgICBmb3IgKGF1dG8gaXQgPSBtX3Nj
cm9sbENvb3JkaW5hdGVkTGF5ZXJzTmVlZGluZ1VwZGF0ZS5iZWdpbigpLCBlbmQgPSBtX3Njcm9s
bENvb3JkaW5hdGVkTGF5ZXJzTmVlZGluZ1VwZGF0ZS5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQot
ICAgICAgICB1cGRhdGVTY3JvbGxDb29yZGluYXRlZFN0YXR1cygqKml0KTsKKyAgICBmb3IgKGF1
dG8qIGxheWVyIDogbV9zY3JvbGxDb29yZGluYXRlZExheWVyc05lZWRpbmdVcGRhdGUpCisgICAg
ICAgIHVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkU3RhdHVzKCpsYXllcik7CiAKICAgICBtX3Njcm9s
bENvb3JkaW5hdGVkTGF5ZXJzTmVlZGluZ1VwZGF0ZS5jbGVhcigpOwogfQpAQCAtNTQwLDggKzU0
MCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDdXN0b21MYXllcnNBZnRl
ckZsdXNoKCkKICAgICBpZiAoIW1fc2Nyb2xsaW5nTGF5ZXJzTmVlZGluZ1VwZGF0ZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgQ2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQgPSB0aGlzLT5jaHJvbWVD
bGllbnQoKTsKIAotICAgICAgICBmb3IgKGF1dG8gaXQgPSBtX3Njcm9sbGluZ0xheWVyc05lZWRp
bmdVcGRhdGUuYmVnaW4oKSwgZW5kID0gbV9zY3JvbGxpbmdMYXllcnNOZWVkaW5nVXBkYXRlLmVu
ZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICB1cGRhdGVTY3JvbGxpbmdMYXllcldp
dGhDbGllbnQoKippdCwgY2hyb21lQ2xpZW50KTsKKyAgICAgICAgZm9yIChhdXRvKiBsYXllciA6
IG1fc2Nyb2xsaW5nTGF5ZXJzTmVlZGluZ1VwZGF0ZSkKKyAgICAgICAgICAgIHVwZGF0ZVNjcm9s
bGluZ0xheWVyV2l0aENsaWVudCgqbGF5ZXIsIGNocm9tZUNsaWVudCk7CiAgICAgICAgIG1fc2Ny
b2xsaW5nTGF5ZXJzTmVlZGluZ1VwZGF0ZS5jbGVhcigpOwogICAgIH0KICAgICBtX3Njcm9sbGlu
Z0xheWVyc05lZWRpbmdVcGRhdGUuY2xlYXIoKTsKQEAgLTExMjQsMjAgKzExMjQsMjAgQEAgdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShPdmVybGFw
TWFwJiBvdmVybGFwTWFwLCBSZW4KIAogICAgIGlmIChsYXllci5pc1N0YWNraW5nQ29udGFpbmVy
KCkpIHsKICAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0g
bGF5ZXIubmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwg
c2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAg
ICAgICBhZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUob3ZlcmxhcE1hcCwgKm5lZ1pPcmRlckxpc3Qt
PmF0KGkpLCAmbGF5ZXIpOworICAgICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpu
ZWdaT3JkZXJMaXN0KQorICAgICAgICAgICAgICAgIGFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShv
dmVybGFwTWFwLCAqcmVuZGVyTGF5ZXIsICZsYXllcik7CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0ID0gbGF5ZXIubm9ybWFs
Rmxvd0xpc3QoKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IG5vcm1hbEZs
b3dMaXN0LT5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICBhZGRUb092ZXJsYXBN
YXBSZWN1cnNpdmUob3ZlcmxhcE1hcCwgKm5vcm1hbEZsb3dMaXN0LT5hdChpKSwgJmxheWVyKTsK
KyAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpub3JtYWxGbG93TGlzdCkKKyAgICAg
ICAgICAgIGFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShvdmVybGFwTWFwLCAqcmVuZGVyTGF5ZXIs
ICZsYXllcik7CiAgICAgfQogCiAgICAgaWYgKGxheWVyLmlzU3RhY2tpbmdDb250YWluZXIoKSkg
ewogICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBsYXll
ci5wb3NaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXpl
ID0gcG9zWk9yZGVyTGlzdC0+c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgICAg
IGFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShvdmVybGFwTWFwLCAqcG9zWk9yZGVyTGlzdC0+YXQo
aSksICZsYXllcik7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKnBvc1pP
cmRlckxpc3QpCisgICAgICAgICAgICAgICAgYWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKG92ZXJs
YXBNYXAsICpyZW5kZXJMYXllciwgJmxheWVyKTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAg
LTExNTYsMTAgKzExNTYsOCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNv
bXBvc2l0aW5nUmVxdWlyZW1lbnRzRm9yTmFtZWRGbG93Rml4ZWQoUmVuZAogICAgIFZlY3RvcjxS
ZW5kZXJMYXllcio+IGZpeGVkTGF5ZXJzOwogICAgIGxheWVyLnJlbmRlcmVyKCkudmlldygpLmZs
b3dUaHJlYWRDb250cm9sbGVyKCkuY29sbGVjdEZpeGVkUG9zaXRpb25lZExheWVycyhmaXhlZExh
eWVycyk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpeGVkTGF5ZXJzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIFJlbmRlckxheWVyKiBmaXhlZExheWVyID0gZml4ZWRMYXllcnMuYXQo
aSk7CisgICAgZm9yIChhdXRvKiBmaXhlZExheWVyIDogZml4ZWRMYXllcnMpCiAgICAgICAgIGNv
bXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cygmbGF5ZXIsICpmaXhlZExheWVyLCBvdmVybGFw
TWFwLCBjaGlsZFN0YXRlLCBsYXllcnNDaGFuZ2VkLCBhbnlEZXNjZW5kYW50SGFzM0RUcmFuc2Zv
cm0pOwotICAgIH0KIH0KIAogLy8gIFJlY3Vyc2UgdGhyb3VnaCB0aGUgbGF5ZXJzIGluIHotaW5k
ZXggYW5kIG92ZXJmbG93IG9yZGVyICh3aGljaCBpcyBlcXVpdmFsZW50IHRvIHBhaW50aW5nIG9y
ZGVyKQpAQCAtMTI2Miw4ICsxMjYwLDggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNv
bXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0b3IKIAogICAg
IGlmIChsYXllci5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKICAgICAgICAgaWYgKFZlY3RvcjxS
ZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgpKSB7Ci0g
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUo
KTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgICAgIGNvbXB1dGVDb21wb3NpdGluZ1Jl
cXVpcmVtZW50cygmbGF5ZXIsICpuZWdaT3JkZXJMaXN0LT5hdChpKSwgb3ZlcmxhcE1hcCwgY2hp
bGRTdGF0ZSwgbGF5ZXJzQ2hhbmdlZCwgYW55RGVzY2VuZGFudEhhczNEVHJhbnNmb3JtKTsKKyAg
ICAgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbmVnWk9yZGVyTGlzdCkgeworICAg
ICAgICAgICAgICAgIGNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cygmbGF5ZXIsICpyZW5k
ZXJMYXllciwgb3ZlcmxhcE1hcCwgY2hpbGRTdGF0ZSwgbGF5ZXJzQ2hhbmdlZCwgYW55RGVzY2Vu
ZGFudEhhczNEVHJhbnNmb3JtKTsKIAogICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgdG8g
bWFrZSBhIGxheWVyIGZvciB0aGlzIGNoaWxkLCBtYWtlIG9uZSBub3cgc28gd2UgY2FuIGhhdmUg
YSBjb250ZW50cyBsYXllcgogICAgICAgICAgICAgICAgIC8vIChzaW5jZSB3ZSBuZWVkIHRvIGVu
c3VyZSB0aGF0IHRoZSAtdmUgei1vcmRlciBjaGlsZCByZW5kZXJzIHVuZGVybmVhdGggb3VyIGNv
bnRlbnRzKS4KQEAgLTEyOTIsMTQgKzEyOTAsMTQgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0b3IK
IAogICAgIAogICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSBs
YXllci5ub3JtYWxGbG93TGlzdCgpKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXpl
ID0gbm9ybWFsRmxvd0xpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAgIGNv
bXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cygmbGF5ZXIsICpub3JtYWxGbG93TGlzdC0+YXQo
aSksIG92ZXJsYXBNYXAsIGNoaWxkU3RhdGUsIGxheWVyc0NoYW5nZWQsIGFueURlc2NlbmRhbnRI
YXMzRFRyYW5zZm9ybSk7CisgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbm9ybWFs
Rmxvd0xpc3QpCisgICAgICAgICAgICBjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoJmxh
eWVyLCAqcmVuZGVyTGF5ZXIsIG92ZXJsYXBNYXAsIGNoaWxkU3RhdGUsIGxheWVyc0NoYW5nZWQs
IGFueURlc2NlbmRhbnRIYXMzRFRyYW5zZm9ybSk7CiAgICAgfQogCiAgICAgaWYgKGxheWVyLmlz
U3RhY2tpbmdDb250YWluZXIoKSkgewogICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4q
IHBvc1pPcmRlckxpc3QgPSBsYXllci5wb3NaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwLCBzaXplID0gcG9zWk9yZGVyTGlzdC0+c2l6ZSgpOyBpIDwgc2l6ZTsg
KytpKQotICAgICAgICAgICAgICAgIGNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cygmbGF5
ZXIsICpwb3NaT3JkZXJMaXN0LT5hdChpKSwgb3ZlcmxhcE1hcCwgY2hpbGRTdGF0ZSwgbGF5ZXJz
Q2hhbmdlZCwgYW55RGVzY2VuZGFudEhhczNEVHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGZvciAo
YXV0byogcmVuZGVyTGF5ZXIgOiAqcG9zWk9yZGVyTGlzdCkKKyAgICAgICAgICAgICAgICBjb21w
dXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoJmxheWVyLCAqcmVuZGVyTGF5ZXIsIG92ZXJsYXBN
YXAsIGNoaWxkU3RhdGUsIGxheWVyc0NoYW5nZWQsIGFueURlc2NlbmRhbnRIYXMzRFRyYW5zZm9y
bSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE0MjAsMTAgKzE0MTgsOSBAQCB2b2lkIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZVJlZ2lvbkNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKFJl
bmRlck5hbWVkRmxvdwogICAgICAgICBvdmVybGFwTWFwLT5nZW9tZXRyeU1hcCgpLnB1c2hSZW5k
ZXJGbG93VGhyZWFkKGZsb3dUaHJlYWQpOwogCiAgICAgaWYgKGNvbnN0IFJlbmRlckxheWVyTGlz
dCogbGF5ZXJMaXN0ID0gZmxvd1RocmVhZC0+Z2V0TGF5ZXJMaXN0Rm9yUmVnaW9uKHJlZ2lvbikp
IHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIGxpc3RTaXplID0gbGF5ZXJMaXN0LT5zaXpl
KCk7IGkgPCBsaXN0U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBSZW5kZXJMYXllciYgY3VyTGF5
ZXIgPSAqbGF5ZXJMaXN0LT5hdChpKTsKLSAgICAgICAgICAgIEFTU0VSVChmbG93VGhyZWFkLT5y
ZWdpb25Gb3JDb21wb3NpdGVkTGF5ZXIoY3VyTGF5ZXIpID09IHJlZ2lvbik7Ci0gICAgICAgICAg
ICBjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoZmxvd1RocmVhZC0+bGF5ZXIoKSwgY3Vy
TGF5ZXIsIG92ZXJsYXBNYXAsIGNoaWxkU3RhdGUsIGxheWVyc0NoYW5nZWQsIGFueURlc2NlbmRh
bnRIYXMzRFRyYW5zZm9ybSk7CisgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbGF5
ZXJMaXN0KSB7CisgICAgICAgICAgICBBU1NFUlQoZmxvd1RocmVhZC0+cmVnaW9uRm9yQ29tcG9z
aXRlZExheWVyKCpyZW5kZXJMYXllcikgPT0gcmVnaW9uKTsKKyAgICAgICAgICAgIGNvbXB1dGVD
b21wb3NpdGluZ1JlcXVpcmVtZW50cyhmbG93VGhyZWFkLT5sYXllcigpLCAqcmVuZGVyTGF5ZXIs
IG92ZXJsYXBNYXAsIGNoaWxkU3RhdGUsIGxheWVyc0NoYW5nZWQsIGFueURlc2NlbmRhbnRIYXMz
RFRyYW5zZm9ybSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE0NzksMTAgKzE0NzYsOCBAQCB2
b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlRm9y
TmFtZWRGbG93Rml4ZWQoUmVuZGVyTAogICAgIFZlY3RvcjxSZW5kZXJMYXllcio+IGZpeGVkTGF5
ZXJzOwogICAgIGxheWVyLnJlbmRlcmVyKCkudmlldygpLmZsb3dUaHJlYWRDb250cm9sbGVyKCku
Y29sbGVjdEZpeGVkUG9zaXRpb25lZExheWVycyhmaXhlZExheWVycyk7CiAKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGZpeGVkTGF5ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFJlbmRl
ckxheWVyKiBmaXhlZExheWVyID0gZml4ZWRMYXllcnMuYXQoaSk7CisgICAgZm9yIChhdXRvKiBm
aXhlZExheWVyIDogZml4ZWRMYXllcnMpCiAgICAgICAgIHJlYnVpbGRDb21wb3NpdGluZ0xheWVy
VHJlZSgqZml4ZWRMYXllciwgY2hpbGRHcmFwaGljc0xheWVyc09mRW5jbG9zaW5nTGF5ZXIsIGRl
cHRoKTsKLSAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWJ1aWxkQ29t
cG9zaXRpbmdMYXllclRyZWUoUmVuZGVyTGF5ZXImIGxheWVyLCBWZWN0b3I8R3JhcGhpY3NMYXll
cio+JiBjaGlsZExheWVyc09mRW5jbG9zaW5nTGF5ZXIsIGludCBkZXB0aCkKQEAgLTE1MzQsOCAr
MTUyOSw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWJ1aWxkQ29tcG9zaXRpbmdM
YXllclRyZWUoUmVuZGVyTGF5ZXImIGxheWVyLCBWZWN0CiAKICAgICBpZiAobGF5ZXIuaXNTdGFj
a2luZ0NvbnRhaW5lcigpKSB7CiAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVn
Wk9yZGVyTGlzdCA9IGxheWVyLm5lZ1pPcmRlckxpc3QoKSkgewotICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDAsIHNpemUgPSBuZWdaT3JkZXJMaXN0LT5zaXplKCk7IGkgPCBzaXplOyArK2kp
Ci0gICAgICAgICAgICAgICAgcmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKCpuZWdaT3JkZXJM
aXN0LT5hdChpKSwgY2hpbGRMaXN0LCBkZXB0aCArIDEpOworICAgICAgICAgICAgZm9yIChhdXRv
KiByZW5kZXJMYXllciA6ICpuZWdaT3JkZXJMaXN0KQorICAgICAgICAgICAgICAgIHJlYnVpbGRD
b21wb3NpdGluZ0xheWVyVHJlZSgqcmVuZGVyTGF5ZXIsIGNoaWxkTGlzdCwgZGVwdGggKyAxKTsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIElmIGEgbmVnYXRpdmUgei1vcmRlciBjaGlsZCBpcyBj
b21wb3NpdGluZywgd2UgZ2V0IGEgZm9yZWdyb3VuZCBsYXllciB3aGljaCBuZWVkcyB0byBnZXQg
cGFyZW50ZWQuCkBAIC0xNTQ3LDE0ICsxNTQyLDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpyZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRyZWUoUmVuZGVyTGF5ZXImIGxheWVyLCBWZWN0
CiAgICAgICAgIHJlYnVpbGRSZWdpb25Db21wb3NpdGluZ0xheWVyVHJlZShkb3duY2FzdDxSZW5k
ZXJCbG9ja0Zsb3c+KGxheWVyLnJlbmRlcmVyKCkpLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCks
IGxheWVyQ2hpbGRyZW4sIGRlcHRoICsgMSk7CiAKICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVy
Kj4qIG5vcm1hbEZsb3dMaXN0ID0gbGF5ZXIubm9ybWFsRmxvd0xpc3QoKSkgewotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IG5vcm1hbEZsb3dMaXN0LT5zaXplKCk7IGkgPCBzaXpl
OyArK2kpCi0gICAgICAgICAgICByZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRyZWUoKm5vcm1hbEZs
b3dMaXN0LT5hdChpKSwgY2hpbGRMaXN0LCBkZXB0aCArIDEpOworICAgICAgICBmb3IgKGF1dG8q
IHJlbmRlckxheWVyIDogKm5vcm1hbEZsb3dMaXN0KQorICAgICAgICAgICAgcmVidWlsZENvbXBv
c2l0aW5nTGF5ZXJUcmVlKCpyZW5kZXJMYXllciwgY2hpbGRMaXN0LCBkZXB0aCArIDEpOwogICAg
IH0KICAgICAKICAgICBpZiAobGF5ZXIuaXNTdGFja2luZ0NvbnRhaW5lcigpKSB7CiAgICAgICAg
IGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IGxheWVyLnBvc1pPcmRl
ckxpc3QoKSkgewotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBwb3NaT3Jk
ZXJMaXN0LT5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICAgICAgcmVidWlsZENv
bXBvc2l0aW5nTGF5ZXJUcmVlKCpwb3NaT3JkZXJMaXN0LT5hdChpKSwgY2hpbGRMaXN0LCBkZXB0
aCArIDEpOworICAgICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpwb3NaT3JkZXJM
aXN0KQorICAgICAgICAgICAgICAgIHJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZSgqcmVuZGVy
TGF5ZXIsIGNoaWxkTGlzdCwgZGVwdGggKyAxKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTYw
MywxMCArMTU5OCw5IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWJ1aWxkUmVnaW9u
Q29tcG9zaXRpbmdMYXllclRyZWUoUmVuZGVyTmFtZWRGbG93RnJhCiAgICAgUmVuZGVyRmxvd1Ro
cmVhZCogZmxvd1RocmVhZCA9IHJlZ2lvbi0+Zmxvd1RocmVhZCgpOwogICAgIEFTU0VSVChmbG93
VGhyZWFkLT5jb2xsZWN0c0dyYXBoaWNzTGF5ZXJzVW5kZXJSZWdpb25zKCkpOwogICAgIGlmIChj
b25zdCBSZW5kZXJMYXllckxpc3QqIGxheWVyTGlzdCA9IGZsb3dUaHJlYWQtPmdldExheWVyTGlz
dEZvclJlZ2lvbihyZWdpb24pKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBsaXN0U2l6
ZSA9IGxheWVyTGlzdC0+c2l6ZSgpOyBpIDwgbGlzdFNpemU7ICsraSkgewotICAgICAgICAgICAg
UmVuZGVyTGF5ZXImIGN1ckxheWVyID0gKmxheWVyTGlzdC0+YXQoaSk7Ci0gICAgICAgICAgICBB
U1NFUlQoZmxvd1RocmVhZC0+cmVnaW9uRm9yQ29tcG9zaXRlZExheWVyKGN1ckxheWVyKSA9PSBy
ZWdpb24pOwotICAgICAgICAgICAgcmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKGN1ckxheWVy
LCBjaGlsZExpc3QsIGRlcHRoICsgMSk7CisgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIg
OiAqbGF5ZXJMaXN0KSB7CisgICAgICAgICAgICBBU1NFUlQoZmxvd1RocmVhZC0+cmVnaW9uRm9y
Q29tcG9zaXRlZExheWVyKCpyZW5kZXJMYXllcikgPT0gcmVnaW9uKTsKKyAgICAgICAgICAgIHJl
YnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZSgqcmVuZGVyTGF5ZXIsIGNoaWxkTGlzdCwgZGVwdGgg
KyAxKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE4MTEsMjAgKzE4MDUsMjAgQEAgdm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyVHJlZUdlb21ldHJ5KFJlbmRlckxheWVy
JiBsYXllciwgaW50IGRlcHQKIAogICAgIGlmIChsYXllci5pc1N0YWNraW5nQ29udGFpbmVyKCkp
IHsKICAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5
ZXIubmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6
ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAgICAg
ICB1cGRhdGVMYXllclRyZWVHZW9tZXRyeSgqbmVnWk9yZGVyTGlzdC0+YXQoaSksIGRlcHRoICsg
MSk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5lZ1pPcmRlckxpc3Qp
CisgICAgICAgICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkoKnJlbmRlckxheWVyLCBk
ZXB0aCArIDEpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXll
cio+KiBub3JtYWxGbG93TGlzdCA9IGxheWVyLm5vcm1hbEZsb3dMaXN0KCkpIHsKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBub3JtYWxGbG93TGlzdC0+c2l6ZSgpOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkoKm5vcm1hbEZsb3dM
aXN0LT5hdChpKSwgZGVwdGggKyAxKTsKKyAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6
ICpub3JtYWxGbG93TGlzdCkKKyAgICAgICAgICAgIHVwZGF0ZUxheWVyVHJlZUdlb21ldHJ5KCpy
ZW5kZXJMYXllciwgZGVwdGggKyAxKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGxheWVyLmlzU3Rh
Y2tpbmdDb250YWluZXIoKSkgewogICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIHBv
c1pPcmRlckxpc3QgPSBsYXllci5wb3NaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwLCBzaXplID0gcG9zWk9yZGVyTGlzdC0+c2l6ZSgpOyBpIDwgc2l6ZTsgKytp
KQotICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyVHJlZUdlb21ldHJ5KCpwb3NaT3JkZXJMaXN0
LT5hdChpKSwgZGVwdGggKyAxKTsKKyAgICAgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIg
OiAqcG9zWk9yZGVyTGlzdCkKKyAgICAgICAgICAgICAgICB1cGRhdGVMYXllclRyZWVHZW9tZXRy
eSgqcmVuZGVyTGF5ZXIsIGRlcHRoICsgMSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE4NjQs
MjMgKzE4NTgsMjAgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0
aW5nRGVzY2VuZGFudEdlb21ldHJ5KFJlbmRlckxheWVyJiBjb20KICAgICAKICAgICBpZiAobGF5
ZXIuaXNTdGFja2luZ0NvbnRhaW5lcigpKSB7CiAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5
ZXIqPiogbmVnWk9yZGVyTGlzdCA9IGxheWVyLm5lZ1pPcmRlckxpc3QoKSkgewotICAgICAgICAg
ICAgc2l6ZV90IGxpc3RTaXplID0gbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOwotICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKQotICAgICAgICAgICAgICAgIHVw
ZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5KGNvbXBvc2l0aW5nQW5jZXN0b3IsICpu
ZWdaT3JkZXJMaXN0LT5hdChpKSwgY29tcG9zaXRlZENoaWxkcmVuT25seSk7CisgICAgICAgICAg
ICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5lZ1pPcmRlckxpc3QpCisgICAgICAgICAgICAg
ICAgdXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkoY29tcG9zaXRpbmdBbmNlc3Rv
ciwgKnJlbmRlckxheWVyLCBjb21wb3NpdGVkQ2hpbGRyZW5Pbmx5KTsKICAgICAgICAgfQogICAg
IH0KIAogICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSBsYXll
ci5ub3JtYWxGbG93TGlzdCgpKSB7Ci0gICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5vcm1hbEZs
b3dMaXN0LT5zaXplKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7
ICsraSkKLSAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5KGNv
bXBvc2l0aW5nQW5jZXN0b3IsICpub3JtYWxGbG93TGlzdC0+YXQoaSksIGNvbXBvc2l0ZWRDaGls
ZHJlbk9ubHkpOworICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5vcm1hbEZsb3dM
aXN0KQorICAgICAgICAgICAgdXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkoY29t
cG9zaXRpbmdBbmNlc3RvciwgKnJlbmRlckxheWVyLCBjb21wb3NpdGVkQ2hpbGRyZW5Pbmx5KTsK
ICAgICB9CiAgICAgCiAgICAgaWYgKGxheWVyLmlzU3RhY2tpbmdDb250YWluZXIoKSkgewogICAg
ICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBsYXllci5wb3Na
T3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IHBvc1pPcmRlckxp
c3QtPnNpemUoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7
ICsraSkKLSAgICAgICAgICAgICAgICB1cGRhdGVDb21wb3NpdGluZ0Rlc2NlbmRhbnRHZW9tZXRy
eShjb21wb3NpdGluZ0FuY2VzdG9yLCAqcG9zWk9yZGVyTGlzdC0+YXQoaSksIGNvbXBvc2l0ZWRD
aGlsZHJlbk9ubHkpOworICAgICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpwb3Na
T3JkZXJMaXN0KQorICAgICAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdl
b21ldHJ5KGNvbXBvc2l0aW5nQW5jZXN0b3IsICpyZW5kZXJMYXllciwgY29tcG9zaXRlZENoaWxk
cmVuT25seSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0xOTA3LDE4ICsxODk4LDE4IEBA
IHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWN1cnNpdmVSZXBhaW50TGF5ZXIoUmVuZGVy
TGF5ZXImIGxheWVyKQogCiAgICAgaWYgKGxheWVyLmhhc0NvbXBvc2l0aW5nRGVzY2VuZGFudCgp
KSB7CiAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IGxh
eWVyLm5lZ1pPcmRlckxpc3QoKSkgewotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNp
emUgPSBuZWdaT3JkZXJMaXN0LT5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICAg
ICAgcmVjdXJzaXZlUmVwYWludExheWVyKCpuZWdaT3JkZXJMaXN0LT5hdChpKSk7CisgICAgICAg
ICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5lZ1pPcmRlckxpc3QpCisgICAgICAgICAg
ICAgICAgcmVjdXJzaXZlUmVwYWludExheWVyKCpyZW5kZXJMYXllcik7CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBsYXllci5w
b3NaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0g
cG9zWk9yZGVyTGlzdC0+c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgICAgIHJl
Y3Vyc2l2ZVJlcGFpbnRMYXllcigqcG9zWk9yZGVyTGlzdC0+YXQoaSkpOworICAgICAgICAgICAg
Zm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpwb3NaT3JkZXJMaXN0KQorICAgICAgICAgICAgICAg
IHJlY3Vyc2l2ZVJlcGFpbnRMYXllcigqcmVuZGVyTGF5ZXIpOwogICAgICAgICB9CiAgICAgfQog
ICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSBsYXllci5ub3Jt
YWxGbG93TGlzdCgpKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gbm9ybWFs
Rmxvd0xpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAgIHJlY3Vyc2l2ZVJl
cGFpbnRMYXllcigqbm9ybWFsRmxvd0xpc3QtPmF0KGkpKTsKKyAgICAgICAgZm9yIChhdXRvKiBy
ZW5kZXJMYXllciA6ICpub3JtYWxGbG93TGlzdCkKKyAgICAgICAgICAgIHJlY3Vyc2l2ZVJlcGFp
bnRMYXllcigqcmVuZGVyTGF5ZXIpOwogICAgIH0KIH0KIApAQCAtMjgzNiw4ICsyODI3LDggQEAg
c3RhdGljIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZlKEdyYXBoaWNzTGF5
ZXImIGdyYXBoaWNzTGF5ZXIpCiB7CiAgICAgZ3JhcGhpY3NMYXllci5yZXNldFRyYWNrZWRSZXBh
aW50cygpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBncmFwaGljc0xheWVyLmNo
aWxkcmVuKCkuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICByZXNldFRyYWNrZWRSZXBh
aW50UmVjdHNSZWN1cnNpdmUoKmdyYXBoaWNzTGF5ZXIuY2hpbGRyZW4oKVtpXSk7CisgICAgZm9y
IChhdXRvKiBjaGlsZExheWVyIDogZ3JhcGhpY3NMYXllci5jaGlsZHJlbigpKQorICAgICAgICBy
ZXNldFRyYWNrZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUoKmNoaWxkTGF5ZXIpOwogCiAgICAgaWYg
KEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FMYXllciA9IGdyYXBoaWNzTGF5ZXIucmVwbGljYUxheWVy
KCkpCiAgICAgICAgIHJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0c1JlY3Vyc2l2ZSgqcmVwbGljYUxh
eWVyKTsKQEAgLTM1NDQsMjMgKzM1MzUsMjMgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmxheWVySGFzM0RDb250ZW50KGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikgY29uc3QKIAogICAg
IGlmIChsYXllci5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKICAgICAgICAgaWYgKFZlY3RvcjxS
ZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgpKSB7Ci0g
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUo
KTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChsYXllckhhczNEQ29udGVu
dCgqbmVnWk9yZGVyTGlzdC0+YXQoaSkpKQorICAgICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJM
YXllciA6ICpuZWdaT3JkZXJMaXN0KSB7CisgICAgICAgICAgICAgICAgaWYgKGxheWVySGFzM0RD
b250ZW50KCpyZW5kZXJMYXllcikpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXll
cio+KiBwb3NaT3JkZXJMaXN0ID0gbGF5ZXIucG9zWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUoKTsgaSA8IHNp
emU7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChsYXllckhhczNEQ29udGVudCgqcG9zWk9y
ZGVyTGlzdC0+YXQoaSkpKQorICAgICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpw
b3NaT3JkZXJMaXN0KSB7CisgICAgICAgICAgICAgICAgaWYgKGxheWVySGFzM0RDb250ZW50KCpy
ZW5kZXJMYXllcikpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBu
b3JtYWxGbG93TGlzdCA9IGxheWVyLm5vcm1hbEZsb3dMaXN0KCkpIHsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDAsIHNpemUgPSBub3JtYWxGbG93TGlzdC0+c2l6ZSgpOyBpIDwgc2l6ZTsgKytp
KSB7Ci0gICAgICAgICAgICBpZiAobGF5ZXJIYXMzRENvbnRlbnQoKm5vcm1hbEZsb3dMaXN0LT5h
dChpKSkpCisgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbm9ybWFsRmxvd0xpc3Qp
IHsKKyAgICAgICAgICAgIGlmIChsYXllckhhczNEQ29udGVudCgqcmVuZGVyTGF5ZXIpKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtMzg4MiwyNCAr
Mzg3MywyMyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVnaXN0ZXJBbGxWaWV3cG9y
dENvbnN0cmFpbmVkTGF5ZXJzKCkKICAgICBMYXllck1hcCBsYXllck1hcDsKICAgICBTdGlja3lD
b250YWluZXJNYXAgc3RpY2t5Q29udGFpbmVyTWFwOwogCi0gICAgZm9yIChhdXRvIGl0ID0gbV9z
Y3JvbGxDb29yZGluYXRlZExheWVycy5iZWdpbigpLCBlbmQgPSBtX3Njcm9sbENvb3JkaW5hdGVk
TGF5ZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgUmVuZGVyTGF5ZXImIGxh
eWVyID0gKippdDsKLSAgICAgICAgQVNTRVJUKGxheWVyLmlzQ29tcG9zaXRlZCgpKTsKKyAgICBm
b3IgKGF1dG8qIGxheWVyIDogbV9zY3JvbGxDb29yZGluYXRlZExheWVycykgeworICAgICAgICBB
U1NFUlQobGF5ZXItPmlzQ29tcG9zaXRlZCgpKTsKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Vmlld3BvcnRDb25zdHJhaW50cz4gY29uc3RyYWludHM7Ci0gICAgICAgIGlmIChsYXllci5yZW5k
ZXJlcigpLmlzU3RpY2t5UG9zaXRpb25lZCgpKSB7Ci0gICAgICAgICAgICBjb25zdHJhaW50cyA9
IHN0ZDo6bWFrZV91bmlxdWU8U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21w
dXRlU3RpY2t5Vmlld3BvcnRDb25zdHJhaW50cyhsYXllcikpOworICAgICAgICBpZiAobGF5ZXIt
PnJlbmRlcmVyKCkuaXNTdGlja3lQb3NpdGlvbmVkKCkpIHsKKyAgICAgICAgICAgIGNvbnN0cmFp
bnRzID0gc3RkOjptYWtlX3VuaXF1ZTxTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+
KGNvbXB1dGVTdGlja3lWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOwogICAgICAgICAgICAg
Y29uc3QgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyID0gbnVsbHB0
cjsKLSAgICAgICAgICAgIGlmIChpc0FzeW5jU2Nyb2xsYWJsZVN0aWNreUxheWVyKGxheWVyLCAm
ZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXIpICYmIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJs
ZUxheWVyKSB7CisgICAgICAgICAgICBpZiAoaXNBc3luY1Njcm9sbGFibGVTdGlja3lMYXllcigq
bGF5ZXIsICZlbmNsb3NpbmdUb3VjaFNjcm9sbGFibGVMYXllcikgJiYgZW5jbG9zaW5nVG91Y2hT
Y3JvbGxhYmxlTGF5ZXIpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZW5jbG9zaW5nVG91Y2hT
Y3JvbGxhYmxlTGF5ZXItPmlzQ29tcG9zaXRlZCgpKTsKLSAgICAgICAgICAgICAgICBzdGlja3lD
b250YWluZXJNYXAuYWRkKGxheWVyLmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5wbGF0Zm9y
bUxheWVyKCksIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyLT5iYWNraW5nKCktPnNjcm9s
bGluZ0xheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgICAgICAgICAgICAgc3RpY2t5Q29u
dGFpbmVyTWFwLmFkZChsYXllci0+YmFja2luZygpLT5ncmFwaGljc0xheWVyKCktPnBsYXRmb3Jt
TGF5ZXIoKSwgZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXItPmJhY2tpbmcoKS0+c2Nyb2xs
aW5nTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIGlmIChsYXllci5yZW5kZXJlcigpLnN0eWxlKCkucG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0
aW9uKQotICAgICAgICAgICAgY29uc3RyYWludHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpeGVkUG9z
aXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wdXRlRml4ZWRWaWV3cG9ydENvbnN0cmFpbnRz
KGxheWVyKSk7CisgICAgICAgIH0gZWxzZSBpZiAobGF5ZXItPnJlbmRlcmVyKCkuc3R5bGUoKS5w
b3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pCisgICAgICAgICAgICBjb25zdHJhaW50cyA9IHN0
ZDo6bWFrZV91bmlxdWU8Rml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNvbXB1dGVG
aXhlZFZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGxheWVyTWFwLmFkZChsYXllci5iYWNraW5nKCktPmdy
YXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpLCBXVEY6Om1vdmUoY29uc3RyYWludHMpKTsK
KyAgICAgICAgbGF5ZXJNYXAuYWRkKGxheWVyLT5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKS0+
cGxhdGZvcm1MYXllcigpLCBXVEY6Om1vdmUoY29uc3RyYWludHMpKTsKICAgICB9CiAgICAgCiAg
ICAgaWYgKENocm9tZUNsaWVudCogY2xpZW50ID0gdGhpcy0+Y2hyb21lQ2xpZW50KCkpCkBAIC0z
OTI4LDggKzM5MTgsOCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVnaXN0ZXJBbGxT
Y3JvbGxpbmdMYXllcnMoKQogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBmb3IgKGF1dG8gaXQgPSBtX3Njcm9sbGluZ0xheWVycy5iZWdpbigpLCBlbmQgPSBtX3Njcm9s
bGluZ0xheWVycy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICB1cGRhdGVTY3JvbGxp
bmdMYXllcldpdGhDbGllbnQoKippdCwgY2xpZW50KTsKKyAgICBmb3IgKGF1dG8qIGxheWVyIDog
bV9zY3JvbGxpbmdMYXllcnMpCisgICAgICAgIHVwZGF0ZVNjcm9sbGluZ0xheWVyV2l0aENsaWVu
dCgqbGF5ZXIsIGNsaWVudCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1bnJl
Z2lzdGVyQWxsU2Nyb2xsaW5nTGF5ZXJzKCkKQEAgLTM5MzgsMTEgKzM5MjgsMTAgQEAgdm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnVucmVnaXN0ZXJBbGxTY3JvbGxpbmdMYXllcnMoKQogICAg
IGlmICghY2xpZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8gaXQgPSBtX3Nj
cm9sbGluZ0xheWVycy5iZWdpbigpLCBlbmQgPSBtX3Njcm9sbGluZ0xheWVycy5lbmQoKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJlbmRlckxheWVyJiBsYXllciA9ICoqaXQ7Ci0gICAg
ICAgIFJlbmRlckxheWVyQmFja2luZyogYmFja2luZyA9IGxheWVyLmJhY2tpbmcoKTsKKyAgICBm
b3IgKGF1dG8qIGxheWVyIDogbV9zY3JvbGxpbmdMYXllcnMpIHsKKyAgICAgICAgUmVuZGVyTGF5
ZXJCYWNraW5nKiBiYWNraW5nID0gbGF5ZXItPmJhY2tpbmcoKTsKICAgICAgICAgQVNTRVJUKGJh
Y2tpbmcpOwotICAgICAgICBjbGllbnQtPnJlbW92ZVNjcm9sbGluZ0xheWVyKGxheWVyLnJlbmRl
cmVyKCkuZWxlbWVudCgpLCBiYWNraW5nLT5zY3JvbGxpbmdMYXllcigpLT5wbGF0Zm9ybUxheWVy
KCksIGJhY2tpbmctPnNjcm9sbGluZ0NvbnRlbnRzTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpKTsK
KyAgICAgICAgY2xpZW50LT5yZW1vdmVTY3JvbGxpbmdMYXllcihsYXllci0+cmVuZGVyZXIoKS5l
bGVtZW50KCksIGJhY2tpbmctPnNjcm9sbGluZ0xheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgYmFj
a2luZy0+c2Nyb2xsaW5nQ29udGVudHNMYXllcigpLT5wbGF0Zm9ybUxheWVyKCkpOwogICAgIH0K
IH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239748</attachid>
            <date>2014-10-13 14:34:55 -0700</date>
            <delta_ts>2014-10-13 15:35:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137670-20141013143459.patch</filename>
            <type>text/plain</type>
            <size>21961</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjlkMDUwMjRiOTA1MjE2
OGZhMGRiNjVhNmY4OGNkYjYyMDJhNGQ5NS4uOGVkYWUzMTk0MDQ1NmZmNWYxNThkZTNhNWNlYmMx
MTVhM2MzMzhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM3IEBACiAyMDE0LTEwLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIG1vZGVybiBsb29wcyBp
biBSZW5kZXJMYXllckNvbXBvc2l0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzY3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBtb2Rlcm4gcmFuZ2UgZm9yLWxvb3BzIGluIFJlbmRlckxheWVy
Q29tcG9zaXRvci4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6T3ZlcmxhcE1hcENvbnRhaW5lcjo6b3ZlcmxhcHNMYXllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpPdmVybGFwTWFwOjpSZWN0TGlzdDo6
aW50ZXJzZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVw
ZGF0ZVNjcm9sbENvb3JkaW5hdGVkTGF5ZXJzQWZ0ZXJGbHVzaCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUN1c3RvbUxheWVyc0FmdGVyRmx1c2gpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXBNYXBS
ZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21w
dXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHNGb3JOYW1lZEZsb3dGaXhlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVt
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVS
ZWdpb25Db21wb3NpdGluZ1JlcXVpcmVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZUZvck5hbWVkRmxvd0Zp
eGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZENv
bXBvc2l0aW5nTGF5ZXJUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cmVidWlsZFJlZ2lvbkNvbXBvc2l0aW5nTGF5ZXJUcmVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0Rl
c2NlbmRhbnRHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnJlY3Vyc2l2ZVJlcGFpbnRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpyZXNldFRyYWNr
ZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpsYXllckhhczNEQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlZ2lzdGVyQWxsU2Nyb2xs
aW5nTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dW5y
ZWdpc3RlckFsbFNjcm9sbGluZ0xheWVycyk6CisKKzIwMTQtMTAtMTMgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBEcm9wIHVubmVjZXNzYXJ5IG92ZXJsYXBNYXAg
bnVsbCBjaGVja3MgaW4gY29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKCkKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzY2OAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4
IGQ2MmQwZTRjZTYwNDE1ZmJiMGRmYjA4NDNjNDk2Y2Q2NWZiNDUzZjIuLjk0OGE5MDE4NTg5ZjI1
OTFiMzAzNWRhMzU4ZjFkM2NiY2JlMjVlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xMTUsOCArMTE1LDggQEAgcHVi
bGljOgogICAgICAgICAvLyBuZXZlciBvdmVybGFwIHdpdGggZWFjaCBvdGhlci4KICAgICAgICAg
aWYgKCFib3VuZHMuaW50ZXJzZWN0cyhtX2JvdW5kaW5nQm94KSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGF5ZXJSZWN0cy5z
aXplKCk7IGkrKykgewotICAgICAgICAgICAgaWYgKG1fbGF5ZXJSZWN0c1tpXS5pbnRlcnNlY3Rz
KGJvdW5kcykpCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgbGF5ZXJSZWN0IDogbV9sYXllclJl
Y3RzKSB7CisgICAgICAgICAgICBpZiAobGF5ZXJSZWN0LmludGVyc2VjdHMoYm91bmRzKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0yMDQsOCArMjA0LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICghcmVjdHMu
c2l6ZSgpIHx8ICFib3VuZGluZ1JlY3QuaW50ZXJzZWN0cyhyZWN0KSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBy
ZWN0cy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChyZWN0c1tpXS5pbnRlcnNl
Y3RzKHJlY3QpKQorICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjdXJyZW50UmVjdCA6IHJl
Y3RzKSB7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSZWN0LmludGVyc2VjdHMocmVjdCkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTAyLDggKzUwMiw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjp1cGRhdGVTY3JvbGxDb29yZGluYXRlZExheWVyc0FmdGVyRmx1c2goKQogICAg
IHVwZGF0ZUN1c3RvbUxheWVyc0FmdGVyRmx1c2goKTsKICNlbmRpZgogCi0gICAgZm9yIChhdXRv
IGl0ID0gbV9zY3JvbGxDb29yZGluYXRlZExheWVyc05lZWRpbmdVcGRhdGUuYmVnaW4oKSwgZW5k
ID0gbV9zY3JvbGxDb29yZGluYXRlZExheWVyc05lZWRpbmdVcGRhdGUuZW5kKCk7IGl0ICE9IGVu
ZDsgKytpdCkKLSAgICAgICAgdXBkYXRlU2Nyb2xsQ29vcmRpbmF0ZWRTdGF0dXMoKippdCk7Cisg
ICAgZm9yIChhdXRvKiBsYXllciA6IG1fc2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnNOZWVkaW5nVXBk
YXRlKQorICAgICAgICB1cGRhdGVTY3JvbGxDb29yZGluYXRlZFN0YXR1cygqbGF5ZXIpOwogCiAg
ICAgbV9zY3JvbGxDb29yZGluYXRlZExheWVyc05lZWRpbmdVcGRhdGUuY2xlYXIoKTsKIH0KQEAg
LTU0MCw4ICs1NDAsOCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ3VzdG9t
TGF5ZXJzQWZ0ZXJGbHVzaCgpCiAgICAgaWYgKCFtX3Njcm9sbGluZ0xheWVyc05lZWRpbmdVcGRh
dGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50ID0gdGhp
cy0+Y2hyb21lQ2xpZW50KCk7CiAKLSAgICAgICAgZm9yIChhdXRvIGl0ID0gbV9zY3JvbGxpbmdM
YXllcnNOZWVkaW5nVXBkYXRlLmJlZ2luKCksIGVuZCA9IG1fc2Nyb2xsaW5nTGF5ZXJzTmVlZGlu
Z1VwZGF0ZS5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgdXBkYXRlU2Nyb2xs
aW5nTGF5ZXJXaXRoQ2xpZW50KCoqaXQsIGNocm9tZUNsaWVudCk7CisgICAgICAgIGZvciAoYXV0
byogbGF5ZXIgOiBtX3Njcm9sbGluZ0xheWVyc05lZWRpbmdVcGRhdGUpCisgICAgICAgICAgICB1
cGRhdGVTY3JvbGxpbmdMYXllcldpdGhDbGllbnQoKmxheWVyLCBjaHJvbWVDbGllbnQpOwogICAg
ICAgICBtX3Njcm9sbGluZ0xheWVyc05lZWRpbmdVcGRhdGUuY2xlYXIoKTsKICAgICB9CiAgICAg
bV9zY3JvbGxpbmdMYXllcnNOZWVkaW5nVXBkYXRlLmNsZWFyKCk7CkBAIC0xMTI0LDIwICsxMTI0
LDIwIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXBNYXBSZWN1cnNp
dmUoT3ZlcmxhcE1hcCYgb3ZlcmxhcE1hcCwgUmVuCiAKICAgICBpZiAobGF5ZXIuaXNTdGFja2lu
Z0NvbnRhaW5lcigpKSB7CiAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9y
ZGVyTGlzdCA9IGxheWVyLm5lZ1pPcmRlckxpc3QoKSkgewotICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDAsIHNpemUgPSBuZWdaT3JkZXJMaXN0LT5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0g
ICAgICAgICAgICAgICAgYWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKG92ZXJsYXBNYXAsICpuZWda
T3JkZXJMaXN0LT5hdChpKSwgJmxheWVyKTsKKyAgICAgICAgICAgIGZvciAoYXV0byogcmVuZGVy
TGF5ZXIgOiAqbmVnWk9yZGVyTGlzdCkKKyAgICAgICAgICAgICAgICBhZGRUb092ZXJsYXBNYXBS
ZWN1cnNpdmUob3ZlcmxhcE1hcCwgKnJlbmRlckxheWVyLCAmbGF5ZXIpOwogICAgICAgICB9CiAg
ICAgfQogCiAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3JtYWxGbG93TGlzdCA9IGxh
eWVyLm5vcm1hbEZsb3dMaXN0KCkpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUg
PSBub3JtYWxGbG93TGlzdC0+c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgYWRk
VG9PdmVybGFwTWFwUmVjdXJzaXZlKG92ZXJsYXBNYXAsICpub3JtYWxGbG93TGlzdC0+YXQoaSks
ICZsYXllcik7CisgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbm9ybWFsRmxvd0xp
c3QpCisgICAgICAgICAgICBhZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUob3ZlcmxhcE1hcCwgKnJl
bmRlckxheWVyLCAmbGF5ZXIpOwogICAgIH0KIAogICAgIGlmIChsYXllci5pc1N0YWNraW5nQ29u
dGFpbmVyKCkpIHsKICAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBwb3NaT3JkZXJM
aXN0ID0gbGF5ZXIucG9zWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMCwgc2l6ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAg
ICAgICAgICAgICBhZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUob3ZlcmxhcE1hcCwgKnBvc1pPcmRl
ckxpc3QtPmF0KGkpLCAmbGF5ZXIpOworICAgICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXll
ciA6ICpwb3NaT3JkZXJMaXN0KQorICAgICAgICAgICAgICAgIGFkZFRvT3ZlcmxhcE1hcFJlY3Vy
c2l2ZShvdmVybGFwTWFwLCAqcmVuZGVyTGF5ZXIsICZsYXllcik7CiAgICAgICAgIH0KICAgICB9
CiAgICAgCkBAIC0xMTU2LDEwICsxMTU2LDggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50c0Zvck5hbWVkRmxvd0ZpeGVkKFJlbmQKICAg
ICBWZWN0b3I8UmVuZGVyTGF5ZXIqPiBmaXhlZExheWVyczsKICAgICBsYXllci5yZW5kZXJlcigp
LnZpZXcoKS5mbG93VGhyZWFkQ29udHJvbGxlcigpLmNvbGxlY3RGaXhlZFBvc2l0aW9uZWRMYXll
cnMoZml4ZWRMYXllcnMpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaXhlZExheWVy
cy5zaXplKCk7ICsraSkgewotICAgICAgICBSZW5kZXJMYXllciogZml4ZWRMYXllciA9IGZpeGVk
TGF5ZXJzLmF0KGkpOworICAgIGZvciAoYXV0byogZml4ZWRMYXllciA6IGZpeGVkTGF5ZXJzKQog
ICAgICAgICBjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoJmxheWVyLCAqZml4ZWRMYXll
ciwgb3ZlcmxhcE1hcCwgY2hpbGRTdGF0ZSwgbGF5ZXJzQ2hhbmdlZCwgYW55RGVzY2VuZGFudEhh
czNEVHJhbnNmb3JtKTsKLSAgICB9CiB9CiAKIC8vICBSZWN1cnNlIHRocm91Z2ggdGhlIGxheWVy
cyBpbiB6LWluZGV4IGFuZCBvdmVyZmxvdyBvcmRlciAod2hpY2ggaXMgZXF1aXZhbGVudCB0byBw
YWludGluZyBvcmRlcikKQEAgLTEyNjAsOCArMTI1OCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIqIGFuY2Vz
dG9yCiAKICAgICBpZiAobGF5ZXIuaXNTdGFja2luZ0NvbnRhaW5lcigpKSB7CiAgICAgICAgIGlm
IChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IGxheWVyLm5lZ1pPcmRlckxp
c3QoKSkgewotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBuZWdaT3JkZXJM
aXN0LT5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICBjb21wdXRlQ29t
cG9zaXRpbmdSZXF1aXJlbWVudHMoJmxheWVyLCAqbmVnWk9yZGVyTGlzdC0+YXQoaSksIG92ZXJs
YXBNYXAsIGNoaWxkU3RhdGUsIGxheWVyc0NoYW5nZWQsIGFueURlc2NlbmRhbnRIYXMzRFRyYW5z
Zm9ybSk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5lZ1pPcmRlckxp
c3QpIHsKKyAgICAgICAgICAgICAgICBjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoJmxh
eWVyLCAqcmVuZGVyTGF5ZXIsIG92ZXJsYXBNYXAsIGNoaWxkU3RhdGUsIGxheWVyc0NoYW5nZWQs
IGFueURlc2NlbmRhbnRIYXMzRFRyYW5zZm9ybSk7CiAKICAgICAgICAgICAgICAgICAvLyBJZiB3
ZSBoYXZlIHRvIG1ha2UgYSBsYXllciBmb3IgdGhpcyBjaGlsZCwgbWFrZSBvbmUgbm93IHNvIHdl
IGNhbiBoYXZlIGEgY29udGVudHMgbGF5ZXIKICAgICAgICAgICAgICAgICAvLyAoc2luY2Ugd2Ug
bmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgLXZlIHotb3JkZXIgY2hpbGQgcmVuZGVycyB1bmRlcm5l
YXRoIG91ciBjb250ZW50cykuCkBAIC0xMjg5LDE0ICsxMjg3LDE0IEBAIHZvaWQgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIq
IGFuY2VzdG9yCiAKICAgICAKICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZs
b3dMaXN0ID0gbGF5ZXIubm9ybWFsRmxvd0xpc3QoKSkgewotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMCwgc2l6ZSA9IG5vcm1hbEZsb3dMaXN0LT5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAg
ICAgICAgICBjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoJmxheWVyLCAqbm9ybWFsRmxv
d0xpc3QtPmF0KGkpLCBvdmVybGFwTWFwLCBjaGlsZFN0YXRlLCBsYXllcnNDaGFuZ2VkLCBhbnlE
ZXNjZW5kYW50SGFzM0RUcmFuc2Zvcm0pOworICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVy
IDogKm5vcm1hbEZsb3dMaXN0KQorICAgICAgICAgICAgY29tcHV0ZUNvbXBvc2l0aW5nUmVxdWly
ZW1lbnRzKCZsYXllciwgKnJlbmRlckxheWVyLCBvdmVybGFwTWFwLCBjaGlsZFN0YXRlLCBsYXll
cnNDaGFuZ2VkLCBhbnlEZXNjZW5kYW50SGFzM0RUcmFuc2Zvcm0pOwogICAgIH0KIAogICAgIGlm
IChsYXllci5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKICAgICAgICAgaWYgKFZlY3RvcjxSZW5k
ZXJMYXllcio+KiBwb3NaT3JkZXJMaXN0ID0gbGF5ZXIucG9zWk9yZGVyTGlzdCgpKSB7Ci0gICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUoKTsg
aSA8IHNpemU7ICsraSkKLSAgICAgICAgICAgICAgICBjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJl
bWVudHMoJmxheWVyLCAqcG9zWk9yZGVyTGlzdC0+YXQoaSksIG92ZXJsYXBNYXAsIGNoaWxkU3Rh
dGUsIGxheWVyc0NoYW5nZWQsIGFueURlc2NlbmRhbnRIYXMzRFRyYW5zZm9ybSk7CisgICAgICAg
ICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKnBvc1pPcmRlckxpc3QpCisgICAgICAgICAg
ICAgICAgY29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKCZsYXllciwgKnJlbmRlckxheWVy
LCBvdmVybGFwTWFwLCBjaGlsZFN0YXRlLCBsYXllcnNDaGFuZ2VkLCBhbnlEZXNjZW5kYW50SGFz
M0RUcmFuc2Zvcm0pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNDExLDEwICsxNDA5LDkgQEAg
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVSZWdpb25Db21wb3NpdGluZ1JlcXVp
cmVtZW50cyhSZW5kZXJOYW1lZEZsb3cKICAgICBvdmVybGFwTWFwLmdlb21ldHJ5TWFwKCkucHVz
aFJlbmRlckZsb3dUaHJlYWQoZmxvd1RocmVhZCk7CiAKICAgICBpZiAoY29uc3QgUmVuZGVyTGF5
ZXJMaXN0KiBsYXllckxpc3QgPSBmbG93VGhyZWFkLT5nZXRMYXllckxpc3RGb3JSZWdpb24ocmVn
aW9uKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgbGlzdFNpemUgPSBsYXllckxpc3Qt
PnNpemUoKTsgaSA8IGxpc3RTaXplOyArK2kpIHsKLSAgICAgICAgICAgIFJlbmRlckxheWVyJiBj
dXJMYXllciA9ICpsYXllckxpc3QtPmF0KGkpOwotICAgICAgICAgICAgQVNTRVJUKGZsb3dUaHJl
YWQtPnJlZ2lvbkZvckNvbXBvc2l0ZWRMYXllcihjdXJMYXllcikgPT0gcmVnaW9uKTsKLSAgICAg
ICAgICAgIGNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyhmbG93VGhyZWFkLT5sYXllcigp
LCBjdXJMYXllciwgb3ZlcmxhcE1hcCwgY2hpbGRTdGF0ZSwgbGF5ZXJzQ2hhbmdlZCwgYW55RGVz
Y2VuZGFudEhhczNEVHJhbnNmb3JtKTsKKyAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6
ICpsYXllckxpc3QpIHsKKyAgICAgICAgICAgIEFTU0VSVChmbG93VGhyZWFkLT5yZWdpb25Gb3JD
b21wb3NpdGVkTGF5ZXIoKnJlbmRlckxheWVyKSA9PSByZWdpb24pOworICAgICAgICAgICAgY29t
cHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKGZsb3dUaHJlYWQtPmxheWVyKCksICpyZW5kZXJM
YXllciwgb3ZlcmxhcE1hcCwgY2hpbGRTdGF0ZSwgbGF5ZXJzQ2hhbmdlZCwgYW55RGVzY2VuZGFu
dEhhczNEVHJhbnNmb3JtKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTQ2OSwxMCArMTQ2Niw4
IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRy
ZWVGb3JOYW1lZEZsb3dGaXhlZChSZW5kZXJMCiAgICAgVmVjdG9yPFJlbmRlckxheWVyKj4gZml4
ZWRMYXllcnM7CiAgICAgbGF5ZXIucmVuZGVyZXIoKS52aWV3KCkuZmxvd1RocmVhZENvbnRyb2xs
ZXIoKS5jb2xsZWN0Rml4ZWRQb3NpdGlvbmVkTGF5ZXJzKGZpeGVkTGF5ZXJzKTsKIAotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZml4ZWRMYXllcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
UmVuZGVyTGF5ZXIqIGZpeGVkTGF5ZXIgPSBmaXhlZExheWVycy5hdChpKTsKKyAgICBmb3IgKGF1
dG8qIGZpeGVkTGF5ZXIgOiBmaXhlZExheWVycykKICAgICAgICAgcmVidWlsZENvbXBvc2l0aW5n
TGF5ZXJUcmVlKCpmaXhlZExheWVyLCBjaGlsZEdyYXBoaWNzTGF5ZXJzT2ZFbmNsb3NpbmdMYXll
ciwgZGVwdGgpOwotICAgIH0KIH0KIAogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYnVp
bGRDb21wb3NpdGluZ0xheWVyVHJlZShSZW5kZXJMYXllciYgbGF5ZXIsIFZlY3RvcjxHcmFwaGlj
c0xheWVyKj4mIGNoaWxkTGF5ZXJzT2ZFbmNsb3NpbmdMYXllciwgaW50IGRlcHRoKQpAQCAtMTUy
NCw4ICsxNTE5LDggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYnVpbGRDb21wb3Np
dGluZ0xheWVyVHJlZShSZW5kZXJMYXllciYgbGF5ZXIsIFZlY3QKIAogICAgIGlmIChsYXllci5p
c1N0YWNraW5nQ29udGFpbmVyKCkpIHsKICAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+
KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsgaSA8IHNpemU7
ICsraSkKLSAgICAgICAgICAgICAgICByZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRyZWUoKm5lZ1pP
cmRlckxpc3QtPmF0KGkpLCBjaGlsZExpc3QsIGRlcHRoICsgMSk7CisgICAgICAgICAgICBmb3Ig
KGF1dG8qIHJlbmRlckxheWVyIDogKm5lZ1pPcmRlckxpc3QpCisgICAgICAgICAgICAgICAgcmVi
dWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKCpyZW5kZXJMYXllciwgY2hpbGRMaXN0LCBkZXB0aCAr
IDEpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgYSBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxk
IGlzIGNvbXBvc2l0aW5nLCB3ZSBnZXQgYSBmb3JlZ3JvdW5kIGxheWVyIHdoaWNoIG5lZWRzIHRv
IGdldCBwYXJlbnRlZC4KQEAgLTE1MzcsMTQgKzE1MzIsMTQgQEAgdm9pZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZShSZW5kZXJMYXllciYgbGF5ZXIs
IFZlY3QKICAgICAgICAgcmVidWlsZFJlZ2lvbkNvbXBvc2l0aW5nTGF5ZXJUcmVlKGRvd25jYXN0
PFJlbmRlckJsb2NrRmxvdz4obGF5ZXIucmVuZGVyZXIoKSkucmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQoKSwgbGF5ZXJDaGlsZHJlbiwgZGVwdGggKyAxKTsKIAogICAgIGlmIChWZWN0b3I8UmVuZGVy
TGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSBsYXllci5ub3JtYWxGbG93TGlzdCgpKSB7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gbm9ybWFsRmxvd0xpc3QtPnNpemUoKTsgaSA8
IHNpemU7ICsraSkKLSAgICAgICAgICAgIHJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZSgqbm9y
bWFsRmxvd0xpc3QtPmF0KGkpLCBjaGlsZExpc3QsIGRlcHRoICsgMSk7CisgICAgICAgIGZvciAo
YXV0byogcmVuZGVyTGF5ZXIgOiAqbm9ybWFsRmxvd0xpc3QpCisgICAgICAgICAgICByZWJ1aWxk
Q29tcG9zaXRpbmdMYXllclRyZWUoKnJlbmRlckxheWVyLCBjaGlsZExpc3QsIGRlcHRoICsgMSk7
CiAgICAgfQogICAgIAogICAgIGlmIChsYXllci5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKICAg
ICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBwb3NaT3JkZXJMaXN0ID0gbGF5ZXIucG9z
Wk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHBv
c1pPcmRlckxpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAgICAgICByZWJ1
aWxkQ29tcG9zaXRpbmdMYXllclRyZWUoKnBvc1pPcmRlckxpc3QtPmF0KGkpLCBjaGlsZExpc3Qs
IGRlcHRoICsgMSk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKnBvc1pP
cmRlckxpc3QpCisgICAgICAgICAgICAgICAgcmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKCpy
ZW5kZXJMYXllciwgY2hpbGRMaXN0LCBkZXB0aCArIDEpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0xNTkzLDEwICsxNTg4LDkgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYnVpbGRS
ZWdpb25Db21wb3NpdGluZ0xheWVyVHJlZShSZW5kZXJOYW1lZEZsb3dGcmEKICAgICBSZW5kZXJG
bG93VGhyZWFkKiBmbG93VGhyZWFkID0gcmVnaW9uLT5mbG93VGhyZWFkKCk7CiAgICAgQVNTRVJU
KGZsb3dUaHJlYWQtPmNvbGxlY3RzR3JhcGhpY3NMYXllcnNVbmRlclJlZ2lvbnMoKSk7CiAgICAg
aWYgKGNvbnN0IFJlbmRlckxheWVyTGlzdCogbGF5ZXJMaXN0ID0gZmxvd1RocmVhZC0+Z2V0TGF5
ZXJMaXN0Rm9yUmVnaW9uKHJlZ2lvbikpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIGxp
c3RTaXplID0gbGF5ZXJMaXN0LT5zaXplKCk7IGkgPCBsaXN0U2l6ZTsgKytpKSB7Ci0gICAgICAg
ICAgICBSZW5kZXJMYXllciYgY3VyTGF5ZXIgPSAqbGF5ZXJMaXN0LT5hdChpKTsKLSAgICAgICAg
ICAgIEFTU0VSVChmbG93VGhyZWFkLT5yZWdpb25Gb3JDb21wb3NpdGVkTGF5ZXIoY3VyTGF5ZXIp
ID09IHJlZ2lvbik7Ci0gICAgICAgICAgICByZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRyZWUoY3Vy
TGF5ZXIsIGNoaWxkTGlzdCwgZGVwdGggKyAxKTsKKyAgICAgICAgZm9yIChhdXRvKiByZW5kZXJM
YXllciA6ICpsYXllckxpc3QpIHsKKyAgICAgICAgICAgIEFTU0VSVChmbG93VGhyZWFkLT5yZWdp
b25Gb3JDb21wb3NpdGVkTGF5ZXIoKnJlbmRlckxheWVyKSA9PSByZWdpb24pOworICAgICAgICAg
ICAgcmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKCpyZW5kZXJMYXllciwgY2hpbGRMaXN0LCBk
ZXB0aCArIDEpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTgwMSwyMCArMTc5NSwyMCBAQCB2
b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkoUmVuZGVy
TGF5ZXImIGxheWVyLCBpbnQgZGVwdAogCiAgICAgaWYgKGxheWVyLmlzU3RhY2tpbmdDb250YWlu
ZXIoKSkgewogICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5lZ1pPcmRlckxpc3Qg
PSBsYXllci5uZWdaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
LCBzaXplID0gbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAg
ICAgICAgIHVwZGF0ZUxheWVyVHJlZUdlb21ldHJ5KCpuZWdaT3JkZXJMaXN0LT5hdChpKSwgZGVw
dGggKyAxKTsKKyAgICAgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbmVnWk9yZGVy
TGlzdCkKKyAgICAgICAgICAgICAgICB1cGRhdGVMYXllclRyZWVHZW9tZXRyeSgqcmVuZGVyTGF5
ZXIsIGRlcHRoICsgMSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoVmVjdG9yPFJlbmRl
ckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0ID0gbGF5ZXIubm9ybWFsRmxvd0xpc3QoKSkgewotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IG5vcm1hbEZsb3dMaXN0LT5zaXplKCk7IGkg
PCBzaXplOyArK2kpCi0gICAgICAgICAgICB1cGRhdGVMYXllclRyZWVHZW9tZXRyeSgqbm9ybWFs
Rmxvd0xpc3QtPmF0KGkpLCBkZXB0aCArIDEpOworICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxh
eWVyIDogKm5vcm1hbEZsb3dMaXN0KQorICAgICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlR2VvbWV0
cnkoKnJlbmRlckxheWVyLCBkZXB0aCArIDEpOwogICAgIH0KICAgICAKICAgICBpZiAobGF5ZXIu
aXNTdGFja2luZ0NvbnRhaW5lcigpKSB7CiAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIq
PiogcG9zWk9yZGVyTGlzdCA9IGxheWVyLnBvc1pPcmRlckxpc3QoKSkgewotICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7IGkgPCBzaXpl
OyArK2kpCi0gICAgICAgICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkoKnBvc1pPcmRl
ckxpc3QtPmF0KGkpLCBkZXB0aCArIDEpOworICAgICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJM
YXllciA6ICpwb3NaT3JkZXJMaXN0KQorICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyVHJlZUdl
b21ldHJ5KCpyZW5kZXJMYXllciwgZGVwdGggKyAxKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MTg1NCwyMyArMTg0OCwyMCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29t
cG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkoUmVuZGVyTGF5ZXImIGNvbQogICAgIAogICAgIGlm
IChsYXllci5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKICAgICAgICAgaWYgKFZlY3RvcjxSZW5k
ZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAg
ICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBuZWdaT3JkZXJMaXN0LT5zaXplKCk7Ci0gICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpCi0gICAgICAgICAgICAg
ICAgdXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkoY29tcG9zaXRpbmdBbmNlc3Rv
ciwgKm5lZ1pPcmRlckxpc3QtPmF0KGkpLCBjb21wb3NpdGVkQ2hpbGRyZW5Pbmx5KTsKKyAgICAg
ICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbmVnWk9yZGVyTGlzdCkKKyAgICAgICAg
ICAgICAgICB1cGRhdGVDb21wb3NpdGluZ0Rlc2NlbmRhbnRHZW9tZXRyeShjb21wb3NpdGluZ0Fu
Y2VzdG9yLCAqcmVuZGVyTGF5ZXIsIGNvbXBvc2l0ZWRDaGlsZHJlbk9ubHkpOwogICAgICAgICB9
CiAgICAgfQogCiAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3JtYWxGbG93TGlzdCA9
IGxheWVyLm5vcm1hbEZsb3dMaXN0KCkpIHsKLSAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbm9y
bWFsRmxvd0xpc3QtPnNpemUoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0
U2l6ZTsgKytpKQotICAgICAgICAgICAgdXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0
cnkoY29tcG9zaXRpbmdBbmNlc3RvciwgKm5vcm1hbEZsb3dMaXN0LT5hdChpKSwgY29tcG9zaXRl
ZENoaWxkcmVuT25seSk7CisgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbm9ybWFs
Rmxvd0xpc3QpCisgICAgICAgICAgICB1cGRhdGVDb21wb3NpdGluZ0Rlc2NlbmRhbnRHZW9tZXRy
eShjb21wb3NpdGluZ0FuY2VzdG9yLCAqcmVuZGVyTGF5ZXIsIGNvbXBvc2l0ZWRDaGlsZHJlbk9u
bHkpOwogICAgIH0KICAgICAKICAgICBpZiAobGF5ZXIuaXNTdGFja2luZ0NvbnRhaW5lcigpKSB7
CiAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IGxheWVy
LnBvc1pPcmRlckxpc3QoKSkgewotICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gcG9zWk9y
ZGVyTGlzdC0+c2l6ZSgpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0
U2l6ZTsgKytpKQotICAgICAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdl
b21ldHJ5KGNvbXBvc2l0aW5nQW5jZXN0b3IsICpwb3NaT3JkZXJMaXN0LT5hdChpKSwgY29tcG9z
aXRlZENoaWxkcmVuT25seSk7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDog
KnBvc1pPcmRlckxpc3QpCisgICAgICAgICAgICAgICAgdXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5k
YW50R2VvbWV0cnkoY29tcG9zaXRpbmdBbmNlc3RvciwgKnJlbmRlckxheWVyLCBjb21wb3NpdGVk
Q2hpbGRyZW5Pbmx5KTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTE4OTcsMTggKzE4ODgs
MTggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlY3Vyc2l2ZVJlcGFpbnRMYXllcihS
ZW5kZXJMYXllciYgbGF5ZXIpCiAKICAgICBpZiAobGF5ZXIuaGFzQ29tcG9zaXRpbmdEZXNjZW5k
YW50KCkpIHsKICAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0
ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MCwgc2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
ICAgICAgICByZWN1cnNpdmVSZXBhaW50TGF5ZXIoKm5lZ1pPcmRlckxpc3QtPmF0KGkpKTsKKyAg
ICAgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbmVnWk9yZGVyTGlzdCkKKyAgICAg
ICAgICAgICAgICByZWN1cnNpdmVSZXBhaW50TGF5ZXIoKnJlbmRlckxheWVyKTsKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IGxh
eWVyLnBvc1pPcmRlckxpc3QoKSkgewotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNp
emUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICAg
ICAgcmVjdXJzaXZlUmVwYWludExheWVyKCpwb3NaT3JkZXJMaXN0LT5hdChpKSk7CisgICAgICAg
ICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKnBvc1pPcmRlckxpc3QpCisgICAgICAgICAg
ICAgICAgcmVjdXJzaXZlUmVwYWludExheWVyKCpyZW5kZXJMYXllcik7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3JtYWxGbG93TGlzdCA9IGxheWVy
Lm5vcm1hbEZsb3dMaXN0KCkpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBu
b3JtYWxGbG93TGlzdC0+c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgcmVjdXJz
aXZlUmVwYWludExheWVyKCpub3JtYWxGbG93TGlzdC0+YXQoaSkpOworICAgICAgICBmb3IgKGF1
dG8qIHJlbmRlckxheWVyIDogKm5vcm1hbEZsb3dMaXN0KQorICAgICAgICAgICAgcmVjdXJzaXZl
UmVwYWludExheWVyKCpyZW5kZXJMYXllcik7CiAgICAgfQogfQogCkBAIC0yODI2LDggKzI4MTcs
OCBAQCBzdGF0aWMgdm9pZCByZXNldFRyYWNrZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUoR3JhcGhp
Y3NMYXllciYgZ3JhcGhpY3NMYXllcikKIHsKICAgICBncmFwaGljc0xheWVyLnJlc2V0VHJhY2tl
ZFJlcGFpbnRzKCk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGdyYXBoaWNzTGF5
ZXIuY2hpbGRyZW4oKS5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHJlc2V0VHJhY2tl
ZFJlcGFpbnRSZWN0c1JlY3Vyc2l2ZSgqZ3JhcGhpY3NMYXllci5jaGlsZHJlbigpW2ldKTsKKyAg
ICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiBncmFwaGljc0xheWVyLmNoaWxkcmVuKCkpCisgICAg
ICAgIHJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0c1JlY3Vyc2l2ZSgqY2hpbGRMYXllcik7CiAKICAg
ICBpZiAoR3JhcGhpY3NMYXllciogcmVwbGljYUxheWVyID0gZ3JhcGhpY3NMYXllci5yZXBsaWNh
TGF5ZXIoKSkKICAgICAgICAgcmVzZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZlKCpyZXBs
aWNhTGF5ZXIpOwpAQCAtMzUzNCwyMyArMzUyNSwyMyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6bGF5ZXJIYXMzRENvbnRlbnQoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKSBjb25zdAog
CiAgICAgaWYgKGxheWVyLmlzU3RhY2tpbmdDb250YWluZXIoKSkgewogICAgICAgICBpZiAoVmVj
dG9yPFJlbmRlckxheWVyKj4qIG5lZ1pPcmRlckxpc3QgPSBsYXllci5uZWdaT3JkZXJMaXN0KCkp
IHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gbmVnWk9yZGVyTGlzdC0+
c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxheWVySGFzM0RD
b250ZW50KCpuZWdaT3JkZXJMaXN0LT5hdChpKSkpCisgICAgICAgICAgICBmb3IgKGF1dG8qIHJl
bmRlckxheWVyIDogKm5lZ1pPcmRlckxpc3QpIHsKKyAgICAgICAgICAgICAgICBpZiAobGF5ZXJI
YXMzRENvbnRlbnQoKnJlbmRlckxheWVyKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoVmVjdG9yPFJlbmRl
ckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBsYXllci5wb3NaT3JkZXJMaXN0KCkpIHsKLSAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gcG9zWk9yZGVyTGlzdC0+c2l6ZSgpOyBp
IDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxheWVySGFzM0RDb250ZW50KCpw
b3NaT3JkZXJMaXN0LT5hdChpKSkpCisgICAgICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVy
IDogKnBvc1pPcmRlckxpc3QpIHsKKyAgICAgICAgICAgICAgICBpZiAobGF5ZXJIYXMzRENvbnRl
bnQoKnJlbmRlckxheWVyKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVy
Kj4qIG5vcm1hbEZsb3dMaXN0ID0gbGF5ZXIubm9ybWFsRmxvd0xpc3QoKSkgewotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IG5vcm1hbEZsb3dMaXN0LT5zaXplKCk7IGkgPCBzaXpl
OyArK2kpIHsKLSAgICAgICAgICAgIGlmIChsYXllckhhczNEQ29udGVudCgqbm9ybWFsRmxvd0xp
c3QtPmF0KGkpKSkKKyAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpub3JtYWxGbG93
TGlzdCkgeworICAgICAgICAgICAgaWYgKGxheWVySGFzM0RDb250ZW50KCpyZW5kZXJMYXllcikp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0zODcy
LDI0ICszODYzLDIzIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWdpc3RlckFsbFZp
ZXdwb3J0Q29uc3RyYWluZWRMYXllcnMoKQogICAgIExheWVyTWFwIGxheWVyTWFwOwogICAgIFN0
aWNreUNvbnRhaW5lck1hcCBzdGlja3lDb250YWluZXJNYXA7CiAKLSAgICBmb3IgKGF1dG8gaXQg
PSBtX3Njcm9sbENvb3JkaW5hdGVkTGF5ZXJzLmJlZ2luKCksIGVuZCA9IG1fc2Nyb2xsQ29vcmRp
bmF0ZWRMYXllcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZW5kZXJMYXll
ciYgbGF5ZXIgPSAqKml0OwotICAgICAgICBBU1NFUlQobGF5ZXIuaXNDb21wb3NpdGVkKCkpOwor
ICAgIGZvciAoYXV0byogbGF5ZXIgOiBtX3Njcm9sbENvb3JkaW5hdGVkTGF5ZXJzKSB7CisgICAg
ICAgIEFTU0VSVChsYXllci0+aXNDb21wb3NpdGVkKCkpOwogCiAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxWaWV3cG9ydENvbnN0cmFpbnRzPiBjb25zdHJhaW50czsKLSAgICAgICAgaWYgKGxheWVy
LnJlbmRlcmVyKCkuaXNTdGlja3lQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgIGNvbnN0cmFp
bnRzID0gc3RkOjptYWtlX3VuaXF1ZTxTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+
KGNvbXB1dGVTdGlja3lWaWV3cG9ydENvbnN0cmFpbnRzKGxheWVyKSk7CisgICAgICAgIGlmIChs
YXllci0+cmVuZGVyZXIoKS5pc1N0aWNreVBvc2l0aW9uZWQoKSkgeworICAgICAgICAgICAgY29u
c3RyYWludHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJh
aW50cz4oY29tcHV0ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CiAgICAgICAg
ICAgICBjb25zdCBSZW5kZXJMYXllciogZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXIgPSBu
dWxscHRyOwotICAgICAgICAgICAgaWYgKGlzQXN5bmNTY3JvbGxhYmxlU3RpY2t5TGF5ZXIobGF5
ZXIsICZlbmNsb3NpbmdUb3VjaFNjcm9sbGFibGVMYXllcikgJiYgZW5jbG9zaW5nVG91Y2hTY3Jv
bGxhYmxlTGF5ZXIpIHsKKyAgICAgICAgICAgIGlmIChpc0FzeW5jU2Nyb2xsYWJsZVN0aWNreUxh
eWVyKCpsYXllciwgJmVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyKSAmJiBlbmNsb3NpbmdU
b3VjaFNjcm9sbGFibGVMYXllcikgewogICAgICAgICAgICAgICAgIEFTU0VSVChlbmNsb3NpbmdU
b3VjaFNjcm9sbGFibGVMYXllci0+aXNDb21wb3NpdGVkKCkpOwotICAgICAgICAgICAgICAgIHN0
aWNreUNvbnRhaW5lck1hcC5hZGQobGF5ZXIuYmFja2luZygpLT5ncmFwaGljc0xheWVyKCktPnBs
YXRmb3JtTGF5ZXIoKSwgZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXItPmJhY2tpbmcoKS0+
c2Nyb2xsaW5nTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpKTsKKyAgICAgICAgICAgICAgICBzdGlj
a3lDb250YWluZXJNYXAuYWRkKGxheWVyLT5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKS0+cGxh
dGZvcm1MYXllcigpLCBlbmNsb3NpbmdUb3VjaFNjcm9sbGFibGVMYXllci0+YmFja2luZygpLT5z
Y3JvbGxpbmdMYXllcigpLT5wbGF0Zm9ybUxheWVyKCkpOwogICAgICAgICAgICAgfQotICAgICAg
ICB9IGVsc2UgaWYgKGxheWVyLnJlbmRlcmVyKCkuc3R5bGUoKS5wb3NpdGlvbigpID09IEZpeGVk
UG9zaXRpb24pCi0gICAgICAgICAgICBjb25zdHJhaW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8Rml4
ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNvbXB1dGVGaXhlZFZpZXdwb3J0Q29uc3Ry
YWludHMobGF5ZXIpKTsKKyAgICAgICAgfSBlbHNlIGlmIChsYXllci0+cmVuZGVyZXIoKS5zdHls
ZSgpLnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikKKyAgICAgICAgICAgIGNvbnN0cmFpbnRz
ID0gc3RkOjptYWtlX3VuaXF1ZTxGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29t
cHV0ZUZpeGVkVmlld3BvcnRDb25zdHJhaW50cygqbGF5ZXIpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbGF5ZXJNYXAuYWRkKGxheWVyLmJhY2tpbmco
KS0+Z3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUxheWVyKCksIFdURjo6bW92ZShjb25zdHJhaW50
cykpOworICAgICAgICBsYXllck1hcC5hZGQobGF5ZXItPmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXll
cigpLT5wbGF0Zm9ybUxheWVyKCksIFdURjo6bW92ZShjb25zdHJhaW50cykpOwogICAgIH0KICAg
ICAKICAgICBpZiAoQ2hyb21lQ2xpZW50KiBjbGllbnQgPSB0aGlzLT5jaHJvbWVDbGllbnQoKSkK
QEAgLTM5MTgsOCArMzkwOCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWdpc3Rl
ckFsbFNjcm9sbGluZ0xheWVycygpCiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGZvciAoYXV0byBpdCA9IG1fc2Nyb2xsaW5nTGF5ZXJzLmJlZ2luKCksIGVuZCA9IG1f
c2Nyb2xsaW5nTGF5ZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHVwZGF0ZVNj
cm9sbGluZ0xheWVyV2l0aENsaWVudCgqKml0LCBjbGllbnQpOworICAgIGZvciAoYXV0byogbGF5
ZXIgOiBtX3Njcm9sbGluZ0xheWVycykKKyAgICAgICAgdXBkYXRlU2Nyb2xsaW5nTGF5ZXJXaXRo
Q2xpZW50KCpsYXllciwgY2xpZW50KTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnVucmVnaXN0ZXJBbGxTY3JvbGxpbmdMYXllcnMoKQpAQCAtMzkyOCwxMSArMzkxOCwxMCBAQCB2
b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dW5yZWdpc3RlckFsbFNjcm9sbGluZ0xheWVycygp
CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0byBpdCA9
IG1fc2Nyb2xsaW5nTGF5ZXJzLmJlZ2luKCksIGVuZCA9IG1fc2Nyb2xsaW5nTGF5ZXJzLmVuZCgp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgUmVuZGVyTGF5ZXImIGxheWVyID0gKippdDsK
LSAgICAgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gbGF5ZXIuYmFja2luZygpOwor
ICAgIGZvciAoYXV0byogbGF5ZXIgOiBtX3Njcm9sbGluZ0xheWVycykgeworICAgICAgICBSZW5k
ZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSBsYXllci0+YmFja2luZygpOwogICAgICAgICBBU1NF
UlQoYmFja2luZyk7Ci0gICAgICAgIGNsaWVudC0+cmVtb3ZlU2Nyb2xsaW5nTGF5ZXIobGF5ZXIu
cmVuZGVyZXIoKS5lbGVtZW50KCksIGJhY2tpbmctPnNjcm9sbGluZ0xheWVyKCktPnBsYXRmb3Jt
TGF5ZXIoKSwgYmFja2luZy0+c2Nyb2xsaW5nQ29udGVudHNMYXllcigpLT5wbGF0Zm9ybUxheWVy
KCkpOworICAgICAgICBjbGllbnQtPnJlbW92ZVNjcm9sbGluZ0xheWVyKGxheWVyLT5yZW5kZXJl
cigpLmVsZW1lbnQoKSwgYmFja2luZy0+c2Nyb2xsaW5nTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigp
LCBiYWNraW5nLT5zY3JvbGxpbmdDb250ZW50c0xheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CiAg
ICAgfQogfQogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>