<?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>156995</bug_id>
          
          <creation_ts>2016-04-25 14:20:21 -0700</creation_ts>
          <short_desc>[Web IDL] Specify default values for optional parameters of type &apos;float&apos; / &apos;unrestricted float&apos;</short_desc>
          <delta_ts>2016-04-25 16:38:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1187060</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-25 14:20:21 -0700</bug_when>
    <thetext>Specify default values for optional parameters of type &apos;float&apos; / &apos;unrestricted float&apos; and let the bindings generator use WTF::Optional&lt;&gt; for the ones that do not have a default value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187080</commentid>
    <comment_count>1</comment_count>
      <attachid>277283</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-25 15:20:55 -0700</bug_when>
    <thetext>Created attachment 277283
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187100</commentid>
    <comment_count>2</comment_count>
      <attachid>277283</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-25 16:02:22 -0700</bug_when>
    <thetext>Comment on attachment 277283
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=277283&amp;action=review

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1267
&gt; +    setShadow(FloatSize(width, height), blur, alpha ? colorWithOverrideAlpha(rgba, alpha.value()) : rgba);

Seems like we it would be elegant to add an overload of colorWithOverrideAlpha that takes an Optional. It can be inlined, but it would be nice to have it there, rather than writing it out here.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.idl:131
&gt; +    void setStrokeColor(unrestricted float grayLevel, optional float alpha = 1.0);

I think just &quot;= 1&quot; would be nicer.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.idl:136
&gt; +    void setFillColor(unrestricted float grayLevel, optional unrestricted float alpha = 1.0);

Ditto.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.idl:166
&gt; +        optional unrestricted float alpha = 1.0);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187117</commentid>
    <comment_count>3</comment_count>
      <attachid>277293</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-25 16:37:51 -0700</bug_when>
    <thetext>Created attachment 277293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187119</commentid>
    <comment_count>4</comment_count>
      <attachid>277293</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-25 16:38:35 -0700</bug_when>
    <thetext>Comment on attachment 277293
Patch

Clearing flags on attachment: 277293

Committed r200058: &lt;http://trac.webkit.org/changeset/200058&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187120</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-25 16:38:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277283</attachid>
            <date>2016-04-25 15:20:55 -0700</date>
            <delta_ts>2016-04-25 16:37:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156995-20160425152124.patch</filename>
            <type>text/plain</type>
            <size>18164</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzMxMTUwMmE5NWYzZTli
ZjRlYTcwYzZkMTdhOWJjNGJlNmZmNTgzNC4uNWYzOWQxM2I1ZTZiYjFkOWVmNDk2ZWVhYjI1NDlk
OTIyYTZiZjA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE2LTA0LTI1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBJRExdIFNwZWNpZnkg
ZGVmYXVsdCB2YWx1ZXMgZm9yIG9wdGlvbmFsIHBhcmFtZXRlcnMgb2YgdHlwZSAnZmxvYXQnIC8g
J3VucmVzdHJpY3RlZCBmbG9hdCcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1Njk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNwZWNpZnkgZGVmYXVsdCB2YWx1ZXMgZm9yIG9wdGlvbmFsIHBhcmFtZXRl
cnMgb2YgdHlwZSAnZmxvYXQnIC8gJ3VucmVzdHJpY3RlZCBmbG9hdCcKKyAgICAgICAgYW5kIGxl
dCB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yIHVzZSBXVEY6Ok9wdGlvbmFsPD4gZm9yIHRoZSBvbmVz
IHRoYXQgZG8gbm90IGhhdmUgYQorICAgICAgICBkZWZhdWx0IHZhbHVlLgorCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChDYW5Vc2VXVEZP
cHRpb25hbEZvclBhcmFtZXRlcik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3cpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyU2hhZG93KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVNwYWNlcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Om1lYXN1cmVUZXh0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxNi0wNC0yNSAgQWxiZXJ0byBHYXJjaWEgIDxi
ZXJ0b0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIENyYXNoZXMgaWYgRElTUExBWSBpcyB1
bnNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQppbmRleCA1Nzk5YmIxNWZjYjUxYzJkMzNmNGM4MjgzMTQ4NjljMmYwMjQ1Zjg4Li44
MDYzMzAyYWExMmIwNDhiMTZmZmUzZmIzODczZTg1OGM4MGU4NWRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzM4Niw5
ICszMzg2LDcgQEAgc3ViIENhblVzZVdURk9wdGlvbmFsRm9yUGFyYW1ldGVyCiAgICAgcmV0dXJu
IDAgaWYgJHR5cGUgZXEgIkRPTVN0cmluZyI7CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgIkRp
Y3Rpb25hcnkiOwogICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJhbnkiOwotICAgIHJldHVybiAw
IGlmICR0eXBlIGVxICJmbG9hdCI7CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImxvbmciOwot
ICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJ1bnJlc3RyaWN0ZWQgZmxvYXQiOwogICAgIHJldHVy
biAwIGlmICR0eXBlIGVxICJ1bnJlc3RyaWN0ZWQgZG91YmxlIjsKICAgICByZXR1cm4gMCBpZiAk
dHlwZSBlcSAidW5zaWduZWQgbG9uZyI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IGQwYjMx
MTY2YmFhNGU1NDI4ZjIzZGRmNGEwY2Q2NDRmMmNkZmFlZDkuLmY5NTA4MTAzNDYwZjJmMDY5OWRh
NzAzM2I3ZmE1NjI0MTAxNmM5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtNDk5LDEyICs0
OTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25TZXRTaGFkb3coRXhlY1N0YXRlKgogICAgIFN0cmluZyBjb2xvciA9IHN0YXRl
LT5hcmd1bWVudCgzKS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpZiAoYXJnc0NvdW50IDw9IDQpIHsKLSAgICAgICAg
aW1wbC5zZXRTaGFkb3cod2lkdGgsIGhlaWdodCwgYmx1ciwgY29sb3IpOwotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIH0KLQotICAgIGZsb2F0IGFs
cGhhID0gc3RhdGUtPmFyZ3VtZW50KDQpLnRvRmxvYXQoc3RhdGUpOworICAgIE9wdGlvbmFsPGZs
b2F0PiBhbHBoYSA9IHN0YXRlLT5hcmd1bWVudCg0KS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8
ZmxvYXQ+KCkgOiBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoNCkudG9GbG9hdChzdGF0ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5zZXRTaGFkb3cod2lkdGgs
IGhlaWdodCwgYmx1ciwgY29sb3IsIGFscGhhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGJmYzlmMzJj
MThjZWFhY2E4NWJkNGQ3ZWVkMGZiY2I2NjVhZGZjNTUuLmZlZjRjZDQzZGJhMDZjYmFmMDQxZTJh
YWUwZWZkNmU0Y2FhZDhkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtODE5LDI3ICs4MTksMjEgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFRyYW5zZm9ybShmbG9hdCBtMTEsIGZs
b2F0IG0xMiwgZmxvYXQgbTIxLCBmbG8KICAgICB0cmFuc2Zvcm0obTExLCBtMTIsIG0yMSwgbTIy
LCBkeCwgZHkpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tl
Q29sb3IoY29uc3QgU3RyaW5nJiBjb2xvcikKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRTdHJva2VDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBPcHRpb25hbDxmbG9hdD4gYWxw
aGEpCiB7CisgICAgaWYgKGFscGhhKSB7CisgICAgICAgIHNldFN0cm9rZVN0eWxlKENhbnZhc1N0
eWxlOjpjcmVhdGVGcm9tU3RyaW5nV2l0aE92ZXJyaWRlQWxwaGEoY29sb3IsIGFscGhhLnZhbHVl
KCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChjb2xvciA9PSBzdGF0ZSgp
LnVucGFyc2VkU3Ryb2tlQ29sb3IpCiAgICAgICAgIHJldHVybjsKKwogICAgIHJlYWxpemVTYXZl
cygpOwogICAgIHNldFN0cm9rZVN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5nKGNv
bG9yLCAmY2FudmFzKCktPmRvY3VtZW50KCkpKTsKICAgICBtb2RpZmlhYmxlU3RhdGUoKS51bnBh
cnNlZFN0cm9rZUNvbG9yID0gY29sb3I7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTdHJva2VDb2xvcihmbG9hdCBncmF5TGV2ZWwpCi17Ci0gICAgaWYgKHN0YXRlKCku
c3Ryb2tlU3R5bGUuaXNWYWxpZCgpICYmIHN0YXRlKCkuc3Ryb2tlU3R5bGUuaXNFcXVpdmFsZW50
UkdCQShncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCAxLjBmKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIHNldFN0cm9rZVN0eWxlKENhbnZhc1N0eWxlKGdyYXlMZXZlbCwgMS4wZikpOwot
fQotCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IoY29uc3Qg
U3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpCi17Ci0gICAgc2V0U3Ryb2tlU3R5bGUoQ2FudmFz
U3R5bGU6OmNyZWF0ZUZyb21TdHJpbmdXaXRoT3ZlcnJpZGVBbHBoYShjb2xvciwgYWxwaGEpKTsK
LX0KLQogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGZsb2F0
IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpCiB7CiAgICAgaWYgKHN0YXRlKCkuc3Ryb2tlU3R5bGUu
aXNWYWxpZCgpICYmIHN0YXRlKCkuc3Ryb2tlU3R5bGUuaXNFcXVpdmFsZW50UkdCQShncmF5TGV2
ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpCkBAIC04NjEsMjcgKzg1NSwyMSBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IoZmxvYXQgYywgZmxv
YXQgbSwgZmxvYXQgeSwgZmxvYXQgawogICAgIHNldFN0cm9rZVN0eWxlKENhbnZhc1N0eWxlKGMs
IG0sIHksIGssIGEpKTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZp
bGxDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldEZpbGxDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBPcHRpb25hbDxmbG9hdD4gYWxw
aGEpCiB7CisgICAgaWYgKGFscGhhKSB7CisgICAgICAgIHNldEZpbGxTdHlsZShDYW52YXNTdHls
ZTo6Y3JlYXRlRnJvbVN0cmluZ1dpdGhPdmVycmlkZUFscGhhKGNvbG9yLCBhbHBoYS52YWx1ZSgp
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoY29sb3IgPT0gc3RhdGUoKS51
bnBhcnNlZEZpbGxDb2xvcikKICAgICAgICAgcmV0dXJuOworCiAgICAgcmVhbGl6ZVNhdmVzKCk7
CiAgICAgc2V0RmlsbFN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5nKGNvbG9yLCAm
Y2FudmFzKCktPmRvY3VtZW50KCkpKTsKICAgICBtb2RpZmlhYmxlU3RhdGUoKS51bnBhcnNlZEZp
bGxDb2xvciA9IGNvbG9yOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
RmlsbENvbG9yKGZsb2F0IGdyYXlMZXZlbCkKLXsKLSAgICBpZiAoc3RhdGUoKS5maWxsU3R5bGUu
aXNWYWxpZCgpICYmIHN0YXRlKCkuZmlsbFN0eWxlLmlzRXF1aXZhbGVudFJHQkEoZ3JheUxldmVs
LCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgMS4wZikpCi0gICAgICAgIHJldHVybjsKLSAgICBzZXRG
aWxsU3R5bGUoQ2FudmFzU3R5bGUoZ3JheUxldmVsLCAxLjBmKSk7Ci19Ci0KLXZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxv
YXQgYWxwaGEpCi17Ci0gICAgc2V0RmlsbFN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tU3Ry
aW5nV2l0aE92ZXJyaWRlQWxwaGEoY29sb3IsIGFscGhhKSk7Ci19Ci0KIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBo
YSkKIHsKICAgICBpZiAoc3RhdGUoKS5maWxsU3R5bGUuaXNWYWxpZCgpICYmIHN0YXRlKCkuZmls
bFN0eWxlLmlzRXF1aXZhbGVudFJHQkEoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwg
YWxwaGEpKQpAQCAtMTI3MSwyNSArMTI1OSwxMiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIpCiAg
ICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1ciwgQ29sb3I6OnRyYW5z
cGFyZW50KTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBjb25zdCBTdHJpbmcmIGNvbG9y
KQotewotICAgIFJHQkEzMiByZ2JhOwotICAgIGlmICghcGFyc2VDb2xvck9yQ3VycmVudENvbG9y
KHJnYmEsIGNvbG9yLCBjYW52YXMoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICBzZXRTaGFkb3co
RmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBibHVyLCByZ2JhKTsKLX0KLQotdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBm
bG9hdCBibHVyLCBmbG9hdCBncmF5TGV2ZWwpCi17Ci0gICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3
aWR0aCwgaGVpZ2h0KSwgYmx1ciwgbWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVsLCBncmF5
TGV2ZWwsIGdyYXlMZXZlbCwgMSkpOwotfQotCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0
IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBjb25z
dCBTdHJpbmcmIGNvbG9yLCBPcHRpb25hbDxmbG9hdD4gYWxwaGEpCiB7CiAgICAgUkdCQTMyIHJn
YmE7CiAgICAgaWYgKCFwYXJzZUNvbG9yT3JDdXJyZW50Q29sb3IocmdiYSwgY29sb3IsIGNhbnZh
cygpKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgsIGhl
aWdodCksIGJsdXIsIGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEocmdiYSwgYWxwaGEpKTsKKyAgICBz
ZXRTaGFkb3coRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBibHVyLCBhbHBoYSA/IGNvbG9yV2l0
aE92ZXJyaWRlQWxwaGEocmdiYSwgYWxwaGEudmFsdWUoKSkgOiByZ2JhKTsKIH0KIAogdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVp
Z2h0LCBmbG9hdCBibHVyLCBmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKQpAQCAtMjMyNywy
NCArMjMwMiwxNCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RGlyZWN0aW9u
KGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nKQogICAgIG1vZGlmaWFibGVTdGF0ZSgpLmRp
cmVjdGlvbiA9IGRpcmVjdGlvbjsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSkKLXsKLSAgICBk
cmF3VGV4dEludGVybmFsKHRleHQsIHgsIHksIHRydWUpOwotfQotCi12b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZmlsbFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCBtYXhXaWR0aCkKLXsKLSAgICBkcmF3VGV4dEludGVybmFsKHRleHQsIHgsIHks
IHRydWUsIG1heFdpZHRoLCB0cnVlKTsKLX0KLQotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5KQordm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwg
ZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQogewotICAgIGRyYXdU
ZXh0SW50ZXJuYWwodGV4dCwgeCwgeSwgZmFsc2UpOworICAgIGRyYXdUZXh0SW50ZXJuYWwodGV4
dCwgeCwgeSwgdHJ1ZSwgbWF4V2lkdGgpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IG1heFdpZHRoKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4
V2lkdGgpCiB7Ci0gICAgZHJhd1RleHRJbnRlcm5hbCh0ZXh0LCB4LCB5LCBmYWxzZSwgbWF4V2lk
dGgsIHRydWUpOworICAgIGRyYXdUZXh0SW50ZXJuYWwodGV4dCwgeCwgeSwgZmFsc2UsIG1heFdp
ZHRoKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlzU3BhY2VUaGF0TmVlZHNSZXBsYWNpbmco
VUNoYXIgYykKQEAgLTIzOTAsNyArMjM1NSw3IEBAIFJlZjxUZXh0TWV0cmljcz4gQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjptZWFzdXJlVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0
dXJuIG1ldHJpY3M7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4
dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxs
LCBmbG9hdCBtYXhXaWR0aCwgYm9vbCB1c2VNYXhXaWR0aCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwg
ZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCiB7CiAgICAgY29u
c3QgYXV0byYgZm9udFByb3h5ID0gdGhpcy0+Zm9udFByb3h5KCk7CiAgICAgY29uc3QgRm9udE1l
dHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udFByb3h5LmZvbnRNZXRyaWNzKCk7CkBAIC0yNDAyLDcg
KzIzNjcsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5h
bChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICByZXR1cm47CiAgICAg
aWYgKCFzdGQ6OmlzZmluaXRlKHgpIHwgIXN0ZDo6aXNmaW5pdGUoeSkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBpZiAodXNlTWF4V2lkdGggJiYgKCFzdGQ6OmlzZmluaXRlKG1heFdpZHRoKSB8fCBt
YXhXaWR0aCA8PSAwKSkKKyAgICBpZiAobWF4V2lkdGggJiYgKCFzdGQ6OmlzZmluaXRlKG1heFdp
ZHRoLnZhbHVlKCkpIHx8IG1heFdpZHRoLnZhbHVlKCkgPD0gMCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIElmIGdyYWRpZW50IHNpemUgaXMgemVybywgdGhlbiBwYWludCBub3RoaW5nLgpA
QCAtMjQ0Nyw4ICsyNDEyLDggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdU
ZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KIAogICAgIGZsb2F0
IGZvbnRXaWR0aCA9IGZvbnRQcm94eS53aWR0aChUZXh0UnVuKG5vcm1hbGl6ZWRUZXh0LCAwLCAw
LCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBkaXJlY3Rpb24sIG92ZXJyaWRlKSk7CiAKLSAgICB1
c2VNYXhXaWR0aCA9ICh1c2VNYXhXaWR0aCAmJiBtYXhXaWR0aCA8IGZvbnRXaWR0aCk7Ci0gICAg
ZmxvYXQgd2lkdGggPSB1c2VNYXhXaWR0aCA/IG1heFdpZHRoIDogZm9udFdpZHRoOworICAgIGJv
b2wgdXNlTWF4V2lkdGggPSBtYXhXaWR0aCAmJiBtYXhXaWR0aC52YWx1ZSgpIDwgZm9udFdpZHRo
OworICAgIGZsb2F0IHdpZHRoID0gdXNlTWF4V2lkdGggPyBtYXhXaWR0aC52YWx1ZSgpIDogZm9u
dFdpZHRoOwogCiAgICAgVGV4dEFsaWduIGFsaWduID0gc3RhdGUoKS50ZXh0QWxpZ247CiAgICAg
aWYgKGFsaWduID09IFN0YXJ0VGV4dEFsaWduKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBmZjI4MGQ2MDcwMmJk
Nzg5ODFkYWQzYmFiYWU2M2JlMThiY2E0NGY0Li4zMTZlY2Q2ZDkyODg1MGYzMGZlMWFlYTliYjIy
NjU4ZDhhYTFiODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMTE3LDE3ICsxMTcsMTMgQEAgcHVibGljOgog
ICAgIHZvaWQgdHJhbnNmb3JtKGZsb2F0IG0xMSwgZmxvYXQgbTEyLCBmbG9hdCBtMjEsIGZsb2F0
IG0yMiwgZmxvYXQgZHgsIGZsb2F0IGR5KTsKICAgICB2b2lkIHNldFRyYW5zZm9ybShmbG9hdCBt
MTEsIGZsb2F0IG0xMiwgZmxvYXQgbTIxLCBmbG9hdCBtMjIsIGZsb2F0IGR4LCBmbG9hdCBkeSk7
CiAKLSAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IpOwotICAgIHZv
aWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQgZ3JheUxldmVsKTsKLSAgICB2b2lkIHNldFN0cm9rZUNv
bG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKTsKLSAgICB2b2lkIHNldFN0cm9r
ZUNvbG9yKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpOworICAgIHZvaWQgc2V0U3Ryb2tl
Q29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gTnVsbG9w
dCk7CisgICAgdm9pZCBzZXRTdHJva2VDb2xvcihmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhh
ID0gMS4wKTsKICAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0
IGIsIGZsb2F0IGEpOwogICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQgYywgZmxvYXQgbSwg
ZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSk7CiAKLSAgICB2b2lkIHNldEZpbGxDb2xvcihjb25z
dCBTdHJpbmcmIGNvbG9yKTsKLSAgICB2b2lkIHNldEZpbGxDb2xvcihmbG9hdCBncmF5TGV2ZWwp
OwotICAgIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhh
KTsKLSAgICB2b2lkIHNldEZpbGxDb2xvcihmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKTsK
KyAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBPcHRpb25hbDxmbG9h
dD4gYWxwaGEgPSBOdWxsb3B0KTsKKyAgICB2b2lkIHNldEZpbGxDb2xvcihmbG9hdCBncmF5TGV2
ZWwsIGZsb2F0IGFscGhhID0gMS4wZik7CiAgICAgdm9pZCBzZXRGaWxsQ29sb3IoZmxvYXQgciwg
ZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7CiAgICAgdm9pZCBzZXRGaWxsQ29sb3IoZmxvYXQg
YywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSk7CiAKQEAgLTE1MiwxMCArMTQ4
LDkgQEAgcHVibGljOgogICAgIHZvaWQgc3Ryb2tlUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKIAogICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRo
LCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIpOwotICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmluZyYgY29sb3IpOwogICAg
IHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZs
b2F0IGdyYXlMZXZlbCk7Ci0gICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhl
aWdodCwgZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpOwotICAg
IHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZs
b2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpOworICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmluZyYgY29sb3IsIE9wdGlv
bmFsPGZsb2F0PiBhbHBoYSA9IE51bGxvcHQpOworICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxw
aGEgPSAxLjApOwogICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQs
IGZsb2F0IGJsdXIsIGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpOwogICAgIHZv
aWQgc2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0
IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpOwogCkBAIC0yMTcsMTAgKzIx
Miw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZGlyZWN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXREaXJlY3Rpb24oY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lkIGZpbGxUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSk7Ci0gICAgdm9pZCBmaWxsVGV4dChjb25zdCBT
dHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IG1heFdpZHRoKTsKLSAgICB2b2lk
IHN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5KTsKLSAgICB2
b2lkIHN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCBtYXhXaWR0aCk7CisgICAgdm9pZCBmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0
IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IE51bGxvcHQpOworICAgIHZv
aWQgc3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIE9wdGlv
bmFsPGZsb2F0PiBtYXhXaWR0aCA9IE51bGxvcHQpOwogICAgIFJlZjxUZXh0TWV0cmljcz4gbWVh
c3VyZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KTsKIAogICAgIExpbmVDYXAgZ2V0TGluZUNhcCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRlKCkubGluZUNhcDsgfQpAQCAtMzQ1LDcgKzMzOCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBhcHBseVN0cm9rZVBhdHRlcm4oKTsKICAgICB2b2lkIGFwcGx5Rmls
bFBhdHRlcm4oKTsKIAotICAgIHZvaWQgZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRl
eHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgZmxvYXQgbWF4V2lkdGggPSAwLCBib29s
IHVzZU1heFdpZHRoID0gZmFsc2UpOworICAgIHZvaWQgZHJhd1RleHRJbnRlcm5hbChjb25zdCBT
dHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+
IG1heFdpZHRoID0gTnVsbG9wdCk7CiAKICAgICAvLyBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4g
Rm9udENhc2NhZGUgYW5kIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Rm9udFByb3h5IG11c3Qg
aG9sZCBjZXJ0YWluIGludmFyaWFudHMuCiAgICAgLy8gVGhlcmVmb3JlLCBhbGwgZm9udCBvcGVy
YXRpb25zIG11c3QgcGFzcyB0aHJvdWdoIHRoZSBTdGF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCmluZGV4IGE3
OGIwMzBhODlmMmIwMDc2N2I3OTIwM2RkM2Q0YjlhMjU1ZTNjNWMuLjY1NjZiMGMwZDU4NjU0YjUw
YTUxOTVkZWI1N2YyZTE5OWEzMGQxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbApAQCAtMTI4LDEyICsxMjgs
MTIgQEAgaW50ZXJmYWNlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCA6IENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQgewogICAgIHZvaWQgc3Ryb2tlVGV4dChET01TdHJpbmcgdGV4dCwgdW5yZXN0cmlj
dGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgbWF4V2lkdGgpOwogCiAgICAgdm9pZCBzZXRTdHJva2VDb2xvcihbU3RyaWN0VHlwZUNo
ZWNraW5nXSBET01TdHJpbmcgY29sb3IsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhbHBo
YSk7Ci0gICAgdm9pZCBzZXRTdHJva2VDb2xvcih1bnJlc3RyaWN0ZWQgZmxvYXQgZ3JheUxldmVs
LCBvcHRpb25hbCBmbG9hdCBhbHBoYSk7CisgICAgdm9pZCBzZXRTdHJva2VDb2xvcih1bnJlc3Ry
aWN0ZWQgZmxvYXQgZ3JheUxldmVsLCBvcHRpb25hbCBmbG9hdCBhbHBoYSA9IDEuMCk7CiAgICAg
dm9pZCBzZXRTdHJva2VDb2xvcih1bnJlc3RyaWN0ZWQgZmxvYXQgciwgdW5yZXN0cmljdGVkIGZs
b2F0IGcsIHVucmVzdHJpY3RlZCBmbG9hdCBiLCB1bnJlc3RyaWN0ZWQgZmxvYXQgYSk7CiAgICAg
dm9pZCBzZXRTdHJva2VDb2xvcih1bnJlc3RyaWN0ZWQgZmxvYXQgYywgdW5yZXN0cmljdGVkIGZs
b2F0IG0sIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgaywgdW5yZXN0
cmljdGVkIGZsb2F0IGEpOwogCiAgICAgdm9pZCBzZXRGaWxsQ29sb3IoW1N0cmljdFR5cGVDaGVj
a2luZ10gRE9NU3RyaW5nIGNvbG9yLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgYWxwaGEp
OwotICAgIHZvaWQgc2V0RmlsbENvbG9yKHVucmVzdHJpY3RlZCBmbG9hdCBncmF5TGV2ZWwsIG9w
dGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhbHBoYSk7CisgICAgdm9pZCBzZXRGaWxsQ29sb3Io
dW5yZXN0cmljdGVkIGZsb2F0IGdyYXlMZXZlbCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0
IGFscGhhID0gMS4wKTsKICAgICB2b2lkIHNldEZpbGxDb2xvcih1bnJlc3RyaWN0ZWQgZmxvYXQg
ciwgdW5yZXN0cmljdGVkIGZsb2F0IGcsIHVucmVzdHJpY3RlZCBmbG9hdCBiLCB1bnJlc3RyaWN0
ZWQgZmxvYXQgYSk7CiAgICAgdm9pZCBzZXRGaWxsQ29sb3IodW5yZXN0cmljdGVkIGZsb2F0IGMs
IHVucmVzdHJpY3RlZCBmbG9hdCBtLCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVk
IGZsb2F0IGssIHVucmVzdHJpY3RlZCBmbG9hdCBhKTsKIApAQCAtMTU2LDE0ICsxNTYsMTQgQEAg
aW50ZXJmYWNlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCA6IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgewogICAgICAgICB1bnJlc3RyaWN0ZWQgZmxvYXQgc2gsIHVucmVzdHJpY3RlZCBmbG9hdCBk
eCwgdW5yZXN0cmljdGVkIGZsb2F0IGR5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHcsIHVucmVzdHJp
Y3RlZCBmbG9hdCBkaCk7CiAKICAgICB2b2lkIGRyYXdJbWFnZUZyb21SZWN0KEhUTUxJbWFnZUVs
ZW1lbnQgaW1hZ2UsCi0gICAgICAgIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBzeCwgb3B0
aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IHN5LCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQg
c3csIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBzaCwKLSAgICAgICAgb3B0aW9uYWwgdW5y
ZXN0cmljdGVkIGZsb2F0IGR4LCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHksIG9wdGlv
bmFsIHVucmVzdHJpY3RlZCBmbG9hdCBkdywgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGRo
LAotICAgICAgICBvcHRpb25hbCBET01TdHJpbmcgY29tcG9zaXRlT3BlcmF0aW9uKTsKKyAgICAg
ICAgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IHN4ID0gMCwgb3B0aW9uYWwgdW5yZXN0cmlj
dGVkIGZsb2F0IHN5ID0gMCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IHN3ID0gMCwgb3B0
aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IHNoID0gMCwKKyAgICAgICAgb3B0aW9uYWwgdW5yZXN0
cmljdGVkIGZsb2F0IGR4ID0gMCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGR5ID0gMCwg
b3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGR3ID0gMCwgb3B0aW9uYWwgdW5yZXN0cmljdGVk
IGZsb2F0IGRoID0gMCwKKyAgICAgICAgb3B0aW9uYWwgRE9NU3RyaW5nIGNvbXBvc2l0ZU9wZXJh
dGlvbiA9ICIiKTsKIAogICAgIHZvaWQgc2V0U2hhZG93KHVucmVzdHJpY3RlZCBmbG9hdCB3aWR0
aCwgdW5yZXN0cmljdGVkIGZsb2F0IGhlaWdodCwgdW5yZXN0cmljdGVkIGZsb2F0IGJsdXIsIAog
ICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSBvcHRpb25hbCBET01TdHJpbmcgY29sb3IsIG9w
dGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhbHBoYSk7CiAgICAgdm9pZCBzZXRTaGFkb3codW5y
ZXN0cmljdGVkIGZsb2F0IHdpZHRoLCB1bnJlc3RyaWN0ZWQgZmxvYXQgaGVpZ2h0LCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgYmx1ciwgdW5yZXN0cmljdGVkIGZsb2F0IGdyYXlMZXZlbCwgCi0gICAgICAg
IG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhbHBoYSk7CisgICAgICAgIG9wdGlvbmFsIHVu
cmVzdHJpY3RlZCBmbG9hdCBhbHBoYSA9IDEuMCk7CiAgICAgdm9pZCBzZXRTaGFkb3codW5yZXN0
cmljdGVkIGZsb2F0IHdpZHRoLCB1bnJlc3RyaWN0ZWQgZmxvYXQgaGVpZ2h0LCB1bnJlc3RyaWN0
ZWQgZmxvYXQgYmx1ciwgdW5yZXN0cmljdGVkIGZsb2F0IHIsIAogICAgICAgICB1bnJlc3RyaWN0
ZWQgZmxvYXQgZywgdW5yZXN0cmljdGVkIGZsb2F0IGIsIHVucmVzdHJpY3RlZCBmbG9hdCBhKTsK
ICAgICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0aCwgdW5yZXN0cmljdGVkIGZsb2F0IGhlaWdo
dCwgdW5yZXN0cmljdGVkIGZsb2F0IGJsdXIsIHVucmVzdHJpY3RlZCBmbG9hdCBjLCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgbSwgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggNThm
YzQ0MGU2ZDdlNzRlMjQ1N2E2NjBlZjc2NDFjZjVmZTc0ZDM5Ni4uM2Q5NDc3NTE5MDI4ZGU5N2Rm
NDEzYWRhOTUyN2MwYmQxOWY4MmZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bApAQCAtMjcxLDcgKzI3MSw3IEBAIGVudW0gQXV0b0ZpbGxCdXR0b25UeXBlIHsKICAgICBbUmFp
c2VzRXhjZXB0aW9uXSB2b2lkIHNldEluc3BlY3RvcklzVW5kZXJUZXN0KGJvb2xlYW4gaXNVbmRl
clRlc3QpOwogCiAgICAgRE9NU3RyaW5nIGNvdW50ZXJWYWx1ZShFbGVtZW50IGVsZW1lbnQpOwot
ICAgIGxvbmcgcGFnZU51bWJlcihFbGVtZW50IGVsZW1lbnQsIG9wdGlvbmFsIHVucmVzdHJpY3Rl
ZCBmbG9hdCBwYWdlV2lkdGgsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBwYWdlSGVpZ2h0
KTsKKyAgICBsb25nIHBhZ2VOdW1iZXIoRWxlbWVudCBlbGVtZW50LCBvcHRpb25hbCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgcGFnZVdpZHRoID0gODAwLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQg
cGFnZUhlaWdodCA9IDYwMCk7CiAgICAgRE9NU3RyaW5nW10gc2hvcnRjdXRJY29uVVJMcygpOwog
ICAgIGxvbmcgbnVtYmVyT2ZQYWdlcyhvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHBhZ2VX
aWR0aEluUGl4ZWxzLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHBhZ2VIZWlnaHRJblBp
eGVscyk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHBhZ2VQcm9wZXJ0eShET01T
dHJpbmcgcHJvcGVydHlOYW1lLCBsb25nIHBhZ2VOdW1iZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277293</attachid>
            <date>2016-04-25 16:37:51 -0700</date>
            <delta_ts>2016-04-25 16:38:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156995-20160425163821.patch</filename>
            <type>text/plain</type>
            <size>19198</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzMxMTUwMmE5NWYzZTli
