<?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>80545</bug_id>
          
          <creation_ts>2012-03-07 14:48:18 -0800</creation_ts>
          <short_desc>Switch absoluteRects, culledInlineAbsoluteRects, absoluteBoundingBoxRect, and addFocusRingRects back to integers</short_desc>
          <delta_ts>2012-03-08 15:42:10 -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>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>
          
          <blocked>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>darin</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>573265</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-03-07 14:48:18 -0800</bug_when>
    <thetext>All the rects returned by these functions represent rects on screen. Focus ring rects are sent directly from addFocusRingRects to the graphics context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573290</commentid>
    <comment_count>1</comment_count>
      <attachid>130708</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-03-07 15:15:47 -0800</bug_when>
    <thetext>Created attachment 130708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574205</commentid>
    <comment_count>2</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-03-08 14:27:11 -0800</bug_when>
    <thetext>Pinging reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574220</commentid>
    <comment_count>3</comment_count>
      <attachid>130708</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-03-08 14:33:29 -0800</bug_when>
    <thetext>Comment on attachment 130708
Patch

Thanks Simon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574323</commentid>
    <comment_count>4</comment_count>
      <attachid>130708</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-08 15:42:05 -0800</bug_when>
    <thetext>Comment on attachment 130708
Patch

Clearing flags on attachment: 130708

Committed r110224: &lt;http://trac.webkit.org/changeset/110224&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574324</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-08 15:42:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130708</attachid>
            <date>2012-03-07 15:15:47 -0800</date>
            <delta_ts>2012-03-08 15:42:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80545-20120307151546.patch</filename>
            <type>text/plain</type>
            <size>34304</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDExMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDEyLTAzLTA3ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBTd2l0Y2ggYWJzb2x1dGVS
