<?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>72709</bug_id>
          
          <creation_ts>2011-11-18 03:25:48 -0800</creation_ts>
          <short_desc>DFG JIT fails speculation on InstanceOf if the base is not an object</short_desc>
          <delta_ts>2011-11-18 17:00:57 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>505650</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-18 03:25:48 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505651</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-18 03:26:02 -0800</bug_when>
    <thetext>rdar://problem/10468892</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505654</commentid>
    <comment_count>2</comment_count>
      <attachid>115779</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-18 03:31:45 -0800</bug_when>
    <thetext>Created attachment 115779
the patch

Seems like a 1% win on V8 using the V8 harness:



[pizlo@nitroflex benchmarks] /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc run.js 
Richards: 10855
DeltaBlue: 7207
Crypto: 16171
RayTrace: 9333
EarleyBoyer: 10527
RegExp: 2252
Splay: 8964
----
Score (version 6): 8207
[pizlo@nitroflex benchmarks] /Volumes/Data/pizlo/senary/OpenSource/WebKitBuild/Release/jsc run.js 
Richards: 10862
DeltaBlue: 7247
Crypto: 16377
RayTrace: 9268
EarleyBoyer: 10851
RegExp: 2270
Splay: 8997
----
Score (version 6): 8271
[pizlo@nitroflex benchmarks] irb
&gt;&gt; 8271/8207.0
=&gt; 1.00779822103083
&gt;&gt; quit
[pizlo@nitroflex benchmarks] irb
&gt;&gt; 10851/10527.0
=&gt; 1.03077799943004
&gt;&gt; quit


Seems neutral according to my harness, running on 3 different machines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506075</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-18 14:46:33 -0800</bug_when>
    <thetext>This ends up being a much bigger deal on 32-64:



Benchmark report for SunSpider, V8, and Kraken on oldmac.local (MacPro4,1).

VMs tested:
&quot;TipOfTree32&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r100733)
&quot;FixInstanceOf32&quot; at /Volumes/Data/pizlo/senary/OpenSource/WebKitBuild/Release/jsc (r100733)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime()
function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in
milliseconds.

                                           TipOfTree32           FixInstanceOf32                                 
SunSpider:
   3d-cube                               11.0565+-0.0299    ^    10.9706+-0.0216       ^ definitely 1.0078x faster
   3d-morph                              13.2514+-0.0265         13.2316+-0.0434       
   3d-raytrace                           12.1318+-0.0743    ^    11.9606+-0.0105       ^ definitely 1.0143x faster
   access-binary-trees                    2.2790+-0.0137          2.2753+-0.0140       
   access-fannkuch                       10.4670+-0.0196         10.4511+-0.0317       
   access-nbody                           6.8477+-0.0034    ?     6.8616+-0.0438       ?
   access-nsieve                          3.7028+-0.0046    ?     3.7084+-0.0062       ?
   bitops-3bit-bits-in-byte               1.5467+-0.0237          1.5414+-0.0256       
   bitops-bits-in-byte                    6.0429+-0.0211          6.0359+-0.0215       
   bitops-bitwise-and                     4.6970+-0.0295          4.6806+-0.0102       
   bitops-nsieve-bits                     8.1776+-0.0088    ?     8.1850+-0.0094       ?
   controlflow-recursive                  3.8011+-0.0085    ?     3.8234+-0.0388       ?
   crypto-aes                            11.3316+-0.0411         11.2732+-0.0304       
   crypto-md5                             3.9076+-0.0214    ?     3.9386+-0.0328       ?
   crypto-sha1                            3.2138+-0.0117          3.2057+-0.0163       
   date-format-tofte                     14.4072+-0.3327         14.2207+-0.1071         might be 1.0131x faster
   date-format-xparb                     14.6767+-0.0894    ^    14.0995+-0.0918       ^ definitely 1.0409x faster
   math-cordic                           12.0391+-0.0448         12.0278+-0.0305       
   math-partial-sums                     15.0837+-0.0323    ^    14.9921+-0.0081       ^ definitely 1.0061x faster
   math-spectral-norm                     3.2535+-0.0042          3.2525+-0.0133       
   regexp-dna                            14.7461+-0.0388    !    14.8953+-0.0641       ! definitely 1.0101x slower
   string-base64                          5.4465+-0.0255    ?     5.4520+-0.0296       ?
   string-fasta                          11.6805+-0.0770         11.6651+-0.0407       
   string-tagcloud                       17.8951+-0.1342         17.6676+-0.1127         might be 1.0129x faster
   string-unpack-code                    28.6359+-0.1221    ?    28.6707+-0.0910       ?
   string-validate-input                  7.6607+-0.0558          7.6206+-0.0340       

   &lt;arithmetic&gt; *                         9.5377+-0.0206    ^     9.4887+-0.0193       ^ definitely 1.0052x faster
   &lt;geometric&gt;                            7.6546+-0.0178          7.6278+-0.0204         might be 1.0035x faster
   &lt;harmonic&gt;                             5.8857+-0.0224          5.8754+-0.0272         might be 1.0018x faster

                                           TipOfTree32           FixInstanceOf32                                 
