Git Product home page Git Product logo

fixnum's Introduction

Dart CI Pub package publisher

A fixed-width 32- and 64- bit integer library for Dart.

Provides data types for signed 32- and 64-bit integers. The integer implementations in this library are designed to work identically whether executed on the Dart VM or compiled to JavaScript.

Publishing automation

For information about our publishing automation and release process, see https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.

fixnum's People

Contributors

athomas avatar bcko avatar cbracken avatar chalin avatar dependabot[bot] avatar devoncarew avatar franklinyow avatar jakemac53 avatar keertip avatar kevmoo avatar lrhn avatar mit-mit avatar munificent avatar natebosch avatar postmasters avatar pq avatar rakudrama avatar srawlins avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fixnum's Issues

Add round, floor

These would be trivial operations, but would make it easier to use these interchangeably with normal numbers.

fixnum: standardize parse methods.

<img src="https://avatars.githubusercontent.com/u/2108821?v=3" align="left" width="96" height="96"hspace="10"> Issue by rakudrama
Originally opened as dart-lang/sdk#21915


Int64.parseInt, Int64.parseRadix and Int64.parseHex should be marked as deprecated and replaced with a single Int64.parse method modeled after int.parse

   static Int64 parse(String source {int radix, Int64 onError(String source)});

This method would also handle the 0x, +0x, -0x prefixes when a radix is not specified. None of the current methods can parse these.

It might be desirable to add a way to detect overflow, perhaps another named optional argument

  Int64 onOverflow(String source, Int64 value, bool is64BitUnsigned)

value is the truncated value, is64BitUnsigned is true if the value overflowed but only set the sign bit.

pkg/fixnum: Bring API closer to int.

<img src="https://avatars.githubusercontent.com/u/2108821?v=3" align="left" width="96" height="96"hspace="10"> Issue by rakudrama
Originally opened as dart-lang/sdk#13383