ZWN0cywgY3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cywgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3Qs
IGFuZCBhZGRGb2N1c1JpbmdSZWN0cyBiYWNrIHRvIGludGVnZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDU0NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcnRpbmcgdGhlIGFib3ZlIGZ1bmN0
aW9ucywgYWxsIG9mIHdoaWNoIHJldHVybiByZWN0cyB0aGF0IHJlcHJlc2VudCBvbi1zY3JlZW4g
cmVjdHMsIHRvIEludFJlY3RzIGZyb20KKyAgICAgICAgTGF5b3V0UmVjdHMuCisKKyAgICAgICAg
YWRkRm9jdXNSaW5nc1JlY3RzIGdlbmVyYXRlcyBhIHZlY3RvciBvZiByZWN0cyB0aGF0IGlzIGhh
bmRlZCBvZmYgZGlyZWN0bHkgdG8gdGhlIEdyYXBoaWNzQ29udGV4dCB0byBiZQorICAgICAgICBk
cmF3bi4gU25hcHBpbmcgdGhlIHJlY3RzIGJlZm9yZSBhZGRpbmcgdGhlbSB0byB0aGUgdmVjdG9y
IHNhdmVzIGFuIGV4dHJhIHBhc3MgdGhyb3VnaCB0aGUgdmVjdG9yLgorCisgICAgICAgIGFic29s
dXRlUmVjdHMgYW5kIGN1bGxlZElubGluZUFic29sdXRlUmVjdHMgYXJlIG9ubHkgdXNlZCBieSBh
ZGRGb2N1c1JpbmdSZWN0cywgaGFzTm9uRW1wdHlCb3VuZGluZ0JveCAob25seQorICAgICAgICB0
byBjaGVjayBpZiB0aGV5J3JlIGVtcHR5KSwgYW5kIGFic29sdXRlQm91bmRpbmdCb3hSZWN0LCB3
aGljaCBpcyBleHBvc2VkIGZyb20gV2ViQ29yZSBhbmQgdGh1cyBzaG91bGQgYmUgYW4KKyAgICAg
ICAgSW50UmVjdCBhbnl3YXlzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGlu
IGJlaGF2aW9yLgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6aGFzTm9uRW1wdHlCb3VuZGluZ0JveCk6CisgICAgICAgICogZG9tL1JhbmdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpib3VuZGluZ0JveCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphYnNv
bHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdS
ZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChSZW5k
ZXJCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcklubGluZTo6YWRkRm9jdXNSaW5nUmVjdHMpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKFJlbmRlcklubGluZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlz
dEJveDo6YWRkRm9jdXNSaW5nUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
Qm94Lmg6CisgICAgICAgIChSZW5kZXJMaXN0Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cGFpbnRGb2N1
c1JpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlRm9jdXNS
aW5nUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChSZW5kZXJP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OmFkZEZvY3VzUmluZ1JlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFic29sdXRlUmVjdHNGb3JSYW5nZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKFJlbmRlclRleHQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Q29udHJvbDo6YWRkRm9jdXNSaW5nUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAgICAoUmVuZGVyVGV4dENvbnRyb2wpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clZpZXc6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6
CisgICAgICAgIChSZW5kZXJWaWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0Jsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0Jsb2NrOjphYnNvbHV0ZVJl
Y3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmg6CisgICAgICAg
IChSZW5kZXJTVkdCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250
YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjphZGRGb2N1
c1JpbmdSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIu
aDoKKyAgICAgICAgKFJlbmRlclNWR0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6
YWRkRm9jdXNSaW5nUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1h
Z2UuaDoKKyAgICAgICAgKFJlbmRlclNWR0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01v
ZGVsT2JqZWN0OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAgIChSZW5kZXJTVkdNb2RlbE9iamVjdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdTaGFwZTo6YWRkRm9jdXNSaW5nUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHU2hhcGUuaDoKKyAgICAgICAgKFJlbmRlclNWR1NoYXBlKToKKwogMjAx
Mi0wMy0wNyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W1Y4XVtQZXJmb3JtYW5jZV0gT3B0aW1pemUgRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCwgRWxl
bWVudC5sYXN0RWxlbWVudENoaWxkLApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMTEw
MDkwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OTgsNyArNzk4LDcgQEAgYm9vbCBOb2RlOjpoYXNOb25FbXB0eUJvdW5kaW5nQm94KCkgY29ucwog
ICAgIGlmICghYm94LT5ib3JkZXJCb3VuZGluZ0JveCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBWZWN0b3I8TGF5b3V0UmVjdD4gcmVjdHM7CisgICAgVmVjdG9yPElu
dFJlY3Q+IHJlY3RzOwogICAgIEZsb2F0UG9pbnQgYWJzUG9zID0gcmVuZGVyZXIoKS0+bG9jYWxU
b0Fic29sdXRlKCk7CiAgICAgcmVuZGVyZXIoKS0+YWJzb2x1dGVSZWN0cyhyZWN0cywgZmxvb3Jl
ZExheW91dFBvaW50KGFic1BvcykpOwogICAgIHNpemVfdCBuID0gcmVjdHMuc2l6ZSgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vUmFuZ2UuY3BwCShyZXZpc2lvbiAxMTAwOTApCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcwLDcgKzE2NzAsNyBAQCBJbnRSZWN0
IFJhbmdlOjpib3VuZGluZ0JveCgpCiAgICAgY29uc3Qgc2l6ZV90IG4gPSByZWN0cy5zaXplKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpCiAgICAgICAgIHJlc3VsdC51bml0
ZShyZWN0c1tpXSk7Ci0gICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3QocmVzdWx0KTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFJhbmdlOjp0ZXh0UmVjdHMoVmVjdG9yPEludFJl
Y3Q+JiByZWN0cywgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIFJhbmdlSW5GaXhlZFBvc2l0aW9u
KiBpbkZpeGVkKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CShyZXZpc2lvbiAxMTAwOTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzY5LDcgKzYzNjksNyBAQCB2b2lkIFJlbmRlckJs
b2NrOjpzZXRQYWdlTG9naWNhbE9mZnNldChpCiAgICAgbV9yYXJlRGF0YS0+bV9wYWdlTG9naWNh
bE9mZnNldCA9IGxvZ2ljYWxPZmZzZXQ7CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRl
UmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0KSBjb25zdAordm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVSZWN0cyhWZWN0
b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQp
IGNvbnN0CiB7CiAgICAgLy8gRm9yIGJsb2NrcyBpbnNpZGUgaW5saW5lcywgd2UgZ28gYWhlYWQg
YW5kIGluY2x1ZGUgbWFyZ2lucyBzbyB0aGF0IHdlIHJ1biByaWdodCB1cCB0byB0aGUKICAgICAv
LyBpbmxpbmUgYm94ZXMgYWJvdmUgYW5kIGJlbG93IHVzICh0aHVzIGdldHRpbmcgbWVyZ2VkIHdp
dGggdGhlbSB0byBmb3JtIGEgc2luZ2xlIGlycmVndWxhcgpAQCAtNjM3NywxMiArNjM3NywxMiBA
QCB2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxMCiAgICAgaWYgKGlzQW5v
bnltb3VzQmxvY2tDb250aW51YXRpb24oKSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyB3
cm9uZyBmb3IgYmxvY2stZmxvd3MgdGhhdCBhcmUgaG9yaXpvbnRhbC4KICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NzgxCi0gICAgICAgIHJlY3Rz
LmFwcGVuZChMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LngoKSwgYWNjdW11bGF0ZWRPZmZz
ZXQueSgpIC0gY29sbGFwc2VkTWFyZ2luQmVmb3JlKCksCisgICAgICAgIHJlY3RzLmFwcGVuZChw
aXhlbFNuYXBwZWRJbnRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LngoKSwgYWNjdW11bGF0ZWRPZmZz
ZXQueSgpIC0gY29sbGFwc2VkTWFyZ2luQmVmb3JlKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdpZHRoKCksIGhlaWdodCgpICsgY29sbGFwc2VkTWFyZ2luQmVmb3JlKCkgKyBj
b2xsYXBzZWRNYXJnaW5BZnRlcigpKSk7CiAgICAgICAgIGNvbnRpbnVhdGlvbigpLT5hYnNvbHV0
ZVJlY3RzKHJlY3RzLCBhY2N1bXVsYXRlZE9mZnNldCAtIHRvTGF5b3V0U2l6ZShsb2NhdGlvbigp
ICsKICAgICAgICAgICAgICAgICBpbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCktPmNvbnRhaW5p
bmdCbG9jaygpLT5sb2NhdGlvbigpKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlY3RzLmFwcGVu
ZChMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkpKTsKKyAgICAgICAgcmVjdHMu
YXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHNpemUoKSkpOwog
fQogCiB2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBx
dWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CkBAIC02NTQwLDcgKzY1NDAsNyBAQCBMYXlvdXRS
ZWN0IFJlbmRlckJsb2NrOjpsb2NhbENhcmV0UmVjdChJCiAgICAgcmV0dXJuIExheW91dFJlY3Qo
eCwgeSwgY2FyZXRXaWR0aCwgaGVpZ2h0KTsKIH0KIAotdm9pZCBSZW5kZXJCbG9jazo6YWRkRm9j
dXNSaW5nUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQm
IGFkZGl0aW9uYWxPZmZzZXQpCit2b2lkIFJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0cyhW
ZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNl
dCkKIHsKICAgICAvLyBGb3IgYmxvY2tzIGluc2lkZSBpbmxpbmVzLCB3ZSBnbyBhaGVhZCBhbmQg
aW5jbHVkZSBtYXJnaW5zIHNvIHRoYXQgd2UgcnVuIHJpZ2h0IHVwIHRvIHRoZQogICAgIC8vIGlu
bGluZSBib3hlcyBhYm92ZSBhbmQgYmVsb3cgdXMgKHRodXMgZ2V0dGluZyBtZXJnZWQgd2l0aCB0
aGVtIHRvIGZvcm0gYSBzaW5nbGUgaXJyZWd1bGFyCkBAIC02NTU2LDE3ICs2NTU2LDE3IEBAIHZv
aWQgUmVuZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3QKICAgICAgICAgZmxvYXQgYm90
dG9tTWFyZ2luID0gbmV4dElubGluZUhhc0xpbmVCb3ggPyBjb2xsYXBzZWRNYXJnaW5BZnRlcigp
IDogc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oMCk7CiAgICAgICAgIExheW91dFJlY3QgcmVjdChh
ZGRpdGlvbmFsT2Zmc2V0LngoKSwgYWRkaXRpb25hbE9mZnNldC55KCkgLSB0b3BNYXJnaW4sIHdp
ZHRoKCksIGhlaWdodCgpICsgdG9wTWFyZ2luICsgYm90dG9tTWFyZ2luKTsKICAgICAgICAgaWYg
KCFyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJlY3RzLmFwcGVuZChyZWN0KTsKKyAgICAg
ICAgICAgIHJlY3RzLmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKICAgICB9IGVs
c2UgaWYgKHdpZHRoKCkgJiYgaGVpZ2h0KCkpCi0gICAgICAgIHJlY3RzLmFwcGVuZChMYXlvdXRS
ZWN0KGFkZGl0aW9uYWxPZmZzZXQsIHNpemUoKSkpOworICAgICAgICByZWN0cy5hcHBlbmQocGl4
ZWxTbmFwcGVkSW50UmVjdChhZGRpdGlvbmFsT2Zmc2V0LCBzaXplKCkpKTsKIAogICAgIGlmICgh
aGFzT3ZlcmZsb3dDbGlwKCkgJiYgIWhhc0NvbnRyb2xDbGlwKCkpIHsKICAgICAgICAgZm9yIChS
b290SW5saW5lQm94KiBjdXJyID0gZmlyc3RSb290Qm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5u
ZXh0Um9vdEJveCgpKSB7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IHRvcCA9IG1heChjdXJyLT5s
aW5lVG9wKCksIHN0YXRpY19jYXN0PExheW91dFVuaXQ+KGN1cnItPnRvcCgpKSk7Ci0gICAgICAg
ICAgICBMYXlvdXRVbml0IGJvdHRvbSA9IG1pbihjdXJyLT5saW5lQm90dG9tKCksIHN0YXRpY19j
YXN0PExheW91dFVuaXQ+KGN1cnItPnRvcCgpICsgY3Vyci0+aGVpZ2h0KCkpKTsKKyAgICAgICAg
ICAgIExheW91dFVuaXQgdG9wID0gbWF4PExheW91dFVuaXQ+KGN1cnItPmxpbmVUb3AoKSwgY3Vy
ci0+dG9wKCkpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBib3R0b20gPSBtaW48TGF5b3V0VW5p
dD4oY3Vyci0+bGluZUJvdHRvbSgpLCBjdXJyLT50b3AoKSArIGN1cnItPmhlaWdodCgpKTsKICAg
ICAgICAgICAgIExheW91dFJlY3QgcmVjdChhZGRpdGlvbmFsT2Zmc2V0LngoKSArIGN1cnItPngo
KSwgYWRkaXRpb25hbE9mZnNldC55KCkgKyB0b3AsIGN1cnItPndpZHRoKCksIGJvdHRvbSAtIHRv
cCk7CiAgICAgICAgICAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJl
Y3RzLmFwcGVuZChyZWN0KTsKKyAgICAgICAgICAgICAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFw
cGVkSW50UmVjdChyZWN0KSk7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKFJlbmRlck9iamVj
dCogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRTaWJsaW5nKCkp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCShyZXZpc2lvbiAx
MTAwOTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcyLDcgKzQ3Miw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGFkZE92ZXJm
bG93RnJvbUlubGluZUNoaWxkcmVuKCk7CiAgICAgdm9pZCBhZGRWaXN1YWxPdmVyZmxvd0Zyb21U
aGVtZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlv
dXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIGFkZEZvY3Vz
UmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKICNpZiBF
TkFCTEUoU1ZHKQogICAgIC8vIE9ubHkgdXNlZCBieSBSZW5kZXJTVkdUZXh0LCB3aGljaCBleHBs
aWNpdGVseSBvdmVycmlkZXMgUmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKCksIGRvIE5PVCB1c2Ug
Zm9yIGFueXRoaW5nIGVsc2UuCkBAIC04MTUsNyArODE1LDcgQEAgcHJpdmF0ZToKICAgICBMYXlv
dXRVbml0IGxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2NrKiByb290QmxvY2ss
IExheW91dFVuaXQgcG9zaXRpb24pOwogICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0U2VsZWN0
aW9uT2Zmc2V0KFJlbmRlckJsb2NrKiByb290QmxvY2ssIExheW91dFVuaXQgcG9zaXRpb24pOwog
ICAgIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQm
IGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAogICAgIExheW91
dFVuaXQgZGVzaXJlZENvbHVtbldpZHRoKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkocmV2aXNpb24gMTEwMDkwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwNywx
NSArNTA3LDE1IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludChQYWludEluZm8mIHBhaW4KICAg
ICBtX2xpbmVCb3hlcy5wYWludCh0aGlzLCBwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKIH0KIAot
dm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0
cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAordm9pZCBSZW5k
ZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewogICAgIGlmICghYWx3YXlzQ3Jl
YXRlTGluZUJveGVzKCkpCiAgICAgICAgIGN1bGxlZElubGluZUFic29sdXRlUmVjdHModGhpcywg
cmVjdHMsIHRvTGF5b3V0U2l6ZShhY2N1bXVsYXRlZE9mZnNldCkpOwogICAgIGVsc2UgaWYgKElu
bGluZUZsb3dCb3gqIGN1cnIgPSBmaXJzdExpbmVCb3goKSkgewogICAgICAgICBmb3IgKDsgY3Vy
cjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpCi0gICAgICAgICAgICByZWN0cy5hcHBlbmQo
ZW5jbG9zaW5nTGF5b3V0UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQgKyBjdXJyLT50
b3BMZWZ0KCksIGN1cnItPnNpemUoKSkpKTsKKyAgICAgICAgICAgIHJlY3RzLmFwcGVuZChlbmNs
b3NpbmdJbnRSZWN0KEZsb2F0UmVjdChhY2N1bXVsYXRlZE9mZnNldCArIGN1cnItPnRvcExlZnQo
KSwgY3Vyci0+c2l6ZSgpKSkpOwogICAgIH0gZWxzZQotICAgICAgICByZWN0cy5hcHBlbmQoTGF5
b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0U2l6ZSgpKSk7CisgICAgICAgIHJlY3Rz
LmFwcGVuZChJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChhY2N1bXVsYXRlZE9mZnNldCksIEludFNp
emUoKSkpOwogCiAgICAgaWYgKGNvbnRpbnVhdGlvbigpKSB7CiAgICAgICAgIGlmIChjb250aW51
YXRpb24oKS0+aXNCb3goKSkgewpAQCAtNTI2LDcgKzUyNiw3IEBAIHZvaWQgUmVuZGVySW5saW5l
OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjwKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjpj
dWxsZWRJbmxpbmVBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlcklubGluZSogY29udGFpbmVyLCBW
ZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQpIGNvbnN0
Cit2b2lkIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyhjb25zdCBSZW5k
ZXJJbmxpbmUqIGNvbnRhaW5lciwgVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0
U2l6ZSYgb2Zmc2V0KSBjb25zdAogewogICAgIGlmICghY3VsbGVkSW5saW5lRmlyc3RMaW5lQm94
KCkpIHsKICAgICAgICAgcmVjdHMuYXBwZW5kKEludFJlY3Qob2Zmc2V0LndpZHRoKCksIG9mZnNl
dC5oZWlnaHQoKSwgMCwgMCkpOwpAQCAtMTM2OCwxMyArMTM2OCwxMyBAQCB2b2lkIFJlbmRlcklu
bGluZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJCiAgICAgcmVwYWludCgpOwogfQogCi12b2lkIFJl
bmRlcklubGluZTo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywg
Y29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQpCit2b2lkIFJlbmRlcklubGluZTo6
YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9p
bnQmIGFkZGl0aW9uYWxPZmZzZXQpCiB7CiAgICAgaWYgKCFhbHdheXNDcmVhdGVMaW5lQm94ZXMo
KSkKICAgICAgICAgY3VsbGVkSW5saW5lQWJzb2x1dGVSZWN0cyh0aGlzLCByZWN0cywgdG9MYXlv
dXRTaXplKGFkZGl0aW9uYWxPZmZzZXQpKTsKICAgICBlbHNlIHsKICAgICAgICAgZm9yIChJbmxp
bmVGbG93Qm94KiBjdXJyID0gZmlyc3RMaW5lQm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0
TGluZUJveCgpKQotICAgICAgICAgICAgcmVjdHMuYXBwZW5kKGVuY2xvc2luZ0xheW91dFJlY3Qo
RmxvYXRSZWN0KGFkZGl0aW9uYWxPZmZzZXQueCgpICsgY3Vyci0+eCgpLCBhZGRpdGlvbmFsT2Zm
c2V0LnkoKSArIGN1cnItPnkoKSwgY3Vyci0+d2lkdGgoKSwgY3Vyci0+aGVpZ2h0KCkpKSk7Cisg
ICAgICAgICAgICByZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoYWRkaXRp
b25hbE9mZnNldC54KCkgKyBjdXJyLT54KCksIGFkZGl0aW9uYWxPZmZzZXQueSgpICsgY3Vyci0+
eSgpLCBjdXJyLT53aWR0aCgpLCBjdXJyLT5oZWlnaHQoKSkpKTsKICAgICB9CiAKICAgICBmb3Ig
KFJlbmRlck9iamVjdCogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnItPm5l
eHRTaWJsaW5nKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxp
bmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmgJKHJldmlzaW9uIDExMDA5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBMYXlvdXRVbml0IG1hcmdpblN0YXJ0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRV
bml0IG1hcmdpbkVuZCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMo
VmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0OwogCiAgICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKQEAgLTczLDcgKzczLDcgQEAg
cHVibGljOgogICAgIAogICAgIExheW91dFNpemUgcmVsYXRpdmVQb3NpdGlvbmVkSW5saW5lT2Zm
c2V0KGNvbnN0IFJlbmRlckJveCogY2hpbGQpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFk
ZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50Jik7
CisgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNv
bnN0IExheW91dFBvaW50Jik7CiAgICAgdm9pZCBwYWludE91dGxpbmUoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIHVzaW5nIFJlbmRlckJveE1vZGVsT2JqZWN0
Ojpjb250aW51YXRpb247CkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRS
ZWN0IGN1bGxlZElubGluZVZpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBjb25zdDsKICAgICBJ
bmxpbmVCb3gqIGN1bGxlZElubGluZUZpcnN0TGluZUJveCgpIGNvbnN0OwogICAgIElubGluZUJv
eCogY3VsbGVkSW5saW5lTGFzdExpbmVCb3goKSBjb25zdDsKLSAgICB2b2lkIGN1bGxlZElubGlu
ZUFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxMYXlv
dXRSZWN0PiYsIGNvbnN0IExheW91dFNpemUmKSBjb25zdDsKKyAgICB2b2lkIGN1bGxlZElubGlu
ZUFic29sdXRlUmVjdHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxJbnRS
ZWN0PiYsIGNvbnN0IExheW91dFNpemUmKSBjb25zdDsKICAgICB2b2lkIGN1bGxlZElubGluZUFi
c29sdXRlUXVhZHMoY29uc3QgUmVuZGVySW5saW5lKiBjb250YWluZXIsIFZlY3RvcjxGbG9hdFF1
YWQ+JikgY29uc3Q7CiAKICAgICB2b2lkIGFkZENoaWxkVG9Db250aW51YXRpb24oUmVuZGVyT2Jq
ZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCShyZXZpc2lvbiAxMTAwOTApCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50T2JqZWN0KFBh
aW50SW5mCiAgICAgfQogfQogCi12b2lkIFJlbmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1JlY3Rz
KFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFs
T2Zmc2V0KQordm9pZCBSZW5kZXJMaXN0Qm94OjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50
UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCkKIHsKICAg
ICBpZiAoIWlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGZyYW1lKCkpKQogICAgICAgICByZXR1
cm4gUmVuZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1JlY3RzKHJlY3RzLCBhZGRpdGlvbmFsT2Zmc2V0
KTsKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1Jl
Y3RzKFZlCiAgICAgLy8gRm9jdXMgdGhlIGxhc3Qgc2VsZWN0ZWQgaXRlbS4KICAgICBpbnQgc2Vs
ZWN0ZWRJdGVtID0gc2VsZWN0LT5hY3RpdmVTZWxlY3Rpb25FbmRMaXN0SW5kZXgoKTsKICAgICBp
ZiAoc2VsZWN0ZWRJdGVtID49IDApIHsKLSAgICAgICAgcmVjdHMuYXBwZW5kKGl0ZW1Cb3VuZGlu
Z0JveFJlY3QoYWRkaXRpb25hbE9mZnNldCwgc2VsZWN0ZWRJdGVtKSk7CisgICAgICAgIHJlY3Rz
LmFwcGVuZChwaXhlbFNuYXBwZWRJbnRSZWN0KGl0ZW1Cb3VuZGluZ0JveFJlY3QoYWRkaXRpb25h
bE9mZnNldCwgc2VsZWN0ZWRJdGVtKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0z
MzYsNyArMzM2LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjphZGRGb2N1c1JpbmdSZWN0cyhWZQog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEhUTUxFbGVtZW50
KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2ldOwogICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFt
ZShvcHRpb25UYWcpICYmICF0b0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpLT5kaXNhYmxlZCgp
KSB7Ci0gICAgICAgICAgICByZWN0cy5hcHBlbmQoaXRlbUJvdW5kaW5nQm94UmVjdChhZGRpdGlv
bmFsT2Zmc2V0LCBpKSk7CisgICAgICAgICAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50
UmVjdChpdGVtQm91bmRpbmdCb3hSZWN0KGFkZGl0aW9uYWxPZmZzZXQsIGkpKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmgJKHJldmlzaW9uIDExMDA5MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQ
b2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVj
dD4mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgdmlydHVhbCBib29sIGNhbkJlUHJvZ3Jh
bWF0aWNhbGx5U2Nyb2xsZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2
b2lkIGF1dG9zY3JvbGwoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCShyZXZpc2lvbiAxMTAwOTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExMCw3ICsxMTEwLDcgQEAgdm9p
ZCBSZW5kZXJPYmplY3Q6OmRyYXdBcmNGb3JCb3hTaWRlKEdyYQogICAgIAogdm9pZCBSZW5kZXJP
YmplY3Q6OnBhaW50Rm9jdXNSaW5nKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgVmVjdG9y
PExheW91dFJlY3Q+IGZvY3VzUmluZ1JlY3RzOworICAgIFZlY3RvcjxJbnRSZWN0PiBmb2N1c1Jp
bmdSZWN0czsKICAgICBhZGRGb2N1c1JpbmdSZWN0cyhmb2N1c1JpbmdSZWN0cywgcGFpbnRPZmZz
ZXQpOwogICAgIGlmIChzdHlsZS0+b3V0bGluZVN0eWxlSXNBdXRvKCkpCiAgICAgICAgIGNvbnRl
eHQtPmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUmVjdHMsIHN0eWxlLT5vdXRsaW5lV2lkdGgoKSwg
c3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eU91dGxpbmVDb2xvcikpOwpAQCAtMTE5Nyw3ICsxMTk3LDcgQEAgdm9pZCBSZW5kZXJP
YmplY3Q6OnBhaW50T3V0bGluZShHcmFwaGljcwogICAgICAgICBncmFwaGljc0NvbnRleHQtPmVu
ZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyT2JqZWN0OjphYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMpIGNvbnN0CitJbnRSZWN0IFJl
bmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zKSBj
b25zdAogewogICAgIGlmICh1c2VUcmFuc2Zvcm1zKSB7CiAgICAgICAgIFZlY3RvcjxGbG9hdFF1
YWQ+IHF1YWRzOwpAQCAtMTIwNywyOSArMTIwNywyOSBAQCBMYXlvdXRSZWN0IFJlbmRlck9iamVj
dDo6YWJzb2x1dGVCb3VuZGluCiAgICAgICAgIGlmICghbikKICAgICAgICAgICAgIHJldHVybiBJ
bnRSZWN0KCk7CiAgICAgCi0gICAgICAgIExheW91dFJlY3QgcmVzdWx0ID0gcXVhZHNbMF0uZW5j
bG9zaW5nQm91bmRpbmdCb3goKTsKKyAgICAgICAgSW50UmVjdCByZXN1bHQgPSBxdWFkc1swXS5l
bmNsb3NpbmdCb3VuZGluZ0JveCgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG47
ICsraSkKICAgICAgICAgICAgIHJlc3VsdC51bml0ZShxdWFkc1tpXS5lbmNsb3NpbmdCb3VuZGlu
Z0JveCgpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBGbG9hdFBvaW50
IGFic1BvcyA9IGxvY2FsVG9BYnNvbHV0ZSgpOwotICAgIFZlY3RvcjxMYXlvdXRSZWN0PiByZWN0
czsKKyAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7CiAgICAgYWJzb2x1dGVSZWN0cyhyZWN0cywg
Zmxvb3JlZExheW91dFBvaW50KGFic1BvcykpOwogCiAgICAgc2l6ZV90IG4gPSByZWN0cy5zaXpl
KCk7CiAgICAgaWYgKCFuKQotICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOworICAgICAgICBy
ZXR1cm4gSW50UmVjdCgpOwogCiAgICAgTGF5b3V0UmVjdCByZXN1bHQgPSByZWN0c1swXTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG47ICsraSkKICAgICAgICAgcmVzdWx0LnVuaXRlKHJl
Y3RzW2ldKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBwaXhlbFNuYXBwZWRJbnRS
ZWN0KHJlc3VsdCk7CiB9CiAKIHZvaWQgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUZvY3VzUmluZ1F1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKIHsKLSAgICBWZWN0b3I8TGF5b3V0UmVjdD4g
cmVjdHM7CisgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwogICAgIC8vIEZJWE1FOiBhZGRGb2N1
c1JpbmdSZWN0cygpIG5lZWRzIHRvIGJlIHBhc3NlZCB0aGlzIHRyYW5zZm9ybS11bmF3YXJlCiAg
ICAgLy8gbG9jYWxUb0Fic29sdXRlKCkgb2Zmc2V0IGhlcmUgYmVjYXVzZSBSZW5kZXJJbmxpbmU6
OmFkZEZvY3VzUmluZ1JlY3RzKCkKICAgICAvLyBpbXBsaWNpdGx5IGFzc3VtZXMgdGhhdC4gVGhp
cyBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IHdpdGggdHJhbnNmb3JtZWQKQEAgLTEyMzgsNyArMTIz
OCw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUZvY3VzUmluZ1F1YWQKICAgICBhZGRG
b2N1c1JpbmdSZWN0cyhyZWN0cywgZmxvb3JlZExheW91dFBvaW50KGFic29sdXRlUG9pbnQpKTsK
ICAgICBzaXplX3QgY291bnQgPSByZWN0cy5zaXplKCk7IAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBMYXlvdXRSZWN0IHJlY3QgPSByZWN0c1tpXTsK
KyAgICAgICAgSW50UmVjdCByZWN0ID0gcmVjdHNbaV07CiAgICAgICAgIHJlY3QubW92ZSgtYWJz
b2x1dGVQb2ludC54KCksIC1hYnNvbHV0ZVBvaW50LnkoKSk7CiAgICAgICAgIHF1YWRzLmFwcGVu
ZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UXVhZChyZWN0KSkpOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDExMDA5MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNjUxLDExICs2NTEsMTEgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgb2Zmc2V0IGZy
b20gYW4gb2JqZWN0IHVwIHRoZSBjb250YWluZXIoKSBjaGFpbi4gQXNzZXJ0cyB0aGF0IG5vbmUg
b2YgdGhlIGludGVybWVkaWF0ZSBvYmplY3RzIGhhdmUgdHJhbnNmb3Jtcy4KICAgICBMYXlvdXRT
aXplIG9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihSZW5kZXJPYmplY3QqKSBjb25zdDsKICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBj
b25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJl
Y3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3QgeyB9CiAKICAg
ICAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91bGQgZ28gYXdheSBldmVudHVhbGx5Ci0gICAg
TGF5b3V0UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybSA9IHRy
dWUpIGNvbnN0OwotICAgIExheW91dFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmlu
Z1RyYW5zZm9ybXMoKSBjb25zdCB7IHJldHVybiBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChmYWxz
ZSk7IH0KKyAgICBJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNm
b3JtID0gdHJ1ZSkgY29uc3Q7CisgICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdEln
bm9yaW5nVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIGFic29sdXRlQm91bmRpbmdCb3hSZWN0
KGZhbHNlKTsgfQogCiAgICAgLy8gQnVpbGQgYW4gYXJyYXkgb2YgcXVhZHMgaW4gYWJzb2x1dGUg
Y29vcmRzIGZvciBsaW5lIGJveGVzCiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mLCBib29sKiAvKndhc0ZpeGVkKi8gPSAwKSBjb25zdCB7IH0KQEAgLTgz
Nyw3ICs4MzcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29u
dGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCogY29udGFpbmVyKSBjb25zdDsKICAgICB2b2lkIGdl
dFRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXIsIGNv
bnN0IExheW91dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYp
IGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8
TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKSB7
IH07CiAKICAgICBMYXlvdXRSZWN0IGFic29sdXRlT3V0bGluZUJvdW5kcygpIGNvbnN0CiAgICAg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkocmV2aXNpb24g
MTEwMDkwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDMsMTAgKzMwMywxMCBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFJl
bmRlclRleHQ6Om9yaWdpCiAgICAgcmV0dXJuIChlICYmIGUtPmlzVGV4dE5vZGUoKSkgPyB0b1Rl
eHQoZSktPmRhdGFJbXBsKCkgOiAwOwogfQogCi12b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUmVj
dHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0KSBjb25zdAordm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJ
bnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29u
c3QKIHsKICAgICBmb3IgKElubGluZVRleHRCb3gqIGJveCA9IGZpcnN0VGV4dEJveCgpOyBib3g7
IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkKLSAgICAgICAgcmVjdHMuYXBwZW5kKGVuY2xvc2lu
Z0xheW91dFJlY3QoRmxvYXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0ICsgYm94LT50b3BMZWZ0KCks
IGJveC0+c2l6ZSgpKSkpOworICAgICAgICByZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVjdChG
bG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQgKyBib3gtPnRvcExlZnQoKSwgYm94LT5zaXplKCkp
KSk7CiB9CiAKIHN0YXRpYyBGbG9hdFJlY3QgbG9jYWxRdWFkRm9yVGV4dEJveChJbmxpbmVUZXh0
Qm94KiBib3gsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9u
SGVpZ2h0KQpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBGbG9hdFJlY3QgbG9jYWxRdWFkRm9y
VGV4dEJveChJbmwKICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiB9CiAKLXZvaWQgUmVuZGVyVGV4
dDo6YWJzb2x1dGVSZWN0c0ZvclJhbmdlKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0LCBib29sKiB3
YXNGaXhlZCkKK3ZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0c0ZvclJhbmdlKFZlY3RvcjxJ
bnRSZWN0PiYgcmVjdHMsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2Vs
ZWN0aW9uSGVpZ2h0LCBib29sKiB3YXNGaXhlZCkKIHsKICAgICAvLyBXb3JrIGFyb3VuZCBzaWdu
ZWQvdW5zaWduZWQgaXNzdWVzLiBUaGlzIGZ1bmN0aW9uIHRha2VzIHVuc2lnbmVkcywgYW5kIGlz
IG9mdGVuIHBhc3NlZCBVSU5UX01BWAogICAgIC8vIHRvIG1lYW4gImFsbCB0aGUgd2F5IHRvIHRo
ZSBlbmQiLiBJbmxpbmVUZXh0Qm94IGNvb3JkaW5hdGVzIGFyZSB1bnNpZ25lZHMsIHNvIGNoYW5n
aW5nIHRoaXMgCkBAIC0zNDcsNyArMzQ3LDYgQEAgdm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVJl
Y3RzRm9yUmFuZ2UoVgogICAgICAgICBpZiAoc3RhcnQgPD0gYm94LT5zdGFydCgpICYmIGJveC0+
ZW5kKCkgPCBlbmQpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCByID0gYm94LT5jYWxjdWxhdGVC
b3VuZGFyaWVzKCk7CiAgICAgICAgICAgICBpZiAodXNlU2VsZWN0aW9uSGVpZ2h0KSB7Ci0gICAg
ICAgICAgICAgICAgLy8gRklYTUU6IGxvY2FsU2VsZWN0aW9uUmVjdCBzaG91bGQgc3dpdGNoIHRv
IHJldHVybiBGbG9hdFJlY3Qgc29vbiB3aXRoIHRoZSBzdWJwaXhlbGxheW91dCBicmFuY2guCiAg
ICAgICAgICAgICAgICAgSW50UmVjdCBzZWxlY3Rpb25SZWN0ID0gYm94LT5sb2NhbFNlbGVjdGlv
blJlY3Qoc3RhcnQsIGVuZCk7CiAgICAgICAgICAgICAgICAgaWYgKGJveC0+aXNIb3Jpem9udGFs
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgci5zZXRIZWlnaHQoc2VsZWN0aW9uUmVjdC5oZWln
aHQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgJKHJldmlzaW9u
IDExMDA5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgogICAgIElubGluZVRleHRCb3gqIGNy
ZWF0ZUlubGluZVRleHRCb3goKTsKICAgICB2b2lkIGRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExh
eW91dCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVj
dD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwotICAgIHZv
aWQgYWJzb2x1dGVSZWN0c0ZvclJhbmdlKFZlY3RvcjxMYXlvdXRSZWN0PiYsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wgdXNlU2Vs
ZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCk7CisgICAgdmlydHVhbCB2
b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKKyAgICB2b2lkIGFic29sdXRlUmVjdHNGb3JSYW5nZShW
ZWN0b3I8SW50UmVjdD4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9m
ZnNldCA9IFVJTlRfTUFYLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlLCBib29sKiB3
YXNGaXhlZCA9IDApOwogCiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAgICAgdm9pZCBhYnNvbHV0ZVF1YWRz
Rm9yUmFuZ2UoVmVjdG9yPEZsb2F0UXVhZD4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVu
c2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFYLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9IGZh
bHNlLCBib29sKiB3YXNGaXhlZCA9IDApOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCShyZXZpc2lvbiAxMTAwOTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzUsMTAgKzI3NSwxMCBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sOjpjb21wdXRlUHJlZmVy
cmVkCiAgICAgc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKIH0KIAotdm9p
ZCBSZW5kZXJUZXh0Q29udHJvbDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+
JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQpCit2b2lkIFJlbmRl
clRleHRDb250cm9sOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBj
b25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCkKIHsKICAgICBpZiAoIXNpemUoKS5p
c0VtcHR5KCkpCi0gICAgICAgIHJlY3RzLmFwcGVuZChMYXlvdXRSZWN0KGFkZGl0aW9uYWxPZmZz
ZXQsIHNpemUoKSkpOworICAgICAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFwcGVkSW50UmVjdChh
ZGRpdGlvbmFsT2Zmc2V0LCBzaXplKCkpKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBSZW5kZXJUZXh0
Q29udHJvbDo6bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVu
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgJ
KHJldmlzaW9uIDExMDA5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUxlZnRvdmVyQW5vbnltb3VzQmxvY2soUmVuZGVyQmxvY2sqKSB7
IH0KICAgICB2aXJ0dWFsIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0
UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1Jp
bmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgdmly
dHVhbCBib29sIGNhbkJlUHJvZ3JhbWF0aWNhbGx5U2Nyb2xsZWQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHJl
dmlzaW9uIDExMDA5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzY2LDkgKzM2Niw5IEBAIHZvaWQgUmVuZGVyVmlldzo6Y29t
cHV0ZVJlY3RGb3JSZXBhaW50KFIKICAgICAgICAgcmVjdCA9IG1fbGF5ZXItPnRyYW5zZm9ybSgp
LT5tYXBSZWN0KHJlY3QpOwogfQogCi12b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMoVmVj
dG9yPExheW91dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zm
c2V0KSBjb25zdAordm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0
PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKIHsK
LSAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgbV9sYXllci0+
c2l6ZSgpKSk7CisgICAgcmVjdHMuYXBwZW5kKHBpeGVsU25hcHBlZEludFJlY3QoYWNjdW11bGF0
ZWRPZmZzZXQsIG1fbGF5ZXItPnNpemUoKSkpOwogfQogCiB2b2lkIFJlbmRlclZpZXc6OmFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAkocmV2aXNpb24gMTEwMDkw
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAkod29ya2luZyBjb3B5
KQpAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHByaW50aW5nKCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAkocmV2aXNpb24gMTEwMDkwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc5LDcgKzc5LDcgQEAgdm9pZCBSZW5kZXJTVkdCbG9jazo6dXBkYXRlQm94TW9kZWxJbmZvRgog
ICAgIHNldEhhc092ZXJmbG93Q2xpcChmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHQmxvY2s6
OmFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBj
b25zdAordm9pZCBSZW5kZXJTVkdCbG9jazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjb2RlIHBhdGggc2hv
dWxkIG5ldmVyIGJlIHRha2VuIGZvciBTVkcsIGFzIHdlJ3JlIGFzc3VtaW5nIHVzZVRyYW5zZm9y
bXM9dHJ1ZSBldmVyeXdoZXJlLCBhYnNvbHV0ZVF1YWRzIHNob3VsZCBiZSB1c2VkLgogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHQmxvY2suaAkocmV2aXNpb24gMTEwMDkwKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlKFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxl
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVz
dHJveWVkKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVu
Y2UsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCShyZXZpc2lvbiAx
MTAwOTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5l
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw5ICsxNDAsOSBAQCB2b2lkIFJlbmRlclNWR0Nv
bnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvCiB9CiAKIC8vIGFkZEZvY3VzUmluZ1JlY3RzIGlzIGNh
bGxlZCBmcm9tIHBhaW50T3V0bGluZSBhbmQgbmVlZHMgdG8gYmUgaW4gdGhlIHNhbWUgY29vcmRp
bmF0ZXMgYXMgdGhlIHBhaW50T3VsaW5lIGNhbGwKLXZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjph
ZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQ
b2ludCYpCit2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9y
PEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmKQogewotICAgIExheW91dFJlY3Qg
cGFpbnRSZWN0SW5QYXJlbnQgPSBlbmNsb3NpbmdMYXlvdXRSZWN0KGxvY2FsVG9QYXJlbnRUcmFu
c2Zvcm0oKS5tYXBSZWN0KHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpKTsKKyAgICBJ
bnRSZWN0IHBhaW50UmVjdEluUGFyZW50ID0gZW5jbG9zaW5nSW50UmVjdChsb2NhbFRvUGFyZW50
VHJhbnNmb3JtKCkubWFwUmVjdChyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKSk7CiAg
ICAgaWYgKCFwYWludFJlY3RJblBhcmVudC5pc0VtcHR5KCkpCiAgICAgICAgIHJlY3RzLmFwcGVu
ZChwYWludFJlY3RJblBhcmVudCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgJKHJldmlzaW9uIDExMDA5MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlv
dXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIGFkZEZvY3Vz
UmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKICAgICB2
aXJ0dWFsIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Jq
ZWN0Qm91bmRpbmdCb3g7IH0KICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ0Jv
eCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlQm91bmRpbmdCb3g7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAx
MTAwOTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDEwICsxODMsMTAgQEAgdm9pZCBSZW5kZXJTVkdJbWFn
ZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZQogICAgIHJlcGFpbnQoKTsKIH0KIAotdm9pZCBSZW5kZXJT
VkdJbWFnZTo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiByZWN0cywgY29u
c3QgTGF5b3V0UG9pbnQmKQordm9pZCBSZW5kZXJTVkdJbWFnZTo6YWRkRm9jdXNSaW5nUmVjdHMo
VmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmKQogewogICAgIC8vIHRo
aXMgaXMgY2FsbGVkIGZyb20gcGFpbnQoKSBhZnRlciB0aGUgbG9jYWxUcmFuc2Zvcm0gaGFzIGFs
cmVhZHkgYmVlbiBhcHBsaWVkCi0gICAgTGF5b3V0UmVjdCBjb250ZW50UmVjdCA9IGVuY2xvc2lu
Z0xheW91dFJlY3QocmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSk7CisgICAgSW50UmVj
dCBjb250ZW50UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QocmVwYWludFJlY3RJbkxvY2FsQ29vcmRp
bmF0ZXMoKSk7CiAgICAgaWYgKCFjb250ZW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJlY3Rz
LmFwcGVuZChjb250ZW50UmVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCShyZXZpc2lvbiAxMTAwOTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzdHJva2VCb3VuZGlu
Z0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0KICAgICB2aXJ0dWFs
IEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0dXJu
IG1fcmVwYWludEJvdW5kaW5nQm94OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5n
UmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0
UG9pbnQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRy
LCBjb25zdCBJbnRSZWN0KiA9IDApOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMTEwMDkw
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDEwICs3MiwxMCBAQCBMYXlvdXRSZWN0IFJlbmRlclNW
R01vZGVsT2JqZWN0OjpvdXRsaW5lCiAgICAgcmV0dXJuIGNvbnRhaW5lclJlbGF0aXZlUXVhZC5l
bmNsb3NpbmdCb3VuZGluZ0JveCgpOwogfQogCi12b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0Ojph
YnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFi
c29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewotICAgIExheW91dFJlY3QgcmVjdCA9IGVuY2xvc2lu
Z0xheW91dFJlY3Qoc3Ryb2tlQm91bmRpbmdCb3goKSk7Ci0gICAgcmVjdC5tb3ZlQnkoYWNjdW11
bGF0ZWRPZmZzZXQpOworICAgIEludFJlY3QgcmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc3Ryb2tl
Qm91bmRpbmdCb3goKSk7CisgICAgcmVjdC5tb3ZlQnkocm91bmRlZEludFBvaW50KGFjY3VtdWxh
dGVkT2Zmc2V0KSk7CiAgICAgcmVjdHMuYXBwZW5kKHJlY3QpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCShy
ZXZpc2lvbiAxMTAwOTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R01vZGVsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNl
KSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFBvaW50KikgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVh
ZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKICAgICB2aXJ0
dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0
ZSYsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAkocmV2aXNpb24gMTEwMDkwKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1Niw5ICszNTYsOSBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpwYWludChQYWlu
dEluZm8mIHBhCiAKIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBmcm9tIGluc2lkZSBwYWludE91
dGxpbmUoKSBzaW5jZSB3ZSBjYWxsIHBhaW50T3V0bGluZSgpCiAvLyB3aGlsZSB0cmFuc2Zvcm1l
ZCB0byBvdXIgY29vcmQgc3lzdGVtLCByZXR1cm4gbG9jYWwgY29vcmRzCi12b2lkIFJlbmRlclNW
R1NoYXBlOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25z
dCBMYXlvdXRQb2ludCYpCit2b2lkIFJlbmRlclNWR1NoYXBlOjphZGRGb2N1c1JpbmdSZWN0cyhW
ZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYpCiB7Ci0gICAgTGF5b3V0
UmVjdCByZWN0ID0gZW5jbG9zaW5nTGF5b3V0UmVjdChyZXBhaW50UmVjdEluTG9jYWxDb29yZGlu
YXRlcygpKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHJlcGFpbnRSZWN0
SW5Mb2NhbENvb3JkaW5hdGVzKCkpOwogICAgIGlmICghcmVjdC5pc0VtcHR5KCkpCiAgICAgICAg
IHJlY3RzLmFwcGVuZChyZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgJKHJldmlzaW9uIDExMDA5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTEz
LDcgKzExMyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7Ci0gICAg
dmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0
IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3Rv
cjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9k
ZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>