Initial commit.

This commit is contained in:
2025-08-13 12:17:25 -04:00
commit 581771d93a
11 changed files with 878 additions and 0 deletions

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 smariot
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

5
README.md Normal file
View File

@ -0,0 +1,5 @@
# Complexity Package
This package isn't well tested, you probably shouldn't use it.
Provides some functions for measuring entropy in text, for censoring potential secret keys and evaluating password strength.

240
censor.go Normal file
View File

@ -0,0 +1,240 @@
package complexity
import (
"io"
"regexp"
"regexp/syntax"
"slices"
"strings"
"unicode/utf8"
"golang.org/x/text/transform"
)
var secretKeyPrefixes = []string{
`sk-`, `pk-`, `rk-`,
`ghp_`, `gho_`, `ghu_`, `ghs_`, `github_pat_`,
`glpat-`, `glptt-`, `gldt-`,
`xoxb-`, `xoxp-`, `xoxa-`, `xoxr-`,
`ya29.`, `1//`,
`SG.`, `key-`, `token-`, `api_`, `pat_`,
}
func makeSecretKeyPrefixPattern() string {
var b strings.Builder
b.WriteString(`(?:`)
for i, prefix := range secretKeyPrefixes {
if i != 0 {
b.WriteRune('|')
}
b.WriteString(regexp.QuoteMeta(prefix))
}
b.WriteRune(')')
return b.String()
}
func maxPrefixLength() (sz int) {
for _, prefix := range secretKeyPrefixes {
sz = max(sz, len(prefix))
}
return
}
const (
minKeyLength = 8
sensitiveDataThreshold = textCorpusMeanEntropy + (leakedPasswordMeanEntropy-textCorpusMeanEntropy)*0.8 + (randomBase64MeanEntropy-textCorpusMeanEntropy)*0.2
keyPrefixThreshold = textCorpusMeanEntropy + (sensitiveDataThreshold-textCorpusMeanEntropy)*0.5
censoredStr = "********"
)
var (
maxSafeBlindCopySize = maxPrefixLength() + minKeyLength
rePossibleKey = regexp.MustCompile(`\b` + makeSecretKeyPrefixPattern() + `[\w=+,\-]{8,}|\b[^\s]{8,}\b`)
reSecretKeyPrefix = regexp.MustCompile(`^` + makeSecretKeyPrefixPattern())
censoredBytes = []byte(censoredStr)
)
func replaceLikelyKeyBytes(fragment []byte) []byte {
if match := reSecretKeyPrefix.Find(fragment); len(match) > 0 {
entropy, cnt := Bytes(fragment[len(match):])
if entropy/float32(cnt) >= keyPrefixThreshold {
return append(slices.Clip(match), censoredStr...)
}
} else {
entropy, cnt := Bytes(fragment)
if entropy/float32(cnt) >= sensitiveDataThreshold {
return censoredBytes
}
}
return fragment
}
func replaceLikelyKey(fragment string) string {
if match := reSecretKeyPrefix.FindString(fragment); match != "" {
entropy, cnt := String(fragment[len(match):])
if entropy/float32(cnt) >= keyPrefixThreshold {
return match + censoredStr
}
} else {
entropy, cnt := String(fragment)
if entropy/float32(cnt) >= sensitiveDataThreshold {
return censoredStr
}
}
return fragment
}
func CensorLikelyKeysBytes(text []byte) []byte {
return rePossibleKey.ReplaceAllFunc(text, replaceLikelyKeyBytes)
}
func CensorLikelyKeys(text string) string {
return rePossibleKey.ReplaceAllStringFunc(text, replaceLikelyKey)
}
type tf struct{}
func trimIncompleteLastRune(text []byte) []byte {
i := max(0, len(text)-1)
for ; i > 0 && !utf8.RuneStart(text[i]); i-- {
}
r, sz := utf8.DecodeRune(text[i:])
if !(sz == 1 && r == utf8.RuneError) {
i += sz
}
return text[:i]
}
func trimLastWordBoundaryNextRuneKnown(text []byte, last rune) []byte {
i := len(text)
for i > 0 {
prev, sz := utf8.DecodeLastRune(text[:i])
if syntax.IsWordChar(prev) != syntax.IsWordChar(last) {
return text[:i]
}
i -= sz
last = prev
}
return text[:i]
}
func trimLastWordBoundary(text []byte) []byte {
last, sz := utf8.DecodeLastRune(text)
return trimLastWordBoundaryNextRuneKnown(text[:len(text)-sz], last)
}
// assumes src already ends on a valid cut point
// we can't determine that ourselves without knowing the bytes that follow.
// if dst is shorter than src, then src is reduced to the same length, and
// the possibly incomplete rune and final word boundary is removed prior to copying
func copyCompleteWords(dst, src []byte) int {
if len(dst) < len(src) {
_src := trimIncompleteLastRune(src[:len(dst)])
lastRune, _ := utf8.DecodeRune(src[len(_src):])
src = trimLastWordBoundaryNextRuneKnown(_src, lastRune)
}
return copy(dst, src)
}
func (*tf) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
if !atEOF {
// make sure the last rune hasn't been cut off.
src = trimIncompleteLastRune(src)
}
matches := rePossibleKey.FindAllIndex(src, -1)
if !atEOF {
if len(matches) > 0 {
// ignore the last match; what matches might change if we had more bytes available.
// we'll also adjust the length of src so that we don't try to copy past where the last match begins
last := len(matches) - 1
src = src[:matches[last][0]]
matches = matches[:last]
} else {
// ignore the last maxSafeBlindCopySize bytes,
// as they could potentially become a match.
_src := trimIncompleteLastRune(src[:max(0, len(src)-maxSafeBlindCopySize)])
last, _ := utf8.DecodeRune(src[len(_src):])
src = trimLastWordBoundaryNextRuneKnown(_src, last)
}
}
for _, m := range matches {
sz := copyCompleteWords(dst[nDst:], src[nSrc:m[0]])
nDst += sz
nSrc += sz
if nSrc != m[0] {
err = transform.ErrShortDst
return
}
match := reSecretKeyPrefix.Find(src[m[0]:m[1]])
censor := true
if len(match) > 0 {
entropy, cnt := Bytes(src[m[0]+len(match) : m[1]])
censor = entropy/float32(cnt) >= keyPrefixThreshold
} else {
entropy, cnt := Bytes(src[m[0]:m[1]])
censor = entropy/float32(cnt) >= sensitiveDataThreshold
}
if censor {
if len(dst[nDst:]) < len(match)+len(censoredBytes) {
err = transform.ErrShortDst
return
}
nDst += copy(dst[nDst:], match)
nDst += copy(dst[nDst:], censoredBytes)
nSrc = m[1]
} else {
if len(dst[nDst:]) < m[1]-m[0] {
err = transform.ErrShortDst
return
}
nDst += copy(dst[nDst:], src[m[0]:m[1]])
nSrc = m[1]
}
}
sz := copyCompleteWords(dst[nDst:], src[nSrc:])
nDst += sz
nSrc += sz
if nSrc != len(src) {
err = transform.ErrShortDst
} else if !atEOF {
err = transform.ErrShortSrc
}
return
}
func (*tf) Reset() {
// NOP
}
// Transformer implements [transform.Transformer], censoring any likely keys it encounters.
// Not exporting at this time, as it's bugged and a correct version might require maintaining state.
// var Transformer transform.Transformer = (*tf)(nil)
// Copy copies r to w, censoring any likely keys it encounters.
//
// WARNING: The current implementation doesn't match the output of [CensorLikelyKeys], so I definitely
// have a bug somewhere.
func Copy(w io.Writer, r io.Reader) error {
_, err := io.Copy(w, transform.NewReader(r, (*tf)(nil)))
return err
}

267
censor_test.go Normal file
View File

@ -0,0 +1,267 @@
package complexity
import (
"fmt"
"io"
"strings"
"testing"
)
const wikipediaSecretKeyArticle = `# Key (cryptography)
A key in cryptography is a piece of information, usually a string of numbers or letters that are stored in a file, which, when processed through a cryptographic algorithm, can encode or decode cryptographic data. Based on the used method, the key can be different sizes and varieties, but in all cases, the strength of the encryption relies on the security of the key being maintained. A key's security strength is dependent on its algorithm, the size of the key, the generation of the key, and the process of key exchange.
## Scope
The key is what is used to encrypt data from plaintext to ciphertext.[1] There are different methods for utilizing keys and encryption.
### Symmetric cryptography
Symmetric cryptography refers to the practice of the same key being used for both encryption and decryption.[2]
### Asymmetric cryptography
Asymmetric cryptography has separate keys for encrypting and decrypting.[3][4] These keys are known as the public and private keys, respectively.[5]
## Purpose
Since the key protects the confidentiality and integrity of the system, it is important to be kept secret from unauthorized parties. With public key cryptography, only the private key must be kept secret, but with symmetric cryptography, it is important to maintain the confidentiality of the key. Kerckhoff's principle states that the entire security of the cryptographic system relies on the secrecy of the key.[6]
## Key sizes
Key size is the number of bits in the key defined by the algorithm. This size defines the upper bound of the cryptographic algorithm's security.[7] The larger the key size, the longer it will take before the key is compromised by a brute force attack. Since perfect secrecy is not feasible for key algorithms, researches are now more focused on computational security.
In the past, keys were required to be a minimum of 40 bits in length, however, as technology advanced, these keys were being broken quicker and quicker. As a response, restrictions on symmetric keys were enhanced to be greater in size.
Currently, 2048 bit RSA[8] is commonly used, which is sufficient for current systems. However, current RSA key sizes would all be cracked quickly with a powerful quantum computer.[9]
"The keys used in public key cryptography have some mathematical structure. For example, public keys used in the RSA system are the product of two prime numbers. Thus public key systems require longer key lengths than symmetric systems for an equivalent level of security. 3072 bits is the suggested key length for systems based on factoring and integer discrete logarithms which aim to have security equivalent to a 128 bit symmetric cipher."[10]
## Key generation
To prevent a key from being guessed, keys need to be generated randomly and contain sufficient entropy. The problem of how to safely generate random keys is difficult and has been addressed in many ways by various cryptographic systems. A key can directly be generated by using the output of a Random Bit Generator (RBG), a system that generates a sequence of unpredictable and unbiased bits.[11] A RBG can be used to directly produce either a symmetric key or the random output for an asymmetric key pair generation. Alternatively, a key can also be indirectly created during a key-agreement transaction, from another key or from a password.[12]
Some operating systems include tools for "collecting" entropy from the timing of unpredictable operations such as disk drive head movements. For the production of small amounts of keying material, ordinary dice provide a good source of high-quality randomness.
## Establishment scheme
The security of a key is dependent on how a key is exchanged between parties. Establishing a secured communication channel is necessary so that outsiders cannot obtain the key. A key establishment scheme (or key exchange) is used to transfer an encryption key among entities. Key agreement and key transport are the two types of a key exchange scheme that are used to be remotely exchanged between entities . In a key agreement scheme, a secret key, which is used between the sender and the receiver to encrypt and decrypt information, is set up to be sent indirectly. All parties exchange information (the shared secret) that permits each party to derive the secret key material. In a key transport scheme, encrypted keying material that is chosen by the sender is transported to the receiver. Either symmetric key or asymmetric key techniques can be used in both schemes.[12]
The DiffieHellman key exchange and Rivest-Shamir-Adleman (RSA) are the most two widely used key exchange algorithms.[13] In 1976, Whitfield Diffie and Martin Hellman constructed the DiffieHellman algorithm, which was the first public key algorithm. The DiffieHellman key exchange protocol allows key exchange over an insecure channel by electronically generating a shared key between two parties. On the other hand, RSA is a form of the asymmetric key system which consists of three steps: key generation, encryption, and decryption.[13]
Key confirmation delivers an assurance between the key confirmation recipient and provider that the shared keying materials are correct and established. The National Institute of Standards and Technology recommends key confirmation to be integrated into a key establishment scheme to validate its implementations.[12]
## Management
Key management concerns the generation, establishment, storage, usage and replacement of cryptographic keys. A key management system (KMS) typically includes three steps of establishing, storing and using keys. The base of security for the generation, storage, distribution, use and destruction of keys depends on successful key management protocols.[14]
## Key vs password
A password is a memorized series of characters including letters, digits, and other special symbols that are used to verify identity. It is often produced by a human user or a password management software to protect personal and sensitive information or generate cryptographic keys. Passwords are often created to be memorized by users and may contain non-random information such as dictionary words.[12] On the other hand, a key can help strengthen password protection by implementing a cryptographic algorithm which is difficult to guess or replace the password altogether. A key is generated based on random or pseudo-random data and can often be unreadable to humans.[15]
A password is less safe than a cryptographic key due to its low entropy, randomness, and human-readable properties. However, the password may be the only secret data that is accessible to the cryptographic algorithm for information security in some applications such as securing information in storage devices. Thus, a deterministic algorithm called a key derivation function (KDF) uses a password to generate the secure cryptographic keying material to compensate for the password's weakness. Various methods such as adding a salt or key stretching may be used in the generation.[12]
## See also
* Cryptographic key types
* Diceware
* EKMS
* Group key
* Keyed hash algorithm
* Key authentication
* Key derivation function
* Key distribution center
* Key escrow
* Key exchange
* Key generation
* Key management
* Key schedule
* Key server
* Key signature (cryptography)
* Key signing party
* Key stretching
* Key-agreement protocol
* Password psychology
* Public key fingerprint
* Random number generator
* Session key
* Tripcode
* Machine-readable paper key
* Weak key`
func TestCensorLikelyKeys(t *testing.T) {
tests := []struct {
name string
input, output string
}{
{
"wikipedia article",
wikipediaSecretKeyArticle,
wikipediaSecretKeyArticle,
}, {
"secret key with high entropy text",
`sk-cMzoNlw2`,
`sk-********`,
}, {
"high entropy text",
`cMzoNlw2`,
`********`,
}, {
"medium entropy text - not enough to get censored",
`49049167`,
`49049167`,
}, {
"same number with a secret key prefix - lowers threshold enough to get censored",
`sk-49049167`,
`sk-********`,
}, {
"secret key prefix with very low entropy text - not censored",
`sk-secretss`,
`sk-secretss`,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := CensorLikelyKeys(tt.input); got != tt.output {
t.Errorf("CensorLikelyKeys() = %q, want %q", got, tt.output)
}
if got := CensorLikelyKeysBytes([]byte(tt.input)); string(got) != tt.output {
t.Errorf("CensorLikelyKeysBytes() = %q, want %q", got, tt.output)
}
var b strings.Builder
err := Copy(&b, strings.NewReader(tt.input))
if err != nil {
t.Errorf("Copy() err = %v", err)
}
if b.String() != tt.output {
t.Errorf("Copy() = %q, want %q", b.String(), tt.output)
}
})
}
}
func FuzzTransformerConsistency(f *testing.F) {
// Seed with known problematic cases
f.Add("sk-key-agreement transaction")
f.Add("key-12345 and more text sk-abcdef")
f.Add("sk-") // Minimal prefix
f.Add(strings.Repeat("sk-", 1000)) // Many small matches
f.Add("sk-" + strings.Repeat("a", 1000)) // Very long match
f.Fuzz(func(t *testing.T, input string) {
// Test the simple string version
expected := CensorLikelyKeys(input)
expected2 := string(CensorLikelyKeysBytes([]byte(input)))
if expected2 != expected {
t.Fatalf("CensorLikelyKeysBytes() doesn't match CensorLikelyKeys(): got %q, want %q", expected2, expected)
}
// Test the streaming version with various buffer sizes
bufferSizes := []int{1, 2, 3, 7, 8, 16, 32, 64, 128, 1024}
for _, bufSize := range bufferSizes {
t.Run(fmt.Sprintf("bufsize_%d", bufSize), func(t *testing.T) {
var result strings.Builder
reader := &limitedReader{
Reader: strings.NewReader(input),
chunkSize: bufSize,
}
err := Copy(&result, reader)
if err != nil {
t.Fatalf("Copy failed with buffer size %d: %v", bufSize, err)
}
if result.String() != expected {
t.Errorf("Buffer size %d: got %q, want %q",
bufSize, result.String(), expected)
}
})
}
})
}
// limitedReader simulates partial reads to stress-test boundary conditions
type limitedReader struct {
io.Reader
chunkSize int
}
func (r *limitedReader) Read(p []byte) (n int, err error) {
if len(p) > r.chunkSize {
p = p[:r.chunkSize]
}
return r.Reader.Read(p)
}
func Test_trimIncompleteLastRune(t *testing.T) {
tests := []struct {
in, out string
}{
{"", ""},
{"hello", "hello"},
{"hello", "hello"},
{"caf\xc3\xa9", "café"},
{"caf\xc3", "caf"},
{".\xe4\xb8\xad", ".中"},
{".\xe4\xb8", "."},
{".\xe4", "."},
{".", "."},
{"\xe4\xb8\xad", "中"},
{"\xe4\xb8", ""},
{"\xe4", ""},
}
for _, tt := range tests {
t.Run(fmt.Sprintf("%q", tt.in), func(t *testing.T) {
if got := trimIncompleteLastRune([]byte(tt.in)); string(got) != tt.out {
t.Errorf("trimIncompleteLastRune(%q) = %q, want %q", tt.in, got, tt.out)
}
})
}
}
func Test_trimLastWordBoundary(t *testing.T) {
tests := []struct {
in, out string
}{
{"", ""},
{"hello", ""},
{" hello", " "},
{"hello world", "hello "},
{"hello world!", "hello world"},
}
for _, tt := range tests {
t.Run(fmt.Sprintf("%q", tt.in), func(t *testing.T) {
if got := trimLastWordBoundary([]byte(tt.in)); string(got) != tt.out {
t.Errorf("trimLastWordBoundary(%q) = %q, want %q", tt.in, got, tt.out)
}
})
}
}
func Test_copyCompleteWords(t *testing.T) {
tests := []struct {
in string
n int
out string
}{
{"", 10, ""},
{"hello", 10, "hello"},
{"hello", 5, "hello"},
{"hello", 4, ""},
{"hi, there", 4, "hi, "},
{"hi...", 4, "hi"},
}
for _, tt := range tests {
t.Run(fmt.Sprintf("%q n=%d", tt.in, tt.n), func(t *testing.T) {
buf := make([]byte, tt.n)
if n := copyCompleteWords(buf, []byte(tt.in)); string(buf[:n]) != tt.out {
t.Errorf("copyCompleteWords(len=%d, %q) = %q, want %q", tt.n, tt.in, buf[:n], tt.out)
}
})
}
}

21
cmd/calc/main.go Normal file
View File

@ -0,0 +1,21 @@
// Rrea
package main
import (
"fmt"
"log"
"os"
"smariot.com/complexity"
)
func main() {
entropy, count, err := complexity.Reader(os.Stdin)
fmt.Printf("read %d runes, entropy=%fb, average=%fb/rune\n", count, entropy, entropy/float32(count))
if err != nil {
log.Fatal(err)
}
}

79
complexity.go Normal file
View File

@ -0,0 +1,79 @@
// Complexity performs some rudimentary entropy calculations based on ASCII bi-grams, which can be
// used to censor potential secret keys or passwords in text, and to estimate password strength.
//
// The matrix it uses only covers printable ASCII text, other runes are all interpreted as being \x127.
//
// The package isn't well tested, and the source data the matrix tabe
package complexity
import (
"bufio"
"io"
"unicode/utf8"
)
type state struct {
prev rune
count int64
entropy float64
}
func runeIdx(r rune) int {
if r < firstRune || r > lastRune {
return sz - 1
}
return int(r - firstRune)
}
func (s *state) put(next rune) {
s.entropy += float64(matrix[runeIdx(s.prev)*sz+runeIdx(next)])
s.count++
s.prev = next
}
func runeReader(r io.RuneReader) (float32, int64, error) {
s := state{prev: lastRune}
for {
r, _, err := r.ReadRune()
if err != nil {
if err == io.EOF {
err = nil
}
return float32(s.entropy), s.count, err
}
s.put(r)
}
}
func Reader(r io.Reader) (float32, int64, error) {
if r, ok := r.(io.RuneReader); ok {
return runeReader(r)
}
return runeReader(bufio.NewReader(r))
}
func Bytes(text []byte) (float32, int) {
s := state{prev: lastRune}
for i := 0; i != len(text); {
r, sz := utf8.DecodeRune(text[i:])
i += sz
s.put(r)
}
return float32(s.entropy), int(s.count)
}
func String(text string) (float32, int) {
s := state{prev: lastRune}
for _, r := range text {
s.put(r)
}
return float32(s.entropy), int(s.count)
}

