<?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>125536</bug_id>
          
          <creation_ts>2013-12-10 12:54:37 -0800</creation_ts>
          <short_desc>[CSS Shapes] Simplify RectangleShape implementation</short_desc>
          <delta_ts>2013-12-18 15:30:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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="Hans Muller">giles_joplin</reporter>
          <assigned_to name="Hans Muller">giles_joplin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>958471</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-12-10 12:54:37 -0800</bug_when>
    <thetext>Instead of caching FloatRoundedRect values, just compute them as needed. 

Rename RectangleShape to EllipseShape, to better reflect its use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958531</commentid>
    <comment_count>1</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-12-10 15:09:48 -0800</bug_when>
    <thetext>To reduce the size of this patch I&apos;ve left out the BoxShape changes. I also decided not to change the name of the RectangleShape class, since rectangle and inset-rectangle still exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958541</commentid>
    <comment_count>2</comment_count>
      <attachid>218914</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-12-10 15:29:05 -0800</bug_when>
    <thetext>Created attachment 218914
Patch

Instead of caching an instance of a private FloatRoundedRect (ish) class for RectangleShape&apos;s shape-margin and shape-padding bounds, we just compute the FloatRect and radii as needed. This reduces the classes footprint a little and it simplifies the implementation.

Removed the private RectangleShape::ShapeBounds class and made its cornerInterceptForWidth() method a static function. Added members for the RectangleShape constructor args, and private getters for their properties. There are no new tests because this is just an internal refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961001</commentid>
    <comment_count>3</comment_count>
      <attachid>218914</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-18 10:48:58 -0800</bug_when>
    <thetext>Comment on attachment 218914
Patch

Rejecting attachment 218914 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 218914, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ng file Source/WebCore/rendering/shapes/RectangleShape.cpp
Hunk #7 FAILED at 218.
1 out of 7 hunks FAILED -- saving rejects to file Source/WebCore/rendering/shapes/RectangleShape.cpp.rej
patching file Source/WebCore/rendering/shapes/RectangleShape.h
Hunk #2 succeeded at 58 with fuzz 1.
patching file Source/WebCore/rendering/shapes/Shape.cpp

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Andreas Kling&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/48798030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961122</commentid>
    <comment_count>4</comment_count>
      <attachid>219573</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-12-18 14:52:42 -0800</bug_when>
    <thetext>Created attachment 219573
Patch

Resync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961143</commentid>
    <comment_count>5</comment_count>
      <attachid>219573</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-18 15:30:43 -0800</bug_when>
    <thetext>Comment on attachment 219573
Patch

Clearing flags on attachment: 219573

Committed r160802: &lt;http://trac.webkit.org/changeset/160802&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961144</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-18 15:30:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218914</attachid>
            <date>2013-12-10 15:29:05 -0800</date>
            <delta_ts>2013-12-18 14:52:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>17936</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5ZGFkYWQ0Li42MWZiYWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTMtMTItMTAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBTaGFwZXNdIFNpbXBsaWZ5IFJlY3RhbmdsZVNoYXBlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU1MzYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9m
