haal-models-0.1.3.0: src/Haal/Models/DTLS/EtinydtlsEcdheCertNone.hs
-- Generated by haal-gen. Do not edit manually.
module Haal.Models.DTLS.EtinydtlsEcdheCertNone
( EtinydtlsEcdheCertNoneInput (..)
, EtinydtlsEcdheCertNoneOutput (..)
, etinydtlsEcdheCertNone
) where
import Haal.Automaton.MealyAutomaton (MealyAutomaton, mkMealyAutomatonTable)
data EtinydtlsEcdheCertNoneInput
= In_ECDH_CLIENT_HELLO
| In_ECDH_CLIENT_KEY_EXCHANGE
| In_CHANGE_CIPHER_SPEC
| In_FINISHED
| In_APPLICATION
| In_CERTIFICATE
| In_EMPTY_CERTIFICATE
| In_CERTIFICATE_VERIFY
| In_Alert_WARNING_CLOSE_NOTIFY
| In_Alert_FATAL_UNEXPECTED_MESSAGE
deriving (Show, Eq, Ord, Enum, Bounded)
data EtinydtlsEcdheCertNoneOutput
= Out_HELLO_VERIFY_REQUEST
| Out_TIMEOUT
| Out_SOCKET_CLOSED
| Out_SERVER_HELLO_CERTIFICATE_ECDHE_SERVER_KEY_EXCHANGE_SERVER_HELLO_DONE
| Out_Alert_FATAL_UNEXPECTED_MESSAGE
| Out_Alert_FATAL_CLOSE_NOTIFY
| Out_Alert_FATAL_DECRYPT_ERROR
| Out_CHANGE_CIPHER_SPEC_FINISHED
| Out_APPLICATION
deriving (Show, Eq, Ord, Enum, Bounded)
{- Transitions (state input -> next state / output):
0 In_ECDH_CLIENT_HELLO -> 1 / Out_HELLO_VERIFY_REQUEST
In_ECDH_CLIENT_KEY_EXCHANGE -> 2 / Out_TIMEOUT
In_CHANGE_CIPHER_SPEC -> 3 / Out_TIMEOUT
In_FINISHED -> 0 / Out_TIMEOUT
In_APPLICATION -> 0 / Out_TIMEOUT
In_CERTIFICATE -> 0 / Out_TIMEOUT
In_EMPTY_CERTIFICATE -> 0 / Out_TIMEOUT
In_CERTIFICATE_VERIFY -> 0 / Out_TIMEOUT
In_Alert_WARNING_CLOSE_NOTIFY -> 0 / Out_TIMEOUT
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 0 / Out_TIMEOUT
1 In_ECDH_CLIENT_HELLO -> 4 / Out_SERVER_HELLO_CERTIFICATE_ECDHE_SERVER_KEY_EXCHANGE_SERVER_HELLO_DONE
In_ECDH_CLIENT_KEY_EXCHANGE -> 5 / Out_TIMEOUT
In_CHANGE_CIPHER_SPEC -> 3 / Out_TIMEOUT
In_FINISHED -> 1 / Out_TIMEOUT
In_APPLICATION -> 1 / Out_TIMEOUT
In_CERTIFICATE -> 1 / Out_TIMEOUT
In_EMPTY_CERTIFICATE -> 1 / Out_TIMEOUT
In_CERTIFICATE_VERIFY -> 1 / Out_TIMEOUT
In_Alert_WARNING_CLOSE_NOTIFY -> 1 / Out_TIMEOUT
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 1 / Out_TIMEOUT
2 In_ECDH_CLIENT_HELLO -> 5 / Out_HELLO_VERIFY_REQUEST
In_ECDH_CLIENT_KEY_EXCHANGE -> 2 / Out_TIMEOUT
In_CHANGE_CIPHER_SPEC -> 3 / Out_TIMEOUT
In_FINISHED -> 2 / Out_TIMEOUT
In_APPLICATION -> 2 / Out_TIMEOUT
In_CERTIFICATE -> 2 / Out_TIMEOUT
In_EMPTY_CERTIFICATE -> 2 / Out_TIMEOUT
In_CERTIFICATE_VERIFY -> 2 / Out_TIMEOUT
In_Alert_WARNING_CLOSE_NOTIFY -> 2 / Out_TIMEOUT
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 2 / Out_TIMEOUT
3 In_ECDH_CLIENT_HELLO -> 3 / Out_SOCKET_CLOSED
In_ECDH_CLIENT_KEY_EXCHANGE -> 3 / Out_SOCKET_CLOSED
In_CHANGE_CIPHER_SPEC -> 3 / Out_SOCKET_CLOSED
In_FINISHED -> 3 / Out_SOCKET_CLOSED
In_APPLICATION -> 3 / Out_SOCKET_CLOSED
In_CERTIFICATE -> 3 / Out_SOCKET_CLOSED
In_EMPTY_CERTIFICATE -> 3 / Out_SOCKET_CLOSED
In_CERTIFICATE_VERIFY -> 3 / Out_SOCKET_CLOSED
In_Alert_WARNING_CLOSE_NOTIFY -> 3 / Out_SOCKET_CLOSED
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 3 / Out_SOCKET_CLOSED
4 In_ECDH_CLIENT_HELLO -> 6 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_ECDH_CLIENT_KEY_EXCHANGE -> 7 / Out_TIMEOUT
In_CHANGE_CIPHER_SPEC -> 8 / Out_TIMEOUT
In_FINISHED -> 6 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_APPLICATION -> 4 / Out_TIMEOUT
In_CERTIFICATE -> 6 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_EMPTY_CERTIFICATE -> 6 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_CERTIFICATE_VERIFY -> 6 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_Alert_WARNING_CLOSE_NOTIFY -> 1 / Out_Alert_FATAL_CLOSE_NOTIFY
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 1 / Out_TIMEOUT
5 In_ECDH_CLIENT_HELLO -> 16 / Out_SERVER_HELLO_CERTIFICATE_ECDHE_SERVER_KEY_EXCHANGE_SERVER_HELLO_DONE
In_ECDH_CLIENT_KEY_EXCHANGE -> 5 / Out_TIMEOUT
In_CHANGE_CIPHER_SPEC -> 3 / Out_TIMEOUT
In_FINISHED -> 5 / Out_TIMEOUT
In_APPLICATION -> 5 / Out_TIMEOUT
In_CERTIFICATE -> 5 / Out_TIMEOUT
In_EMPTY_CERTIFICATE -> 5 / Out_TIMEOUT
In_CERTIFICATE_VERIFY -> 5 / Out_TIMEOUT
In_Alert_WARNING_CLOSE_NOTIFY -> 5 / Out_TIMEOUT
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 5 / Out_TIMEOUT
6 In_ECDH_CLIENT_HELLO -> 6 / Out_TIMEOUT
In_ECDH_CLIENT_KEY_EXCHANGE -> 9 / Out_TIMEOUT
In_CHANGE_CIPHER_SPEC -> 10 / Out_TIMEOUT
In_FINISHED -> 6 / Out_TIMEOUT
In_APPLICATION -> 6 / Out_TIMEOUT
In_CERTIFICATE -> 6 / Out_TIMEOUT
In_EMPTY_CERTIFICATE -> 6 / Out_TIMEOUT
In_CERTIFICATE_VERIFY -> 6 / Out_TIMEOUT
In_Alert_WARNING_CLOSE_NOTIFY -> 1 / Out_TIMEOUT
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 1 / Out_TIMEOUT
7 In_ECDH_CLIENT_HELLO -> 9 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_ECDH_CLIENT_KEY_EXCHANGE -> 9 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_CHANGE_CIPHER_SPEC -> 13 / Out_TIMEOUT
In_FINISHED -> 9 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_APPLICATION -> 7 / Out_TIMEOUT
In_CERTIFICATE -> 9 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_EMPTY_CERTIFICATE -> 9 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_CERTIFICATE_VERIFY -> 9 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_Alert_WARNING_CLOSE_NOTIFY -> 5 / Out_Alert_FATAL_CLOSE_NOTIFY
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 5 / Out_TIMEOUT
8 In_ECDH_CLIENT_HELLO -> 11 / Out_Alert_FATAL_DECRYPT_ERROR
In_ECDH_CLIENT_KEY_EXCHANGE -> 12 / Out_Alert_FATAL_DECRYPT_ERROR
In_CHANGE_CIPHER_SPEC -> 11 / Out_Alert_FATAL_DECRYPT_ERROR
In_FINISHED -> 11 / Out_Alert_FATAL_DECRYPT_ERROR
In_APPLICATION -> 11 / Out_Alert_FATAL_DECRYPT_ERROR
In_CERTIFICATE -> 11 / Out_Alert_FATAL_DECRYPT_ERROR
In_EMPTY_CERTIFICATE -> 11 / Out_Alert_FATAL_DECRYPT_ERROR
In_CERTIFICATE_VERIFY -> 11 / Out_Alert_FATAL_DECRYPT_ERROR
In_Alert_WARNING_CLOSE_NOTIFY -> 11 / Out_Alert_FATAL_DECRYPT_ERROR
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 11 / Out_Alert_FATAL_DECRYPT_ERROR
9 In_ECDH_CLIENT_HELLO -> 9 / Out_TIMEOUT
In_ECDH_CLIENT_KEY_EXCHANGE -> 9 / Out_TIMEOUT
In_CHANGE_CIPHER_SPEC -> 10 / Out_TIMEOUT
In_FINISHED -> 9 / Out_TIMEOUT
In_APPLICATION -> 9 / Out_TIMEOUT
In_CERTIFICATE -> 9 / Out_TIMEOUT
In_EMPTY_CERTIFICATE -> 9 / Out_TIMEOUT
In_CERTIFICATE_VERIFY -> 9 / Out_TIMEOUT
In_Alert_WARNING_CLOSE_NOTIFY -> 5 / Out_TIMEOUT
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 5 / Out_TIMEOUT
10 In_ECDH_CLIENT_HELLO -> 10 / Out_TIMEOUT
In_ECDH_CLIENT_KEY_EXCHANGE -> 10 / Out_TIMEOUT
In_CHANGE_CIPHER_SPEC -> 10 / Out_TIMEOUT
In_FINISHED -> 10 / Out_TIMEOUT
In_APPLICATION -> 10 / Out_TIMEOUT
In_CERTIFICATE -> 10 / Out_TIMEOUT
In_EMPTY_CERTIFICATE -> 10 / Out_TIMEOUT
In_CERTIFICATE_VERIFY -> 10 / Out_TIMEOUT
In_Alert_WARNING_CLOSE_NOTIFY -> 10 / Out_TIMEOUT
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 10 / Out_TIMEOUT
11 In_ECDH_CLIENT_HELLO -> 8 / Out_SERVER_HELLO_CERTIFICATE_ECDHE_SERVER_KEY_EXCHANGE_SERVER_HELLO_DONE
In_ECDH_CLIENT_KEY_EXCHANGE -> 12 / Out_TIMEOUT
In_CHANGE_CIPHER_SPEC -> 3 / Out_TIMEOUT
In_FINISHED -> 11 / Out_TIMEOUT
In_APPLICATION -> 11 / Out_TIMEOUT
In_CERTIFICATE -> 11 / Out_TIMEOUT
In_EMPTY_CERTIFICATE -> 11 / Out_TIMEOUT
In_CERTIFICATE_VERIFY -> 11 / Out_TIMEOUT
In_Alert_WARNING_CLOSE_NOTIFY -> 11 / Out_TIMEOUT
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 11 / Out_TIMEOUT
12 In_ECDH_CLIENT_HELLO -> 14 / Out_SERVER_HELLO_CERTIFICATE_ECDHE_SERVER_KEY_EXCHANGE_SERVER_HELLO_DONE
In_ECDH_CLIENT_KEY_EXCHANGE -> 12 / Out_TIMEOUT
In_CHANGE_CIPHER_SPEC -> 3 / Out_TIMEOUT
In_FINISHED -> 12 / Out_TIMEOUT
In_APPLICATION -> 12 / Out_TIMEOUT
In_CERTIFICATE -> 12 / Out_TIMEOUT
In_EMPTY_CERTIFICATE -> 12 / Out_TIMEOUT
In_CERTIFICATE_VERIFY -> 12 / Out_TIMEOUT
In_Alert_WARNING_CLOSE_NOTIFY -> 12 / Out_TIMEOUT
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 12 / Out_TIMEOUT
13 In_ECDH_CLIENT_HELLO -> 18 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_ECDH_CLIENT_KEY_EXCHANGE -> 18 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_CHANGE_CIPHER_SPEC -> 17 / Out_TIMEOUT
In_FINISHED -> 19 / Out_CHANGE_CIPHER_SPEC_FINISHED
In_APPLICATION -> 13 / Out_TIMEOUT
In_CERTIFICATE -> 18 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_EMPTY_CERTIFICATE -> 18 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_CERTIFICATE_VERIFY -> 18 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_Alert_WARNING_CLOSE_NOTIFY -> 15 / Out_Alert_FATAL_CLOSE_NOTIFY
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 15 / Out_TIMEOUT
14 In_ECDH_CLIENT_HELLO -> 12 / Out_Alert_FATAL_DECRYPT_ERROR
In_ECDH_CLIENT_KEY_EXCHANGE -> 12 / Out_Alert_FATAL_DECRYPT_ERROR
In_CHANGE_CIPHER_SPEC -> 15 / Out_Alert_FATAL_DECRYPT_ERROR
In_FINISHED -> 12 / Out_Alert_FATAL_DECRYPT_ERROR
In_APPLICATION -> 12 / Out_Alert_FATAL_DECRYPT_ERROR
In_CERTIFICATE -> 12 / Out_Alert_FATAL_DECRYPT_ERROR
In_EMPTY_CERTIFICATE -> 12 / Out_Alert_FATAL_DECRYPT_ERROR
In_CERTIFICATE_VERIFY -> 12 / Out_Alert_FATAL_DECRYPT_ERROR
In_Alert_WARNING_CLOSE_NOTIFY -> 12 / Out_Alert_FATAL_DECRYPT_ERROR
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 12 / Out_Alert_FATAL_DECRYPT_ERROR
15 In_ECDH_CLIENT_HELLO -> 15 / Out_TIMEOUT
In_ECDH_CLIENT_KEY_EXCHANGE -> 15 / Out_TIMEOUT
In_CHANGE_CIPHER_SPEC -> 3 / Out_TIMEOUT
In_FINISHED -> 15 / Out_TIMEOUT
In_APPLICATION -> 15 / Out_TIMEOUT
In_CERTIFICATE -> 15 / Out_TIMEOUT
In_EMPTY_CERTIFICATE -> 15 / Out_TIMEOUT
In_CERTIFICATE_VERIFY -> 15 / Out_TIMEOUT
In_Alert_WARNING_CLOSE_NOTIFY -> 15 / Out_TIMEOUT
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 15 / Out_TIMEOUT
16 In_ECDH_CLIENT_HELLO -> 9 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_ECDH_CLIENT_KEY_EXCHANGE -> 7 / Out_TIMEOUT
In_CHANGE_CIPHER_SPEC -> 17 / Out_TIMEOUT
In_FINISHED -> 9 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_APPLICATION -> 16 / Out_TIMEOUT
In_CERTIFICATE -> 9 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_EMPTY_CERTIFICATE -> 9 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_CERTIFICATE_VERIFY -> 9 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_Alert_WARNING_CLOSE_NOTIFY -> 5 / Out_Alert_FATAL_CLOSE_NOTIFY
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 5 / Out_TIMEOUT
17 In_ECDH_CLIENT_HELLO -> 15 / Out_Alert_FATAL_DECRYPT_ERROR
In_ECDH_CLIENT_KEY_EXCHANGE -> 15 / Out_Alert_FATAL_DECRYPT_ERROR
In_CHANGE_CIPHER_SPEC -> 15 / Out_Alert_FATAL_DECRYPT_ERROR
In_FINISHED -> 15 / Out_Alert_FATAL_DECRYPT_ERROR
In_APPLICATION -> 15 / Out_Alert_FATAL_DECRYPT_ERROR
In_CERTIFICATE -> 15 / Out_Alert_FATAL_DECRYPT_ERROR
In_EMPTY_CERTIFICATE -> 15 / Out_Alert_FATAL_DECRYPT_ERROR
In_CERTIFICATE_VERIFY -> 15 / Out_Alert_FATAL_DECRYPT_ERROR
In_Alert_WARNING_CLOSE_NOTIFY -> 15 / Out_Alert_FATAL_DECRYPT_ERROR
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 15 / Out_Alert_FATAL_DECRYPT_ERROR
18 In_ECDH_CLIENT_HELLO -> 18 / Out_TIMEOUT
In_ECDH_CLIENT_KEY_EXCHANGE -> 18 / Out_TIMEOUT
In_CHANGE_CIPHER_SPEC -> 10 / Out_TIMEOUT
In_FINISHED -> 18 / Out_TIMEOUT
In_APPLICATION -> 18 / Out_TIMEOUT
In_CERTIFICATE -> 18 / Out_TIMEOUT
In_EMPTY_CERTIFICATE -> 18 / Out_TIMEOUT
In_CERTIFICATE_VERIFY -> 18 / Out_TIMEOUT
In_Alert_WARNING_CLOSE_NOTIFY -> 15 / Out_TIMEOUT
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 15 / Out_TIMEOUT
19 In_ECDH_CLIENT_HELLO -> 20 / Out_SERVER_HELLO_CERTIFICATE_ECDHE_SERVER_KEY_EXCHANGE_SERVER_HELLO_DONE
In_ECDH_CLIENT_KEY_EXCHANGE -> 19 / Out_TIMEOUT
In_CHANGE_CIPHER_SPEC -> 10 / Out_TIMEOUT
In_FINISHED -> 19 / Out_TIMEOUT
In_APPLICATION -> 19 / Out_APPLICATION
In_CERTIFICATE -> 19 / Out_TIMEOUT
In_EMPTY_CERTIFICATE -> 19 / Out_TIMEOUT
In_CERTIFICATE_VERIFY -> 19 / Out_TIMEOUT
In_Alert_WARNING_CLOSE_NOTIFY -> 15 / Out_Alert_FATAL_CLOSE_NOTIFY
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 15 / Out_TIMEOUT
20 In_ECDH_CLIENT_HELLO -> 18 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_ECDH_CLIENT_KEY_EXCHANGE -> 21 / Out_TIMEOUT
In_CHANGE_CIPHER_SPEC -> 17 / Out_TIMEOUT
In_FINISHED -> 18 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_APPLICATION -> 20 / Out_TIMEOUT
In_CERTIFICATE -> 18 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_EMPTY_CERTIFICATE -> 18 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_CERTIFICATE_VERIFY -> 18 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_Alert_WARNING_CLOSE_NOTIFY -> 15 / Out_Alert_FATAL_CLOSE_NOTIFY
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 15 / Out_TIMEOUT
21 In_ECDH_CLIENT_HELLO -> 18 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_ECDH_CLIENT_KEY_EXCHANGE -> 18 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_CHANGE_CIPHER_SPEC -> 13 / Out_TIMEOUT
In_FINISHED -> 18 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_APPLICATION -> 21 / Out_TIMEOUT
In_CERTIFICATE -> 18 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_EMPTY_CERTIFICATE -> 18 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_CERTIFICATE_VERIFY -> 18 / Out_Alert_FATAL_UNEXPECTED_MESSAGE
In_Alert_WARNING_CLOSE_NOTIFY -> 15 / Out_Alert_FATAL_CLOSE_NOTIFY
In_Alert_FATAL_UNEXPECTED_MESSAGE -> 15 / Out_TIMEOUT
-}
etinydtlsEcdheCertNone :: MealyAutomaton Int EtinydtlsEcdheCertNoneInput EtinydtlsEcdheCertNoneOutput
etinydtlsEcdheCertNone =
case mkMealyAutomatonTable 22 0 deltaTable lambdaTable of
Right m -> m
Left err -> error ("haal-gen: invalid transition table: " ++ err)
where
deltaTable =
"\1\2\3\0\0\0\0\0\0\0\
\\4\5\3\1\1\1\1\1\1\1\
\\5\2\3\2\2\2\2\2\2\2\
\\3\3\3\3\3\3\3\3\3\3\
\\6\7\8\6\4\6\6\6\1\1\
\\16\5\3\5\5\5\5\5\5\5\
\\6\9\10\6\6\6\6\6\1\1\
\\9\9\13\9\7\9\9\9\5\5\
\\11\12\11\11\11\11\11\11\11\11\
\\9\9\10\9\9\9\9\9\5\5\
\\10\10\10\10\10\10\10\10\10\10\
\\8\12\3\11\11\11\11\11\11\11\
\\14\12\3\12\12\12\12\12\12\12\
\\18\18\17\19\13\18\18\18\15\15\
\\12\12\15\12\12\12\12\12\12\12\
\\15\15\3\15\15\15\15\15\15\15\
\\9\7\17\9\16\9\9\9\5\5\
\\15\15\15\15\15\15\15\15\15\15\
\\18\18\10\18\18\18\18\18\15\15\
\\20\19\10\19\19\19\19\19\15\15\
\\18\21\17\18\20\18\18\18\15\15\
\\18\18\13\18\21\18\18\18\15\15"
lambdaTable =
"\0\1\1\1\1\1\1\1\1\1\
\\3\1\1\1\1\1\1\1\1\1\
\\0\1\1\1\1\1\1\1\1\1\
\\2\2\2\2\2\2\2\2\2\2\
\\4\1\1\4\1\4\4\4\5\1\
\\3\1\1\1\1\1\1\1\1\1\
\\1\1\1\1\1\1\1\1\1\1\
\\4\4\1\4\1\4\4\4\5\1\
\\6\6\6\6\6\6\6\6\6\6\
\\1\1\1\1\1\1\1\1\1\1\
\\1\1\1\1\1\1\1\1\1\1\
\\3\1\1\1\1\1\1\1\1\1\
\\3\1\1\1\1\1\1\1\1\1\
\\4\4\1\7\1\4\4\4\5\1\
\\6\6\6\6\6\6\6\6\6\6\
\\1\1\1\1\1\1\1\1\1\1\
\\4\1\1\4\1\4\4\4\5\1\
\\6\6\6\6\6\6\6\6\6\6\
\\1\1\1\1\1\1\1\1\1\1\
\\3\1\1\1\8\1\1\1\5\1\
\\4\1\1\4\1\4\4\4\5\1\
\\4\4\1\4\1\4\4\4\5\1"