112
gen.go Normal file
View File

@ -0,0 +1,112 @@
//go:build ignore
package main
import (
"bufio"
"fmt"
"io"
"log"
"math"
"os"
"regexp/syntax"
)
const (
runeStart rune = 32
runeLast rune = 127
sz = int(runeLast + 1 - runeStart)
)
func getCounts(r io.Reader) (matrix [sz * sz]uint64, err error) {
b := bufio.NewReader(r)
prev := runeLast
for {
r, _, err := b.ReadRune()
if err == io.EOF {
return matrix, nil
}
if err != nil {
return matrix, err
}
if r < runeStart || r > runeLast {
r = runeLast
}
matrix[int(prev-runeStart)*sz+int(r-runeStart)]++
if prev != runeLast && !syntax.IsWordChar(prev) && syntax.IsWordChar(r) {
// when transitioning to a non-word to a word, train this as if the previous
// rune were lastRune, as this seems like a sensible way to start a piece of random text.
matrix[(sz-1)*sz+int(r-runeStart)]++
}
prev = r
}
}
func calcEntropy(in [sz * sz]uint64) (out [sz * sz]float64) {
var fallbackCount [sz]uint64
var fallbackSum uint64
for i, cnt := range in {
fallbackCount[i%sz] += cnt
fallbackSum += cnt
}
for row := range sz {
var sum uint64
for _, c := range in[row*sz : row*sz+sz] {
sum += c
}
for column, c := range in[row*sz : row*sz+sz] {
p := (float64(2*(fallbackSum+1))*float64(c) + float64(2*fallbackCount[column]+1)) / float64(float64(2*(fallbackSum+1))*float64(sum+1))
if p <= 0 || p >= 1 {
log.Printf("c=%d fallbackSum=%d fallbackCount[column]=%d sum=%d\n", c, fallbackSum, fallbackCount[column], sum)
log.Fatalf("got p=%f for %c->%c\n", p, runeStart+rune(row), runeStart+rune(column))
}
out[row*sz+column] = -math.Log2(p)
}
}
return
}
func calcMeanEntropy(counts [sz * sz]uint64, entropies [sz * sz]float64) float64 {
var sumEntropy float64
var sumCount uint64
for i, c := range counts {
sumCount += c
sumEntropy += entropies[i] * float64(c)
}
return sumEntropy / float64(sumCount)
}
func main() {
cnts, err := getCounts(os.Stdin)
if err != nil {
log.Fatal(err)
}
entropy := calcEntropy(cnts)
fmt.Printf("var matrix = [%d*%d]float32{", sz, sz)
for row := range sz {
for i, v := range entropy[row*sz : row*sz+sz] {
if i == 0 {
fmt.Printf("\n ")
} else {
fmt.Printf(" ")
}
fmt.Printf("%f,", v)
}
}
fmt.Printf("}\n\nconst meanEntropy = %f\n", calcMeanEntropy(cnts, entropy))
}

5
go.mod Normal file
View File

@ -0,0 +1,5 @@
module smariot.com/complexity
go 1.24.4
require golang.org/x/text v0.28.0

2
go.sum Normal file
View File

@ -0,0 +1,2 @@
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=

112
matrix.go Normal file
View File

