Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

After adding 10000 centroids and merging I am get NAn Value #165

Open
venkateshm383 opened this issue Apr 19, 2021 · 5 comments
Open

After adding 10000 centroids and merging I am get NAn Value #165

venkateshm383 opened this issue Apr 19, 2021 · 5 comments

Comments

@venkateshm383
Copy link

Hi Team, I am adding stream of centroids global t-digest and after some interval of time, apply decay and I am sending these centriod t-digest ( global t-digest to another system through Kafka , when I consume and trying add to another t-digest, I am get NaN for values , what could be the resaon ,please guide if am doing wrong ??

@tdunning
Copy link
Owner

Hey there.

I can't tell exactly what you are doing.

Normally what would be done would be to add samples (not centroids) to a t-digest for some short window (1 or 5 minutes is common).

These digests could be serialized and sent to another location.

This other location could deserialize the digests and combine or augment them.

The things that you say that confuse me are

  • adding stream of centroids
  • apply decay
  • sending these centroid t-digest

Can you clarify exactly what you mean? Could you also say which version of t-digest you are using?

If you have sample code, it would help enormously.

@venkateshm38
Copy link

venkateshm38 commented Apr 20, 2021

HI ,

1.We have one application which produce key and value pair data through kafka, here value(protobuf object) has mean and weight.
2.we have another application consume this data , this application have cache with key value pair, here value is t-digest , t-digest is created first time if key nor exist in cache, we start collected mean and weight in t-digest , these collected t-digest publish to another topic on schedule basis , we apply decay before publishing it , we use our custom protobuf object class for data publishing not t-digest object.
3. there is another application consume this produced data and collected in to t-digest , and try to find quantile on key basis on business needs .

So here problem is on second point the published data has some NAN mean values not sure what causing the mean values to become Nan and when consume as for 3rd point we are getting this below error

error :java.lang.IllegalArgumentException: Cannot add NaN to t-digest
mean: NaN

----we are using t-diges3.2 version

on second point code

tDigestWrapper---- has the actual t-digest object which collected mean and weight

//decay t-digest before publishing
tDigestWrapper.decay(tDigestConfigurationObj.getDecayRate());

// custom DTO object to publish data
TDigest.Builder builder = TDigest.newBuilder();
tDigestWrapper.retrieveTDigest().centroids().forEach(centroid ->
builder.addCentroid(TDigestProtos.Centroid.newBuilder().setMean(centroid.mean()).setWeight(centroid.count()).build())
);
// the above code when running loop we saw some values of mean become NaN not sure what caused this

    TDigestKey.Builder tDigestKey = TDigestKey.newBuilder();
    tDigestKey.build();//removed setting key values 

    //send message of t-digest distribution to
    ProducerRecord<TDigestKey, TDigest> record = new ProducerRecord<>(typhoonProperties.getSinkTopic(), tDigestKey.build(), builder.build());
    recordProducer.send(record, new ProducerCallBack(tDigestWrapper, TDigestKeyWrapper))

@tdunning
Copy link
Owner

Hmm... there are going to be some serious problems here.

  • when you insert data points with weights, you have a serious risk of violating the internal invariants of the t-digest

  • when you decay the counts of a t-digest, you will be messing with the assumptions that the interpolation code uses. In particular, there are special cases that depend on centroids having either exactly 1 sample or more than one sample. Decaying may violate that assumption

It is usually possible to avoid the temptation to decay the weights in a t-digest by using digests devoted to individual time windows. Generally, you can combine unweighted digests transparently. If you seriously want to emphasize some windows at the expense of others, you should consider doing the weighting in your downstream statistical processes rather than inside the t-digest itself.

Can you say why you aren't adding the original raw observations to a t-digest? Why are you adding means with weights?

And why you aren't just using windows?

Where does the requirement for decaying a t-digest come from?

@tdunning
Copy link
Owner

I haven't heard back on this in over 6 months and will likely close this issue soon if I don't hear more.

@vincentye38
Copy link

I run into the same error

error :java.lang.IllegalArgumentException: Cannot add NaN to t-digest
mean: NaN

I added 87087.0 double numbers by calling com.tdunning.math.stats.AbstractTDigest#add(double) from a MergingDigest instance with compassion of 10000. At some point, some of the mean[] elements have Nan values.

Here is the hex format of the binary of the MergingDigest
0x00000001fff8000000000000fff800000000000040c3880000000000000005e40000000000000000fff80000000000004059c00000000000fff8000000000000404d8000000000000000000000000000404d0000000000000000000000000000404d0000000000000000000000000000404d0000000000000000000000000000404d0000000000000000000000000000404d0000000000000000000000000000404d0000000000000000000000000000404d00000000000000000000000000004054000000000000000000000000000040538000000000000000000000000000405340000000000000000000000000004053400000000000000000000000000040534000000000000000000000000000405500000000000000000000000000004055000000000000000000000000000040550000000000000000000000000000405600000000000000000000000000004053800000000000000000000000000040538000000000000000000000000000405440000000000000000000000000004054000000000000000000000000000040550000000000000000000000000000405500000000000000000000000000004055000000000000000000000000000040550000000000000000000000000000405500000000000000000000000000004055c00000000000000000000000000040568000000000000000000000000000405680000000000000000000000000004056800000000000000000000000000040568000000000000000000000000000404680000000000000000000000000004054000000000000000000000000000040540000000000000000000000000000405400000000000000000000000000004054c00000000000000000000000000040540000000000000000000000000000405540000000000000000000000000004055400000000000000000000000000040568000000000000000000000000000405680000000000000000000000000004056800000000000000000000000000040568000000000000000000000000000405680000000000000000000000000004056800000000000000000000000000040544000000000000000000000000000404300000000000000000000000000004054000000000000000000000000000040550000000000000000000000000000405500000000000000000000000000004055000000000000000000000000000040550000000000000000000000000000405500000000000000000000000000004056c0000000000000000000000000004056000000000000000000000000000040508000000000000000000000000000405780000000000000000000000000004056c000000000000000000000000000405700000000000000000000000000004057000000000000000000000000000040570000000000000000000000000000405700000000000000000000000000004057000000000000000000000000000040570000000000000000000000000000405740000000000000000000000000004058000000000000000000000000000040580000000000000000000000000000404400000000000000000000000000004052c000000000000000000000000000405380000000000000000000000000004053800000000000000000000000000040538000000000000000000000000000405400000000000000000000000000004054400000000000000000000000000040544000000000000000000000000000405440000000000000000000000000004054c000000000000000000000000000405500000000000000000000000000004055000000000000000000000000000040550000000000000000000000000000405500000000000000000000000000004055000000000000000000000000000040550000000000000000000000000000405500000000000000000000000000004055000000000000000000000000000040550000000000000000000000000000405500000000000000000000000000004055000000000000000000000000000040550000000000000000000000000000405540000000000000000000000000004055c00000000000000000000000000040568000000000000000000000000000405740000000000000000000000000004058000000000000000000000000000040574000000000000000000000000000405740000000000000000000000000004057400000000000000000000000000040574000000000000000000000000000405740000000000000000000000000004057400000000000000000000000000040574000000000000000000000000000405740000000000000000000000000004057400000000000000000000000000040574000000000000000000000000000405800000000000000000000000000004058000000000000000000000000000040580000000000000000000000000000405800000000000000000000000000004058000000000000000000000000000040580000000000000000000000000000405800000000000000000000000000004058000000000000000000000000000040580000000000000000000000000000404680000000000000000000000000004058c0000000000000000000000000004058c0000000000000000000000000004058c0000000000000000000000000004058c0000000000000000000000000004058c0000000000000000000000000004058c0000000000000000000000000004059800000000000000000000000000040510000000000000000000000000000405980000000000000000000000000004059800000000000000000000000000040550000000000000000000000000000405a4000000000000000000000000000405a4000000000000000000000000000405a4000000000000000000000000000405a4000000000000000000000000000405a4000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405bc00000000000000000000000000040528000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc00000000000000000000000000040584000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c0000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc00000000000000000000000000040100000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000404b0000000000003f92f684bda12f6c40568000000000003fa1111111111112403a0000000000003fa3b13b13b13b15404e8000000000003fa92e29f79b475940440000000000003fb3333333333333404e8000000000003fb92e29f79b4759404a8000000000003fc0e7d95bc609aa40418000000000003fc249249249249240528000000000003fc4c1bacf914c1c40518000000000003fc7c57c57c57c58405dc000000000003fc9d0ac19d0ac1b405dc000000000003fc9d0ac19d0ac1b4052c000000000003fcb4e81b4e81b50404d0000000000003fce007a279ad735404c0000000000003fd124924924924a40524000000000003fd269349a4d2692404e8000000000003fd2e29f79b4758240550000000000003fd3cf3cf3cf3cf440450000000000003fd3cf3cf3cf3cf440450000000000003fd3cf3cf3cf3cf440470000000000003fd4de9bd37a6f4d40524000000000003fd6cb65b2d96cb640518000000000003fd9999999999999404a0000000000003fdb13b13b13b13c40410000000000003fdc3c3c3c3c3c3e40514000000000003fde9bd37a6f4dea40430000000000003fe00000000000014050c000000000003fe0b7672a07a44d40514000000000003fe303b5cc0ed72f40510000000000003fe52d2d2d2d2d2c40510000000000003fe52d2d2d2d2d2c404d8000000000003fe6c797dd49c34040470000000000003fe9bd37a6f4de9b40518000000000003feb6db6db6db6db405c4000000000003fedbc090fdbc091405c0000000000003ff0000000000000405cc000000000003ff0000000000000405cc000000000003ff0000000000000405b8000000000003ff0000000000000405b8000000000003ff0000000000000405b0000000000003ff0000000000000405b0000000000003ff0000000000000405b0000000000003ff0000000000000405d4000000000003ff0000000000000405c0000000000003ff0000000000000405c0000000000003ff0000000000000405dc000000000003ff0000000000000405b0000000000003ff000000000000040420000000000003ff00000000000004057c000000000003ff000000000000040590000000000003ff000000000000040570000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405b0000000000003ff0000000000000405b8000000000003ff0000000000000405b8000000000003ff0000000000000405cc000000000003ff0000000000000405e0000000000003ff0000000000000405e0000000000003ff000000000000040538000000000003ff000000000000040538000000000003ff000000000000040538000000000003ff0000000000000405a4000000000003ff000000000000000000000000000003ff0000000000000405a4000000000003ff000000000000040510000000000003ff000000000000040510000000000003ff0000000000000405e0000000000003ff0000000000000405e0000000000003ff0000000000000405cc000000000003ff000000000000000000000000000003ff0000000000000405cc000000000003ff0000000000000405b8000000000003ff0000000000000405a4000000000003ff000000000000040590000000000003ff0000000000000405b0000000000003ff000000000000040140000000000003ff0000000000000405a4000000000003ff0000000000000405c0000000000003ff0000000000000405c0000000000003ff0000000000000405b8000000000003ff000000000000040544000000000003ff0000000000000405c0000000000003ff000000000000040540000000000003ff000000000000040518000000000003ff000000000000040590000000000003ff000000000000040594000000000003ff0000000000000405b4000000000003ff000000000000000000000000000003ff0000000000000405c0000000000003ff0000000000000405d0000000000003ff000000000000040574000000000003ff000000000000040574000000000003ff000000000000040574000000000003ff000000000000040574000000000003ff000000000000040574000000000003ff000000000000040580000000000003ff000000000000040580000000000003ff00000000000004058c000000000003ff00000000000004058c000000000003ff00000000000004058c000000000003ff0000000000000405a4000000000003ff0000000000000405b0000000000003ff0000000000000405b0000000000003ff0000000000000403e0000000000003ff0000000000000403b0000000000003ff0000000000000404b0000000000003ff0000000000000404a8000000000003ff0000000000000404a0000000000003ff0000000000000404a0000000000003ff0000000000000404a0000000000003ff0000000000000404a8000000000003ff0000000000000404a0000000000003ff0000000000000404a0000000000003ff0000000000000404a0000000000003ff0000000000000404a0000000000003ff0000000000000404a0000000000003ff0000000000000404a0000000000003ff0000000000000404a0000000000003ff0000000000000404a0000000000003ff0000000000000404a0000000000003ff0000000000000404a0000000000003ff0000000000000404a0000000000003ff0000000000000404a0000000000003ff0000000000000404a0000000000003ff0000000000000404a0000000000003ff0000000000000404a8000000000003ff0000000000000403b0000000000003ff0000000000000403b0000000000003ff0000000000000403b0000000000003ff0000000000000403b0000000000003ff0000000000000403b0000000000003ff0000000000000403b0000000000003ff0000000000000403b0000000000003ff0000000000000403b0000000000003ff0000000000000403b0000000000003ff0000000000000403b0000000000003ff0000000000000403b0000000000003ff0000000000000403b0000000000003ff0000000000000403b0000000000003ff0000000000000403b0000000000003ff0000000000000403e0000000000003ff0000000000000403e0000000000003ff0000000000000403e0000000000003ff0000000000000403e0000000000003ff0000000000000403f0000000000003ff0000000000000403f0000000000003ff0000000000000403f0000000000003ff0000000000000403f0000000000003ff0000000000000403f0000000000003ff0000000000000403f0000000000003ff0000000000000403f0000000000003ff0000000000000403f0000000000003ff000000000000040410000000000003ff000000000000040410000000000003ff000000000000040410000000000003ff000000000000040410000000000003ff000000000000040410000000000003ff000000000000040410000000000003ff000000000000040410000000000003ff000000000000040410000000000003ff000000000000040410000000000003ff000000000000040410000000000003ff000000000000040410000000000003ff000000000000040410000000000003ff000000000000040410000000000003ff000000000000040410000000000003ff000000000000040410000000000003ff000000000000040418000000000003ff000000000000040418000000000003ff000000000000040450000000000003ff000000000000040488000000000003ff000000000000040460000000000003ff000000000000040470000000000003ff0000000000000403e0000000000003ff0000000000000405b0000000000003ff0000000000000405b0000000000003ff0000000000000405b0000000000003ff0000000000000405b0000000000003ff000000000000040100000000000003ff0000000000000405b0000000000003ff0000000000000405b0000000000003ff0000000000000405b0000000000003ff0000000000000405b0000000000003ff0000000000000405b0000000000003ff0000000000000405b0000000000003ff0000000000000405b0000000000003ff0000000000000405b0000000000003ff0000000000000405b0000000000003ff0000000000000405a8000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff000000000000040510000000000003ff000000000000040598000000000003ff000000000000040598000000000003ff00000000000004058c000000000003ff00000000000004058c000000000003ff00000000000004058c000000000003ff00000000000004058c000000000003ff00000000000004058c000000000003ff00000000000004058c000000000003ff00000000000004058c000000000003ff00000000000004058c000000000003ff00000000000004058c000000000003ff00000000000004058c000000000003ff00000000000004058c000000000003ff000000000000040580000000000003ff000000000000040140000000000003ff000000000000040580000000000003ff000000000000040580000000000003ff000000000000040580000000000003ff000000000000040580000000000003ff000000000000040140000000000003ff000000000000040580000000000003ff000000000000040580000000000003ff000000000000040580000000000003ff000000000000040574000000000003ff000000000000040574000000000003ff000000000000040574000000000003ff000000000000040574000000000003ff000000000000040574000000000003ff000000000000040574000000000003ff000000000000040574000000000003ff000000000000040574000000000003ff000000000000040574000000000003ff000000000000040574000000000003ff0000000000000405d4000000000003ff0000000000000405d0000000000003ff0000000000000405d0000000000003ff0000000000000405d0000000000003ff0000000000000405d0000000000003ff0000000000000405d0000000000003ff0000000000000405d0000000000003ff0000000000000405c8000000000003ff0000000000000405c0000000000003ff0000000000000405c0000000000003ff0000000000000405c0000000000003ff0000000000000405c0000000000003ff0000000000000405c0000000000003ff0000000000000405c0000000000003ff0000000000000405c0000000000003ff0000000000000405b4000000000003ff0000000000000405b0000000000003ff000000000000040594000000000003ff000000000000040590000000000003ff000000000000040590000000000003ff000000000000040590000000000003ff000000000000040590000000000003ff000000000000040590000000000003ff0000000000000405e0000000000003ff0000000000000405e0000000000003ff0000000000000405e0000000000003ff0000000000000405e0000000000003ff000000000000040380000000000003ff000000000000040240000000000003ff0000000000000405cc000000000003ff0000000000000405cc000000000003ff0000000000000405cc000000000003ff0000000000000405b8000000000003ff0000000000000405b8000000000003ff0000000000000405b8000000000003ff0000000000000405b8000000000003ff0000000000000405b0000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff0000000000000405a4000000000003ff000000000000040450000000000003ff000000000000040240000000000003ff000000000000040440000000000003ff000000000000040590000000000003ff000000000000040590000000000003ff000000000000040590000000000003ff0000000000000405c8000000000003ff00000000000004057c000000000003ff0000000000000405b0000000000003ff000000000000040420000000000003ff0000000000000405b0000000000003ff000000000000040140000000000003ff0000000000000405dc000000000003ff0000000000000405c0000000000003ff0000000000000403e0000000000003ff0000000000000405a4000000000003ff0000000000000403e0000000000003ff0000000000000405a4000000000003ff000000000000040140000000000003ff0000000000000405c0000000000003ff0000000000000405c0000000000003ff0000000000000405c0000000000003ff0000000000000405d4000000000003ff0000000000000405b0000000000003ff0000000000000405b0000000000003ff0000000000000405b0000000000003ff000000000000040370000000000003ff000000000000040560000000000003ff0000000000000405b8000000000003ff0000000000000405b8000000000003ff0000000000000405b8000000000003ff0000000000000405cc000000000003ff000000000000040180000000000003ff000000000000040544000000000003ff000000000000040420000000000003ff0000000000000405cc000000000003ff000000000000040180000000000003ff0000000000000405c0000000000003ff000000000000040540000000000003ff0000000000000403c0000000000003ff000000000000040518000000000003ff000000000000040350000000000003ff0000000000000405c0000000000003ff000000000000040380000000000003ff147ae147ae14440140000000000003ff333333333333340180000000000003ff80000000000000000000000000000fff800000000000040100000000000003ff8000000000000405c00000000000040000000000000000000000000000000fff8000000000000405b800000000000fff8000000000000405c8000000000004000000000000000404f000000000000fff80000000000004053800000000000fff80000000000004050c00000000000fff80000000000004010000000000000fff80000000000004008000000000000fff80000000000004008000000000000fff80000000000004010000000000000fff80000000000004024000000000000fff8000000000000404500000000000040000000000000000000000000000000fff800000000000040180000000000004000000000000000405c800000000000fff80000000000004053800000000000fff80000000000004028000000000000fff8000000000000402e000000000000fff80000000000000000000000000000fff800000000000040140000000000004000000000000000405b8000000000004000000000000000405b800000000000fff80000000000004038000000000000fff8000000000000405c00000000000040000000000000004053c00000000000fff8000000000000402e000000000000fff8000000000000404c800000000000fff8000000000000403e000000000000fff8000000000000401000000000000040000000000000004018000000000000fff80000000000004018000000000000fff8000000000000401000000000000040020000000000004024000000000000fff80000000000004000000000000000fff8000000000000400000000000000040080000000000004000000000000000fff80000000000004008000000000000fff80000000000004008000000000000fff80000000000004000000000000000fff80000000000004008000000000000fff80000000000004008000000000000fff80000000000004000000000000000fff8000000000000401000000000000040080000000000004010000000000000fff80000000000004010000000000000fff80000000000004010000000000000fff80000000000004010000000000000fff80000000000004010000000000000fff80000000000004010000000000000fff80000000000004010000000000000fff80000000000004000000000000000fff8000000000000401000000000000040080000000000004010000000000000fff80000000000004010000000000000fff80000000000004010000000000000fff80000000000004010000000000000fff80000000000004010000000000000fff80000000000004010000000000000fff80000000000004010000000000000fff80000000000004014000000000000fff80000000000004014000000000000fff80000000000004000000000000000fff8000000000000402000000000000040080000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff000000000000040100000000000003ff0000000000000fff80000000000003ff000000000000040100000000000003ff0000000000000fff80000000000003ff000000000000040100000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff000000000000040100000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff000000000000040100000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff000000000000040100000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff000000000000040100000000000003ff0000000000000fff80000000000003ff000000000000040100000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff000000000000040100000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff000000000000040100000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000003ff000000000000040100000000000004000000000000000401000000000000040000000000000004010000000000000400000000000000040100000000000004000000000000000401000000000000040000000000000004010000000000000400000000000000040100000000000004000000000000000401000000000000040000000000000004010000000000000400000000000000040100000000000004000000000000000401000000000000040000000000000004010000000000000400000000000000040100000000000004000000000000000401000000000000040000000000000004010000000000000400000000000000040100000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff0000000000000fff80000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000000000000000000000fff80000000000003ff000000000000040140000000000000000000000000000fff80000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040140000000000003ff000000000000040180000000000003ff000000000000040180000000000003ff000000000000040180000000000003ff000000000000040180000000000003ff000000000000040180000000000003ff000000000000040200000000000003ff000000000000040200000000000000000000000000000fff80000000000003ff000000000000040200000000000003ff000000000000040200000000000003ff000000000000040200000000000003ff000000000000040200000000000003ff000000000000040200000000000003ff000000000000040220000000000003ff000000000000040220000000000003ff000000000000040220000000000003ff000000000000040220000000000003ff000000000000040220000000000003ff000000000000040220000000000003ff000000000000040220000000000003ff000000000000040240000000000003ff000000000000040240000000000003ff000000000000040240000000000003ff000000000000040260000000000003ff000000000000040260000000000003ff000000000000040260000000000003ff000000000000040260000000000003ff000000000000040260000000000003ff000000000000040260000000000003ff000000000000040260000000000003ff000000000000040260000000000003ff000000000000040260000000000003ff000000000000040260000000000003ff000000000000040260000000000003ff000000000000040260000000000003ff000000000000040280000000000003ff000000000000040280000000000000000000000000000fff80000000000003ff000000000000040280000000000003ff000000000000040280000000000003ff000000000000040280000000000003ff000000000000040280000000000003ff000000000000040280000000000003ff000000000000040280000000000003ff000000000000040280000000000003ff000000000000040280000000000003ff000000000000040280000000000000000000000000000fff80000000000003ff000000000000040280000000000003ff000000000000040280000000000003ff0000000000000402a0000000000003ff0000000000000402a0000000000003ff0000000000000402a0000000000000000000000000000fff80000000000003ff0000000000000402a0000000000003ff0000000000000402a0000000000003ff0000000000000402a0000000000003ff0000000000000402a0000000000003ff0000000000000402a0000000000003ff0000000000000402a0000000000003ff0000000000000402a0000000000003ff0000000000000402a0000000000003ff0000000000000402c0000000000000000000000000000fff80000000000000000000000000000fff80000000000003ff0000000000000402c0000000000003ff0000000000000402c0000000000000000000000000000fff80000000000004018000000000000402faaaaaaaaaaab3ff000000000000040300000000000003ff000000000000040300000000000003ff000000000000040320000000000003ff000000000000040330000000000003ff0000000000000403c0000000000003ff000000000000040400000000000003ff0000000000000404b8000000000000000000000000000fff8000000000000405400000000000000000000000000004054000000000000000000000000000040540000000000000000000000000000405400000000000000000000000000004054400000000000000000000000000040550000000000000000000000000000405000000000000000000000000000004055c000000000000000000000000000404f80000000000000000000000000004052c00000000000000000000000000040540000000000000000000000000000404e00000000000000000000000000004053400000000000000000000000000040570000000000000000000000000000405640000000000000000000000000004054000000000000000000000000000040534000000000000000000000000000405240000000000000000000000000004052400000000000000000000000000040554000000000000000000000000000403c0000000000000000000000000000405400000000000000000000000000004054c00000000000000000000000000040520000000000000000000000000000405340000000000000000000000000004050400000000000000000000000000040510000000000000000000000000000405100000000000000000000000000004051000000000000000000000000000040510000000000000000000000000000405100000000000000000000000000004052400000000000000000000000000040530000000000000000000000000000404c8000000000000000000000000000404c8000000000000000000000000000404c8000000000000000000000000000404c8000000000000000000000000000404f0000000000000000000000000000404e8000000000000000000000000000404f8000000000000000000000000000404f8000000000000000000000000000404f8000000000000000000000000000404f800000000000000000000000000040528000000000000000000000000000405080000000000000000000000000004052800000000000000000000000000040520000000000000000000000000000405200000000000000000000000000004052000000000000000000000000000040520000000000000000000000000000405200000000000000000000000000004051400000000000000000000000000040490000000000000000000000000000404a0000000000000000000000000000404a0000000000000000000000000000404a00000000000000000000000000004051c000000000000000000000000000404b0000000000000000000000000000404b0000000000000000000000000000404b0000000000000000000000000000404b0000000000000000000000000000404b0000000000000000000000000000404b0000000000000000000000000000404b0000000000000000000000000000404b0000000000000000000000000000404b0000000000000000000000000000404b0000000000000000000000000000404d0000000000000000000000000000404d0000000000000000000000000000404d0000000000000000000000000000404d0000000000000000000000000000404d000000000000fff8000000000000404d0000000000000000000000000000404e0000000000000000000000000000404e0000000000000000000000000000404e0000000000000000000000000000404e0000000000000000000000000000404e0000000000000000000000000000404e0000000000000000000000000000404e0000000000000000000000000000404e0000000000000000000000000000404080000000000000000000000000004053c0000000000000000000000000004051000000000000000000000000000040510000000000000000000000000000405100000000000000000000000000004051000000000000000000000000000040510000000000000000000000000000405100000000000000000000000000004051400000000000000000000000000040518000000000000000000000000000405180000000000000000000000000004051800000000000000000000000000040518000000000000000000000000000405180000000000000000000000000004051800000000000000000000000000040518000000000000000000000000000405180000000000000000000000000004051800000000000000000000000000040518000000000000000000000000000405180000000000000000000000000004051800000000000000000000000000040518000000000000000000000000000405180000000000000000000000000004051800000000000000000000000000040518000000000000000000000000000404d8000000000000000000000000000404d0000000000000000000000000000404900000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405340000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004053c000000000000000000000000000404b000000000000000000000000000040428000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052c0000000000000000000000000004053800000000000000000000000000040528000000000000000000000000000404a00000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405200000000000000000000000000004052000000000000000000000000000040520000000000000000000000000000405200000000000000000000000000004049000000000000000000000000000040458000000000000000000000000000404b800000000000000000000000000040498000000000000000000000000000404f000000000000000000000000000040508000000000000000000000000000404c00000000000000000000000000004044800000000000000000000000000040508000000000000000000000000000404680000000000000000000000000004051800000000000000000000000000040478000000000000000000000000000405100000000000000000000000000004051400000000000000000000000000040508000000000000000000000000000404f0000000000000000000000000000404b0000000000000000000000000000405280000000000000000000000000004052c00000000000000000000000000040514000000000000000000000000000404f8000000000000000000000000000405140000000000000000000000000004050c0000000000000000000000000004052c00000000000000000000000000040528000000000000000000000000000405240000000000000000000000000004052800000000000000000000000000040504000000000000000000000000000405200000000000000000000000000004052000000000000000000000000000040518000000000000000000000000000405080000000000000000000000000004051c00000000000000000000000000040518000000000000000000000000000405140000000000000000000000000004050c000000000000000000000000000405100000000000000000000000000004052000000000000000000000000000040514000000000000000000000000000405080000000000000000000000000004052400000000000000000000000000040520000000000000000000000000000405180000000000000000000000000004050c000000000000000000000000000405200000000000000000000000000004051c0000000000000000000000000004051800000000000000000000000000040518000000000000000000000000000405200000000000000000000000000004052000000000000000000000000000040520000000000000000000000000000405140000000000000000000000000004051c0000000000000000000000000004051800000000000000000000000000040518000000000000000000000000000405180000000000000000000000000004051c0000000000000000000000000004051c00000000000000000000000000040470000000000000000000000000000405180000000000000000000000000004042000000000000000000000000000040428000000000000000000000000000404280000000000000000000000000004042800000000000000000000000000040490000000000000000000000000000405180000000000000000000000000004051800000000000000000000000000040418000000000000000000000000000404180000000000000000000000000004041800000000000000000000000000040514000000000000000000000000000405100000000000000000000000000004053400000000000000000000000000040520000000000000000000000000000405400000000000000000000000000004052c000000000000000000000000000404c0000000000000000000000000000404c8000000000000000000000000000405440000000000000000000000000004053400000000000000000000000000040550000000000000000000000000000405380000000000000000000000000004053800000000000000000000000000040550000000000000000000000000000405500000000000000000000000000004056800000000000000000000000000040468000000000000000000000000000405a4000000000000000000000000000405a4000000000000000000000000000405a4000000000000000000000000000405b0000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405bc000000000000000000000000000405c800000000000000000000000000000000000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c8000000000000000000000000000405c800000000000000000000000000040528000000000000000000000000000405bc0000000000000000000000000004058400000000000000000000000000000000000000000000000000000000000405bc00000000000000000000000000000000000000000000000000000000000405bc000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405a4000000000000000000000000000405a40000000000000000000000000004058c000000000000000000000000000405800000000000000000000000000000000000000000000000000000000000040574000000000000000000000000000405740000000000000000000000000004048000000000000fff8000000000000403d000000000000fff80000000000004051000000000000000000000000000040510000000000000000000000000000405540000000000000000000000000000000000000000000000000000000000040568000000000000000000000000000405680000000000000000000000000004056800000000000000000000000000040540000000000000000000000000000000000000000000000000000000000004056000000000000000000000000000040570000000000000000000000000000405700000000000000000000000000004058000000000000000000000000000040544000000000000000000000000000405440000000000000000000000000004054c00000000000000000000000000040550000000000000000000000000000405500000000000000000000000000004055000000000000000000000000000040550000000000000000000000000000405540000000000000000000000000004056800000000000000000000000000040568000000000000000000000000000405740000000000000000000000000004051000000000000000000000000000040538000000000000000000000000000405340000000000000000000000000004051000000000000000000000000000040510000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040534000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004053c000000000000000000000000000404b000000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004053800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000404d800000000000000000000000000040534000000000000000000000000000405c800000000000000000000000000040528000000000000000000000000000405280000000000000000000000000004052800000000000000000000000000040528000000000000000000000000000404a00000000000000000000000000004052c0000000000000000000000000004052800000000000000000000000000040548000000000000000000000000000404e0000000000000000000000000000404e0000000000000000000000000000404d0000000000000000000000000000404d0000000000000000000000000000404d0000000000000000000000000000404d0000000000000000000000000000404d0000000000000000000000000000404d0000000000000000000000000000404d0000000000000000000000000000404b0000000000000000000000000000404b0000000000000000000000000000404b0000000000000000000000000000405140000000000000000000000000004052000000000000000000000000000040520000000000000000000000000000404c8000000000000000000000000000404c8000000000000000000000000000404c8000000000000000000000000000405500000000000000000000000000000000000000000000fff8000000000000405d400000000000fff80000000000004028000000000000fff800000000000040550000000000000000000000000000405440000000000000000000000000004053800000000000000000000000000040538000000000000000000000000000405380000000000000000000000000004052c00000000000000000000000000040574000000000000000000000000000405700000000000000000000000000004057000000000000000000000000000040570000000000000000000000000000405700000000000000000000000000004056800000000000000000000000000040568000000000000000000000000000405500000000000000000000000000004053800000000000000000000000000040550000000000000000000000000000405340000000000000000000000000004053800000000000000000000000000040540000000000000000000000000000405400000000000000000000000000004054000000000000000000000000000040540000000000000000000000000000405500000000000000000000000000000000000000000000fff80000000000004059000000000000fff80000000000000000000000000000fff80000000000004052000000000000fff80000000000000000000000000000fff8000000000000404e000000000000fff80000000000004050c00000000000fff80000000000004044000000000000fff80000000000004055000000000000fff80000000000000000000000000000fff8000000000000405c000000000000fff8000000000000401c000000000000fff80000000000004054800000000000fff80000000000000000000000000000fff80000000000004050400000000000fff80000000000004026000000000000fff80000000000004047800000000000fff80000000000000000000000000000fff80000000000004048000000000000fff80000000000004024000000000000fff80000000000004055000000000000fff8000000000000401c000000000000fff80000000000004048800000000000fff80000000000000000000000000000fff80000000000004046000000000000fff80000000000000000000000000000fff80000000000004046000000000000fff80000000000004043800000000000fff80000000000004045000000000000fff80000000000004046000000000000fff80000000000004044000000000000fff8000000000000403d000000000000fff80000000000004058000000000000fff80000000000003ff0000000000000fff80000000000004049000000000000fff80000000000000000000000000000fff80000000000004041000000000000fff80000000000000000000000000000fff80000000000004048800000000000fff80000000000004044000000000000fff80000000000004043000000000000fff80000000000004048800000000000fff8000000000000403e000000000000fff80000000000004048000000000000fff80000000000004049000000000000fff80000000000004044800000000000fff80000000000004043800000000000fff80000000000000000000000000000fff80000000000004044800000000000fff80000000000000000000000000000fff80000000000004049000000000000fff8000000000000403f000000000000fff80000000000004042000000000000fff80000000000004034000000000000fff80000000000004041800000000000fff80000000000004041000000000000fff80000000000004030000000000000fff80000000000004049800000000000fff80000000000004022000000000000fff80000000000004053c00000000000fff80000000000004024000000000000fff8000000000000405bc00000000000fff80000000000000000000000000000fff80000000000004046800000000000fff80000000000004044000000000000fff8000000000000403d000000000000fff80000000000004044000000000000fff80000000000000000000000000000fff8000000000000405bc00000000000fff80000000000000000000000000000fff80000000000004051000000000000fff80000000000000000000000000000fff80000000000004044000000000000fff80000000000000000000000000000fff80000000000004054000000000000fff80000000000004036000000000000fff8000000000000403c000000000000fff8000000000000403d000000000000fff80000000000000000000000000000fff80000000000004054000000000000fff80000000000000000000000000000fff80000000000004048000000000000fff80000000000003ff0000000000000fff8000000000000404f800000000000fff80000000000000000000000000000fff8000000000000404a000000000000fff8000000000000404e000000000000fff80000000000004052800000000000fff80000000000004052800000000000fff80000000000004052800000000000fff80000000000004052800000000000fff8000000000000404e800000000000fff80000000000004052800000000000fff8000000000000404f800000000000fff80000000000000000000000000000fff80000000000004054400000000000fff80000000000004053c00000000000fff80000000000004055000000000000fff80000000000004055400000000000fff80000000000000000000000000000fff80000000000004055400000000000fff80000000000000000000000000000fff80000000000004055400000000000fff80000000000000000000000000000fff80000000000004055000000000000fff80000000000000000000000000000fff80000000000004055800000000000fff80000000000004028000000000000fff80000000000004055c00000000000fff80000000000004055400000000000fff80000000000004055400000000000fff80000000000004052c00000000000fff80000000000004008000000000000fff80000000000004054400000000000fff80000000000004053800000000000fff80000000000004050c00000000000fff80000000000004050000000000000fff80000000000004054000000000000fff80000000000004053c00000000000fff8000000000000404e800000000000fff80000000000004052400000000000fff80000000000004054c00000000000fff80000000000004053000000000000fff80000000000004052400000000000fff80000000000004052c00000000000fff80000000000004053000000000000fff80000000000004056400000000000fff80000000000000000000000000000fff80000000000004056800000000000fff80000000000004052000000000000fff80000000000004052800000000000fff80000000000004052400000000000fff80000000000004052800000000000fff80000000000004052800000000000fff8000000000000403d000000000000fff80000000000004047800000000000fff80000000000004054000000000000fff80000000000004054000000000000fff80000000000004053400000000000fff80000000000004056000000000000fff80000000000004054000000000000fff80000000000000000000000000000fff80000000000004056800000000000fff80000000000000000000000000000fff80000000000004033000000000000fff80000000000000000000000000000fff80000000000004034000000000000fff80000000000000000000000000000fff80000000000004049000000000000fff80000000000000000000000000000fff80000000000004056800000000000fff80000000000004056800000000000fff80000000000004058000000000000fff8000000000000404e000000000000fff80000000000004054000000000000fff80000000000004055000000000000fff80000000000004057400000000000fff80000000000004057400000000000fff80000000000004058000000000000fff80000000000004058000000000000fff80000000000004046800000000000fff80000000000004058c00000000000fff80000000000004059800000000000fff80000000000000000000000000000fff8000000000000405b000000000000fff80000000000000000000000000000fff80000000000004040800000000000fff80000000000000000000000000000fff80000000000004048800000000000fff8000000000000405c000000000000fff80000000000004018000000000000fff80000000000004045000000000000fff80000000000000000000000000000fff80000000000004037000000000000fff80000000000000000000000000000fff8000000000000405d400000000000fff80000000000000000000000000000fff80000000000004041800000000000fff8000000000000405a400000000000fff8000000000000403e000000000000fff80000000000000000000000000000fff80000000000004054000000000000fff80000000000000000000000000000fff80000000000004024000000000000fff80000000000000000000000000000fff80000000000004059000000000000fff80000000000000000000000000000fff8000000000000402c000000000000fff80000000000000000000000000000fff80000000000004055000000000000000000000000000040550000000000000000000000000000405500000000000000000000000000004055000000000000000000000000000040550000000000000000000000000000405740000000000000000000000000004057400000000000000000000000000040574000000000000000000000000000405740000000000000000000000000004057400000000000000000000000000040574000000000000000000000000000405800000000000000000000000000004058c0000000000000000000000000004058c0000000000000000000000000004058c0000000000000000000000000004058c0000000000000000000000000004059800000000000000000000000000040598000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405b0000000000000000000000000000405c80000000000000000000000000000000000000000000fff80000000000000000000000000000fff8000000000000

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants