<?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>158530</bug_id>
          
          <creation_ts>2016-06-08 10:10:22 -0700</creation_ts>
          <short_desc>We should be able to lookup symbols by identifier in builtins</short_desc>
          <delta_ts>2016-06-08 12:39:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1200480</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-08 10:10:22 -0700</bug_when>
    <thetext>We should be able to lookup symbols by identifier in builtins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200493</commentid>
    <comment_count>1</comment_count>
      <attachid>280812</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-08 10:48:04 -0700</bug_when>
    <thetext>Created attachment 280812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200498</commentid>
    <comment_count>2</comment_count>
      <attachid>280812</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-08 10:53:09 -0700</bug_when>
    <thetext>Comment on attachment 280812
Patch

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

&gt; Source/JavaScriptCore/builtins/TypedArrayConstructor.js:82
&gt;          let wrapper = {
&gt; -            [@symbolIterator]() {
&gt; +            @iteratorSymbol() {
&gt;                  return iterator;
&gt;              }

Instead of using an object literal we could change this and others to 

let wrapper = {}
wrapper.@iteratorSymbol = function() { return iterator; };

This change would mean we wouldn&apos;t need the emitLoad change. I&apos;m not sure if that&apos;s worth it though since it might be hard, in the future, to understand why a literal with a symbol does not work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200513</commentid>
    <comment_count>3</comment_count>
      <attachid>280812</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-06-08 11:38:39 -0700</bug_when>
    <thetext>Comment on attachment 280812
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        This patch allows us to lookup the value of an symbol property on a object

typo: /an/a/

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        Symbol.iterator. Even though as we tier up we will convert the builtin
&gt; +        by value symbol lookups into identifier lookups there is still a significant
&gt; +        performance difference between get_by_id and get_by_val in the LLInt.

This last sentence &quot;Even though ... the LLInt.&quot; is confusing to me.  Can you break it up or add some relevant commas?  How about something like:
&quot;As we tier up, we will convert the builtin &quot;by value&quot; symbol lookups into fast identifier lookups.  However, there is still a significant perf...&quot;.  Did I understand you right?

&gt;&gt; Source/JavaScriptCore/builtins/TypedArrayConstructor.js:82
&gt;&gt;              }
&gt; 
&gt; Instead of using an object literal we could change this and others to 
&gt; 
&gt; let wrapper = {}
&gt; wrapper.@iteratorSymbol = function() { return iterator; };
&gt; 
&gt; This change would mean we wouldn&apos;t need the emitLoad change. I&apos;m not sure if that&apos;s worth it though since it might be hard, in the future, to understand why a literal with a symbol does not work.

Per our offline discussion, you told me that it is more performant to use the 2nd (not object literal) form.  Let&apos;s go ahead and use that form instead, and remove the emitLoad() hack.  Please also add a comment to warn future code authors from changing this into an object literal (because it won&apos;t work).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200541</commentid>
    <comment_count>4</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-08 12:39:07 -0700</bug_when>
    <thetext>Committed r201825: &lt;http://trac.webkit.org/changeset/201825&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280812</attachid>
            <date>2016-06-08 10:48:04 -0700</date>
            <delta_ts>2016-06-08 11:38:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158530-20160608104931.patch</filename>
            <type>text/plain</type>
            <size>18451</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YjQ5NzQxMzYxMWEzYjJjN2ZiYjg0MDI4NWFjZWVlMTdlMDRmNDE1Li41MjFkYzY2M2RjZGNmMmQ0
ODE2ODlkYWMzYTFmOTlkOGU1YjU2NWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAxNi0wNi0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBXZSBzaG91bGQgYmUgYWJsZSB0byBsb29rdXAgc3ltYm9scyBieSBp
ZGVudGlmaWVyIGluIGJ1aWx0aW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTg1MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsbG93cyB1cyB0byBsb29rdXAgdGhlIHZhbHVlIG9m
IGFuIHN5bWJvbCBwcm9wZXJ0eSBvbiBhIG9iamVjdAorICAgICAgICBieSBpZGVudGlmaWVyIGlu
IGJ1aWx0aW5zLiBCZWZvcmUsIGl0IHdhcyBvbmx5IHBvc3NpYmxlIHRvIGRvIHNvIGlmIHdlIHdl
cmUKKyAgICAgICAgZGlyZWN0bHkgZW1pdHRpbmcgdGhlIGJ5dGVjb2Rlcywgc3VjaCBhcyBpbiBh
IGZvci1vZiBsb29wIGxvb2tpbmcgZm9yCisgICAgICAgIFN5bWJvbC5pdGVyYXRvci4gRXZlbiB0
aG91Z2ggYXMgd2UgdGllciB1cCB3ZSB3aWxsIGNvbnZlcnQgdGhlIGJ1aWx0aW4KKyAgICAgICAg
YnkgdmFsdWUgc3ltYm9sIGxvb2t1cHMgaW50byBpZGVudGlmaWVyIGxvb2t1cHMgdGhlcmUgaXMg
c3RpbGwgYSBzaWduaWZpY2FudAorICAgICAgICBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGJldHdl
ZW4gZ2V0X2J5X2lkIGFuZCBnZXRfYnlfdmFsIGluIHRoZSBMTEludC4KKworICAgICAgICBJbiBv
cmRlciB0byBtYWtlIHRoaXMgd29yayB3ZSBoaWphY2sgQnVpbHRpbk5hbWVzJyBtX3B1YmxpY1Rv
UHJpdmF0ZU1hcCBzbworICAgICAgICB0aGF0IGl0IHBvaW50cyB0aGUgQDxzeW1ib2w+U3ltYm9s
IHRvIHRoZSBhcHByb3ByaWF0ZSB2bSBzeW1ib2wuIFRoaXMgd2F5CisgICAgICAgIHdoZW4gd2Ug
bGV4IHRoZSBpZGVudGlmaWVyIGl0IHdpbGwgYmVjb21lIHRoZSBhcHByb3ByaWF0ZSBzeW1ib2wn
cyBpZGVudGlmaWVyLgorICAgICAgICBDdXJyZW50bHksIGlmIHRoZSBzeW1ib2wgaXMgdXNlZCB0
byBuYW1lIGEgcHJvcGVydHkgaW4gYW4gb2JqZWN0IGxpdGVyYWwgd2UKKyAgICAgICAgd2lsbCBu
b3Qga2VlcCBhIGNhY2hlIG9mIHRoZSBTeW1ib2wgb2JqZWN0cyB3ZSBoYXZlIGFscmVhZHkgc2Vl
bi4gV2UgY291bGQgYWRkCisgICAgICAgIGEgbWFwIGZvciBzeW1ib2xzIGJ1dCBzaW5jZSB3ZSBj
YW4gb25seSBsb2FkIHN5bWJvbHMgYnkgaWRlbnRpZmllciBpbiBidWlsdGlucworICAgICAgICBp
dHMgbGlrZWx5IG5vdCB3b3J0aCBpdC4gQWRkaXRpb25hbGx5LCBldmVuIGluIGJ1aWx0aW5zIGl0
IGlzIGV4dHJlbWVseSByYXJlIHRvCisgICAgICAgIHVzZSBTeW1ib2xzIGluIG9iamVjdCBsaXRl
cmFscy4KKworICAgICAgICAqIGJ1aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanM6CisgICAgICAg
IChmcm9tKToKKyAgICAgICAgKiBidWlsdGlucy9BcnJheVByb3RvdHlwZS5qczoKKyAgICAgICAg
KGZpbHRlcik6CisgICAgICAgIChtYXApOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OkJ1aWx0aW5OYW1lcyk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpblV0aWxzLmg6CisgICAgICAgICogYnVpbHRpbnMvR2xvYmFsT2Jq
ZWN0LmpzOgorICAgICAgICAoc3BlY2llc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBidWlsdGlu
cy9TdHJpbmdQcm90b3R5cGUuanM6CisgICAgICAgIChtYXRjaCk6CisgICAgICAgIChpbnRyaW5z
aWMuU3RyaW5nUHJvdG90eXBlUmVwbGFjZUludHJpbnNpYy5yZXBsYWNlKToKKyAgICAgICAgKHNl
YXJjaCk6CisgICAgICAgIChzcGxpdCk6CisgICAgICAgICogYnVpbHRpbnMvVHlwZWRBcnJheUNv
bnN0cnVjdG9yLmpzOgorICAgICAgICAoZnJvbSk6CisgICAgICAgICogYnVpbHRpbnMvVHlwZWRB
cnJheVByb3RvdHlwZS5qczoKKyAgICAgICAgKG1hcCk6CisgICAgICAgIChmaWx0ZXIpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKToKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIp
OgorCiAyMDE2LTA2LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ3Jhc2ggdW5kZXIgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzCmlu
ZGV4IDI3ZWZjMWQ5NWI2NTdiZTNmMGMwYjM4Y2YwNGYzOTQ2NzM0MGQ4ODUuLmJiODIzM2IxZTMz
OGQ3OGU1MWY5M2YzMDAwOGM5MDI3Njk3MTQ0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzCkBAIC01Nyw3ICs1Nyw3IEBAIGZ1
bmN0aW9uIGZyb20oaXRlbXMgLyosIG1hcEZuLCB0aGlzQXJnICovKQogICAgIGlmIChpdGVtcyA9
PSBudWxsKQogICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkuZnJvbSByZXF1aXJl
cyBhbiBhcnJheS1saWtlIG9iamVjdCAtIG5vdCBudWxsIG9yIHVuZGVmaW5lZCIpOwogCi0gICAg
dmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlbXNbQHN5bWJvbEl0ZXJhdG9yXTsKKyAgICB2YXIgaXRl
cmF0b3JNZXRob2QgPSBpdGVtcy5AaXRlcmF0b3JTeW1ib2w7CiAgICAgaWYgKGl0ZXJhdG9yTWV0
aG9kICE9IG51bGwpIHsKICAgICAgICAgaWYgKHR5cGVvZiBpdGVyYXRvck1ldGhvZCAhPT0gImZ1
bmN0aW9uIikKICAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5mcm9tIHJl
cXVpcmVzIHRoYXQgdGhlIHByb3BlcnR5IG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgaXRlbXNbU3lt
Ym9sLml0ZXJhdG9yXSwgd2hlbiBleGlzdHMsIGJlIGEgZnVuY3Rpb24iKTsKQEAgLTcyLDcgKzcy
LDcgQEAgZnVuY3Rpb24gZnJvbShpdGVtcyAvKiwgbWFwRm4sIHRoaXNBcmcgKi8pCiAgICAgICAg
IC8vIGl0IGNvdWxkIGJlIG9ic2VydmFibGUgaWYgdGhlIHVzZXIgZGVmaW5lcyBhIGdldHRlciBm
b3IgQEBpdGVyYXRvci4KICAgICAgICAgLy8gVG8gYXZvaWQgdGhpcyBzaXR1YXRpb24sIHdlIGRl
ZmluZSBhIHdyYXBwZXIgb2JqZWN0IHRoYXQgQEBpdGVyYXRvciBqdXN0IHJldHVybnMgYSBnaXZl
biBpdGVyYXRvci4KICAgICAgICAgdmFyIHdyYXBwZXIgPSB7Ci0gICAgICAgICAgICBbQHN5bWJv
bEl0ZXJhdG9yXSgpIHsKKyAgICAgICAgICAgIEBpdGVyYXRvclN5bWJvbCgpIHsKICAgICAgICAg
ICAgICAgICByZXR1cm4gaXRlcmF0b3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMKaW5kZXgg
M2NmNGIzNTkxNjY1NmE5YzMxMWEwNTRlOGQyMWZkZjZkZTUzZmVlYy4uOTVjYTA5NDExZmIzNTU2
NGEyMWI3MzQ0ZDI2ODRhOGE5NzM1YmU0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcwpAQCAtMjI2LDcgKzIyNiw3IEBAIGZ1bmN0aW9u
IGZpbHRlcihjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKICAgICAgICAgaWYgKEBpc0FycmF5Q29u
c3RydWN0b3IoY29uc3RydWN0b3IpICYmIEBBcnJheSAhPT0gY29uc3RydWN0b3IpCiAgICAgICAg
ICAgICBjb25zdHJ1Y3RvciA9IEB1bmRlZmluZWQ7CiAgICAgICAgIGlmIChAaXNPYmplY3QoY29u
c3RydWN0b3IpKSB7Ci0gICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yW0BzeW1i
b2xTcGVjaWVzXTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3IuQHNwZWNp
ZXNTeW1ib2w7CiAgICAgICAgICAgICBpZiAoY29uc3RydWN0b3IgPT09IG51bGwpCiAgICAgICAg
ICAgICAgICAgY29uc3RydWN0b3IgPSBAdW5kZWZpbmVkOwogICAgICAgICB9CkBAIC0yNzgsNyAr
Mjc4LDcgQEAgZnVuY3Rpb24gbWFwKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQogICAgICAgICBp
ZiAoQGlzQXJyYXlDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikgJiYgQEFycmF5ICE9PSBjb25zdHJ1
Y3RvcikKICAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gQHVuZGVmaW5lZDsKICAgICAgICAgaWYg
KEBpc09iamVjdChjb25zdHJ1Y3RvcikpIHsKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gY29u
c3RydWN0b3JbQHN5bWJvbFNwZWNpZXNdOworICAgICAgICAgICAgY29uc3RydWN0b3IgPSBjb25z
dHJ1Y3Rvci5Ac3BlY2llc1N5bWJvbDsKICAgICAgICAgICAgIGlmIChjb25zdHJ1Y3RvciA9PT0g
bnVsbCkKICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvciA9IEB1bmRlZmluZWQ7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFt
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRl
eCAxOGM0YWMwODQzY2FjMWI5YzgzYjc1ZjNjYTZkNDRhZjI0MWM4MGUxLi5iNmY0ZTM4NjdmMmJj
ZWFiOTZkNjkzODA4Y2I0Njc3ODYyYTE2NDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0zNSw2ICszNSwxMSBAQCBuYW1lc3BhY2UgSlND
IHsKICNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWShuYW1lKSBtX3By
aXZhdGVUb1B1YmxpY01hcC5hZGQobV8jI25hbWUjI1ByaXZhdGVOYW1lLmltcGwoKSwgJm1fIyNu
YW1lKTsKICNkZWZpbmUgSU5JVElBTElaRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWShuYW1lKSBt
X3B1YmxpY1RvUHJpdmF0ZU1hcC5hZGQobV8jI25hbWUuaW1wbCgpLCAmbV8jI25hbWUjI1ByaXZh
dGVOYW1lKTsKIAorLy8gV2UgY29tbWFuZGVlciB0aGUgcHVibGljVG9Qcml2YXRlTWFwIHRvIGFs
bG93IHVzIHRvIGNvbnZlcnQgcHJpdmF0ZSBzeW1ib2wgbmFtZXMgaW50byB0aGUgYXBwcm9wcmlh
dGUgc3ltYm9sLgorLy8gZS5nLiBAaXRlcmF0b3JTeW1ib2wgcG9pbnRzIHRvIFN5bWJvbC5pdGVy
YXRvciBpbiB0aGlzIG1hcCByYXRoZXIgdGhhbiB0byBhIGFuIGFjdHVhbCBwcml2YXRlIG5hbWUu
CisvLyBGSVhNRTogVGhpcyBpcyBhIHdlaXJkIGhhY2sgYW5kIHdlIHNob3VsZG4ndCBuZWVkIHRv
IGRvIHRoaXMuCisjZGVmaW5lIElOSVRJQUxJWkVfU1lNQk9MX1BVQkxJQ19UT19QUklWQVRFX0VO
VFJZKG5hbWUpIG1fcHVibGljVG9Qcml2YXRlTWFwLmFkZChtXyMjbmFtZSMjU3ltYm9sUHJpdmF0
ZUlkZW50aWZpZXIuaW1wbCgpLCAmbV8jI25hbWUjI1N5bWJvbCk7CisKIGNsYXNzIEJ1aWx0aW5O
YW1lcyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnVpbHRpbk5hbWVzKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgCkBAIC01NCw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICAgICAg
SlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFM
SVpFX1BSSVZBVEVfVE9fUFVCTElDX0VOVFJZKQogICAgICAgICBKU0NfRk9SRUFDSF9CVUlMVElO
X0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkKICAgICAg
ICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklU
SUFMSVpFX1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKQorICAgICAgICBKU0NfQ09NTU9OX1BSSVZB
VEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklUSUFMSVpFX1NZTUJPTF9Q
VUJMSUNfVE9fUFJJVkFURV9FTlRSWSkKICAgICAgICAgbV9wcml2YXRlVG9QdWJsaWNNYXAuYWRk
KG1fZG9sbGFyVk1Qcml2YXRlTmFtZS5pbXBsKCksICZtX2RvbGxhclZNTmFtZSk7CiAgICAgICAg
IG1fcHVibGljVG9Qcml2YXRlTWFwLmFkZChtX2RvbGxhclZNTmFtZS5pbXBsKCksICZtX2RvbGxh
clZNUHJpdmF0ZU5hbWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluVXRpbHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluVXRpbHMuaAppbmRleCA0NWMzZTZhODU0ZTI4MmNjYjE2NzBmYWVjODQ0YzdmMjUw
MDFmNDY0Li5jZWVhYzI5YTYxMGIwYzg1YzlhYmYyMDg5NjRjMDk4NmMyMGU2ZThhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5VdGlscy5oCkBAIC0zNyw4ICsz
Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgbmFtZSMj
UHVibGljTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lOyB9IFwKICAgICBjb25zdCBKU0M6
OklkZW50aWZpZXImIG5hbWUjI1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUj
I1ByaXZhdGVOYW1lOyB9CiAKLSNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NZTUJPTFMobmFt
ZSkgLCBtXyMjbmFtZSMjU3ltYm9sKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVVpZChKU0M6OlByaXZh
dGVOYW1lKEpTQzo6UHJpdmF0ZU5hbWU6OkRlc2NyaXB0aW9uLCBBU0NJSUxpdGVyYWwoIlN5bWJv
bC4iICNuYW1lKSkpKQotI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU1lNQk9MUyhuYW1lKSBjb25z
dCBKU0M6OklkZW50aWZpZXIgbV8jI25hbWUjI1N5bWJvbDsKKyNkZWZpbmUgSU5JVElBTElaRV9C
VUlMVElOX1NZTUJPTFMobmFtZSkgLCBtXyMjbmFtZSMjU3ltYm9sKEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVVpZChKU0M6OlByaXZhdGVOYW1lKEpTQzo6UHJpdmF0ZU5hbWU6OkRlc2NyaXB0aW9uLCBB
U0NJSUxpdGVyYWwoIlN5bWJvbC4iICNuYW1lKSkpKSwgbV8jI25hbWUjI1N5bWJvbFByaXZhdGVJ
ZGVudGlmaWVyKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUgIlN5bWJvbCIp
KQorI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU1lNQk9MUyhuYW1lKSBjb25zdCBKU0M6OklkZW50
aWZpZXIgbV8jI25hbWUjI1N5bWJvbDsgY29uc3QgSlNDOjpJZGVudGlmaWVyIG1fIyNuYW1lIyNT
eW1ib2xQcml2YXRlSWRlbnRpZmllcjsKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NZTUJPTF9B
Q0NFU1NPUihuYW1lKSBcCiAgICAgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBuYW1lIyNTeW1ib2wo
KSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU3ltYm9sOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCmluZGV4IGQyOGJmMmJlYmFhZWNhYTQy
Y2Y1OGRkM2VlMTFmZjE5MDE3ZDljMzYuLjhiYTM0OTA4YWZhNzliYzM2MjIyZGM5ZTE1M2UyOGYy
OTJjMjA5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9i
YWxPYmplY3QuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9i
amVjdC5qcwpAQCAtNjksNyArNjksNyBAQCBmdW5jdGlvbiBzcGVjaWVzQ29uc3RydWN0b3Iob2Jq
LCBkZWZhdWx0Q29uc3RydWN0b3IpCiAgICAgICAgIHJldHVybiBkZWZhdWx0Q29uc3RydWN0b3I7
CiAgICAgaWYgKCFAaXNPYmplY3QoY29uc3RydWN0b3IpKQogICAgICAgICB0aHJvdyBuZXcgQFR5
cGVFcnJvcigifHRoaXN8LmNvbnN0cnVjdG9yIGlzIG5vdCBhbiBPYmplY3Qgb3IgdW5kZWZpbmVk
Iik7Ci0gICAgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcltAc3ltYm9sU3BlY2llc107CisgICAg
Y29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rvci5Ac3BlY2llc1N5bWJvbDsKICAgICBpZiAoY29uc3Ry
dWN0b3IgPT0gbnVsbCkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRDb25zdHJ1Y3RvcjsKICAgICBp
ZiAoQGlzQ29uc3RydWN0b3IoY29uc3RydWN0b3IpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMKaW5kZXggMDU4MzAzZDA0OTEyNGI0YmIy
NDU1NjA5MjllOTg1ZGYzMmJhZjc2ZC4uODk2NTEwYzA0NGVlZTg4NTI5MGU1NWFiMDdmYTk5OTNm
YmJkMDZlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmlu
Z1Byb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5n
UHJvdG90eXBlLmpzCkBAIC0zNiwxNCArMzYsMTQgQEAgZnVuY3Rpb24gbWF0Y2gocmVnZXhwKQog
ICAgIH0KIAogICAgIGlmIChyZWdleHAgIT0gbnVsbCkgewotICAgICAgICB2YXIgbWF0Y2hlciA9
IHJlZ2V4cFtAc3ltYm9sTWF0Y2hdOworICAgICAgICB2YXIgbWF0Y2hlciA9IHJlZ2V4cC5AbWF0
Y2hTeW1ib2w7CiAgICAgICAgIGlmIChtYXRjaGVyICE9IEB1bmRlZmluZWQpCiAgICAgICAgICAg
ICByZXR1cm4gbWF0Y2hlci5AY2FsbChyZWdleHAsIHRoaXMpOwogICAgIH0KIAogICAgIGxldCB0
aGlzU3RyaW5nID0gQHRvU3RyaW5nKHRoaXMpOwogICAgIGxldCBjcmVhdGVkUmVnRXhwID0gQHJl
Z0V4cENyZWF0ZShyZWdleHAsIEB1bmRlZmluZWQpOwotICAgIHJldHVybiBjcmVhdGVkUmVnRXhw
W0BzeW1ib2xNYXRjaF0odGhpc1N0cmluZyk7CisgICAgcmV0dXJuIGNyZWF0ZWRSZWdFeHAuQG1h
dGNoU3ltYm9sKHRoaXNTdHJpbmcpOwogfQogCiBmdW5jdGlvbiByZXBlYXRTbG93UGF0aChzdHJp
bmcsIGNvdW50KQpAQCAtMjMzLDcgKzIzMyw3IEBAIGZ1bmN0aW9uIHJlcGxhY2Uoc2VhcmNoLCBy
ZXBsYWNlKQogICAgIH0KIAogICAgIGlmIChzZWFyY2ggIT0gbnVsbCkgewotICAgICAgICBsZXQg
cmVwbGFjZXIgPSBzZWFyY2hbQHN5bWJvbFJlcGxhY2VdOworICAgICAgICBsZXQgcmVwbGFjZXIg
PSBzZWFyY2guQHJlcGxhY2VTeW1ib2w7CiAgICAgICAgIGlmIChyZXBsYWNlciAhPT0gQHVuZGVm
aW5lZCkgewogICAgICAgICAgICAgaWYgKCFAaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9yU3Ry
aW5nUmVwbGFjZShzZWFyY2gsIHJlcGxhY2VyKSkKICAgICAgICAgICAgICAgICByZXR1cm4gQHRv
U3RyaW5nKHRoaXMpLkByZXBsYWNlVXNpbmdSZWdFeHAoc2VhcmNoLCByZXBsYWNlKTsKQEAgLTI5
MSwxNCArMjkxLDE0IEBAIGZ1bmN0aW9uIHNlYXJjaChyZWdleHApCiAgICAgfQogCiAgICAgaWYg
KHJlZ2V4cCAhPSBudWxsKSB7Ci0gICAgICAgIHZhciBzZWFyY2hlciA9IHJlZ2V4cFtAc3ltYm9s
U2VhcmNoXTsKKyAgICAgICAgdmFyIHNlYXJjaGVyID0gcmVnZXhwLkBzZWFyY2hTeW1ib2w7CiAg
ICAgICAgIGlmIChzZWFyY2hlciAhPSBAdW5kZWZpbmVkKQogICAgICAgICAgICAgcmV0dXJuIHNl
YXJjaGVyLkBjYWxsKHJlZ2V4cCwgdGhpcyk7CiAgICAgfQogCiAgICAgdmFyIHRoaXNTdHJpbmcg
PSBAdG9TdHJpbmcodGhpcyk7CiAgICAgdmFyIGNyZWF0ZWRSZWdFeHAgPSBAcmVnRXhwQ3JlYXRl
KHJlZ2V4cCwgQHVuZGVmaW5lZCk7Ci0gICAgcmV0dXJuIGNyZWF0ZWRSZWdFeHBbQHN5bWJvbFNl
YXJjaF0odGhpc1N0cmluZyk7CisgICAgcmV0dXJuIGNyZWF0ZWRSZWdFeHAuQHNlYXJjaFN5bWJv
bCh0aGlzU3RyaW5nKTsKIH0KIAogZnVuY3Rpb24gc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCkKQEAg
LTMxMiw3ICszMTIsNyBAQCBmdW5jdGlvbiBzcGxpdChzZXBhcmF0b3IsIGxpbWl0KQogICAgIH0K
ICAgICAKICAgICBpZiAoc2VwYXJhdG9yICE9IG51bGwpIHsKLSAgICAgICAgdmFyIHNwbGl0dGVy
ID0gc2VwYXJhdG9yW0BzeW1ib2xTcGxpdF07CisgICAgICAgIHZhciBzcGxpdHRlciA9IHNlcGFy
YXRvci5Ac3BsaXRTeW1ib2w7CiAgICAgICAgIGlmIChzcGxpdHRlciAhPSBAdW5kZWZpbmVkKQog
ICAgICAgICAgICAgcmV0dXJuIHNwbGl0dGVyLkBjYWxsKHNlcGFyYXRvciwgdGhpcywgbGltaXQp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBl
ZEFycmF5Q29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlw
ZWRBcnJheUNvbnN0cnVjdG9yLmpzCmluZGV4IDFjODE0MWQ2ZWNhMGZhNjVjNTliZWIxNmQzMmNj
MDBjMWZlMjBhYTguLjkwODZiODZkOWYyMWI3MzJhOTIyZjFkYjI2NDUxNzk0MmYzMjUxNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5Q29uc3Ry
dWN0b3IuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlD
b25zdHJ1Y3Rvci5qcwpAQCAtNjMsNyArNjMsNyBAQCBmdW5jdGlvbiBmcm9tKGl0ZW1zIC8qIFsg
LCBtYXBmbiBbICwgdGhpc0FyZyBdIF0gKi8pCiAgICAgaWYgKGl0ZW1zID09IG51bGwpCiAgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJUeXBlZEFycmF5LmZyb20gcmVxdWlyZXMgYW4gYXJy
YXktbGlrZSBvYmplY3QgLSBub3QgbnVsbCBvciB1bmRlZmluZWQiKTsKIAotICAgIGxldCBpdGVy
YXRvck1ldGhvZCA9IGl0ZW1zW0BzeW1ib2xJdGVyYXRvcl07CisgICAgbGV0IGl0ZXJhdG9yTWV0
aG9kID0gaXRlbXMuQGl0ZXJhdG9yU3ltYm9sOwogICAgIGlmIChpdGVyYXRvck1ldGhvZCAhPSBu
dWxsKSB7CiAgICAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3JNZXRob2QgIT09ICJmdW5jdGlvbiIp
CiAgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiVHlwZWRBcnJheS5mcm9tIHJlcXVp
cmVzIHRoYXQgdGhlIHByb3BlcnR5IG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgaXRlbXNbU3ltYm9s
Lml0ZXJhdG9yXSwgd2hlbiBleGlzdHMsIGJlIGEgZnVuY3Rpb24iKTsKQEAgLTc3LDcgKzc3LDcg
QEAgZnVuY3Rpb24gZnJvbShpdGVtcyAvKiBbICwgbWFwZm4gWyAsIHRoaXNBcmcgXSBdICovKQog
ICAgICAgICAvLyBpdCBjb3VsZCBiZSBvYnNlcnZhYmxlIGlmIHRoZSB1c2VyIGRlZmluZXMgYSBn
ZXR0ZXIgZm9yIEBAaXRlcmF0b3IuCiAgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgc2l0dWF0aW9u
LCB3ZSBkZWZpbmUgYSB3cmFwcGVyIG9iamVjdCB0aGF0IEBAaXRlcmF0b3IganVzdCByZXR1cm5z
IGEgZ2l2ZW4gaXRlcmF0b3IuCiAgICAgICAgIGxldCB3cmFwcGVyID0gewotICAgICAgICAgICAg
W0BzeW1ib2xJdGVyYXRvcl0oKSB7CisgICAgICAgICAgICBAaXRlcmF0b3JTeW1ib2woKSB7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yOwogICAgICAgICAgICAgfQogICAgICAgICB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlQ
cm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVBy
b3RvdHlwZS5qcwppbmRleCA2NWMwZGMxZmUxODFmNWZjNDlkNTgzZWMwZDY0NzEwNmEwNTY5ZDZk
Li5iZjhhNDFiODljZDg1NTg2ZjA1OWE2ZDA3NmNhYmZlY2JmOTAwZWYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcwpA
QCAtMjYxLDcgKzI2MSw3IEBAIGZ1bmN0aW9uIG1hcChjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykK
ICAgICBpZiAoY29uc3RydWN0b3IgPT09IEB1bmRlZmluZWQpCiAgICAgICAgIHJlc3VsdCA9IG5l
dyAoQHR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yKHRoaXMpKShsZW5ndGgpOwogICAg
IGVsc2UgewotICAgICAgICB2YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gQE9iamVjdChjb25zdHJ1
Y3RvcilbQHN5bWJvbFNwZWNpZXNdOworICAgICAgICB2YXIgc3BlY2llc0NvbnN0cnVjdG9yID0g
QE9iamVjdChjb25zdHJ1Y3RvcikuQHNwZWNpZXNTeW1ib2w7CiAgICAgICAgIGlmIChzcGVjaWVz
Q29uc3RydWN0b3IgPT09IG51bGwgfHwgc3BlY2llc0NvbnN0cnVjdG9yID09PSBAdW5kZWZpbmVk
KQogICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChAdHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3Ry
dWN0b3IodGhpcykpKGxlbmd0aCk7CiAgICAgICAgIGVsc2UgewpAQCAtMzAyLDcgKzMwMiw3IEBA
IGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKICAgICBpZiAoY29uc3Ry
dWN0b3IgPT09IEB1bmRlZmluZWQpCiAgICAgICAgIHJlc3VsdCA9IG5ldyAoQHR5cGVkQXJyYXlH
ZXRPcmlnaW5hbENvbnN0cnVjdG9yKHRoaXMpKShyZXN1bHRMZW5ndGgpOwogICAgIGVsc2Ugewot
ICAgICAgICB2YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gQE9iamVjdChjb25zdHJ1Y3RvcilbQHN5
bWJvbFNwZWNpZXNdOworICAgICAgICB2YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gQE9iamVjdChj
b25zdHJ1Y3RvcikuQHNwZWNpZXNTeW1ib2w7CiAgICAgICAgIGlmIChzcGVjaWVzQ29uc3RydWN0
b3IgPT09IG51bGwgfHwgc3BlY2llc0NvbnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQogICAgICAg
ICAgICAgcmVzdWx0ID0gbmV3IChAdHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IodGhp
cykpKHJlc3VsdExlbmd0aCk7CiAgICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3Bw
CmluZGV4IDI2YjBkYjdmZjg0NDhjMzAwYThlOWU1N2FkOGNmMzlkMWNiZGUzMTMuLmIyNzVlNjNj
OWYyYWYwZGU2YjVlMmVjMTM0ZmM2ZDJiNTAxNDJjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5j
cHAKQEAgLTU0LDEyICs1NCw2IEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogICAgIG1fcHJvbWlzZVN0YXRlUGVuZGluZy5zZXQo
bV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6U3RhdHVzOjpQ
ZW5kaW5nKSkpOwogICAgIG1fcHJvbWlzZVN0YXRlRnVsZmlsbGVkLnNldChtX3ZtLCBqc051bWJl
cihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0dXM6OkZ1bGZpbGxlZCkpKTsK
ICAgICBtX3Byb21pc2VTdGF0ZVJlamVjdGVkLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0dXM6OlJlamVjdGVkKSkpOwotICAgIG1fc3ltYm9s
SXRlcmF0b3Iuc2V0KG1fdm0sIFN5bWJvbDo6Y3JlYXRlKG1fdm0sIHN0YXRpY19jYXN0PFN5bWJv
bEltcGwmPigqbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbC5pbXBsKCkpKSk7Ci0g
ICAgbV9zeW1ib2xNYXRjaC5zZXQobV92bSwgU3ltYm9sOjpjcmVhdGUobV92bSwgc3RhdGljX2Nh
c3Q8U3ltYm9sSW1wbCY+KCptX3ZtLnByb3BlcnR5TmFtZXMtPm1hdGNoU3ltYm9sLmltcGwoKSkp
KTsKLSAgICBtX3N5bWJvbFJlcGxhY2Uuc2V0KG1fdm0sIFN5bWJvbDo6Y3JlYXRlKG1fdm0sIHN0
YXRpY19jYXN0PFN5bWJvbEltcGwmPigqbV92bS5wcm9wZXJ0eU5hbWVzLT5yZXBsYWNlU3ltYm9s
LmltcGwoKSkpKTsKLSAgICBtX3N5bWJvbFNlYXJjaC5zZXQobV92bSwgU3ltYm9sOjpjcmVhdGUo
bV92bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCptX3ZtLnByb3BlcnR5TmFtZXMtPnNlYXJj
aFN5bWJvbC5pbXBsKCkpKSk7Ci0gICAgbV9zeW1ib2xTcGVjaWVzLnNldChtX3ZtLCBTeW1ib2w6
OmNyZWF0ZShtX3ZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKm1fdm0ucHJvcGVydHlOYW1l
cy0+c3BlY2llc1N5bWJvbC5pbXBsKCkpKSk7Ci0gICAgbV9zeW1ib2xTcGxpdC5zZXQobV92bSwg
U3ltYm9sOjpjcmVhdGUobV92bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCptX3ZtLnByb3Bl
cnR5TmFtZXMtPnNwbGl0U3ltYm9sLmltcGwoKSkpKTsKICAgICBtX0dlbmVyYXRvclJlc3VtZU1v
ZGVOb3JtYWwuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7CiAgICAgbV9H
ZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9k
ZSkpKTsKICAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4uc2V0KG1fdm0sIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3Vt
ZU1vZGU6OlJldHVybk1vZGUpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAppbmRleCA5M2U5NjgwNjY3
OWJjMjBmYzBjMTRkYTcyZjE1NDRhZmRiNDIxOGEyLi4yYzM5OTM1ZmI3ODVkNzg1MjQwNGQ1YWYx
YjlhMzk5MTNiNGQ1ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKQEAgLTU3LDEyICs1Nyw2IEBA
IGNsYXNzIElkZW50aWZpZXI7CiAgICAgbWFjcm8ocHJvbWlzZVN0YXRlUGVuZGluZykgXAogICAg
IG1hY3JvKHByb21pc2VTdGF0ZUZ1bGZpbGxlZCkgXAogICAgIG1hY3JvKHByb21pc2VTdGF0ZVJl
amVjdGVkKSBcCi0gICAgbWFjcm8oc3ltYm9sSXRlcmF0b3IpIFwKLSAgICBtYWNybyhzeW1ib2xN
YXRjaCkgXAotICAgIG1hY3JvKHN5bWJvbFJlcGxhY2UpIFwKLSAgICBtYWNybyhzeW1ib2xTZWFy
Y2gpIFwKLSAgICBtYWNybyhzeW1ib2xTcGVjaWVzKSBcCi0gICAgbWFjcm8oc3ltYm9sU3BsaXQp
IFwKICAgICBtYWNybyhHZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsKSBcCiAgICAgbWFjcm8oR2Vu
ZXJhdG9yUmVzdW1lTW9kZVRocm93KSBcCiAgICAgbWFjcm8oR2VuZXJhdG9yUmVzdW1lTW9kZVJl
dHVybikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBiMTMxNWJkZjE0YzA4NDk0NTZkNjI0YjI0ODlk
NzkyYjE4MDdhNGQ4Li4wMzQzOGEzMTQ2MDA0YzU2MmJmYzc5ZWJmYzRlNzU5ZDI0ZDhkNGEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMTcyNyw5ICsxNzI3LDE1IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGJvb2wgYikKIAogUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKKyAgICAvLyBJdCBtaWdodCBzZWVtIGJhZCB0aGF0
IHdlIGFsbG9jYXRlIGEgbmV3IFN5bWJvbCBlYWNoIHRpbWUgd2Ugd2FudCB0byB1c2UgaXQgYXMg
YSBjb25zdGFudCwKKyAgICAvLyBob3dldmVyLCB0aGlzIGlzIG9ubHkgcG9zc2libGUgaW4gYnVp
bHRpbnMgYW5kIGV2ZW4gdGhlcmUgYWxtb3N0IG5ldmVyIGhhcHBlbnMuCisgICAgaWYgKFVOTElL
RUxZKGlkZW50aWZpZXIuaW1wbCgpLT5pc1N5bWJvbCgpKSkKKyAgICAgICAgcmV0dXJuIGVtaXRM
b2FkKGRzdCwgSlNWYWx1ZShTeW1ib2w6OmNyZWF0ZSgqdm0oKSwgKnN0YXRpY19jYXN0PFN5bWJv
bEltcGwqPihpZGVudGlmaWVyLmltcGwoKSkpKSk7CisKICAgICBKU1N0cmluZyomIHN0cmluZ0lu
TWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRv
ci0+dmFsdWU7CiAgICAgaWYgKCFzdHJpbmdJbk1hcCkKICAgICAgICAgc3RyaW5nSW5NYXAgPSBq
c093bmVkU3RyaW5nKHZtKCksIGlkZW50aWZpZXIuc3RyaW5nKCkpOworCiAgICAgcmV0dXJuIGVt
aXRMb2FkKGRzdCwgSlNWYWx1ZShzdHJpbmdJbk1hcCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNjQ2NzVkNzEwMjBkMmQ4ZTUzZmEyYjY4YTdkMTVm
Nzk1MzhhMWUxMi4uOTI0MTJjZjE1ODBiNmQ1MDliMTk2N2MxMzExYWQ4YjE2NDQwYTQ4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMzIxLDkgKzMyMSw4IEBA
IFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBj
YWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vCiAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW4gJiYgaXNQ
cm9ncmFtUGFyc2VNb2RlKHBhcnNlTW9kZSkpIHsKICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVu
dCYgbGV4aWNhbFZhcmlhYmxlcyA9IHNjb3BlLT5sZXhpY2FsVmFyaWFibGVzKCk7CiAgICAgICAg
IGNvbnN0IEhhc2hTZXQ8VW5pcXVlZFN0cmluZ0ltcGwqPiYgY2xvc2VkVmFyaWFibGVDYW5kaWRh
dGVzID0gc2NvcGUtPmNsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlcygpOwotICAgICAgICBjb25zdCBC
dWlsdGluTmFtZXMmIGJ1aWx0aW5OYW1lcyA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpOwogICAgICAgICBmb3IgKFVuaXF1ZWRTdHJpbmdJbXBsKiBjYW5kaWRhdGUgOiBjbG9z
ZWRWYXJpYWJsZUNhbmRpZGF0ZXMpIHsKLSAgICAgICAgICAgIGlmICghbGV4aWNhbFZhcmlhYmxl
cy5jb250YWlucyhjYW5kaWRhdGUpICYmICF2YXJEZWNsYXJhdGlvbnMuY29udGFpbnMoY2FuZGlk
YXRlKSAmJiAhYnVpbHRpbk5hbWVzLmlzUHJpdmF0ZU5hbWUoKmNhbmRpZGF0ZSkpIHsKKyAgICAg
ICAgICAgIGlmICghbGV4aWNhbFZhcmlhYmxlcy5jb250YWlucyhjYW5kaWRhdGUpICYmICF2YXJE
ZWNsYXJhdGlvbnMuY29udGFpbnMoY2FuZGlkYXRlKSAmJiAhY2FuZGlkYXRlLT5pc1N5bWJvbCgp
KSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiQmFkIGdsb2JhbCBjYXB0dXJlIGluIGJ1aWx0
aW46ICciLCBjYW5kaWRhdGUsICInXG4iKTsKICAgICAgICAgICAgICAgICBkYXRhTG9nKG1fc291
cmNlLT52aWV3KCkpOwogICAgICAgICAgICAgICAgIENSQVNIKCk7Cg==
</data>
<flag name="review"
          id="304697"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>