@ -0,0 +1,112 @@
package complexity
const (
sz = 96
firstRune = ' '
lastRune = firstRune + sz - 1
)
var matrix = [96 * 96]float32{
3.542541, 18.093813, 8.542135, 14.567364, 13.202914, 19.438994, 12.164298, 10.572535, 8.885802, 18.848525, 10.437370, 13.314852, 16.688071, 10.688430, 11.223346, 15.151529, 13.054270, 7.967609, 9.161411, 9.885703, 10.437174, 10.771935, 11.045407, 11.496436, 11.339483, 11.662246, 15.814086, 16.938429, 17.321866, 11.812542, 17.260100, 17.808531, 18.730080, 7.121635, 7.631087, 7.496844, 8.179504, 8.216615, 8.124803, 7.775192, 7.566095, 6.434083, 8.767922, 9.421537, 7.999103, 7.308874, 8.562002, 8.618467, 7.555784, 11.545375, 8.449999, 7.035577, 6.821715, 9.760136, 9.449488, 8.075072, 11.881002, 9.770059, 11.582034, 11.019950, 17.678270, 18.967857, 17.923135, 8.281054, 16.266338, 3.512539, 4.967095, 4.960766, 4.895961, 5.436070, 5.085710, 6.234813, 4.474024, 4.554014, 7.852145, 7.204674, 5.360955, 4.965581, 5.714536, 4.151572, 5.112836, 7.864865, 5.851509, 4.219773, 3.101413, 6.550681, 6.678638, 4.363940, 13.134098, 6.802086, 9.534640, 13.797273, 10.007057, 15.723152, 14.762111, 6.904361,
1.120367, 8.711782, 2.497535, 15.610662, 18.130668, 21.536656, 15.771126, 5.969074, 14.910221, 6.853294, 13.804663, 14.151230, 10.698559, 5.759046, 5.532533, 16.545706, 22.273301, 17.449167, 18.649098, 18.466248, 18.951671, 19.688620, 19.399126, 20.273574, 19.688622, 20.399101, 14.763191, 13.731883, 13.600023, 12.041606, 13.203953, 11.729628, 20.051234, 16.792467, 20.688375, 19.688500, 22.272954, 20.157928, 22.272977, 20.688407, 21.050815, 19.610314, 19.858519, 20.273563, 21.050909, 18.951591, 21.050945, 20.688452, 20.688364, 21.536624, 22.272946, 19.770875, 19.334801, 34.655537, 21.273490, 22.857563, 22.273563, 21.858382, 20.858568, 10.334048, 21.273626, 11.137918, 15.797893, 6.570958, 21.273625, 18.156393, 19.334199, 18.272994, 19.102083, 18.725843, 19.687279, 18.648605, 18.571732, 18.571341, 21.050795, 20.398315, 19.397196, 19.102633, 18.647257, 19.395596, 20.686187, 19.610529, 19.332463, 17.398375, 18.726360, 19.856660, 20.535472, 19.333900, 21.051013, 21.270831, 23.856766, 17.144344, 19.158141, 16.781774, 13.244800, 1.824832,
2.024771, 12.858291, 15.464518, 16.565305, 17.396272, 20.180014, 16.781465, 7.697430, 12.666287, 9.918454, 13.583825, 15.561295, 7.198954, 7.113077, 8.511593, 16.413034, 17.344822, 12.373245, 13.372952, 14.002821, 14.490334, 14.728054, 15.185146, 15.465768, 15.704280, 15.942478, 11.561963, 9.287972, 16.787697, 13.768311, 17.897979, 11.465613, 19.230055, 5.125846, 5.923913, 6.807554, 6.303508, 7.396574, 7.379813, 6.968296, 5.527531, 3.697994, 7.881587, 8.289983, 6.895378, 5.866635, 5.623473, 5.770661, 7.016915, 10.368384, 8.050651, 5.708560, 4.440897, 9.343910, 8.390360, 4.599713, 15.275311, 5.162052, 11.262982, 8.675681, 18.793956, 9.852845, 19.708709, 7.693202, 12.583655, 6.637298, 7.285429, 8.317491, 8.360162, 8.877387, 8.313447, 9.054498, 7.932518, 7.343215, 10.475796, 10.193590, 8.711286, 8.265239, 8.815718, 8.522553, 8.421905, 12.381911, 9.113695, 7.432722, 6.121198, 10.217381, 10.334489, 7.339970, 17.180010, 8.408019, 13.095931, 15.391519, 14.726557, 15.887902, 17.217381, 2.163968,
3.046728, 12.710900, 11.215089, 2.265126, 12.571931, 35.032339, 19.186593, 12.777226, 10.428417, 6.225734, 10.542785, 15.486197, 3.407178, 6.464474, 5.922491, 10.181017, 11.542780, 4.757823, 4.947640, 5.108657, 5.511787, 5.406409, 5.522972, 6.009222, 7.890872, 8.003626, 6.791643, 7.624876, 17.186640, 12.514214, 19.186635, 12.996808, 18.186641, 6.689537, 6.817589, 6.826068, 7.204004, 7.632531, 7.839573, 7.423428, 7.778311, 8.467249, 9.029293, 8.228813, 7.445174, 7.760375, 8.740591, 8.985741, 6.901528, 10.026770, 7.942277, 6.784428, 7.540531, 10.605439, 8.900083, 7.987582, 10.873758, 10.524861, 10.475835, 10.350590, 15.486201, 7.358902, 15.727209, 5.179264, 36.410136, 6.692270, 7.589514, 6.786557, 7.095196, 7.154567, 7.508914, 8.136103, 7.634434, 7.025179, 11.411840, 11.057325, 8.157334, 7.494453, 7.716466, 8.390558, 6.759063, 8.091243, 8.076784, 6.703065, 7.781994, 8.731292, 8.070292, 9.006710, 13.303972, 11.882754, 11.948225, 14.232444, 5.077709, 13.057358, 12.486201, 4.884571,
4.482069, 16.148224, 14.794561, 16.510866, 9.418868, 15.318224, 17.733246, 11.597116, 9.545085, 8.377177, 16.733225, 16.733252, 8.669857, 8.897209, 7.511269, 11.883596, 7.290319, 1.417276, 3.072264, 3.814927, 4.378600, 2.522502, 4.990251, 5.171895, 5.522693, 5.938982, 11.257526, 9.421891, 37.530499, 14.460236, 17.318223, 14.925876, 19.318223, 8.118551, 8.863924, 10.244078, 9.171018, 10.276560, 10.355325, 9.862895, 10.553347, 11.279281, 11.842485, 10.580131, 10.230758, 8.954088, 6.290146, 11.329533, 10.005338, 13.089404, 10.273827, 8.719239, 10.282041, 12.023599, 10.943183, 10.681595, 14.674361, 15.230713, 11.576757, 11.652887, 13.014444, 12.794659, 16.148299, 9.962870, 36.541720, 12.041511, 12.875063, 13.825697, 12.060551, 11.841810, 13.536412, 12.523632, 14.107238, 12.060366, 15.617549, 13.363879, 12.925394, 13.251705, 13.127448, 13.994337, 13.645362, 15.411166, 13.994822, 11.883198, 13.385796, 13.562766, 12.423307, 13.562857, 13.510842, 14.562716, 12.703497, 19.318196, 14.925896, 15.733260, 17.733252, 7.364376,
1.192643, 14.014935, 14.415400, 17.059343, 15.599915, 13.082069, 16.737412, 15.889191, 13.444629, 6.624721, 19.059122, 17.474366, 2.267271, 8.602993, 6.913733, 8.141232, 18.058861, 11.624706, 11.624713, 12.025919, 12.152452, 12.401130, 15.474328, 15.474334, 15.251940, 15.474335, 5.783225, 5.780174, 37.271623, 13.128609, 15.737421, 15.059308, 12.889425, 11.982502, 11.993241, 12.792525, 11.575523, 13.737350, 13.251960, 12.317861, 12.755532, 15.058937, 13.415471, 10.559502, 13.059314, 11.641478, 12.889397, 14.971774, 11.351978, 17.059303, 12.971857, 9.852328, 12.869454, 14.599881, 13.849874, 14.014893, 14.014950, 19.058519, 16.059329, 13.277984, 18.059348, 12.971882, 19.059340, 10.732911, 36.282845, 15.053649, 18.049856, 14.014035, 14.533888, 15.464308, 16.732441, 16.056897, 16.726110, 12.550764, 18.057812, 16.735568, 24.121590, 15.150536, 15.881715, 17.039870, 14.810248, 17.058717, 18.030134, 13.385574, 15.590564, 16.469248, 18.053412, 16.732242, 28.921907, 25.484347, 19.057527, 34.660948, 12.226458, 14.811421, 34.524393, 1.809208,
0.795140, 15.532980, 15.412622, 10.844683, 20.056542, 18.471601, 12.236392, 14.223645, 11.664253, 12.856896, 19.056458, 20.056507, 9.681519, 13.532968, 9.167822, 15.597137, 30.582763, 13.597110, 16.056484, 16.597047, 15.808600, 17.056472, 18.471373, 18.056412, 17.249107, 18.471400, 14.886626, 13.412699, 20.056567, 16.886621, 37.788550, 5.204725, 20.056570, 12.363063, 14.532953, 9.187747, 12.419937, 13.866707, 15.102312, 15.412623, 14.249164, 14.328526, 14.664227, 16.356073, 14.034169, 11.460373, 13.580815, 13.886620, 12.927269, 17.734606, 12.927274, 11.958524, 11.301672, 17.249101, 14.532992, 14.532965, 32.944173, 17.056468, 17.471581, 14.969098, 14.808644, 13.699015, 13.211081, 11.198585, 37.280067, 10.012091, 15.967989, 1.688909, 14.248436, 10.576621, 11.501916, 14.734153, 13.846351, 10.707733, 17.734028, 17.247892, 9.163247, 10.780401, 12.441507, 10.942688, 12.937470, 15.734517, 8.394330, 13.501250, 13.287440, 11.445468, 14.412477, 5.968444, 18.056184, 13.501804, 18.056116, 35.658170, 14.597135, 15.969107, 19.056556, 4.277236,
3.408361, 11.175417, 8.393290, 19.931014, 19.026172, 23.900633, 19.181822, 11.114235, 15.323212, 11.258213, 16.400795, 18.691187, 8.232781, 8.644383, 8.824229, 17.247199, 12.548965, 10.919966, 12.448228, 12.819823, 12.749201, 13.397146, 11.854654, 13.389547, 12.861265, 13.187827, 12.653505, 10.343137, 18.885691, 15.416825, 17.145753, 10.694339, 20.356320, 6.270706, 8.778379, 8.894841, 9.103233, 7.602656, 9.842142, 9.530453, 8.017576, 6.592338, 11.189046, 11.322976, 9.285184, 8.723066, 8.743439, 7.832122, 9.622337, 12.925510, 10.049836, 7.109024, 6.891997, 10.277369, 11.246229, 7.951468, 16.460464, 8.628436, 14.200779, 11.249963, 19.730716, 12.079398, 19.128051, 8.824633, 17.691188, 3.497779, 9.228565, 7.390011, 5.492148, 3.777436, 9.804310, 10.211370, 6.449282, 4.557280, 12.848525, 10.787875, 5.060075, 5.804614, 7.601343, 5.274533, 9.325870, 13.608319, 6.179368, 1.954850, 3.311651, 5.177540, 6.017682, 9.572761, 15.867216, 7.254181, 13.667420, 16.416825, 17.080461, 17.627622, 17.560791, 4.132583,
10.389119, 11.111313, 8.211334, 10.522175, 7.203252, 14.506142, 9.772479, 9.892629, 13.197173, 14.569072, 10.453772, 10.960314, 14.158610, 8.462636, 11.383911, 12.316156, 11.023440, 3.728739, 4.580153, 5.757342, 7.039481, 7.526002, 7.861816, 8.145910, 6.723609, 8.439659, 15.748213, 14.258829, 13.631673, 8.801310, 16.925094, 6.605103, 17.163254, 4.963641, 6.334172, 5.835349, 6.228684, 6.645824, 6.000080, 6.933696, 6.767582, 5.758870, 6.851447, 7.953176, 6.176409, 5.764928, 6.615556, 7.511144, 5.427356, 9.956177, 6.958338, 5.585650, 6.026402, 8.672326, 7.306649, 6.806068, 10.330202, 10.238594, 8.378703, 9.805251, 14.131244, 15.932954, 13.520878, 3.684194, 14.088907, 4.082885, 5.772210, 5.189331, 5.943333, 6.474644, 5.812683, 8.027939, 6.718398, 5.082983, 8.955238, 8.337928, 6.708045, 6.640898, 6.375717, 4.701105, 5.648970, 8.677321, 7.129707, 4.948355, 4.742534, 8.159681, 7.021671, 5.165328, 9.697844, 9.606206, 9.588636, 13.067113, 17.126725, 21.448649, 9.553460, 5.640301,
1.371695, 11.784732, 11.649037, 12.924270, 13.650245, 17.676240, 15.104453, 13.571901, 7.236126, 10.988976, 12.635826, 14.231188, 2.273772, 7.611963, 2.831047, 8.221922, 18.328289, 14.891539, 13.771098, 14.922322, 14.989992, 16.515079, 15.631048, 17.135664, 16.716126, 17.435222, 6.372221, 4.105440, 17.135672, 10.180458, 19.135672, 10.917472, 23.457598, 11.127523, 12.712765, 15.312931, 16.380769, 15.108863, 13.031334, 16.624690, 14.413200, 13.785166, 15.612105, 17.082551, 15.457591, 15.998150, 13.945845, 15.006383, 15.257918, 16.857685, 16.380769, 14.515077, 12.751964, 18.550682, 16.637414, 14.312938, 18.702705, 15.918437, 19.370127, 10.041726, 13.831891, 7.387919, 12.996120, 7.467762, 21.872634, 11.590297, 14.216777, 14.359512, 13.256664, 10.933282, 14.941832, 13.996093, 14.547589, 11.202557, 18.065209, 13.386129, 12.798469, 14.212000, 12.376084, 12.583345, 12.765843, 16.574935, 13.156057, 12.217973, 12.433796, 12.859528, 15.785116, 14.214383, 14.760629, 14.190786, 16.100037, 15.965747, 10.775703, 12.579549, 11.425554, 2.650162,
0.929666, 13.719722, 11.837599, 13.700665, 9.217505, 21.274300, 15.952384, 13.444585, 12.258897, 10.230943, 2.781626, 15.145029, 4.944560, 9.173814, 7.906556, 11.696884, 14.881989, 9.191830, 10.122661, 10.504888, 10.945076, 11.040093, 11.835520, 12.210917, 12.582568, 12.837600, 11.277133, 10.576910, 17.186849, 10.586499, 19.952383, 13.045493, 19.952384, 7.528848, 8.354797, 7.319480, 8.343113, 8.311687, 8.634859, 8.779457, 8.665133, 8.868107, 10.277133, 10.195828, 8.735881, 8.036729, 9.619900, 9.195828, 7.899001, 11.600120, 8.627191, 7.738369, 7.882599, 11.031138, 9.850671, 9.501173, 12.035908, 12.494592, 11.918961, 11.342098, 19.466957, 8.286871, 15.831369, 9.476245, 17.519425, 7.694639, 8.488348, 7.917997, 8.812062, 9.505284, 9.209735, 8.929876, 10.392036, 9.105006, 11.918959, 11.542140, 7.555778, 8.538226, 8.025047, 9.006055, 8.260814, 11.892768, 8.458925, 8.177758, 7.416765, 10.967099, 9.668137, 10.645859, 14.623253, 11.613415, 11.739036, 15.674399, 12.601887, 12.361423, 16.881994, 2.644687,
2.252061, 9.940181, 10.936268, 18.143768, 13.926543, 17.658343, 17.143769, 13.346746, 12.613951, 8.293900, 14.295774, 6.187761, 4.210673, 1.489910, 5.779584, 14.336418, 8.817794, 7.256553, 8.063222, 8.442987, 8.959890, 9.202432, 10.014490, 10.387551, 10.410419, 10.699172, 7.376582, 7.948524, 16.880739, 5.823199, 15.256248, 11.610832, 17.880739, 6.620506, 6.889335, 6.947294, 6.832366, 7.425926, 7.329031, 7.305988, 7.231633, 7.404330, 8.599195, 7.358485, 7.202579, 6.853409, 8.118911, 8.601515, 6.767974, 10.447502, 7.543303, 6.226327, 6.965482, 9.650318, 8.151968, 7.660159, 12.697517, 11.642333, 9.334488, 9.789745, 16.073384, 7.926543, 19.465697, 10.217772, 13.645523, 7.892040, 8.600350, 9.115856, 7.667021, 7.901056, 9.010880, 8.506057, 8.992484, 8.416857, 11.161916, 9.338348, 9.272158, 8.651913, 8.849590, 9.688402, 8.604609, 11.720862, 9.493411, 7.604606, 9.144297, 9.506409, 8.541629, 8.695444, 10.645521, 12.717431, 9.917842, 15.710813, 11.399612, 9.957907, 8.370305, 3.625969,
0.195245, 21.640910, 5.792208, 19.349414, 21.267237, 24.398941, 19.043462, 8.956079, 14.472211, 11.716697, 14.572020, 18.340473, 13.173061, 8.120659, 14.635144, 18.226662, 8.640496, 11.706430, 11.591079, 11.821625, 11.637049, 11.213430, 11.830078, 11.957646, 11.952802, 12.114850, 18.990549, 19.062237, 18.322756, 12.903323, 23.785966, 21.026970, 24.579515, 21.128827, 21.916523, 20.616028, 20.711609, 21.679025, 21.267224, 22.257556, 20.377870, 21.219576, 22.111353, 22.276942, 21.164463, 21.441987, 21.916529, 21.871676, 21.267219, 24.901427, 23.164426, 20.585521, 21.509084, 23.128834, 22.731503, 22.842508, 22.705042, 24.901374, 24.579504, 10.413315, 23.731518, 14.835915, 15.413101, 11.916876, 23.785965, 17.847912, 19.441975, 19.301478, 19.323938, 19.591333, 19.785906, 20.128794, 19.813841, 16.201278, 21.628398, 21.173464, 19.849672, 19.734794, 19.591442, 19.640745, 19.704995, 21.555647, 19.835207, 18.687047, 16.555642, 19.552652, 20.458454, 19.383071, 22.146536, 18.384415, 22.603732, 17.761892, 16.118718, 17.773878, 18.708328, 3.381345,
4.783673, 12.094120, 6.797180, 13.956785, 14.309822, 22.018560, 16.664532, 9.559283, 10.744766, 11.991346, 14.337323, 7.389475, 9.291768, 1.436493, 10.277958, 14.654865, 12.199021, 6.733676, 8.313988, 8.720227, 9.016968, 9.421801, 8.799695, 9.772756, 9.610789, 9.966112, 14.326818, 13.053643, 17.789743, 11.061060, 13.020535, 11.532028, 20.948172, 7.038565, 7.812837, 7.150416, 7.957431, 7.797257, 8.547039, 7.935007, 8.008300, 6.687541, 8.383455, 9.464896, 7.850277, 7.212135, 8.289658, 8.371378, 7.611084, 9.897190, 8.462013, 7.143971, 6.967811, 10.195672, 8.797571, 8.568168, 13.392670, 9.884135, 11.714609, 11.642110, 17.094937, 13.297975, 17.629683, 7.623971, 15.100891, 4.909782, 5.236170, 5.323292, 5.540494, 6.108715, 5.639851, 6.596027, 5.471739, 5.846241, 8.353281, 7.820247, 5.642060, 5.473660, 6.264698, 6.102465, 5.696071, 9.410780, 6.110861, 4.875644, 4.604445, 7.539738, 7.597272, 5.559864, 13.083101, 7.729216, 11.146849, 17.128601, 11.211367, 16.950320, 15.896510, 5.260045,
0.855223, 13.566922, 4.883194, 13.861050, 15.298250, 16.872515, 16.987619, 8.094946, 12.548287, 7.515309, 12.485353, 12.337460, 6.744443, 7.213260, 4.814019, 14.540264, 9.458040, 8.592232, 9.482777, 8.744795, 9.779697, 9.481054, 9.887683, 9.558305, 9.332930, 9.579663, 11.926718, 9.774338, 16.216433, 9.003569, 17.788065, 13.042905, 20.872515, 10.533794, 11.043726, 9.733218, 10.095184, 7.359845, 8.363835, 13.147010, 12.791877, 13.341687, 13.784450, 14.667354, 13.095114, 11.087057, 13.358717, 13.126132, 12.445239, 15.645471, 12.243494, 8.648456, 13.759770, 15.698900, 14.310760, 12.253453, 16.312494, 14.232860, 16.318579, 8.549882, 17.022672, 7.495503, 13.949093, 5.962147, 21.862319, 13.227531, 14.089852, 13.300183, 15.192280, 11.204333, 13.771572, 8.593075, 14.656297, 13.911236, 15.389099, 16.572232, 15.203498, 11.777960, 11.786990, 8.617120, 11.361772, 18.302980, 15.384979, 14.092174, 13.258898, 16.288396, 13.344788, 15.568859, 16.330388, 18.120265, 15.215418, 15.115356, 11.677549, 14.044480, 12.092784, 1.818172,
3.827817, 13.115205, 11.976967, 12.032971, 13.223985, 18.599019, 16.599022, 12.905528, 9.407965, 9.601139, 10.157118, 16.599021, 6.854400, 7.699667, 8.497046, 4.194066, 5.954211, 3.497613, 3.726494, 5.513635, 4.714330, 6.473773, 5.298172, 7.059745, 5.559292, 6.084003, 9.967847, 11.500990, 18.014061, 11.782041, 5.956973, 13.147810, 17.429100, 5.771186, 9.287843, 7.495245, 9.543741, 9.807046, 9.798124, 8.504287, 9.781240, 9.743374, 10.610339, 10.643374, 8.077179, 9.094701, 9.864314, 10.436632, 9.448642, 12.656509, 9.680906, 8.544080, 9.706479, 10.942599, 10.907280, 10.051165, 12.798124, 12.753531, 12.449277, 10.839136, 10.614606, 11.365404, 16.014062, 9.363608, 17.277096, 7.022297, 8.437574, 3.383293, 3.233343, 8.100903, 5.365404, 7.752161, 4.345029, 6.491231, 12.021588, 9.759816, 4.386471, 8.022536, 7.202414, 8.161259, 7.614960, 12.955156, 7.801152, 7.386217, 7.829379, 10.473584, 9.830007, 4.327051, 11.549173, 9.322894, 11.162311, 12.123291, 11.008437, 15.644828, 11.358233, 5.870411,
2.541522, 13.267933, 12.131024, 15.291392, 14.286965, 7.111555, 19.012675, 10.756436, 13.224950, 5.907108, 13.297317, 13.609261, 3.807433, 6.400704, 3.681541, 9.186729, 2.174814, 4.353126, 4.884728, 5.107025, 5.136159, 5.100842, 5.192527, 5.214158, 5.224972, 5.079464, 7.040298, 5.905914, 18.974202, 10.129868, 15.742349, 12.286228, 16.507884, 10.284756, 15.706423, 16.139970, 11.008721, 16.440757, 11.849808, 19.974080, 15.611097, 20.314799, 9.833238, 16.891208, 14.864574, 10.403447, 11.087062, 11.089469, 16.900185, 21.052184, 16.222122, 11.155704, 13.934413, 17.762689, 17.900191, 13.851441, 16.730276, 15.825522, 19.134662, 12.473517, 12.877279, 5.606622, 11.714583, 8.447111, 21.052204, 12.360630, 12.550141, 10.939183, 12.073008, 12.804760, 12.775038, 15.592724, 14.316684, 15.267788, 14.939036, 16.339447, 11.758598, 12.437078, 13.665577, 16.339154, 14.646561, 19.900075, 16.042017, 9.411757, 7.096403, 18.636524, 15.188684, 8.624804, 15.386076, 18.155790, 19.177680, 15.532132, 8.180278, 9.384945, 13.957687, 3.926635,
4.413609, 16.180121, 13.988310, 16.428420, 16.036438, 9.771847, 18.918075, 13.300143, 8.936040, 6.504412, 14.343029, 14.358869, 4.748942, 7.196245, 2.904712, 7.526774, 3.837033, 4.227460, 4.156321, 4.377665, 4.308832, 3.925657, 3.982382, 3.876149, 2.899081, 3.656631, 7.283315, 6.968834, 19.493191, 11.015143, 15.378280, 14.528584, 19.616047, 10.920007, 15.679537, 15.728518, 11.460442, 16.855226, 12.131157, 18.841084, 17.393641, 19.063406, 10.486135, 16.219156, 18.107883, 10.748837, 11.937193, 11.440124, 16.958144, 18.822496, 16.728516, 11.678493, 15.717724, 18.918065, 19.107888, 15.036436, 17.759171, 18.435467, 22.522910, 14.154431, 13.650520, 6.060827, 12.602585, 9.753754, 24.107896, 12.687924, 13.214973, 13.910057, 12.979574, 11.265935, 13.705945, 17.456751, 14.424871, 15.379895, 17.978596, 16.869465, 14.182324, 14.378263, 14.294882, 15.677334, 15.268672, 18.978581, 13.867085, 7.357946, 9.780521, 18.998929, 15.891135, 16.203965, 16.898442, 18.917846, 19.522900, 16.446122, 10.027083, 9.765895, 14.242167, 5.537263,
3.896102, 15.211043, 12.527078, 15.926871, 15.685863, 8.947407, 18.362456, 12.139008, 13.006058, 5.951453, 13.573805, 13.243345, 4.209883, 6.664748, 3.519881, 8.692439, 3.039330, 3.929916, 3.977730, 4.091825, 4.040165, 3.938502, 4.203932, 4.232945, 4.239239, 4.308496, 6.586334, 6.114364, 19.123269, 9.809378, 15.017069, 13.602322, 17.565273, 10.395348, 14.844041, 13.597964, 11.239098, 16.108309, 11.904638, 17.485818, 12.990554, 17.374276, 9.929538, 14.765716, 16.918141, 10.600251, 10.860260, 11.131117, 15.413605, 18.163908, 15.495528, 11.262181, 15.296004, 17.606685, 17.350673, 14.135845, 16.118267, 18.064364, 18.435210, 12.869552, 12.851806, 5.411285, 11.638782, 8.688959, 22.708228, 11.955833, 12.358761, 12.767173, 8.120688, 11.452793, 12.781433, 16.078809, 14.989323, 13.243992, 16.971246, 16.453949, 13.317324, 8.925539, 7.550094, 14.432023, 14.259749, 18.205694, 15.850081, 9.332466, 8.789211, 14.931203, 14.363923, 15.284715, 14.957801, 17.304377, 17.678465, 15.151087, 9.143685, 8.379977, 13.501217, 4.822241,
3.696740, 14.855666, 13.118970, 15.484434, 15.675888, 8.617816, 18.364472, 12.114124, 13.093308, 5.511703, 13.345415, 13.221226, 3.691900, 6.352369, 3.241180, 8.249458, 3.452984, 4.017441, 4.150468, 4.218411, 4.265411, 4.151201, 4.283714, 4.327184, 4.361094, 4.412991, 6.360373, 5.793074, 18.831599, 9.747182, 14.885639, 13.174228, 17.941782, 10.184670, 15.174222, 14.164171, 10.933754, 16.334085, 11.157926, 16.739137, 14.273400, 17.769222, 9.643011, 15.680655, 17.024225, 10.239692, 10.997779, 10.954360, 14.719385, 18.597130, 13.858365, 11.032794, 15.079847, 18.459612, 18.061067, 14.044079, 15.656967, 17.919049, 19.671126, 13.150878, 12.487043, 5.101951, 11.727386, 8.538500, 41.142557, 11.839556, 11.689939, 12.518705, 8.092637, 11.447112, 12.792347, 16.451346, 15.211567, 14.019630, 16.964841, 16.615223, 13.811806, 13.527797, 13.323760, 14.924555, 14.663997, 20.218428, 7.642665, 9.449926, 8.477089, 18.873733, 14.818378, 16.124530, 15.293350, 17.218461, 17.111691, 15.334100, 8.990868, 8.697777, 13.997221, 4.570680,
3.552077, 14.790567, 12.278479, 15.304307, 15.773151, 8.262632, 18.694540, 11.792394, 12.771709, 5.805971, 13.108668, 12.974893, 3.760789, 5.770488, 3.202025, 9.142513, 3.778810, 3.983107, 4.227806, 4.273118, 4.303611, 4.201677, 4.354360, 4.345405, 4.320922, 4.358781, 6.288175, 5.566259, 18.381383, 9.242893, 14.814123, 13.070050, 13.549111, 9.980712, 15.259148, 15.172874, 11.056599, 16.169065, 10.808383, 18.095033, 14.283604, 17.983926, 9.589188, 15.646175, 16.761637, 10.042402, 10.626985, 10.761298, 16.500513, 18.312666, 16.694526, 10.895210, 13.088778, 17.011007, 18.738910, 13.860882, 16.444313, 17.381373, 19.038489, 12.852477, 12.368793, 4.993412, 11.135077, 8.683526, 20.738934, 11.826397, 12.119626, 13.182409, 10.859538, 11.860852, 12.805970, 16.416885, 14.967316, 13.327372, 16.529461, 16.435096, 13.874703, 13.238074, 12.919516, 13.298010, 14.490971, 19.490875, 16.738474, 10.381377, 6.211053, 18.345883, 14.686345, 16.750046, 15.430592, 18.784198, 18.312628, 14.115054, 8.729107, 8.703019, 13.720735, 4.351879,
3.462834, 14.381879, 12.594257, 15.413196, 15.616866, 7.955718, 18.923252, 11.361829, 13.636530, 5.829965, 13.008654, 13.013789, 3.705630, 5.813732, 3.206110, 8.838350, 3.265569, 4.445592, 4.381865, 4.464519, 4.318369, 4.410956, 4.457593, 4.492022, 4.512371, 4.338517, 6.424511, 5.502588, 19.086752, 9.442391, 14.872627, 12.881985, 15.540784, 9.588182, 15.238748, 15.134411, 10.915225, 15.793958, 10.717285, 17.373028, 14.945967, 18.560500, 9.137567, 15.435985, 16.408666, 9.738732, 10.454629, 10.515834, 16.949224, 19.408671, 16.643130, 10.509021, 13.210968, 18.823691, 18.238737, 13.874180, 15.897717, 17.030160, 19.408672, 12.833519, 12.327596, 5.012711, 11.846438, 8.457978, 23.730599, 11.837662, 12.118655, 10.746720, 12.163113, 12.103948, 12.791751, 16.463694, 14.811628, 14.936030, 15.823705, 17.002600, 13.214879, 10.206554, 12.998400, 15.823391, 14.799825, 19.338170, 16.988590, 9.343530, 6.442913, 19.728679, 14.705446, 17.145375, 15.747608, 19.029523, 16.799856, 15.449837, 8.524471, 8.960615, 13.883551, 4.060526,
3.640015, 14.886618, 12.369267, 15.266174, 15.883147, 8.359812, 18.939729, 11.821620, 12.410534, 5.771284, 12.935229, 13.342796, 3.701375, 5.646851, 3.244226, 9.096941, 3.743677, 4.309669, 4.165246, 4.317775, 4.123505, 4.247054, 4.356761, 4.404971, 4.401709, 4.474101, 6.311340, 5.410744, 18.828699, 9.461406, 14.972562, 13.193418, 16.883147, 9.824947, 14.954224, 15.533727, 10.789374, 16.091718, 10.708605, 18.828614, 13.140641, 18.583380, 9.264762, 14.496123, 16.713203, 9.820271, 10.654328, 10.633213, 16.191254, 18.298180, 16.776214, 10.699798, 13.039585, 18.998591, 19.124118, 13.817056, 15.789170, 17.174186, 20.124140, 12.868483, 12.191270, 4.888637, 11.502769, 7.252285, 20.998623, 11.820348, 12.028512, 13.196624, 7.610225, 11.971140, 12.625747, 16.335530, 14.957734, 12.762571, 16.528281, 16.572288, 14.208483, 9.226034, 12.807937, 15.744041, 14.719353, 20.413381, 16.762886, 8.834972, 6.476482, 19.260115, 14.609149, 17.474687, 15.485549, 18.628849, 18.496071, 15.040555, 8.666401, 8.856730, 13.782687, 4.279695,
3.528409, 14.885962, 13.085547, 15.137857, 15.974359, 8.303411, 18.196750, 11.732702, 13.658786, 5.657089, 12.667571, 13.381491, 3.755430, 6.089266, 3.194563, 8.864284, 4.017331, 4.357118, 4.355875, 4.405667, 4.351455, 4.100007, 4.252412, 4.183912, 4.189414, 4.142138, 6.361035, 5.282342, 18.727266, 9.665870, 14.974359, 13.157972, 18.196751, 9.842925, 14.986291, 16.047508, 10.704076, 16.206010, 10.621454, 18.196692, 15.267824, 18.896916, 9.232299, 16.282476, 17.272669, 9.695475, 10.566087, 10.475301, 16.470905, 17.253332, 16.282467, 10.604294, 13.049608, 16.912289, 19.234183, 13.610246, 17.055886, 17.809712, 20.312210, 12.858272, 12.093060, 4.836024, 11.809286, 8.660728, 22.482149, 11.736873, 11.892028, 13.483533, 12.034538, 12.182325, 13.021680, 16.539479, 14.771212, 15.362953, 16.322261, 17.234104, 14.605545, 13.882203, 12.799117, 16.957739, 15.205957, 21.159719, 16.852201, 9.769299, 6.408932, 19.480224, 14.757611, 17.550991, 16.459774, 19.481104, 18.781644, 15.394691, 8.717282, 8.892502, 13.929484, 4.249472,
3.702469, 14.868835, 12.597490, 15.530034, 16.201412, 8.549297, 18.676190, 11.911124, 13.055432, 5.988237, 13.209065, 13.261817, 4.013107, 6.372083, 3.494588, 9.189179, 3.800288, 4.273013, 4.331249, 4.224967, 4.022915, 4.080457, 3.989826, 3.975200, 3.954734, 4.072872, 6.620072, 5.637313, 19.304222, 9.914640, 14.992165, 13.219655, 17.856763, 9.999819, 15.568888, 16.105428, 10.900629, 15.930751, 10.908980, 19.304117, 15.520470, 19.763241, 9.511728, 16.686833, 17.593697, 9.963259, 10.781730, 10.901016, 16.893266, 23.763468, 17.271778, 10.818576, 13.360638, 19.676144, 16.573824, 14.054568, 17.209063, 17.741273, 20.593710, 12.926026, 12.403905, 5.133739, 11.387800, 8.873627, 40.987149, 11.246707, 12.148938, 13.402784, 11.282099, 11.951443, 13.178675, 16.478126, 15.539463, 13.290913, 16.982266, 17.573702, 14.760755, 11.365974, 13.018780, 13.127887, 14.893242, 20.763338, 16.675757, 10.776559, 6.674389, 19.854706, 6.406557, 17.697178, 15.881004, 19.514843, 20.304057, 13.653823, 8.899855, 9.198254, 14.061481, 4.496399,
3.774574, 14.749074, 13.174283, 15.211044, 16.112128, 8.457579, 19.399702, 11.976403, 13.696005, 5.782170, 12.929704, 13.445509, 3.829855, 6.191202, 3.184519, 9.142733, 3.403376, 3.751754, 4.288366, 4.338165, 4.280108, 4.425636, 4.327018, 4.554397, 4.535579, 4.150169, 6.207149, 5.396534, 19.094850, 9.713926, 15.103464, 13.272848, 18.094851, 9.753729, 15.453735, 15.786714, 10.591403, 16.258330, 11.071690, 18.060849, 16.156233, 18.786474, 9.291104, 16.421073, 17.201737, 9.799355, 10.502571, 10.547589, 16.947980, 20.902175, 17.112104, 10.702124, 13.146201, 19.487117, 18.532945, 13.720637, 16.604523, 18.165219, 18.060899, 12.906909, 12.110500, 4.879278, 11.953352, 8.777492, 40.710663, 11.803707, 11.976397, 13.802383, 11.594234, 12.406294, 13.083073, 16.592185, 14.987165, 14.344934, 16.947976, 17.556279, 15.253405, 14.453690, 12.904040, 17.730829, 15.362967, 21.164734, 16.842722, 11.634230, 6.516107, 20.897067, 14.712354, 17.679350, 16.421067, 20.163562, 21.164875, 15.431886, 8.872688, 8.948858, 13.828957, 4.310466,
0.591795, 18.819927, 10.063112, 15.073992, 17.275625, 22.404901, 17.945476, 11.232898, 13.882654, 10.819007, 13.621365, 15.032769, 13.906376, 5.374989, 13.403962, 7.647571, 5.819697, 6.433440, 7.172888, 7.825671, 8.636966, 9.088297, 9.435282, 9.735359, 9.837586, 9.835370, 10.691522, 18.345983, 19.082981, 10.530696, 17.435282, 17.024082, 19.234984, 11.686090, 12.508071, 12.588991, 13.978642, 13.615916, 15.328088, 12.570437, 15.824954, 14.502022, 16.268767, 15.775550, 15.486039, 13.664563, 13.155399, 16.572008, 13.267916, 18.563602, 15.809955, 13.484057, 12.870279, 15.876126, 16.490021, 16.119498, 18.107225, 17.317438, 17.546926, 9.765493, 18.466309, 10.912722, 18.182516, 8.452471, 19.530439, 13.762179, 14.045872, 13.957797, 13.533486, 13.777881, 14.085963, 14.891803, 14.520149, 14.460343, 16.751446, 13.543815, 11.919740, 13.762231, 9.409021, 11.037120, 14.508041, 17.289407, 12.890497, 11.035848, 12.112943, 16.427465, 15.482044, 15.166447, 15.053230, 17.923532, 17.156965, 17.650021, 14.711421, 16.819946, 14.852880, 2.035742,
0.256237, 18.282036, 8.113825, 20.014757, 20.780292, 23.102215, 13.784808, 10.276119, 13.165215, 10.712119, 13.536167, 16.714204, 13.418344, 7.804633, 12.729354, 17.771304, 21.102160, 15.590465, 16.667589, 17.744663, 16.551472, 18.334029, 19.171472, 18.594419, 17.642785, 18.502302, 16.793880, 15.277261, 19.219578, 14.208161, 22.517258, 19.578645, 24.102220, 17.873373, 18.659248, 19.744597, 19.517217, 20.458250, 20.014701, 20.147950, 16.436878, 16.528557, 21.642687, 23.102030, 20.458274, 19.294808, 19.079822, 19.401745, 20.709775, 22.294840, 21.401624, 18.502264, 17.602346, 24.101816, 21.195276, 17.826083, 37.989822, 18.517250, 24.102137, 9.326662, 21.780293, 14.018077, 18.798440, 11.047786, 19.374300, 17.030419, 17.873275, 17.408587, 17.387767, 17.961809, 18.079661, 18.333857, 18.256237, 17.709475, 19.458303, 17.102185, 16.429690, 17.079742, 15.816707, 18.079250, 16.844760, 19.932226, 16.033333, 15.196762, 15.680006, 19.014304, 18.113443, 18.762051, 19.148000, 18.892541, 17.610358, 17.394862, 16.651009, 14.826097, 15.472864, 2.735266,
3.791319, 5.990606, 12.605178, 11.300461, 32.279601, 32.538476, 31.541254, 12.444741, 16.692266, 10.605309, 13.885392, 13.233341, 6.516591, 7.735669, 7.502934, 2.117062, 10.370839, 6.726992, 7.423650, 8.041725, 8.621313, 8.600019, 8.872597, 9.463956, 8.454372, 8.911416, 11.563475, 9.937876, 6.185975, 10.283385, 8.031001, 8.675968, 15.107816, 8.262314, 10.078043, 8.904863, 10.388973, 9.615942, 8.245690, 10.200900, 9.184968, 7.623988, 10.388984, 12.169184, 8.584246, 7.999284, 10.335202, 11.522801, 8.891867, 13.107801, 10.266490, 9.344025, 7.850417, 13.107749, 9.006274, 10.463933, 10.563493, 15.692363, 14.370817, 12.692757, 15.107815, 12.048909, 14.370849, 8.992326, 15.692774, 7.729700, 5.373099, 9.388806, 9.041510, 8.164973, 8.169149, 5.855929, 5.046653, 2.757333, 11.370774, 11.648104, 9.773559, 10.092568, 9.859279, 9.005898, 1.897449, 12.169107, 9.884897, 6.716863, 6.666157, 8.030925, 11.692407, 7.779836, 12.370773, 11.406946, 12.233264, 12.885422, 13.370827, 15.107807, 32.157822, 5.540466,
2.298381, 12.689167, 10.920293, 14.476497, 11.162182, 19.309384, 16.023984, 7.198455, 11.229902, 8.612202, 11.821547, 7.661254, 3.383995, 5.492079, 6.326082, 15.221924, 12.745236, 5.861448, 6.444427, 7.048247, 7.188339, 8.217621, 8.753480, 8.890480, 9.487015, 9.566657, 5.501693, 8.055614, 16.785825, 2.238833, 9.174480, 12.943064, 19.987459, 5.978278, 6.311678, 6.024635, 6.819445, 7.125325, 7.012328, 7.146249, 6.914489, 7.049019, 8.236668, 8.405317, 6.772442, 6.464804, 7.136140, 7.581839, 6.241134, 9.896553, 7.072812, 5.823385, 5.849555, 9.170316, 8.232321, 7.313620, 11.472548, 10.395002, 10.250719, 11.025141, 16.221924, 8.499921, 16.917070, 8.387546, 20.309385, 6.637402, 7.967937, 7.306044, 7.404845, 7.125245, 8.387359, 8.529564, 8.430662, 7.712670, 10.608513, 9.584233, 8.397150, 7.846500, 8.451110, 7.846370, 7.414521, 10.673668, 8.114858, 6.908673, 7.701128, 8.616660, 8.477980, 9.090065, 13.676388, 11.336399, 11.584872, 15.343603, 9.813532, 11.166642, 12.596860, 4.188167,
1.501361, 11.242323, 10.043772, 16.173059, 13.588107, 33.018769, 16.173048, 9.763669, 11.925131, 7.547362, 11.925138, 13.588104, 4.054453, 8.142398, 4.585996, 13.588104, 12.588069, 9.657358, 10.798016, 13.003090, 12.529182, 12.472602, 12.266158, 13.266139, 13.365662, 12.649483, 9.755215, 8.299624, 8.106983, 10.404886, 5.863027, 11.746792, 17.173070, 6.727019, 6.887668, 6.599423, 6.824342, 7.096254, 7.368939, 7.184385, 7.364105, 7.414841, 8.518433, 8.008164, 7.354487, 6.663295, 6.719800, 8.038642, 6.412350, 10.378654, 7.732200, 6.204403, 6.720827, 9.500643, 8.906283, 6.970946, 9.514860, 10.588101, 10.150703, 9.755217, 11.588109, 8.490077, 13.266181, 8.414842, 14.365716, 7.961030, 9.096186, 9.172953, 8.064468, 8.759088, 9.738300, 9.458733, 9.265945, 8.591683, 11.064503, 9.860131, 8.721738, 8.759359, 5.863568, 9.780288, 8.819857, 11.315047, 9.424605, 7.915572, 8.441510, 9.641524, 9.134108, 8.525549, 15.172685, 11.085362, 11.500611, 14.851138, 10.290427, 14.173068, 14.173068, 1.872539,
1.482237, 9.418127, 2.011295, 13.665325, 15.749641, 20.826454, 16.012676, 5.694881, 14.609710, 6.639588, 13.628012, 14.852042, 11.561718, 6.044463, 6.571843, 16.931639, 19.656478, 15.362925, 17.112198, 16.968467, 18.400173, 18.434120, 18.738973, 18.541038, 18.468886, 18.045086, 14.946872, 8.867678, 14.336609, 11.632624, 16.771174, 11.133623, 22.241494, 16.084969, 18.434078, 18.045044, 17.919533, 18.872168, 19.302810, 19.434029, 18.400124, 17.656440, 19.656470, 21.241367, 19.019021, 18.098475, 18.334559, 18.541006, 17.968429, 20.367008, 18.738934, 16.550305, 16.697137, 20.656442, 19.656486, 18.656475, 21.826409, 22.826041, 21.826415, 10.380020, 17.804089, 10.292276, 18.241494, 7.732689, 15.815230, 16.167793, 16.943652, 16.486419, 15.866279, 16.717053, 17.031816, 17.597376, 18.577036, 14.993409, 17.826409, 15.477700, 15.294959, 15.754887, 13.946800, 17.485639, 16.038453, 19.366910, 13.618173, 14.088284, 14.733511, 18.333918, 16.189773, 18.696433, 21.018881, 20.502851, 16.531825, 18.578529, 15.733699, 14.760368, 13.808257, 1.612803,
1.949933, 12.878336, 9.091842, 15.200374, 13.200393, 12.200398, 30.048875, 9.499920, 10.808059, 9.200392, 15.200173, 29.639745, 7.661151, 7.757435, 8.615312, 12.615426, 10.808037, 6.961987, 4.538622, 8.419032, 9.071106, 8.432209, 8.952464, 9.808068, 10.246180, 10.952440, 8.317751, 12.878149, 33.412674, 15.200168, 13.615436, 26.278989, 5.558349, 5.435524, 5.135655, 5.153274, 7.506904, 6.582008, 6.696569, 5.591219, 6.732787, 6.412483, 6.749186, 6.740967, 6.479296, 5.182197, 5.696572, 9.645771, 5.851668, 9.645808, 7.412489, 4.762645, 5.738914, 6.665123, 6.513898, 7.211708, 14.200305, 9.445498, 8.472479, 14.200225, 33.830022, 9.645804, 15.200391, 7.155996, 32.423896, 7.653017, 9.134027, 5.556506, 6.905641, 8.029633, 7.323777, 9.091592, 6.567262, 8.112408, 11.293305, 10.112665, 8.824841, 5.186352, 4.084675, 8.707676, 5.055723, 11.740739, 5.971483, 4.410013, 6.455326, 8.807715, 9.342214, 8.050471, 14.199626, 8.305442, 11.740803, 14.200386, 9.645807, 13.615428, 14.200385, 5.840553,
3.634575, 14.315430, 13.784250, 14.824665, 18.926545, 11.639264, 17.250674, 11.497351, 16.739775, 8.629778, 13.699134, 17.776302, 8.536586, 10.113572, 5.619152, 12.675996, 19.061696, 9.158737, 11.347275, 11.476205, 11.416175, 10.806760, 12.343661, 12.107820, 11.644379, 11.928470, 10.316300, 11.501986, 19.802970, 14.066139, 21.409627, 15.705409, 21.781596, 9.288948, 7.003559, 6.102079, 6.659875, 9.599586, 8.408635, 6.211823, 9.556549, 6.888657, 11.180864, 8.717805, 5.405041, 6.109587, 4.221841, 11.007148, 5.726754, 12.713134, 4.639002, 5.953822, 5.329492, 7.475380, 7.779298, 9.345283, 10.488564, 7.843433, 10.397098, 15.215318, 23.284096, 10.492357, 14.477816, 11.187931, 16.544879, 9.060622, 5.498275, 6.033700, 5.772814, 9.345527, 5.583325, 6.449373, 6.616957, 7.384319, 10.375923, 9.129213, 3.768295, 4.694318, 2.663395, 11.434362, 5.879456, 9.657190, 3.905335, 4.417836, 4.730915, 4.664248, 7.604997, 9.617262, 11.220758, 8.289736, 7.940819, 18.649891, 15.604617, 17.551647, 15.191340, 6.990529,
8.178008, 16.771676, 14.285902, 14.081020, 18.239664, 23.981119, 17.668248, 11.726398, 17.351772, 11.516331, 14.679635, 14.566446, 9.281911, 10.442397, 5.744571, 15.647976, 18.958749, 10.870322, 11.079888, 11.714199, 11.529277, 10.684789, 11.740787, 12.076873, 14.673930, 14.472346, 11.354396, 13.076873, 20.659203, 14.220412, 19.771678, 16.650213, 19.366422, 6.551864, 9.278120, 11.882277, 11.986601, 5.015284, 14.812458, 14.552770, 12.590156, 6.300436, 11.635588, 14.788838, 6.669574, 12.273988, 12.070863, 6.005790, 14.016068, 17.180231, 6.202397, 9.301981, 12.058547, 6.270295, 14.094673, 14.521699, 16.453654, 7.324058, 16.333673, 14.194862, 22.396169, 11.217608, 15.791307, 10.755849, 20.173776, 3.172905, 13.464933, 16.558978, 10.700286, 2.688055, 17.546359, 15.473310, 9.280935, 4.338571, 11.041736, 11.962061, 4.807124, 16.920328, 12.522713, 3.016032, 12.526057, 19.074199, 3.214780, 15.766697, 13.592000, 2.186663, 15.339065, 14.116932, 15.339078, 4.726116, 16.092385, 18.538188, 13.911011, 17.180232, 15.625781, 6.803868,
7.163331, 16.975824, 14.393277, 14.812888, 17.354338, 23.199822, 17.348079, 7.177362, 16.188600, 9.964487, 15.247086, 14.375665, 9.132645, 10.822007, 5.502533, 15.438277, 19.499369, 14.295192, 13.110377, 13.803223, 14.125686, 15.178847, 13.391266, 15.018675, 15.654862, 17.807507, 11.592960, 12.959036, 20.112365, 14.493332, 20.807510, 16.790435, 21.740396, 5.675259, 11.708851, 8.308815, 11.030686, 5.096995, 12.341652, 13.088040, 4.263866, 6.086716, 12.887512, 7.033694, 6.635239, 11.549673, 12.698986, 5.098591, 11.528176, 11.832959, 7.345976, 10.082875, 5.246761, 7.813275, 11.502969, 12.054692, 10.086004, 9.374447, 13.308044, 12.744244, 19.990374, 11.817744, 14.863321, 10.895120, 20.676265, 2.628614, 16.563155, 14.501973, 14.755817, 4.776976, 8.724933, 18.599713, 2.601080, 5.553401, 15.926027, 16.236913, 4.658500, 13.574110, 11.909514, 2.063415, 10.838637, 19.707918, 4.481625, 9.637047, 11.642236, 5.605188, 17.317134, 14.242713, 13.120676, 7.376237, 9.491310, 16.696002, 16.541616, 16.538050, 15.923703, 6.843535,
3.801935, 12.330146, 12.671470, 14.803659, 19.961659, 22.131581, 15.985229, 7.419426, 16.531671, 11.045449, 14.221692, 16.582121, 6.350670, 9.111011, 4.867551, 15.234748, 21.394522, 16.072685, 15.941758, 16.526720, 16.941757, 17.412762, 14.953335, 18.324223, 18.587254, 18.324223, 10.050934, 11.017301, 20.716548, 12.686571, 19.224695, 13.211232, 21.131585, 5.325686, 10.498742, 9.698435, 8.511805, 4.260083, 11.022952, 8.763966, 11.007464, 4.693577, 12.131116, 13.300806, 9.096872, 9.840415, 10.084518, 5.898506, 9.180878, 13.118961, 7.029706, 7.341831, 11.031251, 7.190867, 9.752433, 8.947588, 13.563629, 8.092724, 13.803659, 13.556046, 23.716546, 11.123157, 14.231725, 10.781106, 19.961660, 3.145692, 16.639662, 15.935119, 14.631699, 2.474607, 17.705127, 16.710847, 10.019144, 2.980639, 9.836725, 17.421868, 14.669383, 11.790434, 12.058549, 2.920914, 18.240564, 18.762311, 4.397640, 11.936819, 16.002057, 3.875015, 12.855846, 9.810220, 18.909165, 8.262602, 12.534774, 18.224695, 16.033553, 15.016108, 15.290283, 5.593733,
3.074662, 11.833721, 12.465829, 15.161143, 18.873096, 22.458056, 20.934495, 9.942544, 17.154277, 10.427306, 13.781221, 16.771559, 6.619957, 8.715342, 4.026141, 16.706515, 19.391955, 14.667709, 16.109329, 16.444037, 16.280638, 17.709863, 17.888200, 18.381239, 18.248601, 17.313399, 9.323432, 11.365302, 19.248606, 12.460350, 19.903470, 12.801411, 20.934497, 5.499508, 7.655335, 5.781990, 5.307136, 5.839609, 7.419055, 7.655328, 10.408934, 7.403386, 12.131349, 9.906141, 5.603573, 5.954074, 4.050105, 8.075292, 7.095507, 9.026088, 3.520895, 4.378968, 6.051468, 8.354259, 7.361241, 7.829429, 7.213705, 7.677334, 10.588803, 13.757186, 25.458056, 10.804039, 16.113763, 11.295510, 16.761092, 5.428585, 8.897398, 7.812992, 5.474144, 8.690779, 9.081611, 6.466623, 7.978026, 5.744092, 12.205246, 10.816402, 4.584671, 5.570221, 3.591357, 11.122107, 7.399238, 9.920143, 5.343221, 5.302118, 5.701101, 5.477169, 5.216081, 10.382329, 5.586987, 9.316830, 8.655089, 18.716592, 15.641075, 17.015116, 14.943345, 5.616369,
3.720653, 15.246810, 15.396062, 15.047430, 19.816103, 22.570986, 22.986013, 12.552096, 15.502213, 8.296741, 16.467703, 19.763635, 9.497310, 10.369710, 4.358783, 12.782681, 17.986019, 11.784926, 11.643584, 11.828893, 11.909659, 14.694474, 15.887996, 15.071145, 15.697546, 15.796203, 12.401067, 14.050372, 21.401066, 14.465083, 20.249063, 16.235599, 22.570991, 6.523271, 12.653246, 11.682248, 11.403260, 6.642763, 7.373823, 13.342773, 14.021205, 5.710078, 14.152084, 14.914566, 7.773318, 10.912111, 9.479846, 5.019702, 12.806534, 16.411120, 6.185892, 11.508777, 8.430102, 6.412806, 14.747624, 15.246808, 17.676172, 10.723543, 14.552791, 14.441708, 22.570991, 12.429204, 16.271784, 11.443158, 21.111559, 3.563331, 18.062988, 11.249061, 17.870132, 4.019865, 10.232463, 18.016194, 14.709844, 3.654807, 11.582129, 19.322820, 4.511750, 17.688104, 14.739608, 2.098340, 18.663729, 18.304172, 2.245381, 16.123711, 12.889283, 5.397707, 18.789416, 15.339727, 19.816047, 10.615704, 18.985991, 19.570991, 16.024097, 17.095258, 16.226696, 6.219815,
5.040263, 13.855777, 14.162418, 15.610936, 18.985060, 22.232984, 22.232980, 11.360826, 17.063061, 12.769123, 16.053078, 18.232987, 8.772724, 9.427244, 5.782703, 12.835313, 18.442899, 14.942966, 15.869581, 16.056397, 16.282673, 17.043160, 16.683522, 17.138467, 17.240518, 18.688659, 11.153837, 13.221294, 20.730487, 14.168694, 17.318105, 14.779031, 23.817950, 6.734071, 11.904874, 13.881311, 9.309722, 4.942902, 12.173418, 9.321877, 6.541863, 6.580624, 15.956861, 14.257617, 6.763972, 10.869036, 8.403381, 6.860542, 13.292918, 17.730486, 5.601020, 8.490679, 9.482211, 6.008051, 14.151726, 11.606214, 17.417070, 9.424694, 16.100274, 14.004169, 24.817947, 12.118812, 15.208772, 11.929587, 20.294388, 4.092592, 17.358411, 16.593847, 14.166872, 2.634478, 15.792763, 15.560531, 7.790822, 4.804128, 12.725523, 15.427768, 5.462810, 12.851077, 9.652924, 2.687887, 17.350219, 18.145500, 3.086967, 14.856432, 15.767907, 2.044513, 15.663112, 9.133558, 15.421344, 8.565340, 16.593943, 19.425632, 16.362623, 18.248095, 16.334135, 6.505169,
5.732552, 13.580476, 14.751523, 16.071936, 20.184888, 17.415502, 18.152467, 11.106860, 15.902853, 8.777927, 16.266387, 18.644320, 8.726125, 10.322627, 5.953304, 17.310420, 20.644280, 14.118146, 13.332194, 14.417908, 14.169938, 14.967188, 15.916399, 17.005279, 16.832676, 17.105160, 11.630068, 13.278362, 20.322392, 14.085262, 17.907355, 15.176715, 23.229283, 4.418712, 11.793483, 12.244686, 11.955051, 3.585825, 12.474813, 12.425354, 14.113588, 5.359322, 13.292645, 13.239179, 10.352526, 10.466071, 8.214108, 5.756918, 14.066891, 14.374415, 8.237020, 10.712290, 7.322058, 7.658131, 13.843421, 11.384675, 17.753549, 8.868968, 16.494573, 14.438935, 20.371302, 12.290255, 15.489503, 10.641623, 19.803018, 2.958431, 16.618210, 18.298297, 14.147114, 1.532957, 16.682322, 15.277979, 15.006441, 3.332778, 11.321454, 16.841238, 12.662746, 11.261515, 14.070643, 3.146700, 17.460997, 17.292635, 11.035755, 11.393623, 16.514792, 4.903025, 10.686009, 12.383790, 19.206892, 7.224081, 16.753545, 15.957820, 17.428382, 16.778072, 17.218056, 5.011022,
1.421927, 12.387367, 14.402948, 17.337519, 19.444852, 25.387355, 19.772657, 5.492434, 18.168197, 11.698297, 14.283424, 17.557644, 6.635495, 9.083346, 5.491979, 16.588086, 20.258070, 19.012312, 18.729149, 20.101952, 20.579997, 20.686912, 20.961086, 20.410077, 21.258062, 21.802379, 11.327389, 11.251257, 19.083586, 12.971889, 16.652658, 10.507545, 23.065439, 6.758872, 7.978797, 6.282706, 7.502496, 6.548619, 8.351462, 7.261230, 13.133372, 4.858120, 12.186086, 10.651467, 6.342420, 7.087003, 4.867302, 6.528771, 9.086666, 11.933261, 6.942427, 5.756116, 5.737067, 10.146390, 6.658630, 14.947536, 8.295901, 14.740808, 10.509700, 13.662853, 21.632480, 12.573486, 15.171834, 10.214569, 17.462555, 10.799881, 8.921283, 7.885293, 8.766739, 10.538302, 4.727772, 9.973855, 8.851112, 12.467754, 15.188921, 9.130753, 5.153802, 7.458574, 3.316519, 9.348619, 11.498338, 15.464781, 7.001852, 5.704013, 3.382934, 12.183253, 9.690793, 12.846026, 13.837101, 14.780957, 12.274602, 17.007989, 16.885530, 17.305218, 16.854037, 4.666391,
9.087986, 18.633279, 16.337044, 15.628005, 19.135799, 22.135792, 16.887872, 6.366814, 17.491937, 13.889455, 17.530935, 20.550830, 11.813867, 12.006086, 4.687108, 17.913406, 18.676339, 12.730657, 13.072404, 16.245023, 17.345713, 17.197192, 16.286130, 16.633295, 15.703951, 16.084135, 13.123640, 15.703948, 18.913407, 14.766566, 22.720759, 18.197186, 43.425427, 6.349666, 14.929594, 13.337056, 13.144277, 5.138970, 13.569744, 15.720753, 14.508869, 10.034480, 13.275747, 12.787809, 14.535883, 13.453973, 12.357174, 5.838489, 12.232921, 17.913404, 10.767111, 13.386486, 14.053644, 6.977624, 14.690094, 15.681836, 17.766563, 14.801897, 15.189380, 14.058984, 22.720761, 12.953405, 15.939403, 11.729240, 22.720758, 2.105555, 15.992752, 16.654447, 15.627845, 2.422289, 16.501426, 17.837787, 10.496755, 5.451165, 17.550795, 16.709463, 11.217675, 15.117062, 11.024871, 2.115815, 16.766386, 21.720129, 8.745763, 12.452192, 18.103947, 2.450149, 15.856525, 16.120716, 16.813859, 11.305810, 14.965871, 16.181603, 17.076904, 18.197200, 17.676368, 5.934084,
4.469936, 12.547632, 13.007170, 15.245911, 17.792104, 22.251524, 17.418645, 9.754682, 15.666571, 9.829471, 14.084117, 17.297339, 7.370183, 9.040332, 5.597403, 14.589758, 16.966121, 11.336776, 11.561101, 12.886306, 12.818994, 13.104330, 14.586198, 15.285749, 15.350666, 14.218112, 10.103218, 11.969026, 18.792104, 12.930735, 19.344645, 13.790056, 18.792104, 6.345186, 10.783675, 12.190839, 11.817950, 4.921394, 10.827369, 12.422605, 9.012086, 5.182369, 13.657210, 8.853861, 7.966784, 9.568212, 7.859554, 7.317384, 11.983578, 16.132594, 8.967724, 6.549810, 10.342392, 7.989111, 12.860292, 9.888222, 16.032366, 8.733867, 14.755681, 13.695029, 20.081611, 10.914193, 15.537290, 10.935254, 15.262851, 2.621923, 14.693065, 14.966036, 12.825239, 3.266928, 15.651495, 12.707524, 5.974566, 2.290670, 10.386382, 15.297302, 5.403188, 11.244502, 4.821545, 3.717358, 15.431258, 19.251378, 4.498992, 10.489767, 9.409080, 3.852346, 10.584201, 9.182504, 15.503336, 6.340530, 15.132588, 18.164072, 16.196252, 17.143011, 13.666573, 4.317091,
5.096461, 13.600404, 13.884515, 16.712680, 18.707797, 15.911626, 19.425397, 6.564104, 17.046884, 12.043999, 15.078047, 18.393688, 6.889869, 9.712030, 5.607926, 13.132616, 19.332268, 11.929454, 13.297031, 14.156530, 14.643455, 13.839767, 15.101867, 14.729898, 15.581859, 16.507858, 10.716735, 12.713597, 20.457819, 13.683631, 19.872857, 14.744823, 19.010360, 4.631869, 9.323510, 9.704793, 6.701472, 4.315085, 8.930120, 10.463273, 11.283801, 4.007802, 12.711458, 9.477810, 4.763231, 8.685336, 10.371924, 5.439374, 7.796385, 14.148240, 11.408837, 7.492043, 7.799030, 6.527384, 8.297404, 11.077457, 8.639074, 7.127552, 12.819877, 13.383921, 22.595322, 12.188268, 15.535708, 12.226598, 18.631849, 2.695455, 14.844431, 13.928551, 12.834427, 2.843574, 17.354877, 16.798239, 11.607343, 2.760893, 12.652221, 14.135886, 8.524564, 17.577223, 13.466015, 2.778713, 16.669250, 18.707763, 18.109369, 15.622521, 10.130212, 4.766581, 14.795707, 15.158998, 18.441500, 6.627075, 19.425357, 18.787968, 15.702931, 17.090702, 16.951467, 5.881740,
6.960661, 14.445018, 14.867625, 15.643141, 19.146239, 23.711016, 18.318706, 9.648163, 17.197953, 12.785469, 14.968434, 19.048058, 9.172875, 10.918911, 4.894386, 16.182244, 18.869710, 12.387218, 13.280571, 13.985941, 14.414872, 14.574032, 14.679437, 14.669364, 14.959479, 15.152603, 10.736370, 13.308367, 20.772424, 14.255697, 17.024523, 15.284759, 21.389096, 4.906732, 8.131246, 10.623119, 11.304907, 5.041634, 11.250653, 13.627987, 13.153241, 5.882470, 17.067164, 14.229224, 11.099845, 8.180028, 8.720964, 6.395061, 6.776039, 15.989924, 8.139745, 7.653702, 11.937335, 8.121724, 13.480203, 13.201908, 14.225865, 8.524961, 14.650328, 13.774386, 25.295983, 12.542770, 12.077423, 12.491048, 17.983103, 1.812465, 12.860573, 7.088495, 11.718790, 3.562394, 12.608826, 12.263250, 13.399639, 3.082594, 15.142432, 12.552203, 9.877869, 8.337898, 12.597705, 3.206290, 13.481798, 19.146204, 2.997800, 10.591432, 11.043390, 4.564769, 16.495060, 14.061158, 17.488625, 4.995081, 15.516265, 14.981970, 15.375633, 16.965069, 16.064765, 6.026666,
4.011665, 12.437428, 12.782605, 10.152512, 18.746600, 21.896344, 21.574414, 8.316663, 16.158254, 11.325069, 15.055569, 17.281637, 6.155680, 8.917905, 5.113894, 15.363017, 19.470060, 14.992463, 14.927679, 15.463804, 15.432822, 16.053995, 16.885117, 17.349449, 18.128156, 18.726414, 8.632106, 11.370826, 20.648419, 12.696062, 19.989456, 13.336970, 20.896347, 5.408582, 6.592629, 5.531212, 3.973915, 4.568867, 9.284199, 4.806907, 9.779678, 5.472062, 10.888969, 8.293924, 9.570971, 9.543821, 6.863182, 5.161075, 11.319863, 10.929842, 8.884225, 5.145799, 4.086833, 8.028417, 9.603810, 10.418083, 13.227019, 6.246488, 9.851697, 12.830931, 20.896347, 10.803012, 14.054783, 11.151723, 18.101931, 3.641156, 16.629499, 14.906213, 13.215096, 3.168566, 16.178612, 11.258702, 14.514762, 4.622341, 12.241263, 13.571601, 16.846336, 17.209707, 16.376521, 2.098764, 18.296204, 17.259710, 11.195253, 13.435355, 13.668087, 5.950683, 17.076116, 16.953727, 16.777401, 7.754280, 15.138122, 17.349453, 14.184680, 15.516969, 14.297364, 5.624105,
4.411829, 10.352616, 13.662684, 17.146581, 19.897901, 23.804780, 19.595338, 7.795970, 16.023432, 12.098512, 14.450543, 17.438470, 7.068417, 9.602936, 6.237787, 16.965588, 21.804670, 16.665232, 14.364961, 14.628618, 14.983018, 15.975068, 17.727972, 18.160930, 18.717318, 19.345347, 11.165452, 12.887420, 20.160936, 14.574772, 20.556865, 14.339226, 22.804792, 8.194575, 7.595415, 7.035006, 6.627524, 7.991387, 3.968022, 7.638531, 7.526443, 7.611662, 6.620571, 6.693657, 5.387315, 5.624252, 3.508801, 5.729585, 6.820485, 12.153068, 3.565387, 5.586884, 5.175553, 4.529721, 6.876315, 6.203178, 9.675147, 8.112885, 11.060274, 14.953043, 20.804792, 11.609266, 15.083693, 10.302520, 14.836126, 8.622319, 6.502510, 5.465934, 7.602334, 9.676754, 4.522296, 8.597606, 4.374083, 8.104759, 11.022408, 9.503189, 4.999463, 7.748938, 3.137405, 8.865051, 6.547414, 14.840449, 4.433249, 6.562879, 6.224662, 5.228437, 7.260130, 7.975850, 7.533922, 10.562287, 10.067915, 15.865213, 12.259345, 17.510172, 15.242550, 6.529368,
7.834908, 14.642532, 15.331360, 16.440806, 20.577562, 24.036983, 17.960179, 11.403205, 17.210445, 11.994823, 16.262208, 18.191505, 10.090408, 10.881623, 6.114048, 14.802178, 18.242571, 9.481507, 9.541328, 10.945891, 10.491246, 12.250113, 12.561262, 12.590687, 12.590429, 12.603410, 11.073106, 12.589912, 20.452033, 15.513433, 19.827542, 16.414942, 23.036995, 5.831309, 12.158369, 10.777105, 12.019491, 5.987484, 12.287545, 7.781201, 6.674675, 6.878637, 15.293843, 12.860199, 6.198826, 11.319854, 12.756514, 6.044151, 7.854698, 15.267157, 5.287581, 8.582102, 5.263360, 6.926064, 14.123357, 8.594036, 17.679442, 10.052488, 14.826324, 13.765532, 24.036994, 12.962854, 15.155881, 12.285869, 20.130104, 2.763687, 14.232854, 16.497755, 15.619079, 3.283660, 7.883928, 11.098058, 4.775635, 4.631812, 13.754485, 15.084245, 4.676147, 16.832326, 12.426651, 3.433498, 11.753037, 17.059705, 1.712482, 7.898233, 8.885403, 5.179490, 10.607915, 14.074086, 15.115153, 7.824090, 16.598198, 18.048310, 17.414942, 17.295528, 15.897444, 7.006619,
7.463428, 15.640744, 13.424811, 14.484254, 17.418364, 21.225697, 18.640750, 10.204046, 14.903787, 12.717925, 15.055793, 16.525279, 9.719408, 9.751507, 4.885506, 14.096438, 16.367706, 9.689959, 9.701669, 9.915676, 10.825909, 11.432930, 12.117195, 11.770393, 11.879206, 21.225094, 11.710020, 13.265713, 18.225721, 12.803656, 13.318830, 15.318819, 21.225719, 11.241298, 11.659664, 13.868151, 13.894792, 13.035887, 14.096424, 15.203318, 15.117154, 13.431275, 16.138225, 12.560383, 13.154250, 10.683654, 14.717904, 14.045799, 13.143562, 12.189547, 11.470831, 13.165009, 13.610985, 3.094633, 9.837704, 14.868144, 12.935702, 15.903772, 16.181322, 14.539217, 21.225718, 11.247010, 14.868169, 10.090011, 38.449216, 7.738752, 15.137978, 13.725707, 14.075666, 10.678746, 14.418143, 15.271208, 14.443845, 11.006492, 16.640630, 15.766079, 15.095821, 16.639556, 12.757919, 10.620191, 17.901564, 8.119485, 12.386388, 12.807667, 12.614432, 0.311884, 10.383364, 11.655831, 12.026046, 12.402317, 19.640151, 14.525281, 9.795268, 15.497800, 14.181327, 6.801552,
3.612121, 12.680732, 13.147234, 17.411342, 18.853047, 23.334166, 16.994324, 9.405564, 16.115005, 10.919225, 14.726844, 17.919137, 6.623704, 9.080007, 5.156207, 14.783428, 18.874728, 9.377617, 9.385442, 9.162998, 8.915180, 8.255773, 8.133263, 12.464838, 12.529774, 12.824070, 9.535669, 11.897289, 18.476193, 12.508421, 17.204891, 13.567093, 20.395575, 4.180722, 8.830866, 6.920409, 6.015323, 3.589288, 9.781906, 5.981723, 10.026167, 4.254209, 11.892786, 6.636085, 7.170774, 7.393341, 6.775012, 4.519825, 7.880282, 11.238777, 5.850613, 5.557960, 5.322765, 7.025095, 8.659982, 10.335878, 14.295255, 6.154930, 11.627535, 12.920899, 22.597208, 11.521730, 16.058050, 11.357729, 18.137777, 4.137430, 16.330373, 15.947533, 13.977334, 2.849440, 15.397503, 13.721912, 7.018429, 4.197132, 15.262708, 18.164164, 16.239552, 16.561497, 17.874216, 2.904316, 12.865885, 21.111601, 14.143493, 12.474369, 13.088197, 4.569641, 15.304412, 12.684015, 14.808000, 8.885155, 14.665288, 18.810612, 16.042620, 17.048772, 15.441379, 5.762311,
4.288073, 12.823217, 12.705110, 17.800221, 14.223490, 22.059781, 19.145513, 9.707103, 16.467900, 11.374024, 14.790836, 16.702231, 7.054884, 8.609315, 4.539111, 14.706297, 19.367894, 15.978860, 13.034430, 14.053727, 16.757406, 17.116365, 17.921016, 19.221057, 18.952861, 16.512294, 8.541754, 11.011034, 20.715829, 12.588264, 20.672760, 13.823953, 20.760223, 7.033832, 10.660834, 6.666743, 11.109564, 5.096619, 12.245878, 11.993901, 7.153684, 6.384543, 15.180906, 9.560359, 9.262059, 9.056130, 10.768745, 6.783323, 8.040286, 10.854554, 12.093444, 6.192822, 4.999836, 7.530334, 12.532306, 9.860276, 17.560550, 9.397543, 12.430286, 12.920035, 21.116367, 11.317279, 13.849580, 10.901319, 17.933674, 3.665794, 13.895645, 4.393610, 15.070198, 3.358883, 12.053833, 12.192384, 3.522139, 3.604759, 12.606987, 7.857141, 7.305907, 6.958555, 8.530371, 3.516014, 4.788327, 8.503599, 10.759121, 12.355075, 3.003722, 4.430827, 10.230396, 6.904053, 15.362547, 6.805390, 9.298504, 17.284489, 13.349242, 16.402671, 15.517049, 5.945700,
5.039641, 13.512350, 14.195165, 18.477372, 19.470067, 24.099418, 17.253934, 10.888448, 17.548676, 13.197803, 16.249237, 18.077056, 7.762216, 10.308668, 6.868313, 13.852980, 19.607560, 17.180555, 17.880251, 19.122136, 18.909594, 18.959867, 20.168675, 20.168676, 20.426984, 21.639964, 9.292598, 13.106663, 20.929499, 14.272081, 21.639992, 14.088197, 21.011961, 6.199378, 13.681044, 9.747570, 13.045668, 4.699626, 12.645253, 13.682099, 4.177962, 5.411521, 14.366832, 13.440989, 8.973879, 10.654991, 9.043157, 5.848003, 13.974979, 17.568042, 6.178475, 7.772236, 7.481250, 7.413587, 12.668841, 9.896612, 15.803655, 6.804350, 11.282990, 14.177211, 22.514461, 12.918117, 17.809405, 12.512701, 19.759574, 5.170551, 16.334531, 11.526367, 18.575625, 5.048750, 18.204502, 18.768385, 0.868751, 5.691813, 13.148868, 16.875407, 12.374801, 16.089568, 16.613498, 4.036241, 17.514404, 19.889937, 5.025354, 9.882128, 17.795317, 5.843621, 14.121068, 6.971654, 21.241390, 8.307937, 12.389156, 20.544835, 16.605568, 17.351231, 17.055030, 6.572908,
4.536189, 13.220442, 13.890191, 17.697548, 22.580177, 22.580179, 38.428666, 11.150000, 17.450901, 12.300581, 15.258263, 12.212777, 8.318464, 9.649731, 4.256062, 15.661328, 16.471660, 11.563035, 12.413400, 12.500040, 13.952657, 13.168680, 13.093356, 12.907766, 12.397176, 12.312234, 11.763608, 13.595772, 20.410266, 14.566171, 19.995229, 13.561991, 22.580191, 5.946352, 6.456424, 5.566918, 5.949669, 5.284633, 8.247386, 6.512022, 10.156813, 6.207471, 11.300001, 7.743870, 4.739623, 5.775878, 3.909544, 9.229529, 6.874897, 11.592928, 3.969172, 3.949457, 3.761123, 10.371348, 8.727370, 11.787807, 8.803039, 10.021412, 9.920976, 14.995228, 42.209813, 11.062768, 17.471667, 11.713685, 15.033297, 11.022713, 10.066832, 10.963408, 9.290819, 8.223393, 9.073573, 7.979349, 8.235998, 9.276122, 10.887794, 8.689642, 6.455929, 6.417338, 1.748430, 11.688008, 4.921349, 17.313372, 5.861933, 5.398762, 7.033145, 9.431078, 11.856527, 10.536990, 11.316042, 12.735477, 10.004416, 17.772836, 15.557823, 18.056629, 15.574567, 8.780452,
6.699836, 15.319848, 14.451591, 16.823226, 19.838174, 19.838174, 19.963703, 11.116792, 16.615779, 10.699691, 12.956552, 16.590248, 6.447503, 9.540400, 4.107310, 10.111816, 17.641761, 14.228377, 15.384214, 16.668242, 17.065577, 17.492388, 17.357039, 17.540485, 17.565145, 18.779257, 10.393334, 11.264213, 18.423139, 13.640140, 20.101210, 14.955531, 16.615784, 5.518522, 12.504274, 13.199135, 12.558952, 3.585737, 15.233308, 12.829746, 13.691816, 3.078149, 15.602955, 15.346320, 11.224693, 10.959358, 11.094744, 6.200051, 11.626693, 17.378742, 9.205560, 9.859585, 12.224691, 10.174618, 11.627505, 15.468934, 14.555860, 10.055997, 16.253213, 12.806590, 19.722699, 11.532114, 13.176398, 10.362949, 20.253213, 2.724865, 14.876193, 15.248108, 11.526038, 2.522522, 16.492197, 10.713621, 12.752448, 2.512153, 13.253211, 14.996847, 8.498974, 14.041553, 10.467298, 3.012176, 11.805664, 20.252932, 7.882949, 10.749819, 10.600753, 7.399860, 13.806575, 16.422936, 16.641765, 9.941590, 15.151670, 16.540495, 16.101209, 16.203970, 14.823226, 5.174419,
6.933038, 14.361967, 15.009702, 17.281197, 22.629918, 24.629900, 20.237605, 11.877753, 17.326141, 9.243187, 16.602018, 19.203659, 9.590834, 10.665945, 5.405195, 16.986068, 21.307899, 14.982463, 14.632744, 16.110286, 18.106354, 17.440095, 18.237599, 17.641235, 18.480167, 19.015202, 12.272373, 13.900303, 19.986068, 14.393910, 21.044962, 15.092706, 22.629924, 5.326806, 12.108815, 11.593236, 11.620096, 6.579587, 11.656407, 14.543787, 6.769256, 5.605976, 18.420456, 11.998066, 10.275262, 10.783749, 7.453966, 6.435168, 12.630276, 17.229044, 9.579949, 9.071594, 10.190873, 13.081103, 16.569226, 12.640530, 16.646931, 10.742514, 16.803376, 15.690345, 21.822569, 13.100982, 15.358462, 11.350169, 23.044959, 3.099665, 16.822485, 15.555727, 14.240799, 2.108315, 18.090498, 18.563543, 1.783999, 2.735154, 15.964581, 15.465002, 11.958156, 9.752592, 16.547519, 4.058430, 17.326003, 23.628659, 6.957824, 14.432649, 14.709465, 7.991404, 20.722241, 18.153900, 20.106296, 7.743430, 17.596488, 16.490373, 15.675728, 19.929484, 15.803376, 7.491853,
4.775503, 12.842838, 12.155025, 14.637811, 17.700819, 21.508151, 20.508151, 10.785367, 15.700812, 9.619813, 11.313419, 15.601284, 5.574139, 7.280635, 3.473624, 14.485807, 16.150600, 12.450179, 12.402265, 12.886121, 14.508169, 15.115849, 14.177255, 15.530886, 15.577426, 15.508166, 7.705054, 10.570066, 16.984614, 12.168325, 16.048744, 13.141852, 20.508175, 6.421210, 11.637808, 4.904970, 13.662677, 6.763342, 9.182589, 13.065226, 9.384377, 1.979039, 15.168312, 15.553967, 5.279864, 11.380179, 11.617909, 8.222629, 4.789643, 13.766708, 13.241383, 11.833978, 6.213196, 10.130423, 2.673063, 9.290218, 2.197286, 10.134767, 14.040569, 12.776856, 18.700820, 10.533044, 12.412779, 9.228855, 18.508175, 7.058185, 13.163821, 13.773324, 15.806896, 6.353592, 20.495756, 18.919944, 14.132794, 7.945212, 17.420532, 17.185784, 13.707082, 11.525154, 13.713447, 9.822089, 13.181677, 15.650151, 14.368206, 14.713139, 10.404186, 10.341372, 15.953334, 17.805742, 15.048727, 10.222189, 18.700560, 12.234380, 12.672125, 13.431360, 14.565661, 4.812634,
2.859265, 11.425872, 11.676888, 16.644612, 20.005357, 20.657433, 21.142854, 8.809149, 17.005354, 10.781577, 14.074622, 16.325240, 5.108013, 7.805381, 4.961967, 16.198004, 12.255947, 15.917883, 16.304910, 18.335479, 17.657422, 18.709874, 17.792352, 14.028079, 14.785309, 11.809260, 8.081593, 10.717018, 20.294866, 12.023403, 20.005359, 12.067117, 20.879829, 7.354492, 10.585782, 8.963078, 8.774684, 6.948029, 10.810155, 10.360029, 11.203871, 9.208951, 15.124938, 10.810603, 7.539817, 8.118589, 7.301024, 4.341509, 8.578285, 16.764350, 7.780508, 6.528337, 6.855064, 11.020553, 11.817782, 11.467611, 12.390650, 12.013580, 12.001778, 13.146248, 21.142863, 10.539051, 14.467612, 10.773920, 19.464791, 5.318570, 13.216848, 13.693267, 12.618494, 2.688133, 13.179369, 12.242592, 8.748184, 9.212862, 20.294524, 9.375671, 8.861453, 10.184453, 10.305859, 1.168327, 9.741555, 14.788828, 9.608459, 9.441293, 12.013028, 7.057407, 9.332211, 13.828134, 14.320130, 16.431240, 14.484648, 18.038526, 15.703239, 17.442423, 15.910202, 5.540332,
6.257122, 13.475483, 13.140016, 15.324994, 13.933974, 21.052890, 18.245553, 10.670289, 15.730974, 11.171800, 14.467950, 15.498325, 7.227657, 9.298026, 5.957518, 13.873005, 16.297991, 13.749117, 15.467923, 13.513751, 15.170258, 16.467919, 14.843452, 16.529325, 15.324980, 14.786120, 10.032629, 12.078497, 21.052910, 13.194933, 20.052912, 14.824087, 19.467952, 5.059777, 9.814509, 9.908893, 10.716407, 5.109576, 13.122170, 10.393810, 10.414477, 5.541533, 14.194924, 9.872384, 8.498805, 10.072060, 11.375193, 6.138670, 12.025004, 12.119224, 10.552072, 9.660059, 9.954880, 8.111317, 11.509882, 9.685499, 14.284729, 9.268280, 7.230842, 13.338668, 19.052914, 10.533278, 16.804987, 10.388466, 18.052914, 3.179302, 9.788465, 14.902740, 10.439098, 1.967297, 16.052136, 12.643466, 9.369903, 2.886560, 15.324936, 14.730871, 10.981412, 10.660576, 9.954193, 3.237000, 14.823799, 15.804921, 9.729274, 8.020517, 10.158043, 2.963040, 11.111855, 4.312133, 17.352356, 7.819893, 12.730981, 14.593483, 15.220021, 16.660596, 14.609971, 4.876994,
8.149632, 13.450883, 10.173388, 10.913479, 15.623908, 17.945836, 15.105617, 10.168925, 12.462280, 9.185036, 8.464297, 10.473768, 12.944366, 10.052779, 9.476784, 14.529345, 11.954588, 2.623367, 3.400780, 3.888202, 4.266498, 4.581194, 4.871846, 5.115212, 5.318383, 5.497345, 13.224075, 14.270672, 13.130195, 6.661908, 18.440601, 11.505570, 17.017390, 6.333161, 8.030198, 7.076665, 8.488323, 7.618247, 4.140886, 6.805378, 8.056700, 3.097152, 9.268060, 9.803812, 6.940778, 7.477508, 6.080677, 6.869732, 7.088934, 11.863172, 8.147182, 4.451436, 6.840730, 9.934789, 8.859144, 8.579443, 8.877231, 11.648550, 11.940031, 9.817052, 18.042052, 13.316949, 10.760162, 5.010410, 15.671214, 7.431343, 8.953856, 8.502423, 8.910724, 6.270874, 8.518759, 9.878009, 9.175088, 7.544955, 11.761120, 11.193966, 9.083346, 9.447145, 9.267146, 6.290593, 7.723742, 11.532071, 9.432804, 7.820463, 7.561503, 9.554902, 9.879746, 9.326620, 10.825556, 11.264309, 11.361358, 15.457089, 15.578103, 21.900018, 9.491968, 7.738033,
2.136111, 13.690357, 10.046583, 12.574992, 15.275419, 32.121131, 13.690463, 8.533957, 11.105494, 10.253058, 12.187957, 13.275425, 6.010977, 6.883110, 9.275339, 6.302454, 13.953310, 4.540300, 8.156487, 7.049020, 6.759732, 7.267003, 8.056263, 7.795651, 7.510560, 6.740157, 11.751839, 10.125664, 34.487707, 11.146144, 16.275427, 12.815941, 16.275432, 8.436210, 8.264196, 8.298142, 8.815990, 9.953469, 9.344680, 10.417413, 9.533939, 8.744016, 10.883089, 9.146145, 9.156476, 8.110515, 9.046601, 9.799679, 8.507237, 12.815985, 10.085581, 7.948991, 7.971636, 11.468050, 10.917861, 9.356553, 12.027496, 10.547497, 10.275431, 10.815994, 4.370423, 9.298151, 10.520546, 6.262806, 12.816001, 7.874284, 8.368463, 9.115350, 8.292267, 8.493522, 5.802725, 11.519819, 9.917189, 7.156363, 10.720779, 9.429863, 8.832242, 6.684809, 4.368149, 9.309022, 6.707448, 12.105368, 6.389675, 5.147408, 7.013170, 11.466976, 7.344672, 9.751590, 10.849133, 10.344421, 10.253038, 6.924494, 6.182676, 11.751870, 11.275432, 1.603669,
1.047026, 10.567458, 11.349821, 16.793486, 17.947814, 22.901986, 17.772726, 8.762539, 11.435424, 8.567947, 14.010227, 14.184334, 4.900091, 7.638998, 4.408605, 13.555497, 15.174086, 11.801347, 12.258154, 12.693776, 13.364791, 13.844018, 14.170690, 15.625882, 15.702333, 16.133821, 8.094807, 6.533351, 15.732086, 12.401169, 17.947814, 10.476795, 21.902010, 10.516957, 11.997375, 11.833903, 12.897788, 12.758625, 12.185190, 13.242012, 12.334053, 11.251406, 13.278128, 14.803976, 12.189483, 12.240231, 12.869963, 13.107593, 12.268106, 14.635224, 12.379428, 11.447710, 10.506476, 14.852159, 14.004164, 12.745926, 15.913325, 15.229581, 16.160542, 8.695760, 16.394216, 8.270038, 12.798723, 9.410909, 14.630548, 9.678905, 11.101106, 10.611698, 10.048890, 10.254309, 11.562708, 11.101914, 11.141690, 10.293745, 12.966843, 12.005674, 9.362364, 9.692098, 8.423807, 10.936568, 10.942366, 13.658833, 8.400047, 9.090230, 9.275039, 10.627044, 12.546651, 12.182607, 13.863089, 12.444618, 10.882420, 14.692557, 11.646392, 11.955105, 13.690123, 1.421881,
5.158552, 10.953581, 12.538486, 16.747989, 16.163031, 17.747978, 17.747954, 12.940573, 7.084444, 7.832123, 10.232302, 12.578076, 7.240197, 8.446501, 7.591909, 12.940645, 10.140667, 3.730759, 3.568094, 4.671521, 5.102795, 6.818744, 6.935023, 7.622589, 7.860781, 8.600797, 10.264183, 10.140664, 13.578078, 15.426028, 12.500075, 12.133279, 37.452667, 8.359979, 8.481212, 8.197252, 8.684604, 9.075570, 10.256139, 9.185754, 8.993109, 9.793780, 11.288558, 8.144375, 9.065003, 8.570578, 9.408147, 8.711826, 6.765008, 10.033756, 8.127780, 8.120464, 8.940636, 10.629056, 10.240204, 9.608444, 14.047548, 12.224423, 11.256148, 7.431721, 13.940648, 10.133291, 8.874559, 9.915100, 16.747998, 4.703427, 7.151801, 7.021767, 5.576191, 3.471218, 6.253639, 9.151762, 7.963304, 8.396953, 12.193348, 9.908759, 7.090658, 6.303495, 5.895845, 4.011701, 8.993064, 11.462568, 4.365508, 6.567442, 4.810432, 6.770708, 7.565598, 9.946987, 8.921451, 8.793773, 11.408130, 2.333285, 12.890014, 12.355685, 12.748002, 5.854305,
2.435133, 8.512384, 8.381298, 11.294813, 15.263941, 16.887973, 12.434727, 10.075588, 9.566231, 5.637311, 12.909885, 14.916903, 3.044496, 6.719316, 4.261164, 13.598660, 15.527525, 9.159833, 9.978610, 10.874183, 11.368106, 11.690149, 12.026193, 12.547914, 12.491016, 13.034976, 7.541883, 6.483596, 17.073363, 11.294637, 17.303011, 8.959255, 17.011962, 5.512582, 6.372755, 5.600636, 6.335926, 6.476671, 6.685644, 6.823987, 6.371459, 6.481349, 7.435514, 8.188156, 6.126344, 5.820011, 7.022595, 7.228507, 5.833672, 9.112315, 6.752690, 5.465763, 5.405883, 9.116134, 7.562350, 7.245964, 12.286487, 9.575064, 10.049993, 9.085742, 18.178423, 7.012486, 12.819606, 5.503863, 16.490009, 5.680962, 6.790081, 6.222692, 6.460177, 6.861466, 6.623003, 7.747346, 6.954803, 6.571159, 9.581697, 8.628078, 6.916941, 6.243589, 6.566844, 7.221723, 6.379619, 9.374501, 7.422197, 5.572023, 6.092702, 8.525900, 7.176721, 7.360841, 11.529076, 8.545519, 11.098382, 9.350983, 11.051292, 13.899690, 13.332301, 3.895745,
4.178083, 11.396143, 8.083499, 11.750816, 14.222120, 17.681530, 12.126964, 9.251095, 11.573022, 7.230343, 9.631705, 14.511622, 4.725176, 7.273222, 6.993296, 11.823572, 15.096429, 10.521664, 10.848652, 13.511573, 13.981050, 14.511540, 28.673844, 15.096485, 17.680790, 16.681241, 10.836058, 10.953618, 11.798911, 12.874191, 11.953634, 9.893649, 13.594091, 4.581384, 6.422398, 6.843925, 7.001193, 8.017992, 7.169800, 7.082570, 6.258437, 5.195472, 8.324000, 9.226225, 7.068684, 6.596080, 6.496058, 6.502266, 7.152122, 10.573028, 7.779177, 6.184200, 4.962165, 7.531806, 8.604737, 5.615801, 13.359617, 6.822796, 12.157988, 11.081638, 16.096590, 12.823561, 14.222122, 7.825126, 3.016107, 4.511150, 6.074680, 5.294608, 5.658136, 4.894859, 6.673113, 6.261587, 6.979347, 4.890992, 9.238602, 7.374346, 5.637150, 5.996797, 5.942175, 5.431832, 5.568458, 8.562609, 5.641936, 5.057662, 3.968267, 7.023324, 7.103174, 6.963862, 11.222105, 6.677325, 8.599402, 13.096590, 13.681539, 14.511626, 15.359620, 5.839186,
3.602286, 11.169881, 13.294029, 17.392887, 21.934871, 24.410382, 23.555812, 11.387430, 19.134130, 12.391596, 14.601815, 17.387862, 7.159420, 10.322588, 8.022776, 17.241144, 19.341052, 18.251202, 19.389535, 20.631539, 20.904977, 21.767315, 22.470921, 22.717561, 21.822128, 24.742215, 11.814748, 10.895111, 19.303291, 14.257420, 22.978155, 11.738435, 19.513407, 23.084483, 21.468345, 19.260356, 24.108331, 26.140644, 20.731382, 21.742221, 20.650377, 23.611470, 23.754707, 24.818833, 21.345174, 22.128522, 20.152089, 20.179193, 22.481256, 25.845312, 21.134637, 19.636586, 22.333403, 26.512696, 21.114376, 25.140728, 25.314800, 25.390731, 24.693313, 15.079680, 19.001689, 14.390791, 18.384067, 10.326069, 17.665779, 6.901768, 5.662874, 4.861754, 4.593563, 9.584685, 7.178440, 5.626285, 8.327061, 4.397098, 9.138500, 6.223973, 3.702036, 5.207486, 2.393306, 10.879774, 5.830210, 11.032865, 3.318926, 3.535406, 3.073678, 5.821748, 5.314747, 7.092443, 9.752477, 5.438706, 8.595473, 19.296426, 18.324664, 16.487930, 16.637582, 6.681282,
7.000372, 13.316831, 14.805502, 17.989150, 22.643956, 25.714341, 13.942691, 11.863299, 17.715473, 11.279144, 16.700883, 18.225702, 8.983894, 10.828697, 8.405249, 16.926443, 17.448496, 16.209327, 15.104243, 14.460971, 14.106183, 14.683816, 14.076815, 14.450724, 19.047587, 20.687542, 14.072745, 12.465588, 21.696424, 16.423866, 16.895444, 13.452309, 23.281386, 22.203307, 22.203338, 19.674321, 24.129249, 21.025024, 22.826768, 21.254893, 20.750853, 22.421429, 25.228758, 24.335775, 22.363804, 19.737055, 21.626859, 19.079168, 23.228822, 25.714308, 20.643944, 19.353269, 23.788072, 24.129329, 23.082051, 22.363808, 22.544416, 25.228800, 26.451255, 15.554474, 23.036274, 15.089733, 17.970184, 11.576650, 17.989150, 3.775683, 6.441907, 12.612336, 9.855801, 1.567252, 13.360205, 11.234464, 10.779254, 4.319533, 6.867845, 12.452104, 3.124487, 9.719758, 10.563582, 3.312774, 14.635392, 18.809857, 3.902829, 5.599974, 6.474609, 3.372057, 10.236758, 11.831798, 19.922526, 3.609498, 12.827696, 19.203384, 19.291439, 14.634727, 17.525509, 7.388154,
5.796776, 14.072577, 14.765937, 18.373281, 23.927869, 25.972261, 22.597224, 10.044990, 18.642468, 11.489078, 16.351586, 20.227430, 9.112725, 11.886450, 8.142601, 17.861129, 18.308706, 14.871602, 16.007021, 15.394363, 14.907858, 15.348040, 14.896284, 15.178356, 21.623532, 22.972255, 14.025267, 12.547967, 22.762811, 16.339496, 20.047452, 14.077731, 23.271825, 15.129030, 15.964886, 12.529305, 13.848709, 16.649209, 16.123446, 13.381268, 17.244768, 15.448457, 21.114279, 13.745890, 14.171870, 14.699416, 14.678865, 20.714870, 15.736998, 17.227010, 16.470924, 17.243067, 16.032868, 24.972214, 17.031217, 17.341997, 24.328401, 25.387233, 26.650302, 15.331455, 24.724337, 14.601781, 18.796091, 12.081406, 18.110402, 3.224118, 14.219674, 5.443015, 12.491821, 2.596163, 12.906617, 15.489455, 2.369533, 4.110633, 15.570718, 4.600836, 4.962614, 13.380420, 13.393035, 2.479221, 14.492483, 9.120695, 4.846736, 8.055259, 3.496578, 4.883443, 16.125010, 15.119733, 13.693851, 7.483488, 10.865466, 18.439908, 19.502622, 16.313830, 18.327507, 7.819465,
1.246313, 9.799137, 12.413843, 17.609438, 20.923623, 24.477334, 21.535155, 7.686781, 18.075236, 11.116507, 16.907696, 16.962987, 4.742665, 8.113049, 5.540090, 17.352475, 19.109763, 19.485082, 19.902713, 20.727032, 19.826898, 20.199349, 20.578711, 21.498091, 21.143091, 24.284674, 9.329943, 8.189929, 19.702736, 13.773431, 21.244674, 9.976617, 22.249066, 21.192977, 20.690733, 21.014153, 21.079135, 21.805705, 23.021635, 21.711790, 23.302800, 23.098751, 27.284465, 25.519110, 21.044369, 22.865121, 24.051986, 23.321191, 19.308553, 24.180349, 23.397137, 20.397157, 21.871884, 24.052012, 22.851723, 21.799254, 23.699724, 25.147148, 24.962755, 14.072315, 22.477335, 14.354581, 18.871062, 10.224944, 17.389569, 4.553651, 11.777143, 11.920699, 6.812240, 2.509796, 10.354142, 7.696985, 10.267248, 3.548861, 10.188014, 12.263076, 7.060426, 8.518756, 8.167479, 4.299186, 12.102722, 13.175692, 5.742592, 5.485730, 9.653170, 5.717587, 8.409092, 9.371680, 18.563590, 6.725863, 13.043198, 18.865994, 17.208676, 16.086368, 16.723211, 4.582066,
1.854185, 9.999968, 12.915592, 17.206301, 20.878853, 23.789500, 22.929019, 9.662117, 16.032375, 11.752946, 15.491444, 16.155551, 5.512297, 8.711911, 6.325394, 16.219220, 20.967253, 20.236454, 21.244027, 20.622263, 21.478899, 21.565955, 22.618678, 22.212618, 22.478898, 24.734150, 9.991429, 8.866000, 19.361549, 14.074487, 21.567683, 9.928202, 22.090921, 23.863899, 11.120555, 20.555637, 23.342570, 26.025312, 20.702510, 21.241268, 22.726413, 23.757580, 22.316211, 22.025387, 19.643048, 20.718725, 21.994863, 22.256504, 21.870300, 24.402949, 20.505958, 20.700613, 22.677112, 26.572845, 19.949697, 19.865516, 22.482152, 25.572860, 26.415329, 14.091969, 20.139531, 14.391795, 19.629009, 9.993160, 18.259818, 4.697283, 8.592687, 5.486373, 3.902109, 5.239867, 6.842936, 7.162108, 8.552541, 5.816973, 10.814028, 8.678454, 4.720197, 5.468058, 3.281055, 8.428406, 6.796355, 9.156817, 2.951717, 3.740486, 5.025189, 7.523974, 6.239587, 7.396632, 6.949976, 6.625814, 9.234693, 18.910276, 18.013131, 16.947097, 16.433816, 5.267557,
1.503832, 11.921723, 14.481908, 18.964769, 22.433034, 25.835130, 21.796998, 12.500381, 18.271800, 13.503177, 17.852954, 17.689747, 7.043444, 8.406452, 7.466668, 18.772123, 18.923098, 18.728100, 19.584494, 19.447730, 19.676702, 20.080244, 19.207859, 20.024101, 20.418484, 22.688282, 12.231639, 10.510456, 21.442816, 16.154648, 19.447731, 11.891310, 24.057526, 23.118831, 22.665167, 23.835028, 17.437916, 22.533922, 23.320511, 23.320502, 26.641755, 23.941794, 26.320336, 25.642392, 24.941873, 26.319913, 24.182965, 24.554913, 23.941945, 27.642395, 25.472336, 20.560323, 24.249922, 27.057255, 25.642386, 25.182870, 27.057462, 25.472471, 28.642319, 15.729225, 20.220423, 15.456064, 18.204736, 11.854420, 18.649550, 3.969817, 13.217010, 14.444579, 10.830599, 3.606487, 4.486278, 10.987384, 12.736795, 3.671217, 12.997984, 13.641080, 5.463993, 12.683074, 10.784124, 2.682953, 14.177367, 19.694116, 3.853765, 8.750221, 4.903187, 4.733004, 11.658804, 12.813682, 20.665202, 8.907388, 12.610701, 20.413669, 17.683935, 18.103329, 17.574382, 4.870930,
2.045024, 10.134348, 12.353089, 17.388058, 19.637305, 23.438400, 21.928206, 9.894055, 17.835336, 11.103527, 16.327977, 14.997469, 5.303790, 7.766509, 5.848694, 10.261463, 18.331778, 16.796732, 15.570280, 14.936986, 14.484645, 15.413177, 15.122497, 14.979963, 18.376886, 23.273325, 10.006607, 8.836490, 19.575904, 14.304519, 16.670217, 10.027159, 21.353512, 23.090373, 21.754850, 18.665808, 24.160766, 23.197319, 23.482734, 21.974975, 23.528504, 22.125162, 26.482515, 24.675385, 24.160753, 22.125204, 20.831733, 19.643587, 23.782251, 27.482702, 23.273286, 20.443860, 24.781954, 25.312780, 25.675323, 24.575768, 22.528596, 26.897556, 26.897776, 14.314985, 22.528599, 14.158263, 17.311618, 10.453912, 18.076590, 3.981474, 10.962276, 12.866131, 8.828131, 2.647437, 11.070721, 6.446608, 3.184569, 4.171920, 11.627501, 10.503258, 4.932740, 8.694773, 5.482068, 4.212330, 12.713654, 17.738801, 3.774382, 5.485296, 6.748591, 4.936029, 11.919167, 11.151651, 14.023556, 6.665791, 12.472420, 18.182442, 17.273342, 17.250974, 16.048688, 4.725520,
3.473005, 10.028579, 14.203202, 19.573269, 21.807421, 24.977345, 21.542718, 10.975157, 19.429487, 13.218901, 18.174426, 16.926307, 6.815073, 9.740905, 7.946775, 17.817790, 20.483489, 17.751837, 17.801796, 21.049566, 21.259668, 21.534400, 21.619792, 22.283856, 20.067452, 26.517857, 12.355559, 10.567912, 20.442071, 15.793788, 22.977346, 11.701081, 24.517914, 23.362591, 21.994342, 24.847979, 23.119348, 22.710541, 24.517870, 26.070301, 24.729341, 23.911158, 22.082523, 25.655380, 24.655361, 21.513812, 24.807365, 22.534391, 25.655283, 27.392352, 22.370005, 24.767777, 23.195939, 22.664458, 23.710549, 24.517868, 26.517897, 25.584989, 27.392355, 15.525877, 23.889883, 15.784283, 19.698896, 11.633449, 18.547939, 2.766604, 10.364413, 13.539642, 9.484683, 1.150412, 10.785400, 13.618317, 13.023172, 2.974394, 12.051438, 10.938711, 8.459931, 8.570764, 8.287060, 3.799492, 14.367618, 14.455377, 6.120515, 8.688391, 4.974565, 6.255600, 12.217035, 9.921718, 19.243482, 7.268082, 13.926456, 19.138142, 18.699477, 16.551737, 17.431899, 6.143463,
5.394388, 12.073917, 14.237010, 20.023567, 21.444445, 25.067960, 24.367521, 12.984324, 18.906577, 14.027945, 14.891757, 18.137815, 8.107249, 10.879154, 8.516112, 17.332067, 21.648420, 21.027941, 22.297127, 23.041155, 24.014840, 24.200054, 24.067952, 24.556988, 22.240139, 24.898022, 12.243465, 11.991429, 20.672213, 15.830572, 15.480981, 12.490166, 21.086108, 23.760488, 23.946916, 21.588983, 23.746013, 25.104413, 22.214957, 23.240126, 22.205004, 22.988971, 27.067849, 23.775172, 21.934555, 23.041141, 21.850725, 20.092971, 21.989002, 26.219954, 24.161043, 21.938666, 19.375866, 23.200059, 22.054496, 26.067858, 24.775175, 27.582416, 25.634995, 15.059322, 18.404759, 15.242525, 19.228127, 11.658431, 18.137519, 5.404268, 6.704984, 4.122054, 4.853108, 4.236253, 5.836800, 5.033183, 8.833311, 7.762354, 8.063504, 6.731400, 4.220905, 4.779718, 2.052388, 4.178531, 6.962978, 9.494545, 4.662931, 2.998626, 3.041064, 8.521823, 5.328325, 13.409716, 8.736289, 13.583088, 8.088371, 18.628754, 19.922283, 17.593647, 18.071346, 7.413855,
4.694648, 11.883002, 15.077880, 21.442659, 41.116945, 23.945152, 19.722767, 6.856893, 19.103852, 13.775235, 18.095493, 20.282194, 8.222797, 12.434890, 7.720480, 17.653606, 17.617230, 18.552822, 21.137739, 23.207991, 24.529705, 24.529723, 21.623185, 23.208067, 22.530027, 22.945056, 12.220931, 11.965854, 19.103858, 16.719551, 24.530120, 12.669230, 21.442660, 22.722141, 34.644631, 21.070557, 35.011225, 23.529402, 35.061272, 17.301297, 34.471262, 23.528472, 22.722608, 22.530027, 25.527844, 22.070397, 23.529617, 23.529645, 25.527425, 22.360177, 34.993029, 25.525860, 24.527516, 22.945025, 21.722709, 25.528071, 22.530099, 24.529707, 24.530038, 15.059464, 25.530119, 16.030277, 14.230343, 12.109636, 19.975534, 2.402023, 11.923832, 12.199483, 7.070879, 1.752810, 8.953314, 9.477109, 10.878060, 6.919934, 10.014177, 5.982059, 8.554946, 11.484703, 5.416416, 2.416777, 10.055276, 19.857648, 10.818508, 8.667013, 7.878104, 2.780738, 9.280732, 12.809234, 13.446311, 9.527352, 8.931940, 15.185827, 18.530121, 18.253998, 18.788656, 4.392220,
2.547411, 9.308322, 12.118827, 18.593719, 19.677523, 23.684440, 17.950253, 9.397901, 16.997941, 11.506496, 16.748257, 15.695757, 4.833140, 7.836538, 5.524738, 11.202235, 20.490056, 18.837980, 19.448238, 19.909143, 21.603507, 22.136933, 22.684415, 21.741013, 17.737422, 23.925393, 10.049291, 8.597116, 18.726670, 13.835458, 20.502239, 9.615457, 18.387702, 22.430544, 20.958587, 22.861191, 18.132213, 22.526801, 20.992541, 25.384303, 21.684386, 22.526673, 24.214832, 25.384690, 19.448235, 20.027310, 24.062751, 24.062763, 22.684338, 22.861312, 21.276328, 21.603444, 22.992316, 23.136912, 25.062789, 12.756265, 25.062916, 25.799642, 25.799863, 13.981870, 22.741025, 14.182758, 19.255599, 10.037044, 16.071999, 3.804471, 9.436708, 11.874395, 11.839615, 1.993967, 8.821812, 10.404463, 8.578228, 3.143395, 11.205536, 5.718178, 5.998906, 8.831474, 4.107322, 4.671973, 12.025235, 17.012015, 7.575154, 3.703745, 6.969309, 4.881108, 10.916019, 8.427204, 17.561513, 6.406182, 11.975856, 19.623330, 17.146477, 17.120439, 15.468256, 4.642185,
3.206700, 10.775739, 13.213644, 17.990734, 21.220384, 24.489250, 20.684761, 7.413904, 18.216232, 11.910531, 15.643499, 16.653201, 6.292260, 8.766906, 7.029371, 15.742457, 20.430356, 18.878635, 16.889131, 16.264177, 15.869133, 16.500408, 15.954624, 16.334292, 21.681893, 22.489247, 11.530280, 9.830421, 20.339504, 14.778540, 19.884389, 11.071336, 22.904288, 22.764321, 24.489179, 22.801169, 23.659144, 21.864747, 24.266812, 25.135513, 22.813660, 21.972643, 26.074120, 24.958707, 22.972653, 23.986687, 22.519610, 20.454601, 23.571673, 42.578326, 18.235534, 21.764340, 23.232850, 25.199707, 24.199726, 26.489023, 23.904285, 25.958672, 27.337214, 14.708483, 23.120017, 15.101892, 19.159330, 10.827232, 17.293947, 3.227203, 8.913384, 8.604017, 4.279797, 2.520393, 6.329975, 8.887619, 9.823734, 3.182782, 10.006579, 7.196127, 2.851407, 7.256269, 9.388031, 3.847024, 8.155663, 10.610814, 9.012226, 5.629165, 5.506217, 5.288664, 7.379804, 8.572052, 13.731977, 3.882448, 11.340549, 18.555888, 18.175360, 18.185977, 16.926584, 5.517591,
3.197772, 10.424921, 13.188621, 16.594019, 21.461857, 23.522157, 21.387857, 9.544126, 18.193209, 12.317796, 15.750910, 16.150514, 5.855901, 9.519011, 6.167991, 16.008960, 20.513385, 19.434691, 17.437803, 20.420275, 21.091804, 21.412100, 21.937190, 22.235847, 22.264992, 22.997056, 10.392973, 9.046891, 19.447168, 14.497559, 20.544320, 10.179372, 22.179270, 22.264955, 22.034197, 23.835226, 23.925449, 23.072304, 21.557770, 24.235761, 24.792075, 23.151665, 24.631723, 25.420209, 23.356098, 19.294743, 22.612897, 21.760755, 22.453414, 26.879663, 24.179192, 22.085256, 24.021549, 23.179255, 25.557700, 22.997032, 26.879662, 25.420203, 25.709766, 14.495533, 23.879710, 14.974699, 17.762067, 10.064336, 17.151790, 2.606486, 5.259700, 12.915211, 10.827625, 1.998343, 9.328533, 11.964286, 11.668525, 3.360517, 14.528287, 12.432062, 9.011457, 4.954371, 8.115434, 3.330498, 4.122534, 13.263104, 10.753025, 5.321380, 9.345776, 4.778440, 13.255943, 12.158117, 19.158609, 5.096872, 13.188266, 19.054751, 18.272380, 16.480165, 14.350462, 5.473345,
2.205732, 10.100500, 12.233445, 17.261339, 19.773169, 22.875739, 21.197667, 7.422505, 17.069198, 11.680280, 15.519113, 15.034912, 5.408687, 8.966750, 6.144354, 16.340587, 21.925956, 18.281945, 16.779149, 15.990460, 15.568023, 16.044049, 15.606096, 15.731671, 21.566010, 22.690704, 9.604411, 8.946814, 18.467957, 13.894938, 21.434368, 9.999903, 22.497228, 22.358116, 22.853124, 20.660957, 21.651174, 23.070538, 18.845681, 22.468306, 22.961763, 23.845614, 25.690666, 25.445571, 22.816227, 23.587586, 23.745136, 20.225215, 24.830830, 27.275649, 22.538696, 21.010960, 22.898672, 26.275625, 24.255759, 24.337041, 24.612701, 26.358083, 23.731348, 14.050312, 23.070555, 12.630518, 18.094932, 10.321585, 17.023530, 5.052251, 7.508229, 4.840398, 2.732706, 3.597829, 7.387099, 3.356941, 9.146383, 4.842695, 9.818782, 6.766526, 7.130181, 9.403100, 6.123788, 4.222132, 10.508721, 9.592307, 9.834169, 4.459661, 3.380430, 6.767259, 8.024247, 10.241723, 11.324605, 6.241719, 9.213486, 19.454073, 17.846147, 16.296880, 14.139017, 5.243886,
3.160361, 11.141387, 14.877983, 18.570123, 20.960460, 24.715347, 23.436812, 10.721220, 18.907993, 13.871747, 14.229891, 18.242018, 7.307453, 9.538337, 8.337875, 17.546722, 22.171024, 22.650045, 23.783721, 22.900374, 25.222286, 24.978365, 25.148290, 26.010775, 24.280400, 26.148276, 12.111305, 10.870486, 21.369573, 14.833384, 23.251067, 11.417532, 22.470235, 22.695428, 20.735523, 20.966406, 22.260775, 25.563249, 23.260769, 26.300182, 23.783706, 23.840812, 26.148251, 25.563319, 22.819172, 22.812008, 22.208134, 19.187146, 23.194094, 27.662854, 23.755970, 21.364319, 23.826327, 25.563318, 22.241414, 24.382742, 25.184828, 26.662821, 27.885245, 15.052284, 18.594102, 13.928594, 19.265053, 11.171446, 18.511683, 7.299973, 6.978837, 6.337244, 5.852831, 7.555220, 3.315674, 7.270605, 8.545810, 5.879288, 7.639707, 6.490300, 4.770856, 4.198188, 2.693160, 5.073231, 5.671080, 11.543728, 3.056001, 4.887001, 4.416909, 3.102662, 5.893493, 4.779122, 10.154257, 7.646939, 10.226283, 18.570878, 19.049749, 17.428747, 18.361058, 6.657181,
4.585484, 11.285184, 13.515990, 20.249232, 23.479910, 25.112177, 21.254198, 11.112867, 18.860460, 13.438473, 17.224045, 18.596480, 7.130271, 9.671087, 6.684483, 18.738879, 17.628363, 15.648859, 14.889626, 14.480366, 14.165273, 15.160458, 14.656236, 14.885406, 18.598056, 19.254197, 11.749880, 10.622852, 21.186180, 15.829786, 16.564128, 11.903701, 23.264183, 22.304762, 22.456786, 20.190924, 24.626609, 23.264102, 22.733630, 24.626587, 20.894933, 22.434004, 26.848771, 25.264097, 23.626671, 24.264003, 22.819356, 23.974589, 23.974553, 23.576120, 23.910457, 22.551392, 23.076428, 24.974602, 23.346621, 28.432055, 25.264161, 26.848868, 24.527206, 15.441877, 26.112179, 16.071890, 17.931276, 12.254898, 17.104872, 2.921484, 10.987202, 12.754737, 11.094492, 2.537111, 9.346427, 11.177908, 5.342237, 4.022670, 12.463081, 11.630128, 3.455494, 9.012396, 11.049669, 2.929498, 4.174755, 18.774109, 2.835142, 5.685468, 4.838845, 4.590231, 13.404647, 10.763887, 19.497467, 6.340792, 12.318515, 16.988058, 18.320365, 18.639692, 17.714719, 6.154141,
8.283762, 16.384584, 17.126043, 18.571463, 40.712874, 40.971750, 20.666619, 14.055260, 17.579155, 15.000639, 20.171849, 19.171855, 11.559521, 12.871909, 7.174682, 18.618257, 18.822259, 17.351253, 17.976296, 21.219094, 21.804041, 23.125853, 23.125875, 24.125734, 23.540835, 25.125425, 15.768499, 12.774009, 20.956127, 17.822270, 21.956127, 16.981392, 23.541089, 21.666222, 19.956055, 24.124576, 24.125043, 23.540129, 20.482118, 24.124895, 23.540112, 23.538889, 24.125492, 22.803971, 23.540330, 23.540011, 24.125040, 34.685910, 25.123354, 23.126006, 22.803716, 22.803271, 22.540221, 21.425550, 21.666546, 22.125796, 24.125957, 35.887340, 38.184453, 16.695599, 22.804124, 14.787316, 15.868665, 11.912037, 16.996769, 11.731983, 16.216120, 16.283636, 14.841772, 13.162765, 18.103493, 15.911700, 16.067954, 12.654365, 19.195265, 15.491230, 15.374458, 15.943608, 14.222887, 13.936812, 16.384533, 10.187851, 13.190504, 13.712928, 13.178024, 0.020921, 11.400792, 13.648791, 18.049225, 16.503958, 18.357851, 14.746674, 19.699782, 19.482196, 18.859266, 10.554712,
2.609021, 10.403054, 13.046715, 17.164825, 20.416878, 23.879585, 20.530857, 9.354397, 17.810807, 11.765872, 14.741473, 15.764542, 5.667605, 8.713080, 6.159225, 17.229431, 21.279670, 17.942064, 16.329127, 15.557319, 15.150432, 15.765648, 15.437678, 15.632251, 24.031578, 24.446614, 10.681612, 9.168502, 19.598814, 13.794727, 19.342755, 10.253691, 20.463421, 22.331130, 23.157099, 22.031578, 20.176372, 23.693687, 22.670121, 24.114016, 24.677888, 22.916069, 25.201478, 25.343506, 23.294604, 23.407068, 24.586762, 18.957743, 24.011652, 30.201327, 24.501034, 22.362291, 22.439938, 25.114027, 25.616517, 23.368605, 25.394152, 24.953564, 26.501061, 14.208575, 23.212829, 14.909911, 19.311249, 10.385861, 17.675014, 3.674011, 8.102041, 6.269200, 5.148080, 2.213272, 7.888206, 5.935896, 8.634983, 3.546380, 10.299752, 6.033633, 6.445849, 5.654074, 5.643829, 3.534478, 7.815443, 10.747198, 5.784898, 4.423107, 4.468156, 5.976586, 7.151658, 8.759375, 15.290449, 5.184335, 10.046759, 18.762721, 17.978417, 16.323079, 16.042746, 5.426059,
1.731843, 9.580408, 11.761960, 16.361290, 20.491382, 22.962536, 21.469862, 9.153482, 17.466579, 10.834984, 15.232262, 15.440735, 4.481907, 8.781253, 5.335244, 13.333998, 21.206278, 20.165787, 20.864232, 17.292834, 22.176473, 22.561434, 23.000007, 23.377569, 21.944156, 24.078005, 9.243748, 7.952108, 18.466989, 13.267297, 21.152542, 9.703583, 21.589727, 24.098130, 23.756057, 22.533679, 19.772204, 24.492998, 24.756042, 24.788455, 21.708772, 23.908007, 21.607691, 23.225565, 23.028755, 24.693281, 22.513220, 22.098185, 23.181829, 27.925973, 23.724355, 23.098162, 23.547449, 25.999969, 25.160452, 26.247810, 25.724369, 24.756067, 27.925977, 13.022825, 22.058114, 13.675031, 18.756587, 8.926720, 18.066787, 4.597542, 9.647331, 5.767990, 10.376984, 3.151141, 9.444951, 10.474441, 4.638876, 4.037916, 12.790806, 7.257831, 7.093089, 7.391136, 8.869385, 4.420875, 5.670934, 9.228534, 11.172851, 4.317297, 3.028106, 5.017344, 11.055160, 8.004169, 16.464429, 8.031509, 8.823822, 19.711692, 17.144979, 16.682004, 15.590341, 4.972082,
2.343129, 10.358750, 13.132655, 17.898038, 21.378263, 24.521594, 21.623956, 9.412626, 17.367955, 12.143162, 17.254679, 16.367886, 5.746909, 8.779062, 6.388278, 17.415363, 21.853435, 18.894434, 17.425583, 16.767896, 16.448443, 17.219565, 16.778097, 17.005894, 22.376026, 23.551543, 10.625714, 9.215498, 20.255064, 14.952701, 20.869068, 9.934123, 21.993742, 23.195695, 22.089360, 19.880902, 25.219521, 23.904038, 25.219522, 22.289347, 24.780633, 24.268399, 26.541431, 25.956503, 20.704389, 20.923512, 21.700187, 24.501939, 23.722713, 27.904037, 23.362678, 22.878510, 24.336316, 25.501943, 24.521583, 25.187812, 24.407635, 27.541401, 27.010966, 14.425384, 23.336379, 15.036233, 19.562942, 10.790740, 18.209084, 4.354168, 12.013497, 8.467362, 13.024371, 3.222455, 10.457953, 12.107028, 1.886143, 3.701466, 12.405967, 10.149681, 6.494592, 9.690909, 9.680186, 3.468255, 12.515840, 15.442657, 4.829617, 5.541269, 5.221636, 5.619602, 12.574012, 7.487943, 18.344277, 6.131995, 10.011245, 18.701590, 18.326635, 17.743832, 16.968478, 5.267268,
4.280040, 10.803895, 14.769280, 19.696265, 22.725372, 26.248931, 23.634223, 7.782288, 18.350332, 14.652045, 15.805472, 18.087172, 7.971334, 10.626432, 8.790681, 17.077132, 20.679076, 20.797715, 21.725364, 21.569449, 24.725336, 25.441522, 25.078970, 25.548445, 24.725339, 26.248856, 13.156610, 11.727119, 21.079009, 16.033401, 19.673395, 10.417822, 20.218267, 23.271584, 19.032186, 20.024927, 24.663887, 24.493940, 23.467539, 23.119618, 23.822601, 23.390839, 24.663925, 23.856598, 22.354097, 21.416030, 23.342010, 21.306412, 20.280262, 20.243309, 23.078981, 19.680972, 23.226486, 25.926925, 22.576501, 26.248677, 23.576505, 26.926840, 25.789487, 15.773961, 19.801851, 14.976887, 20.454518, 11.434345, 17.555011, 5.283513, 5.891479, 4.814442, 5.621406, 4.328669, 7.025181, 4.794684, 8.771386, 4.629353, 9.486260, 7.505786, 3.580115, 5.081349, 3.050583, 6.700265, 4.798659, 11.981196, 2.887514, 3.070460, 2.931097, 7.350930, 7.486951, 9.999339, 7.451010, 9.554316, 9.741753, 16.934068, 19.837423, 18.551098, 18.489046, 7.041382,
9.477808, 16.544343, 15.660528, 21.368143, 23.184430, 43.553690, 21.404212, 11.404962, 20.028511, 14.822487, 19.082284, 18.736450, 11.101834, 14.381985, 7.671223, 18.427222, 20.431862, 15.926633, 14.725891, 14.081371, 13.655170, 14.350991, 13.846228, 13.993640, 22.707969, 23.007529, 14.829367, 15.246769, 21.479174, 18.535565, 22.801102, 16.735731, 20.578710, 21.849937, 22.035517, 21.558204, 25.707489, 22.952999, 19.652703, 24.385834, 22.184367, 22.952861, 27.706872, 26.122775, 25.385609, 22.952986, 25.707487, 23.537962, 21.298571, 40.627143, 23.122946, 17.868785, 23.385804, 27.707183, 24.248487, 26.706967, 24.900611, 27.707162, 22.707988, 16.402501, 22.753797, 16.060085, 16.413372, 13.849041, 18.576136, 2.888900, 13.165565, 15.937321, 12.453554, 0.823383, 16.167857, 13.580884, 15.286444, 2.634763, 14.151008, 14.654406, 10.194612, 15.289081, 10.248841, 3.540350, 12.208396, 22.184376, 6.956144, 10.911281, 12.050115, 7.259982, 10.119425, 17.382668, 19.363693, 7.754229, 16.167380, 18.853125, 19.184431, 17.746543, 20.071368, 5.520426,
3.754881, 10.836052, 14.053914, 19.566266, 23.811025, 27.395977, 21.340706, 11.095779, 19.888193, 13.241368, 18.764811, 19.335293, 6.539269, 8.921493, 6.880995, 18.992977, 21.196310, 20.308516, 22.351574, 21.537999, 23.752099, 25.810893, 25.225985, 25.810920, 25.225979, 25.588544, 12.368320, 10.137634, 21.614629, 16.206473, 15.954341, 10.543404, 24.588634, 23.872236, 24.488925, 22.614575, 26.395484, 23.588531, 23.148010, 28.393676, 25.588215, 25.225330, 27.395428, 27.395606, 24.308392, 28.392754, 23.441727, 28.394079, 37.457267, 41.315139, 24.936371, 24.936169, 23.225919, 26.810756, 23.266682, 24.488961, 25.810995, 24.148018, 27.395904, 15.689709, 24.695549, 16.217946, 15.948647, 11.533339, 19.203696, 2.328478, 11.014488, 12.225535, 8.635348, 2.681167, 9.815082, 13.101691, 2.591890, 2.504309, 17.367391, 10.404257, 7.296394, 11.954730, 4.656598, 3.198275, 12.497883, 19.167166, 6.304658, 6.083265, 9.850198, 9.148342, 16.167769, 7.922768, 20.412989, 9.663917, 16.025301, 17.316504, 20.143323, 18.311180, 18.178031, 6.973387,
2.798067, 9.706810, 12.171693, 15.432498, 18.733936, 19.931875, 21.211980, 10.054050, 17.059334, 10.968469, 13.528487, 15.109445, 5.250592, 7.095581, 5.801873, 15.443799, 14.729319, 14.983162, 15.829511, 16.991428, 17.070968, 17.743209, 17.480176, 18.199154, 17.551728, 18.527478, 10.073392, 8.633863, 17.790520, 12.642941, 19.771411, 10.303591, 20.771411, 19.375394, 16.572248, 20.434253, 22.697007, 23.433414, 20.559818, 34.302797, 21.211774, 19.849230, 23.434002, 16.109444, 17.996953, 22.018934, 25.017315, 19.809833, 15.069509, 17.800169, 17.353992, 21.318570, 21.211611, 22.019237, 20.931827, 20.849299, 20.318891, 21.211924, 22.434348, 12.638336, 20.849413, 12.838186, 13.907551, 8.631220, 15.062236, 3.874414, 10.731986, 3.030142, 12.901685, 3.655539, 8.065971, 13.137454, 5.880731, 3.294580, 14.551731, 13.840669, 8.701042, 11.017137, 13.198741, 6.516961, 2.420571, 7.990472, 14.093012, 10.491614, 2.732195, 6.542027, 7.645504, 10.121870, 6.898397, 8.007074, 13.044565, 16.247849, 15.395456, 14.078291, 15.175417, 5.995917,
0.939332, 8.866776, 11.344476, 18.241056, 21.275067, 24.308488, 21.450509, 8.088726, 17.613261, 10.115027, 15.333179, 16.626373, 3.899790, 6.932459, 4.747791, 16.478371, 20.438121, 16.942713, 15.426038, 14.742079, 14.330048, 15.192958, 14.725290, 14.823415, 24.986485, 24.608002, 9.040293, 7.389808, 18.668245, 13.381175, 21.032366, 8.602131, 20.194748, 23.179082, 22.501089, 21.650249, 24.401465, 24.401407, 25.308246, 26.722756, 23.098957, 23.450281, 28.307368, 26.723272, 19.784922, 23.060477, 23.986461, 24.401472, 24.848813, 41.227640, 24.401463, 22.425775, 23.060425, 25.986400, 24.723459, 21.308474, 24.849041, 26.308282, 25.138546, 13.432549, 21.950938, 13.301375, 13.994544, 9.038247, 17.037611, 6.379400, 8.800839, 8.921423, 8.178925, 4.434593, 10.653686, 10.140317, 8.507165, 5.818222, 12.029242, 8.639363, 6.956258, 6.776120, 7.057529, 3.292017, 7.648368, 17.614131, 6.714311, 4.730832, 5.983057, 10.684344, 8.729437, 9.046879, 12.769119, 8.627583, 11.404973, 17.077869, 17.062343, 16.949839, 15.616746, 4.248185,
3.365434, 9.700189, 13.123492, 16.901955, 17.938349, 21.866454, 19.714452, 9.867748, 17.301669, 11.575414, 14.649441, 13.469852, 5.990131, 6.866280, 6.432853, 15.462734, 16.970289, 17.618513, 18.436454, 18.481782, 21.866364, 21.576877, 21.451360, 24.036063, 22.228917, 22.228937, 10.527906, 9.992756, 19.544528, 13.052675, 20.788454, 10.178838, 21.451419, 17.322115, 20.948766, 17.866436, 18.970262, 19.948834, 22.228748, 13.738891, 15.914843, 22.035556, 17.670052, 23.451164, 22.713997, 16.678820, 21.576766, 18.216186, 15.800363, 23.451357, 16.933086, 17.129473, 18.544470, 19.788433, 22.714289, 17.836695, 22.451387, 21.576874, 21.129480, 13.012281, 20.576950, 13.125364, 16.601753, 9.804485, 17.184632, 3.159274, 8.402265, 9.012172, 8.148577, 1.978577, 11.154406, 8.973745, 8.951821, 2.831867, 11.511350, 8.321452, 6.290740, 8.865439, 7.830044, 3.779758, 10.699595, 11.050984, 8.932417, 7.542447, 4.767903, 3.542848, 8.712799, 6.187755, 18.497206, 6.906837, 4.917177, 18.481792, 18.059100, 17.301672, 14.825710, 4.136194,
3.352571, 16.981384, 10.603003, 13.237359, 14.844016, 15.844015, 14.303447, 11.954707, 8.434626, 11.981517, 9.143577, 9.178035, 13.910730, 8.615196, 10.300610, 13.153700, 6.644121, 2.705701, 2.817855, 3.670113, 4.316451, 5.037541, 5.350161, 5.765987, 5.988865, 6.123229, 14.843983, 9.172877, 16.133523, 7.610833, 37.035427, 13.420794, 18.303448, 7.542312, 8.306974, 7.831264, 8.347798, 8.781846, 7.931671, 8.566200, 8.915429, 7.946994, 9.819631, 9.447022, 8.052557, 7.524139, 9.341997, 9.362399, 7.921364, 12.420804, 8.889819, 6.920824, 7.550648, 10.369756, 9.939313, 9.079445, 10.839924, 11.972527, 11.476899, 8.141687, 9.411665, 14.548548, 14.445467, 7.337664, 19.303439, 5.787741, 7.233659, 6.399751, 6.970285, 5.313692, 8.382339, 8.567035, 7.421555, 6.781836, 11.292209, 9.178027, 7.290115, 6.320451, 5.643782, 6.384016, 5.720246, 11.108683, 6.172228, 6.506385, 5.556822, 6.960257, 8.443131, 8.142305, 8.065043, 9.739277, 10.707254, 9.550232, 7.065342, 8.467398, 6.753905, 6.061012,
0.554270, 14.795225, 11.289992, 8.140477, 10.896635, 17.810824, 14.403650, 14.100761, 9.796441, 15.959342, 11.979036, 11.149512, 11.702290, 7.457151, 7.997810, 13.003470, 9.126610, 5.963376, 6.947312, 7.961454, 8.603387, 8.935109, 9.075821, 9.207199, 9.962066, 10.607318, 13.488896, 13.661958, 15.924996, 10.011333, 18.427496, 15.164458, 14.433521, 7.552515, 8.049419, 7.571901, 8.228888, 8.752951, 8.645481, 8.602008, 8.528341, 8.806299, 8.375563, 9.607105, 8.330694, 7.787553, 8.020725, 9.024485, 7.830996, 11.408091, 8.274451, 7.319539, 7.883305, 10.674837, 9.390224, 8.252405, 10.839032, 10.582006, 12.450217, 10.984553, 12.036325, 14.613286, 16.476406, 7.671051, 18.086459, 8.423739, 9.532878, 9.120976, 9.484390, 9.495167, 9.531666, 10.374018, 10.128887, 9.582833, 13.100763, 11.166965, 9.685124, 9.449259, 10.261569, 9.326124, 9.048983, 13.044364, 9.943670, 8.709472, 8.349162, 11.001220, 10.559597, 9.803001, 12.697761, 12.332963, 13.708674, 9.648544, 6.118494, 9.946908, 11.238331, 2.878496,
1.049549, 12.616484, 10.511823, 11.630566, 13.215528, 17.718021, 16.718021, 11.372245, 8.948742, 6.182429, 13.521628, 12.337207, 4.433493, 8.533978, 4.621807, 8.856942, 12.616481, 10.414243, 10.779426, 11.314303, 11.803141, 12.314300, 12.470095, 13.325701, 13.602537, 13.718016, 9.350249, 7.975438, 16.718028, 10.599087, 17.302990, 11.710531, 39.007656, 9.965363, 10.752238, 8.012971, 12.508557, 11.659121, 10.275082, 11.098412, 6.970674, 10.184038, 13.548083, 12.457495, 11.835373, 10.669988, 9.006074, 6.016867, 9.958691, 15.396088, 11.945427, 7.789756, 9.262697, 14.055043, 13.258585, 11.264065, 11.990107, 14.302965, 13.521629, 8.053878, 12.616491, 7.513865, 9.651940, 7.367089, 18.302987, 7.608171, 9.204942, 8.434153, 8.191836, 7.837382, 9.190529, 8.938842, 9.214151, 8.177546, 13.811070, 11.325675, 9.243606, 8.524898, 7.999183, 8.021609, 9.095958, 12.083806, 9.360417, 7.669974, 6.461020, 8.141216, 11.420298, 9.247685, 12.302979, 10.173678, 13.945395, 7.274395, 6.787784, 8.704008, 11.703078, 1.972302,
2.639632, 9.810646, 11.091268, 12.671819, 13.331478, 13.290256, 12.173216, 11.533104, 8.049297, 5.334913, 13.767574, 7.193263, 3.122944, 6.569638, 5.304373, 13.064963, 13.173204, 5.905822, 6.138364, 7.518162, 8.808826, 9.621420, 10.313298, 10.551259, 10.828977, 11.051984, 7.295982, 8.858802, 17.118074, 9.960223, 37.171982, 11.280130, 18.440002, 5.731566, 5.846845, 5.539514, 5.530204, 6.539513, 6.546702, 6.034197, 6.272114, 6.910084, 7.458793, 7.384382, 6.287401, 6.025186, 7.406924, 7.589425, 5.850352, 8.768462, 6.591576, 5.298375, 6.013345, 8.699379, 7.369882, 6.988792, 9.928250, 9.988791, 9.345925, 8.847546, 15.855041, 8.490906, 13.192076, 7.430174, 36.663498, 7.103200, 7.966798, 7.626214, 7.428416, 7.111305, 8.905684, 3.111170, 8.183182, 8.266295, 10.908614, 8.347242, 8.413459, 7.079151, 8.509970, 8.921297, 7.641525, 9.530108, 8.923278, 6.589612, 7.001453, 8.920346, 8.418324, 9.086837, 12.211174, 11.639028, 10.208779, 15.533111, 8.054680, 6.866356, 5.162425, 4.035027,
5.694772, 14.241461, 8.673541, 16.384585, 17.008954, 21.594017, 17.281785, 12.362007, 12.125548, 14.496131, 13.750673, 15.628573, 10.258653, 10.923318, 10.957597, 18.030125, 11.171286, 7.764390, 8.971841, 9.608490, 10.154378, 10.382136, 10.687426, 11.046913, 10.898687, 11.225883, 14.782601, 13.816142, 17.107609, 12.721787, 20.244605, 14.402150, 18.559547, 6.974184, 7.601665, 7.463984, 8.074313, 8.055349, 8.056167, 7.815228, 7.515678, 6.373202, 8.780352, 9.419407, 7.960143, 7.289889, 8.396948, 8.455295, 7.549143, 11.363614, 8.467745, 6.959630, 6.620668, 9.762371, 9.381958, 7.858497, 11.895865, 9.407203, 11.582506, 10.793254, 21.100365, 15.775237, 20.400320, 7.829908, 18.037944, 3.692407, 5.128146, 5.067700, 5.041394, 5.495766, 5.253613, 6.320972, 4.653782, 4.724808, 7.981087, 7.270201, 5.438955, 5.098967, 5.671152, 4.350142, 5.238619, 8.036378, 5.823379, 4.253292, 3.264769, 6.665451, 6.745050, 4.556426, 13.198426, 6.957597, 9.569122, 15.441550, 15.658122, 20.111227, 15.585334, 2.843282,
}
const (
textCorpusMeanEntropy = 3.786163
leakedPasswordMeanEntropy = 6.419312
randomBase64MeanEntropy = 13.400274
)

14
password.go Normal file
View File

@ -0,0 +1,14 @@
package complexity
// log2(10year × (1trillion/s))
const passwordMinEntropy = 68.096549
func StrongPasswordBytes(password []byte) bool {
entropy, _ := Bytes(password)
return entropy > passwordMinEntropy
}
func StrongPassword(password string) bool {
entropy, _ := String(password)
return entropy > passwordMinEntropy
}