IGNhY2hpbmcgYW4gaW5zdGFuY2Ugb2YgYSBwcml2YXRlIEZsb2F0Um91bmRlZFJlY3QgKGlzaCkg
Y2xhc3MgZm9yCisgICAgICAgIFJlY3RhbmdsZVNoYXBlJ3Mgc2hhcGUtbWFyZ2luIGFuZCBzaGFw
ZS1wYWRkaW5nIGJvdW5kcywgd2UganVzdCBjb21wdXRlCisgICAgICAgIHRoZSBGbG9hdFJlY3Qg
YW5kIHJhZGlpIGFzIG5lZWRlZC4gVGhpcyByZWR1Y2VzIHRoZSBjbGFzc2VzIGZvb3RwcmludCBh
IGxpdHRsZQorICAgICAgICBhbmQgaXQgc2ltcGxpZmllcyB0aGUgaW1wbGVtZW50YXRpb24uCisK
KyAgICAgICAgUmVtb3ZlZCB0aGUgcHJpdmF0ZSBSZWN0YW5nbGVTaGFwZTo6U2hhcGVCb3VuZHMg
Y2xhc3MgYW5kIG1hZGUgaXRzCisgICAgICAgIGNvcm5lckludGVyY2VwdEZvcldpZHRoKCkgbWV0
aG9kIGEgc3RhdGljIGZ1bmN0aW9uLiBBZGRlZCBtZW1iZXJzIGZvcgorICAgICAgICB0aGUgUmVj
dGFuZ2xlU2hhcGUgY29uc3RydWN0b3IgYXJncywgYW5kIHByaXZhdGUgZ2V0dGVycyBmb3IgdGhl
aXIgcHJvcGVydGllcy4KKworICAgICAgICBUaGVyZSBhcmUgbm8gbmV3IHRlc3RzIGJlY2F1c2Ug
dGhpcyBpcyBqdXN0IGFuIGludGVybmFsIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogcmVuZGVy
aW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWN0YW5n
bGVTaGFwZTo6c2hhcGVQYWRkaW5nQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3Rhbmds
ZVNoYXBlOjpzaGFwZU1hcmdpbkJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjplbGxpcHNlWElu
dGVyY2VwdCk6CisgICAgICAgIChXZWJDb3JlOjplbGxpcHNlWUludGVyY2VwdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWN0YW5nbGVTaGFwZTo6Z2V0RXhjbHVkZWRJbnRlcnZhbHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVjdGFuZ2xlU2hhcGU6OmdldEluY2x1ZGVkSW50ZXJ2YWxzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvcm5lckludGVyY2VwdEZvcldpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlY3RhbmdsZVNoYXBlOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlY3RhbmdsZVNoYXBlOjpidWlsZFBhdGgpOgorICAgICAgICAqIHJlbmRl
cmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlY3Rhbmds
ZVNoYXBlOjpSZWN0YW5nbGVTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0YW5nbGVTaGFw
ZTo6cngpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdGFuZ2xlU2hhcGU6OnJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlY3RhbmdsZVNoYXBlOjp4KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3Rhbmds
ZVNoYXBlOjp5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RhbmdsZVNoYXBlOjp3aWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWN0YW5nbGVTaGFwZTo6aGVpZ2h0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNpcmNsZVNo
YXBlKTogUmVuYW1lZCB0aGlzIGludGVybmFsIGZ1bmN0aW9uIChpdCB3YXMgY3JlYXRlU2hhcGVD
aXJjbGUpIGJlY2F1c2UgaXQgd2FzIGluY29uc2lzdGVudC4KKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUVsbGlwc2VTaGFwZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0
ZVNoYXBlKToKKwogMjAxMy0xMi0xMCAgUm9iIEJ1aXMgIDxyb2IuYnVpc0BzYW1zdW5nLmNvbT4K
IAogICAgICAgICBDbGVhbiB1cCBTVkdTY3JpcHRFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuY3BwCmluZGV4IDM1ZGUzODcuLjI4
ZDExODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmVjdGFu
Z2xlU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmVjdGFu
Z2xlU2hhcGUuY3BwCkBAIC00Niw2NCArNDYsMzYgQEAgc3RhdGljIGlubGluZSBmbG9hdCBlbGxp
cHNlWUludGVyY2VwdChmbG9hdCB4LCBmbG9hdCByeCwgZmxvYXQgcnkpCiAgICAgcmV0dXJuIHJ5
ICogc3FydCgxIC0gKHggKiB4KSAvIChyeCAqIHJ4KSk7CiB9CiAKLVJlY3RhbmdsZVNoYXBlOjpT
aGFwZUJvdW5kcyBSZWN0YW5nbGVTaGFwZTo6U2hhcGVCb3VuZHM6OnBhZGRpbmdCb3VuZHMoZmxv
YXQgc2hhcGVQYWRkaW5nKSBjb25zdAorRmxvYXRSZWN0IFJlY3RhbmdsZVNoYXBlOjpzaGFwZVBh
ZGRpbmdCb3VuZHMoKSBjb25zdAogewotICAgIEFTU0VSVChzaGFwZVBhZGRpbmcgPj0gMCk7Ci0g
ICAgaWYgKCFzaGFwZVBhZGRpbmcgfHwgaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gKnRoaXM7
Ci0KLSAgICBmbG9hdCBib3VuZHNYID0geCgpICsgc3RkOjptaW4od2lkdGgoKSAvIDIsIHNoYXBl
UGFkZGluZyk7Ci0gICAgZmxvYXQgYm91bmRzWSA9IHkoKSArIHN0ZDo6bWluKGhlaWdodCgpIC8g
Miwgc2hhcGVQYWRkaW5nKTsKLSAgICBmbG9hdCBib3VuZHNXaWR0aCA9IHN0ZDo6bWF4KDAuMGYs
IHdpZHRoKCkgLSBzaGFwZVBhZGRpbmcgKiAyKTsKLSAgICBmbG9hdCBib3VuZHNIZWlnaHQgPSBz
dGQ6Om1heCgwLjBmLCBoZWlnaHQoKSAtIHNoYXBlUGFkZGluZyAqIDIpOwotICAgIGZsb2F0IGJv
dW5kc1JhZGl1c1ggPSBzdGQ6Om1heCgwLjBmLCByeCgpIC0gc2hhcGVQYWRkaW5nKTsKLSAgICBm
bG9hdCBib3VuZHNSYWRpdXNZID0gc3RkOjptYXgoMC4wZiwgcnkoKSAtIHNoYXBlUGFkZGluZyk7
Ci0gICAgcmV0dXJuIFJlY3RhbmdsZVNoYXBlOjpTaGFwZUJvdW5kcyhGbG9hdFJlY3QoYm91bmRz
WCwgYm91bmRzWSwgYm91bmRzV2lkdGgsIGJvdW5kc0hlaWdodCksIEZsb2F0U2l6ZShib3VuZHNS
YWRpdXNYLCBib3VuZHNSYWRpdXNZKSk7Ci19Ci0KLVJlY3RhbmdsZVNoYXBlOjpTaGFwZUJvdW5k
cyBSZWN0YW5nbGVTaGFwZTo6U2hhcGVCb3VuZHM6Om1hcmdpbkJvdW5kcyhmbG9hdCBzaGFwZU1h
cmdpbikgY29uc3QKLXsKLSAgICBBU1NFUlQoc2hhcGVNYXJnaW4gPj0gMCk7Ci0gICAgaWYgKCFz
aGFwZU1hcmdpbikKLSAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgZmxvYXQgYm91bmRzWCA9
IHgoKSAtIHNoYXBlTWFyZ2luOwotICAgIGZsb2F0IGJvdW5kc1kgPSB5KCkgLSBzaGFwZU1hcmdp
bjsKLSAgICBmbG9hdCBib3VuZHNXaWR0aCA9IHdpZHRoKCkgKyBzaGFwZU1hcmdpbiAqIDI7Ci0g
ICAgZmxvYXQgYm91bmRzSGVpZ2h0ID0gaGVpZ2h0KCkgKyBzaGFwZU1hcmdpbiAqIDI7Ci0gICAg
ZmxvYXQgYm91bmRzUmFkaXVzWCA9IHJ4KCkgKyBzaGFwZU1hcmdpbjsKLSAgICBmbG9hdCBib3Vu
ZHNSYWRpdXNZID0gcnkoKSArIHNoYXBlTWFyZ2luOwotICAgIHJldHVybiBSZWN0YW5nbGVTaGFw
ZTo6U2hhcGVCb3VuZHMoRmxvYXRSZWN0KGJvdW5kc1gsIGJvdW5kc1ksIGJvdW5kc1dpZHRoLCBi
b3VuZHNIZWlnaHQpLCBGbG9hdFNpemUoYm91bmRzUmFkaXVzWCwgYm91bmRzUmFkaXVzWSkpOwot
fQorICAgIEFTU0VSVChzaGFwZVBhZGRpbmcoKSA+PSAwKTsKKyAgICBpZiAoIXNoYXBlUGFkZGlu
ZygpIHx8IGlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG1fYm91bmRzOwogCi1GbG9hdFBvaW50
IFJlY3RhbmdsZVNoYXBlOjpTaGFwZUJvdW5kczo6Y29ybmVySW50ZXJjZXB0Rm9yV2lkdGgoZmxv
YXQgd2lkdGhBdEludGVyY2VwdCkgY29uc3QKLXsKLSAgICBmbG9hdCB4aSA9ICh3aWR0aCgpIC0g
d2lkdGhBdEludGVyY2VwdCkgLyAyOwotICAgIGZsb2F0IHlpID0gcnkoKSAtIGVsbGlwc2VZSW50
ZXJjZXB0KHJ4KCkgLSB4aSwgcngoKSwgcnkoKSk7Ci0gICAgcmV0dXJuIEZsb2F0UG9pbnQoeGks
IHlpKTsKLX0KKyAgICBmbG9hdCBib3VuZHNYID0geCgpICsgc3RkOjptaW4od2lkdGgoKSAvIDIs
IHNoYXBlUGFkZGluZygpKTsKKyAgICBmbG9hdCBib3VuZHNZID0geSgpICsgc3RkOjptaW4oaGVp
Z2h0KCkgLyAyLCBzaGFwZVBhZGRpbmcoKSk7CisgICAgZmxvYXQgYm91bmRzV2lkdGggPSBzdGQ6
Om1heCgwLjBmLCB3aWR0aCgpIC0gc2hhcGVQYWRkaW5nKCkgKiAyKTsKKyAgICBmbG9hdCBib3Vu
ZHNIZWlnaHQgPSBzdGQ6Om1heCgwLjBmLCBoZWlnaHQoKSAtIHNoYXBlUGFkZGluZygpICogMik7
CiAKLVJlY3RhbmdsZVNoYXBlOjpTaGFwZUJvdW5kcyBSZWN0YW5nbGVTaGFwZTo6c2hhcGVQYWRk
aW5nQm91bmRzKCkgY29uc3QKLXsKLSAgICBpZiAoIW1faGF2ZUluaXRpYWxpemVkUGFkZGluZ0Jv
dW5kcykgewotICAgICAgICBtX2hhdmVJbml0aWFsaXplZFBhZGRpbmdCb3VuZHMgPSB0cnVlOwot
ICAgICAgICBtX3BhZGRpbmdCb3VuZHMgPSBtX2JvdW5kcy5wYWRkaW5nQm91bmRzKHNoYXBlUGFk
ZGluZygpKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1fcGFkZGluZ0JvdW5kczsKKyAgICByZXR1cm4g
RmxvYXRSZWN0KGJvdW5kc1gsIGJvdW5kc1ksIGJvdW5kc1dpZHRoLCBib3VuZHNIZWlnaHQpOwog
fQogCi1SZWN0YW5nbGVTaGFwZTo6U2hhcGVCb3VuZHMgUmVjdGFuZ2xlU2hhcGU6OnNoYXBlTWFy
Z2luQm91bmRzKCkgY29uc3QKK0Zsb2F0UmVjdCBSZWN0YW5nbGVTaGFwZTo6c2hhcGVNYXJnaW5C
b3VuZHMoKSBjb25zdAogewotICAgIGlmICghbV9oYXZlSW5pdGlhbGl6ZWRNYXJnaW5Cb3VuZHMp
IHsKLSAgICAgICAgbV9oYXZlSW5pdGlhbGl6ZWRNYXJnaW5Cb3VuZHMgPSB0cnVlOwotICAgICAg
ICBtX21hcmdpbkJvdW5kcyA9IG1fYm91bmRzLm1hcmdpbkJvdW5kcyhzaGFwZU1hcmdpbigpKTsK
LSAgICB9Ci0gICAgcmV0dXJuIG1fbWFyZ2luQm91bmRzOworICAgIEFTU0VSVChzaGFwZU1hcmdp
bigpID49IDApOworICAgIGlmICghc2hhcGVNYXJnaW4oKSkKKyAgICAgICAgcmV0dXJuIG1fYm91
bmRzOworCisgICAgZmxvYXQgYm91bmRzWCA9IHgoKSAtIHNoYXBlTWFyZ2luKCk7CisgICAgZmxv
YXQgYm91bmRzWSA9IHkoKSAtIHNoYXBlTWFyZ2luKCk7CisgICAgZmxvYXQgYm91bmRzV2lkdGgg
PSB3aWR0aCgpICsgc2hhcGVNYXJnaW4oKSAqIDI7CisgICAgZmxvYXQgYm91bmRzSGVpZ2h0ID0g
aGVpZ2h0KCkgKyBzaGFwZU1hcmdpbigpICogMjsKKyAgICByZXR1cm4gRmxvYXRSZWN0KGJvdW5k
c1gsIGJvdW5kc1ksIGJvdW5kc1dpZHRoLCBib3VuZHNIZWlnaHQpOwogfQogCiB2b2lkIFJlY3Rh
bmdsZVNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExh
eW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmIHJlc3VsdCkgY29uc3QKIHsKLSAg
ICBjb25zdCBSZWN0YW5nbGVTaGFwZTo6U2hhcGVCb3VuZHMmIGJvdW5kcyA9IHNoYXBlTWFyZ2lu
Qm91bmRzKCk7CisgICAgY29uc3QgRmxvYXRSZWN0JiBib3VuZHMgPSBzaGFwZU1hcmdpbkJvdW5k
cygpOwogICAgIGlmIChib3VuZHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTEx
NiwxNyArODgsMjAgQEAgdm9pZCBSZWN0YW5nbGVTaGFwZTo6Z2V0RXhjbHVkZWRJbnRlcnZhbHMo
TGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2kKICAgICBmbG9hdCB4MSA9IGJv
dW5kcy54KCk7CiAgICAgZmxvYXQgeDIgPSBib3VuZHMubWF4WCgpOwogCi0gICAgaWYgKGJvdW5k
cy5yeSgpID4gMCkgewotICAgICAgICBpZiAoeTIgPCBib3VuZHMueSgpICsgYm91bmRzLnJ5KCkp
IHsKLSAgICAgICAgICAgIGZsb2F0IHlpID0geTIgLSBib3VuZHMueSgpIC0gYm91bmRzLnJ5KCk7
Ci0gICAgICAgICAgICBmbG9hdCB4aSA9IGVsbGlwc2VYSW50ZXJjZXB0KHlpLCBib3VuZHMucngo
KSwgYm91bmRzLnJ5KCkpOwotICAgICAgICAgICAgeDEgPSBib3VuZHMueCgpICsgYm91bmRzLnJ4
KCkgLSB4aTsKLSAgICAgICAgICAgIHgyID0gYm91bmRzLm1heFgoKSAtIGJvdW5kcy5yeCgpICsg
eGk7Ci0gICAgICAgIH0gZWxzZSBpZiAoeTEgPiBib3VuZHMubWF4WSgpIC0gYm91bmRzLnJ5KCkp
IHsKLSAgICAgICAgICAgIGZsb2F0IHlpID0gIHkxIC0gKGJvdW5kcy5tYXhZKCkgLSBib3VuZHMu
cnkoKSk7Ci0gICAgICAgICAgICBmbG9hdCB4aSA9IGVsbGlwc2VYSW50ZXJjZXB0KHlpLCBib3Vu
ZHMucngoKSwgYm91bmRzLnJ5KCkpOwotICAgICAgICAgICAgeDEgPSBib3VuZHMueCgpICsgYm91
bmRzLnJ4KCkgLSB4aTsKLSAgICAgICAgICAgIHgyID0gYm91bmRzLm1heFgoKSAtIGJvdW5kcy5y
eCgpICsgeGk7CisgICAgZmxvYXQgbWFyZ2luUmFkaXVzWCA9IHJ4KCkgKyBzaGFwZU1hcmdpbigp
OworICAgIGZsb2F0IG1hcmdpblJhZGl1c1kgPSByeSgpICsgc2hhcGVNYXJnaW4oKTsKKworICAg
IGlmIChtYXJnaW5SYWRpdXNZID4gMCkgeworICAgICAgICBpZiAoeTIgPCBib3VuZHMueSgpICsg
bWFyZ2luUmFkaXVzWSkgeworICAgICAgICAgICAgZmxvYXQgeWkgPSB5MiAtIGJvdW5kcy55KCkg
LSBtYXJnaW5SYWRpdXNZOworICAgICAgICAgICAgZmxvYXQgeGkgPSBlbGxpcHNlWEludGVyY2Vw
dCh5aSwgbWFyZ2luUmFkaXVzWCwgbWFyZ2luUmFkaXVzWSk7CisgICAgICAgICAgICB4MSA9IGJv
dW5kcy54KCkgKyBtYXJnaW5SYWRpdXNYIC0geGk7CisgICAgICAgICAgICB4MiA9IGJvdW5kcy5t
YXhYKCkgLSBtYXJnaW5SYWRpdXNYICsgeGk7CisgICAgICAgIH0gZWxzZSBpZiAoeTEgPiBib3Vu
ZHMubWF4WSgpIC0gbWFyZ2luUmFkaXVzWSkgeworICAgICAgICAgICAgZmxvYXQgeWkgPSAgeTEg
LSAoYm91bmRzLm1heFkoKSAtIG1hcmdpblJhZGl1c1kpOworICAgICAgICAgICAgZmxvYXQgeGkg
PSBlbGxpcHNlWEludGVyY2VwdCh5aSwgbWFyZ2luUmFkaXVzWCwgbWFyZ2luUmFkaXVzWSk7Cisg
ICAgICAgICAgICB4MSA9IGJvdW5kcy54KCkgKyBtYXJnaW5SYWRpdXNYIC0geGk7CisgICAgICAg
ICAgICB4MiA9IGJvdW5kcy5tYXhYKCkgLSBtYXJnaW5SYWRpdXNYICsgeGk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTEzNSw3ICsxMTAsNyBAQCB2b2lkIFJlY3RhbmdsZVNoYXBlOjpnZXRFeGNs
dWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naQogCiB2
b2lkIFJlY3RhbmdsZVNoYXBlOjpnZXRJbmNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2lj
YWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmIHJlc3VsdCkgY29u
c3QKIHsKLSAgICBjb25zdCBSZWN0YW5nbGVTaGFwZTo6U2hhcGVCb3VuZHMmIGJvdW5kcyA9IHNo
YXBlUGFkZGluZ0JvdW5kcygpOworICAgIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzID0gc2hhcGVQ
YWRkaW5nQm91bmRzKCk7CiAgICAgaWYgKGJvdW5kcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMTQ4LDQzICsxMjMsNTMgQEAgdm9pZCBSZWN0YW5nbGVTaGFwZTo6Z2V0SW5jbHVk
ZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2kKICAgICBm
bG9hdCB4MSA9IGJvdW5kcy54KCk7CiAgICAgZmxvYXQgeDIgPSBib3VuZHMubWF4WCgpOwogCi0g
ICAgaWYgKGJvdW5kcy5yeSgpID4gMCkgewotICAgICAgICBib29sIHkxSW50ZXJjZXB0c0Nvcm5l
ciA9IHkxIDwgYm91bmRzLnkoKSArIGJvdW5kcy5yeSgpOwotICAgICAgICBib29sIHkySW50ZXJj
ZXB0c0Nvcm5lciA9IHkyID4gYm91bmRzLm1heFkoKSAtIGJvdW5kcy5yeSgpOworICAgIGZsb2F0
IHBhZGRpbmdSYWRpdXNYID0gc3RkOjptYXgoMC4wZiwgcngoKSAtIHNoYXBlUGFkZGluZygpKTsK
KyAgICBmbG9hdCBwYWRkaW5nUmFkaXVzWSA9IHN0ZDo6bWF4KDAuMGYsIHJ5KCkgLSBzaGFwZVBh
ZGRpbmcoKSk7CisKKyAgICBpZiAocGFkZGluZ1JhZGl1c1ggPiAwKSB7CisgICAgICAgIGJvb2wg
eTFJbnRlcmNlcHRzQ29ybmVyID0geTEgPCBib3VuZHMueSgpICsgcGFkZGluZ1JhZGl1c1k7Cisg
ICAgICAgIGJvb2wgeTJJbnRlcmNlcHRzQ29ybmVyID0geTIgPiBib3VuZHMubWF4WSgpIC0gcGFk
ZGluZ1JhZGl1c1k7CiAgICAgICAgIGZsb2F0IHhpID0gMDsKIAogICAgICAgICBpZiAoeTFJbnRl
cmNlcHRzQ29ybmVyICYmIHkySW50ZXJjZXB0c0Nvcm5lcikgewogICAgICAgICAgICAgaWYgICh5
MSA8IGJvdW5kcy5oZWlnaHQoKSArIDIgKiBib3VuZHMueSgpIC0geTIpIHsKLSAgICAgICAgICAg
ICAgICBmbG9hdCB5aSA9IHkxIC0gYm91bmRzLnkoKSAtIGJvdW5kcy5yeSgpOwotICAgICAgICAg
ICAgICAgIHhpID0gZWxsaXBzZVhJbnRlcmNlcHQoeWksIGJvdW5kcy5yeCgpLCBib3VuZHMucnko
KSk7CisgICAgICAgICAgICAgICAgZmxvYXQgeWkgPSB5MSAtIGJvdW5kcy55KCkgLSBwYWRkaW5n
UmFkaXVzWTsKKyAgICAgICAgICAgICAgICB4aSA9IGVsbGlwc2VYSW50ZXJjZXB0KHlpLCBwYWRk
aW5nUmFkaXVzWCwgcGFkZGluZ1JhZGl1c1kpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBmbG9hdCB5aSA9ICB5MiAtIChib3VuZHMubWF4WSgpIC0gYm91bmRzLnJ5KCkp
OwotICAgICAgICAgICAgICAgIHhpID0gZWxsaXBzZVhJbnRlcmNlcHQoeWksIGJvdW5kcy5yeCgp
LCBib3VuZHMucnkoKSk7CisgICAgICAgICAgICAgICAgZmxvYXQgeWkgPSAgeTIgLSAoYm91bmRz
Lm1heFkoKSAtIHBhZGRpbmdSYWRpdXNZKTsKKyAgICAgICAgICAgICAgICB4aSA9IGVsbGlwc2VY
SW50ZXJjZXB0KHlpLCBwYWRkaW5nUmFkaXVzWCwgcGFkZGluZ1JhZGl1c1kpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgaWYgKHkxSW50ZXJjZXB0c0Nvcm5lcikgewotICAgICAgICAg
ICAgZmxvYXQgeWkgPSB5MSAtIGJvdW5kcy55KCkgLSBib3VuZHMucnkoKTsKLSAgICAgICAgICAg
IHhpID0gZWxsaXBzZVhJbnRlcmNlcHQoeWksIGJvdW5kcy5yeCgpLCBib3VuZHMucnkoKSk7Cisg
ICAgICAgICAgICBmbG9hdCB5aSA9IHkxIC0gYm91bmRzLnkoKSAtIHBhZGRpbmdSYWRpdXNZOwor
ICAgICAgICAgICAgeGkgPSBlbGxpcHNlWEludGVyY2VwdCh5aSwgcGFkZGluZ1JhZGl1c1gsIHBh
ZGRpbmdSYWRpdXNZKTsKICAgICAgICAgfSBlbHNlIGlmICh5MkludGVyY2VwdHNDb3JuZXIpIHsK
LSAgICAgICAgICAgIGZsb2F0IHlpID0gIHkyIC0gKGJvdW5kcy5tYXhZKCkgLSBib3VuZHMucnko
KSk7Ci0gICAgICAgICAgICB4aSA9IGVsbGlwc2VYSW50ZXJjZXB0KHlpLCBib3VuZHMucngoKSwg
Ym91bmRzLnJ5KCkpOworICAgICAgICAgICAgZmxvYXQgeWkgPSAgeTIgLSAoYm91bmRzLm1heFko
KSAtIHBhZGRpbmdSYWRpdXNZKTsKKyAgICAgICAgICAgIHhpID0gZWxsaXBzZVhJbnRlcmNlcHQo
eWksIHBhZGRpbmdSYWRpdXNYLCBwYWRkaW5nUmFkaXVzWSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoeTFJbnRlcmNlcHRzQ29ybmVyIHx8IHkySW50ZXJjZXB0c0Nvcm5lcikgewotICAgICAg
ICAgICAgeDEgPSBib3VuZHMueCgpICsgYm91bmRzLnJ4KCkgLSB4aTsKLSAgICAgICAgICAgIHgy
ID0gYm91bmRzLm1heFgoKSAtIGJvdW5kcy5yeCgpICsgeGk7CisgICAgICAgICAgICB4MSA9IGJv
dW5kcy54KCkgKyBwYWRkaW5nUmFkaXVzWCAtIHhpOworICAgICAgICAgICAgeDIgPSBib3VuZHMu
bWF4WCgpIC0gcGFkZGluZ1JhZGl1c1ggKyB4aTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJl
c3VsdC5hcHBlbmQoTGluZVNlZ21lbnQoeDEsIHgyKSk7CiB9CiAKK3N0YXRpYyBGbG9hdFBvaW50
IGNvcm5lckludGVyY2VwdEZvcldpZHRoKGZsb2F0IHdpZHRoLCBmbG9hdCB3aWR0aEF0SW50ZXJj
ZXB0LCBmbG9hdCByeCwgZmxvYXQgcnkpCit7CisgICAgZmxvYXQgeGkgPSAod2lkdGggLSB3aWR0
aEF0SW50ZXJjZXB0KSAvIDI7CisgICAgZmxvYXQgeWkgPSByeSAtIGVsbGlwc2VZSW50ZXJjZXB0
KHJ4IC0geGksIHJ4LCByeSk7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQoeGksIHlpKTsKK30KKwog
Ym9vbCBSZWN0YW5nbGVTaGFwZTo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcChMYXlv
dXRVbml0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgTGF5b3V0U2l6ZSYgbWluTG9naWNh
bEludGVydmFsU2l6ZSwgTGF5b3V0VW5pdCYgcmVzdWx0KSBjb25zdAogewogICAgIGZsb2F0IG1p
bkludGVydmFsVG9wID0gbWluTG9naWNhbEludGVydmFsVG9wOwogICAgIGZsb2F0IG1pbkludGVy
dmFsSGVpZ2h0ID0gbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKTsKICAgICBmbG9hdCBt
aW5JbnRlcnZhbFdpZHRoID0gbWluTG9naWNhbEludGVydmFsU2l6ZS53aWR0aCgpOwogCi0gICAg
Y29uc3QgUmVjdGFuZ2xlU2hhcGU6OlNoYXBlQm91bmRzJiBib3VuZHMgPSBzaGFwZVBhZGRpbmdC
b3VuZHMoKTsKKyAgICBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcyA9IHNoYXBlUGFkZGluZ0JvdW5k
cygpOwogICAgIGlmIChib3VuZHMuaXNFbXB0eSgpIHx8IG1pbkludGVydmFsV2lkdGggPiBib3Vu
ZHMud2lkdGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xOTQsOCArMTc5LDExIEBA
IGJvb2wgUmVjdGFuZ2xlU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoTGF5
b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2CiAgICAgaWYgKG1heFkgPiBib3VuZHMubWF4WSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIGludGVydmFsT3ZlcmxhcHNNaW5Db3Ju
ZXIgPSBtaW5ZIDwgYm91bmRzLnkoKSArIGJvdW5kcy5yeSgpOwotICAgIGJvb2wgaW50ZXJ2YWxP
dmVybGFwc01heENvcm5lciA9IG1heFkgPiBib3VuZHMubWF4WSgpIC0gYm91bmRzLnJ5KCk7Cisg
ICAgZmxvYXQgcGFkZGluZ1JhZGl1c1ggPSBzdGQ6Om1heCgwLjBmLCByeCgpIC0gc2hhcGVQYWRk
aW5nKCkpOworICAgIGZsb2F0IHBhZGRpbmdSYWRpdXNZID0gc3RkOjptYXgoMC4wZiwgcnkoKSAt
IHNoYXBlUGFkZGluZygpKTsKKworICAgIGJvb2wgaW50ZXJ2YWxPdmVybGFwc01pbkNvcm5lciA9
IG1pblkgPCBib3VuZHMueSgpICsgcGFkZGluZ1JhZGl1c1k7CisgICAgYm9vbCBpbnRlcnZhbE92
ZXJsYXBzTWF4Q29ybmVyID0gbWF4WSA+IGJvdW5kcy5tYXhZKCkgLSBwYWRkaW5nUmFkaXVzWTsK
IAogICAgIGlmICghaW50ZXJ2YWxPdmVybGFwc01pbkNvcm5lciAmJiAhaW50ZXJ2YWxPdmVybGFw
c01heENvcm5lcikgewogICAgICAgICByZXN1bHQgPSBtaW5ZOwpAQCAtMjA0LDggKzE5Miw4IEBA
IGJvb2wgUmVjdGFuZ2xlU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoTGF5
b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2CiAKICAgICBmbG9hdCBjZW50ZXJZID0gYm91bmRzLnko
KSArIGJvdW5kcy5oZWlnaHQoKSAvIDI7CiAgICAgYm9vbCBtaW5Db3JuZXJEZWZpbmVzWCA9IGZh
YnMoY2VudGVyWSAtIG1pblkpID4gZmFicyhjZW50ZXJZIC0gbWF4WSk7Ci0gICAgYm9vbCBpbnRl
cnZhbEZpdHNXaXRoaW5Db3JuZXJzID0gbWluSW50ZXJ2YWxXaWR0aCArIDIgKiBib3VuZHMucngo
KSA8PSBib3VuZHMud2lkdGgoKTsKLSAgICBGbG9hdFBvaW50IGNvcm5lckludGVyY2VwdCA9IGJv
dW5kcy5jb3JuZXJJbnRlcmNlcHRGb3JXaWR0aChtaW5JbnRlcnZhbFdpZHRoKTsKKyAgICBib29s
IGludGVydmFsRml0c1dpdGhpbkNvcm5lcnMgPSBtaW5JbnRlcnZhbFdpZHRoICsgMiAqIHBhZGRp
bmdSYWRpdXNYIDw9IGJvdW5kcy53aWR0aCgpOworICAgIEZsb2F0UG9pbnQgY29ybmVySW50ZXJj
ZXB0ID0gY29ybmVySW50ZXJjZXB0Rm9yV2lkdGgoYm91bmRzLndpZHRoKCksIG1pbkludGVydmFs
V2lkdGgsIHBhZGRpbmdSYWRpdXNYLCBwYWRkaW5nUmFkaXVzWSk7CiAKICAgICBpZiAoaW50ZXJ2
YWxPdmVybGFwc01pbkNvcm5lciAmJiAoIWludGVydmFsT3ZlcmxhcHNNYXhDb3JuZXIgfHwgbWlu
Q29ybmVyRGVmaW5lc1gpKSB7CiAgICAgICAgIGlmIChpbnRlcnZhbEZpdHNXaXRoaW5Db3JuZXJz
IHx8IGJvdW5kcy55KCkgKyBjb3JuZXJJbnRlcmNlcHQueSgpIDwgbWluWSkgewpAQCAtMjMwLDcg
KzIxOCw3IEBAIGJvb2wgUmVjdGFuZ2xlU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2lj
YWxUb3AoTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2CiAKIHZvaWQgUmVjdGFuZ2xlU2hhcGU6
OmJ1aWxkUGF0aChQYXRoJiBwYXRoKSBjb25zdAogewotICAgIHBhdGguYWRkUm91bmRlZFJlY3Qo
bV9ib3VuZHMsIEZsb2F0U2l6ZShtX2JvdW5kcy5yeCgpLCBtX2JvdW5kcy5yeSgpKSwgUGF0aDo6
UHJlZmVyQmV6aWVyUm91bmRlZFJlY3QpOworICAgIHBhdGguYWRkUm91bmRlZFJlY3QobV9ib3Vu
ZHMsIG1fcmFkaWksIFBhdGg6OlByZWZlckJlemllclJvdW5kZWRSZWN0KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9SZWN0YW5nbGVTaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9S
ZWN0YW5nbGVTaGFwZS5oCmluZGV4IDE5OGFhZjguLjQ5OGQzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmgKQEAgLTQzLDkgKzQzLDgg
QEAgY2xhc3MgUmVjdGFuZ2xlU2hhcGUgOiBwdWJsaWMgU2hhcGUgewogcHVibGljOgogICAgIFJl
Y3RhbmdsZVNoYXBlKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFNpemUmIHJh
ZGlpKQogICAgICAgICA6IFNoYXBlKCkKLSAgICAgICAgLCBtX2JvdW5kcyhib3VuZHMsIHJhZGlp
KQotICAgICAgICAsIG1faGF2ZUluaXRpYWxpemVkTWFyZ2luQm91bmRzKGZhbHNlKQotICAgICAg
ICAsIG1faGF2ZUluaXRpYWxpemVkUGFkZGluZ0JvdW5kcyhmYWxzZSkKKyAgICAgICAgLCBtX2Jv
dW5kcyhib3VuZHMpCisgICAgICAgICwgbV9yYWRpaShyYWRpaSkKICAgICB7CiAgICAgfQogCkBA
IC01OSwzMyArNTgsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBidWlsZFBhdGgoUGF0
aCYpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgotICAgIGNsYXNzIFNoYXBlQm91bmRzIDog
cHVibGljIEZsb2F0UmVjdCB7Ci0gICAgcHVibGljOgotICAgICAgICBTaGFwZUJvdW5kcygpIHsg
fQotICAgICAgICBTaGFwZUJvdW5kcyhjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxv
YXRTaXplJiByYWRpaSkKLSAgICAgICAgICAgIDogRmxvYXRSZWN0KGJvdW5kcykKLSAgICAgICAg
ICAgICwgbV9yYWRpaShyYWRpaSkKLSAgICAgICAgewotICAgICAgICB9CisgICAgRmxvYXRSZWN0
IHNoYXBlTWFyZ2luQm91bmRzKCkgY29uc3Q7CisgICAgRmxvYXRSZWN0IHNoYXBlUGFkZGluZ0Jv
dW5kcygpIGNvbnN0OwogCi0gICAgICAgIGZsb2F0IHJ4KCkgY29uc3QgeyByZXR1cm4gbV9yYWRp
aS53aWR0aCgpOyB9Ci0gICAgICAgIGZsb2F0IHJ5KCkgY29uc3QgeyByZXR1cm4gbV9yYWRpaS5o
ZWlnaHQoKTsgfQotICAgICAgICBTaGFwZUJvdW5kcyBtYXJnaW5Cb3VuZHMoZmxvYXQgc2hhcGVN
YXJnaW4pIGNvbnN0OwotICAgICAgICBTaGFwZUJvdW5kcyBwYWRkaW5nQm91bmRzKGZsb2F0IHNo
YXBlUGFkZGluZykgY29uc3Q7Ci0gICAgICAgIEZsb2F0UG9pbnQgY29ybmVySW50ZXJjZXB0Rm9y
V2lkdGgoZmxvYXQgd2lkdGgpIGNvbnN0OworICAgIGZsb2F0IHJ4KCkgY29uc3QgeyByZXR1cm4g
bV9yYWRpaS53aWR0aCgpOyB9CisgICAgZmxvYXQgcnkoKSBjb25zdCB7IHJldHVybiBtX3JhZGlp
LmhlaWdodCgpOyB9CisgICAgZmxvYXQgeCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRzLngoKTsg
fQorICAgIGZsb2F0IHkoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kcy55KCk7IH0KKyAgICBmbG9h
dCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRzLndpZHRoKCk7IH0KKyAgICBmbG9hdCBo
ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kcy5oZWlnaHQoKTsgfQogCi0gICAgcHJpdmF0
ZToKLSAgICAgICAgRmxvYXRTaXplIG1fcmFkaWk7Ci0gICAgfTsKLQotICAgIFNoYXBlQm91bmRz
IHNoYXBlTWFyZ2luQm91bmRzKCkgY29uc3Q7Ci0gICAgU2hhcGVCb3VuZHMgc2hhcGVQYWRkaW5n
Qm91bmRzKCkgY29uc3Q7Ci0KLSAgICBTaGFwZUJvdW5kcyBtX2JvdW5kczsKLSAgICBtdXRhYmxl
IFNoYXBlQm91bmRzIG1fbWFyZ2luQm91bmRzOwotICAgIG11dGFibGUgU2hhcGVCb3VuZHMgbV9w
YWRkaW5nQm91bmRzOwotICAgIG11dGFibGUgYm9vbCBtX2hhdmVJbml0aWFsaXplZE1hcmdpbkJv
dW5kcyA6IDE7Ci0gICAgbXV0YWJsZSBib29sIG1faGF2ZUluaXRpYWxpemVkUGFkZGluZ0JvdW5k
cyA6IDE7CisgICAgRmxvYXRSZWN0IG1fYm91bmRzOworICAgIEZsb2F0U2l6ZSBtX3JhZGlpOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlLmNwcAppbmRleCAzNWQyNGVkLi4zMzQ1NjI2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTU4LDEzICs1OCwxMyBAQCBzdGF0aWMgUGFz
c093blB0cjxTaGFwZT4gY3JlYXRlUmVjdGFuZ2xlU2hhcGUoY29uc3QgRmxvYXRSZWN0JiBib3Vu
ZHMsIGNvbnN0IEZsbwogICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVjdGFuZ2xlU2hhcGUoYm91
bmRzLCByYWRpaSkpOwogfQogCi1zdGF0aWMgUGFzc093blB0cjxTaGFwZT4gY3JlYXRlU2hhcGVD
aXJjbGUoY29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBmbG9hdCByYWRpdXMpCitzdGF0aWMgUGFz
c093blB0cjxTaGFwZT4gY3JlYXRlQ2lyY2xlU2hhcGUoY29uc3QgRmxvYXRQb2ludCYgY2VudGVy
LCBmbG9hdCByYWRpdXMpCiB7CiAgICAgQVNTRVJUKHJhZGl1cyA+PSAwKTsKICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFJlY3RhbmdsZVNoYXBlKEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaXVz
LCBjZW50ZXIueSgpIC0gcmFkaXVzLCByYWRpdXMqMiwgcmFkaXVzKjIpLCBGbG9hdFNpemUocmFk
aXVzLCByYWRpdXMpKSk7CiB9CiAKLXN0YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVTaGFw
ZUVsbGlwc2UoY29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBjb25zdCBGbG9hdFNpemUmIHJhZGlp
KQorc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZUVsbGlwc2VTaGFwZShjb25zdCBGbG9h
dFBvaW50JiBjZW50ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgcmFkaWkpCiB7CiAgICAgQVNTRVJUKHJh
ZGlpLndpZHRoKCkgPj0gMCAmJiByYWRpaS5oZWlnaHQoKSA+PSAwKTsKICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFJlY3RhbmdsZVNoYXBlKEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaWkud2lk
dGgoKSwgY2VudGVyLnkoKSAtIHJhZGlpLmhlaWdodCgpLCByYWRpaS53aWR0aCgpKjIsIHJhZGlp
LmhlaWdodCgpKjIpLCByYWRpaSkpOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIFBhc3NPd25QdHI8U2hh
cGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1NoYXBlLCBjb25z
dCBMYXlvdXRTCiAgICAgICAgIGZsb2F0IHJhZGl1cyA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoY2ly
Y2xlLT5yYWRpdXMoKSwgc3FydGYoKGJveFdpZHRoICogYm94V2lkdGggKyBib3hIZWlnaHQgKiBi
b3hIZWlnaHQpIC8gMikpOwogICAgICAgICBGbG9hdFBvaW50IGxvZ2ljYWxDZW50ZXIgPSBwaHlz
aWNhbFBvaW50VG9Mb2dpY2FsKEZsb2F0UG9pbnQoY2VudGVyWCwgY2VudGVyWSksIGxvZ2ljYWxC
b3hTaXplLmhlaWdodCgpLCB3cml0aW5nTW9kZSk7CiAKLSAgICAgICAgc2hhcGUgPSBjcmVhdGVT
aGFwZUNpcmNsZShsb2dpY2FsQ2VudGVyLCByYWRpdXMpOworICAgICAgICBzaGFwZSA9IGNyZWF0
ZUNpcmNsZVNoYXBlKGxvZ2ljYWxDZW50ZXIsIHJhZGl1cyk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApAQCAtMTU3LDcgKzE1Nyw3IEBAIFBhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVT
aGFwZShjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1NoYXBlLCBjb25zdCBMYXlvdXRTCiAgICAgICAg
IGZsb2F0IHJhZGl1cyA9IGNpcmNsZS0+ZmxvYXRWYWx1ZUZvclJhZGl1c0luQm94KGJveFdpZHRo
LCBib3hIZWlnaHQpOwogICAgICAgICBGbG9hdFBvaW50IGxvZ2ljYWxDZW50ZXIgPSBwaHlzaWNh
bFBvaW50VG9Mb2dpY2FsKEZsb2F0UG9pbnQoY2VudGVyWCwgY2VudGVyWSksIGxvZ2ljYWxCb3hT
aXplLmhlaWdodCgpLCB3cml0aW5nTW9kZSk7CiAKLSAgICAgICAgc2hhcGUgPSBjcmVhdGVTaGFw
ZUNpcmNsZShsb2dpY2FsQ2VudGVyLCByYWRpdXMpOworICAgICAgICBzaGFwZSA9IGNyZWF0ZUNp
cmNsZVNoYXBlKGxvZ2ljYWxDZW50ZXIsIHJhZGl1cyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApAQCAtMTcwLDcgKzE3MCw3IEBAIFBhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFw
ZShjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1NoYXBlLCBjb25zdCBMYXlvdXRTCiAgICAgICAgIEZs
b2F0UG9pbnQgbG9naWNhbENlbnRlciA9IHBoeXNpY2FsUG9pbnRUb0xvZ2ljYWwoRmxvYXRQb2lu
dChjZW50ZXJYLCBjZW50ZXJZKSwgbG9naWNhbEJveFNpemUuaGVpZ2h0KCksIHdyaXRpbmdNb2Rl
KTsKICAgICAgICAgRmxvYXRTaXplIGxvZ2ljYWxSYWRpaSA9IHBoeXNpY2FsU2l6ZVRvTG9naWNh
bChGbG9hdFNpemUocmFkaXVzWCwgcmFkaXVzWSksIHdyaXRpbmdNb2RlKTsKIAotICAgICAgICBz
aGFwZSA9IGNyZWF0ZVNoYXBlRWxsaXBzZShsb2dpY2FsQ2VudGVyLCBsb2dpY2FsUmFkaWkpOwor
ICAgICAgICBzaGFwZSA9IGNyZWF0ZUVsbGlwc2VTaGFwZShsb2dpY2FsQ2VudGVyLCBsb2dpY2Fs
UmFkaWkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE4Miw3ICsxODIsNyBAQCBQYXNz
T3duUHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSogYmFzaWNT
aGFwZSwgY29uc3QgTGF5b3V0UwogICAgICAgICBmbG9hdCByYWRpdXNZID0gZWxsaXBzZS0+Zmxv
YXRWYWx1ZUZvclJhZGl1c0luQm94KGVsbGlwc2UtPnJhZGl1c1koKSwgY2VudGVyWSwgYm94SGVp
Z2h0KTsKICAgICAgICAgRmxvYXRQb2ludCBsb2dpY2FsQ2VudGVyID0gcGh5c2ljYWxQb2ludFRv
TG9naWNhbChGbG9hdFBvaW50KGNlbnRlclgsIGNlbnRlclkpLCBsb2dpY2FsQm94U2l6ZS5oZWln
aHQoKSwgd3JpdGluZ01vZGUpOwogCi0gICAgICAgIHNoYXBlID0gY3JlYXRlU2hhcGVFbGxpcHNl
KGxvZ2ljYWxDZW50ZXIsIEZsb2F0U2l6ZShyYWRpdXNYLCByYWRpdXNZKSk7CisgICAgICAgIHNo
YXBlID0gY3JlYXRlRWxsaXBzZVNoYXBlKGxvZ2ljYWxDZW50ZXIsIEZsb2F0U2l6ZShyYWRpdXNY
LCByYWRpdXNZKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAo=
</data>
<flag name="review"
          id="242545"
          type_id="1"
          status="+"
          setter="kling"
    />
    <flag name="commit-queue"
          id="243196"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219573</attachid>
            <date>2013-12-18 14:52:42 -0800</date>
            <delta_ts>2013-12-18 15:30:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>18433</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNGNkNmVmLi4xNTNjYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTMtMTItMTAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBTaGFwZXNdIFNpbXBsaWZ5IFJlY3RhbmdsZVNoYXBlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU1MzYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIEluc3RlYWQgb2Yg
Y2FjaGluZyBhbiBpbnN0YW5jZSBvZiBhIHByaXZhdGUgRmxvYXRSb3VuZGVkUmVjdCAoaXNoKSBj
bGFzcyBmb3IKKyAgICAgICAgUmVjdGFuZ2xlU2hhcGUncyBzaGFwZS1tYXJnaW4gYW5kIHNoYXBl
LXBhZGRpbmcgYm91bmRzLCB3ZSBqdXN0IGNvbXB1dGUKKyAgICAgICAgdGhlIEZsb2F0UmVjdCBh
bmQgcmFkaWkgYXMgbmVlZGVkLiBUaGlzIHJlZHVjZXMgdGhlIGNsYXNzZXMgZm9vdHByaW50IGEg
bGl0dGxlCisgICAgICAgIGFuZCBpdCBzaW1wbGlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbi4KKwor
ICAgICAgICBSZW1vdmVkIHRoZSBwcml2YXRlIFJlY3RhbmdsZVNoYXBlOjpTaGFwZUJvdW5kcyBj
bGFzcyBhbmQgbWFkZSBpdHMKKyAgICAgICAgY29ybmVySW50ZXJjZXB0Rm9yV2lkdGgoKSBtZXRo
b2QgYSBzdGF0aWMgZnVuY3Rpb24uIEFkZGVkIG1lbWJlcnMgZm9yCisgICAgICAgIHRoZSBSZWN0
YW5nbGVTaGFwZSBjb25zdHJ1Y3RvciBhcmdzLCBhbmQgcHJpdmF0ZSBnZXR0ZXJzIGZvciB0aGVp
ciBwcm9wZXJ0aWVzLgorCisgICAgICAgIFRoZXJlIGFyZSBubyBuZXcgdGVzdHMgYmVjYXVzZSB0
aGlzIGlzIGp1c3QgYW4gaW50ZXJuYWwgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlY3Rhbmds
ZVNoYXBlOjpzaGFwZVBhZGRpbmdCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdGFuZ2xl
U2hhcGU6OnNoYXBlTWFyZ2luQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OmVsbGlwc2VYSW50
ZXJjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6OmVsbGlwc2VZSW50ZXJjZXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlY3RhbmdsZVNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyk6CisgICAgICAg
IChXZWJDb3JlOjpSZWN0YW5nbGVTaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29ybmVySW50ZXJjZXB0Rm9yV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6
UmVjdGFuZ2xlU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3ApOgorICAgICAg
ICAoV2ViQ29yZTo6UmVjdGFuZ2xlU2hhcGU6OmJ1aWxkUGF0aCk6CisgICAgICAgICogcmVuZGVy
aW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVjdGFuZ2xl
U2hhcGU6OlJlY3RhbmdsZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RhbmdsZVNoYXBl
OjpyeCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0YW5nbGVTaGFwZTo6cnkpOgorICAgICAgICAo
V2ViQ29yZTo6UmVjdGFuZ2xlU2hhcGU6OngpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdGFuZ2xl
U2hhcGU6OnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVjdGFuZ2xlU2hhcGU6OndpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlY3RhbmdsZVNoYXBlOjpoZWlnaHQpOgorICAgICAgICAqIHJlbmRl
cmluZy9zaGFwZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2lyY2xlU2hh
cGUpOiBSZW5hbWVkIHRoaXMgaW50ZXJuYWwgZnVuY3Rpb24gKGl0IHdhcyBjcmVhdGVTaGFwZUNp
cmNsZSkgYmVjYXVzZSBpdCB3YXMgaW5jb25zaXN0ZW50LgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRWxsaXBzZVNoYXBlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRl
U2hhcGUpOgorCiAyMDEzLTEyLTE4ICBDb25yYWQgU2h1bHR6ICA8Y29ucmFkX3NodWx0ekBhcHBs
ZS5jb20+CiAKICAgICAgICAgQXVkaW9TZXNzaW9uTWFuYWdlck1hYy5jcHA6IGtMb3dQb3dlclZp
ZGVvQnVmZmVyU2l6ZSB1bnVzZWQgYmVmb3JlIE9TIFggMTAuOQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmNwcAppbmRleCAxZDk5MDg2Li4w
Zjc2Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3Rh
bmdsZVNoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3Rh
bmdsZVNoYXBlLmNwcApAQCAtNDYsNjQgKzQ2LDM2IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgZWxs
aXBzZVlJbnRlcmNlcHQoZmxvYXQgeCwgZmxvYXQgcngsIGZsb2F0IHJ5KQogICAgIHJldHVybiBy
eSAqIHNxcnQoMSAtICh4ICogeCkgLyAocnggKiByeCkpOwogfQogCi1SZWN0YW5nbGVTaGFwZTo6
U2hhcGVCb3VuZHMgUmVjdGFuZ2xlU2hhcGU6OlNoYXBlQm91bmRzOjpwYWRkaW5nQm91bmRzKGZs
b2F0IHNoYXBlUGFkZGluZykgY29uc3QKK0Zsb2F0UmVjdCBSZWN0YW5nbGVTaGFwZTo6c2hhcGVQ
YWRkaW5nQm91bmRzKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoc2hhcGVQYWRkaW5nID49IDApOwot
ICAgIGlmICghc2hhcGVQYWRkaW5nIHx8IGlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICp0aGlz
OwotCi0gICAgZmxvYXQgYm91bmRzWCA9IHgoKSArIHN0ZDo6bWluKHdpZHRoKCkgLyAyLCBzaGFw
ZVBhZGRpbmcpOwotICAgIGZsb2F0IGJvdW5kc1kgPSB5KCkgKyBzdGQ6Om1pbihoZWlnaHQoKSAv
IDIsIHNoYXBlUGFkZGluZyk7Ci0gICAgZmxvYXQgYm91bmRzV2lkdGggPSBzdGQ6Om1heCgwLjBm
LCB3aWR0aCgpIC0gc2hhcGVQYWRkaW5nICogMik7Ci0gICAgZmxvYXQgYm91bmRzSGVpZ2h0ID0g
c3RkOjptYXgoMC4wZiwgaGVpZ2h0KCkgLSBzaGFwZVBhZGRpbmcgKiAyKTsKLSAgICBmbG9hdCBi
b3VuZHNSYWRpdXNYID0gc3RkOjptYXgoMC4wZiwgcngoKSAtIHNoYXBlUGFkZGluZyk7Ci0gICAg
ZmxvYXQgYm91bmRzUmFkaXVzWSA9IHN0ZDo6bWF4KDAuMGYsIHJ5KCkgLSBzaGFwZVBhZGRpbmcp
OwotICAgIHJldHVybiBSZWN0YW5nbGVTaGFwZTo6U2hhcGVCb3VuZHMoRmxvYXRSZWN0KGJvdW5k
c1gsIGJvdW5kc1ksIGJvdW5kc1dpZHRoLCBib3VuZHNIZWlnaHQpLCBGbG9hdFNpemUoYm91bmRz
UmFkaXVzWCwgYm91bmRzUmFkaXVzWSkpOwotfQotCi1SZWN0YW5nbGVTaGFwZTo6U2hhcGVCb3Vu
ZHMgUmVjdGFuZ2xlU2hhcGU6OlNoYXBlQm91bmRzOjptYXJnaW5Cb3VuZHMoZmxvYXQgc2hhcGVN
YXJnaW4pIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHNoYXBlTWFyZ2luID49IDApOwotICAgIGlmICgh
c2hhcGVNYXJnaW4pCi0gICAgICAgIHJldHVybiAqdGhpczsKLQotICAgIGZsb2F0IGJvdW5kc1gg
PSB4KCkgLSBzaGFwZU1hcmdpbjsKLSAgICBmbG9hdCBib3VuZHNZID0geSgpIC0gc2hhcGVNYXJn
aW47Ci0gICAgZmxvYXQgYm91bmRzV2lkdGggPSB3aWR0aCgpICsgc2hhcGVNYXJnaW4gKiAyOwot
ICAgIGZsb2F0IGJvdW5kc0hlaWdodCA9IGhlaWdodCgpICsgc2hhcGVNYXJnaW4gKiAyOwotICAg
IGZsb2F0IGJvdW5kc1JhZGl1c1ggPSByeCgpICsgc2hhcGVNYXJnaW47Ci0gICAgZmxvYXQgYm91
bmRzUmFkaXVzWSA9IHJ5KCkgKyBzaGFwZU1hcmdpbjsKLSAgICByZXR1cm4gUmVjdGFuZ2xlU2hh
cGU6OlNoYXBlQm91bmRzKEZsb2F0UmVjdChib3VuZHNYLCBib3VuZHNZLCBib3VuZHNXaWR0aCwg
Ym91bmRzSGVpZ2h0KSwgRmxvYXRTaXplKGJvdW5kc1JhZGl1c1gsIGJvdW5kc1JhZGl1c1kpKTsK
LX0KKyAgICBBU1NFUlQoc2hhcGVQYWRkaW5nKCkgPj0gMCk7CisgICAgaWYgKCFzaGFwZVBhZGRp
bmcoKSB8fCBpc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtX2JvdW5kczsKIAotRmxvYXRQb2lu
dCBSZWN0YW5nbGVTaGFwZTo6U2hhcGVCb3VuZHM6OmNvcm5lckludGVyY2VwdEZvcldpZHRoKGZs
b2F0IHdpZHRoQXRJbnRlcmNlcHQpIGNvbnN0Ci17Ci0gICAgZmxvYXQgeGkgPSAod2lkdGgoKSAt
IHdpZHRoQXRJbnRlcmNlcHQpIC8gMjsKLSAgICBmbG9hdCB5aSA9IHJ5KCkgLSBlbGxpcHNlWUlu
dGVyY2VwdChyeCgpIC0geGksIHJ4KCksIHJ5KCkpOwotICAgIHJldHVybiBGbG9hdFBvaW50KHhp
LCB5aSk7Ci19CisgICAgZmxvYXQgYm91bmRzWCA9IHgoKSArIHN0ZDo6bWluKHdpZHRoKCkgLyAy
LCBzaGFwZVBhZGRpbmcoKSk7CisgICAgZmxvYXQgYm91bmRzWSA9IHkoKSArIHN0ZDo6bWluKGhl
aWdodCgpIC8gMiwgc2hhcGVQYWRkaW5nKCkpOworICAgIGZsb2F0IGJvdW5kc1dpZHRoID0gc3Rk
OjptYXgoMC4wZiwgd2lkdGgoKSAtIHNoYXBlUGFkZGluZygpICogMik7CisgICAgZmxvYXQgYm91
bmRzSGVpZ2h0ID0gc3RkOjptYXgoMC4wZiwgaGVpZ2h0KCkgLSBzaGFwZVBhZGRpbmcoKSAqIDIp
OwogCi1SZWN0YW5nbGVTaGFwZTo6U2hhcGVCb3VuZHMgUmVjdGFuZ2xlU2hhcGU6OnNoYXBlUGFk
ZGluZ0JvdW5kcygpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2hhdmVJbml0aWFsaXplZFBhZGRpbmdC
b3VuZHMpIHsKLSAgICAgICAgbV9oYXZlSW5pdGlhbGl6ZWRQYWRkaW5nQm91bmRzID0gdHJ1ZTsK
LSAgICAgICAgbV9wYWRkaW5nQm91bmRzID0gbV9ib3VuZHMucGFkZGluZ0JvdW5kcyhzaGFwZVBh
ZGRpbmcoKSk7Ci0gICAgfQotICAgIHJldHVybiBtX3BhZGRpbmdCb3VuZHM7CisgICAgcmV0dXJu
IEZsb2F0UmVjdChib3VuZHNYLCBib3VuZHNZLCBib3VuZHNXaWR0aCwgYm91bmRzSGVpZ2h0KTsK
IH0KIAotUmVjdGFuZ2xlU2hhcGU6OlNoYXBlQm91bmRzIFJlY3RhbmdsZVNoYXBlOjpzaGFwZU1h
cmdpbkJvdW5kcygpIGNvbnN0CitGbG9hdFJlY3QgUmVjdGFuZ2xlU2hhcGU6OnNoYXBlTWFyZ2lu
Qm91bmRzKCkgY29uc3QKIHsKLSAgICBpZiAoIW1faGF2ZUluaXRpYWxpemVkTWFyZ2luQm91bmRz
KSB7Ci0gICAgICAgIG1faGF2ZUluaXRpYWxpemVkTWFyZ2luQm91bmRzID0gdHJ1ZTsKLSAgICAg
ICAgbV9tYXJnaW5Cb3VuZHMgPSBtX2JvdW5kcy5tYXJnaW5Cb3VuZHMoc2hhcGVNYXJnaW4oKSk7
Ci0gICAgfQotICAgIHJldHVybiBtX21hcmdpbkJvdW5kczsKKyAgICBBU1NFUlQoc2hhcGVNYXJn
aW4oKSA+PSAwKTsKKyAgICBpZiAoIXNoYXBlTWFyZ2luKCkpCisgICAgICAgIHJldHVybiBtX2Jv
dW5kczsKKworICAgIGZsb2F0IGJvdW5kc1ggPSB4KCkgLSBzaGFwZU1hcmdpbigpOworICAgIGZs
b2F0IGJvdW5kc1kgPSB5KCkgLSBzaGFwZU1hcmdpbigpOworICAgIGZsb2F0IGJvdW5kc1dpZHRo
ID0gd2lkdGgoKSArIHNoYXBlTWFyZ2luKCkgKiAyOworICAgIGZsb2F0IGJvdW5kc0hlaWdodCA9
IGhlaWdodCgpICsgc2hhcGVNYXJnaW4oKSAqIDI7CisgICAgcmV0dXJuIEZsb2F0UmVjdChib3Vu
ZHNYLCBib3VuZHNZLCBib3VuZHNXaWR0aCwgYm91bmRzSGVpZ2h0KTsKIH0KIAogdm9pZCBSZWN0
YW5nbGVTaGFwZTo6Z2V0RXhjbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JiByZXN1bHQpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgUmVjdGFuZ2xlU2hhcGU6OlNoYXBlQm91bmRzJiBib3VuZHMgPSBzaGFwZU1hcmdp
bkJvdW5kcygpOworICAgIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzID0gc2hhcGVNYXJnaW5Cb3Vu
ZHMoKTsKICAgICBpZiAoYm91bmRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0x
MTYsMTcgKzg4LDIwIEBAIHZvaWQgUmVjdGFuZ2xlU2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxz
KExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpCiAgICAgZmxvYXQgeDEgPSBi
b3VuZHMueCgpOwogICAgIGZsb2F0IHgyID0gYm91bmRzLm1heFgoKTsKIAotICAgIGlmIChib3Vu
ZHMucnkoKSA+IDApIHsKLSAgICAgICAgaWYgKHkyIDwgYm91bmRzLnkoKSArIGJvdW5kcy5yeSgp
KSB7Ci0gICAgICAgICAgICBmbG9hdCB5aSA9IHkyIC0gYm91bmRzLnkoKSAtIGJvdW5kcy5yeSgp
OwotICAgICAgICAgICAgZmxvYXQgeGkgPSBlbGxpcHNlWEludGVyY2VwdCh5aSwgYm91bmRzLnJ4
KCksIGJvdW5kcy5yeSgpKTsKLSAgICAgICAgICAgIHgxID0gYm91bmRzLngoKSArIGJvdW5kcy5y
eCgpIC0geGk7Ci0gICAgICAgICAgICB4MiA9IGJvdW5kcy5tYXhYKCkgLSBib3VuZHMucngoKSAr
IHhpOwotICAgICAgICB9IGVsc2UgaWYgKHkxID4gYm91bmRzLm1heFkoKSAtIGJvdW5kcy5yeSgp
KSB7Ci0gICAgICAgICAgICBmbG9hdCB5aSA9ICB5MSAtIChib3VuZHMubWF4WSgpIC0gYm91bmRz
LnJ5KCkpOwotICAgICAgICAgICAgZmxvYXQgeGkgPSBlbGxpcHNlWEludGVyY2VwdCh5aSwgYm91
bmRzLnJ4KCksIGJvdW5kcy5yeSgpKTsKLSAgICAgICAgICAgIHgxID0gYm91bmRzLngoKSArIGJv
dW5kcy5yeCgpIC0geGk7Ci0gICAgICAgICAgICB4MiA9IGJvdW5kcy5tYXhYKCkgLSBib3VuZHMu
cngoKSArIHhpOworICAgIGZsb2F0IG1hcmdpblJhZGl1c1ggPSByeCgpICsgc2hhcGVNYXJnaW4o
KTsKKyAgICBmbG9hdCBtYXJnaW5SYWRpdXNZID0gcnkoKSArIHNoYXBlTWFyZ2luKCk7CisKKyAg
ICBpZiAobWFyZ2luUmFkaXVzWSA+IDApIHsKKyAgICAgICAgaWYgKHkyIDwgYm91bmRzLnkoKSAr
IG1hcmdpblJhZGl1c1kpIHsKKyAgICAgICAgICAgIGZsb2F0IHlpID0geTIgLSBib3VuZHMueSgp
IC0gbWFyZ2luUmFkaXVzWTsKKyAgICAgICAgICAgIGZsb2F0IHhpID0gZWxsaXBzZVhJbnRlcmNl
cHQoeWksIG1hcmdpblJhZGl1c1gsIG1hcmdpblJhZGl1c1kpOworICAgICAgICAgICAgeDEgPSBi
b3VuZHMueCgpICsgbWFyZ2luUmFkaXVzWCAtIHhpOworICAgICAgICAgICAgeDIgPSBib3VuZHMu
bWF4WCgpIC0gbWFyZ2luUmFkaXVzWCArIHhpOworICAgICAgICB9IGVsc2UgaWYgKHkxID4gYm91
bmRzLm1heFkoKSAtIG1hcmdpblJhZGl1c1kpIHsKKyAgICAgICAgICAgIGZsb2F0IHlpID0gIHkx
IC0gKGJvdW5kcy5tYXhZKCkgLSBtYXJnaW5SYWRpdXNZKTsKKyAgICAgICAgICAgIGZsb2F0IHhp
ID0gZWxsaXBzZVhJbnRlcmNlcHQoeWksIG1hcmdpblJhZGl1c1gsIG1hcmdpblJhZGl1c1kpOwor
ICAgICAgICAgICAgeDEgPSBib3VuZHMueCgpICsgbWFyZ2luUmFkaXVzWCAtIHhpOworICAgICAg
ICAgICAgeDIgPSBib3VuZHMubWF4WCgpIC0gbWFyZ2luUmFkaXVzWCArIHhpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC0xMzUsNyArMTEwLDcgQEAgdm9pZCBSZWN0YW5nbGVTaGFwZTo6Z2V0RXhj
bHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2kKIAog
dm9pZCBSZWN0YW5nbGVTaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dp
Y2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JiByZXN1bHQpIGNv
bnN0CiB7Ci0gICAgY29uc3QgUmVjdGFuZ2xlU2hhcGU6OlNoYXBlQm91bmRzJiBib3VuZHMgPSBz
aGFwZVBhZGRpbmdCb3VuZHMoKTsKKyAgICBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcyA9IHNoYXBl
UGFkZGluZ0JvdW5kcygpOwogICAgIGlmIChib3VuZHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTE0OCw0MyArMTIzLDUzIEBAIHZvaWQgUmVjdGFuZ2xlU2hhcGU6OmdldEluY2x1
ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpCiAgICAg
ZmxvYXQgeDEgPSBib3VuZHMueCgpOwogICAgIGZsb2F0IHgyID0gYm91bmRzLm1heFgoKTsKIAot
ICAgIGlmIChib3VuZHMucnkoKSA+IDApIHsKLSAgICAgICAgYm9vbCB5MUludGVyY2VwdHNDb3Ju
ZXIgPSB5MSA8IGJvdW5kcy55KCkgKyBib3VuZHMucnkoKTsKLSAgICAgICAgYm9vbCB5MkludGVy
Y2VwdHNDb3JuZXIgPSB5MiA+IGJvdW5kcy5tYXhZKCkgLSBib3VuZHMucnkoKTsKKyAgICBmbG9h
dCBwYWRkaW5nUmFkaXVzWCA9IHN0ZDo6bWF4KDAuMGYsIHJ4KCkgLSBzaGFwZVBhZGRpbmcoKSk7
CisgICAgZmxvYXQgcGFkZGluZ1JhZGl1c1kgPSBzdGQ6Om1heCgwLjBmLCByeSgpIC0gc2hhcGVQ
YWRkaW5nKCkpOworCisgICAgaWYgKHBhZGRpbmdSYWRpdXNYID4gMCkgeworICAgICAgICBib29s
IHkxSW50ZXJjZXB0c0Nvcm5lciA9IHkxIDwgYm91bmRzLnkoKSArIHBhZGRpbmdSYWRpdXNZOwor
ICAgICAgICBib29sIHkySW50ZXJjZXB0c0Nvcm5lciA9IHkyID4gYm91bmRzLm1heFkoKSAtIHBh
ZGRpbmdSYWRpdXNZOwogICAgICAgICBmbG9hdCB4aSA9IDA7CiAKICAgICAgICAgaWYgKHkxSW50
ZXJjZXB0c0Nvcm5lciAmJiB5MkludGVyY2VwdHNDb3JuZXIpIHsKICAgICAgICAgICAgIGlmICAo
eTEgPCBib3VuZHMuaGVpZ2h0KCkgKyAyICogYm91bmRzLnkoKSAtIHkyKSB7Ci0gICAgICAgICAg
ICAgICAgZmxvYXQgeWkgPSB5MSAtIGJvdW5kcy55KCkgLSBib3VuZHMucnkoKTsKLSAgICAgICAg
ICAgICAgICB4aSA9IGVsbGlwc2VYSW50ZXJjZXB0KHlpLCBib3VuZHMucngoKSwgYm91bmRzLnJ5
KCkpOworICAgICAgICAgICAgICAgIGZsb2F0IHlpID0geTEgLSBib3VuZHMueSgpIC0gcGFkZGlu
Z1JhZGl1c1k7CisgICAgICAgICAgICAgICAgeGkgPSBlbGxpcHNlWEludGVyY2VwdCh5aSwgcGFk
ZGluZ1JhZGl1c1gsIHBhZGRpbmdSYWRpdXNZKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgZmxvYXQgeWkgPSAgeTIgLSAoYm91bmRzLm1heFkoKSAtIGJvdW5kcy5yeSgp
KTsKLSAgICAgICAgICAgICAgICB4aSA9IGVsbGlwc2VYSW50ZXJjZXB0KHlpLCBib3VuZHMucngo
KSwgYm91bmRzLnJ5KCkpOworICAgICAgICAgICAgICAgIGZsb2F0IHlpID0gIHkyIC0gKGJvdW5k
cy5tYXhZKCkgLSBwYWRkaW5nUmFkaXVzWSk7CisgICAgICAgICAgICAgICAgeGkgPSBlbGxpcHNl
WEludGVyY2VwdCh5aSwgcGFkZGluZ1JhZGl1c1gsIHBhZGRpbmdSYWRpdXNZKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIGlmICh5MUludGVyY2VwdHNDb3JuZXIpIHsKLSAgICAgICAg
ICAgIGZsb2F0IHlpID0geTEgLSBib3VuZHMueSgpIC0gYm91bmRzLnJ5KCk7Ci0gICAgICAgICAg
ICB4aSA9IGVsbGlwc2VYSW50ZXJjZXB0KHlpLCBib3VuZHMucngoKSwgYm91bmRzLnJ5KCkpOwor
ICAgICAgICAgICAgZmxvYXQgeWkgPSB5MSAtIGJvdW5kcy55KCkgLSBwYWRkaW5nUmFkaXVzWTsK
KyAgICAgICAgICAgIHhpID0gZWxsaXBzZVhJbnRlcmNlcHQoeWksIHBhZGRpbmdSYWRpdXNYLCBw
YWRkaW5nUmFkaXVzWSk7CiAgICAgICAgIH0gZWxzZSBpZiAoeTJJbnRlcmNlcHRzQ29ybmVyKSB7
Ci0gICAgICAgICAgICBmbG9hdCB5aSA9ICB5MiAtIChib3VuZHMubWF4WSgpIC0gYm91bmRzLnJ5
KCkpOwotICAgICAgICAgICAgeGkgPSBlbGxpcHNlWEludGVyY2VwdCh5aSwgYm91bmRzLnJ4KCks
IGJvdW5kcy5yeSgpKTsKKyAgICAgICAgICAgIGZsb2F0IHlpID0gIHkyIC0gKGJvdW5kcy5tYXhZ
KCkgLSBwYWRkaW5nUmFkaXVzWSk7CisgICAgICAgICAgICB4aSA9IGVsbGlwc2VYSW50ZXJjZXB0
KHlpLCBwYWRkaW5nUmFkaXVzWCwgcGFkZGluZ1JhZGl1c1kpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKHkxSW50ZXJjZXB0c0Nvcm5lciB8fCB5MkludGVyY2VwdHNDb3JuZXIpIHsKLSAgICAg
ICAgICAgIHgxID0gYm91bmRzLngoKSArIGJvdW5kcy5yeCgpIC0geGk7Ci0gICAgICAgICAgICB4
MiA9IGJvdW5kcy5tYXhYKCkgLSBib3VuZHMucngoKSArIHhpOworICAgICAgICAgICAgeDEgPSBi
b3VuZHMueCgpICsgcGFkZGluZ1JhZGl1c1ggLSB4aTsKKyAgICAgICAgICAgIHgyID0gYm91bmRz
Lm1heFgoKSAtIHBhZGRpbmdSYWRpdXNYICsgeGk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBy
ZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KHgxLCB4MikpOwogfQogCitzdGF0aWMgRmxvYXRQb2lu
dCBjb3JuZXJJbnRlcmNlcHRGb3JXaWR0aChmbG9hdCB3aWR0aCwgZmxvYXQgd2lkdGhBdEludGVy
Y2VwdCwgZmxvYXQgcngsIGZsb2F0IHJ5KQoreworICAgIGZsb2F0IHhpID0gKHdpZHRoIC0gd2lk
dGhBdEludGVyY2VwdCkgLyAyOworICAgIGZsb2F0IHlpID0gcnkgLSBlbGxpcHNlWUludGVyY2Vw
dChyeCAtIHhpLCByeCwgcnkpOworICAgIHJldHVybiBGbG9hdFBvaW50KHhpLCB5aSk7Cit9CisK
IGJvb2wgUmVjdGFuZ2xlU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoTGF5
b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IExheW91dFNpemUmIG1pbkxvZ2lj
YWxJbnRlcnZhbFNpemUsIExheW91dFVuaXQmIHJlc3VsdCkgY29uc3QKIHsKICAgICBmbG9hdCBt
aW5JbnRlcnZhbFRvcCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcDsKICAgICBmbG9hdCBtaW5JbnRl
cnZhbEhlaWdodCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUuaGVpZ2h0KCk7CiAgICAgZmxvYXQg
bWluSW50ZXJ2YWxXaWR0aCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUud2lkdGgoKTsKIAotICAg
IGNvbnN0IFJlY3RhbmdsZVNoYXBlOjpTaGFwZUJvdW5kcyYgYm91bmRzID0gc2hhcGVQYWRkaW5n
Qm91bmRzKCk7CisgICAgY29uc3QgRmxvYXRSZWN0JiBib3VuZHMgPSBzaGFwZVBhZGRpbmdCb3Vu
ZHMoKTsKICAgICBpZiAoYm91bmRzLmlzRW1wdHkoKSB8fCBtaW5JbnRlcnZhbFdpZHRoID4gYm91
bmRzLndpZHRoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTk0LDggKzE3OSwxMSBA
QCBib29sIFJlY3RhbmdsZVNoYXBlOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKExh
eW91dFVuaXQgbWluTG9naWNhbEludGVydgogICAgIGlmIChtYXhZID4gYm91bmRzLm1heFkoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYm9vbCBpbnRlcnZhbE92ZXJsYXBzTWluQ29y
bmVyID0gbWluWSA8IGJvdW5kcy55KCkgKyBib3VuZHMucnkoKTsKLSAgICBib29sIGludGVydmFs
T3ZlcmxhcHNNYXhDb3JuZXIgPSBtYXhZID4gYm91bmRzLm1heFkoKSAtIGJvdW5kcy5yeSgpOwor
ICAgIGZsb2F0IHBhZGRpbmdSYWRpdXNYID0gc3RkOjptYXgoMC4wZiwgcngoKSAtIHNoYXBlUGFk
ZGluZygpKTsKKyAgICBmbG9hdCBwYWRkaW5nUmFkaXVzWSA9IHN0ZDo6bWF4KDAuMGYsIHJ5KCkg
LSBzaGFwZVBhZGRpbmcoKSk7CisKKyAgICBib29sIGludGVydmFsT3ZlcmxhcHNNaW5Db3JuZXIg
PSBtaW5ZIDwgYm91bmRzLnkoKSArIHBhZGRpbmdSYWRpdXNZOworICAgIGJvb2wgaW50ZXJ2YWxP
dmVybGFwc01heENvcm5lciA9IG1heFkgPiBib3VuZHMubWF4WSgpIC0gcGFkZGluZ1JhZGl1c1k7
CiAKICAgICBpZiAoIWludGVydmFsT3ZlcmxhcHNNaW5Db3JuZXIgJiYgIWludGVydmFsT3Zlcmxh
cHNNYXhDb3JuZXIpIHsKICAgICAgICAgcmVzdWx0ID0gbWluWTsKQEAgLTIwNCw4ICsxOTIsOCBA
QCBib29sIFJlY3RhbmdsZVNoYXBlOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKExh
eW91dFVuaXQgbWluTG9naWNhbEludGVydgogCiAgICAgZmxvYXQgY2VudGVyWSA9IGJvdW5kcy55
KCkgKyBib3VuZHMuaGVpZ2h0KCkgLyAyOwogICAgIGJvb2wgbWluQ29ybmVyRGVmaW5lc1ggPSBm
YWJzKGNlbnRlclkgLSBtaW5ZKSA+IGZhYnMoY2VudGVyWSAtIG1heFkpOwotICAgIGJvb2wgaW50
ZXJ2YWxGaXRzV2l0aGluQ29ybmVycyA9IG1pbkludGVydmFsV2lkdGggKyAyICogYm91bmRzLnJ4
KCkgPD0gYm91bmRzLndpZHRoKCk7Ci0gICAgRmxvYXRQb2ludCBjb3JuZXJJbnRlcmNlcHQgPSBi
b3VuZHMuY29ybmVySW50ZXJjZXB0Rm9yV2lkdGgobWluSW50ZXJ2YWxXaWR0aCk7CisgICAgYm9v
bCBpbnRlcnZhbEZpdHNXaXRoaW5Db3JuZXJzID0gbWluSW50ZXJ2YWxXaWR0aCArIDIgKiBwYWRk
aW5nUmFkaXVzWCA8PSBib3VuZHMud2lkdGgoKTsKKyAgICBGbG9hdFBvaW50IGNvcm5lckludGVy
Y2VwdCA9IGNvcm5lckludGVyY2VwdEZvcldpZHRoKGJvdW5kcy53aWR0aCgpLCBtaW5JbnRlcnZh
bFdpZHRoLCBwYWRkaW5nUmFkaXVzWCwgcGFkZGluZ1JhZGl1c1kpOwogCiAgICAgaWYgKGludGVy
dmFsT3ZlcmxhcHNNaW5Db3JuZXIgJiYgKCFpbnRlcnZhbE92ZXJsYXBzTWF4Q29ybmVyIHx8IG1p
bkNvcm5lckRlZmluZXNYKSkgewogICAgICAgICBpZiAoaW50ZXJ2YWxGaXRzV2l0aGluQ29ybmVy
cyB8fCBib3VuZHMueSgpICsgY29ybmVySW50ZXJjZXB0LnkoKSA8IG1pblkpIHsKQEAgLTIzMCw5
ICsyMTgsOSBAQCBib29sIFJlY3RhbmdsZVNoYXBlOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dp
Y2FsVG9wKExheW91dFVuaXQgbWluTG9naWNhbEludGVydgogCiB2b2lkIFJlY3RhbmdsZVNoYXBl
OjpidWlsZERpc3BsYXlQYXRocyhEaXNwbGF5UGF0aHMmIHBhdGhzKSBjb25zdAogewotICAgIHBh
dGhzLnNoYXBlLmFkZFJvdW5kZWRSZWN0KG1fYm91bmRzLCBGbG9hdFNpemUobV9ib3VuZHMucngo
KSwgbV9ib3VuZHMucnkoKSksIFBhdGg6OlByZWZlckJlemllclJvdW5kZWRSZWN0KTsKKyAgICBw
YXRocy5zaGFwZS5hZGRSb3VuZGVkUmVjdChtX2JvdW5kcywgRmxvYXRTaXplKG1fcmFkaWkud2lk
dGgoKSwgbV9yYWRpaS5oZWlnaHQoKSksIFBhdGg6OlByZWZlckJlemllclJvdW5kZWRSZWN0KTsK
ICAgICBpZiAoc2hhcGVNYXJnaW4oKSkKLSAgICAgICAgcGF0aHMubWFyZ2luU2hhcGUuYWRkUm91
bmRlZFJlY3Qoc2hhcGVNYXJnaW5Cb3VuZHMoKSwgRmxvYXRTaXplKHNoYXBlTWFyZ2luQm91bmRz
KCkucngoKSwgc2hhcGVNYXJnaW5Cb3VuZHMoKS5yeSgpKSwgUGF0aDo6UHJlZmVyQmV6aWVyUm91
bmRlZFJlY3QpOworICAgICAgICBwYXRocy5tYXJnaW5TaGFwZS5hZGRSb3VuZGVkUmVjdChzaGFw
ZU1hcmdpbkJvdW5kcygpLCBGbG9hdFNpemUobV9yYWRpaS53aWR0aCgpICsgc2hhcGVNYXJnaW4o
KSwgbV9yYWRpaS5oZWlnaHQoKSArIHNoYXBlTWFyZ2luKCkpLCBQYXRoOjpQcmVmZXJCZXppZXJS
b3VuZGVkUmVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuaAppbmRleCA1ZGU2YTMzLi4x
NjY4NzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3Rh
bmdsZVNoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5n
bGVTaGFwZS5oCkBAIC00Myw5ICs0Myw4IEBAIGNsYXNzIFJlY3RhbmdsZVNoYXBlIDogcHVibGlj
IFNoYXBlIHsKIHB1YmxpYzoKICAgICBSZWN0YW5nbGVTaGFwZShjb25zdCBGbG9hdFJlY3QmIGJv
dW5kcywgY29uc3QgRmxvYXRTaXplJiByYWRpaSkKICAgICAgICAgOiBTaGFwZSgpCi0gICAgICAg
ICwgbV9ib3VuZHMoYm91bmRzLCByYWRpaSkKLSAgICAgICAgLCBtX2hhdmVJbml0aWFsaXplZE1h
cmdpbkJvdW5kcyhmYWxzZSkKLSAgICAgICAgLCBtX2hhdmVJbml0aWFsaXplZFBhZGRpbmdCb3Vu
ZHMoZmFsc2UpCisgICAgICAgICwgbV9ib3VuZHMoYm91bmRzKQorICAgICAgICAsIG1fcmFkaWko
cmFkaWkpCiAgICAgewogICAgIH0KIApAQCAtNTksMzMgKzU4LDE4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYnVpbGREaXNwbGF5UGF0aHMoRGlzcGxheVBhdGhzJikgY29uc3QgT1ZFUlJJ
REU7CiAKIHByaXZhdGU6Ci0gICAgY2xhc3MgU2hhcGVCb3VuZHMgOiBwdWJsaWMgRmxvYXRSZWN0
IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNoYXBlQm91bmRzKCkgeyB9Ci0gICAgICAgIFNoYXBl
Qm91bmRzKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFNpemUmIHJhZGlpKQot
ICAgICAgICAgICAgOiBGbG9hdFJlY3QoYm91bmRzKQotICAgICAgICAgICAgLCBtX3JhZGlpKHJh
ZGlpKQotICAgICAgICB7Ci0gICAgICAgIH0KKyAgICBGbG9hdFJlY3Qgc2hhcGVNYXJnaW5Cb3Vu
ZHMoKSBjb25zdDsKKyAgICBGbG9hdFJlY3Qgc2hhcGVQYWRkaW5nQm91bmRzKCkgY29uc3Q7CiAK
LSAgICAgICAgZmxvYXQgcngoKSBjb25zdCB7IHJldHVybiBtX3JhZGlpLndpZHRoKCk7IH0KLSAg
ICAgICAgZmxvYXQgcnkoKSBjb25zdCB7IHJldHVybiBtX3JhZGlpLmhlaWdodCgpOyB9Ci0gICAg
ICAgIFNoYXBlQm91bmRzIG1hcmdpbkJvdW5kcyhmbG9hdCBzaGFwZU1hcmdpbikgY29uc3Q7Ci0g
ICAgICAgIFNoYXBlQm91bmRzIHBhZGRpbmdCb3VuZHMoZmxvYXQgc2hhcGVQYWRkaW5nKSBjb25z
dDsKLSAgICAgICAgRmxvYXRQb2ludCBjb3JuZXJJbnRlcmNlcHRGb3JXaWR0aChmbG9hdCB3aWR0
aCkgY29uc3Q7CisgICAgZmxvYXQgcngoKSBjb25zdCB7IHJldHVybiBtX3JhZGlpLndpZHRoKCk7
IH0KKyAgICBmbG9hdCByeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaWkuaGVpZ2h0KCk7IH0KKyAg
ICBmbG9hdCB4KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHMueCgpOyB9CisgICAgZmxvYXQgeSgp
IGNvbnN0IHsgcmV0dXJuIG1fYm91bmRzLnkoKTsgfQorICAgIGZsb2F0IHdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbV9ib3VuZHMud2lkdGgoKTsgfQorICAgIGZsb2F0IGhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1fYm91bmRzLmhlaWdodCgpOyB9CiAKLSAgICBwcml2YXRlOgotICAgICAgICBGbG9h
dFNpemUgbV9yYWRpaTsKLSAgICB9OwotCi0gICAgU2hhcGVCb3VuZHMgc2hhcGVNYXJnaW5Cb3Vu
ZHMoKSBjb25zdDsKLSAgICBTaGFwZUJvdW5kcyBzaGFwZVBhZGRpbmdCb3VuZHMoKSBjb25zdDsK
LQotICAgIFNoYXBlQm91bmRzIG1fYm91bmRzOwotICAgIG11dGFibGUgU2hhcGVCb3VuZHMgbV9t
YXJnaW5Cb3VuZHM7Ci0gICAgbXV0YWJsZSBTaGFwZUJvdW5kcyBtX3BhZGRpbmdCb3VuZHM7Ci0g
ICAgbXV0YWJsZSBib29sIG1faGF2ZUluaXRpYWxpemVkTWFyZ2luQm91bmRzIDogMTsKLSAgICBt
dXRhYmxlIGJvb2wgbV9oYXZlSW5pdGlhbGl6ZWRQYWRkaW5nQm91bmRzIDogMTsKKyAgICBGbG9h
dFJlY3QgbV9ib3VuZHM7CisgICAgRmxvYXRTaXplIG1fcmFkaWk7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmlu
ZGV4IDM1ZDI0ZWQuLjMzNDU2MjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlLmNwcApAQCAtNTgsMTMgKzU4LDEzIEBAIHN0YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBj
cmVhdGVSZWN0YW5nbGVTaGFwZShjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvCiAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSZWN0YW5nbGVTaGFwZShib3VuZHMsIHJhZGlpKSk7CiB9
CiAKLXN0YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVTaGFwZUNpcmNsZShjb25zdCBGbG9h
dFBvaW50JiBjZW50ZXIsIGZsb2F0IHJhZGl1cykKK3N0YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBj
cmVhdGVDaXJjbGVTaGFwZShjb25zdCBGbG9hdFBvaW50JiBjZW50ZXIsIGZsb2F0IHJhZGl1cykK
IHsKICAgICBBU1NFUlQocmFkaXVzID49IDApOwogICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVj
dGFuZ2xlU2hhcGUoRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpdXMsIGNlbnRlci55KCkgLSBy
YWRpdXMsIHJhZGl1cyoyLCByYWRpdXMqMiksIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cykpKTsK
IH0KIAotc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVNoYXBlRWxsaXBzZShjb25zdCBG
bG9hdFBvaW50JiBjZW50ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgcmFkaWkpCitzdGF0aWMgUGFzc093
blB0cjxTaGFwZT4gY3JlYXRlRWxsaXBzZVNoYXBlKGNvbnN0IEZsb2F0UG9pbnQmIGNlbnRlciwg
Y29uc3QgRmxvYXRTaXplJiByYWRpaSkKIHsKICAgICBBU1NFUlQocmFkaWkud2lkdGgoKSA+PSAw
ICYmIHJhZGlpLmhlaWdodCgpID49IDApOwogICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVjdGFu
Z2xlU2hhcGUoRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpaS53aWR0aCgpLCBjZW50ZXIueSgp
IC0gcmFkaWkuaGVpZ2h0KCksIHJhZGlpLndpZHRoKCkqMiwgcmFkaWkuaGVpZ2h0KCkqMiksIHJh
ZGlpKSk7CkBAIC0xNDYsNyArMTQ2LDcgQEAgUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0
ZVNoYXBlKGNvbnN0IEJhc2ljU2hhcGUqIGJhc2ljU2hhcGUsIGNvbnN0IExheW91dFMKICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gZmxvYXRWYWx1ZUZvckxlbmd0aChjaXJjbGUtPnJhZGl1cygpLCBz
cXJ0ZigoYm94V2lkdGggKiBib3hXaWR0aCArIGJveEhlaWdodCAqIGJveEhlaWdodCkgLyAyKSk7
CiAgICAgICAgIEZsb2F0UG9pbnQgbG9naWNhbENlbnRlciA9IHBoeXNpY2FsUG9pbnRUb0xvZ2lj
YWwoRmxvYXRQb2ludChjZW50ZXJYLCBjZW50ZXJZKSwgbG9naWNhbEJveFNpemUuaGVpZ2h0KCks
IHdyaXRpbmdNb2RlKTsKIAotICAgICAgICBzaGFwZSA9IGNyZWF0ZVNoYXBlQ2lyY2xlKGxvZ2lj
YWxDZW50ZXIsIHJhZGl1cyk7CisgICAgICAgIHNoYXBlID0gY3JlYXRlQ2lyY2xlU2hhcGUobG9n
aWNhbENlbnRlciwgcmFkaXVzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xNTcsNyAr
MTU3LDcgQEAgUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IEJhc2lj
U2hhcGUqIGJhc2ljU2hhcGUsIGNvbnN0IExheW91dFMKICAgICAgICAgZmxvYXQgcmFkaXVzID0g
Y2lyY2xlLT5mbG9hdFZhbHVlRm9yUmFkaXVzSW5Cb3goYm94V2lkdGgsIGJveEhlaWdodCk7CiAg
ICAgICAgIEZsb2F0UG9pbnQgbG9naWNhbENlbnRlciA9IHBoeXNpY2FsUG9pbnRUb0xvZ2ljYWwo
RmxvYXRQb2ludChjZW50ZXJYLCBjZW50ZXJZKSwgbG9naWNhbEJveFNpemUuaGVpZ2h0KCksIHdy
aXRpbmdNb2RlKTsKIAotICAgICAgICBzaGFwZSA9IGNyZWF0ZVNoYXBlQ2lyY2xlKGxvZ2ljYWxD
ZW50ZXIsIHJhZGl1cyk7CisgICAgICAgIHNoYXBlID0gY3JlYXRlQ2lyY2xlU2hhcGUobG9naWNh
bENlbnRlciwgcmFkaXVzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xNzAsNyArMTcw
LDcgQEAgUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IEJhc2ljU2hh
cGUqIGJhc2ljU2hhcGUsIGNvbnN0IExheW91dFMKICAgICAgICAgRmxvYXRQb2ludCBsb2dpY2Fs
Q2VudGVyID0gcGh5c2ljYWxQb2ludFRvTG9naWNhbChGbG9hdFBvaW50KGNlbnRlclgsIGNlbnRl
clkpLCBsb2dpY2FsQm94U2l6ZS5oZWlnaHQoKSwgd3JpdGluZ01vZGUpOwogICAgICAgICBGbG9h
dFNpemUgbG9naWNhbFJhZGlpID0gcGh5c2ljYWxTaXplVG9Mb2dpY2FsKEZsb2F0U2l6ZShyYWRp
dXNYLCByYWRpdXNZKSwgd3JpdGluZ01vZGUpOwogCi0gICAgICAgIHNoYXBlID0gY3JlYXRlU2hh
cGVFbGxpcHNlKGxvZ2ljYWxDZW50ZXIsIGxvZ2ljYWxSYWRpaSk7CisgICAgICAgIHNoYXBlID0g
Y3JlYXRlRWxsaXBzZVNoYXBlKGxvZ2ljYWxDZW50ZXIsIGxvZ2ljYWxSYWRpaSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApAQCAtMTgyLDcgKzE4Miw3IEBAIFBhc3NPd25QdHI8U2hhcGU+IFNo
YXBlOjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1NoYXBlLCBjb25zdCBMYXlv
dXRTCiAgICAgICAgIGZsb2F0IHJhZGl1c1kgPSBlbGxpcHNlLT5mbG9hdFZhbHVlRm9yUmFkaXVz
SW5Cb3goZWxsaXBzZS0+cmFkaXVzWSgpLCBjZW50ZXJZLCBib3hIZWlnaHQpOwogICAgICAgICBG
bG9hdFBvaW50IGxvZ2ljYWxDZW50ZXIgPSBwaHlzaWNhbFBvaW50VG9Mb2dpY2FsKEZsb2F0UG9p
bnQoY2VudGVyWCwgY2VudGVyWSksIGxvZ2ljYWxCb3hTaXplLmhlaWdodCgpLCB3cml0aW5nTW9k
ZSk7CiAKLSAgICAgICAgc2hhcGUgPSBjcmVhdGVTaGFwZUVsbGlwc2UobG9naWNhbENlbnRlciwg
RmxvYXRTaXplKHJhZGl1c1gsIHJhZGl1c1kpKTsKKyAgICAgICAgc2hhcGUgPSBjcmVhdGVFbGxp
cHNlU2hhcGUobG9naWNhbENlbnRlciwgRmxvYXRTaXplKHJhZGl1c1gsIHJhZGl1c1kpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>