ZjRlYTcwYzZkMTdhOWJjNGJlNmZmNTgzNC4uYzZkYWIxMzUxZTMyYWU2OTg3ZGEyNDg3YzI3NGQ0
ZTI2YzU0ZmMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE2LTA0LTI1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBJRExdIFNwZWNpZnkg
ZGVmYXVsdCB2YWx1ZXMgZm9yIG9wdGlvbmFsIHBhcmFtZXRlcnMgb2YgdHlwZSAnZmxvYXQnIC8g
J3VucmVzdHJpY3RlZCBmbG9hdCcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1Njk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIFNwZWNpZnkgZGVmYXVsdCB2YWx1ZXMgZm9yIG9wdGlvbmFsIHBhcmFtZXRlcnMg
b2YgdHlwZSAnZmxvYXQnIC8gJ3VucmVzdHJpY3RlZCBmbG9hdCcKKyAgICAgICAgYW5kIGxldCB0
aGUgYmluZGluZ3MgZ2VuZXJhdG9yIHVzZSBXVEY6Ok9wdGlvbmFsPD4gZm9yIHRoZSBvbmVzIHRo
YXQgZG8gbm90IGhhdmUgYQorICAgICAgICBkZWZhdWx0IHZhbHVlLgorCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChDYW5Vc2VXVEZPcHRp
b25hbEZvclBhcmFtZXRlcik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3cpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyU2hhZG93KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVNwYWNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Om1lYXN1cmVUZXh0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxNi0wNC0yNSAgQWxiZXJ0byBHYXJjaWEgIDxiZXJ0
b0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIENyYXNoZXMgaWYgRElTUExBWSBpcyB1bnNl
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQppbmRleCA1Nzk5YmIxNWZjYjUxYzJkMzNmNGM4MjgzMTQ4NjljMmYwMjQ1Zjg4Li44MDYz
MzAyYWExMmIwNDhiMTZmZmUzZmIzODczZTg1OGM4MGU4NWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzM4Niw5ICsz
Mzg2LDcgQEAgc3ViIENhblVzZVdURk9wdGlvbmFsRm9yUGFyYW1ldGVyCiAgICAgcmV0dXJuIDAg
aWYgJHR5cGUgZXEgIkRPTVN0cmluZyI7CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgIkRpY3Rp
b25hcnkiOwogICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJhbnkiOwotICAgIHJldHVybiAwIGlm
ICR0eXBlIGVxICJmbG9hdCI7CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImxvbmciOwotICAg
IHJldHVybiAwIGlmICR0eXBlIGVxICJ1bnJlc3RyaWN0ZWQgZmxvYXQiOwogICAgIHJldHVybiAw
IGlmICR0eXBlIGVxICJ1bnJlc3RyaWN0ZWQgZG91YmxlIjsKICAgICByZXR1cm4gMCBpZiAkdHlw
ZSBlcSAidW5zaWduZWQgbG9uZyI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IGQwYjMxMTY2
YmFhNGU1NDI4ZjIzZGRmNGEwY2Q2NDRmMmNkZmFlZDkuLmY5NTA4MTAzNDYwZjJmMDY5OWRhNzAz
M2I3ZmE1NjI0MTAxNmM5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtNDk5LDEyICs0OTks
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25TZXRTaGFkb3coRXhlY1N0YXRlKgogICAgIFN0cmluZyBjb2xvciA9IHN0YXRlLT5h
cmd1bWVudCgzKS50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpZiAoYXJnc0NvdW50IDw9IDQpIHsKLSAgICAgICAgaW1w
bC5zZXRTaGFkb3cod2lkdGgsIGhlaWdodCwgYmx1ciwgY29sb3IpOwotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIH0KLQotICAgIGZsb2F0IGFscGhh
ID0gc3RhdGUtPmFyZ3VtZW50KDQpLnRvRmxvYXQoc3RhdGUpOworICAgIE9wdGlvbmFsPGZsb2F0
PiBhbHBoYSA9IHN0YXRlLT5hcmd1bWVudCg0KS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Zmxv
YXQ+KCkgOiBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoNCkudG9GbG9hdChzdGF0ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5zZXRTaGFkb3cod2lkdGgsIGhl
aWdodCwgYmx1ciwgY29sb3IsIGFscGhhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGJmYzlmMzJjMThj
ZWFhY2E4NWJkNGQ3ZWVkMGZiY2I2NjVhZGZjNTUuLjM2NGI1MWU5MjljMDllYWNkZmQ2ZmM3ZjBk
ODRkNWFiNmY0YmIxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtODE5LDI3ICs4MTksMjEgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFRyYW5zZm9ybShmbG9hdCBtMTEsIGZsb2F0
IG0xMiwgZmxvYXQgbTIxLCBmbG8KICAgICB0cmFuc2Zvcm0obTExLCBtMTIsIG0yMSwgbTIyLCBk
eCwgZHkpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29s
b3IoY29uc3QgU3RyaW5nJiBjb2xvcikKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpz
ZXRTdHJva2VDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBPcHRpb25hbDxmbG9hdD4gYWxwaGEp
CiB7CisgICAgaWYgKGFscGhhKSB7CisgICAgICAgIHNldFN0cm9rZVN0eWxlKENhbnZhc1N0eWxl
OjpjcmVhdGVGcm9tU3RyaW5nV2l0aE92ZXJyaWRlQWxwaGEoY29sb3IsIGFscGhhLnZhbHVlKCkp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChjb2xvciA9PSBzdGF0ZSgpLnVu
cGFyc2VkU3Ryb2tlQ29sb3IpCiAgICAgICAgIHJldHVybjsKKwogICAgIHJlYWxpemVTYXZlcygp
OwogICAgIHNldFN0cm9rZVN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5nKGNvbG9y
LCAmY2FudmFzKCktPmRvY3VtZW50KCkpKTsKICAgICBtb2RpZmlhYmxlU3RhdGUoKS51bnBhcnNl
ZFN0cm9rZUNvbG9yID0gY29sb3I7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRTdHJva2VDb2xvcihmbG9hdCBncmF5TGV2ZWwpCi17Ci0gICAgaWYgKHN0YXRlKCkuc3Ry
b2tlU3R5bGUuaXNWYWxpZCgpICYmIHN0YXRlKCkuc3Ryb2tlU3R5bGUuaXNFcXVpdmFsZW50UkdC
QShncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCAxLjBmKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIHNldFN0cm9rZVN0eWxlKENhbnZhc1N0eWxlKGdyYXlMZXZlbCwgMS4wZikpOwotfQot
Ci12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IoY29uc3QgU3Ry
aW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpCi17Ci0gICAgc2V0U3Ryb2tlU3R5bGUoQ2FudmFzU3R5
bGU6OmNyZWF0ZUZyb21TdHJpbmdXaXRoT3ZlcnJpZGVBbHBoYShjb2xvciwgYWxwaGEpKTsKLX0K
LQogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGZsb2F0IGdy
YXlMZXZlbCwgZmxvYXQgYWxwaGEpCiB7CiAgICAgaWYgKHN0YXRlKCkuc3Ryb2tlU3R5bGUuaXNW
YWxpZCgpICYmIHN0YXRlKCkuc3Ryb2tlU3R5bGUuaXNFcXVpdmFsZW50UkdCQShncmF5TGV2ZWws
IGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpCkBAIC04NjEsMjcgKzg1NSwyMSBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IoZmxvYXQgYywgZmxvYXQg
bSwgZmxvYXQgeSwgZmxvYXQgawogICAgIHNldFN0cm9rZVN0eWxlKENhbnZhc1N0eWxlKGMsIG0s
IHksIGssIGEpKTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxD
b2xvcihjb25zdCBTdHJpbmcmIGNvbG9yKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnNldEZpbGxDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBPcHRpb25hbDxmbG9hdD4gYWxwaGEp
CiB7CisgICAgaWYgKGFscGhhKSB7CisgICAgICAgIHNldEZpbGxTdHlsZShDYW52YXNTdHlsZTo6
Y3JlYXRlRnJvbVN0cmluZ1dpdGhPdmVycmlkZUFscGhhKGNvbG9yLCBhbHBoYS52YWx1ZSgpKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoY29sb3IgPT0gc3RhdGUoKS51bnBh
cnNlZEZpbGxDb2xvcikKICAgICAgICAgcmV0dXJuOworCiAgICAgcmVhbGl6ZVNhdmVzKCk7CiAg
ICAgc2V0RmlsbFN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5nKGNvbG9yLCAmY2Fu
dmFzKCktPmRvY3VtZW50KCkpKTsKICAgICBtb2RpZmlhYmxlU3RhdGUoKS51bnBhcnNlZEZpbGxD
b2xvciA9IGNvbG9yOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rmls
bENvbG9yKGZsb2F0IGdyYXlMZXZlbCkKLXsKLSAgICBpZiAoc3RhdGUoKS5maWxsU3R5bGUuaXNW
YWxpZCgpICYmIHN0YXRlKCkuZmlsbFN0eWxlLmlzRXF1aXZhbGVudFJHQkEoZ3JheUxldmVsLCBn
cmF5TGV2ZWwsIGdyYXlMZXZlbCwgMS4wZikpCi0gICAgICAgIHJldHVybjsKLSAgICBzZXRGaWxs
U3R5bGUoQ2FudmFzU3R5bGUoZ3JheUxldmVsLCAxLjBmKSk7Ci19Ci0KLXZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQg
YWxwaGEpCi17Ci0gICAgc2V0RmlsbFN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5n
V2l0aE92ZXJyaWRlQWxwaGEoY29sb3IsIGFscGhhKSk7Ci19Ci0KIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSkK
IHsKICAgICBpZiAoc3RhdGUoKS5maWxsU3R5bGUuaXNWYWxpZCgpICYmIHN0YXRlKCkuZmlsbFN0
eWxlLmlzRXF1aXZhbGVudFJHQkEoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgYWxw
aGEpKQpAQCAtMTI3MSwyMCArMTI1OSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1cikKICAgICBz
ZXRTaGFkb3coRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBibHVyLCBDb2xvcjo6dHJhbnNwYXJl
bnQpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0
IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmluZyYgY29sb3IpCi17
Ci0gICAgUkdCQTMyIHJnYmE7Ci0gICAgaWYgKCFwYXJzZUNvbG9yT3JDdXJyZW50Q29sb3Iocmdi
YSwgY29sb3IsIGNhbnZhcygpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHNldFNoYWRvdyhGbG9h
dFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIHJnYmEpOwotfQotCi12b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0
IGJsdXIsIGZsb2F0IGdyYXlMZXZlbCkKLXsKLSAgICBzZXRTaGFkb3coRmxvYXRTaXplKHdpZHRo
LCBoZWlnaHQpLCBibHVyLCBtYWtlUkdCQTMyRnJvbUZsb2F0cyhncmF5TGV2ZWwsIGdyYXlMZXZl
bCwgZ3JheUxldmVsLCAxKSk7Ci19Ci0KLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpz
ZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29uc3QgU3Ry
aW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0
cmluZyYgY29sb3IsIE9wdGlvbmFsPGZsb2F0PiBhbHBoYSkKIHsKICAgICBSR0JBMzIgcmdiYTsK
ICAgICBpZiAoIXBhcnNlQ29sb3JPckN1cnJlbnRDb2xvcihyZ2JhLCBjb2xvciwgY2FudmFzKCkp
KQpAQCAtMjMyNywyNCArMjMwMiwxNCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0RGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nKQogICAgIG1vZGlmaWFi
bGVTdGF0ZSgpLmRpcmVjdGlvbiA9IGRpcmVjdGlvbjsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQg
eSkKLXsKLSAgICBkcmF3VGV4dEludGVybmFsKHRleHQsIHgsIHksIHRydWUpOwotfQotCi12b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBtYXhXaWR0aCkKLXsKLSAgICBkcmF3VGV4dEludGVybmFs
KHRleHQsIHgsIHksIHRydWUsIG1heFdpZHRoLCB0cnVlKTsKLX0KLQotdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBm
bG9hdCB5KQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQog
ewotICAgIGRyYXdUZXh0SW50ZXJuYWwodGV4dCwgeCwgeSwgZmFsc2UpOworICAgIGRyYXdUZXh0
SW50ZXJuYWwodGV4dCwgeCwgeSwgdHJ1ZSwgbWF4V2lkdGgpOwogfQogCi12b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IG1heFdpZHRoKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25h
bDxmbG9hdD4gbWF4V2lkdGgpCiB7Ci0gICAgZHJhd1RleHRJbnRlcm5hbCh0ZXh0LCB4LCB5LCBm
YWxzZSwgbWF4V2lkdGgsIHRydWUpOworICAgIGRyYXdUZXh0SW50ZXJuYWwodGV4dCwgeCwgeSwg
ZmFsc2UsIG1heFdpZHRoKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlzU3BhY2VUaGF0TmVl
ZHNSZXBsYWNpbmcoVUNoYXIgYykKQEAgLTIzOTAsNyArMjM1NSw3IEBAIFJlZjxUZXh0TWV0cmlj
cz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjptZWFzdXJlVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQpCiAgICAgcmV0dXJuIG1ldHJpY3M7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQg
eSwgYm9vbCBmaWxsLCBmbG9hdCBtYXhXaWR0aCwgYm9vbCB1c2VNYXhXaWR0aCkKK3ZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4
dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgp
CiB7CiAgICAgY29uc3QgYXV0byYgZm9udFByb3h5ID0gdGhpcy0+Zm9udFByb3h5KCk7CiAgICAg
Y29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udFByb3h5LmZvbnRNZXRyaWNzKCk7
CkBAIC0yNDAyLDcgKzIzNjcsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJh
d1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICBy
ZXR1cm47CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHgpIHwgIXN0ZDo6aXNmaW5pdGUoeSkpCiAg
ICAgICAgIHJldHVybjsKLSAgICBpZiAodXNlTWF4V2lkdGggJiYgKCFzdGQ6OmlzZmluaXRlKG1h
eFdpZHRoKSB8fCBtYXhXaWR0aCA8PSAwKSkKKyAgICBpZiAobWF4V2lkdGggJiYgKCFzdGQ6Omlz
ZmluaXRlKG1heFdpZHRoLnZhbHVlKCkpIHx8IG1heFdpZHRoLnZhbHVlKCkgPD0gMCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIElmIGdyYWRpZW50IHNpemUgaXMgemVybywgdGhlbiBwYWlu
dCBub3RoaW5nLgpAQCAtMjQ0Nyw4ICsyNDEyLDggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8K
IAogICAgIGZsb2F0IGZvbnRXaWR0aCA9IGZvbnRQcm94eS53aWR0aChUZXh0UnVuKG5vcm1hbGl6
ZWRUZXh0LCAwLCAwLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBkaXJlY3Rpb24sIG92ZXJyaWRl
KSk7CiAKLSAgICB1c2VNYXhXaWR0aCA9ICh1c2VNYXhXaWR0aCAmJiBtYXhXaWR0aCA8IGZvbnRX
aWR0aCk7Ci0gICAgZmxvYXQgd2lkdGggPSB1c2VNYXhXaWR0aCA/IG1heFdpZHRoIDogZm9udFdp
ZHRoOworICAgIGJvb2wgdXNlTWF4V2lkdGggPSBtYXhXaWR0aCAmJiBtYXhXaWR0aC52YWx1ZSgp
IDwgZm9udFdpZHRoOworICAgIGZsb2F0IHdpZHRoID0gdXNlTWF4V2lkdGggPyBtYXhXaWR0aC52
YWx1ZSgpIDogZm9udFdpZHRoOwogCiAgICAgVGV4dEFsaWduIGFsaWduID0gc3RhdGUoKS50ZXh0
QWxpZ247CiAgICAgaWYgKGFsaWduID09IFN0YXJ0VGV4dEFsaWduKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBm
ZjI4MGQ2MDcwMmJkNzg5ODFkYWQzYmFiYWU2M2JlMThiY2E0NGY0Li4zMTZlY2Q2ZDkyODg1MGYz
MGZlMWFlYTliYjIyNjU4ZDhhYTFiODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMTE3LDE3ICsxMTcsMTMg
QEAgcHVibGljOgogICAgIHZvaWQgdHJhbnNmb3JtKGZsb2F0IG0xMSwgZmxvYXQgbTEyLCBmbG9h
dCBtMjEsIGZsb2F0IG0yMiwgZmxvYXQgZHgsIGZsb2F0IGR5KTsKICAgICB2b2lkIHNldFRyYW5z
Zm9ybShmbG9hdCBtMTEsIGZsb2F0IG0xMiwgZmxvYXQgbTIxLCBmbG9hdCBtMjIsIGZsb2F0IGR4
LCBmbG9hdCBkeSk7CiAKLSAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29s
b3IpOwotICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQgZ3JheUxldmVsKTsKLSAgICB2b2lk
IHNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKTsKLSAgICB2
b2lkIHNldFN0cm9rZUNvbG9yKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpOworICAgIHZv
aWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IGFs
cGhhID0gTnVsbG9wdCk7CisgICAgdm9pZCBzZXRTdHJva2VDb2xvcihmbG9hdCBncmF5TGV2ZWws
IGZsb2F0IGFscGhhID0gMS4wKTsKICAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGZsb2F0IHIsIGZs
b2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpOwogICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQg
YywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSk7CiAKLSAgICB2b2lkIHNldEZp
bGxDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yKTsKLSAgICB2b2lkIHNldEZpbGxDb2xvcihmbG9h
dCBncmF5TGV2ZWwpOwotICAgIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3Is
IGZsb2F0IGFscGhhKTsKLSAgICB2b2lkIHNldEZpbGxDb2xvcihmbG9hdCBncmF5TGV2ZWwsIGZs
b2F0IGFscGhhKTsKKyAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBP
cHRpb25hbDxmbG9hdD4gYWxwaGEgPSBOdWxsb3B0KTsKKyAgICB2b2lkIHNldEZpbGxDb2xvcihm
bG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhID0gMS4wZik7CiAgICAgdm9pZCBzZXRGaWxsQ29s
b3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7CiAgICAgdm9pZCBzZXRGaWxs
Q29sb3IoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSk7CiAKQEAg
LTE1MiwxMCArMTQ4LDkgQEAgcHVibGljOgogICAgIHZvaWQgc3Ryb2tlUmVjdChmbG9hdCB4LCBm
bG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKIAogICAgIHZvaWQgc2V0U2hhZG93
KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIpOwotICAgIHZvaWQgc2V0U2hh
ZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmluZyYg
Y29sb3IpOwogICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZs
b2F0IGJsdXIsIGZsb2F0IGdyYXlMZXZlbCk7Ci0gICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQg
YWxwaGEpOwotICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZs
b2F0IGJsdXIsIGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpOworICAgIHZvaWQgc2V0U2hh
ZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmluZyYg
Y29sb3IsIE9wdGlvbmFsPGZsb2F0PiBhbHBoYSA9IE51bGxvcHQpOworICAgIHZvaWQgc2V0U2hh
ZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGdyYXlMZXZl
bCwgZmxvYXQgYWxwaGEgPSAxLjApOwogICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0
IGEpOwogICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0
IGJsdXIsIGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpOwogCkBA
IC0yMTcsMTAgKzIxMiw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZGlyZWN0aW9uKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXREaXJlY3Rpb24oY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lkIGZpbGxU
ZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSk7Ci0gICAgdm9pZCBmaWxs
VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IG1heFdpZHRo
KTsKLSAgICB2b2lkIHN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9h
dCB5KTsKLSAgICB2b2lkIHN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBm
bG9hdCB5LCBmbG9hdCBtYXhXaWR0aCk7CisgICAgdm9pZCBmaWxsVGV4dChjb25zdCBTdHJpbmcm
IHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IE51bGxv
cHQpOworICAgIHZvaWQgc3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZs
b2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IE51bGxvcHQpOwogICAgIFJlZjxUZXh0
TWV0cmljcz4gbWVhc3VyZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KTsKIAogICAgIExpbmVDYXAg
Z2V0TGluZUNhcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlKCkubGluZUNhcDsgfQpAQCAtMzQ1LDcg
KzMzOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBseVN0cm9rZVBhdHRlcm4oKTsKICAgICB2
b2lkIGFwcGx5RmlsbFBhdHRlcm4oKTsKIAotICAgIHZvaWQgZHJhd1RleHRJbnRlcm5hbChjb25z
dCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgZmxvYXQgbWF4V2lk
dGggPSAwLCBib29sIHVzZU1heFdpZHRoID0gZmFsc2UpOworICAgIHZvaWQgZHJhd1RleHRJbnRl
cm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0
aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gTnVsbG9wdCk7CiAKICAgICAvLyBUaGUgcmVsYXRpb25z
aGlwIGJldHdlZW4gRm9udENhc2NhZGUgYW5kIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Rm9u
dFByb3h5IG11c3QgaG9sZCBjZXJ0YWluIGludmFyaWFudHMuCiAgICAgLy8gVGhlcmVmb3JlLCBh
bGwgZm9udCBvcGVyYXRpb25zIG11c3QgcGFzcyB0aHJvdWdoIHRoZSBTdGF0ZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
aWRsCmluZGV4IGE3OGIwMzBhODlmMmIwMDc2N2I3OTIwM2RkM2Q0YjlhMjU1ZTNjNWMuLmE2MTM0
Njk0NDcwMDM2NjVlODIwNTE2OTEyMWY5ZDNhMDgwNjdjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbApAQCAt
MTI4LDEyICsxMjgsMTIgQEAgaW50ZXJmYWNlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCA6IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQgewogICAgIHZvaWQgc3Ryb2tlVGV4dChET01TdHJpbmcgdGV4
dCwgdW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCBvcHRpb25hbCB1
bnJlc3RyaWN0ZWQgZmxvYXQgbWF4V2lkdGgpOwogCiAgICAgdm9pZCBzZXRTdHJva2VDb2xvcihb
U3RyaWN0VHlwZUNoZWNraW5nXSBET01TdHJpbmcgY29sb3IsIG9wdGlvbmFsIHVucmVzdHJpY3Rl
ZCBmbG9hdCBhbHBoYSk7Ci0gICAgdm9pZCBzZXRTdHJva2VDb2xvcih1bnJlc3RyaWN0ZWQgZmxv
YXQgZ3JheUxldmVsLCBvcHRpb25hbCBmbG9hdCBhbHBoYSk7CisgICAgdm9pZCBzZXRTdHJva2VD
b2xvcih1bnJlc3RyaWN0ZWQgZmxvYXQgZ3JheUxldmVsLCBvcHRpb25hbCBmbG9hdCBhbHBoYSA9
IDEpOwogICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IodW5yZXN0cmljdGVkIGZsb2F0IHIsIHVucmVz
dHJpY3RlZCBmbG9hdCBnLCB1bnJlc3RyaWN0ZWQgZmxvYXQgYiwgdW5yZXN0cmljdGVkIGZsb2F0
IGEpOwogICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IodW5yZXN0cmljdGVkIGZsb2F0IGMsIHVucmVz
dHJpY3RlZCBmbG9hdCBtLCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0
IGssIHVucmVzdHJpY3RlZCBmbG9hdCBhKTsKIAogICAgIHZvaWQgc2V0RmlsbENvbG9yKFtTdHJp
Y3RUeXBlQ2hlY2tpbmddIERPTVN0cmluZyBjb2xvciwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZs
b2F0IGFscGhhKTsKLSAgICB2b2lkIHNldEZpbGxDb2xvcih1bnJlc3RyaWN0ZWQgZmxvYXQgZ3Jh
eUxldmVsLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgYWxwaGEpOworICAgIHZvaWQgc2V0
RmlsbENvbG9yKHVucmVzdHJpY3RlZCBmbG9hdCBncmF5TGV2ZWwsIG9wdGlvbmFsIHVucmVzdHJp
Y3RlZCBmbG9hdCBhbHBoYSA9IDEpOwogICAgIHZvaWQgc2V0RmlsbENvbG9yKHVucmVzdHJpY3Rl
ZCBmbG9hdCByLCB1bnJlc3RyaWN0ZWQgZmxvYXQgZywgdW5yZXN0cmljdGVkIGZsb2F0IGIsIHVu
cmVzdHJpY3RlZCBmbG9hdCBhKTsKICAgICB2b2lkIHNldEZpbGxDb2xvcih1bnJlc3RyaWN0ZWQg
ZmxvYXQgYywgdW5yZXN0cmljdGVkIGZsb2F0IG0sIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJl
c3RyaWN0ZWQgZmxvYXQgaywgdW5yZXN0cmljdGVkIGZsb2F0IGEpOwogCkBAIC0xNTYsMTQgKzE1
NiwxNCBAQCBpbnRlcmZhY2UgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIDogQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCB7CiAgICAgICAgIHVucmVzdHJpY3RlZCBmbG9hdCBzaCwgdW5yZXN0cmljdGVk
IGZsb2F0IGR4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHksIHVucmVzdHJpY3RlZCBmbG9hdCBkdywg
dW5yZXN0cmljdGVkIGZsb2F0IGRoKTsKIAogICAgIHZvaWQgZHJhd0ltYWdlRnJvbVJlY3QoSFRN
TEltYWdlRWxlbWVudCBpbWFnZSwKLSAgICAgICAgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0
IHN4LCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3ksIG9wdGlvbmFsIHVucmVzdHJpY3Rl
ZCBmbG9hdCBzdywgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IHNoLAotICAgICAgICBvcHRp
b25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHgsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBk
eSwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGR3LCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgZGgsCi0gICAgICAgIG9wdGlvbmFsIERPTVN0cmluZyBjb21wb3NpdGVPcGVyYXRpb24p
OworICAgICAgICBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3ggPSAwLCBvcHRpb25hbCB1
bnJlc3RyaWN0ZWQgZmxvYXQgc3kgPSAwLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3cg
PSAwLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2ggPSAwLAorICAgICAgICBvcHRpb25h
bCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHggPSAwLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQg
ZHkgPSAwLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgZHcgPSAwLCBvcHRpb25hbCB1bnJl
c3RyaWN0ZWQgZmxvYXQgZGggPSAwLAorICAgICAgICBvcHRpb25hbCBET01TdHJpbmcgY29tcG9z
aXRlT3BlcmF0aW9uID0gIiIpOwogCiAgICAgdm9pZCBzZXRTaGFkb3codW5yZXN0cmljdGVkIGZs
b2F0IHdpZHRoLCB1bnJlc3RyaWN0ZWQgZmxvYXQgaGVpZ2h0LCB1bnJlc3RyaWN0ZWQgZmxvYXQg
Ymx1ciwgCiAgICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIG9wdGlvbmFsIERPTVN0cmluZyBj
b2xvciwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGFscGhhKTsKICAgICB2b2lkIHNldFNo
YWRvdyh1bnJlc3RyaWN0ZWQgZmxvYXQgd2lkdGgsIHVucmVzdHJpY3RlZCBmbG9hdCBoZWlnaHQs
IHVucmVzdHJpY3RlZCBmbG9hdCBibHVyLCB1bnJlc3RyaWN0ZWQgZmxvYXQgZ3JheUxldmVsLCAK
LSAgICAgICAgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGFscGhhKTsKKyAgICAgICAgb3B0
aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGFscGhhID0gMSk7CiAgICAgdm9pZCBzZXRTaGFkb3co
dW5yZXN0cmljdGVkIGZsb2F0IHdpZHRoLCB1bnJlc3RyaWN0ZWQgZmxvYXQgaGVpZ2h0LCB1bnJl
c3RyaWN0ZWQgZmxvYXQgYmx1ciwgdW5yZXN0cmljdGVkIGZsb2F0IHIsIAogICAgICAgICB1bnJl
c3RyaWN0ZWQgZmxvYXQgZywgdW5yZXN0cmljdGVkIGZsb2F0IGIsIHVucmVzdHJpY3RlZCBmbG9h
dCBhKTsKICAgICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0aCwgdW5yZXN0cmljdGVkIGZsb2F0
IGhlaWdodCwgdW5yZXN0cmljdGVkIGZsb2F0IGJsdXIsIHVucmVzdHJpY3RlZCBmbG9hdCBjLCB1
bnJlc3RyaWN0ZWQgZmxvYXQgbSwgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuaAppbmRleCBkMThlYmVhZmYxOGE5MmU1ODNiMDNlMDgwNmZlZGIwZjY4NmEwMmZhLi4xZjg1
M2U0ZGY2ODVjNDk2NmE1MGQ3MDBhZWM0YWIwYWQ4MjYyZDExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDxjbWF0
aD4KICNpbmNsdWRlIDx1bmljb2RlL3VjaGFyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9MQ2hhci5oPgog
CiAjaWYgVVNFKENHKQpAQCAtNTUsNiArNTYsOCBAQCBXRUJDT1JFX0VYUE9SVCBSR0JBMzIgbWFr
ZVJHQihpbnQgciwgaW50IGcsIGludCBiKTsKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUkdC
QShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7CiAKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBj
b2xvcldpdGhPdmVycmlkZUFscGhhKFJHQkEzMiBjb2xvciwgZmxvYXQgb3ZlcnJpZGVBbHBoYSk7
CitXRUJDT1JFX0VYUE9SVCBSR0JBMzIgY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShSR0JBMzIgY29s
b3IsIE9wdGlvbmFsPGZsb2F0PiBvdmVycmlkZUFscGhhKTsKKwogV0VCQ09SRV9FWFBPUlQgUkdC
QTMyIG1ha2VSR0JBMzJGcm9tRmxvYXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0
IGEpOwogUkdCQTMyIG1ha2VSR0JBRnJvbUhTTEEoZG91YmxlIGgsIGRvdWJsZSBzLCBkb3VibGUg
bCwgZG91YmxlIGEpOwogUkdCQTMyIG1ha2VSR0JBRnJvbUNNWUtBKGZsb2F0IGMsIGZsb2F0IG0s
IGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpOwpAQCAtMjk1LDYgKzI5OCwxMSBAQCBpbmxpbmUg
dWludDE2X3QgZmFzdERpdmlkZUJ5MjU1KHVpbnQxNl90IHZhbHVlKQogICAgIHJldHVybiBhcHBy
b3hpbWF0aW9uICsgKHJlbWFpbmRlciA+PiA4KTsKIH0KIAoraW5saW5lIFJHQkEzMiBjb2xvcldp
dGhPdmVycmlkZUFscGhhKFJHQkEzMiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IG92ZXJyaWRlQWxw
aGEpCit7CisgICAgcmV0dXJuIG92ZXJyaWRlQWxwaGEgPyBjb2xvcldpdGhPdmVycmlkZUFscGhh
KGNvbG9yLCBvdmVycmlkZUFscGhhLnZhbHVlKCkpIDogY29sb3I7Cit9CisKIFdFQkNPUkVfRVhQ
T1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IENvbG9yJik7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApp
bmRleCA1OGZjNDQwZTZkN2U3NGUyNDU3YTY2MGVmNzY0MWNmNWZlNzRkMzk2Li4zZDk0Nzc1MTkw
MjhkZTk3ZGY0MTNhZGE5NTI3YzBiZDE5ZjgyZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCkBAIC0yNzEsNyArMjcxLDcgQEAgZW51bSBBdXRvRmlsbEJ1dHRvblR5cGUgewog
ICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0SW5zcGVjdG9ySXNVbmRlclRlc3QoYm9vbGVh
biBpc1VuZGVyVGVzdCk7CiAKICAgICBET01TdHJpbmcgY291bnRlclZhbHVlKEVsZW1lbnQgZWxl
bWVudCk7Ci0gICAgbG9uZyBwYWdlTnVtYmVyKEVsZW1lbnQgZWxlbWVudCwgb3B0aW9uYWwgdW5y
ZXN0cmljdGVkIGZsb2F0IHBhZ2VXaWR0aCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IHBh
Z2VIZWlnaHQpOworICAgIGxvbmcgcGFnZU51bWJlcihFbGVtZW50IGVsZW1lbnQsIG9wdGlvbmFs
IHVucmVzdHJpY3RlZCBmbG9hdCBwYWdlV2lkdGggPSA4MDAsIG9wdGlvbmFsIHVucmVzdHJpY3Rl
ZCBmbG9hdCBwYWdlSGVpZ2h0ID0gNjAwKTsKICAgICBET01TdHJpbmdbXSBzaG9ydGN1dEljb25V
UkxzKCk7CiAgICAgbG9uZyBudW1iZXJPZlBhZ2VzKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgcGFnZVdpZHRoSW5QaXhlbHMsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgcGFnZUhl
aWdodEluUGl4ZWxzKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBET01TdHJpbmcgcGFnZVByb3Bl
cnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIGxvbmcgcGFnZU51bWJlcik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>