V8:
   crypto                               117.8071+-0.4663    ?   118.0608+-0.5587       ?
   deltablue                            225.9921+-2.0347        225.3533+-0.7155       
   earley-boyer                         237.4998+-0.3201    ^   211.0544+-2.9183       ^ definitely 1.1253x faster
   raytrace                              82.8744+-0.4197    ?    83.1744+-0.4439       ?
   regexp                               156.3446+-0.2260    ^   154.9049+-0.2450       ^ definitely 1.0093x faster
   richards                             243.1000+-1.1683        242.1290+-1.0782       
   splay                                116.0900+-0.9075        115.6935+-1.7122       

   &lt;arithmetic&gt;                         168.5297+-0.3302    ^   164.3386+-0.5964       ^ definitely 1.0255x faster
   &lt;geometric&gt; *                        156.6193+-0.2530    ^   153.6933+-0.5753       ^ definitely 1.0190x faster
   &lt;harmonic&gt;                           144.8763+-0.2079    ^   143.1380+-0.5643       ^ definitely 1.0121x faster

                                           TipOfTree32           FixInstanceOf32                                 
Kraken:
   ai-astar                             987.4732+-1.8545    ?   987.9623+-1.4814       ?
   audio-beat-detection                 495.2940+-0.4341        495.0814+-0.8846       
   audio-dft                            476.3770+-2.1062    ?   476.9451+-2.4131       ?
   audio-fft                            325.9456+-0.1807    ?   326.1011+-0.2349       ?
   audio-oscillator                     602.9375+-2.5446        601.9519+-2.4284       
   imaging-darkroom                     522.2273+-4.5220    ?   523.4006+-4.6703       ?
   imaging-desaturate                  1203.9462+-1.6900    ?  1204.3335+-2.6716       ?
   imaging-gaussian-blur               1041.1411+-1.0568    ?  1041.4093+-1.3214       ?
   json-parse-financial                  90.6251+-0.1707    ?    90.8215+-0.1234       ?
   json-stringify-tinderbox             139.8089+-0.2583    ?   140.4707+-0.5278       ?
   stanford-crypto-aes                  165.6960+-0.7367    ?   165.7563+-0.4304       ?
   stanford-crypto-ccm                  157.1189+-0.4360    !   159.0179+-0.5495       ! definitely 1.0121x slower
   stanford-crypto-pbkdf2               316.5895+-0.6521    ?   316.8845+-0.2622       ?
   stanford-crypto-sha256-iterative     127.9855+-0.5210        127.8547+-0.2938       

   &lt;arithmetic&gt; *                       475.2261+-0.4900    ?   475.5708+-0.5859       ? might be 1.0007x slower
   &lt;geometric&gt;                          349.1768+-0.3579    ?   349.7284+-0.3707       ? might be 1.0016x slower
   &lt;harmonic&gt;                           253.9755+-0.3082    !   254.6060+-0.2736       ! definitely 1.0025x slower

                                           TipOfTree32           FixInstanceOf32                                 
All benchmarks:
   &lt;arithmetic&gt;                         171.9330+-0.1741    ^   171.3844+-0.2220       ^ definitely 1.0032x faster
   &lt;geometric&gt;                           37.4431+-0.0565    ^    37.2831+-0.0692       ^ definitely 1.0043x faster
   &lt;harmonic&gt;                            10.3961+-0.0387         10.3773+-0.0469         might be 1.0018x faster

                                           TipOfTree32           FixInstanceOf32                                 
Geomean of preferred means:
   &lt;scaled-result&gt;                       89.2062+-0.0913    ^    88.5165+-0.1512       ^ definitely 1.0078x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506129</commentid>
    <comment_count>4</comment_count>
      <attachid>115779</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-11-18 15:28:18 -0800</bug_when>
    <thetext>Comment on attachment 115779
the patch

r=-me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506220</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-18 17:00:57 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/100829</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115779</attachid>
            <date>2011-11-18 03:31:45 -0800</date>
            <delta_ts>2011-11-18 15:28:18 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>instanceof_patch_1.diff</filename>
            <type>text/plain</type>
            <size>12237</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAwNzQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDExLTExLTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIEpJVCBmYWlscyBzcGVjdWxhdGlvbiBvbiBJbnN0YW5jZU9mIGlmIHRoZSBiYXNlIGlzIG5v
dCBhbiBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcyNzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAg
IAorICAgICAgICBJbnN0YW5jZU9mIGFscmVhZHkgbGV2ZXJhZ2VzIHRoZSBmYWN0IHRoYXQgd2Ug
b25seSBhbGxvdyB0aGUgZGVmYXVsdAorICAgICAgICBoYXNJbnN0YW5jZSBpbXBsZW1lbnRhdGlv
bi4gU28sIGlmIHRoZSBiYXNlIGlzIHByZWRpY3RlZCB0byBwb3NzaWJseQorICAgICAgICBiZSBu
b3QgYW4gb2JqZWN0IGFuZCB0aGUgQ0ZBIGhhcyBub3QgeWV0IHByb3ZlbiBvdGhlcndpc2UsIElu
c3RhbmNlT2YKKyAgICAgICAgd2lsbCBhYnN0YWluIGZyb20gc3BlY3VsYXRpbmcgY2VsbCBhbmQg
aW5zdGVhZCByZXR1cm4gZmFsc2UgaWYgdGhlCisgICAgICAgIGJhc2UgaXMgbm90IGEgY2VsbC4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBiZSBhIDElIHNwZWVkLXVwIG9uIFY4
IG9uIHRoZSBWOCBoYXJuZXNzLiAzLTQlIG9yIHNvCisgICAgICAgIHNwZWVkLXVwIGluIGVhcmxl
eS1ib3llci4gTmV1dHJhbCBhY2NvcmRpbmcgdG8gYmVuY2hlciBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLgorICAgICAgICAKKyAgICAgICAgSSBhbHNvIHRvb2sgdGhpcyBv
cHBvcnR1bml0eSB0byBtYWtlIHRoZSBjb2RlIGZvciBJbnN0YW5jZU9mIGNvbW1vbgorICAgICAg
ICBiZXR3ZWVuIHRoZSB0d28gSklUcy4gVGhpcyB3YXMgcGFydGlhbGx5IHN1Y2Nlc3NmdWwsIGlu
IHRoYXQgdGhlCisgICAgICAgICJjb21tb24gY29kZSIgaGFzIGEgYnVuY2ggb2YgI2lmJ3MsIGJ1
dCBvdmVyYWxsIGl0IHNlZW1zIGxpa2UgYSBjb2RlCisgICAgICAgIHNpemUgcmVkdWN0aW9uLgor
CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5j
ZU9mRm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUluc3RhbmNlT2YpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKwog
MjAxMS0xMS0xNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbUXRdIFJFR1JFU1NJT04ocjEwMDUxMCk6IEVuYWJsZSA4IEJpdCBTdHJpbmdzIGluIEphdmFT
Y3JpcHRDb3JlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3Rh
dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RTdGF0ZS5jcHAJKHJldmlzaW9uIDEwMDczMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyNyw4ICs2MjcsMTAg
QEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKE5vZGVJbmRleCBubwogICAgICAgICAgICAg
CiAgICAgY2FzZSBJbnN0YW5jZU9mOgogICAgICAgICAvLyBBZ2Fpbiwgc2FkbHksIHdlIGRvbid0
IHByb3BhZ2F0ZSB0aGUgZmFjdCB0aGF0IHdlJ3ZlIGRvbmUgSW5zdGFuY2VPZgotICAgICAgICBm
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0Q2VsbCk7Ci0gICAgICAgIGZvck5v
ZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RDZWxsKTsKKyAgICAgICAgaWYgKCEobV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkgJiB+UHJlZGljdENlbGwpICYmICEoZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUgJiB+UHJlZGljdENlbGwpKQorICAgICAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdENlbGwpOworICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihQcmVkaWN0Q2VsbCk7CisgICAgICAgIGZvck5vZGUo
bm9kZUluZGV4KS5zZXQoUHJlZGljdEJvb2xlYW4pOwogICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIAogICAgIGNhc2UgUGhpOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMDA3MzMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNzIzLDM5ICszNzIzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgIH0KIAogICAgIGNhc2UgSW5zdGFuY2VPZjogewotICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAg
ICAgLy8gQmFzZSB1bnVzZWQgc2luY2Ugd2Ugc3BlY3VsYXRlIGRlZmF1bHQgSW5zdGFuY2VPZiBi
ZWhhdmlvdXIgaW4gQ2hlY2tIYXNJbnN0YW5jZS4KLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgcHJvdG90eXBlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwotCi0gICAgICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOwotCi0gICAgICAgIEdQUlJlZyB2YWx1ZVJlZyA9IHZhbHVlLmdwcigp
OwotICAgICAgICBHUFJSZWcgcHJvdG90eXBlUmVnID0gcHJvdG90eXBlLmdwcigpOwotICAgICAg
ICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7Ci0KLSAgICAgICAgLy8gQ2hlY2sg
dGhhdCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0LgotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHByb3RvdHlwZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHNjcmF0Y2hSZWcpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwgbV9qaXQuYnJhbmNoOChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKSk7Ci0KLSAgICAg
ICAgLy8gSW5pdGlhbGl6ZSBzY3JhdGNoUmVnIHdpdGggdGhlIHZhbHVlIGJlaW5nIGNoZWNrZWQu
Ci0gICAgICAgIG1faml0Lm1vdmUodmFsdWVSZWcsIHNjcmF0Y2hSZWcpOwotCi0gICAgICAgIC8v
IFdhbGsgdXAgdGhlIHByb3RvdHlwZSBjaGFpbiBvZiB0aGUgdmFsdWUgKGluIHNjcmF0Y2hSZWcp
LCBjb21wYXJpbmcgdG8gcHJvdG90eXBlUmVnLgotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgbG9vcCgmbV9qaXQpOwotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNjcmF0Y2hSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoUmVn
KTsKLSAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hS
ZWcsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1
ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCBzY3JhdGNoUmVnKTsKLSAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgaXNJbnN0YW5jZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgc2NyYXRjaFJlZywgcHJvdG90eXBlUmVnKTsKLSAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDMy
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBzY3JhdGNoUmVnKS5saW5rVG8obG9vcCwgJm1faml0
KTsKLQotICAgICAgICAvLyBObyBtYXRjaCAtIHJlc3VsdCBpcyBmYWxzZS4KLSAgICAgICAgbV9q
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApLCBzY3JhdGNoUmVnKTsKLSAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcHV0UmVzdWx0ID0gbV9qaXQuanVtcCgpOwotCi0g
ICAgICAgIGlzSW5zdGFuY2UubGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIHNjcmF0Y2hSZWcpOwotCi0gICAgICAgIHB1dFJl
c3VsdC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIGJvb2xlYW5SZXN1bHQoc2NyYXRjaFJlZywgbV9j
b21waWxlSW5kZXgpOworICAgICAgICBjb21waWxlSW5zdGFuY2VPZihub2RlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEwMDczMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2MzIsMzkgKzM2MzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5v
ZGUpCiAgICAgfQogCiAgICAgY2FzZSBJbnN0YW5jZU9mOiB7Ci0gICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAvLyBCYXNlIHVu
dXNlZCBzaW5jZSB3ZSBzcGVjdWxhdGUgZGVmYXVsdCBJbnN0YW5jZU9mIGJlaGF2aW91ciBpbiBD
aGVja0hhc0luc3RhbmNlLgotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm90b3R5cGUo
dGhpcywgbm9kZS5jaGlsZDMoKSk7Ci0KLSAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhp
cyk7Ci0KLSAgICAgICAgR1BSUmVnIHZhbHVlUmVnID0gdmFsdWUuZ3ByKCk7Ci0gICAgICAgIEdQ
UlJlZyBwcm90b3R5cGVSZWcgPSBwcm90b3R5cGUuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBzY3Jh
dGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKLQotICAgICAgICAvLyBDaGVjayB0aGF0IHByb3RvdHlw
ZSBpcyBhbiBvYmplY3QuCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocHJvdG90eXBlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaFJl
Zyk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2hJZk5vdE9iamVjdChzY3JhdGNoUmVnKSk7Ci0KLSAgICAgICAgLy8gSW5pdGlhbGl6
ZSBzY3JhdGNoUmVnIHdpdGggdGhlIHZhbHVlIGJlaW5nIGNoZWNrZWQuCi0gICAgICAgIG1faml0
Lm1vdmUodmFsdWVSZWcsIHNjcmF0Y2hSZWcpOwotCi0gICAgICAgIC8vIFdhbGsgdXAgdGhlIHBy
b3RvdHlwZSBjaGFpbiBvZiB0aGUgdmFsdWUgKGluIHNjcmF0Y2hSZWcpLCBjb21wYXJpbmcgdG8g
cHJvdG90eXBlUmVnLgotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCgmbV9qaXQp
OwotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hS
ZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKLSAgICAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBTdHJ1Y3R1cmU6
OnByb3RvdHlwZU9mZnNldCgpKSwgc2NyYXRjaFJlZyk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGlzSW5zdGFuY2UgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LCBzY3JhdGNoUmVnLCBwcm90b3R5cGVSZWcpOwotICAgICAgICBtX2ppdC5icmFuY2hUZXN0UHRy
KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoUmVnLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpLmxpbmtUbyhsb29wLCAmbV9qaXQpOwotCi0gICAgICAgIC8vIE5vIG1hdGNoIC0gcmVzdWx0
IGlzIGZhbHNlLgotICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKSksIHNjcmF0Y2hSZWcpOwotICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBwdXRSZXN1bHQgPSBtX2ppdC5qdW1wKCk7Ci0KLSAg
ICAgICAgaXNJbnN0YW5jZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkp
LCBzY3JhdGNoUmVnKTsKLQotICAgICAgICBwdXRSZXN1bHQubGluaygmbV9qaXQpOwotICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHNjcmF0Y2hSZWcsIG1fY29tcGlsZUluZGV4LCBEYXRhRm9ybWF0SlNC
b29sZWFuKTsKKyAgICAgICAgY29tcGlsZUluc3RhbmNlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDEwMDczMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDczLDYgKzE0
NzMsMTA2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uQnkKICAgICBp
bnRlZ2VyUmVzdWx0KHN0b3JhZ2VSZWcsIG1fY29tcGlsZUluZGV4KTsKIH0KIAordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3QoTm9kZSYsIEdQUlJlZyB2YWx1
ZVJlZywgR1BSUmVnIHByb3RvdHlwZVJlZywgR1BSUmVnIHNjcmF0Y2hSZWcpCit7CisgICAgLy8g
Q2hlY2sgdGhhdCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0LgorICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MocHJvdG90eXBlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgc2NyYXRjaFJlZyk7CisgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KHNjcmF0Y2hSZWcpKTsKKyAgICAKKyAgICAv
LyBJbml0aWFsaXplIHNjcmF0Y2hSZWcgd2l0aCB0aGUgdmFsdWUgYmVpbmcgY2hlY2tlZC4KKyAg
ICBtX2ppdC5tb3ZlKHZhbHVlUmVnLCBzY3JhdGNoUmVnKTsKKyAgICAKKyAgICAvLyBXYWxrIHVw
IHRoZSBwcm90b3R5cGUgY2hhaW4gb2YgdGhlIHZhbHVlIChpbiBzY3JhdGNoUmVnKSwgY29tcGFy
aW5nIHRvIHByb3RvdHlwZVJlZy4KKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCgmbV9q
aXQpOworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJl
ZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNo
UmVnLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSwgc2NyYXRjaFJlZyk7CisjZWxzZQor
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBTdHJ1
Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnBheWxvYWQpKSwgc2NyYXRjaFJlZyk7CisjZW5kaWYKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBpc0luc3RhbmNlID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
c2NyYXRjaFJlZywgcHJvdG90eXBlUmVnKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIG1faml0
LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNjcmF0Y2hSZWcsIEdQUkluZm86
OnRhZ01hc2tSZWdpc3RlcikubGlua1RvKGxvb3AsICZtX2ppdCk7CisjZWxzZQorICAgIG1faml0
LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgc2NyYXRjaFJlZykubGlua1Rv
KGxvb3AsICZtX2ppdCk7CisjZW5kaWYKKyAgICAKKyAgICAvLyBObyBtYXRjaCAtIHJlc3VsdCBp
cyBmYWxzZS4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpKSwgc2Ny
YXRjaFJlZyk7CisjZWxzZQorICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMigwKSwgc2NyYXRjaFJlZyk7CisjZW5kaWYKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBw
dXRSZXN1bHQgPSBtX2ppdC5qdW1wKCk7CisgICAgCisgICAgaXNJbnN0YW5jZS5saW5rKCZtX2pp
dCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgc2NyYXRjaFJl
Zyk7CisjZWxzZQorICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigx
KSwgc2NyYXRjaFJlZyk7CisjZW5kaWYKKyAgICAKKyAgICBwdXRSZXN1bHQubGluaygmbV9qaXQp
OworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlJiBub2Rl
KQoreworICAgIGlmICghIShhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkgJiB+UHJlZGlj
dENlbGwpICYmICEhKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUgJiB+UHJl
ZGljdENlbGwpKSB7CisgICAgICAgIC8vIEl0IG1pZ2h0IG5vdCBiZSBhIGNlbGwuIFNwZWN1bGF0
ZSBsZXNzIGFnZ3Jlc3NpdmVseS4KKyAgICAgICAgCisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZh
bHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBw
cm90b3R5cGUodGhpcywgbm9kZS5jaGlsZDMoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOworICAgICAgICAKKyAgICAgICAgR1BSUmVnIHByb3RvdHlwZVJlZyA9IHByb3Rv
dHlwZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOwor
ICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBHUFJSZWcgdmFsdWVSZWcgPSB2
YWx1ZS5ncHIoKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNDZWxsID0gbV9qaXQu
YnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgdmFsdWVSZWcsIEdQUkluZm86OnRh
Z01hc2tSZWdpc3Rlcik7CisgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpKSwgc2NyYXRjaFJlZyk7
CisjZWxzZQorICAgICAgICBHUFJSZWcgdmFsdWVUYWdSZWcgPSB2YWx1ZS50YWdHUFIoKTsKKyAg
ICAgICAgR1BSUmVnIHZhbHVlUmVnID0gdmFsdWUucGF5bG9hZEdQUigpOworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBpc0NlbGwgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIHZhbHVlVGFnUmVnLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworICAg
ICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCksIHNjcmF0Y2hS
ZWcpOworI2VuZGlmCisKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0
Lmp1bXAoKTsKKyAgICAgICAgCisgICAgICAgIGlzQ2VsbC5saW5rKCZtX2ppdCk7CisgICAgICAg
IAorICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChub2RlLCB2YWx1ZVJlZywgcHJv
dG90eXBlUmVnLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgCisgICAgICAgIGRvbmUubGluaygmbV9q
aXQpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAganNWYWx1ZVJlc3VsdChzY3JhdGNo
UmVnLCBtX2NvbXBpbGVJbmRleCwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CisjZWxzZQorICAgICAg
ICBib29sZWFuUmVzdWx0KHNjcmF0Y2hSZWcsIG1fY29tcGlsZUluZGV4KTsKKyNlbmRpZgorICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHZhbHVl
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgIC8vIEJhc2UgdW51c2VkIHNpbmNlIHdlIHNwZWN1
bGF0ZSBkZWZhdWx0IEluc3RhbmNlT2YgYmVoYXZpb3VyIGluIENoZWNrSGFzSW5zdGFuY2UuCisg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwor
ICAgIAorICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIAorICAgIEdQUlJlZyB2
YWx1ZVJlZyA9IHZhbHVlLmdwcigpOworICAgIEdQUlJlZyBwcm90b3R5cGVSZWcgPSBwcm90b3R5
cGUuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOworICAgIAor
ICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5vZGUsIHZhbHVlUmVnLCBwcm90b3R5cGVS
ZWcsIHNjcmF0Y2hSZWcpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBqc1ZhbHVlUmVzdWx0
KHNjcmF0Y2hSZWcsIG1fY29tcGlsZUluZGV4LCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKKyNlbHNl
CisgICAgYm9vbGVhblJlc3VsdChzY3JhdGNoUmVnLCBtX2NvbXBpbGVJbmRleCk7CisjZW5kaWYK
K30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDEwMDcz
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtODg5LDYgKzg4OSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBub25TcGVj
dWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSYsIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwog
ICAgIGJvb2wgbm9uU3BlY3VsYXRpdmVTdHJpY3RFcShOb2RlJiwgYm9vbCBpbnZlcnQgPSBmYWxz
ZSk7CiAgICAgCisgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlJiwgR1BS
UmVnIHZhbHVlUmVnLCBHUFJSZWcgcHJvdG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaEFuZFJlc3Vs
dFJlZyk7CisgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZihOb2RlJik7CisgICAgCiAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MgYWRkcmVzc09mQ2FsbERhdGEoaW50IGlkeCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgKG1faml0LmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyArIGlkeCkg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKTsK
</data>
<flag name="review"
          id="114780"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>