Int64:

  static Int64 parseRadix(String s, int radix) {
  static Int64 parseInt(String s) => _parseRadix(s, 10);
  static Int64 parseHex(String s) => _parseRadix(s, 16);

Int32:

  static Int32 parseRadix(String s, int radix) {
  static Int32 parseInt(String s) => new Int32.fromInt(int.parse(s));
  static Int32 parseHex(String s) => parseRadix(s, 16);

int:

  external static int parse(String source,
                            { int radix,
                              int onError(String source) });

Int32/64 have toHexString().
They are inconsistent in how they handle negative values and in the case of the alphabetic characters.

Int32/64 are missing a lot of methods defined on num.
Most are probably not that interesting (isNaN, isInfinite, roundToDouble() ...)

This should be implemented:

  double toDouble(); // I have seen a workaround implemented as double.parse(thing64.toString())

This might be useful:

  IntXX clamp(lowerLimit, upperLimit);

These have been added to int and would make sense on IntXX:

  int bitLength();
  IntXX toSigned(int width);
  IntXX toUnsigned(int width);

int is missing bitCount() (issue dart-lang/sdk#5798).

BigInt performance comparison

I am wondering: if I know that I don't need more than 64-bit integers when running on web, should I go for BigInt or for fixnum for best performance?

On native, I will simply use int (as I said, I know I don't need more than 64-bit and on native, int is already 64-bit). But on web, I need to use one of BigInt and fixnum. It would be nice to have a performance comparison between the two.

Provide simple conversions between Int64 and BigInt.

There is no easy way to convert between Int64 and BigInt, other than via a String.

Example:

BigInt value = ...
Int64 i64 = new Int64.fromBigInt(value);
BigInt b = i64.toBigInt();
assert(b == value.toSigned(64));

Maybe Int64.fromBigInt should throw on out-of-range values, since the caller can truncate with

new Int64.fromBigInt(value.toSigned(64));

fixnum: add constant constructor for Int64 that can express all values in dart2js

<img src="https://avatars.githubusercontent.com/u/2108821?v=3" align="left" width="96" height="96"hspace="10"> Issue by rakudrama
Originally opened as dart-lang/sdk#21916


It would be convenient for some codegen scenarios to be able to generate a constant Int64 value. This can't be Int64([int n=0]) since 'int' values are basically restricted to safe double integers, i.e. 53 bit values.

I think it might be possible to make the Int64.fromInts(int top, int bottom)
constructor do all the arithmetic in a way compatible with constant constructors and dart2js arithmetic.
A Int64 value N could be generated as

    const Int64.fromInts(A, B)

where

    A = (N >> 32).toInt()
    B = N.toUnsigned(32).toInt()

For consistency, Int32 should have a public const constructor, probably Int32([int n=0]);

Int64.parseInt('') throws RangeError instead of FormatException

Int64.parseInt('foo') throws FormatException.
int.parse('') throws FormatException.
but for some reason, Int64.parseInt('') throws RangeError.
i would expect it to throw FormatException, like in the other cases.

i have a feeling that parseInt has a bug whereby it's trying to read the 0th character of the input string. this causes bugs in clients because they may attempt to catch FormatException and when the input string is empty, the catch won't catch. in fact, i was able to find many such bugs in google's codebase and it's burning me right now.

Question: How are 64-bit integers supported on 32-bit platforms?

Obviously, when compiled to JS, there is no native ability to store and manipulate 64 bit integers. The README notes that integer implementations work the same across JS and VM. I don't really have the time to deep dive into the code to see how this works, so I was wondering if you guys could summarize for me.

support unsigned 64 bit integers

The protobuf library stores unsigned 64-bit integers in an Int64 instance. This preserves the value, but it's confusing because methods like isNegative() return the wrong thing. It would be nice to have a separate class to handle unsigned 64-bit integers.

Make `IntX` extend `int`

Is it possible to declare IntX extends int?

I am writing a small utility library that deals with integers of various bitwidths. To make this library agnostic on JavaScript, I plan to declare my class a generic one. But since IntX and int aren't related, this generic parameter is quite useless to static analysis.

It would be useful to be able to do class Stuff<T extends int>.

Int32 operators require casts and are inconsistent with Int64

Various Int32 operators (operator +, operator -, operator *) are overridden and return Int32 objects yet are declared to return IntX. Simple operations such as:

var x = Int32.ONE;
x = x + Int32.ONE; // Error: A value of type 'IntX' can't be assigned to a variable of type 'Int32'.

therefore will fail and surprisingly will require an as Int32 cast.

Note that Int64 does not have this problem; all of its operators are declared to return Int64.

Add toDoubleUnsigned() method

There already are toStringUnsigned() and shiftRightUnsigned() methods, but no toDoubleUnsigned() method.

Int64(-1).toDouble() //  -1.0
Int64(-1).toDoubleUnsigned() // 1.8446744073709552E+19

Make the native `Int64` class an extension type

In #117 we make Int64 class a wrapper around int on platforms that support 64-bit ints (VM, AOT, Wasm).

With extension classes we should also make the new wrapper class an extension class to eliminate the indirection to the actual int value.

This will be a breaking change as this new native Int64 extension class won't have a runtime type.

CI results don't match local result for `dart analyze`

When I use the analyzer locally I see some warnings, however CI is passing and the analyzer output is empty.

https://github.com/dart-lang/fixnum/runs/3152559301?check_suite_focus=true

On this run I see:

Dart SDK version: 2.14.0-341.0.dev (dev) (Wed Jul 21 11:34:27 2021 -0700) on "linux_x64"

Run dart analyze --fatal-infos
Analyzing fixnum...
No issues found!

However locally:

Dart SDK version: 2.14.0-341.0.dev (dev) (Wed Jul 21 11:34:27 2021 -0700) on "linux_x64"

dart analyze --fatal-infos
Analyzing fixnum...                    0.7s

   info • lib/src/int32.dart:389:18 • 'List' is deprecated and shouldn't be used. Use a list literal, [], or the
          List.filled constructor instead. Try replacing the use of the deprecated member with the replacement. •
          deprecated_member_use
   info • lib/src/int64.dart:634:24 • 'List' is deprecated and shouldn't be used. Use a list literal, [], or the
          List.filled constructor instead. Try replacing the use of the deprecated member with the replacement. •
          deprecated_member_use
warning • pubspec.yaml:5:1 • The 'author' field is no longer used and can be removed. Try removing the field. •
          deprecated_field

3 issues found.

cc @kevmoo @athomas

Better representation of Int64 on platforms that support unboxed int64 integers

The current implementation of Int64 stores the underlying integer as 3 integer fields:

class Int64 implements IntX {
  // A 64-bit integer is represented internally as three non-negative
  // integers, storing the 22 low, 22 middle, and 20 high bits of the
  // 64-bit value.

  final int _l, _m, _h;
  ...
}

Operations to/from a Dart int as well as arithmetic/bitwise operations will be slow due to need to operate on the combination of three fields.

On platforms such as the Dart VM or Dart2WasmGC we have support for unboxed int64 values where this overhead can be entirely avoided.

There's two improvements

  • Use e.g. conditional imports to select better representation for Int64 on VM / Dart2WasmGC than for Dart2Js
  • Possibly avoid the creation of Int64 boxes entirely by having mechanism to pass unboxed values around

/cc @askeksa-google (since we just talked about it), @osa1 , @mraleph

Int64 as a map key on web

Hi,

I ran into weird behaviour of Int64 when used as a map key and built for web with latest Flutter.

Here is a short snippet to reproduce:

class Constants {
  static Int64 foo = Int64(1 << 4);
  static Int64 bar = Int64(1 << 39);
  static Int64 baz = Int64(1 << 35);
}

Map<Int64, String> knownConstants = {
  Constants.foo: "foo",
  Constants.bar: "bar",
  Constants.baz: "baz",
};

On desktop/mobile platforms this works fine. I.e. printing values:

    for (var key in knownConstants.keys) {
      print('Key: $key, Value: ${knownConstants[key]}');
    }
    print('Total number of known permissions: ${knownConstants.length}');

results in this (macos):

Key: 16, Value: foo
Key: 549755813888, Value: bar
Key: 34359738368, Value: baz
Total number of known permissions: 3

and this on web:

Key: 16, Value: foo
Key: 0, Value: baz
Total number of known permissions: 2

It's clear that it's somehow got truncated to 32 bits internally, but I don't get why.

Is it some known limitation of map keys and Int64 for web? If so, what's my best option with web?

Overflow behavior isn't documented

The documentation for Int32 and Int64 state:

Arithmetic operations may overflow in order to maintain this range.

but doesn't explain what the overflow behavior is. Does it wrap around? Is it clamped? Is it like signed integer "overflow" in C where it's undefined behavior?

In contrast, the documentation for int states:

The default implementation of int is 64-bit two's complement integers with operations that wrap to that range on overflow.

publish a new version of fixnum w/ the 2.19 min

We want to publish a new version of fixnum w/ the new sdk min. of 2.19 (see #99). We have other work that we want to land in a timely manner (#100); we'll plan to do the (minor) work to publish a 2.19 version in a branch (updating from 1.1.0-dev to 1.1.0).

Max value to int is min value on web

I tried the converting Int64.MAX_VALUE to int and back to Int64 on web and I get the min value instead:

    print(Int64.MAX_VALUE.toInt()); // 9223372036854776000
    print(Int64(Int64.MAX_VALUE.toInt())); // -9223372036854775808
    print(Int64(Int64.MAX_VALUE.toInt()).isMaxValue); // false
    print(Int64(Int64.MAX_VALUE.toInt()).isNegative); // true
    print(Int64(Int64.MAX_VALUE.toInt()).isMinValue); // true

Is this the expected behavior ? This works thought:

    print(Int64.parseInt(Int64.MAX_VALUE.toString())); // 9223372036854775807
    print(Int64.parseInt(Int64.MAX_VALUE.toString()).isMaxValue); // true

Incorrect int64 conversion when compiled to JavaScript?

Hi, I'm new to Dart, so my apologies if I've missed something obvious. It seems that either the Dart compiler or the fixnum package gets the conversion wrong when compiling to JavaScript.

For example, the following code:

import 'package:fixnum/fixnum.dart' as fixnum;

main() {
  var x = new fixnum.Int64(9223372036854775807);
  print(x);
  print(x + 1);
}

Outputs correctly when run with dart:

9223372036854775807
-9223372036854775808

But when running with dart2js, it outputs:

-9223372036854775808
-9223372036854775807

Is this expected behaviour?

Shifting left width bits should give 0

Currently, shifting left the whole bitwidth returns the number itself.

t.dart

import 'package:fixnum/fixnum.dart';

main() {
	print(3 << 63);
	print(3 << 64);
	print(new Int64(3) << 63);
	print(new Int64(3) << 64);
}
dart t.dart
27670116110564327424
55340232221128654848
-9223372036854775808
3

In C, it gives 0.

t.c

#include <stdio.h>
void main() {
  printf("%lld\n", 3LL << 63);
  printf("%lld\n", 3LL << 64);
}
./t
-9223372036854775808
0

Remove operator== considering Int64 == core.int

We have a work-around in place for the linter, but this seems not worth it at all:

  • It makes comparisons brittle (int640 == int0) but (int0 != int640).
  • It only seems useful for tests (and we could just create a custom Matcher)
  • It is confusing, I don't know of any other class that does this in the Dart ecosystem

/cc @davidmorgan

Use Typed-Data lists instead of generic lists for byte-conversion

You provide little endian and big endian conversion to Int64. All the integers in the bytes parameter should be 8-bit bytes. These integers thus have a fixed range of 0 <= x <= 256. Because of this, it makes more sense to use Uint8List (from dart:typed_data) than the generic List<int>. Using Uint8List essentially avoids a class of bugs where a list of integers is incorrectly passed to a parameter that really wants a list of bytes.

Additionally, you provide conversion back to little endian, where it makes even more sense to return a Uint8List. The arguments from the previous section about integer length and specificity still stand. In this case, Uint8List has the added benefit of providing byte-level manipulation through ByteBuffer, which is a getter of Uint8List.

There is minimal overhead from making this change; since Uint8List extends List<int>, it should break a small percentage of existing code. I'll submit a PR for the change; you can decide whether this justification is valid enough to merge it.

Int64 is broken on web

The README states:

The integer implementations in this library are designed to work identically whether executed on the Dart VM or compiled to JavaScript.

However, this is not true.

Broken behavior

Running the following code delivers different (broken on web) results depending on the platform:

  • Compiled to JS (ddc):
seed: 42, -7964744663188995840, 4825563652912808192, -4213878327193665280, 9052670643877150976, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784, -2476544402191318784

As you can see, after the fifth iteration, every value is -2476544402191318784 on web, which is definitely broken.

  • Running in Dart VM:
seed: 42, -7964744663189004623, 4159066171780167020, 7615522811268512075, -6817952583752890242, -5900231541219507851, 483838003013946848, 401415969518064047, 2812299150962093586, 8743034423534012537, 457466634992928148, 6580914716785944659, -8690275829613640474, -1467064328859764803, 6023180652035281032, -3765296977255243465, 7210325037408772346, -3904591167265762495, 1239519823916966588, 7779601134568923227, -5395967590630222258, 6327454482708635397, 7923181361769377840, 7605993102115670463, 6356963020929956066, 7176860805218918153, -8764208308821316380, -8609149943830544029, 8939747846471474358, 7663859345433597773, -7049695435421496104, -1229362004210865337, -5371281135019469366, 7617503730318953425, -6559856107857116148, 489625813388766059, -6790485330288035810, 3323080905636200597, 6582362000670180992, -1233301493461228081, -6481956517234567246, 2809635275842615705, -683909402087274444, -2520359841861108109, -1165590696712157050, 7177225625430342365, -3034917029203837656, 7261328014321736023, 411127563640200858, 4021369823019239521, 2263208613658073436, -9221518137889908101, 8347090332326178286, 2868458037254596133, -9038179136598306608, 613587387335812575, 8004133899158178434, 5847059326881044521, -4590679781899364476, 875668417553899395, 4897482736489597014, 8262633990230614637, 29580775046259064, -2685345720148432025, -4508668287545050262, 7689279176753629425, 3352980940366930604, -241598063408075381, -1142391750004049986, 4817533670189387701, 3815896001190580000, -2519005709967668753, -2379235375923654318, 418072880156719801, -2231834143389672748, 7371249961700484243, 6175180461606149158, 1815321330950786557, -6321248975091975736, 6743829002002030967, -500752999117607878, -8794807949515289215, 8255378098965307388, -7441055862016056165, 6572446884492514702, -4807434884413571771, -7422631942466469520, -9104706575156522497, -2078618785019728862, -5445261527062093495, -6622559996364500444, -1830374304332067421, -6313355991298178058, 1899707636773928333, -1796462777971259880, 233931789740751751, 2170390895065297162, -2672918326426544623, 6122450352817213772, -4960642816560873557, 4293895218951161694, 69684928789835477, -3041310242238715968, -2353236044858573297, 6771306663650122482, -7857723269696517159, 5664308454024953204, 9041749647149816499, 7776291911875936198, -6499279143028821731, 877411616330532456, -1534866720222217833, -7729043526851671590, 6149270096138117793, -6122384297437628772, -6253827678129733957, -4583668552718725842, -821431661757537179, 7573113630426448400, -1308647104118551009, -3534481783135674942, -3927775197285139863, 8397152793400532164, -5962881732715869245, 2130009668967485334, 2775542104504592557, -6603887371489822024, 4472346036184030119, -1218377040454535510, 6294741513602364209, -9161416731109748756, -5417398228232019509, -8409195176025561346, 3323219670661897717, -6988415598391930784, -2215099340221332945, -6286142976979307374, 523197234807106809, -4120173172225888236, 690733890785075411, 1294392888667222886, 8114420497813808189, 1729639283577594632, 4189723101239091639, -245468286688249990, -8806000585641211967, -1448049963355939524, -8538573877034800933, -4814103497742002994, 3938511730377857925, 7065002561838764720, -4766032341976688065, -7540893734487842974, 7448342016360096649, 361629384802318180, -6104406580396303901, -7262043238912791754, 6523810375948772301, -2320397344890912936, -3718437674003559481, -7326501105149883318, -8696214883703840687, -8891232969274925428, -4831562846733364245, 2441982204537542302, -1054246767233671915, 5420194561786562816, 7127782792074876495, 2053509909493866034, -6797207934076133863, -8146332928414715212, 6000195208730277619, 703568177370756870, 5778793807207458653, -1920286759693889624, 9210334692063369687, -320736157328050918, -2103322956123603743, -2906616116533816356, -8960585568706714885, 513239746065706094, -8554498186522828123, -1005612274785537200, 7498816518273480287, 4341480500249800962, 265394662233906345, 1188043304384848388, -1250805152790988797, -3547588348256463146, -2067271512482746643, 8944909847775253496, -7584872964184175641, -9012380036988620310, 6924813914611113329, 8518265403674557740, -1953903656808786421, 9211635854225970750, 5965597243453877301, -1298648636045094496, 172326438289767023, -8630027549924911150, 2010228211376119609, 2184953223016285524, -7692048228823327469, -2435150315004622170, -8561050699177674115, -1619876189564285880, -5241680039959027209, -3189620066162539846, -7683332447306071551, -269526260064249220, -6405725018137121509, 7210785632450204686, 1103626573364476357, -4931388877841800208, 8424746125653058175, -4205561521828031838, -2094685965456988727, -8463153496962605916, 1812860229320255011, 7656600678528553590, 6795671642269338125, 2727427893689874584, -2465231028111270905, 1287400967384262538, -6386846956633347439, 2424060895735409612, 1337667655468165163, 1901673957405910494, 4702870090058206037, -5041215729789425088, 3911925110615223951, -4547691256670051982, 391051201640591449, -1188596795527600140, -920621091055054029, -8873026597536305594, -5777345860935705187, -3466792126834599704, -4545352244602996201, -1459663664708788134, -5277074947082447071, 7544753756051960092, 4046472552733034299, -680275258577368146, -42020858052468507, -5817671267122682736, -2896163747890585953, -5160384502602742718, 4882690510527315689, -6786171291443812540, -1437813042570550205, 8311152794380312086, -673057630223715027, -6085847903368041160, -2904371314765382617, -7615421169552626390, 440268218778224561, -1045017511291770260, 5273909571686664779, -8252757648665737858, 4440172267897092725, -6692937877692902688, -4874697233766976849, 3498100846455192338, 3260767152019935609, 2077424066909149844, 8393295795872405843, -2392946436309769754, -6728312400707809091, -1668322685145074296, 3119118403159515703, -1347678770157351430, -7713857823440602047, 1555159408199767996, 6851086799834870107, -7152533821051858098, 1213867403592013829, 7290490803988346160, -5464596896260183361, 1395915130150471138, 5754058367893432329, 4731413745796366820, 6489233458592264803, -2400922375916029514, 5950813407571521613, 5507327031486165464, 7717396058822667335, 325960964800135882, -4389958678789393199, 7713843442566936844, 8856488452577426539, -2282534182555421410, 5940316018241599893, -6671564012010288256, -9149603445035514161, -4012838834796419918, -3526610641802935655, -7048500630455902924, -8807164644179284109, 8465375286526223750, -6576053452722564131, -7257636722686156248, -4449128607475475881, 3951275743764056986, -8274147113447755423, 6421904004554591836, 2962891126893587323, 4501672290941283054, 8484715928092614437, 1364123986032350672, 58890667001431775, -8454550751419426942, -5105990877172915927, -7440733472902959996, -2091858350759653245, -3637604538107910826, 7763795866766949229, -3126009872632510856, 1413977497658600551, -5238553738389002134, 2259387297670853105, 4166493914770839468, -5138185915282489717, -1875003438210665282, -6322829666114729803, -4589092581473135584, 2828025472403483375, -4530833201991115182, -1963047515741781063, 364197591800836052, -8346580879159306861, -6176516272347580122, -8177883831110621443, 4742898378585038536, -1608868036347731337, 7979454519230323002, -3036299054581385599, -3552178667494484740, -313740106967255653, 2897643723418964622, -5569295197033974203, 2311601360216671856, -1293331639167651073, -8365413645670532830, 2770179469701638729, -9139387167914432732, 1245884922202324643, 7808943530237862134, -1344814782162610547, -6199455382712210664, -744671196590769017, 1548222656797924874, 6076854615552655121, 5064349019354777164, -5484889356604239701, -3188336094840830882, -3605248825216817195, -2528936008792757056, -2745795438396891377, 4412103800424982514, -3923305320578558759, 4266744201879261812, 4095697296724118451, 571498839471299782, 1970768821425588765, 8673119082506906472, -3315987697329833321, -7767621516075370790, 2664529359512374177, -1661809592638968932, -4035442425427046469, 8180516286252927534, -317935904328884891, -7148594839463917808, -8871032122311594209, 871275113008769730, -1237247414948871319, -7054711426055736892, 2973272040054471875, -4966922122368521066, 5982124497318871469, -2906486437541699656, 4737303152563281063, 6487979972652999594, 6222142968496364593, 8244335732384285932, -4392447445337394485, -2785153727568567298, -5356098154103810315, -271039341052603040, -5575435134669413585, 2396302902472278418, 5185560467615921657, 1120478382511523092, -7770829367957401133, 9148413518607290470, -8354116476725953219, 1841216903953008648, -4589037679791299913, 1658150534469739642, -3145137000169819967, -3120041403770777028, -7144573842704516645, -1191658956501626418, 3884010590393177221, -4432761809072449616, -6306029913657869505, 3779635710786497634, 2249125386617891977, -7347966998996824988, 7969323668365806307, 8041656324305160246, -4324294894075036467, -5628590422514211752, 4735040661122862279, -5000698334051518134, -4348407630388147887, 6206330605436146572, -423698884760345365, -2931484660655598690, 7942705851475105301, -3998211023820304896, -4317074869966293169, 6990610907584195378, 4069036864573974297, 4895023677028255668, 2051730055541516275, 1091053326950814726, 2671770143748014173, 520972418177168552, -1330836791464371497, 5524788626147746330, -450674991350159903, 7116664722134304988, -6904239516715404293, 6061052929709025646, 6434333232104856485, 2964136206208792656, 8409650163183572831, -5108142757111890430, 7063630458329146793, 2898144215541118724, -2556349728737367805, -5875961786537184298, -8804833420508723219, -3019223796749731592, -4282537224900260633, -4203634214132048150, -3780135103614417295, -5416259098475515348, 7208970838675924747, 4749588240576762686, -3869182100916738763, 545475231831299744, -5208585874970190993, -9112012477114276654, 195229629724043321, 6206464370713614932, -2637311280423006701, -5097758566895851610, -9200915662690282627, 6058665613509882184, -1585074408053857545, 482285858396843962, -2551845792078943487, 6693926381324898172, 803842175776800283, -2444531930032254706, -7002005683696618811, 9180074074093398256, -1783314651839609985, -459418543321653342, 2089830083240603337, 4825476950598447524, -4463284561325009117, 8968833197466103670, -2104491835714313459, 1721674715041947032, 1709475597227187463, 1058613079929246858, 6756496057465983889, 7249303014621454540, 738329858282912043, -3487131091526737186, 7904055065406850133, 1757289569690070848, -1039721299758248049, 3964284959735393906, -6959867810883192487, 7288800356964056308, -389596144723540941, -8230235600573445306, 4223083481524074141, 9218569637894995432, -131859834028098793, 1944131023355972954, 5163038478793080865, -390013680768686564, 8028650379135047739, 6604278392189700270, -4025597762606884379, 6248434149870610832, -3249498818765504609, 53357741244387650, -768040634561738775, -7521184554566992828, 7681763385301062979, -7541524176890217706, -9219530910511149523, 6156995998617440824, 6263137919519980839, 2006920267438938666, -7594130395815432015, -87585000053055636, 3801995983096503115, -4338886849940929922, 2456670260331131765, -6305926106382854176, 5690229375313892271, -3859643396905596910, 2699899868122733177, 6595011817889230740, 2829615366839962195, 5071489610703240934, 3815851520180775357, 3708255031100299912, -6185574410037730505, 6672114947118873338, 7578142453697209665, 1783502093945474236, 6611734468807623259, 5116392279905800270, -4634036587850297083, -574137759302288848, 5676080259190115263, 999999418623955682, -1811376482043137783, 2926832215989278436, -3367845568147791005, -3796036692380543306, 6881605962071853389, 4176440248956950232, -7625806347187147449, 445404605367988170, 2320240218484973009, -1082226776193667572, 3162041024980831595, 8606201779683045918, -2538313821741337963, -8977396945569197952, -2965544699788875825, 6368349088328561074, 8706626309686889369, -1268547629495061964, -434883489728339853, 1239144998652576390, 8211276025928346845, 4846931064106174248, 3529451602567060311, -3432046980920526694, 5192662002836265569, 7427430633964012380, 7207779370829626491, 7032692958956234734, -1460271991172523995, 4100503348528454352, 2708681315791529951, -8634607642106665854, 3954922162440448553, -1953090523218099836, 6015058516142883203, -1892060360551742890, 3058113587547788397, -6940409405953021064, 4859033063832710503, 6509623086824019306, 2733740284221692657, 7257993251535604908, -4431338858128846965, 3659786418454688190, -8741750742303325771, -5642379259927635680, 1520354967920905199, -64471035468502190, 6784176927441407161, 611474665314403540, -7039869878170827117, 1036153642835990054, -8631943321583058947, -4789199059341966392, 441269332553229175, -3016057804589267398, 5286307755941748609, -1377419384772834820, -7003417375663257957, 8549328784440266638, -4208858802729046203, -1440988392607249552, 4284570999221457919, 1161702557238068770, -4040285357458984119, 5437703187980975140, 7920160111356555171, 966559120470621686, -2196350653922283635, -8188647450051833832, 1718863474965396871, -8841402937155138806, 8875731703767246865, -914292749630702772, 1056699466480443819, 8954301626536460638, 6988211914294288597, 1151565682648199616, 6655369577675030543, -5201170080977586958, 170028203612610009, -2361383489049270412, 2071175349396094131, 8746088746928077254, -5575371615202172131, 6977510195999936616, -106094819855828073, -8317922963938237478, -3100901046622325599, 1631365652008460444, -2793756923251105605, -3645822916273092818, -6959915700603726235, -3795957233111053296, 8257085332811141151, -2725919602662606910, -5800273638725727127, 2955622068177110724, -4274899835436503613, -7852607266833069674, -5824017429745493331, -4739140157717412680, 779144873755450791, 8475136680498958506, -5010692916831664847, 4221036670960040428, -870143039087246389, -5607668117743738626, -4029770978305765387, 1889787854640765536, -3752003503789931473, -2598093571484479854, -1039658808655511815, 4011684353108564500, -1253720473690815789, -8009909049951326874, -5200542503720004035, 1558857863267380488, 5783865412338426807, -2106254544967822982, -2501281606574270015, -1405486177875409092, 1143777844591348443, 6161150208799559374, -387077424302682747, -7086087876450493264, 5325741382815325247, -7945518351175861918, 7750470737573033353, 1500796844437430628, 1024120763698199523, 3824117105573733686, 6475102067899979213, 1363151909861411160, -927967395848254009, 1664506345710986826, 7422623161367229009, 2783448651679385740, -9113471366074780181, 1586996607097147550, 2276916418920533781, -2728273610426756352, -5056121715157264305, 4368702010325825586, -8862261334232502247, 5185531788234628276, -1527560076806825741, 666306638708388102, 3609995181465573725, -2327181433365816920, -5299690963151823913, -7467352466157416678, -2198257528506691871, 2414457346171174364, 3009776495436678395, -5138001431545797010, 7608997665382225061, -2584482211751838384, 4801811771525953631, -5077842786135291134, -5665646227523064151, -8550698087651406844, -1251650158167549437, 6629796564612485334, -5501247741360889619, -5994997683619537416, -2517005435925754393, -1435850200893518870, 9094063549538905969, 2576533001776523052, -6589896116741081077, 7015731016955760702, -2743242597265596875, -4953032665623192672, 233149337508133999, 4027821325757854162, -296243506003611335, 2988978155105726292, 2316393975370940179, 3426712128936723622, 3575065483594263677, 3996562553714939464, 8728557369860924407, -2771572670821049158, -696734948768639999, 6514665163221763196, -9165404347778478309, 4516670259663228430, -5820129674475328571, 4593521967172087280, 876238682287334527, -3225404315076383582, -8362085633253328951, 5487854980402939556, 7434210058550675491, -247756971401032586, 7284472781682441229, -377087831165287784, -7623534711434535417, 4938171426066448778, 7732768712135736465, 7717406770399204812, 5510612866475444779, -8246357979323834402, -3013030876248212139, 8819969274709423168, -4057998985443512177, 6639861134284503922, -4655806060848709031, -652052734489030156, -2875578417619782349, -2702264264987891642, -4404183891367604323, -2964739155488513304, -6683286680457970665, 3613972220566387290, 8487206860045117729, 6490091389381597980, 8151490751330216251, -3393756484967578194, -6367926174683819291, 7088957054302711440, -8661744168736759649, -8229357069226189246, 6645028259838873833, 5797766150820254020, 3752657710683588163, -7533001437384812522, -7979153550668372179, -6818677798610995400, -8502276084763869657, 8130913451938039594, -886137185773692495, 4305994880631346284, -2386441930548106165, -6274819907729195138, -5202355365293626251, 8737377264866991328, 3881725794678879407, -1160737068571912942, -4741855620611464327, 8727054905536234644, -4375351864076928173, -2136775805371032602, -7811346828702235971, -4579937653011251320, 6550404698759226423, 4632378795994966010, 3028563979638885953, -5690957233900518980, -624873607707389093, 7887861261785075022, 9004530892068555269, 118186951936687920, -1706715682173686593, -3538113391153848350, 5299194504627223049, 6186521751242402788, 5273315921954739299, 3962660888237126582, 1265701923619005005, 1718811401365126104, -4258298597688250809, -3829651737269625654, 8518772838040389329, 1253357762052956940, -5393429483383579029, 7277895890514898718, 7141840549001227157, 8249098109740832128, 5975108056378345679, 1799242605239090866, 6358034759493670041, -6071364487440120012, 3986113517549932915, 1168943095456653190, -4582984178394577443, -6724019934026568664, 1908276525336190039, -2632336208759954022, 2050165742188839777, 2069715214460287068, 6018599960828595579, -461701033345538834, -4312214396225973979, 8464317511240048592, -8984826846068930337, -6808027761888087678, -3644486976654724311, 4419714948549039748, -7794525908028640637, 6065620073157484374, 7464802801749814637, -8753338062800695176, -3660287363087683993, -8246589914218216854, -4857396926787894287, -3992345952800046676, 6733780024377778315, 8870942546006093502, 8254392326996589237, -2482241166515315168, 534801409948806383, 7178285193357178962, -31243270510340679, 7792241537744312788, 7753417080922126227, 5715569179075359526, -4166060431577753347, -5426504123162777400, 8317083084257780855, 6019659447503893306, -6508417898253694847, -981790175670550788, -5363151237656242277, -6540336183128879986, 6131488697987770437, -8110888525575237520, 6682060939565643007, -1695783572785933534, 4710247020206652489, 7269335056814739748, 4543993705878642851, 3921439449095592694, 298723054434584717, -4796524436072762088, -292710241939784057, 3501825494305257482, -6780672707710234351, 2340072270561456204, 8529388887878808235, 1532352485034835550, 4640374256315210197, 4981502130566903488, 4585232281625616655, 1089323932726231538, 9191271564702738137, 5285798289721605236, -3955024689390637645, 7176674938277385926, -6775195127784702947, -4263734811795671704, 984062747245608087, -645772927232782118, -1160807069535740511, -4575646890841680484, 2669524229160661435, -952948078098430930, 749847081938931557, 6568170563055030544, 520307183623205151, 2978033910771369154, -5602405891909233303, 5888809808276364228, -1359221939537404221, -6200269273073899882, 2468426004332655533, 390383846279604664, 1854084493859217063, 6510557654560767402, -749322757393224143, 2903704216794148588, 4246826956678911179, 1958070276543225342, 660663343887927541, 7336487031972323168, -8168389252388690641, -3825193998191092846, -4048924289549940743, -5347934578505404652, -6375257390585564205, -9021875384562890138, 6522958344089939773, 7854388222894576136, -4539435168235051849, 4495642417775165050, -3394253270419799359, -4494965180693726148, 2722838338569493467, -652058727911142450, 944550655538857605, 1956311548084429232, 2742876034529541439, -2785479237175998878, -5136113197009650039, -8615165161069316508, -5778621292555014941, -3281335143666040266, 3871273886100975309, 1789130047310966360, 4474858828382719687, 8672588629670138698, 5086252416755112785, -1792747396060185204, 3670365408530597611, -7785877127420490338, -5541832963824318443, 2194225072467728384, -8762253857937786545, 8390050788341187890, 2631590785826830617, -4547734020984671820, 4038158361757305331, -1882541847401722362, 9160027662338290269, 4290413254614400680, -1149285472927818537, -4151935294515053542, -5355717209074714655, -3914022872899620132, 578881544036472315, -8762147913536789650, -1689882834729251419, 7006683809209877072, -5772956385973692065, 5404069896411158530, -5587832692619692119, -6243257731279511292, -77290291745535229, 7540283484817829334, -3701192844066407955, -4854251107208969480, 5323084512346459879, -6106340389088921366, -6469660492500543375, -1532441707227112404, -452245190362642165, 4514411690272345406, -1205359745645652171, 1041982700361031840, -2818414744502821521, -1514042783940526382, -423554005324154311, 517552398204961876, -1962255695242825709, -4455157488669187674, -7544366719590316675, 1940984856145017672, -5309400580981250825, -5644479307914704454, 5579035977206988033, 513269393776146812, 7027388735745187867, -4071784138727175410, 6593899341329802437, 4914424257910780656, 243408578351531391, -5735171444833879646, 8378406898237194441, -4689395216744997980, -8982254605442205405, -2691943195718653578, -4342258062366075635, 4442925662858487704, -3488566828674687225, -1107281575111184758, -618292129870666351, 7665073828681452236, -6054664914846475477, 1504142453490556126, -5659541968058698155, 3587023563408292160, 6402307180218831247, 3780446852550674546, 7383889080916069209, -5926713186508478732, 1269630878908950067, 1363799895325836614, 1110626465994942621, 6765273735862290408, 411470931394755863, 1607859015480207194, -5310241178357050847, 4589822982239113244, -2660432649506227653, 23483598392476334, -5517333372458988571, 8663255525568000912, -1027222989516930657, -7218465716645057726, 7601562373910157801, 2523253408352986692, 4764644957732812611, -8027484142382123754, -3620276378886275027, -9142124008928322504, -2948421428085326041, 5930755987169719338, 159969735494795953, 5261349751896525164, 5408813773435731275, -7209003685476778882, 7172875326439892341, -2494171083956739616, 1358691464978929071, -954884856605924846, -7641103828850905991, 424868284451264916, -1010428152211805101, 3815545009532483814, -2431865839898977347, -8040777081655516024, 8760586428328404279, -3920081387093912326, 2478113451972278081, 2338656247999493820, 5512224595002991707, 8795504569829624398, 8578293744783917829, 8254922135682253872, 1484893869608242623, -234389324855497502, 1222000468817183497, 8604404018792235236, -8465771055938353821, -19567881747476298, -8217484216754963635, 7122069747784474840, -6654237167584989369, 6918713679755610570, 5209207105620176849, -9064524844087977972, 4827709212485054315, -5006030062088016866, -4452681299621763947, 3642269976983624320, -459802974515074609, -8139913652999369806, 2825320244178361753, -2540166458120922060, 910821935866790515, -8100688155887387514, -1138248611612811555, -8503819887762730712, 8061847590619405655, 2996675244266754714, 4579595561731697761, -4069806108272923300, 1069318462359232123, -865875608446557714, 4462489814562671141, -4308875302588177200, 1696943680058567135, -3635765965212647806, -1970618108484174807, -1961988648290456700, -48881050260020349, 4591407669485272150, -1833337783663065491, -4138450542835288712, 9110541590167875431, 6167017896681189226, 8893694228274998513, 7762575179519276716, 4476515623095824779, 4142656964649348030, -553548213908261963, 8230060032830104352, 203942692218457583, -8828601351094450862, -6605329587625763143, -9088022745872929068, 994057763843385491, 6860449080909697062, 6098111165458952701, 4030586988964597192, -2070023097083697801, 8158377311335407674, 2398351644070621569, -2484513824834341892, 8891617179577100443, 7056566959876245902, -3838358217143279291, 8839853278697919856, 1124413250939672063, 8830738460098371618, -802319622197541559, 3097041785228076580, 3061792191183032739, 9173814143174244342, -7220441862545989235, 977989103033342488, -9156786165623406713, 930614705628620042, 8862367459119299089, -5360179335631903412, -8070188864702577749, 2928784182434593630, 6270365600668472021, -8269038766517994560, 1437675227248509455, -2245146660804489486, -1955757426814341159, 3982548206107464052, -5979160971836875085, 3387837981260067782, 4208504758023935261, 3644147928968026728, -8422459277625393769, -5700092689012097574, -25438371137304927, 7194445792797313692, -4906132310666607941, -7853416571755151058, -3016204011757582235, -7410058273379723760, -8266060981038476769, -9149960974550232638, -2575115536602571159, 334423310542549188, 4617500409754210243, -116971175390559338, 920745349433871533, -8337802162896318792, 8489693199960711079, 4069492291199625898, -2177123075437291727, 3546735750904996844, -4670074607757974069, 1190536123482528510, -1109199026898894347, -2210459358365555616, -4561005831267465681, 4259553660492392594, 1715355273471856889, 302098390491923476, -5506776031949019949, -6288828409314236570, -513645167918544835, 7695175838422841096, -1101439252464884297, -5562414157052679302, -3248957768053363775, -3741904324214607556, 6838072335288724699, -2395233103949510450, 8127978497137803141, -6950972251292375376, -4033787444960207297, -2779748585220123806, 3341573887405115273, -646035564784219292, 863813780659674595, 2080255319126826806, -8980491780453070899, 2852063043455161176, 2344591284743540679, 6925823798495182922, 8204681854951146577, 2842030738205258380, 1428145318769907691, 3184416884704676510, 7250742916667654421, 5030781055970761984, -6974500980366812593, 9023562367110386226, 4723282726284427801, -3759190483575028044, -7676701919948424461, 1906611558637726470, -5577010363976823971, 1809743468809020328, 8309476137187466711, -2340520026033673958, -6374001929797000991, -270324391358273572, -7995333612059302149, 1735957986544427118, 8842174268235007653, -7487446078424627376, 1445965816070290015, 8500736778203030786, 2184353090197307561, -2383314901217692156, 8938659496861826051, -7534992737601434922, 8991269826838713069, 7791332995547867128, -7628807878235680793, -5235895331077855766, 1166520080644473201, 7295687409511321900, -8126712973250749941, -2949266736171906498, 6037789013299499061, 6838317374300661152, -2880397641416901009, 2115549220428598226, 2695774360107221817, 1131612528574093652, -7635708149534695149, 7786521719177445030, -8089927960624947587, -7897031020371451832, -7015662104486173193, -6590572321953335622, 8832170866227832321, -7864308874818818436, 7718922885806747931, -4123814964941469682, 7416617278220672453, 5190304216477890544, -4159852720552106369, 8311563416081057442, -2897360694767597111, 7057233862286160036, -3574247344837236189, 3715775595395810934, 5519866121098178061, 4455757531737361560, -3715672897925996537, 2406977679002344330, -8770990646229971311, 2675639743802523596, 5689694611598535723, -1441827455812150818, 4227945036093288277, -6867311898906706368, -7312165372908129649, -4579090534308620942, -2366932626145930151, -1352257419676075020, 1666633105523218227, 3922356597600477766, 2144136670915068317, -4486267920644723480, -4470176410739278313, -1452104575731526566, -9038661096625063135, 911803573633631516, 8206188909951028027, 665700311988846510, 6520569567072093413, -2164940407885727600, -4954198063968771425, -8142445926968330174, -2256661421885824279, -2056947751788217532, 2464671354050406467, -1828260370647674346, -7171745938470037203, -6315457107403161288, 2211943872587644967, -7718747310663327446, -2008141264053589071, -7266207825099424148, 2021731270438932043, 294344030201641342, -2721025512676073867, 9171446205532972768, 4635694869378954927, -1663245977665622254, -2538163337855879815, -5980337293826003308, 8648394260548345171, 5244704114964927974, 1375351201666954429, -4456913625889355384, 6925328447162738231, -2256259554288713222, -166525903131500479, 6751035928880114620, 3731426519213716827, -9080837270518724786, -5913262160643425275, -220332417198503632, -1596449634920681793, 833053156119902690, -3044832194352837623, -5534088283450501660, -59339586565605789, -1437096489682899530, -8461710597265877939, 7281070712728667608, 4683752222648889415, -8250115656038615350, 2385537407211280593, 2931670392356244748, -4233840825493012373, 6141854241033808158, -2474145945439478379, -306048648924569728, 3231756200485538511, -4490043894049056590, 8455092186613048985, -6804460640570412748, -3485888297125530765, 2363731610835720582, -8883947486235920419, 7942353451776783912, -2683664207862473129, -8428184605687726182, -1036951783351577247, 2180758518933381724, -2406296248888430725, 6111209698727173870, -1092103381456977115, -7640243105048991280, -4973260038598472993, 6999453968355117954, -1063248007073282775, -2089063414808903548, 6805378417425781891, 5231880604838336854, -8527739756160966803, 6198556738261064312, -705308644226944921, 6376151900465732714, 9120673721996285425, 2013321989587397548, -2196244020295548277, 6998614867979413694, 1519695710177520821, 1282687611779409952, -2883284396168499473, 1877485442422166098, 408466294632392633, 1932799422564844500, -3187173641388680813, -5464994874737758938, -8304947862982030595, -5273758964031753528, -6486584756292196745, -5147864202185372358, -4742519367263839615, -7236170207630513924, -5383182653522527845, 8774399941079008910, -4090890415965463995, -8880530505303238032, 5994968914118964991, -1397357958928306910, 473399303900991049, -8615682432343557340, -3047607584238255453, -2197196858667952906, -6530447771388527987, -9142507143552844008, -3002671559296876409, -4280307934990527990, 3710052859591009041, 6850318285417749068, -5302467120227691349, -5248250943522490274, 7288702343872482261, 8962363528164851904, -744207370720206065, 5474617543858166770, 5201793732441995481, -2714021689195633036, 7314956728200368051, 7124962199881486534, 8128826048947301917, 3262567524796661608, 6554067098447052439, 3965162556202298074, -560082815927373919, -1492379350288646244, 8975011105969902523, -8325314201282986450, 5820345605764432229, 1173692920191326992, -8321589998903479521, 5056965043593797314, -424533805773101207, 2749255547676870084, -4916167587036069693, -7510340121805168490, 7924865918140736941, 63734293952836536, -8258398336558276441, 2069221539610515370, 878538822022873137, -7400534120983422740, 4296319524632065739, -4840538399081457666, 8320915222305651445, -2633335352573990560, 5606083964453627695, 848219451025339794, -8557084446415955463, -4889130971942233836, -9168712795229547053, 249772707496559718, -8689261227356298947, 7569128064341826568, 3110690192248678071, -7968154007347390342, -5346814101920787263, -8046150317482105284, 4831260520051047899, -4607209770639374898, 4769448725876930693, 3643965639944612784, 1259205537942339391, -232251567304302494, 4103916532197380233, -8042542576116916124, 8349822311708315363, -4530154210609333194, -8158800319966895923, -1375236936736343976, 3845116591727005895, 5809793541601258826, -1287448222532080303, 311358380085012364, -7780507667421681429, -4530546286264793186, 2343451163046705685, 8646414102275547648, -7306284095757075633, 390123453357301554, 7323571041131154201, 3380163255131085748, -5502197257414956045, -5561638863383377914, 7769514365489882205, -3788722998997120856, 9197762463277178583, 5636899150323013146, 5315535180485855713, 5668940152363441372, 6357849236066727931, -4516316149367595666, 8155952977670291365, -7031165093618643888, -2564377865950766241, 2959696397934506498, 5780933608233945513, -2972525418015307004, -8981307390553608957, -2213482280700024874, -949111993298490387, 7366287079262850296, -4060990801428623129, -3656051170615700758, -7834101123618395535, -7558842802392234452, -3301783816418432245, -7972249081311901890, 533013248911984949, -5292609435016222048, -6507844458063175825, -5705749001960597294, -1352110050484270023, -7107041529459364268, -3998024826564423149, 7731741076947426214, -9213595568136259715, -6922071442271107768, -434414968039463177, 1924202405902607290, 6963945964542938881, 8846660317204865916, -3230142828168248805, 1246368921702745358, 5466569832505480901, -4804243624917254928, 5788970854961399679, -6901591324006870110, -9217993620373810487, -7692608311823317596, -6077598569612469469, -5804970950702193802, 6619260330624567053, -4653187034397904488, 2099007900195741959, -4416857618650265462, 6154188668249634705, 2783127055276504268, 8994944494242086187, 6216552604365952734, -8894868069403285419, -4885593835893144768, -2439478161058032753, -1454008959044558222, 5760474076828458329, 1342021596533919988, -903858910591186893, 6886978324480737094, 5581313424535411357, -5574847803985407512, -7553589987781837033, 6631952351048745306, -8870958127002016735, 6995600430778890780, -5125277131675100101, -4279240704640336722, -8322047012628103707, -7015874077626581616, 3676496543002051487, -8965868306644941502, 189620089215380457, -8836602138314960828, -528699665179109053, 4423563144951410454, 8020731308454851117, 2579955290241476152, -8217272472887525081, 8329498440222412330, -8821689448378313551, -4872508817761094804, 435363257581248331, -5604475424873564546, 3209038281056229237, -2546497301912081440, -4282223389158582353, -5922439884214977518, -6391490089995108743, 2998085284821582740, -7308174457002176941, -5836795057404349722, 176676561727114685, 3536764346244427400, 6823326557274793783, 5527525342488751866, 4988540744541899073, 5820335797316542652, -6920097430252140965, -7745440053970336690, 8292505525235807493, 3795399555241807408, 152002276238348223, 9221927679539988194, -4935951612856724215, 4573907660267989732, -8511611001883842717, 9115170830381189814, 9076142129896566093, 3154201069565160152, -260864983009808057, -6426375269384723510, -8038914268679257647, -6806053479281442292, 5039674915628323179, -1572622889250019810, 2597804657438201493, 2005324854915490944, -3759598917596075057, -8205983510800112206, -322274675226038375, -4632861215839369676, -5284062798535252877, 4804266473774708358, 2355495532126097629, 438436244447648552, -3312214193389084841, 1839399315022048410, -8382956825874989471, 7236209673662322524, -7076051563684265861, -3459753272266318866, -1880073306540377051, 4578122276918505168, 8026205033387944927, 4931370044678150274, 2345389991031295529, -3177712516192955004, -3246097933347633789, 8532855060532672086, -6149170471257032595, 8657147266080669560, -1128459758442811033, 8182133504303008106, 1457417941852503793, 9018624959573860524, 593320479808394123, 6085378032816055742, 8303120803083560373, 6924784607460683040, -5775225131943948305, -2615698703932104878, 5681838735606739129, -1617414133387454252, -3468249066509596013, 8901281612082629158, 6447831199055340541, -2645786705090701368, 4311601246242203511, 6849610909902977594, 2896411971834250113, 5948206318372691452, 6288267535996242587, -234601646291188850, 1393454084886041413, -1685100643165266064, 4793024299005351935, -8274844756210632158, 7571538906715002697, 4215012154640814116, 2775049628653908899, 29980057706770934, -7705482170043182195, -5103640729413868520, 7192058268107653511, 5555886012154609418, 1262417319564069905, 7116890245153345356, -2740232812671752789, 6454367826990822750, 3870123311279031509, -1861721895677803072, -4178559699972881393, -6219409709887182606, 5067324874594959833, 5787168218915289972, -4581321747712409421, -3243461970702504506, -6110646790756137187, -8706854548011178904, 534600237608075159, -757222839124338726, 2774473306638915745, 6851808999148139676, 4459951427926140091, -2823346943206606034, -8763013258511664539, 6135382588866191376, 8133172545042797599, -7680571665368437822, 7828038040844824681, -8174237873242973500, -7753749458757668413, 7607894268745743766, 5569733263354527405, 8177054379204057272, -440202485807210073, -3955543489469234006, -8922216210986997455, -3577792555186303508, -8992932811473532981, 339289465255810302, 8206323683554161653, 1886708950673911392, 7825594848225658927, 8778996011476009618, -897579052442279175, 7280632575448755732, -5927777232543021357, -6265975840535060122, 16747186391497277, -1641977964563726072, 8364924314734536631, 2748781552605775226, 4181165670832127425, -703575261875168452, 5768757694506372827, -1222481728343883058, 1776517764346114437, 6435361251401298096, -1277686959469191105, -2914810774262256286, 1662879516042189193, -6604625292908513948, 8838772014011908067, 95441055556573494, 1590369997275511245, 5774095002241391960, -7697621723700981305, 2878812440388459082, -717892140808006063, 5294199297738972300, -686356790484764181, 8251086193332159646, 7610368712584737557, 3281106436119914240, -9107681687388218289, 1365726205339479090, 5690139843120829465, -4688490393970544460, 1027359377919057139, 3738239000396178694, -2226550478409695907, 1231950412120796584, 4734607784079581143, 3684187673509593882, 6933401975876711137, -8628467452983815716, 2403584531701106939, 1276176681710885486, -4325035158849963867, -526440710072676016, -8376518201115378593, -5169878911622349054, -893780752920685911, -4859155606085345276, -6987941392673579517, 5543537656097899734, 6536767997818569965, 2923191338001297912, -7205946752015003161, -3414972971818467350, 87544232718422897, -3099605200835003604, -112341239880401909, 6796506594238235710, 6849007291077657141, -7818348223896637536, -6137743069283893137, -7575990541422795310, 2212908943305643321, -9182373392342711468, 1795331643009188627, -2425473299226871642, 4276943209546961021, 667753842742078024, 6799643139767248887, -8727941955089166150, -3676771470070695935, -1357123625273010052, 9113038543957136155, -3441717610063445490, 1057255079081152453, -8923855115235753488, 3150356343034472575, 1069139708237144226, 925862824514411465, -1032343613152765276, 4362658772082183203, -5469384241360912266, 4537027964674203661, 6497274810307892888, -5511911569465761273, -4744631807530994294, 4336323769385984145, 3583061053099059660, -8080929738477367765, -6980861195138837538, 1188197074513813845, 187193524676610112, 4316085402287862927, 1184272934965440370, 5912005735199516249, -4078971900640958988, -6836098780114323149, 6617561720639167558, -3510327197408250979, -5166148244561922328, 2819197160568389655, -1253750792151765414, 5288613894650793249, -1842947240174211300, -5904846486307885765, 6733621624461343150, -6536181033541503259, -1703891018165550448, -6555601613458053985, 8217343416700736066, 4353785207615452393, 8196330611106063684, 2866371748040133187, 5020023370291498006, 5664188582139251501, -1974568375125898440, 6101761908725432871, -959727816542520534, -5916525266209964623, -4465569816636069780, 7264046112130625611, -7593793279109794946, -7609062142858080139, -6090557998329843488, -6272011811959097169, 8629460093298329874, 5043105987727771513, -1145361157864515436, 2929060536324439891, 5875811091465981926, -8747705474263832899, 564231297447531400, 8659001372358600759, -1163255831491273734, 7023536949168763457, 4899831069802321340, 2198774823199692635, 6768375866352304462, -5963618086929633787, 2558944835525202736, -2242999854762725185, -4192176037411548190, 15010382215650825, -5815958086974160924, 121055646896412771, -7129630547011852362, 1392549161002813005, 8161504848054849496, 6392600411629318727, 8098990320950563018, -6004018480903132463, -214544103990102260, 7209958353649590891, 7374409241282306846, -2955175028811640939, 684446298754443648, -5273825535355188017, -8104233068000152910, -889084041056487271, -2182746272950969548, -2976007252212312717, -5911883564669185146, -4138815099104155171, -2672298486277472216, -7864733257331810217, -7585621640860690022, 1250706145458710369, -4506063214059172772, 4516850816845255035, -5284362126433314578, 8337111083885131045, -2578823322161253424, 1271714449988226271, -4900087021958535806, 612780465553495849, 7660456559900240516, 7489170476174702211, -429030032488115370, -5239433984118238867, 5007943063751058552, 8392204582762033767, 6419500347596600938, -1250055480521496591, 5475912174790202796, 6171421431408223371, 3442326496773186238, 7706006216129535669, 322524741906657824, -292132488793952017, 300401377683991634, -5377333023035016775, -7470887542445675052, 736536685710736275, -6833224093484669146, -4594174034963153667, 6430741256478211272, -3855969837680269193, 532936876954871610, 1674150592776039553, -2377440030362299652, 5602873086782200731, -5356756830451531634, 6104481190466948165, -5316217324636281744, 5977944488102934783, -3551208263675541726, -1308538808741093303, -3858604175419972316, 2852406496878175395, 5038448818551541494, 6581232178595589261, 6652338342837389592, -7725430977112931705, -7977385676900635638, -7577616337736731375, -6247029397767748532, -8915656333191448917, -5353577643317448098, -7543776526774436395, 1022800901869587136, -4049455010208389873, -2718929182050961934, 1985455057032481497, -3454330076434624396, 7146110453810229683, -6813605324711114042, -3321331519556624355, -5800384733522015896, -950564561473175401, -6120614825521150758, -6700400674624831071, -3930743316900828772, 2090423630485763515, -3496862567198279634, 1034352988592485221, 5022383124328719632, -7670614893175605985, -5681765209582372670, -2746383284129891991, -5041922089993080892, -5974079805279870269, 733642600745507478, 7481567640167389101, -3324582133730148936, 2882893149830570663, -6789366960583265878, 3338510715374441009, 8622078917202576108, 2960537458157263051, 7381975872131895806, -1688491771596198667, 8765959091601961824, 2883949372462754095, 9178630409038417810, 3962294440069557241, -605931776011697388, 7289600332473071571, 64435339063541350, 4372900857958503229, -6866879885437229560, -5367167368882739017, -182213684225019270, -3360821345782782271, -3189150798672424900, 876847994284416987, -5926103157149024306, 3191778734272768645, 7224409005408400816, 7773607813502419263, 5180880111838378594, 7706425715544646281, 5279339112591837796, 4840250598589903075, 5061908538089027126, -2339663200236875059, 6186524608612024920, -7286785102288465209, -8124005520341448886, -4820726310958547119, -4059206531187846772, -2459644557886207253, 2852859008727794078, 240461682073955349, 9020154605773646848, -8815424590846231217, -5384604347796408014, -3888332018935309031, 8727575652815160756, 4318264725215186419, 5939931541152825862, -4466385827311233443, 2265721794109231784, 4491604825058762967, -3633763490521239526, 3729556290017385441, 1402998802677515996, -618225993311905285, 7802772334116706158, -3435300983150169691, 3368001532268680784, 2199992247378484575, -1155422362944975870, -5341413895107585111, 1736805690224276740, 2887239911991185155, -7282487250988686890, -7203320654561632787, -8810649517523020040, -6219422879772814617, -188930241078645526, -7326439188223951759, -6840068550739300308, -3478193366661886709, 3271925173090173246, 7447339748832000821, 2583460329323574432, 3932485877131714927, 1521429708150371026, -90278959037096391, -1155601695558346668, -5738100676951657453, 3835873524604147110, 3209806729840011645, -6821547757631942840, 1687167830929058039, 3528437947691580858, -7232158035933290239, 7014355680891587964, 6662085120593667099, -6701241242936492274, -3133157352931260219, 1563006485740963568, 7039850886503565695, 3480927273650466210, 461370745722660041, -7182193120213471324, 1667120738193571107, 7753056902845914486, 6601748516843059469, -2723381276769829992, -6882631431059840249, 3418209482543817354, 1178840981482391953, -2016231419559387444, 783308614978854699, -5109392155639377698, 2997376660063328853, -1883083534706913984, 7022441269847643535, 953640579451649138, -8357874771432149159, 573900141470366452, 229805039946558003, 1683688925432772934, 6373865883003260061, -429635894314492952, -7342032287350718185, 8593040005001911130, 8267791668016313889, 5601802259354690588, -6193191666248008133, 4404392808905914030, 2025178956793802725, 3304601245935257488, 1689047832251794847, -1778544297348145342, -2718093200612393495, -8003288696768775612, -7289381665455080637, 6786729185168714006, -6297900408208792531, 4575944831293288504, 4573009620437566247, 6223976128316139562

In the Dart VM, the numbers correctly change until the end.

Sample code

import 'package:fixnum/fixnum.dart';

void main() {
  final buffer = StringBuffer('seed: 42');

  var seed64 = Int64(42);
  for (int i = 2047; i >= 0; i--) {
    seed64 = seed64 * int.parse('6364136223846793005') +
        int.parse('1442695040888963407');
    buffer.write(', $seed64');
  }

  print(buffer.toString());
}

fixnum classes could be much more performant when targeting the Dart VM

Since Dart conditional imports/exports are a thing, has there been much consideration to making package:fixnum offer different implementations of Int32/Int64 for the Dart VM than for the web? For the VM, they could be mostly simple wrappers around int.

Currently anyone considering package:fixnum has to make a tradeoff between portability and a significant difference in performance. I made a quick (but very crude) prototype that replaced the internals of Int64, and it seems ~3x faster for the benchmarks I ran. (It still seems ~3x slower than using int directly, presumably due to all of the unboxing/boxing, but that's better than the ~9x difference I see with the current implementation.)

Int64.parseInt doesn't check for overflow, nor do its docs explain what happens

Int64.parseInt('12343498230482340234820349823049823')

yields

-6445017949831143329

which isn't what I'd expect. I would expect this to throw.

Compare to Java:

Integer.parseInt('12343498230482340234820349823049823');

throws

java.lang.NumberFormatException: For input string: "12432904823048234092384023482309"

The class level docs for Int64 vaguely say,
"Arithmetic operations may overflow in order to maintain this range."
but I don't see how that should include parsing.
Overflow in ordinary arithmetic can be used for beneficial purposes, such as implementing an Int128 out of Int64, but what possible benefit is there to allowing overflow in parsing?

Some options:
(a) Lazy: Update the docs to at least say what happens since (imo) this isn't expected.
(b) More ambitious: Add an optional named param to parseInt like throwOnOverflow (default false).
It shouldn't be too expensive to detect; after all, Java does it. Maybe just test the carry at each step.
(c) Very ambitious: Forget about the optional param, just throw on overflow since it's hard to imagine a legit use case for allowing overflow. This is ambitious in the sense that it changes existing semantics.

Migrate off the deprecated List constructor

  @override
  List<int> toBytes() {
    var result = List<int>(4);
    result[0] = _i & 0xff;
    result[1] = (_i >> 8) & 0xff;
    result[2] = (_i >> 16) & 0xff;
    result[3] = (_i >> 24) & 0xff;
    return result;
  }
  @override
  List<int> toBytes() {
    List<int> result = List<int>(8);
    result[0] = _l & 0xff;
    result[1] = (_l >> 8) & 0xff;
    result[2] = ((_m << 6) & 0xfc) | ((_l >> 16) & 0x3f);
    result[3] = (_m >> 2) & 0xff;
    result[4] = (_m >> 10) & 0xff;
    result[5] = ((_h << 4) & 0xf0) | ((_m >> 18) & 0xf);
    result[6] = (_h >> 4) & 0xff;
    result[7] = (_h >> 12) & 0xff;
    return result;
  }

With the migration to null safety we will need to use a different list constructor here.

Add `tryParse` methods

The class Int64 has a parse method, but no tryParse method.

I suggest adding a try version of each of the parse methods (parse, parseHex, parseRadix), which returns null instead of throwing a FormatException in case of invalid inputs.

In null-safe Dart (even more than before) it's often more useful to get a null value than a thrown FormatException.

(Also, the parse methods must document which exceptions they throw. That's as important as what type they return. #35)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.