diff --git a/build/ssh/Cargo.toml b/build/ssh/Cargo.toml index c0f389a3d27..b7b58ff320e 100644 --- a/build/ssh/Cargo.toml +++ b/build/ssh/Cargo.toml @@ -10,8 +10,9 @@ license = "MIT OR Apache-2.0" publish = false [dependencies] -# Every primitive the one algorithm set needs: X25519, Ed25519 sign and -# verify, `chacha20-poly1305@openssh.com` and SHA-256. Its randomness is the +# Every primitive the one algorithm set needs: ML-KEM-768 and its SSH +# combiner, X25519, Ed25519 sign and verify, `chacha20-poly1305@openssh.com` +# and SHA-256. Its randomness is the # caller's. toyos-crypto = { path = "../../lib/crypto", features = ["sign"] } # The one `SHA256:` fingerprint a key is named by, the one the package diff --git a/build/ssh/src/kex.rs b/build/ssh/src/kex.rs index 71518ba0563..e108c2afa1a 100644 --- a/build/ssh/src/kex.rs +++ b/build/ssh/src/kex.rs @@ -1,10 +1,11 @@ -//! Algorithm negotiation (RFC 4253 §7.1), the curve25519-sha256 exchange hash -//! (RFC 8731 §3) and key derivation (RFC 4253 §7.2). +//! Algorithm negotiation (RFC 4253 §7.1), the exchange hash of +//! `mlkem768x25519-sha256` (RFC 10042 §2.5) and `curve25519-sha256` (RFC 8731 +//! §3), and key derivation (RFC 4253 §7.2). //! //! **One algorithm per slot, and the key exchange a list.** The server offers //! `ssh-ed25519`, `chacha20-poly1305@openssh.com` and no compression; the //! cipher is an AEAD, so the MAC lists are empty and never negotiated. The key -//! exchange methods are [`METHODS`], chosen in the client's order, so a second +//! exchange methods are [`METHODS`], chosen in the client's order, so another //! method is one more entry and one more arm of [`Method`]. use toyos_crypto::hash::Sha256; @@ -15,19 +16,21 @@ use crate::wire::{put_bool, put_string, put_u32, NameList, Reader, Refusal}; /// A key exchange method this server runs. #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub(crate) enum Method { + MlKem768X25519Sha256, Curve25519Sha256, } impl Method { fn name(self) -> &'static str { match self { + Self::MlKem768X25519Sha256 => "mlkem768x25519-sha256", Self::Curve25519Sha256 => "curve25519-sha256", } } } -/// The methods offered, most preferred first. -pub(crate) const METHODS: &[Method] = &[Method::Curve25519Sha256]; +/// The methods offered, the post-quantum hybrid first. +pub(crate) const METHODS: &[Method] = &[Method::MlKem768X25519Sha256, Method::Curve25519Sha256]; /// Strict key exchange (OpenSSH `PROTOCOL` §1.10): the server's marker, and the /// client's, without which no session runs. @@ -111,16 +114,19 @@ pub(crate) fn negotiate(payload: &[u8], first: bool) -> Result { pub(crate) client_version: &'a [u8], pub(crate) server_version: &'a [u8], pub(crate) client_kexinit: &'a [u8], pub(crate) server_kexinit: &'a [u8], pub(crate) host_key: &'a [u8], + /// `Q_C`, or the hybrid's `C_INIT`. pub(crate) client_public: &'a [u8], + /// `Q_S`, or the hybrid's `S_REPLY`. pub(crate) server_public: &'a [u8], - /// `K` as an `mpint`, length included. + /// `K` encoded as its method says, length included. pub(crate) secret: &'a [u8], } @@ -145,7 +151,8 @@ impl Exchange<'_> { } /// The 64 bytes of key `letter` (RFC 4253 §7.2): `HASH(K || H || letter || -/// session_id)`, extended by `HASH(K || H || K1)`. `secret` is `K` as an `mpint`. +/// session_id)`, extended by `HASH(K || H || K1)`. `secret` is `K` encoded as +/// in the exchange hash. pub(crate) fn derive(secret: &[u8], hash: &[u8; 32], letter: u8, session_id: &[u8; 32]) -> [u8; 64] { let first = sha256(&[secret, hash, &[letter], session_id]); let second = sha256(&[secret, hash, &first]); diff --git a/build/ssh/src/lib.rs b/build/ssh/src/lib.rs index 44246a7189f..d1b69378889 100644 --- a/build/ssh/src/lib.rs +++ b/build/ssh/src/lib.rs @@ -2,8 +2,8 @@ //! [`Event`]s for the driver out. No socket, no thread and no clock; the //! randomness is the caller's [`Random`]. //! -//! **One algorithm set, and nothing else offered**: `curve25519-sha256` with -//! strict key exchange, an `ssh-ed25519` host key, +//! **One algorithm set, and nothing else offered**: `mlkem768x25519-sha256`, +//! then `curve25519-sha256`, with strict key exchange; an `ssh-ed25519` host key, //! `chacha20-poly1305@openssh.com` both ways, no compression; `publickey` //! authentication with `ssh-ed25519` keys; `session` channels serving `exec`. //! @@ -49,6 +49,8 @@ mod msg { pub(crate) const EXT_INFO: u8 = 7; pub(crate) const KEXINIT: u8 = 20; pub(crate) const NEWKEYS: u8 = 21; + /// `SSH_MSG_KEX_ECDH_INIT` (RFC 5656 §7.1) and `SSH_MSG_KEX_HYBRID_INIT` + /// (RFC 10042 §2.2) share their numbers, as do the replies. pub(crate) const KEX_ECDH_INIT: u8 = 30; pub(crate) const KEX_ECDH_REPLY: u8 = 31; /// The first number of the layers above the transport. diff --git a/build/ssh/src/transport.rs b/build/ssh/src/transport.rs index b5ec90534ad..86f40fef16f 100644 --- a/build/ssh/src/transport.rs +++ b/build/ssh/src/transport.rs @@ -20,13 +20,16 @@ //! NEWKEYS is held, and sent under the new keys (RFC 4253 §7.1). use toyos_crypto::ssh::{OpeningKey, SealingKey}; -use toyos_crypto::{x25519, Random}; +use toyos_crypto::{hybrid, mlkem, x25519, Random}; use crate::hostkey::HostKey; use crate::kex::{self, Exchange, Method, Negotiated}; use crate::msg; use crate::wire::{put_mpint, put_string, put_u32, Reader, Refusal}; +/// An ML-KEM-768 encapsulation key (FIPS 203 §8). +const MLKEM768_KEY_LEN: usize = 1184; + /// The server's identification (RFC 4253 §4.2), without its CR LF. const VERSION: &[u8] = b"SSH-2.0-ToyOS"; @@ -60,7 +63,7 @@ enum Kex { /// The server's KEXINIT is sent and the client's awaited: the session's /// start, so it is the client's first packet. Started, - /// Both KEXINITs are exchanged and the client's `KEX_ECDH_INIT` is awaited. + /// Both KEXINITs are exchanged and the client's message 30 is awaited. Negotiated { negotiated: Negotiated, client_kexinit: Vec }, /// The server's NEWKEYS is sent; the client's is awaited, after which its /// packets open with `opening`. @@ -149,7 +152,7 @@ impl Transport { let reason = match refusal { Refusal::Integrity | Refusal::SealedLength { .. } | Refusal::SequenceExhausted | Refusal::Ended => return, Refusal::TooManyAttempts => msg::DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE, - Refusal::NoCommonAlgorithm(_) | Refusal::NotStrict | Refusal::KeyAgreement => msg::DISCONNECT_KEY_EXCHANGE_FAILED, + Refusal::NoCommonAlgorithm(_) | Refusal::NotStrict | Refusal::KeyExchange(_) => msg::DISCONNECT_KEY_EXCHANGE_FAILED, Refusal::Truncated(_) | Refusal::TooLong { .. } | Refusal::Trailing(_) @@ -205,7 +208,7 @@ impl Transport { match (std::mem::replace(&mut self.kex, Kex::Idle), kind) { (Kex::Started, msg::KEXINIT) => self.on_kexinit(payload)?, (Kex::Negotiated { negotiated, client_kexinit }, msg::KEX_ECDH_INIT) => { - self.on_ecdh_init(&payload, &negotiated, &client_kexinit)?; + self.on_kex_init(&payload, &negotiated, &client_kexinit)?; } (Kex::NewKeys { opening }, msg::NEWKEYS) => { Reader::new(&payload[1..]).end("NEWKEYS")?; @@ -329,19 +332,23 @@ impl Transport { Ok(()) } - fn on_ecdh_init(&mut self, payload: &[u8], negotiated: &Negotiated, client_kexinit: &[u8]) -> Result<(), Refusal> { + /// The client's message 30: the server's half of the exchange, its reply, + /// NEWKEYS and the keys. + fn on_kex_init(&mut self, payload: &[u8], negotiated: &Negotiated, client_kexinit: &[u8]) -> Result<(), Refusal> { let mut r = Reader::new(payload); - r.byte("KEX_ECDH_INIT")?; - match negotiated.method { - Method::Curve25519Sha256 => {} - } - let client_public: [u8; 32] = r.fixed("Q_C")?; - r.end("KEX_ECDH_INIT")?; - let private = x25519::SecretKey::generate(&mut self.rng).expect("the caller's randomness"); - let server_public = private.public_key().0; - let shared = private.agree(&x25519::PublicKey(client_public)).map_err(|_| Refusal::KeyAgreement)?; - let mut secret = Vec::new(); - put_mpint(&mut secret, shared.as_bytes()); + r.byte("message 30")?; + let client_public = r.string("Q_C or C_INIT", r.rest_len())?; + r.end("message 30")?; + let (server_public, secret) = match negotiated.method { + Method::MlKem768X25519Sha256 => self.hybrid(client_public)?, + Method::Curve25519Sha256 => { + let client = <[u8; 32]>::try_from(client_public).map_err(|_| Refusal::KeyExchange("a Q_C that is not 32 bytes"))?; + let (server, shared) = self.x25519(client)?; + let mut secret = Vec::new(); + put_mpint(&mut secret, shared.as_bytes()); + (server.to_vec(), secret) + } + }; let host_key = self.host.blob(); let hash = Exchange { client_version: self.client_version.as_deref().unwrap_or_default(), @@ -349,7 +356,7 @@ impl Transport { client_kexinit, server_kexinit: &self.server_kexinit, host_key: &host_key, - client_public: &client_public, + client_public, server_public: &server_public, secret: &secret, } @@ -377,4 +384,31 @@ impl Transport { self.kex = Kex::NewKeys { opening: Box::new(OpeningKey::new(key(b'C'))) }; Ok(()) } + + /// `mlkem768x25519-sha256` (RFC 10042 §2): `S_REPLY`, the ciphertext and + /// the server's X25519 key; and `K = SHA-256(K_PQ || K_CL)` as a `string`. + fn hybrid(&mut self, init: &[u8]) -> Result<(Vec, Vec), Refusal> { + let (kem_key, ecdh_key) = init + .split_at_checked(MLKEM768_KEY_LEN) + .and_then(|(kem, ecdh)| Some((kem, <[u8; 32]>::try_from(ecdh).ok()?))) + .ok_or(Refusal::KeyExchange("a C_INIT that is not an ML-KEM-768 key and an X25519 key"))?; + let kem_key = mlkem::EncapsulationKey::from_bytes(kem_key) + .map_err(|_| Refusal::KeyExchange("an ML-KEM-768 encapsulation key that fails FIPS 203's check"))?; + let (server, ecdh) = self.x25519(ecdh_key)?; + let (ciphertext, kem) = kem_key.encapsulate(&mut self.rng).expect("the caller's randomness"); + let mut secret = Vec::new(); + put_string(&mut secret, hybrid::for_ssh(kem, ecdh).as_bytes()); + Ok(([&ciphertext[..], &server].concat(), secret)) + } + + /// The server's ephemeral X25519 key and the secret it shares with + /// `client`, refused when that secret is zero (RFC 8731 §3). + fn x25519(&mut self, client: [u8; 32]) -> Result<([u8; 32], x25519::SharedSecret), Refusal> { + let private = x25519::SecretKey::generate(&mut self.rng).expect("the caller's randomness"); + let server = private.public_key().0; + let shared = private + .agree(&x25519::PublicKey(client)) + .map_err(|_| Refusal::KeyExchange("an X25519 key that makes the zero secret"))?; + Ok((server, shared)) + } } diff --git a/build/ssh/src/wire.rs b/build/ssh/src/wire.rs index 51a9eb36478..4cd4f14d332 100644 --- a/build/ssh/src/wire.rs +++ b/build/ssh/src/wire.rs @@ -25,9 +25,10 @@ pub enum Refusal { /// The client's first KEXINIT does not offer `kex-strict-c-v00@openssh.com`, /// and no session runs without the sequence-number reset (CVE-2023-48795). NotStrict, - /// The client's X25519 key, refused because the secret it makes is zero - /// (RFC 7748 §6.1). - KeyAgreement, + /// The client's key exchange value, refused for the reason named: its + /// length (RFC 8731 §3, RFC 10042 §2.1), FIPS 203 §7.2's encapsulation + /// key check, or an X25519 key that makes the zero secret (RFC 7748 §6.1). + KeyExchange(&'static str), /// A packet whose tag does not verify. The peer is told nothing. Integrity, /// A sealed packet's length, decrypted but not yet verified, above the @@ -53,7 +54,7 @@ impl fmt::Display for Refusal { Self::Unexpected { phase, message } => write!(f, "message {message} during {phase}"), Self::NoCommonAlgorithm(list) => write!(f, "no algorithm in {list} this server offers"), Self::NotStrict => f.write_str("the client does not offer kex-strict-c-v00@openssh.com"), - Self::KeyAgreement => f.write_str("the client's X25519 key makes a zero secret"), + Self::KeyExchange(why) => f.write_str(why), Self::Integrity => f.write_str("a packet whose tag does not verify"), Self::SealedLength { len, cap } => { write!(f, "a sealed packet_length of {len}, above the cap of {cap} or off the block, before its tag") diff --git a/build/ssh/tests/common/client.rs b/build/ssh/tests/common/client.rs index e7129bcebe8..0755daff5f8 100644 --- a/build/ssh/tests/common/client.rs +++ b/build/ssh/tests/common/client.rs @@ -8,7 +8,7 @@ use std::sync::OnceLock; use toyos_crypto::ed25519::{self, SigningKey}; use toyos_crypto::hash::Sha256; use toyos_crypto::ssh::{OpeningKey, SealingKey}; -use toyos_crypto::x25519; +use toyos_crypto::{mlkem, x25519}; use toyos_ssh::{Event, Random, Refusal, Server}; @@ -16,6 +16,9 @@ use super::driver::Keys; pub const STRICT: &str = "kex-strict-c-v00@openssh.com"; +pub const HYBRID: &str = "mlkem768x25519-sha256"; +pub const CURVE25519: &str = "curve25519-sha256"; + /// The Poly1305 tag after every sealed packet. pub const TAG_LEN: usize = 16; @@ -44,22 +47,33 @@ pub fn sha256(parts: &[&[u8]]) -> [u8; 32] { c.finalize() } -/// RFC 8731 §3's `H`. +/// `K` as RFC 8731 §3 encodes the X25519 secret: an `mpint`. +pub fn curve25519_k(shared: &[u8; 32]) -> Vec { + mpint(shared) +} + +/// `K` as RFC 10042 §2.4 and §2.5 make it: `SHA-256(K_PQ || K_CL)`, a `string`. +pub fn hybrid_k(k_pq: &[u8; 32], k_cl: &[u8; 32]) -> Vec { + let mut out = Vec::new(); + string(&mut out, &sha256(&[k_pq, k_cl])); + out +} + +/// RFC 8731 §3's and RFC 10042 §2.5's `H`; `k` is encoded. #[allow(clippy::too_many_arguments)] pub fn exchange_hash(v_c: &[u8], v_s: &[u8], i_c: &[u8], i_s: &[u8], k_s: &[u8], q_c: &[u8], q_s: &[u8], k: &[u8]) -> [u8; 32] { let mut data = Vec::new(); for field in [v_c, v_s, i_c, i_s, k_s, q_c, q_s] { string(&mut data, field); } - data.extend_from_slice(&mpint(k)); + data.extend_from_slice(k); sha256(&[&data]) } -/// RFC 4253 §7.2, 64 bytes. +/// RFC 4253 §7.2, 64 bytes; `k` is encoded. pub fn derive(k: &[u8], h: &[u8; 32], letter: u8, session_id: &[u8; 32]) -> [u8; 64] { - let k = mpint(k); - let k1 = sha256(&[&k, h, &[letter], session_id]); - let k2 = sha256(&[&k, h, &k1]); + let k1 = sha256(&[k, h, &[letter], session_id]); + let k2 = sha256(&[k, h, &k1]); [k1, k2].concat().try_into().unwrap() } @@ -163,12 +177,26 @@ pub struct Client { /// A key exchange the client has started. pub struct Exchange { i_c: Vec, + /// The client's ML-KEM-768 key when the server picks the hybrid: the first + /// of the client's methods it runs. + kem: Option, private: x25519::SecretKey, } /// The client's ephemeral X25519 key, the same in every exchange. const EPHEMERAL: [u8; 32] = [0x3c; 32]; +/// The seeds of the client's ephemeral ML-KEM-768 key, the same in every +/// exchange. +struct KemSeed; + +impl Random for KemSeed { + fn fill(&mut self, destination: &mut [u8]) -> Result<(), toyos_crypto::Error> { + destination.fill(0x5e); + Ok(()) + } +} + impl Client { /// A client that has sent its identification line and read the server's. pub fn new(server: Server) -> Result { @@ -230,25 +258,36 @@ impl Client { pub fn start_exchange(&mut self, kex: &str) -> Result { let i_c = kexinit(kex); self.send(&i_c)?; - Ok(Exchange { i_c, private: x25519::SecretKey::from_bytes(EPHEMERAL) }) + let hybrid = kex.split(',').find(|name| [HYBRID, CURVE25519].contains(name)) == Some(HYBRID); + let kem = hybrid.then(|| mlkem::DecapsulationKey::generate(&mut KemSeed).unwrap()); + Ok(Exchange { i_c, kem, private: x25519::SecretKey::from_bytes(EPHEMERAL) }) } /// The rest of the exchange as OpenSSH runs it: the server's KEXINIT is /// the next packet, and its signature over `H` is verified here. pub fn finish_exchange(&mut self, exchange: Exchange) -> Result<(), Refusal> { - let q_c = exchange.private.public_key().0; + let x25519_public = exchange.private.public_key().0; + let q_c = match &exchange.kem { + Some(kem) => [&kem.public_key().as_bytes()[..], &x25519_public].concat(), + None => x25519_public.to_vec(), + }; let mut init = vec![30]; string(&mut init, &q_c); self.send(&init)?; let i_s = self.next().expect("the server's KEXINIT"); assert_eq!(i_s[0], 20); - let reply = self.next().expect("KEX_ECDH_REPLY"); + let reply = self.next().expect("the exchange's reply"); let mut f = Fields(&reply); assert_eq!(f.byte(), 31); let (k_s, q_s, signature) = (f.string().to_vec(), f.string().to_vec(), f.string().to_vec()); assert_eq!(self.next().expect("NEWKEYS"), [21]); - let k = exchange.private.agree(&x25519::PublicKey(q_s[..].try_into().unwrap())).unwrap(); - let k = k.as_bytes(); + let (ciphertext, server_x25519) = q_s.split_at(q_s.len() - 32); + let k_cl = exchange.private.agree(&x25519::PublicKey(server_x25519.try_into().unwrap())).unwrap(); + let k = match exchange.kem { + Some(kem) => hybrid_k(kem.decapsulate(ciphertext).unwrap().as_bytes(), k_cl.as_bytes()), + None => curve25519_k(k_cl.as_bytes()), + }; + let k = &k[..]; let h = exchange_hash(VERSION, &self.server_version, &exchange.i_c, &i_s, &k_s, &q_c, &q_s, k); let host = Fields(&k_s).string_pair(); let sig = Fields(&signature).string_pair(); @@ -272,7 +311,7 @@ impl Client { } pub fn handshake(server: Server) -> Result { - Self::handshake_with(server, &format!("curve25519-sha256,ext-info-c,{STRICT}")) + Self::handshake_with(server, &format!("{HYBRID},{CURVE25519},ext-info-c,{STRICT}")) } pub fn session_id(&self) -> [u8; 32] { diff --git a/build/ssh/tests/fixtures/curve25519.transcript b/build/ssh/tests/fixtures/curve25519.transcript new file mode 100644 index 00000000000..4ab00f302bc --- /dev/null +++ b/build/ssh/tests/fixtures/curve25519.transcript @@ -0,0 +1,61 @@ +# ssh -n -o KexAlgorithms=curve25519-sha256 toyos@127.0.0.1 'echo hello' (the classical method) +seed 66 +s 5353482d322e302d546f794f530d0a000000d4041466666666666666666666666666666666000000446d6c6b656d3736387832353531392d7368613235362c63 +s 7572766532353531392d7368613235362c6b65782d7374726963742d732d763030406f70656e7373682e636f6d0000000b7373682d656432353531390000001d +s 63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000001d63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000 +s 000000000000000000046e6f6e65000000046e6f6e650000000000000000000000000066666666 +c 5353482d322e302d4f70656e5353485f31302e330d0a +c 0000055c0814623f88491d2470aa48bad5e7c6b289d300000039637572766532353531392d7368613235362c6578742d696e666f2d632c6b65782d7374726963 +c 742d632d763030406f70656e7373682e636f6d000002307373682d656432353531392d636572742d763031406f70656e7373682e636f6d2c65636473612d7368 +c 61322d6e697374703235362d636572742d763031406f70656e7373682e636f6d2c65636473612d736861322d6e697374703338342d636572742d763031406f70 +c 656e7373682e636f6d2c65636473612d736861322d6e697374703532312d636572742d763031406f70656e7373682e636f6d2c736b2d7373682d656432353531 +c 392d636572742d763031406f70656e7373682e636f6d2c736b2d65636473612d736861322d6e697374703235362d636572742d763031406f70656e7373682e63 +c 6f6d2c776562617574686e2d736b2d65636473612d736861322d6e697374703235362d636572742d763031406f70656e7373682e636f6d2c7273612d73686132 +c 2d3531322d636572742d763031406f70656e7373682e636f6d2c7273612d736861322d3235362d636572742d763031406f70656e7373682e636f6d2c7373682d +c 656432353531392c65636473612d736861322d6e697374703235362c65636473612d736861322d6e697374703338342c65636473612d736861322d6e69737470 +c 3532312c736b2d7373682d65643235353139406f70656e7373682e636f6d2c736b2d65636473612d736861322d6e69737470323536406f70656e7373682e636f +c 6d2c776562617574686e2d736b2d65636473612d736861322d6e69737470323536406f70656e7373682e636f6d2c7273612d736861322d3531322c7273612d73 +c 6861322d3235360000006c63686163686132302d706f6c7931333035406f70656e7373682e636f6d2c6165733132382d67636d406f70656e7373682e636f6d2c +c 6165733235362d67636d406f70656e7373682e636f6d2c6165733132382d6374722c6165733139322d6374722c6165733235362d6374720000006c6368616368 +c 6132302d706f6c7931333035406f70656e7373682e636f6d2c6165733132382d67636d406f70656e7373682e636f6d2c6165733235362d67636d406f70656e73 +c 73682e636f6d2c6165733132382d6374722c6165733139322d6374722c6165733235362d637472000000d5756d61632d36342d65746d406f70656e7373682e63 +c 6f6d2c756d61632d3132382d65746d406f70656e7373682e636f6d2c686d61632d736861322d3235362d65746d406f70656e7373682e636f6d2c686d61632d73 +c 6861322d3531322d65746d406f70656e7373682e636f6d2c686d61632d736861312d65746d406f70656e7373682e636f6d2c756d61632d3634406f70656e7373 +c 682e636f6d2c756d61632d313238406f70656e7373682e636f6d2c686d61632d736861322d3235362c686d61632d736861322d3531322c686d61632d73686131 +c 000000d5756d61632d36342d65746d406f70656e7373682e636f6d2c756d61632d3132382d65746d406f70656e7373682e636f6d2c686d61632d736861322d32 +c 35362d65746d406f70656e7373682e636f6d2c686d61632d736861322d3531322d65746d406f70656e7373682e636f6d2c686d61632d736861312d65746d406f +c 70656e7373682e636f6d2c756d61632d3634406f70656e7373682e636f6d2c756d61632d313238406f70656e7373682e636f6d2c686d61632d736861322d3235 +c 362c686d61632d736861322d3531322c686d61632d73686131000000156e6f6e652c7a6c6962406f70656e7373682e636f6d000000156e6f6e652c7a6c696240 +c 6f70656e7373682e636f6d000000000000000000000000000000000000000000 +c 0000002c061e00000020b95d635b825d5fb6c285c051682557eb48f4b17aa6d448472b1140e07374bf69000000000000 +s 000000bc081f000000330000000b7373682d65643235353139000000209df408e461d7e5195b4f91a8d6be83d24692e5df0930aa782291fff455ea3924000000 +s 20219e4d800da968d2a5fcb009c784f4746c7138edb9ee4844b739e830b05cf424000000530000000b7373682d6564323535313900000040929f5384f487a2a0 +s b42588158b3c9cd36f72d6197be106cf095973194e7fff96affa9f9c04cff5dfe433a8772216dd7b92055797b4d222d10abc7a3a50d45e0c6666666666666666 +s 0000000c0a156666666666666666666683c1787c43cea70dd7abce19f88aacd92300605fe4afd6d0cc189bc57b60fc689be87980a6a28a1c0b84f67132c3a5d0 +s c86bc806f82052756334d084133cc3e3b662695f +c 0000000c0a1500000000000000000000 +c 43b698ad5e35b35e0f31379e792e4e860d2d5425efbc0991de64bc1773a246d2839104a15ac5c9752746088d +s 4af1b91001a26b2c11ea2fc255e1d3d520cc50324716c18facee657273585a666614f8d0c4f876113c452ea2 +c 0bec071a5b0808a810d2d47206efc294fc5bb08c3b96491150fac21c96ecb215eb3e58fced9f0f655d9d54fd3524fc4c5aa0a727132e52698ed80cef0bcce842 +c 03ab8628 +s dc30a0ad2b0dfbddf549ff2168b2b5d8f8bd8e2d243471e7bc5d4d9944f7bbde4ca6095dba6e2c6e9cd19628 +c 2f9dd278f6a5d24943ee65c9d63793c4cfad7388dacfd82c2a76b190303ad9874cbc81dcf1a4fc40e4743c96313f2ff07090cc7b1c3f00999d6b10472eaeb61a +c 54432115348fbef6d6049146cb96bb4a0911554abff78775b47ba2a5a53886f49d4b13e026d8011e7fc28b50c40903e8f2ea01c14de92f80c85023d28035e420 +c 206ae55d4f78f8e074bdab57 +s 009296e0487ebcdba23fa6d1cfe16e2f873feb4155030c814a06170e637835759066c6f503e6e698ddbab5b368892e1c23f82b0eabfe33d013f225685038cdc1 +s f4b4ed6660aa3889ae08a757252b351f74f946acb37a88c663929328646e4240bc1bd618 +c ee0f0983d6091b67eea32c68844f326057ccc3be96f6816a20a6208ae1b560cf4dc750ec77df89e9749045c2f3665fd6af02dd96986afd7915ad98fd800d6870 +c 0d2845ba9a4a788e35166c746af76858fee504550ab21599e2eb04226f0179b2f26119f7774a5c7a5bf015e17a969ef0b5a4bb89e8a028c227c1f79b43d297e0 +c f4189806057599db9c3ff2d10d7b8d4f662424a416f0a23e24487008c484fc7a4faf41197c6d80bf39a2b5c0671084deed1c1e856e64f7ab570ba65be806456e +c 0c78d6e7d4808691b209347af6a0d9c9df3fc6f5c8e78aeb72ccc115acfd54648ea0e07c +s 2039cf5fb5e23df10cd6dfe3e0694ef6af729d40bde71494813c32fe +c dca3bb2f88183af0b2500581ce398541664b04f7e6f2657d32f7ace4470c7b5ec66e70036c1af0df0aa1730f8138c0a330f18ada +s 88414d1fe92b3ccb79a517687157cb7e4cb99f88c3c6fa9f95b2b51ebf92930ac58df1ce03bf4af610ba5771 +c 7957ee29b8484d9547ddcc20965b8fb2f825c2fd20fed2ad3571310a688b7b4e977584e00e7f2e4f7162e7dcf34b6eb2292a54dd9db7c09f0208d2d2ebfbcca2 +c 2d73bc6190dcfe4e876c40ff2c54bc1528450846c4cf9331922661aaf72a782e +s 97dd0573dab7c5fe33694ad1978c4c9f04606aab92921ece7f628c19a2998908f2b8912f32e6e754fdd51f47d240f7ece376bd36f7328635a0aec4e424bd99d2 +s c8349a6be525165f8857b6fbfad579500b262f82da0a7e81e53874f04d4cbac72739bbbb43297ee9206010913c5dd65c985ec9a6f9e5e20524f1aa3784d15a94 +s 7e843a8d882c193c981a4eeb232e9541fd7dfaca1b45c45135295a136cc381bbb782101c043b3ed75f9b3492a3840eb1a5f3f603e1a2f8e8b478193f4fb0dfba +s 3a7c426bea869450ae29bfe0f2bbdd2e717939f9 +c 0c5b6da1cc3a222684c503780bec82af5e946876d03d6413ca05d7a696b8be5c31da45509e3e2b31a7f9f9fa171331091d9a0cdfa17269e83e8552f1ad4f07f7 +c 7f84c27c804d9cade6a90359e20ca262ffc723f1c88e9dd204e6e3775fc05a6a diff --git a/build/ssh/tests/fixtures/exec.transcript b/build/ssh/tests/fixtures/exec.transcript index ff428f7f9ae..8f317084723 100644 --- a/build/ssh/tests/fixtures/exec.transcript +++ b/build/ssh/tests/fixtures/exec.transcript @@ -1,11 +1,11 @@ # ssh -n toyos@127.0.0.1 'echo hello' seed 5a -s 5353482d322e302d546f794f530d0a000000c40a145a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a0000002e637572766532353531392d7368613235362c6b65782d73 -s 74726963742d732d763030406f70656e7373682e636f6d0000000b7373682d656432353531390000001d63686163686132302d706f6c7931333035406f70656e -s 7373682e636f6d0000001d63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000000000000000000000046e6f6e65000000046e6f6e65 -s 000000000000000000000000005a5a5a5a5a5a5a5a5a5a +s 5353482d322e302d546f794f530d0a000000d404145a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a000000446d6c6b656d3736387832353531392d7368613235362c63 +s 7572766532353531392d7368613235362c6b65782d7374726963742d732d763030406f70656e7373682e636f6d0000000b7373682d656432353531390000001d +s 63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000001d63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000 +s 000000000000000000046e6f6e65000000046e6f6e65000000000000000000000000005a5a5a5a c 5353482d322e302d4f70656e5353485f31302e330d0a -c 000006840b14ae8b99e1849d314f736dccc8c4f5f9010000015e6d6c6b656d3736387832353531392d7368613235362c736e747275703736317832353531392d +c 000006840b14ffd48f406ff99126331776929764d5ff0000015e6d6c6b656d3736387832353531392d7368613235362c736e747275703736317832353531392d c 7368613531322c736e747275703736317832353531392d736861353132406f70656e7373682e636f6d2c637572766532353531392d7368613235362c63757276 c 6532353531392d736861323536406c69627373682e6f72672c656364682d736861322d6e697374703235362c656364682d736861322d6e697374703338342c65 c 6364682d736861322d6e697374703532312c6469666669652d68656c6c6d616e2d67726f75702d65786368616e67652d7368613235362c6469666669652d6865 @@ -32,35 +32,70 @@ c 322d3531322d65746d406f70656e7373682e636f6d2c686d61632d736861312d65746d406f7065 c 636f6d2c756d61632d313238406f70656e7373682e636f6d2c686d61632d736861322d3235362c686d61632d736861322d3531322c686d61632d736861310000 c 00156e6f6e652c7a6c6962406f70656e7373682e636f6d000000156e6f6e652c7a6c6962406f70656e7373682e636f6d00000000000000000000000000000000 c 0000000000000000 -c 0000002c061e00000020ac3d00a01621bcb637d93388222d6fffcd095e822cc007f8fc1ca72c0312e072000000000000 -s 000000bc081f000000330000000b7373682d65643235353139000000209df408e461d7e5195b4f91a8d6be83d24692e5df0930aa782291fff455ea3924000000 -s 20b0d08f35b4683381489afb32825e59152d47d19bc9e050d6d5a954984c9d1e2c000000530000000b7373682d6564323535313900000040641c533bec362af3 -s 70f6ea51468e199c4820c106b45ad6886121a569c46bb31673d3dac5a53ece125fa1c24a747c8b3e1aede44c27acb9c5b866450eb07ef30e5a5a5a5a5a5a5a5a -s 0000000c0a155a5a5a5a5a5a5a5a5a5a09042b5a5e1261ecfa12361d986be3d7c441a720315bcbd3334abd75b8333c53dd51980170406aa6351a7b9f3b1e31d1 -s 619620ec03f46d660951d14ac27eea5a78c6493d -c 0000000c0a1500000000000000000000 -c eabf075419a2049c30e24227df2c729035bf9556533b997e30418d3e003476eb90e852aa13b3198e104aa8a0 -s 10030d47aead966c1910b0c9184fbad123e852fb55c8b232eee719bc913b71e51b4771ea77ced9511c5fbd99 -c 0acc71fc5b44db2c837deb4d9cd1e18108c867f56e7f9f1c1ccf6ce87857f313f50e8cec0d793dabb3f2678adeebcf649eafd1d6c236d4c77f5b65a8457ba23c -c a8090cf2 -s 0198bcc9e438d901fe050393e0abf62090b34256f4f18780a8f4c2fd02c2dc84b1dc9656c7975e7a9514f059 -c 5965536422ea0dc3e450b6902fcbdd2a4227e0d05a0e1df84c27faa7f64dd69c8cb7f8afa61bd0932c565f559e1bd395239035f4b40e0fad9b18d5118aa1448f -c 22decadbe920c6c8bfed17560d384942222501b1ca4b049f20e7668406805cfc8710b60838da71e04b9b06d174ec0f117a2e982eeca4db5b64d9d5600263f7d6 -c 0d75ab75fda5ca9022347a2a -s 3ff16f6ae3f68ba246f990a9efaa60a2cddc96ce5a40322a7fc6b8b9dce9b246be02b3b1cea1881677f7550bdb9739f739b9c1a833ac6b8f688955e67b4cb0a3 -s 03903596d47b7e0ddbbf29872a0e5a8d59821ef9542d8d59ed508975342cba6047ce502f -c 552c28bf425a3299ea3ad3ccddc37befabf745b03c4ad057c9aa7c83e95e98d01b413e12db6bfd4f0ab699f9ac31420953b194d793109da246665f0e67385a3b -c 3dfa8a201cbed8d6ded5d468fa09b4411c1d37e4cc7d13c9491a7dac04e6e36d96f4cb6f589ffa48cb17300da6fc29229506ff5de2eb820f08736156298e3fc8 -c 57d0ac38df4289af3a3f882ffef41f487a8064af86ab3daeac919d80630bf1cb75af9aa5500c253a30e1e557a80c573c9de8446b2b93171a743a1268b0287094 -c 88c86693d49c06b64973c2fbdc7c4fbdbac77b69a3e0d704c265a60246896e15a59f7ad7 -s d0a00a39f70d354ee71e68bab79f679353b2339d22f6bc99a7359073 -c 697b6d9184a7f2ca9b60acab133a2a52848488492f2bf8777d110134f827323333bb990a547ad153a0287f6dde86ffccc9355b46 -s 5e2cdfaf9df6405e2810a71df82ca3660fbb531c9864a755d8c36dae5da92721194f71ab40abba677c4632f3 -c c906ca28189944f00ffe36fb132fbc4ea5e9b57c6bab59ee04160128c9e7bf525a9bdc74f292ab73dd375698a373b7cbfdc9d935aed1ad0febee91ccd8520d8d -c 5b5f24ff46f9f94b3e1efee5551a6b4b2306f8a26b43c94c3522b98014e2d140 -s 9c76ecb18ef37e59f8ec92769fe3c99fbf31575a2d40c69dac23b4aec6754394eb753118149cb784f74b3b008a7e16c1761c7e9a164c520276486bd1f42d7628 -s 50817ba0d1e1e8d8067ace1171fb1bcff7e17b33e27063d6a8b7eac214bb078c944eb769b1cbfe32b34000459e6db46160e0af16daa75c6312cba4e9b9aa7a3c -s a36b312bceec365e3ef0db8e40140f318908dd74bb53466599fde97182ec17770241bbaec978f49f6e3d78edef6b9e49c805fddf06230409eb4588e0b5e43bda -s 2d41e469ca987cfb0c4db6dd61a31d3759bd7833 -c b8417a2909000f51f59ff7de6875e7088edb48640dc631dba04862a3cebe6b1b3cb8b14536c1a920042a13d86ea83e9bf2f888ee8ee311b31be9b52cf55cdfb1 -c fd013448de1210d5488334445297ef1fb326f67dcf7d56ce5f636d1dbe93ef98 +c 000004cc061e000004c0276cb6937ab181cc71addc888018437e85518485779b3203f1590a8f12882b14b2d981257268bd76e4211a8269c9371d6f68aaa2f433 +c f506b71aaa4a497b80940aa6877a421ab30a4c93235ba94e345c7a91b8b0d348b237368464f26d0829cd02804bde274d3eec8a9230bcccd22a3fecafa7d917ef +c 55663eabcf401bcc93209e07d63dc467853374b414c97e9235b8f9a55738cc9138737b534a50061645818ccb14e4693e7850d85c343ce847bae75476481f4e1a +c 0c24d2c93273888edb2ab9f4b1ec59a1ca93112d3a8cc6b4acab59acea76a361e401edd9b2062c06b094735279771de7a58b418d3c468d670a948596b7d19710 +c 55233cdd79224683b1c7557d06414a426b1424a49ae7b533c6acb20f85af33c11b24c72373a95a848036ba5c4666c924406027458c3298289925d647aeaacb26 +c a9aee374432564009ad6978a28378eb6cf386256efdbb991079f8f2623bb26cb187c27b7e3c42732ac0ffc1287790abde1b382a12deb564bddb6582d19ae38e6 +c 6238db53f1ab562883437180bb35054f2cfc6f4d4133e33b55e87b92aea84fae134f7fd7646f4a632e4a42f4a4a6cbfc2140e08eedf1c9fdfca7281984db1c8b +c 47e19313c886b35806555934e29b55d3f18bdaf7c7eeb63a9b041353cca73521ca94572a2a466362fb59cd292be7071499e443d8291a0fbbc8098b2a19ca226d +c 4ac38afa48772486bfe10ebc7187eea1bf6a7c2e99b765fed50b68f449c0d4107f086d070b63b115125765813de98f4e7037b857b38abba65c577bddb0b7c753 +c 045f691e5a0804e90618d0d58414612395610b1ab50ae7d000b8677ed061b729f69ab8b10ede92ba31992599b510d0d0bceb77c97fbb827303bcf76669fb0920 +c 504110d2460bbd2101fc21ae23dcbef142bcde3371180c60fd608a37e7470f29a8504591c598ba03b62caa6cc3e204745e5659b5863a50360ebe473d5862c877 +c 325bfb1c6188762080e0591c146b9f2116ae98c6b1c825ef456cd8284462140e6266316187c52accab80fcae45fc8955006ebdbb9483a5551fd265a80252f5bc +c 6d7a05119fa215abd19956a56cf4902d3fca9142718f2c7048199a0bedcab50d82822f139c7c162fc233a58530c7b66a5feb823cfa255ca01581589824301901 +c 18c86c15b548bf2cab8530253b5a1dc69b1c42a378c5e42bbcca2977d96e08552eb504638be0cb92eb3d55f43657836be4aba09ea8613ba176168b543fb1a5f6 +c ea9cf69295356883ab9b810795b2f352af3560919a856f7727a6df1a538cb3b4eaf6b583d6acd4abb4e98a120ef22e909acc642c1f069bb193fb833a56c0d114 +c 1e95b563d2e9522085bac739c8b7089284e90f50aa6f29d98a01cc8b7c7094508c46094baaae079cdb4bc33b29ab4b726550b106437bafddc83c23c53fc48bad +c 589a525c7871997ab7a9839f0b7122bee6c35273a4eba0404a57bacfd7a16d878d0896b8240682e6d86c98b01d999bb05fc0c2b3a06230232425f88ef7ccb01c +c 86037b065e8945a0b1a2b388163fb7492dd6557f4ca4ad69f6752e2849a300373fd29b8bfc7f4592885ef6471eba9b5d8a32e3902c862271ac3696541970a56c +c 1080876d1412970ad3540d30dc3e323a95456ea8e4ca34054e7f22cd2000fe7900e6c305337224ba6c5627fcd4970da537e34bc660c0c2309857cdb703930765 +c 5f553e7c6269e61e2d46000000000000 +s 000004fc081f000000330000000b7373682d65643235353139000000209df408e461d7e5195b4f91a8d6be83d24692e5df0930aa782291fff455ea3924000004 +s 608e1ef1fc27c352904c666649066c9986275438c2270350783d1d0aefa135ccde47128dc0741bc4d0f6172d0880b5c1257af888bec8500ef48809b1f98794ef +s 5e217d0557212326131d5e685d91a98a2ec0bdf37c5fda0ac838e8a146ccf0c1955b37b9a50062b0b36033cc17e2824fd3e309dfac41d120905b8597c7178226 +s 73a5f098d1d1786d59dabf11e8aca7d0d3d2cb1aa97b734ad0f9ea501712482d984deb46a5d250085bf3a2289c1f940dc3af1f3b01f998068f2f03e8b212636d +s d33385cb2e463a09e9515a8b614cbb3f26b064bfcdbc2a98c4f8372a4069001875e7d33d8312223cc99fa095e3c15ae9d0f8609eb257825817bd3d9e2e04f01d +s 350da4bd235ddd2ac00d223d7b4c0fb38e465367909bdf250ef590e7dc48da1ad1d5cce95056daea3e9cc427806d17fab5355d63e6a74b0ea1ad8594e02f2523 +s ecdd6a6879bfeb3f451645e2a2a83a12312d56cedbc534cc6705f8790fb4c8c577e2c010ff7106b2fe5303ac1776dce9a98b6255c7dc9075cd996fd26784da60 +s cdf20bc068a23d5afa0178a31b4de9dec465ed854b95adec32f79b88e6697da9ce9a72e162fa0226ec40be6aa2f2744900cc84336261188ca40c1522616f4cbf +s b8882d45bd7f1dbf22c674ce81b7db148eb466e17847f52349be72249eff14adb5b6cc8c99a03aa4fcd030389b409fd0351eff47e6e177e74a50b4b0587d2158 +s 6921b5fb003f39f4ac6426ff2fd22322366d4e305c9a8c263a37ee057e0c3ab14f91336b2e464b8bc348598f120e15da0a5b3fb90286e4598ed773cfa6b657f1 +s 480259b9666ed2f7397336e6099923f3504c307cf59fbfa9a89a2af1b4f98b58a5a066cc75a61b6a99d226fc064bb03c044b2b2191677ae251639685334ed4de +s bf5a777fd2457cc6de6c5fb5c23af7dd4fb333403e70bac399675120b3793e92be7ed9a32052a8056918edcd2a4327422705cdaede342d0d53b977fce5620f3f +s 67fb56f8dbc68f748a8d9dccaf7e14bb1a3bd6e95495dc75047a710a8227e404ce6a66d34a14315d32c8a12b1c6b85316c1972536a6641238543fdf9035fca17 +s 091e723a1c0198ac9bc11d4d9507ccd47a9fbeae1c5bed8a1f07363fa3f831f0de2f639cf36f713dcc2376ed588d6b4a772be5120a7e458bcbcda1992002ef95 +s 2a36845a7f5ac1ce9c42dcdbc9afca37a94eb25a079fed6e7c68a81b51c678e6c877404ec7c45c28ab0582e5e113c9eb5e085b4e652b6d9e2a486ec88d607bc8 +s 3688b873b431333ac58cd8bdaa9700034bc8bc3cf4b3a16ef33ba7a03c10bf53f428df8fed75c313f220b91056c783613843e8c9ef326c6aa1268a14ab420625 +s 6827785358d2bded8a9f3cd54a4c4f5a44fcf21e06b11b45eaa5316a5c5aaec3549bd0606f43edda941e6f98c68557ea6a7e2cfb9d360fe40fa659cf47ca60ae +s b624e73129bb4b70a8820829305250e920007ee8e669bf94aa8330db32875699b9deb4ff3c7c24f256d5168f3481b8cfa9cd8c4805bb2be33b743e60f7120637 +s b1b0d08f35b4683381489afb32825e59152d47d19bc9e050d6d5a954984c9d1e2c000000530000000b7373682d6564323535313900000040e82c7d0833154360 +s 61033ba481459b111b6bf2da85e35d5efd0ec9db1a5f42bc1d3226bf4369fa240b0f4eb9164e988d24b48bd92c0fc2dda6320ef2b1506b025a5a5a5a5a5a5a5a +s 0000000c0a155a5a5a5a5a5a5a5a5a5a117134e83b1572ceb998e6e05a7ce4ab908336e3d2b1ef22fc8a49a92b72f2fb91fa0e3e37171a218c17f8fc2d34c191 +s 5fd5e919f1321552a464f17ccd3138c8e73ba01e +c 0000000c0a1500000000000000000000e4875e15a8f00f6992791bf58e3cfa48ca8fe1df4d21996d0b89614975956ef143e93575cc1d38db4251c2f2 +s f066809ea9187f29864f7e521fdfe86e2134a6780a22f769dfd4904d05df1406049415483063c589fe2f471d +c 2dbfbea3fe8051a93906ffc0bb10f2349f7f929dfa4a20d4b7503a4663fb37ba850c1ff0bf93776e3e69c925a6db1e7d37934ad6cdfd022ae5b4d129a0309b14 +c feed2db1 +s 92ad4213755fae29aa809b9703acc918d853b60764d8fc0c5809050e2a275fc20318a3fbdf4f86bcce062d2d +c 14d8cbadd03b2930ae6cee2d5c2b6ec58844fe6dd9707bebe083e3c010eec70cea6d4cba6db1e67d8f0f49bfa7de5548808262b347fc6434e7db8b571ee6ba50 +c f4b31da8f73244a14281334a59380acfcb750a3eca6da3b12af334a1ff700a31074a3521a135f0468ed021cea58e5735784be14eff0c15b90550896c88ba9b94 +c 10844d864320da2486445b4a +s e32176a1ec5ca7fac47877bc6dd08641e16b76934a55fa685766aab82d191097521f14994f0cbcdf0b46a6d8542ba7011657948c377d461d1a9003f1c52ed7b6 +s 7f3a60cc28e7654712b9557b1fa60214eb1676c8fc0fe78ebe60f31828e0d1ce6d1b97dd +c 02b17e0f36034e0c5393c40f3872d01095edb6487764150f2b1402e67829a61ff1739d55e968b2252c4b8ac27de94d54cd36bca9f7d0c7e6e338d1325adb106b +c e08cf5472e8c1a08e94f44e18b9da017356888c3c84a09932ed543af9eb4bce2626e835de7d6b5609fb10a14994be5743fefa4678f4662d31bb812496b07dee4 +c 411ae4c8f70b4ce29a5c9ac4ed06321707680898e845a7c2509ac3ace818aac9f5217c855a92a3444309191d8de13858eb90f05546c7b4bdb7b0a7e1fd82705f +c 2490b978d035ea97c25590b53d2fecb14dea27d20045014ecf9c210c176364f2a3438501 +s 3fe6b8b4688ba7efe329de9e71740176d144d195f043ae8e77feb0db +c b8fd4189b0ade752e52a5e4056e6de43394bc78a3c11f8646694c9babbff8737554d4c3a4cd6074829ffac6d8c3185752c4562be +s f00db5d1bdddd9690e51e8390c3abe79cc6916a26ad794bc928d1145d4706dee6e7c44274e8b552c08498f1e +c 9018c59da40e2c70ff815c94ef4b39a7609f57177be41042a3cdf1f94e409524d349316048c85ad0a4f532986317822791d10339bfb2132d3d5720f79abfe97b +c a4db52ffa6eb550368125fb44db863f71def60bd076ecf7f879ca552ab1d715f +s f9f45bb875712d738976717c0c3c06ff89bc704e069cd8d516917dce68de4c6a33305180ab1e284a9c6af751a43fee1166514c4e407e3b3808e2ee578687ec87 +s 454ce344ffd37ab3e2b1ce048f33e8f29998b081096777f3bd274266fe522e5dfcf825843822ebb15fa342f14489e5b8c4cedf0d17847efa24eb47d3318ccc9c +s 0f9738cb6283cab32ea40e66b0bf0ea5a75008fe38a6553bbf087ccbca5e0a156af096216295b5059570a4ea83e1ae22d1cb61da88d5e078c59a2495129a43ca +s f6b92c062584d4ad29c58e38e777025487ae711b +c bc84e0730252856451df09f80ee5956d9ec21986614dc1185000172e0132b96d4d11dbb833aa839025bb14f58d5aea6494978f85cada959ff6906ac78979fd34 +c feb5e31972d8587cc296cd069cba3f997b2930f590deb712dc1957df0d285911 diff --git a/build/ssh/tests/fixtures/forward.transcript b/build/ssh/tests/fixtures/forward.transcript index 78317c2023c..234d1efd709 100644 --- a/build/ssh/tests/fixtures/forward.transcript +++ b/build/ssh/tests/fixtures/forward.transcript @@ -1,11 +1,11 @@ # ssh -W 127.0.0.1:9 toyos@127.0.0.1 (a direct-tcpip channel) seed 44 -s 5353482d322e302d546f794f530d0a000000c40a14444444444444444444444444444444440000002e637572766532353531392d7368613235362c6b65782d73 -s 74726963742d732d763030406f70656e7373682e636f6d0000000b7373682d656432353531390000001d63686163686132302d706f6c7931333035406f70656e -s 7373682e636f6d0000001d63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000000000000000000000046e6f6e65000000046e6f6e65 -s 0000000000000000000000000044444444444444444444 +s 5353482d322e302d546f794f530d0a000000d4041444444444444444444444444444444444000000446d6c6b656d3736387832353531392d7368613235362c63 +s 7572766532353531392d7368613235362c6b65782d7374726963742d732d763030406f70656e7373682e636f6d0000000b7373682d656432353531390000001d +s 63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000001d63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000 +s 000000000000000000046e6f6e65000000046e6f6e650000000000000000000000000044444444 c 5353482d322e302d4f70656e5353485f31302e330d0a -c 000006840b14139cfb03b256dff8af44854ca2b9af0d0000015e6d6c6b656d3736387832353531392d7368613235362c736e747275703736317832353531392d +c 000006840b145c3dce28ada0940ddd01f051568744b70000015e6d6c6b656d3736387832353531392d7368613235362c736e747275703736317832353531392d c 7368613531322c736e747275703736317832353531392d736861353132406f70656e7373682e636f6d2c637572766532353531392d7368613235362c63757276 c 6532353531392d736861323536406c69627373682e6f72672c656364682d736861322d6e697374703235362c656364682d736861322d6e697374703338342c65 c 6364682d736861322d6e697374703532312c6469666669652d68656c6c6d616e2d67726f75702d65786368616e67652d7368613235362c6469666669652d6865 @@ -32,29 +32,65 @@ c 322d3531322d65746d406f70656e7373682e636f6d2c686d61632d736861312d65746d406f7065 c 636f6d2c756d61632d313238406f70656e7373682e636f6d2c686d61632d736861322d3235362c686d61632d736861322d3531322c686d61632d736861310000 c 00156e6f6e652c7a6c6962406f70656e7373682e636f6d000000156e6f6e652c7a6c6962406f70656e7373682e636f6d00000000000000000000000000000000 c 0000000000000000 -c 0000002c061e00000020938e0e603fb863f394dc113fc98b9b0443aacd401214e7b1e9fa0a7ba6779534000000000000 -s 000000bc081f000000330000000b7373682d65643235353139000000209df408e461d7e5195b4f91a8d6be83d24692e5df0930aa782291fff455ea3924000000 -s 20ff2ee45601ec1b67310c7790404585ae697331eee1c1f8cf2419731c1fff3e6b000000530000000b7373682d6564323535313900000040e0d3f96ca54160b7 -s f25d35b5f4ae17eeae5d77b9bc400187c67a66ac63278d366504329f107e3ae38ac376a2e8c18cf535f31e30d811bad61c1bf936715642004444444444444444 -s 0000000c0a1544444444444444444444b91a6f55f58ef1e70a942a0e1f515259678f31b274492c02414ec5805720d83bb95cc8a730a52e97cb412b953853bb48 -s e724100184e3d993af2b4b1536b00b926f5e5efd +c 000004cc061e000004c00f06cf1d2602dceba2dbe072d7266ceaf97a69313e29907e86561be993bf044817c15c80d9336840bb8c5ea68c7661b3fb33025c8159 +c c12cb936eb55ff95982313ab45663cf0717f18c3ccadb501479469701552c0f5c13e15278d176632326d20427c27da06761b4880681fd1929332318cca9562ba +c 373fc251893bdac36c768cefe478a74cccabe1330c736bf7fbadaf9c69a55b6e70ca96cb6b534804233e283b6931101dd5b4426b51ae908ea1b76239b900f925 +c 8805245a9a2ac45c92b2731528ab6181c4036b5a21ba07176a0b9c6da50117a8405c2e4730776a8b491618420b5d66c44512c47275c2bc62f1374f3351dceab8 +c 10d159d7324258f8446503179b4679072141a60263d4a6ac954355b31b483ca25b343714b7c73031b76d7ac91328f7991f75570eeb7cde38b84ce07befd157ba +c d1c17be2422ca3b5a8865017b0b339c1c70c200e09746516e05ac8cbb271336dde884f51e83c7ad48e7bf267451763345722873800e5444f6bd34dfe7649acc0 +c c137f13d236307b3747b7d4b4b6c813907829d56f6353f79bb3a5988eeb601632a2cb240775ba8cc9ad2008706342b954ea7285b1422484b183c90db4f5c29ab +c 92c183ca9c25bd376c2c3aa2827031bef4be7e8b32b6a7cc4b5c45b4681c5a930987c16cb6bc97406abf1690a1bc682c7e15b87c0a37780968a795319e336886 +c 28a36dc4a730475382b579e3411b7cda2eb65423d014a7e4000e4e312bdc16c026bac020d0c369fa120c909b1642a5ccbc0243b0bcd48a67029a6490d0111ae3 +c 5feb776c1d32256d01497da917731167b52267236b10fea70eea0c68d456cd462ab671c08e054277530711a874988667a06061724fdb5dfdb1c381a500fda17d +c e6c869aae37f5a821514b276b25638e7ab022534b5ef21318ea4182520b3477b7498525db583b1322855f9637e7f9174952637772429593aaa63549b29c27cc9 +c b247fd025a03f2a3b3434d4b861b0ed02b89f879816cb381771e29917fd60165196465af1ac2b7b5175ec84427b27e575b4bb5a7ceb19b69dd51099b65325f44 +c 787df92e787271c7c9b89bd39b996c460b20b2dbe3cc050c64cd9221f23428df95bb4296289f4b88bb8686ee5896ac692e427ac8dff79eb834381b63209cb344 +c 34e9b02450885831ba6888a6a870091bd5a3b2aa9c9a9420cf196a1c519357667420716728544fe0e1c4422092ab119c1d698842aa6166b6988c4a3c8daa208d +c 290fe4978b99dc9d48483d10f117ab413d25b62c16cab93004372fd32e264405c3a6536165930a8243293c1882713ffeb5ce6f842f4b7962c8a45310826aa1c7 +c 023c4ab56482abf6a69912c545fc5b305301006870a02578840e27c8c5f3459ed65ad1933e8809803cc6c8057914eefa4c78532ab4489efb3889e0a259e6e160 +c 9c906e77c53c96685d45b459ea1c1945aa591b272d5154b7db2056bfabc6f1f75f6c917af060949c0814026ba58369ac68375ec638c02278846a56399e483e49 +c 2aad7b23246b86999c88abc2710c5694a89f132dd50c55dd36c1aaa35028d41db22a120ed1c5d98888ba82cf6afb0a94a33a545b9cc3ec55a4940d23c584fb43 +c bfc8702285b572fcb8207321666c26e2a491db5d34fc886a0c307ceb3344adb0f1e81809410d60bb0615c7fd7085472fc277276902082a50754add133311a13a +c 5f4cbf170e8fb4f7a731000000000000 +s 000004fc081f000000330000000b7373682d65643235353139000000209df408e461d7e5195b4f91a8d6be83d24692e5df0930aa782291fff455ea3924000004 +s 60f9fe7e66ae59580a58c0e1228c7a6f86ceace1b647dc61c0d4aab61932a5b2a465f36638ffb4b50460a509436117bb0efec3079c23c6d9c1e4e4a3269ee9fd +s b2456032fb36685387435e28e0c5841b81494d35f2db17630df60a4c120bb27aa54b4b019049a1e469495ed6b0c31ae38a0a66012cf20f641c83aee0018e3e8f +s b76a356e9148514f20e5d8e9cf292a662e0a4227c41b67780df2f51fe6967796ee045e75d5e4aff192858095aa9dc34cb6137b1d2e9b03eaa2254abd391f68f9 +s 8866325353880a613a287f2be20b3f06ba7300fceeec1ce4ea829fdad5b7a51586828a85f889eaed263c6f4d6658495937f67e0ba307be8ddd6039349b434f75 +s 670783ad5c1293a0708224fa9ace6647d48324e7940d77dde4bc80ffdef7ce287a7228c2aafd6e342610aaa3138e0eb67fafb95b635abab749f72d344b8c19ec +s 251a2c0dae3f28dbf35fff839db2a9d18447a6845b19b9c12978c94425f6e0fa76513e01de08cc45d8b4a647c49730191d0c37f2320ba5138f9f3f0cd43653a0 +s 4b8956759e21f75c4f9d5206dbb8372d363a0e9b96f970c2f40467c86c686a9b91ff1e0a21c333cf369e1116f0efb20387cb39d95861b32cb4d1d003c5e40cf5 +s 0fbaf6f6ec4803ed36181f7324d2c11ac059366832df359d5d94f7b84d3a43f62601672e0155d4bfbf853bda4c3b8288a124d5cfee881f2ba949441de78df28c +s 2fbc800904cb81e3663d2119da7f99981f8ae06f6f9cf7d9cc6967d0fa8e720067bc5db7a00e7fc4bcad62a96807f57c6f5d670a1ee8c7d0580bf36e54e58100 +s e7d096ab8113ce4fb8b3ee39f42bf44eceaa5b6ca8002a1c0c0317d600b8fc16e02574204061645a34968da746ad84d1225a9f313c9158816b1d12cec427cfe1 +s 2de16affaacca633c769f180a23676917586fd65fc3faac39955d0ec6afd594f972679a53f4e14109ccdbd55eea30ee40d9b4e06dbe97331c635423ac8271342 +s d3c5794494ccb344abd959287ea4f456b3ed5c26aaf14b65e0fedef59aca20029b409727a15717a3b8367d90fd6441762ebd07fa1b687c2ef5a0e055343dae9a +s 5e009159fd3e4b2dc688eabc0a2d8d51aab81ecd2030e5d2b758b8402327d7f1d9aebec7e0831944ae871a68f75bdd5a5ae8281111612228c78563f102439a0d +s a96da3f54a04fe4f284e85b97c43dc33d315c650b4007c7cb789b5c60b56b0bd64f182237f075e4e398982af32bdfd3aa203feeb56f91354f6cdfd004b4ba90a +s 716d0ab55209ebca51a5cb0ac6c220e162ce17dc896075cbadede33a4b247e0d7c1a3a1a8888fa58e64b8799df4353fe626a5483ed59c23dcaf45206588b05c1 +s f1291011f894d1e5d09677c90776a63a5a3ac826852891db2de8703f95a58afc42b49f4b948aca43f120f7b353812f222abf47dd743d62a326705bf7a37c2b7e +s 2d8520afbe8d99729fe9e0e8a453f74545dc9b27f33a2a83b6814304b6bc912d60ce577db57016e176a48cb02039c7b1e4d7176600b5874927f9c0ea089f7647 +s c4ff2ee45601ec1b67310c7790404585ae697331eee1c1f8cf2419731c1fff3e6b000000530000000b7373682d6564323535313900000040352dabe4bc5fe994 +s 9ba80563a68ccfb125701022e3e0676d14d510f13624ea806edcf2d38433586f45d39ce6fca24b3e4556b88f6b2f02cdcaefb69367f664014444444444444444 +s 0000000c0a1544444444444444444444e7539f80fafcadaae8afd45eb8c21057049df42b4064f1c2bd49d0e09fc4db359cc6dd910691d59917c3d4b8b66956be +s 1bf4f42561c1e445aee0194b233d64330a3c0ea1 c 0000000c0a1500000000000000000000 -c 507a3d76e924c8ded4d96ed5603b1c5d127bc5520af831f20010f097f27661d8dc3147c201e3d32d32c80b9d -s 6ee770088bbaa2c0b8408c62f093155e430a55e4e941d80cb48009cd32a8bf3eb83ca5f3f1e2cc389de4b540 -c 4a8c80bad6dd7b56cf9ed62b8b1d5d5cdb9150d66d05e099ac626ecdb0eac7dadd0d0cae288408becccebb8653e0a85c36b911077422a735e5c544eda35e89de -c 627cedc6 -s c6b3aac6c64f5e6c5a47a411bfab4fd6ffe4afcc2f3c2d15b860ef021bb9c1db96d5730e3312e13006279698 -c 0c575fae09c5fe860fcf7f6490a6b77a72b3990b0fade5293fe8829e8e6f7eb2041f6339ea5331c85ec7a21d8053e34680bd07b89a26b43e2fbdd1b5bca52c3b -c cca4f05ecdddcbb0eaf35fbb7df51ac23137800bf9b6740f35882d350de5994d61c40150e26c7d49cfbdbbdf36050b4274f82dfa96b06f84b73423efeb5e6c37 -c ecbf761db6fbd4431e334e91 -s 149c8f0629a98263a25adc130d7b8b3cb53ac52bc19da097abeabc6ce295f409529f2a2ed331e6b8bea6ce04963bcbb6865618d5211c005d1b3f7deefed72193 -s 1b1f7a046eebdbb94519b9de82a2b870e0e702e7754ed7f75ed1b12c2d2fa0db90738533 -c fa6646aad630d40c6a5384e3a5f04d1b7f35614cf505b810b9faf3731bec2ecd619f4ce7a9dd25a3da4adbcc4bd7301fa639fbe6100613e66d63867325060b8e -c e700c205d1ba0dec1d350c789671f34cc7c2dbbe53f45061d8b4a8540a9d45789eebbcc143f2d66ed45d9cd5b2f456c6a2c0c5092e681a48b424dc7e71f3240a -c b4b7f9de4dc7a95784997576c07296e0bfb437a1f4e5f457016af28971241fae91263d164c9cfcfb39f9464ec03a5b8c5038afe9b6ea95cf9f76215e05c674b0 -c a2b86ad514bac79e3c932e0997a308322e456aad9fe5db0e4bcdd057b604fcb85ef920b6 -s 9ec5e4ddd26135864f56c27db740b4bb58949ba44a678c81d00e5b18 -c 879422f8b5c1f5639dadaf831943b455f81a4e52d09406d0c5bfb708c15bc13e0cb4292b732b6274a84911191c8884f541f2d74730363640c3d92868ff936a30 -c 7b5f7b6fd02839e9becb58150b4669cb9683d9afea34eb44be8c3da5 -s a34c4e3af8d9c327c1c9a9d409dad9858446cf10a2029fd04810218dfb206d23f84812434630f820eedf43433cfae8531c259b467afeca0d17e3ca25a0fb1793 -s f2c3219f93c9c9e8c7ba5b61 +c 7bdd63dfbc36ea9df3331aca378b6d31e86557c3af3f139cfcc1efabd390a4a3f1ec2d13921a5e2f2427cc76 +s b249112b918611f069bd3c01941e47377583c89c0e60398eaeaf3fedaab9be4703b305b5c313d7f51d8d1b03 +c ab1219a697058dc30474ccdaaad8369cac902201f6691904145992a42c401567fd0ea436129ab58ead4fd3df3f55d7a2cb2980c912d4ae5420d2ecb9633b8b5e +c 79ea9d13 +s 22f7c56c3f82114fafcdb1aa19d3b945c9f34320ba5a6121bee8e3b0a31082fe72f3a09ffb75f1b0a58921f9 +c f89d4fb910320e9dfbc691a3e915dda97b67ad56b3f49d6a515d37736795a9be3252c0ccd57283fdf8a763cd874789b15f0c6955cd82bfda0ffcefb490e6fbcd +c ce240cd4bee19ed20f78af9cdc494d9dec16ef049b463d0a2e147dabc9a164fda061b92d1638409276492ecb696b6f7f4f00750b6407e3f2aaf8e260c18b86b9 +c b915e512ff98b53c3f8008c2 +s b0154d88fad7b478d56f34d2c5c5aa37a755739d354addcadc1965254781d202456e1af57e2e3cebc365b2affdc9fdd3f8aa112ff9d6d3e75b09f90f8f02e193 +s 3fe3183f234547f34377166d5c159e4b7af435fe2952daeb59bc9af1af174285766f4d9b +c 35daa26561a321b11982203811709ad4ab04e6c8bbba993707895c422153cfa057256cc2ebec0db2386d4bd8e2ac8d039de257561a303bf8d5f1212adbcb1dd1 +c 8259d8ac8b7f63dd1aa8519c6f28824ce92e0a40b41b03b8a9cf5acb5c9a0752b944014cf466aca254312740d4e3696275bc6f846417a227ad22b0eee4a432ac +c 44274a7ebd2f464d53b46facef054dd77ff7f7638d5cbe54b23823f66436b4fb8d3755bf2d53dc1a20067cbec9e3800050b1ceb0aab50e63ccf4b8860bec930b +c e5deb4941992996bdaa9469e05cdfd251642a8c8c0c75a4e7c068f4199ddf157211d805b +s afb9c8cfb3b9b802eabf840e7dace74d5a4cfb382f40baa56ff0b5eb +c b40dcb091fbbb1fea89888582d0d91741369ccd51dd187cfacd9540749fc0c7d24aeabeeed6d9bef1128dd3c62da68b01d571c80ce82048ebb2f495184045111 +c 6c541ab24f43df0931d00a9ce38b3b83b94bbbd444cf90cd7272b9f0 +s f13abf5ab9314d2ea119a7152ddfcc36cf10f657013c6b1d44f5faf60e92d6d61ff9261a558fae63310e2ab9ef002f9dec3f44ad4a99664967eeb67c4e60ff3d +s b0cf420638f7241566b87c08 diff --git a/build/ssh/tests/fixtures/rekey.transcript b/build/ssh/tests/fixtures/rekey.transcript index 6ddc9946a22..d76d1990615 100644 --- a/build/ssh/tests/fixtures/rekey.transcript +++ b/build/ssh/tests/fixtures/rekey.transcript @@ -1,11 +1,11 @@ # seq 1 3000 | ssh -o RekeyLimit=4K toyos@127.0.0.1 cat seed 77 -s 5353482d322e302d546f794f530d0a000000c40a14777777777777777777777777777777770000002e637572766532353531392d7368613235362c6b65782d73 -s 74726963742d732d763030406f70656e7373682e636f6d0000000b7373682d656432353531390000001d63686163686132302d706f6c7931333035406f70656e -s 7373682e636f6d0000001d63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000000000000000000000046e6f6e65000000046e6f6e65 -s 0000000000000000000000000077777777777777777777 +s 5353482d322e302d546f794f530d0a000000d4041477777777777777777777777777777777000000446d6c6b656d3736387832353531392d7368613235362c63 +s 7572766532353531392d7368613235362c6b65782d7374726963742d732d763030406f70656e7373682e636f6d0000000b7373682d656432353531390000001d +s 63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000001d63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000 +s 000000000000000000046e6f6e65000000046e6f6e650000000000000000000000000077777777 c 5353482d322e302d4f70656e5353485f31302e330d0a -c 000006840b145dc01a794e394635cf6ce44ff01a19d20000015e6d6c6b656d3736387832353531392d7368613235362c736e747275703736317832353531392d +c 000006840b1499904123693cff6cc5dc998108bb105f0000015e6d6c6b656d3736387832353531392d7368613235362c736e747275703736317832353531392d c 7368613531322c736e747275703736317832353531392d736861353132406f70656e7373682e636f6d2c637572766532353531392d7368613235362c63757276 c 6532353531392d736861323536406c69627373682e6f72672c656364682d736861322d6e697374703235362c656364682d736861322d6e697374703338342c65 c 6364682d736861322d6e697374703532312c6469666669652d68656c6c6d616e2d67726f75702d65786368616e67652d7368613235362c6469666669652d6865 @@ -32,579 +32,721 @@ c 322d3531322d65746d406f70656e7373682e636f6d2c686d61632d736861312d65746d406f7065 c 636f6d2c756d61632d313238406f70656e7373682e636f6d2c686d61632d736861322d3235362c686d61632d736861322d3531322c686d61632d736861310000 c 00156e6f6e652c7a6c6962406f70656e7373682e636f6d000000156e6f6e652c7a6c6962406f70656e7373682e636f6d00000000000000000000000000000000 c 0000000000000000 -c 0000002c061e00000020872c8d9c7492f428b5a172a0a812a2c7073524267666e91c26a9e2df6864cc1f000000000000 -s 000000bc081f000000330000000b7373682d65643235353139000000209df408e461d7e5195b4f91a8d6be83d24692e5df0930aa782291fff455ea3924000000 -s 201cf579aba45a10ba1d1ef06d91fca2aa9ed0a1150515653155405d0b18cb9a67000000530000000b7373682d6564323535313900000040f8e2699f5ca8af8c -s e9fd73dd060499edaaa89095242fd863cc677ed1ba0e9b714a447d4b7e273b574bac2e0efb8f19d211d22591c5113e69baa0a56d2ff5970a7777777777777777 -s 0000000c0a1577777777777777777777124a2374bb42fbe3424826504c8aa824b85afeb1a0f04597f8b6616b466b368b5bd4a465adb6a52f862dcab1b675a056 -s 3faae1fc66865440ee632f4935ae3276876e5139 +c 000004cc061e000004c0fab931d39b5cc88b83a3aa0dd8b530b0b313df5c90015599497cae1f87488acb358651a92987500aba6c410c6d87f6c3f9b13ab8ab79 +c 51749d8e402c364b34970a3c481b6a08182548a9c19ee614ebd603c4512f3f6a6d2b7522bb086de5276b8da080d8a420d6744c762a30de29b588293f1b2698c5 +c f71a5107b013549f0ea324d9720baff9572e86541be84020c230f68846c9d8b994423e695273d920b27f6439e1029608b33c1ea25b5403aeb1a1af97ea353311 +c 89eab7635894bfd343b5286050a2d33f2237678329a9a03ba98debc04a741fb9914fed4b42567c0bd9bb754cbc1a116b6e18501dd98890e34896b8793445d215 +c 6834c04de31f75bc2f25b53c1899ace0d826a2b118c8bb304fe64e56192328eac932ec3dd1a66b6cc6b4f5798ac138a817aa6444b32629f2c1b8ca7acd76bca5 +c 134bf8a319971b5ac73935c95b3c318746e38264e5bcb7952c75060112a28c4534b373c2ec05cae2474dac474627780f0538a0aa44848531192051270c665d8a +c 5ca794ba8ee5272a140397a561d2428e2aca0e46641aa0f6c63860ca29a801c1d38394348966abc2a15276c4fb2bf0b776bf05b3240b7f00d5447c82c989a682 +c 38f17576a699ff58151c88bb1e958299b605f0831553c30af3a7c41ed62b4e0324b8d09680234f8dc69e01f46c39721099271a3136c38ee3c8761981d7ca94ad +c 60a283f3328653b4e8363124e059ba251a8240567f068035b8648cc686b71a92c8c76fc3a819605133c8494530974875e29f9624b9748c838be1435f31b1aa67 +c 83a79576c058a76b69575a2cc88255330ad54c2e412e2e4178d227a20cf4b01e170c65514b27d6664cfb2ce4d45cc2332faa45c9ce25b0e7670fc0650058841b +c 634529d8894827c66debc563544a7bd22556f3534f47f66bb33bc33246c52f908b1744c8a1eb677481acdf4104b38a43cd888e04bac5186c6863b79c6504acb7 +c b08691103a97f46f2d2a8ea7fcc737c9237b627ed7124ae962108cf6571c553e1ee857831074a247c4d9e0171858ae15e20ea04721015723635075f893516105 +c 3f7bf5807a762872b9b146c4917ac6a755d1030e385d2d8292271660a5db3eb931009be104f450ae8a59798e254eb788115050783a6b57840a3285f273b2b2c2 +c 2b789a35f49370c905190228e8b84289540a21a9126e8590c88b2cf158c9eada53b18642dfec5ba6c82ad9e12c56d57d4d9b18978934d3b825a4312231dc0979 +c 35ba91aa21ffcb9f8c800fa5d25ba6c827a3c692e32668601c6d0109956b04bde1c66d8a31a0624596f1727cdfe9be02a0cf6a1a63eec2128a8c8064729c6c07 +c 43ab2c45b8a488e0aa3871875617ec00a1a352e7560cd814bbdb9cb616f58211a75fe5bc04c617b5b9498d5724a3b4271c66c54744105aab11cfc2c542d1794f +c 7c751d3e94a2c5d45cb2240a9543842c895143ba6292ec36393c4e3973a648288a630a701e2733f25b4385a17559830033c143e419b4ff6692ac428ee0431983 +c 00466666a24b1474530121fa1c7153b2bf2aa1873656b774c1cf4da50a1b932c8b8826574b452bea2656975fe975b57f10b2863c56dba41eefa31449544ff3da +c 8e47d688e12a1378cc1574b8d69b706d0dbadf4c68adecc5866f05ff8fb4691c60891947c000cc5b1fa3533883bbab5bb5884f666af9891c17f5d7cc831e1a45 +c 8a4692063ec4f226db16000000000000 +s 000004fc081f000000330000000b7373682d65643235353139000000209df408e461d7e5195b4f91a8d6be83d24692e5df0930aa782291fff455ea3924000004 +s 6073fe3a021e76b230b113e51bbff028db672b89ccb080371c088d2c2b229ebc24d309a0fbf1442419a9863c0d8dd36b148466ad8940787c6799df9e5b157d18 +s 4aba389e52f289b5e42b5ffa1e88b97aae998c25ace34405315ecca2cf16ab33f3a9a4d4b4a1020712d02a41760aefa614f84f328ba870d54bcac4eb524210ac +s d74ec19fd8d812d543a070ed04499e0573eb5784001a7354003ec704603ddfe90f260a6cd9653cc91761e8eeefb46d6fbb3eb3b9bf170cd47661771685a1ead4 +s fc8e944aa71faaa50c3b47d1c09b880caaccd0720625b6adc01278d9230de93f2553b7107fb4d43f05d4953920f3f341385ecea41fe4a10865ecf27c0965a9a7 +s f613f7fe1d8b246c72f2f4d8f71ec73a4e0178e5dc4cc05ca3106db84559f0fda14e7c5a28af71c128c43a78fdd5b319ed425b4b1636c1d9c1e8ab431ad6198a +s 026ad03431b4062fa2a350a8af72509fc70a593189ae1e9ea33db4f99cc35980d37266af8c21846c018b0e9fde5d27ae9901d951a28d5f05eedef65b7caa5997 +s 01065ab2e449f6d421596521b3b09bddad0f22766dbdb060cb69cc3a5c5ec9dc56c95a90114aa5d8e7991dbdf3670f15948a29bb00aa79abfba2bf4def851ccb +s ad66487055c6339a427a775057d5f1950132b4f9f1efc2c1967e1477a1d585de4edd3b80dea9f87235885389cb698a1c35e7b6b61e10e84233921d48960fcc4e +s ade405dfce2c50c139146410547c92966cf377a8cb9bcd33d9a4aa0e6c9f5aea31c826af4d57957822d06768910decab92b29bb4c557da231df4cc50ca5c0be5 +s 14121345a9ba130c28e000de396af3cfb0e7c3108fa9738fd62cbf80d0ce94c346174842f644dabd369d79574e06d8bef5ec9c4f5fae83dcecb6d5c039738381 +s d097523e4b9413ae56541313c069cd17b009a201cd861d98217349409fe99c743a2594ca699379b4561feec52c7ab7e89a97a3f8d9feac9e8cb1d7ffcf08b735 +s d5caf2532b710c65212954f5f4e70af529842e778e0e7837266dd61a2dc95b8c9e673eccefbf298bc73a13a64cf4192590b200943ea4c87f36fe1bbe966e4c83 +s 02b503b3a467bcc04ffa173fbd09387acc2ab4d9ac43372737acbef42bf9f66abc7259e6dd6e2fc4233da66d6e5677464082b74c988d27b36201bb8b48115876 +s 478b96de41b50e63e6cec3407de916ec5097beac0195b81c31025da83da1c8c75fafbd85fd334df60e3c5196d09f2d702034f2bffd08181be27b78a11197a285 +s 301e354ef488cddfa0f0dada3fb839010fcf67567fb1c5f17e046a6b871bbbd88d816381bd6c1f01e1acb387ea1614b818126212883d3fad2712d4c8c23f87a7 +s 78aa05fa7d9aa5108f99d3101db976cdd5baa7e235feda531e895bf734a6c3011a73cdfa7eab6f0d3ed6b2d5842e54e52f6b13035b108ee515354f75cca50ebf +s 77d9d9568d9da563573c407f7ca6512977ef2891bcec7827bc253dae9a8ea928572cb98c18456b2820429ae2663ca6e625ac22c082d7d6b5b2334822961c4ae7 +s 691cf579aba45a10ba1d1ef06d91fca2aa9ed0a1150515653155405d0b18cb9a67000000530000000b7373682d65643235353139000000400cc44a8c0884fcd6 +s 26688c2e4a1e3c1e8f4af33859b95f97fe2cd1c4ace7c7bd3816882eb980d2df5d24b41294932fb059eb7e4e57d6b499da709fb45f75dd007777777777777777 +s 0000000c0a1577777777777777777777ee4c5be5b49b5069e24eda07b70e995c00a8f33c4d2865ea6ce1b80f4eb14fbeea4576443f660a97883350a1916154ec +s a3091788f636aa7e2af77507d7a7c27717c0b65d c 0000000c0a1500000000000000000000 -c a898e12a0a1e01bee9b1ae86f119e0c513874d3908864d68968fbca5822aa2335b56d1f1366e452724b88132 -s 5dd89fb02c7e28f28f894f00e2b830a6f4e4e87a508f18b2d53c6c2fb7933e473833ecfa5ee96d46944197aa -c de2a78ae149f5e0df174aa95f39a955b8d634cbe2495dcd704336855809e629603aa91d6a64c2b2a29039f9dc3b290052c7897d625b9ca170aadf0efd2681f39 -c 8bee8030 -s f13d06281d2eecc2ace8684a44fad2ee2f73905af1501844f36a5155af2bc91fd5342f899f531a04f0c76dbd -c 94d2f3664873536ba186f692351d17165df816194325efafa8a5600098660c80732ef9ec65e621f86eb989a7eb1a2763d9b894a1ea03720b918a68fe345f663b -c 83656dc12868d1fb6011e52a624f20d4fe02f708cd72ee9c6e2ed88a4441aa175ecf019088c8df4cc1b2add9456f337e9f67a3a8b994ae34f42b45e1ba247f48 -c 69208aaa7bfef6ff0af94ed6 -s d44d46c579da6b8e745a446aae8b28ce1419dde5a14eb23f7492f0996c7f818f3edccbbf108af38847b3ded01f94b9799fcb0620edaad183a1e4ae1b230a9d08 -s d992dde89777d3ac05e27d19b320b85dc83f14f656e0500ed4e64088affa8782f96b583c -c 3f475c8948019a5889755a22b7ad93256ce3e4c36b3325e88b71ce6af83a82913049880c810dbb09e1ff247847a94691124eabfcd844265baf1688ad53d9ac5d -c bc7e4c1403b3600ce6af27954fc6e768e463de7801b0c87faa01a2344282900db6d73249a53afc4e6842017ab5b775602a93ab001d7d3aaa4cd6a2f994279c0d -c e8f18b949ec2088f4e740d8c6c9369db9d7f7539fca76e1b59758b4791d8d71f15aa79846be8275fb917c50660d99e12e9017dde9806a3f3c565751b623d0aeb -c 0b951b0369f0b9f85e84b6926a4545911acb2111441f800aa34cb0e441200823c42ab95b -s d46700d88cd8161b2c2a643b0d1e1b6877e805d7c9b8a622245035bd -c eaf6621f9ed920294efdcdfde4a6a9a34f722b937501a40fe9e8a16ee9798151f8e13ea65814c84b9565f0b577a8b568ffd8a4d5 -s 3883c25f3a77900108a36ce869512ee122222eda3a8eb0b3d9d7bd7e459c7404b83ca7cbf470f49edd4bd671 -c b7851bf418b841f8ff23eaeec6c24bb129f7d818037e5281a7cabf6277306256c03243a0b046d134b9579ba17ba50e377ab2d031 -s 8c2f32af83e7a49de909b5a0bc1d20941d6f3f373e54e4731d4bc5b7e2c539ced5a8b95903b10dfb198187bfb39ed207e9c2f1f7dbf6f68bb401f1644a6f0649 -s b62976de4ad0dcf2917c1aea8afda659 -c d11573c32c8d97a71d2f4144fb3a9165488fdc607cb0f8b53f3438ef2a05136dd99af3f698eebed2e23be63d9a6d282782267d4119a0bc8d7a734689ccc3319e -c b803880cf9002e81ded06f3abd449c4577aed67362314dd810111b9187008892dd1f6651e3030910ddb324eacbf1e5b29049068e5c3e3180db79b8e362f54d08 -c 056e8ed1477bc6ad3619b4d36038c6af20714977ce48720273d8ff8c08443eacf15c2a8a8fa63d76bf97e3644bc6da372b7fb24b582841475649b764d61bdd35 -c ba0cee93e5547e71b2a5ce169f48dd1ea80630c3f8c67652a6d53cc14526f3d36b3b9ad840415c02592a4ddcd2e9449b5b9bead9a5adf693ba9ccc6b3efa6645 -c 25c61aefcf38cdba3de72eecb81d0aa8dc745a7f12361682c62756d1eddceaebf54aa1c530482a707ed9bf23e590f1d82ba7d5b552a48da22a67337d25ccdd56 -c 13f2c459228b08e00378fc4042d752ea0ac4c4c0219e466eeb1aa254b30fc248f40cbbe59ad6cc7551a7125c0630fa7defe7a5d9bd258270e8e454eedda757e4 -c bc52900d57bc181b246e0f396964a0062c3652305ae52e4ac6ce927f9ef02e5d3dd8126829ed9a398f8ec4749cd8502619adee2ff4eb5c6e79fbd97caba64498 -c 02e81e8f6469116696031706e05336db38dbab9777a47ba959b116198daa1899727fe19842aa60a4e87ff3f75cb882eacdede9c7ccaceaaaa2489796b4f5d7b9 -c 8a638779161082e52dc72516b79ac66875d1fd5ccc08d8cb9aad6d29db451196340ac1c1a20ae81c020c9da6009ebcf90ad7869b3266b46ffc9275195e7b1f0b -c 604150541b2073441431643541ff8e9a64f4397a3fa84144d19d33fc705cbc896b523126573afc3b2117764b65cab7397bf0e0795678d6b4aeea72de1dc07778 -c 22a83a4ae3e76fb61d6c40ddb0b161e9e6534761a69503f9665c3d5da7b123b64ac2d6d56778e1230da5cf80a4a6ce235c053500f31c192714609bd3bd392ba0 -c 2040b2f53e4200e1979515092582c30210ab603dca51ed9377641223070db7f01a5fddc3782d58e4b8edf0306fe67a338da9e6b505e99c1531fe0b819ea46e19 -c 038fb17da09cb9710b51a919c9dfc3a24b755e9b45f2316f00b6c66fc606bbc34311f0a94af69503446d32b361176e2ffabc5b0d085b0b3ebeff114b2aebc509 -c 28139136d776d1c2e0f739fa3dec09f9b608138d4fe21b87bc9eaf9f47bd3a15804f73f5d15f6120409a61ba985c67b84c77f3e2d52015191eb6578704366730 -c e334cd45c354105a360d09f82d6d984258850d53c4e68208fd0976baa712d97c85d3fedb82d622f9d381a7f6da256021024e38f6e4a41d94c3c9433a5af1de27 -c dcc5ac5880689ea0b693b9b9a52477939b605b030fcd3acab29ce8a0f77da85d65f481fcb89beed223fb7d663836be6ad8a5cd5f4db95eb72b4b7969b6e4a489 -c 398ec426a6c34bf46a9fa51e03062688829dce0a76f7f6fae261d2ff4c3e6d8a941778f5f29aa1f492a7c157ed0fefe3c8036307a6c0281d03bbdcaf8c8f6c16 -c afe7fe80a15388427ce2d51ce9a516e468e6d192941a3b04221e01fdbbc3c86252ade86c915c828c20445cab4da635c86398d87a762a99edd07089987f92dac0 -c ff9ae53708a8e5aa53033cf71ada7757b658b7e9bf54eb825e10bfbb6a4bca0bbbeb19b6db14397fb8536b7978abf6e18c3b05148a480d3b6d89230c32e6a0cd -c 2c5b276f528c3c0cbf9a3d6164cd7ec5bff9558b0cc1532ec26553326ad9e4dea2936f8209036fe339a71b79523ddd6bb56caffadf88f0653055160af14584eb -c 687f572de8a89211a7f85cbe33a3a7e9190b7d7f85d950640e373f2f4e053e1f2eccf9bac726d7b33a1e93048dcbfee86d04920c4120c721f77b47d32dc49362 -c add818709ccbc02a33d977f32aeebda7c861da6a1a9002eb293337da8b8d72eef934dc9722729653b988789d3a1bab4f7dfea31f33e8f16d1f4d4601374e0c21 -c f55c67c88f63f31bc03550fddaf4c43b556322a3ed3fee6f223332e8d5819b76d9d75652d9550e9a034ea849c0617829959a2d78b12b47168a26ee89843dd29a -c e823b2a00784594364d1d6bf3d1378dc327da4ea4f5ff1e85ba98ab234cbd34288af7cb3e779dc7db7a0d08664a7834c8be75c55ad8c6a4a2240cb349a11b00c -c 2bdfd305d8602884f79bbff9dfa0b61533f5287004e98b53d08d52da5bfaa31c91300134e7ad773272954528f5f33aaf4800fa400ccfcccc976599fd91813200 -c 6442c281162a3ae82a8006aeb4b8f428c07a76f8d9384f745776e55c0160cda70e780647049a97d788dbaa15 -s 2e9ae2e37d0533aeef80a635d945ae9b1900a29efad1352fe434f5796f49b5664c1b665ee42e7026292c3cabb962cc48bce8f9a19f91cdb138c3188022cef99e -s 4039a1ec485c55be6fb3efb7461434043391a9268fb619f10d939854b9a1e60570ce58ad32d2b5dfdde38a0737350489f087043166d0a2de9e009619f0d83685 -s 601ffa4e5ce7bee661c463a5c0e6530e8ddad117c56daacf604c62cd5af5ed1979317d3a3f0f71e92d177651c33c850b0e4a85dff5ed232b285c9e5f6b497dac -s 3611dbf6e84b0e3f034eff6a29d27b26895f3da3 -c aafc6702032c6cab215ea5bcc71c22a2c39236779f3ee2db0146474e553082230a1775a62e7b4fe360a332a6bed2463d2178f4303fc47768d8dd32ccc362a111 -c 4b0010a8 -s 6dc1ad94ad7bfd59f236f261991978d103151ce0c50b814f30a80c2842155a786baf88473458b8f40e3c186cc61bc5fbd01ad1912715e18ffe87c73b5bc94a8a -s 959b6589a7f0ec0b77039317b0b41af8c47c110fadc4c00231927363ba961b27a041944a34ddffc15f2359aa04b5841b89ee6bbbe9694112b2816df760164d00 -s c7c6cfeae80b98ad5bc318a2cec94f98a8ca8ff5f86bcfc607ea00555b2b87327651d5e0ac76e6c063abc840581a0607798501072e519eb40e26a756b6b6dd72 -s 45cd6b897d083866703b3cecd832bc16357626cd2137d8b6cc16c8199c385b4aca695d5a44ea6ba4 -c a43f5a5736a878b9f8d23a3c80c30f85a491e525fd1dec426479c0067bafd50cc5157dbc09883cbd0c83a98f0c0e7844ad3e2ba0f7f6ea00b8f619252af4e72b -c 51b15506e10862aae7db04e59c43ab7fe1b9073b0b1486a54fbe34a13c474ce0b17615b525155957856494f09d2c5efc423819d2326ae1c180caee37849f1205 -c 23c0bca562fe187fe14c2b8be9b3c0f00d85cc1661475adf75d89857074cb65da0a69e5835aa2cc13753beaddf5de46516efadbd6685787b5a64f2aaa308194b -c 382325a831bff28951737b650d132173b8f5dcdcdf4ea0cb65a4d726b55ccb2c61ecb0c3e17d1bcb8f07b8ab5868b814a4ef1668ef2955819a9cd9fec9d0bc10 -c 4b353e2fa4d5dc01ee2a192d0ff383f8feef32ab01b53db881378342048e8b1239a6bcb4f244766e075396a92f094187d1c5f6c7a004c3cf93e1153f6c50640e -c 608e5968d8061714986eb5af95450b061d472b5bae248c5dbb40a55c58e168e02fd9b0fc827649804f028e77c744be0b02840e7dfa3d83f5ebe349fb3c0294c7 -c ca2111f33e7d6977fdc6c24bf77ad5df2b7cacdd091ea23a162e05a1d7ece01aa2cdd8a752e40ce24a83745c4ae7a9e07f2839569e536de0fed255bc0964e4f2 -c 786f480d7871d5a37bb7d0b31c8f6a53453fa4a7aba3f41ace2b558d194468f288c9fad28a2a55f318f81e309a3debbe40d71f0badeef3db22156875e52d4311 -c ca54c5e954e361ba1f7afff09c10f6520f5de14d5ac76aab40308438f951c3e9a6ab2f935c56a2b493fb4b7075049002552217b02d4b1767ff26adde513bcf83 -c 3001001a3e534415dbdf93702b8c4d6f817c988c63753a14f8537c235c670fa818a025c56ee29777c8c39ea86800c04a85f369c272e0b7cd899472ff5d7f4717 -c ce35746c1c61856ec05bc45fe88a6112273b965489913d932412e326345678bf4d192997a6d9770480074f8a1c17a30da22003da0d7f7f0fe6d57339e787e9e8 -c 7cad909cbd517d2d19b149ec85da1dfffac8a2e5ad8e48ead5942f757b2bf66985e16d9f889b48c4a1767464ab10c54198af63a53e13b77fc4f3d7c0b6012c91 -c 231bbf29b6acfc54a2a3d2566ed3e5f027f64ef60f40637d9d241fb831055a883eeb85e9be1da262af024ff700c92a2ce8cb8753ca8dbc8cfa1d3814e917ac09 -c 62e5df36471d849467fafddbd06131bc8270f36114fb60d4bfdca68e477f4d61901db9a4f96651601a7785fa21699960dba9947eb942b17f800d89397838145b -c aa3c25f780424039ecdf04f8c7309394f888b08bfd61b219960ba5876438a2a9e9d6cc87f50b0fa65b73a70fd6b3b0da1cd4d760de91e13e5b12ce9a8b68f636 -c 54445b61ac902c4b17c9f64c12c32542274a1ed072bb0c739794c2c44aea1638ec82220ad14f6a96ca4bde3ff2b3e0898e7f230c74908dd3429926a1bd7eb6ce -c b1bb40c2c86bf2bc6904bd14fb6ea6b19ead216652421b9ae873f15753edcc853d76e919e802cd531dcc361c3d78134c412902cd7bb8d1183faf00d3e843f4b2 -c eba7cc458ef8ea9844d0480be8dde972040c8cd8ac6f72f08e563f54ac43df3d53137972180842dc25f99417ae0bada23cff0ede9593884c33b5f4eca3f21621 -c 920ce71db97772a3e60dc05eb34fc3ecee3563bf7bb61a3c809f3932e5da0f3819e33cdaf2b8f0946607ee157e6509c2449c0fb34a26175a80c92d8fe8155311 -c 48fb9ff4a8c84d4a598a2b9388af1b9de33ad2b7f623de824a00734b7c86bebd506c603e12119c521b97b0e79af3b94830dbebe5e8d270df922bd72bc8a9a499 -c 75dd35cb8a1bb517ff80a1788672145cf9d68c7e4dc363b91fd4afd693cef1b543e6897c47c20fb39fde5a779f0029e507f186ce545332f3cd3971c42913bf78 -c e2ad11f61330e34ce12d57628df4085ca84878ed373da5da0a67f3851f917090d935b568d32e846e0d3af86760cff186b517a0affb0cefb3a628db9292289d51 -c be59d0e728c51be9d2b3222887caab5591b869f1c5c00e473c05e87040d628a4be5bc71a1a5588255eb4b7373fd19d531245d18268a1415acc2df5362455dded -c 6809e2b7cd28b08f7eb1c05a9c31b0a20f616279be64183293fb0b08fac12d755d08522fcd8e78d875646cf793c26b227910a4fa9d91a7bfe90c1e57d6b5a66f -c 58ad8d95e3c42773684cea775bb247d55a46d06218ce76a15eb2729dff9eba36a124e5cf64b95eb88ad383d7242cd670f10d486d233941b8f5bade45b4cd04f8 -c 64e65a8602bec92e5b9fc231dabbb3c85ca9156671ba9e133bdfa2148594c501444510105e01e2781a63f8eb43c6e0344df76ca7f9caf637bc16bb65dfb233f2 -c 3976264d89a63204c7fa79a303d9fa54501db65962bdf446af2aacf6266be6fc8df8078c4bba6c0e325b0bfedcc02f9f79b8586097abc9208b3162f21616571e -c b8ea3d2a51054b11332eff009c6792c7f03396f8249f127788ba96d3793973f2c81749e11fbce3e775ecebce8957136bb4a7d1a73bb195803568e99c57e3622d -c 6c04cc3ec8506b15c1f9060102360eb8576f3e302b771e102233d78ba4260ed2906e09b9b988698561268221beb0ad311fd0f5c7f27919875e5c45e7943d50aa -c 3b4bd929ff3075131fc25680964f4f0022c1960bae7f07436a2d0e77f82b95bd0e7cdfbe55715c373f190b900dc5c41091c124717cf38ec77edc222b1d15e6b6 -c bf3b731232cd81980a17586c8cfbe18722c49db4c6225dfa7d1e141e2bcbd1c0758372b23221f620df5ecfb03c243675c73244a2515af8b2aa57cf5a313e6cb2 -c d5352b6b4b116fc6700327e34f682bc9cb6c6db15bfc26956336a39712149dc20dba3e13b866cea3ec5c30b9b3e6257ba1d7c969da2e13eebcb613f3ed5f51e7 -c 2247eda4d1cd94cc1e20075d86aa5f97dae389cf446ead164130776fa84964e3ede2185763e8eb63f3b97266e3dccbe61d79086682ad670c5910b162ef390d57 -c ca5ba05b2568a8946d186ad6000e7d44ac25413c995554e5ae51767790758805fac5dadd7a93b36c48dbebfc48f1f41001b28caea9333d436a5d011b9d084e6a -c ef388a240d8c29ceefe89a6077408556fcc6ae6142547a5def2e8cb2f7e7705283582fa2fe4b14b5d1a0d9d906bae8bdeac6143bb658528736c73fe60d8193a0 -c a6102d8324aeecfa65f020ca8d98ea15f982cfb4d710d1311d1e9dccb731f2e7b5db9461dc9e3a11480a3bb314500e8d7cbd9fefc9975939344ad5724c894fbb -c 0d332dd159c659c541396cac06aa284da21632d4227104756a2196844a5a43ae39c34cb66073345b15f63afc5865820cfc9599e85810bd8fcb3569837d2a56b3 -c b058dcd7908b0b1857f0f0626bf849849fcb4d6299b1201d21b18dc7330d8a488fe891662f0ee8738a663182b9b9e4b0becab576a8ffe58c59abd63b7d636280 -c 8bec6dbf7737835ccaa0bf49a54e514d35271b53fd88eef73d11eb6fadcaab8dfa62779c2c1c0495240470474751b67fb4b36bf18753364a7e41ab7080aa2520 -c 163bc1e0652a78f72c51641c50b5a2d8e780970a33704d3bb2ce9e746ceea3b9d5a5dd4fd37265862a8879de18a4c7fbf5d72b26095544b3b006e25da05f1655 -c 270ca8f3eab64d0bb47a21962977a271865af9ee08efa3e5778c49d38dc1d095703b91dedfc95e9b1817897d9fbd9c2ab6fcaf7bffd014c4243ed900122cc7c1 -c 1c00c2d98264c59f6cfea48f4446d6faabe444402fd4d24a59b38a473d21dc352290e64f4186c6d928dba778c82335ab4914f51d6dc490232759cce2bb36a53f -c 807004e3a0b7348e97c5f2df5c3917ae0e14985c3b870cba0a0304db4d4565c2d37a7b730f0e6e3789508885bed4026b3c78499b1741a6a17eb8f01ccbfa4935 -c 6b33450485a1274fbbf7fbc063c63a6f207f10cbfaefff34f2ef218293de7261449793ec560c489b63129472c0bf2d88dd2f0bd6eae87bb811ca32022648ac14 -c afb932ed825abc521bfcb72e711507db281959add1eef51eebdf2b8de57f5ebafc539845ca98b94be927319a82be7749060d7b9aa0ac22521b95113146cfe2bb -c 8ca74614c32e12eea75e8a4c7fcd9fb18c6fc22250247c588dac543b634bc1f1a2e3eb2a48db11050b6f3f5e7eb2fe7c330054d5648cbde4f389aafc2413f4ce -c 2d8a1ab90ec52bd15dab773976df9203fc05565562024bcf3e66c09e2b260c9910855714daad288c20528a5a6eb473cebd7e4522c9e2d902c43024028479a281 -c 1b150df37f588b6ab53e4128df52a2d2d83407e2cd53b02426bb358a3af9a0f33d40031eb9dea4d13592ec3aae28f855fd04d826ff064c85a85d77c7586ddcf5 -c 08b90f7e875464d1cd338188f76b1277e4247157c01371186cf26acd35989830cff3c2b0833226553a2cf2cba033a0ac334be9040707921bae2a79ab81137f47 -c 24d18a2fee6bd39eadb7e9b70c0e305188159b00bc4cea5a7b6b9f1dda8aa714a0dea0baaa127193b488fdd88a4a2c0e5b5f46d936a8f999262c8ed47f018df9 -c 3bee6d04423de8cc99bf577f1e82acfddcc862d753b3a75704ef5e08cd71bf79f45616fe679a8d005d527790392324a7f893219a4430a5f6a6ea0e6b2c7e5768 -c 33016a4511f2a97e9ceb70aff7d42e0b6fb59301fa04cce9796031197c19f3c21e524a2cb629b0db02ae1493c4c0b55a96f98d6e5c505ef1917c59ea40d0701a -c 6b02aeff865466d3bbeb65e15aab7f8b4c1dcb758bf117791d79b78c8d9aef91d1dedf7be369ed2d52f1d6e3be820711bb8051f53f8f01c8cf9ee19f9df94d12 -c 519e212b69c361c2c4ff22128ae0db4021a6bae9b93dbcfc9fca65a86ee3cc9fbc5b964d8e317fce7e55b062d906d051748b449b8fb5c8038e8f1ab9c0f85e4e -c f22caa29dca72bb1d8614c53a2e33ee4e75820a7790824ad641bb9226ad5dc50c4f94220f4bffcff2b1aad4117aa8d75170689df2bbe4e415502f696050f8429 -c 1a284e31588dcc4a099ede28dddc4990ee99867735120660fac806b8a7c4d3ac945472477e4bf956b4abae418e2e610ada932295b6c7df67ef2e2983ee4e8c7c -c 453b2c21abe0de75bcd92c218ce9489dc8824ad78f33dd306f0394715a013c16a1ed227ef4bc81b5668a134bd31a305cc0d0b944396fe7d1f305289a5e9918f9 -c 1b13c3daa81e8dc7c8dee54cbb383722b5121604e941c3254392bd9322ea1703c2501af4d3eb617b464e012a04a48f63418bb2a37beaade9c42aa6915b7258d9 -c 5f875cb3d1bc6f71d82273a488e283bb3f5ac86e2d68b77e1dfb166f7aa2e050a3808e66ca09c79cf4b4864c78189eb4ae1cf15852b8ad60282f8af57ffe8fb4 -c 2ce0438a38951707a3f306f85dfb462355cc5302c4bb7c5b804ebfe79223e6226ee8efe660bef669aa2454e932774e37b25216f3bf646ebf35553bca20f996b8 -c 05070d4faf66c51dc6608d8ffe8002b392838d55b508d18eed4fd8b9bad41e1b89715a7058448ce874130e0930d18fc2c3bc0860b7bb3d94b5810c9ce5458d54 -c ce71cfa878cf974402292caf1a94cc105125142d644730cfd0d2463fbed8ccb7302a9a96f9d283c27c71c4204866f4686e1858aa08538577d85994c3e6582bec -c 0e0e877b5ca86fa0948c34abc54503b6604389a3bab265a76de3b7b271f8eb682aa1f047ea0ff215b91926b6ef71041a1812a449bf8698f67d7f8f3df38bc7e7 -c 2fec0cd90977244fd796153f3bd255f3c2964945c78c41320e99bc0d8d8181959e1207515485007527613b79c0432270b61e8b4a4dd6bb81ed88bfb0eba2bd92 -c 8f7252b7ea55904fc33ac15de137ba06a7131f9c85fde920e70d14550fc49ead394f5daf7b1dfdb30c6d0e690fc9b7fa3a5c8d27fa834cef0d9fb8e216867f14 -c 12499ce2ed1eb4f5a9f5f75270ef170442feaf0596add572e4fcd2c7b8cbcc57bf6968ecf6836276211192e3e3e4b10dd56ecea4ae13ade8a75e157167b02f40 -c 6720b8675198df13a84960f9e8844e53442bb1361991fef582e1c6782f38da81d916d5db9cec74faac74409d173c6257651b15b11d1417235ef852114104f983 -c fa2251c2c246733231287c1e937c366134b2af7e5c7c65afbdd14d0506f9dc3e3bb6cc8dd0fce8a3ceee7ae2f02166bca70f5e12950f898d3cc68ba219bc2008 -c 2acae817819375064dbadb19db2b4c6df18069f2e53917110a839b135954d66fffb7bc586b03103335d7917f4075d5a64acb705f8db7d410e485ae62e9bb05d8 -c 167e2197ce3eb18e2e733a77f80424d36013ad10e596124d941cc5ab66f49c6ef82fb96961cf436e4469b10f01c5887f8fa563f2d32aa6d7b086e24c686669e4 -c 79db787df30b85a3a64e79fe6e83c4ffb129aabbc1fe6a53b25b828bebd9b2cf9dc75e75fef0cc19b4ad56fa8a89e878b8c24230084d326c192d35fda45ff9c1 -c 75ceb20e64477b14ee7e9a42e45ec648b1f7bd62c2030dfb83b995015971fea1a97bcc056f0b36b942a7c6ec82ebe710238bcd23ba293c3b7c21ad92b0472928 -c 3fb184523527255e8107fe43d5e4c8174fdedfb19210803ebf7c66e7f019fa47796ff3272118f885d3e1c9d4eda7e74e66a504665c7a4d20bace8c7083a64c5c -c aa47bd387238c2d25ae376353b9e6d807759a27431eead11cf4830829942b5fc4835d466afd43ab06c396aa31fa9713826a738713c51ef394da4da748ac94e77 -c e44068ccf1edf1127a84c04cd5d57ce2e63f35e0c27490d16386b5673512d52ab02afa712b1babded04f5bc2b759321865e6ce023488baa859738e9a66263cfa -c f602bfcc211113e5a5b5c25b0018010d9fabd642b7a0e432a5811203175b0cbf820067e09eac548eb8f505e8ffbe461ee59191db872aa723df351ec07524b35f -c 7130574b05638cfeeb7cf52d01742c3e952e72a2ac4d47dcdc2b111091f1cef10c3ce395a6a2704d7e280e2e521eea1a699f3472730438fe6472d73381c371c5 -c dae832dcb05360a3d293419b5c4fe3c6c501c6235ce891e2f38a263bf0d3423bb10cba174ec59f412fbcb26da6c1ffddadc8fa237d5c3a53aaecf3c99283f856 -c a789be1a6fe48faf595cdf8dd6944d28c79b7cd2aef766711900a773cf4411d577fe4084916c010a20e8198502c3c3ca8f455376b637daef6715956bd61eed77 -c 0d0462d52813bdfb666ae9c34b9c3bd75d34f26ae7fc2ba87df08595fa41eeee9d9696404e8e31ccfcfe86f64cf1184e25c4b247136da656a0ac2f66e50ac896 -c c1832a8a22f14616776be065d6882d1d81e129cf45db2ef4ec0e825faf7427b09501880322a2815d1fb3759f0e461721b37a07067ecad22d5f2d1095ee98524c -c c67c0a144f132880c64e302ff224565ff354108cc1e20a087352168b3b37448ab1ec6d1c56ad8f1c6c66a321590088c5fd9a9199f3d63a63f8c4754f8b536428 -c 5fdeea4627f3b72000cadba77c276effbb842f1596fbb5661e04130f76672fd58ff10dd3f93f7416be0d5a62450587279a779004618d93ce5357a7088c2c833d -c 4f40d0cdce6aeb0a948a573d297a40abf1978936bc792a43325be1c8d76e9b0f815f1a78ea0c65427035ec46ec8ca6d14b4687a5f42d4fdfc53afb4885605d0a -c 7105818b05a995adcb774e1c2c95343a9db45b18d11a4ee3d568618443a9629dc8fdb119a71e789d8ba82687a456dd60a5209e6532197649b86a57793b2cf7db -c 95953ecc049bf1a06024f6ca870350fca2ecd6da3ffa9879e65146498644e5e00da461920c053170313627646469fd6b3447d3812f68fabd5db82df1fc5b1e59 -c 36a0e69f8938fd50e5e9630b2a6fd8af5a553112e75f84488c730c5c6305743067baf7ca9aacb3b533a8936c37d62c3d72bbf5c7905aec27cae0575e47690916 -c 7265ac839687aa7e17d9513da0d425ac7af77792c638a30ddd2f37160725732fa3ae60d888678cef44f1c50c8492542f997df77d35ff4a2b77093237ed04e904 -c c59bcb088ce9bb7aab2b59c03648da07aee24e65e6ee7d801f2b512508f691b8799d80be4607b95abc54b3edac4f5466ec5aee6d3ca1418e1ccf46ca7adb7ca7 -c 42db22e7a373c1e13bdcd0b9cb20a4d6c0dbad3be4d1467698667db4191e6dfaf2b9ecc2582029651bf3b7d6dd3a9a1cd241ded876a90e9a54449bd9a6118146 -c c1374ee7225494038b46c335af26baaed4091525b48fa784dac28c0a86a016bbb66e2b0bcd3f83db7eafe9a4c9b2cd235fa694ad67c6afdf00878ebbc0442b2d -c 4f2df47a01ceccbeea8a6d250b23defbaaaf0f70ae3765bf0472ba7382b800ed952757e4f4929966cea0ca8556a5a5b2799a90212623d6eb05b702d49f375fbd -c 5db36656c64d32f9c18329a4aba7bcb08a2c8508dc37032f5b5c002ece8ad8e399900e984011a9bb66c6967b25934acc1648b828b047b09fcbd7ccd7f2296245 -c 542e1d67acbf11f7963db0001952e3193a971488595d1ae2b1cee86f5d0f2ef50262b3e863187f4dc315b2bbbbea8315f85dfbe7256909f9abac0af319a6ee0b -c d70180428f1583eec311ac6408bbd84cf0d615d4004955cfc02759cb15153b6bd3b6fdeb484d9cfc3dede65b10f4c932e27562b6baa92ac68f6fa5375e4586e9 -c fde5fac1213c7a8cf5a3dc0be4a95c1e1ea9905730b7f2fe9b1326916f5ec23ecdfb905b947d8e768f26a644c7d942547479cf9e206d4de2dd52b598c2248f51 -c 05f3773c1803b4cfb80947888591b89296fc5be1da56ed4a4e52a59f42a9414b5787c8ec357dc997ebd77eeceb9be677df0e8aa40f6345aab412253b3acee7da -c 78a41ad5699453325d534663678e4d4110b2b8f779ac287fb0bfce1dec5fe5a14caefdafad17ba2f0dfb47fdcb920dd0f172029fdbfc942a86289a1b92fa0d54 -c db3e36cc7d4a42a744ca6678b15f607af2a086d52fd40f84283a3c3cdbba9b98e228277c49ebd15e2559437158c53a444eaf10c343cd98c88d3d3517947dccaa -c 5cbd10b93a0f0ee20dcbf932658c5b11454c71848c925decca1c40f6b6f098cfa7eab62311b79c452dd57899c82e1e2d6ecb724cef8a5ab44038e15d50b84f64 -c 96b4f5d2fd79817bc7993f44d85889001677da12dee08db1701db7cbd9fb329812ab0e01ae1921edc9d4ccd38ccc58328e4e2f02cb9d1a2d4415291933256bb2 -c 6c637e6dbe73d70d1e537c9c2013eeae67b76d88c4db7f8f3692d0532fd67e5ed0f20ac0b45a44a82a941c0d568bb7044751f4bd73dcfe15f9c0712b7bdd6a03 -c f3747f17c241352d6943c6344e96a4f3a364dea737c64bbf179cd4a4ee2716654df1a46d1d6cf88e32649e1355e55aad054aa47bd077866574b1923252f30701 -c 1ce67108f621d8d692112bce8d2cb2a3b3318053705493e98c3aaa3a051d66128122d99712256e56df692238592ea00339bd0b602f8c274f29e1b2164785d067 -c c0b1f7690a1c97fc775bf7c1a61c893589e59377c19ff67fd5226de4902c670ff568f1eb559b88ba99df877ec3ffa6bec0383c78ef543162f27b38a0bc82b290 -c d9b4aa6d439e58b17f2a117a16dbc2d0153742423c6e768a997b89dc00f6887842a6b8a4a4cb6610a8536b1d6aaa2143cb10cca6714b4510edf30b55a1aa3681 -c a01d6f00edffa06acb7419d9e51ca65354ee5b6c3e936684eebd0de3df08f607a81294ce3ed6e6fae3bc35794b324744e9d33bff8ae47822dac3ec65179996dd -c a0b15631a99418c3a0f8eb3a631c15ce7910e4315e2a27e9579ef66b7afc5a0f5efd7700a88abde00be1fdbca6869c26351f1e4a6881ab785ece24fd3a7cdf3d -c 3a8269be233d503067ec4c1f669d22838fc35f10ffc5aaeaac631b8ce32297a8f660c39b2ae618f0bc70ecd0903fbcd9a50696dd8a2ed6cbca9c264281f511a9 -c 8fd3bb2b983d21b5635b223f0fb820d4a49c86f843658497f87e46b429f488597be31c0e55f5e504804d65c9e8f78edb48f942ab8af815eb366aebf91f6468d7 -c 58687a93e9352be05d2d6c838a931f2d88330b63770889fa0a6bf0c56244d5730ed229d63885657dc8f9ed9ecfc9264cf0a43017bb8478c25a056fd9fdac7be9 -c 43043af55dd3ba71b6bc0a51dfe38d703d2f2bc8c99fdbf1102509253c593ea389a83c0876b66538d651c24109c7883042135753174d1eb8b69458dd22ca3f12 -c 2aa1633a1a1aa47955a367d781a348c764311373badbc3f2f7a8a3ae4c35ab96a7d9fc223120cdcb1643b78b13464aa0febd629ddf1d931e9f3823ba433c9127 -c 9fe3335683ce63cf96891b521767b55a64df142525e9bf94c2ae58784e423f82094cb564e90570e87f45ce9434593d93014c8a5c55ed38a4e8148e67bb9f07a9 -c 8b55276a076d94dd6530a25331fd56aa35463c049f6065cd6ef8d368a744bc9110b51ae7521f0cde5ec6c80ed59637329484390211080a3071479f238351f22e -c 6b4dc88100488eabf097676dbf29f0f70bf4ea40d5ef489be87ea8cd1df0c6cc6426ea01dba98b061f744ad78efd482ad74fea0cdd64606eb01183953d9ba5f5 -c e8e099a95ff28b9233361e1059183359fc72e4217d80a6ad6a317678d98f7f9cbc424e9365b75c8c1626707ad8b3a49698ba20da52b0d9f1db857e53b3a90514 -c 0e41adc80a0f221156a8984bfaaf8449ac07b5448ca05de401fe89590a326827bdda92cb4d34f72244beb1de5131a4659c027785e8e6525a290ba79c9096e721 -c 7bc911a5b9c74eae9461f410558d0ad43edb81eeb7f39f11336d77e8076802e61ba799284449e3bfe08427c13c6ecd84a1536eb13fed2f8b1534a0332a751d29 -c 1164ac223f0095a728447ceebbe813fd41b36015d1add6139385124f1a06440934241b67ee463fa5254c25b32eb3bab455536052d95e6ca45b51550ecbf1cb9b -c 76cc5c28d9526165828c1396ae74d3659d9607325bcdb9e57a18439d534451fd87f185626180fb2059bf0b29df6f0ce3894cbe3b4de060f570b4ec5004890953 -c 2977cdd169288c95327cba3819c8912618d48ccdc3090563499cc24ab75e29d3861d0fd847589d8b89b52ef728acca1d73546b4bf2b85d76863dc6ad47ab755b -c 50d45423c2326c315b17cc64a637e7211119e21d87a69e3d14bd4105eeafcf1f00476d6eddd4a953c823465a15994424165888b1e6716a6d89b16749b32b1710 -c 0cc99307a5e60e0fe53176a32354a6a48bbf8b6a7423c4ccfefa0d6818441de0696c78bbbc9cd90e137cf79d8dcd460b0fc7bebf4f1dd1e32ca800feba9a9481 -c c7b2e3ee9eda4fcad982814799640284cc4d2dd46d3fe8aadea41c78128bc077d71ed5d5c3e3d18e025b1572b989c615fc6d64dbfb5d21b4908c00d4e358cfb6 -c 50203daeaed8fa8f36081c8a8eba0b888151121f35b6f47ab94ae2cdd430f803f11a421f022c02574b10ed38328b965e6e5860f2d72f3c71d7ad3eaa7ddd17e8 -c 43ac0bd0a46b712d06332e77e184686784b727ecdb807ced8a422445ef445ae829d92215b27aac26b0594798cff45953388eb2035b9a80a0cab94f5e88efd14d -c f8bc1b79997c68626535c7e12bb5fcaf7f666a15b8242abc43d8b1b71fb6f0bb857ce429520bfb8ee2c9a41cbe1a1a81025eee70ea3be55d7cf815c3c6b1dcf1 -c 49a8464071c33c6ac288fb91e95441b2e1703858db2eb7a496e1587fa95ef2967e91f7850714e511a57780a95df72ce8e4883a3fd8adc875810ec02d1a70d134 -c cc75ec5e7b309ebf8320b7c6028aa6c8108dcb63d40ff2f8c664f286703e7fdb31822b862c27c953b4709dc212f14fa84e639073a40cf1ffd68ed5e09f01dbe4 -c 2d88acc0e3ff45138947f61a2586d2e1b0eefae809ee7ac90e947db52a1cf484abf2c76166715eaa3b779ef4e876540971350a44bbacc0f6e0dd4f99cc7d12dd -c d5f0999505d49552d6596b6c355ebd7de4a6a55eac672fff7520102748f3059a99846d717a42ae7e93e94680aab46103a360789daa65c09d77e7853f534b979e -c 6721adb64844834fe2055830f2307aef34a0fd43c6797aa30a5043d61d04bafd7124cefbe4515c159d3c9739628a38ad912a696b5025385f786238354a8c8e09 -c cf0bb3246c4d07cebb3dda999d6482537ee37af0b793aef83739d584b725605edd00813f0b02aac280730ca3e1e6cdb95f28af45fd49df85203d031ec50ed379 -c d55b84c1812855630de0e80f6e58a8fa0a75d9d3e7cb872dd2554254025d747cc497c412bf635c5861b59fa0f28148056dbf6de036f1c5c7f4ea7c995977b07d -c 04edb976a4a0920fdea2d182f5fb40cab06573b3a403228ffd2d24645397a853e1331556e9360857e7ac6e692013b50ecdac8348ffa540a90b1bc04e4e1bd2ff -c 825119ce5de974a07c97e78477b05aa9c94797e9ca22f0a3a6ee95bcbe5cd538eb9365e84f6533610e8d112a69f8fd73159e92a8502c7b08aaac45691d580cdd -c 555b608415735c3220a17c531f75b85cf157b0e73488a071d231323bbf1ddf4df9eb901370baab366b7cd19576ba3e3b5f7c5699147c9bddd6307e0f49314bee -c 3635e6779f75675de19f93981ed4a10959a0bd9c866c67e698ee2f779f9de4713d1217e3aec58be61c0de140372566c6f208eb4281200f3bf3a51f8b609432f8 -c 474193936818fb64530d023737abd068d4e6339b64c2fa0f961564031db05df3f7b74bf549310cf3e254a179cb802ddf0f15a492f88676a7aa637aea9eabcc6c -c 7c481e0d9a37cb2940c2a06e9a1ed2cb013c0f95cd55f936941ac85604ce20d7f38123eb89aace9a2f9150f4d205b3faba2b2df3929f71946226df9705a5638c -c d4b3c5e00476f571d0364567aca17cff76f8d8a0f5d25ec3df46269ad17e1e70e8db74244aea0a2bf2ec33064940e6b1896421b08fc13c823bed00754c3350d2 -c 34dec25ddb0ea9c389dfcc32b82961e9dcc3ccd88903a647f37a8f40529d6f803efc5d58046c7481a244e3fc6c51b621ecef112794013178288e3d0421fed2ef -c 002af077cfe5d6eb1bb18623445a83d6e83302fccdb0cf344ee6b6e447592327da1264bb102662e123ba7255de3b398447e814903430f0ebf6acb601a0fdfdf3 -c 65027bb9b4256212e0154ce799d86f22b129afe8913d933bbcfb74ae99b1dca5848e6891fd00dbd15b7d8f6e0387e57975e74fba92d6e0b7ceb26a922e911dfb -c 048fc9520c5543de778e130b33eb1193ca6f8a25fde75f8e4e542728b42cbd44213dcbf22dd8f5eb004640d66c2c3f2d2abb58655eadaebca33a92cf5ddf9cc8 -c b7f64b66c9b4bb7aaf26e9236b1baa86332939f940d648b6a2cf7a8c7f54cb45b2f7b1d66e1acc93eaaca5a249697752e632392b11f834ab8be4af248854cbcf -c 9bf5df7c8401648d137240c3d0224c4c9da554a4696be3373518685b52d02dc1d70d2c48d5c42a4525599c2706bb9ac96d7e70cb4032a68f7903b95eb7c182c8 -c c976a3d0bfebeb6d0205bd2a5e6cd6b40dadab53d7da9dcaa0e2cf25846bf46110925a8b1a7defe4fbbd7dee9a898c3c20aa619ad92c327f0a5bc38c700fed19 -c 085104ffabe1fde41d409b94000b32ae8a84cbb587cc42e5b9c60ad2de73cacb697b31e873b2e61b0a94ff5ce1975bb3b0f4356bca3d6c5dda0f39967a7201a7 -c 78be17fd25e8731bb6a6f5c0f3bce1bb5430f45724bd5551d06b12c7a059082088d478bf33442c407b29845b1b3a28d18b83874c21e8dca022e51a9ee9c94f6a -c 2256df76fe45302e65442f3698889e1e15e6e1e2ecf880c0e093f6a3f78ef12e36e2c53bea922913e1f79f816189be48d8afc518f2c2a2b280482b14fb3f782e -c bbcfba9fac00597fe3c6e38e5c25149eb091216c6a2c4f05e9a30825a54223d8920e13e1f9e67185dd0fc73cad1c9e02fd8f59ec35feadd87b68f2ab181b4a90 -c b8f14b425ad7b37bf4e6c23d4a8880605ce3215c4c254ab5de62f503f41658e60ab6fc02cf6f7806d921fce5ad3346e9ac21451e701cdc068724b23a64f78105 -c f87ac64fd7a56b1a7193673a54b9dc8f13feba01b59e1a5645449b1986a46eb5eaf2d816055d5d90d4f0fb731a1dfa5274430ca1b35e1478c3687c43bef57ed3 -c d063be5bbb06894ddc45711a2fbfd57b58c11cb666a223db99224fd26669e79cec4c065e93efba12b60f1d6dbf82ad8b7a206852b5b4c2e0a4021ca04b1a8da2 -c 9fa83bba9fb528ac3a4260af76369130f874b3f58594a4e86b9a014305c77e7e3560c2c44fc3868f6dc9e4ad85c8505e5ece39828b76ff79d55dc6bc975353bb -c f248a3c714c6ab4605214ad8d49235e90cf9bc7785437df508f485790f8376a8ff82087e3770b7612fb25b9b77e5abc0b40aa7e9cf1b82dce69c7424e0e51615 -c c43e68dc80429bc195fe92574357b2ee22e48f54cbd1f1c543d9d30068a809d93bd0887dbe455aa204ebd4b795d655ab032291c40a912a3c03503b6f511efb60 -c 810ecc1f933b4ca4458f4a403425ef16b50989496b581e392194541e83d1550e20b353aa13a8c068e9b0827ef73b08d9e87fff4789feb7cda7d46e372e006df8 -c e5239d3b7d643ae9b97cbe8d72c104072c41977fcfcac66793fd5296035a4e961ed8e48d941bb886f93f2e023b2a1e8602b4b391fe937ae92880fbb64d676055 -c f3ed89b1b874f604989cefa267978b7fd08563ded8eee0c8c4ce950fe8e95386e814f4e4e1605bc2de99fe826b0acfc29b0c453172397d93988113701d670caf -c b10bb5fa0b09ebe8f9a8489d87c888449bd1f2ec1e378d95bb9e3b177e51188c6f884534e6f95de9d77680d31ab9b409f6540b3d7c76da93169915bced1837a6 -c f62baafc6b2bc037abd2cb84b33b08b27ae46ade81df8b0331a248d2c1c40b03699930579568600db9984c3dccf2e141ddbee049eee8a2f73f8f5cc7f46c851c -c 6228ca708957c84c7222436f6cc4ed01a2824f6d1561a91f1aac8b57936c5a537b3962812bb325ce349e52b274b842722be56f77bbbd55f15be614fce3e97681 -c 8d47699b92104863ee96645b8486f6a7ec151676ce58e1468ade62182fc62d6ee96be57b27959853766c66874aaae5a01f8bde1dbef5982e2abe129a8a269f4c -c febb4dcdf1802e3ed978bfe27ecf0bf46c0cf733424297aca0778a687d4289040b5cb97ff70d315b71c20f358dc6d9caa3bcefeda6d47b52d55c7e41aaa2ad19 -c dd38616f3bc5212f4a3608c76bbc33035cf1df1c6c210ab60781305286c1fd2a42fb3870a12421dc0488adb831252662df55d1cf14f7f5cfff3af636303fca59 -c e6a4bab6301ea967436d64dec1c4b1bd03ecf1a79f7204a16236c2ec689aa120f2ea17602a11e4b29db2f6bdd52a242dcc655c0e2edd98af758c0949c1cd09e0 -c 00fdc2b6f24ec95f19b8c038604cc0728f73b94afaf2da113ac798e652faffa32cc506e1bee369e0271628428a0dcb1fb78806290c4ead2ced13c093ce20f3d6 -c 27ce9a4d847f715d1d2ce5915bcef8d7bccda07a63408042bc882f3811693e773bf58d1c97d3884fbf174d79b737699f7a110cef70c26034ee8fc907c4693615 -c 76df968d4eb0ddd2569d0f359fe76a5bf69966915c7c4a34048ebf794365433de1a0d92efc58e4ea3de36324613592061386fbbe8d57ec9b3e6ffe13f295a775 -c 444b3f8a1db0003920568bbd8ef6ba0ab05db21b86e01bd5d5be6485df01ec09a0f0eebae188d6d0d63dc4a0b7f6264f18641f80958f4380f4fb38fcfd7615a5 -c 359bf648a5d6d2b8973d666f7cf383d06b44a47c5afa98cf11c8a2715f167a92ccaf4d8e8a93f72d25aa3a76115f3dd4c6c30f9ed29793bc4e5895169939307c -c 2846e5c0068c26a82a4524f18be3450bdf1656a626c2fe0be20a352e89dc1053892a3659e195e8c92140bbac47f3b06129366ddfb6593d707ab68b4c64ac38b0 -c 3558e9a179496f8867faa3af0447239e28b7681cd8ec01b638286cf6da52382dacdb90df7f22e75ca93b2c2e5befd9c48c018740927807031dbe9fa165e1163b -c 392e61203852281570b13224dd08639e4a12778763830ec94e80d9b235ea1aef82d8604616efaee6884c1d57fcae886a7588de95a10f259a09322b7fb3755a00 -c 7501a64b6dc539f27350c4ce4b02c44bc3d0b842460ff5f4cc78e6f202d6e26bb281338affdccf76862c0046cb7a4bbfd2fa1dbe13bf0f6e44a777a2c88ae92c -c 123a0ff60bb4eeb7147155dc2c35a7e32c3d5b6f041d2b0448dd6dc5accd20d590b89b3e9f1e64e14f49da6ca08fba989a4b55c1a06445dbbbbdb4aef02e164d -c 414e6e9e28b24c3595740654157d76e6957fad2bcf51faa352ad0eb311d0cd87b27fe7b954ccfc2950dc78e2f407fe11bf3c252fdf650b499110d9baa9bd9275 -c a2562370f5120f505cf25cda376de694614acf798e269b1e4e357e1479e63d9f0abc24022d9b2f4421302eee84db42bba0fce721ee7ea9b6b9bb399f3aa3f814 -c 9c57ee34a520738f2f14481acfb8c8528d8941e8e836f9e104094bee04377d4e666546a1f2aa75b32a367aaa5e0742bde885de68ec4fb88abf87c2ddd20b6ad4 -c b23924fa16e2bf87a3096039140de83f176d05194791e5725c5e202e8643d101bc67da701ec402cde5aea981d116d3b9832b2a521fa7f4312552934547a9ab1e -c 43ed6783e1c6ca1d6cdf050fd3e0682cdc3e9b89d1576fe3764e3856a1ba2ade20552d6158f74268eddc68f73ca0befb16130f6c29848648795c1045129443cb -c 6cb7fb8f0f5f54173ceda6122337df3785afca5331a99c8cc6ca7bbd06c0297ac065db8fe090f4450e496f0d64a8c2a4c7d815a7d729200267ec18dea653d3a4 -c 719940d8b58df70fb2a4e9d7f73d5669d977de07bc73b07facc19b4505e2ed8bed2954d189a09f264f7000a9759795f8ee78221f3b8e9e4ae677b23093b90490 -c 7ba88fa1162dd4bf0d8c3e8f25383b72e96b305dd8f7023ad5abc68bc9752064c278b4dfc8002f54baeda7fd6d24301b873b3f9a63ace5774649c18411ee7902 -c c24eab67dde08b9292f5f871117256e5ad570f28716ccb5bada2949753e30e3f9ad477ed1ba00a6731b3dd2f7bb7bdbaff46d7da62b2a29ffbcd9e5a02348ba7 -c f86b5cf761ce9439a40c41a08b65ddb98f01f3bba38b16d39e29a3322de2de3f2c3d1145fb386d064eca5f9274cdf6a3e198596ac0b12609ec670f9b107f0384 -c 534d0e7fe407b044e735994c0121127d7e808f6595dc68626a73f1f480ef893f9ff009d38ce8073d8da1878d9711a8ea148a9c2caf984a92837edf3188e35a86 -c 7f50ebf94f31675f432acad23f2e7a3a1c864f3148a94d9deae92fffb1f2400bad2e26c39438f7155038ef8132b4648991dff782bdca71784844eef28ce20985 -c ef7ad0d4417524d715104c19bf3582e9ad0504f3259370fa1e14698baf0175d62e92363e36ccc9ce06427ffaa9b3af66ab82e39ae28dd05d490691ed4d2dab4f -c 8ede6397fb9ef7fc4c4d653dab66e94565080b8d80c5e65d98e1d835a98378f612a4f925574e36fea59a5d669ce53c6a3795330f653eb073a9202e072674ad86 -c 85fa5507ee6417dd660ff8695009ded51e0007c5a360c58c6a0a860d31b2faade87ea85b5fea835cda31e39dfd0fa38c3d039b3f55cdfeaa5446bba84b438bdc -c a715230d9487f0bca9794d1c89a2a559fc9289269c4eca3c7fa6ef16ea76fa9c71b50dc0964d7afeaf723fe0b38669e427c9c285a6663d17ab44374ed2d700de -c 4805cc483b53fcad6efef76102e2e6c713d46cd9e309154c52a1fdb7f2bda61927ce3eba5dc86ee0fd07f57376b4a407f707337e0242eff1e233c1ddc1a48f5a -c cfc669ef8ebcbb3c26071245c786370fce0c680ee48f36fbdbd5e98b90fccea811f2e3dd55101a84b910e98468d381b2f3746a0eef2c5ac11e4bf24833bbad96 -c e9566c9777f37ccb42ecab8cf7af042b2ca84af6e0ad7782397243fa12fb1fb64625d479cf33640c0e908305746ee8aced3e9967b994fc225facd2b9581d0cf2 -c 449704b7d9f7a5a59a43ada81c82e34a5a07df9b186ef111c8d72d47a1f96906ed03ea8a17142965d023db76eba70ab32b862e317f6b893a2d973ca6d43d1705 -c cee11b105e64a83c7458913034640d892fff6f9ae1d21bb739f9ee708ecb37117454cb139695559f63cfc10759bef2a8a11bb05f35cbc54e767e4cb10d87f777 -c 461aeafd800852cf277d3531cc766e3b769d7216e01fcaf3a08e1e83f542ac7ec7e1c18c6c5506935bf9aa831ff6dd1d9bedd107f807e78518e4baa4eeb63bfb -c b50ddc6c355d8b14f431522e2aae0e77cba9aa66270ddd0bc556d59f0bf7bafabc8fb511080e3373f4df328fa830112b607971eb73612f6533601294df75476e -c 91312ddd69a36347105b4bbc47c3628749b69c5c6bb20e77208d6c29cb38833096cbe356d7e1d2939298e7008d08901649085581db89cf306f48cc03dbd0b66d -c 51f0f21addf17fee283d05c316d96598e0267b1177c3c5ab43de8927049e68c2752c980c3ee4af5512eb4d6822233a0e415c1c3e83d57835cd6740e68b206486 -c 0204ba52f0c21ad3980ea5f609c7bce0279235b8369ea11df10d2a27147dc1ce8faefc61def181ef16cd6e5c8db675a2f542ae43c7edfbac530f36330bf660eb -c a51e9b258185b956f8f5576334c59d0237d673aab3f21535bd07b4de7e26718a55a231e2451c570464e3fc92312d1a42f4198a9c03edbaebce226e162ef62021 -c 6a0c33fe6694b885fc2615e5b3139ed0f53c5c59dbe3bcf1340951517e32547b6406e6c2e5b969d69508fa58cbaeec55a7ffb3c4179ba9bf0085ed9cfe090b9d -c d1b9265cddeba9ca41405974ff6e30665ad84790c27f5c54d10f74b908b7f7016d53c8587ddbd07eb6ba8308b912c85fb139d55e726f09bccecbe306f4b9ac3a -c de57163377dd40d56b17ba0de6274c108227595b372cc1d28ce9ffe484660f39ca8c1159e95cfd70dfda3c1682f1590f607995e7ebb5bbb2297456aac8c81977 -c 331af4f5f494f407f0656407e6510f73bd09a9cdd4a06e6f50e4dda39bee5621fa3d02323985c0e884405819b500fb42f1fdfd9c7002e16c7722ebfeee53076e -c 87e9159f1108456043fa45a1e4c84e5fee212b07b56a5942bef3569d599726426d2a8998d2d7dffae9154a0034d4d29425fad3353eb04144b32f1b1163548b25 -c d770ed306cf2ffd65281bd3a9f299abd6fdf293ff1b22ef8f25ee4e8381f97dba4a669f737c08b0e78f5893dedcefc9799f44873dd15178c8533f1239c9cb687 -c 042e0f8312c838c130f0de147d5a04f501af594b4c2958fc48e62bb8c8023d9addb027774546bcf46d3f1c416e80e69a13fadcd13112d58af06052a509078caa -c 8d9cbdf4d192a8e7bd396dab02c070d2676745064a98a1e633daba4bbb68418396179c629eb2b5d14ecb6911e30fa47ed93a31239284797844425035b26a6f3b -c bbf5ac7db148011958099d992e6fc1952df9cc556a6303a1028d96c80cb080f31bc3fb317de9a78210840296dbf0d1bec462e0e9694d60de030f9553c68501a6 -c 0ac6553a03576e80cfa7d3665e66695a32caa68c0359d48357d8972faaa9b5fcfb0305e30664568bd0e80534249a25e53c638ee0a4d82101bd1eaa3158995f24 -c bb18452371a7cf4368912432bfc153e51db4e58bd1e3e27b8e6159844232a177ab70cc2c5d1cb88143d7f130e573aca43cb1a88f601b2718c5d14711f2b18c56 -c 8289acd78f532a5018538056755e093f9e6e105a62239d13201bf2b2b6304c6b838ed74edfef414809ed07d947b7ad394d0b8985a60d0c34b6eac7285c02bc0c -c ced7ec43457022478fbebc3c8daf17eb89fe20eb063c87bee9ec3d1a09a4c517ed757a780edcefe613b71cd98f4944af55e5b95fb94c8dc3da2b6010d974de78 -c 04989ea4b000e6714824a2b7b9fdf24e1b285f785b312ec04c817e9310a86c0d7e64f78c25136d88c8c6bcbce1e065b0fb564942782a1d7c2d2d029f69154727 -c 6827f3e91266ca3995acd71664e1ed80dbcced2aa98fd1d11a4a84388b22608335fe202ca7c454c63f3c87eaeb8c45577f7bcc021d7f1a94e98d1437bd05e261 -c fdd03aeac252d9fdc5f675ec30a84bd4f17721923784ebd2085bbe5733e08d4ea83d7d6f43f4938daa879166ba4da6da5b518fd12af404c97dd571ac1f3e9db7 -c b566ffe61438c2ab4743344b47ca345b0d1fd743f0a3e83111fb0149de0f797134802d2cfe54fa857b75b316da297382dc96ed9d28fa97c80133c6fbbda3afce -c 7515b18821e9e1bb8ae11786518365b91c535cc7249c3eff2510c2ffe2dd6c5eadde88bd36d9eb77305af6df866f06b28e9a379da6689be1fd439e2a5c07e891 -c 8132cc7a131c2c5fe27135870084d63305ca36e8ba53dbe89acf00fcf65720e9b91a5e28183797941d7cc470ce1116031bc54d06d0309559ca0cf7db8d803006 -c 750c7ddec77643460fad3e5d97875c2d84f543cf63f89e0d251d2cbbed46a46d0af3fda7838951ac9f738d61ab8a081cdfe6f85bb7cf20132749cec506575e99 -c c2a7bf1f18b74ae5e4d723838606dddceea49db2f2a5a6e7d8d9a0ea79e416808b1ccdfc9d123c82e75b05ec1b746a68d6571ef8a379bfbcc0b41dbbaec4d618 -c add2bb3f0d08e5648c2aa1aa63a9cb1e8abf50f49040759d070ea2ef307df36cbc0a35a5608f7059deaa80531dbe1ca5d6a4935536e72845ef17d08a808ab44d -c 009b5fe8f7499b6d1f6a83a12bce270301d868f3a6785a51580bbafca235198372ec783c429b4b19925b2277158ec20f0c0b3e87fb676a160677c66bedd12fda -c d0675aee3dd09e65b2c6be35bf976d2e4447ac4edb5c1e04951fe95d71f5d9cff5a5721f2aed7932cab15251e4f859ed9d5e8eaca70c1126b1e99fb54cff11e7 -c a3fb0832d2895f0133f5fa4fb7e35cb284c70e9abd39158cbff2bddccf31194bb4e213decfe51c98d7e60d3ddc418666770e88a4969d9be73388e440286a990f -c 6de9931a7047aec6b6b3d8b82c69a035c77f719fa2a39a8a091f0a77af8b5bf71544823d6ddaf444dc7602cdcad504fdcd098829e6b3a1f0e79ca8f60c984ef9 -c 7af94ec30fc1142418aaaff0b12c1f73dcad915a86c0d81924f9051f3a1d2acc52d8beda105c925f3d457d57ed8ab12e6dc5eb62d430236cfdd0128c3b4b0fae -c 4e491f8d6d96f035ca0a43bc5d3a137d8f0953d6a871023933f039199e3769dc1f54a4108f6aeb981ff237d5320fffefd064d21c485f6e1006d45476e93c023d -c 07b0f0733ba324b4d7e40dfe72c42b7c658fb02bd8ef49c87123ea3d2cba337eb4e99dc9ca1aa7b08e63f94a0030e6b2bcbdd28021321ffd1949804dd1c3b58c -c 04a629a69638f3aed40cdc81ef41bb77d584b355b3ce0cbb5807b596e8878e6bb0bf6061af2628f885d3f05f5a2fd6193deb6c981c979e84abba487760a4c9bc -c 1fb53fcf234d88cf01e8ad7eca3c93683877bda92b110406cd748107b1d0b5fd4b077caa38f96fed37981cb33993866336453d1af4b786cfbd6de107658dab7d -c c551b84550f4bee16c331876a1dc93e5737e2fefc003d33c0abe44599619c08894cd6114404df5b932004baf210ce6f6755002abd2953ddc8e2a85a424226b86 -c 08bdbf5d194eb56b377f02d721b5c2e3358bb1b8f72f5646f261ca113dfde207d197639f6e8bf99951a8aa8d8790dcfc3e206ee05d3c2773a101cdb44ad22e0f -c 39da9a7651680f4f0ffbba2b85b86a1ed53f4d785cca5906eebc0529c9bd1e358c4a44c49262f6702e45f437361a6bde91232847b749ec594ec24f9fc8c27745 -c 45bb4fdd1be393fa49fd05dcb7e711281824d3900d377f0cf44dd4c76d4c1970dd7f4bf9860a26706930d4aa5e107f6e34ee594383627977cb52da74e10ebd2d -c ba221560310e15e7a273c03625d00d5537239d751d8fc9bf673e741ef78e22e03f671260a6f47bd59dab8c75d39209f5dd4418328a525351d5f2f5478b2f5fe7 -c 270dc529b7446c68cb6f9047e53b96532e8fcb12cf88fa3c185d5640b386a1dc3769b06ff5e4bfc592185d7424c4076924f06c6a27e680cf2ba0948cb5e9aad9 -c f5579444d4bad4ad567bdbb64a20024c56930771c0ea77b8bed10b9cb5c3279d18d690ffc8f432d895a4f60d6e412039db739bd9 -s f603ac5dc489a4de25aa5ea80ee3ea2a492477be06382d6b1a737f4d2b3986a9cdbe7dfabc53a48f72724af1d9aa2c3fdcd3c3124d2d9de500bd5d8a5e4518f1 -s d5b73dbef8e66399bf33809bc39fd9188646b43b4d94502ae80c9b077987dbbf2185a39fee510b2916df682919d2092785a6ff561d13d8d932da52e760907c0f -s 85bb83213b72fc3935e8f665ac3ccd0cadf5143ca52dcf615e8e5be3fab5be7c2f2d524f372b7354db6884e893cf65062d6c07f342b26ce484bf8d857245e2f3 -s c9f9cc37230dd17219afa7d93a685edc5dbda88b -c 02f5985a0e6c644349dd8ebae7a2b8de08636732c71b81065f33a0f60be48c31eb02213739d5a064cc68edbd3107cc52af39c72fe097c1b1cef30ec91e7c14d8 -c 9c0c1784 -s 839ff13ab5b6363f15c6aac4361802137bb6a583241fff672cc56773d9d6257443f5a8f45d43049c7fb0bffb9117fb8db6b7885b011b7b70698639ef47a1d152 -s ab1df9cd4a9d4396184b94632d26a610a8faf6846d1384b4330c4103ae43a0705090963b6f694156ca566b32601f1f84bd3378e8f71773adcaaa0d7b4ccbcb53 -s 55f79c1af5f3149f1a287764db032568d1d059dfdcac092587ee12005c66162a36b7acee3008fdf681bcd811b4f83ed92d14739a5523f487a6580291c0f5d8c4 -s eccd4c4c3d50e4f630afce4f673595af6fba41f1538a3d4847cbd33403b791186b05b8a4d43d5fe5efd3e26e1ec3f608f0fc4b3f64f520ee28ba3c2269c8bc81 -s 47251e8fe2040678156d6d1ddcd5f8b3e6b832887a1829e987e476d7fce052533f78a2ccda7efe407500fb6cefd4f0079e85106db4a1b0957f678da991b2198e -s c2730a30580687945bbb76b287037c228ad3d5861550978741b4e376b7213a5531bb856daf487f810cf419534f69b6cf5cce1ee138ccefe5d863dfc42a1053cc -s ced435c66d66abe3909edffca9612f588ae958c3030d472e74e9aa538ffaaca7b67298724447908d3728fc735714c7f1fae271e38d59f32368fdc2e4fb2da762 -s 8afa581ac31f49f9cc49f7189a4c60365ad95777cdbce687f1517dc5cbfd9d9cad8a346a6679bf8c1def0e6a2f1b12f996e67660602ed054f96c04d83fa53743 -s 4294defbb1e53fd17928434d7e02f70219e7f190b115da27746f61601707d05a2ac8227eb9ef263e18cf40521137886eb0b7a79bf42b9090ecb2f8f6fc518052 -s e3bc4a94773375b5229248c7f9a2a6f92b4f9eec677721960e784fdc9a4fd9e655d5e481469ee488e3480eaf036464332ef16885de45b81940e62ec1197cb11a -s 2393ea9b018fd6186a626af0e2af153ca2044c212c641669dd77ed942a068245232bbc245d4c54db5f2ee53a9f3e03b0a399a8dcdd1b6a2d090d27d2d5d24df1 -s 0c914c340e044739bfa35725b9702bff5850b673b2f537ef405e262de949e54f9116273ab13ce3571eedbf22429055140d0ae1dba2a720682ce11f7e966e53cc -s 1c21b5b85b8247ea4a510bfa8bef07d60fbac9cee75c85015ba5567104aec6cce02ec8fe82775fe58fc91e7832e042c2dde886023f5e01352116458a6558e530 -s 7eb9dab4c2a0ea26c96fad7995eef07b329b15d07a0a2ff783f4a00d89ecccaba2c5044d23f64b092db8aa5dddfd79f7669558a40e0fdfaa178d30deb34f77a2 -s 9ee3f9de706b1650deddda542d7709ef0ee0e6f29ccbe847cc8307879deb58681dea8c3ab2b28651b75bc92c023edc5cc8aa1551d47437d1ec09717c0c8b58eb -s 64d3fdc324203629d96208eb1de175254b7ec40940637d9c24ca5019ab7861a2c73466ac481b4940ae25c7a503fa67190ca98411aa0ddd9b4e5dde6d56e34f4f -s 933c35880ab056918572b713794b08c58af0ad223e978f6a9543f1fed4342fff365e2d78379bc7c5afeecc2136668f18027e0fcb5f8bbafb185c282c253f4bcc -s 54530091eb4925d534df863a28498092886f0ee6bc4dfae35a1eeba1abb01e5dba193bd6aeb218261d898074eff9e6b9154c652b9b39f015098de87412fd8691 -s b5caf348f99ff5eb37bb6a8f93fc5080d5af92ffe362c808d4400ebad17354aabea2e8d8721653ef3272eb75db3cbb304d73f7b63ba6f5b2fe8b0d23ed5bda7d -s 946d5302f293e205c5ca39e61cdbbf6e4b16b8ee2bb8b43624aaa1acd2f745d206e432e23241e6f2990e9ff46c2f36599dbe08acd6238149e46ce3dd27fe2fa4 -s ed6cfd483a1ac16774a8655667929abfa6b1bb30b7a29db499d3d8447153a32caf0bc0aede1a5f071cd7bf231c282bfb5ba04b5b048b51aafc897fdf5c00f646 -s 705243e89d1776182d1165a26a765d07eb5d225638462f3c969eed9f8be69b6e1be9e0ff08ce5327686043393f2b306b81c18067ba63e18cae21acebf0916577 -s 0692d5615048e743c28aa28b2fea3d8e59bc63092c16cbca8f4df3819168e2ce6db8f73a915c5d2897e6a6eb051192700b2e507996a333b7fc3c979ecddf52e2 -s fccebc31614c0cb4317b34e2e146051937460bd3c7829dcb4f23f3ea688bebcc0e11f7a61d8695c71072ecd4f04bf4310795be7a206b62c88e39726e1cad9a47 -s a0ad84341fcc61f99d8832236efca4128d71de2e18712ed59f1b5170967f9308a0d9e977223a89605bb811047f84bd31a8d27343489fa5718f2a7ede0f7bf312 -s 2a549fcf7aafa41fdfe45f18b7361907fe47575519f4df63b1edebd8e88fe1543e21a6f869af88596689df0c94eb2276a221e9c3de7d6f9613798b7c5eb4d3cd -s 5dd2487f4d69bbb96796aa5db81676cca934cadbb9df4e223c92ab7b7cdb820813361c47a1c6e60540f7f1ad1ce07575035d84e652e7c526890e9ce1948985b8 -s aa0e3a09ebd482112c859b1261b29d74146fda44ae3715f002b476ecde3878e6697584555cc80e533b927ef707c352dd02c173c0464133f1c1d3af19aed73c2e -s bab4310e3882c7e7ea75ce1a7e29b0b51ad94af2d37f3d67ef6a3bfbcfaff5b69185ee48d4c61424a67ca6d8955c49ef929ac3f02aa4cbcfbaf0d3ef93ae0da5 -s 2ca7155996d2350b98c448199f8249e60fdb84cb49f033c14d1d9e96db7ee7cd1d06b798c1f245dd66902a02d638c7fddbbcc6e7d46ae038631899f46d6519c3 -s 3f596d9bec2ceb0132043a1413a9cadafe2ad24365874a602bc2d82834b4bcdb807c4cd5e0b2df33efd9e759ce4056053de434184368ff92fd401bfa2e1346ff -s f25c5a54349cab112425b384b2c61645111e93aa9b3b5007b278b955507e525755bb2753f54401d967238eac66f12eb1ce567d03330c2bb4bd03d9b87cfc62dd -s 43444084a74ddcfe5434b0f9eaf0566a70ff5f33bdf0d777b11cbe5e07c71348fbb8169f6532c2834d4da08598f4e64a7a110a434733c98b21797f53e01878a3 -s 9e80409a4694013217b55429b052c54c45efc483f416d867529fea2f7325a1fdf7e8fa7f52c293ef0d48bdf56d6dbb066a706d8e15756e3bb178c6f16d19a24c -s 9c23adb285618e858d3303ec9c7a1c262bb101630430fb39aff835447aa5cd481fd494550d72d03120f1df3d763785bb3688fc91473ff8def197904460a58db0 -s 9a84955c293129effa3acca6f4d043dab725d9d5e82d346171fb8240722ea256895f48450767bc04354bad8f8e0e75ace152ad971c70ed5207f75082cc14d1ea -s a3a6f220d4af5128cd11a901cfc8d10dbf2c3fa8871467b699df9f3ee5b46cdcb457b3d74da3b8028956528a836005c06530d1e05adb582c98902d6235b53f5d -s b990fc9103cf6770488604c68fe94f2348fec8e699816c6081587e33e1c49f4e55ceaa16ca50a1be3d0f45dce1378d31950979153ac7bfb226f9572272f9a1f5 -s ddf8c6ca2c33379a89b1b57b12b9591c2c4ae97b645590789e1ef50c2f05fcb68ea0c2e48be68ecd1a58d6f9e031d864e15f52dbae4385532e310c38cdcaf6c0 -s e1a044a3ea8d49ce85ec70eed6aa9c2f595a7f51748709dbf062e1f22ca6520df4a86e3b1ab07ef890d3899c42a0c550173680f1674d1711d6b5433cc7b19675 -s 804e721233709ffcb2e184728d663681568258d9d130dce1692693406579df4d3d179eeb422c129093a3343814c0240d96aa7a71d9db1b3f0f1d96a3cd1bf67b -s 3c90cec43cb2c765bc0cb09a50b8f410322d9aefd2232ec2961e307f4ecfa95e73812991787f19076376bbad2d1ca3e477183c042d30f6d8493f493b96b1eccf -s 22eb36add3f73bef2ca657912ae2b20c07243190e6428246efa50b7a05edddee2d61bf6446361f915cb990a014409a743e8c270483389260f91113fe97c18e80 -s 9593f5f11bebfe7ad7b25df42cf89d5cd20681eca9e70f8f7101bfee0b3060f50ddd8e09706754f63b77f7ad5e82186f2dc08fb32fc34d5baca96e546b8bc836 -s ec9f57eab9203ba288e387dfb752bc678ac8a2ab9dd99192f0a7da7413554f7a2923c138a6dc67181aebb4fbcb5fb712544fe21ca4f8fd0a71f86bfafbe13e33 -s fb6c537e4d2f130f63b827bcba92f77f0a25e532ed06f019e9fd4ba55269ba070bb3fb948e2fb9c2d08df1f5e3b36faf9fffdd9aa96e0d556bc5e73dc577a9f8 -s a52531b9a35a3389d418a96b8129c890cba18046329c3bdf8a37410afc41797e85cd10a4e1739860b9fd65fc33746ddfb03fe7ac72cc7e2379242cbb1ccdcbcd -s d7e1479a8fddd87c77d8315f6168b011df5fe4aaa1d0de271469c0526a8cc3cce485b7b482278976ebd7b70f8be951ab4d096c95581582674635e1af445c3a56 -s 6bfb44a3e6f38a43b670a66ced341966a5a69cfada7032744f92d6ca39285528421b16f4d998f259a23e30cfba5668d6dfc8707499dc3aceeb92c5e050f5db87 -s aaa86b3e4b83f33a203cc81e707f94445eb35c88dafb3c519ab6b55c9b84183bcab5be3648af2d9f133913f8efeebde5c446155cb907f9d5c47b66c0e0c0b5d8 -s cae6803c3cf82b873be6ce991a9e3323f807735723f90243349a3937521f5238e4669c939d035423313f037a810ed40ebfba9e49b55d8be5e34183ad90053f21 -s e08fb8bca82fb09aa7d6e9e8a381d45c785b1289b7dae0aa72992440507b91ed30ca75aa12c86b3e6110f3a9202ead306ed65f209b6a78233494a06062314d6e -s 7b736e321a095ea0709f73b4b67e04514d07c4376dae3a9b131418b7dfae49737f8147788be03fde072ddda1a60b588fcdcda6a8b0aadf59f07d111189c15a7b -s 5f138649772011f016d4d94870e58aa8daaf169a199a064841afaaee05e3b16da0e3c01c3d6a53b5773f5af63cd8298ed45f430c214d891089094551ca9e833f -s c37f46d05739c872d2d09a06b2fe74bab0738a743aa672ef3a7cf21cffb6c930769f28fd4e85b9aaf8f37937fc75cb4486046f400b3c09ecc8134c044fd4b631 -s def6d6998729ff85e9a30cedbd7fab2e24e27033e57de5424c9a828e80214840a3b64512a1f3909d924e5188a43d2daaf32743ef6e27cf030dad8441eaa1517a -s 5bdec49cffb563cd32121f749da822f3dfed1107153651c97ffb2aca6bb02ae79df5c993a5af1c1c23c6bf2112ed0be688ece9dc8fdeed1255a333e5cfa2e7f6 -s 4f3545878ee1aa9cf73a522e9cd3c9e593c1e7669c55e17457d676a29475abc584f26c34488a22ef5e65cf62e8e847e679311ee868c0df2f024f1cf89a471812 -s 06ad02813b4bbd48510c01ce44bb72afc3e46180c8932ae76ad559c59358dae6dcfcd80f1ec3dd38007a0316ac3f0c5c7e171dfb8629d264496b3fbbc79cd8bc -s 8d83a222c206f8017eeed4cbae33c29c00b4eae2fd329f20a4b4d98089847d1f51b6e6bbf469af103b4f219e52d04bbe6456588ff9dfe44c616bf70d5c800e9e -s 5b7c68f3cc5d2d128c2f2e687f0bfd86fb486ba0c8c112c99740c9901365855bb4cafc7be50e00e49d3daa16581aa5a7eaa9d4f72315f739a49792bd69e910eb -s c0c071e1ed7fb40c4ceecee158b10fd6fa29f88ccbc2708296d70bcffbcea44b4fd55bb5af9472362d4ce2278cc184585c3479a7a50a432b11515c2fbc9eea46 -s 45a2d1981c57d2548400403b4004f81dc64d269a72227ce1ab76b506eb5981eda40a8c07603ea1604e16ac055e94646526733fcbe04c4de9e1fe3e18ed0846fa -s 2d3647dc70ef15a463634efebe2e6288898b468b619ae374ac94f850088120718e5b5f2b620b28d35be4dc03dbb6298e448e803538d15ec9dc3f7c665490c6d8 -s 0f1cd358927f53e7f8fb4c63adb50f0272844d03e5f86aa9e36fcc3e34876f3328a4a075a2667e61e584d3d15913e0eb17dd4295cdd2f09c95975d803e961bc9 -s 177ad8d8959a971d31d2d3886652a55df85660e25a79cab41288d5e564fc89a95323f3066169e69026f23d0cae686ae2d915f7923dbe5462e5901d9dee2b4d33 -s 4997b84c071d0707ad34387225c0970ed41a44aa0c5cbecf4c4048309b1e1af958cc3285eb291e1a94407f3dcecc97b4400ff20913f20b8ffc6cb64d7572a60a -s 7959c73a8816a94aa0edd2640a65535aec9c5f5065ff7d3d7735016a2c4a8db88087da33caf4aceaab4c925e3010f16c5e2eb38bd41b70294bbc2289067166ae -s 3202c6db2dadf316116cd937d93a5fad1d1a93d072d7949d16c52a13b023de471430ed3514a187275837353fb0333390dc85a903cde8cbccd5aaa5b0c5b7054b -s 45687e3df3d3338bb4aa2b398592f578ba454b87d794c2531010421cd70d19a7d8801a037a02696a7b9630b4c56b2cf90364763ca0e0e198ab20283de3072022 -s dc5850e40e9772fc2203d827f4b224c371b63ce500894912f6f0d3bfb8c5e351bb440709dac3f3a553c3fa5b475ac8279c9cb05b0790be2725c25b4db363a96d -s a8d3a05d0cfd68e441b41ec2d4cda485f670b33f6828e09c5176e4be6026030fd43e2a001614fcd1628778f0588e6bd0a57e8421d48a8bd96b08aad79bd73fcc -s 7e3e25fd7e935e0bbc5645dc80eae6ac25a8cd1aa05cbd10aa38e05ca66482a546f4b61c00eca1a2c678af1ada71c0361b6625ba792028589e6b2e6e93c1e514 -s 27a3daea557b30348c89a55fc29a8478495f2d72431f591400c3e3b1a3053cdcec3d23d1a95dde49f43a59ad812cc48e42e33623cd95aa7e34663b7961d6666b -s 13ab6ec8c3be4e01f6def03e65e572feab74b6ef73aead15c94f7c90c141fa82a2fe5c3a201444a2198b94b4861bd5fa00e93569894f3411f001bc6b6a920459 -s 1083813c4e3cda74e2929d20877be21573dd91aa5ca33eccaae1f88aaea0dee90433896185e1677a2bdcb7081ceae5d06f204a7cb2c9daea9ec8756edfd31a78 -s 0f659ec8e3c6d4a08bc6728e27f0ef4117dd116dd41dca0c992d05a877c85c178103b8c828f2783ac92aee1a585b04dab0a33235e4bbf0b5f2fad0b62067b85d -s 13799a03b368fac8e4a66d9e3a36c569650fe5edbe6d78052eed4708287a14bf174c93675008c83970072a860c9e434d13614fb9936f7d0acf37755e211985b7 -s 86b1b6dc675690ef00fdcbc8626490990b9aece576b1a0760f3f31a0003f4ba2066fbf60728769d4d656be99725b65405b582d9cee72ce71384e8ec4da59cce4 -s 805af79d068849f7b14c18da1c366e5c485866ab9c9e8f1267d250bc4839685d6ef4fcfe3d26e550cc60d322b2cfc0c75a52f6522f50d8ff6da5617cd7b5b17e -s 9bb4e1ea1305b19c7f2b481718f89bed3875ec327576694c039e8460ded1bb76d989b2f61b21d5b59cf7c8f35ee804c476c3b9ba818e6a4be001eec09a67c857 -s d2c339bb3ee4ecd2528683f1793eea997e02cd47f08e293aff97d8e2e9bc337ce2f7eec5b576bcafea6305e7babc0b3704b2cf1d1014dbd5bb020c652d9f1e35 -s 15a769dd383263bfbd4b8ac9efa0645d27c2ca27acdcf3247d9f2972759cb661115d24389b6efe491c24e45f38dff1bf0cef83c3328835887851dee7dc898fe1 -s 7f63864992f9212e67f68d4cb91b25c2d5923fc2c3fe34569a5bce899c9c0133e76fdd73d3434741c675094614c557c2fb2ce2be5e4a908babbe1a072d92b709 -s 20f89f306d2469f46472cf526a5c988ad4d618432ee89724976af4f734481d4e5e34b8d0894aa621998e229fa0099ce9c1ff34180bb608aa3785ba2db6f1b5f7 -s d2f6c16d80adcefe0f5aed3c0feb7b044b5fe770cf871ec8b63229dfa06b2a829d07d4725fcd46420fc5e5f627ac867966f5c4d825e5e26a8cf1dcc69863d57c -s 4f1550a8efae9eea5144f054a454f879fb5608747a31f6607a74ffeb922f102b21a89a1dec3b76d7ce5a08b53f2a6e21096ee72d3e43ab812e3f1937c4a9d091 -s d78db2e4e56def0cdf4122c5544bbe824ed70c34680331aa1f200e420ff54843f1d642faddaac4e0909f0cea668a8275a7bb9e93bbf18a330cea22b624ca741b -s 5ecbfee74b91ea740456618167dd2707ac1b9b862861b554a48c3f3a62092cc53db90fafa819a6e8fcca54eb1fe08fe85d001338dccf07792ca76ef2bebc98c3 -s b43c1f21411c3d3b976a03e96d48b5d5fee5ed3c111535e1f187d4e57370fbb105b2b947f70f98b5e53e25f52ba035abd186967b5dfbcf7a4ef867e021612e71 -s ace454f388f77058772cec0d65a03ebe7f04f04d260d8ac8fd07dc69a01a4abd22376b0749b6ffbf046b8e1a2af351084bca39831b15ed939f4c5b606fab2050 -s 270c87595ec9c25e4978924f081c79e6a7035d66648a4c12878a3be85602ba45a322c56faa2bb7fe1f42568143a9874ff3f0089033f4404910037b7c78db8a47 -s a44ddd4d4751090f47d5b4b5d6c6ccf92752293d13630afcc850a55ec95a09b1412f0700584e686fbf6d98e16b4ed8aa5cb76c3edf05526123f4e4dfc0626ea6 -s 4570fd04422de021cda8f47b42b26b15202d392a28659207af2e70879ae545bd8a775285eb6c4bc96e5749d887f22e7a0e5d2739c6f3d3e2a0f0a8f06c6b0f12 -s d61e17dbc5f5e1bc47104c414177e09a84cf1c1295cf5cfc99e03c0457f02986bf6e23d1b21152e243a08a7a0a86a152ef94834d0478253509ba0c5e5b8499b1 -s ac731522ac6970e73e7776f2f98da3ca473df8f17de8cf6197a5f8f2b06ed8c74c0d3d609be38e157179c39f1623977297e4a7843614bafee562e6d864441a43 -s 4de37968a40f5e033e6e1860728cb678a1b815792361bf9107a9b46995cc2a5672e06638f9ea3ff4794833ee5f933e8fad3106a0923a2608ad4669acaf914a38 -s abe26a84678b63c53149ae39c7cbee407d8688b96fa534c596fdb6323f5fdb8fc4fc4acb80488038b0b3289713d43936bec1684f05c36f17b067dd2cc1ccc49e -s 41b5fe95e89e48320bc862740f8832d33f9909d146114fd69a123a7a8031b7d64813ce1f610654f1d69c0a5b1b382bbe4e79dbfceeab58dd0b4637e32252ed0e -s 6a044f3a4a123ae8e96f869d852b405a9d1679739c2798bef884fc740926f3b19953ac13664aa03e12e34e0b520ca99f8d4562b4748130a3ef8cf7670197309f -s 6bf0bd0d823ed68e29de8992dbeddcb66dd62ac1479346396196c3c7563acf480ccf6541bf17e8ec656ab9ab6534e1aadfe96ba0a2520db6d00895a676d3c7f1 -s 5cab9f6afdf3151cb27ccf1cf72e8357e317abbfd413c7f4687b87ea70beeb4aee7fe0c508ef657350a7a580a84e36881c7b87e3122fe19f7ea060e7e6c8964a -s 4e6aba9332de074badb73b9079703474e67eecec22b1e7e904085899d26f7dfa739538e2ff3293c59dfc67cd418fb22c495593a92ec1778331a4669adc16e68b -s 67c4958164fca69420ab92e0a329c0690370d2a9df3e82c1b013f5c9a26013cf3be01a222f4a71aa943363fad0808c55b93949fd710fb60b8f27994c1b3ca7f7 -s 9443d612b90fd60906c3e910d73922407fcc443ddb2dd86e5eb5864755f740df97ea10441fde66d98ca074cfca89879af411699b9a15027620b77f1defbfe042 -s 196b759a7c9777aaf34c0c35441f633a7e4732f878fec7216a2250edf5ba60cd5ce484da2275e2779c2155e018ffa1e290d335aab7c0403d914225673aa0b397 -s defd340d472d8eec159b8e65f5244f6a9a593c9a9bc9864dfcf69afa1fdf1d1bd74c4640d3b68e31bf16ef57014c2fd6d4929fe35976ec8fb4b9881d8162effe -s cbefc4b399b16690b43e604a058d36f89c743314f85e5c82cb1627634b1438504466c74d5097541913f167927d751e51188c5cbbd75f1f9cf19347d687ff1bfe -s 34ef9bda13a7bd5bdcc5c16d6dddbb75856acb4aa896baa769987f88579e046db309630d7d864a30f5e53c894460a7345d3ec43babaeee182f5cb0cc6d97c230 -s 194549818f7fec2cdce8a00ffcd1b7ab814f96f016ea162d61053fcb3d5d8fd1a573e91cd6cce56eb710991de2ffebc341011d346fca908ec6eab9c1c3f06395 -s 64c37a39ffa0a841911e46bf9e73cde4cc28c9a139fe0beef94ec2e146b71f9c5993dcbc8dc50f5889c00a011f1064af90bc29cbcc4e4482745e618e44197ebe -s 1ceaf6b6bf350d8ec72e22b9c6b2c898c9b7ae8796de69a34d1e8286769d94d0314c11f280581b926b0607b9f3d6c32b47b29e88d6dd94a29fbbba903d68677a -s bf5e6cf4617b4225da1c9a536ddedcf139d0cccef99f2234244c36a7407972a9333573f2e9bb0f27b292192df67ea9499b35ecd286b7a0d6fd6f361c2d747479 -s 3fb42dddcf36a28caceaffafbc0eee97f1e0730b11ad2ad83bfdc25331e50c2d945b4aa36b93557bcaee518096a1c63d41cbb9bb5f49126551a0808a1966b795 -s 37ef61f13d4e9d7dea78824deec163190d41fc2f455d352d2497c642d8d640fe1606924636503725d761a9ba85aa976e2eb6ba3a950e1904d2f2504f1c839727 -s 0a6539fc17dc25cca7a32bfde2bc8ec56fdc36203e2d564d151d4a56b5aa3804a1eabc56b5404e4bad984585519f303807c66ecc470786a142bbd5327d8a821d -s e097f88b6e815b3eb7cec0f7b390cec4a463462df21da7e9b5acda47a5697f46bb2d8ea9228ef4ca1cb5451d7b24b469bbf9ba386d12eae7421f99cdfc9bd869 -s 16fbeac20e1813fd74adf3d4f10a5764471144364381f9e4d637cc9e09e59ab1bb3493af08542681b9e0c5b4194a22eecee5a666944ff19b2a00855e612c7508 -s 16cc9b90dae92bfe148fa41f6c305ac32c1d2bc5f1c8ed8218dbe066de43038d7b863f5463efeafbb06872044d048f0bb30ea563ef3e929e6b86e8b9228bb8ba -s d20a509254c45f27c0669fac6f0b496d18dda12f69609de6c47359e4efe6ec310d2cfb4bb2c8c6f8859a675773be54f2fac2868244131381e616a74c50ddcc05 -s 7337c9052a5087930491ab7808e6a2737640a038d67055eeec53a773d9071c9729fe171f4e6d9879968043c88b9ce4033c3a467966175a55e27c8e58d083e90d -s ae3d3c01eebd286d029825231b0f5fbe6e874891337c6f5973c18984f3835188bf5a6d6999a249e0f751a6d8118c8dd378605239ae43d927edb440cbe8c96bf2 -s 81e85915f581a9194573ce1efdfc45a5b531b29faefd4b841837fa5382a7558593e2f0ada2e0c8e8aab6607d9707be21b0304ec29b13fb2342097b113fe54a98 -s 6e8ce0d81fbc86284ffef63fcc80c840516cc27ffbd36c0ba2c014d333f0e08dcc5689a36655742eae19c9428d2c717d8e292881e27926779551db7025ce73ca -s e5657187b3d13cfff7ad0d71b0301b38f0739ff7a0cbce9bc2b7e19d6ee984792b21403d2a233ff88f46c72770cdef6f92a4c29b2b2919512215489e32fac578 -s 89309a8520b3617cbeed1f5c50334462e86b398809a4d8c143b3c3013ece3ff53745653d92f474baa6d2b2261ae81309d8c373e7fead8c328da50f8a2424008a -s f6a3071c7d726fcd4b747de79cfab9c7163c582dfbe21a2c931eeadda40711314a2392f6e98a8fddb5b7ff1a90934963180aea94e958215f3ab7d57d30cd0214 -s 5e5ff049098e914267432b69cb52c71880b2b5191f6c5fd50bb6898a9c01114a24158805ae41b0fc68ebd3c250d96360a2bbd46b104b30017c742b8733f8f26b -s 97a6c1ef09eb685450f4e1e9706de9fc7618ead94e8b24b81f5e61d8a05e22f2c134b50725a77ceb05eddc3726dcfce443b3607f8bf90e54e22332e2a63b423a -s 2b026c4f35e3bc3ef776d57226165b58285ec38a354305b7ea9ab50d8e1674e7aa694be80b492feefd491a6a8e117a2cf9a47937242008aeb5d6c37454916fc9 -s 8b795afed0377c527c7eef587efc0ce53bd4714e7425874c5ef497bf968e849437c3c7aae05fde705b992f974d7ced356848847adfe8f725baeed44c650fc0cc -s 24e2c6c15475f85c8bbcd952b002e45fb024c6b28c148faaf54810d1c198bff18476358d8c0b72aa0f58d40c4f6a60970b6329c1a0fde04d23fcee2a41e83f07 -s d63f352f8e31648ed8830ccae1debdcf5d795a199de3a8a966ba2d277c37ec4e9479f4269def58bbbf9ac689f02c1181bc5b3627b7c43a67c2932b6c9c910126 -s ed7871d777c5df8ecec0bca921d3c5e8da7ae605a4472723b799e160e12548fd0513f8926b8aa9b7885736839ae833b37fc1ff158167b072ed5b66b60e24079e -s 8c071a85d7badad1118b0497cacae5f81c9322fdfe0c6b8a35fbe31df65bc53f4968393dabfcd139483cfff6f3a4605acf3073c0a189401ce4d4225153483de2 -s ff6ad15e820bbb6e32916bb6dfcbc3fa661993f21c1611be7265ca6e1013a45d3b6e98d15b54941b80eeeb9157f3e82e697699ecd7608da8e8c039e91d764b06 -s 5d9d988fe0d6cd13f78dad9baec7b5a222b15de46e4db9bfbcc9bc48c092f4ece95ca69003d3688f0307741e2bd38bae22b6bfcd2f1c42048b81255159d503a2 -s df7fee87c6d21fed602153c8653b5cd228a06542382d05cb06cf7905cf33560bba58715225072102158dc7fb368a5530ad9ade78f3c786e9bbb3da229123e907 -s 0288d616bfda8a0278ea616aab7690a32507e66e10c3cc047d5e93a8f3e731effd0450fe5b37a7650a4c0c7e44b7504eff1f20fa327df8983f6ece2ba20b53e0 -s 2622de4a26b28873bd5847626d880dd85fe0ddc9f7c0ddcb81e54de6133dad82aa5488af7ba8e8b8cae922d18e8f6bcc4aa14545aa820ae337b6b11696c4e4ce -s 530b3dd69aa67d3459db97ce397b056242c9b0f629c8dd62fedbd0a6ed0e13ad7b3cf93df6fca98488a181602af0f9ad833c4b960700d5f67a613c644b70e21a -s 96980f14282be8c1fd2b741bd9082c5059fe5e989d3aecf3fa31c057f6535028d9570ac4a7e7ebb7809577a4156c864a9e9dc2a46d54db36d09190c085a7b15b -s e2a71d54bda1167983e6f7bde7f2cd0a50b3e2e4e5c127d359875d2af66681dc35420f5e21605d05e9c560c73314511dee1d64715d756e3300c6ef48a929c1e0 -s f6474eccca00472b3480ac2828e622d09883c594112c8f70a8f0170557293cbecfb41c259805846e3abe22848a56ee49dae3b7d69ed3e699ac4b3cd0c44ae8df -s 43774c22a51d5745860cd4d5a966ea724d179fce4615f203056f1a273d1fa1489c5f274d78a66fdeb699e159079a38015f25e8b110e90d6e47a2a38ba8cfb435 -s 82d44c41b004db297d0c3bd3f6c4f9c5af0584e530c4279e5bf01d12cfb0008acb056c00fac08fc4e5ba593a4608ef4429156601a0485b95dc9c756d422affd7 -s 1af79c2525194fb122a140203f63cbf1c15df6bbccfbbd0407cb0eb1a405a4d46c33670f2164cde09a9dc24e2c578d9b826bf5e9c533ee429c9673004489ae01 -s bde860b31c83ebeb778899a9f44bd59b512429759749982b1dfc426a13334869c9af982b7ce7aa90e1d5aa86128379eebc11ebc102335273e3e29aa0ffa6ba98 -s 30a863a479cdf99d74588ed15422ec14120afaf445858f57147c0f2f30de0aabf8b5840a709f8429d3b73e8c07562c253735a1d2c5cd3900e1df4d519dd17509 -s 8db7836feb5265664423b0ec5f6992169c0e9465e2d7a2b9a50cb94ea9b3096fcf7c6b2c88aac1833e1971bedf277726e77469af6f646f33390e40077d14874d -s 71ae47473063de654cf177fe901544c558b785fb5d040f8d0efc1ff5ae05f66636fcdee465141a0a3d2390c5c70130d2289f5503200ed870d6acb6b7ca05764c -s 1151ac46320f6b6f8def5177ca74c5669c88e0efc0e656f857849b17b130602df8b04aa2dabe6043e3d1bced67268b633565462f69e7db1a855adeed45c58d60 -s 958885c66fb18d0e9b9638e70320210e97e69a8fbd85260c11292f5fd7c6baec18ba8f4e2a2d2549556d05ee3528694536f7a81caa52a6b4b69324cee99d2422 -s 920fac73b7828cf34e5857a4fd921e05ab3fb5e014a0749865b086a72ffcd14b74d2c1b7c17d94586a43c6365cd8c83d4c80384dc2a78ed42b34851f38d9906d -s 24e6b525d046714eed34101947728cee85db9863621de6fe218aae1fde654e63fd48556cccc2fa88dd4e4bbf5cac62b9d8387122e4e4d08759fa6a232e698761 -s 4acb6a15560504e4c5ede1c59a5505528aa967614163f8627c4b125c622cef2bb5b1ea0db7e782a47c670da48ad19e67d091eed3728f503cf553ebf32ef899ae -s 5b7e7f4a11652437fdce72e5930497f2f40dba9d388d7d1fbcddf37bc0791d947f74f78f3801cfa0d9077928fa71e73f5d6233bedd06658df2e5ef798cd18cec -s e9755aff3106a6db3e43a7e82a294f16e0fc2a66735e03d92ce3a06cd345af44927ed564400e5964197ac47cd265d2013ce207c99acf1691e14d8e7b60ae38e1 -s 92457717519cd09fb3064efeb383645d7da87ff2527d80759955a55564e7f05fc809cab70775264890c959e027f8317e3937823122998e0b0eea39a8364b3538 -s 147ebf6d40fff2fb7870758cad3a5b961b7572ebb2ef73181a2a7a1a67f7e44f9f4c5b7a5c5ae7271a7d58badb66f3a1eb197f75337ff80479961e73a7225f05 -s 278f660a229a44debed706a4d443d3aba6b803ffeb18cd8a6aa82e7e82406e99d16e62d9bfc2d129220729fa3d05b3970d26399c52f1ab0dcb3a910bd81672c8 -s 1fe9b59470643295b6b67726f31ab477a9665f148522df1d528c5b4c7df84702f1b4d73dfe927bab85ab9666ea2873869103744223d445829aff745812705919 -s e4a1ee312c330a2ff6794d2e62a27b65617489f33eefa733ce1a52c59a7777d014b8b4ea4b3854fc716879a02b244f4f8cf05775a886213bac819f86ff565f54 -s b727baa0057e113410a4e0b31a5478f5283d062935a75c97e8022b4a37c89c11dc733ad92a0a0544317441eee7a2c84f7d2447a63f4d55f4fec114161700066c -s cff65a959c9c574df786789807d4b31d724305eb3592fe62f02b51521edb4f4b90d43c1481e28a3186c94224c3bb1c09623554f5ad0572b34da0f91d1995e5e7 -s 9d72fdba6bb2ebb712e6f94287f235539e1bd659874c36da1874bffadd7777fdf603e545b774cd31e035a1c893657712b3451202094c43aabab4583b51d42cbc -s 3bda25bed244cff4220445c3f3de915a768f6beea223260dacba6f68bf45303683e82b141be5bdc9fcac44bf26874a44ad0855f8e8f1f6a8644774252d1a212a -s 6a10044ed38ef70db4b866ddd269a4bdb10653c649cd0084c47a1faa4c1428f7ccce5191d3d8d22e34655fcc7bd42c8498f48c0443eaa0e0d3afd69bb4c66efb -s 01ee32aa484fc070cca4f9075962dee00cc4f293b3d065c72117e9ee8a65c5c5f906cf3b4ac36b0c7eee1282759d755db2dff3b791a79baddcbdddd8e889ab65 -s 3680748ee3c0747a255e615607afe80e8f2f59130ddaf0f68aa0d2a6cc6cfd24f011788dc1b2d1a3eb3d8fc04f30079b68651f63034df80db03f8f70d7219e44 -s 7ec98a0282a377bd7eba70fe516bed9e6ac1e9f294faba3d4656840490029bfd81b195c88253a9e9335d3bc5fda86a6d97d85b00ada310820cd805d710d6e3b4 -s ac7cf2b731baf15efb802dfed81e9615bd1caa616f47034a360b32d288da3cf84f4d3f0c2aab59f61a9b424d58ebf886a79198fcd53ef19e3cb57a28c66e9540 -s 84d108c4b3583df1f3a7c2953b808710789cf87687ca51b0c8db766984e7d645927ab0b012c8bc5add09f7dc21835ea5e8c87d481b38254a3a0c634619f90c4a -s b2540f267b7c2e9b2177612cd7d1002a23fe88c37b728f53be511c5c48c3f1f6f25bcd1e0c86eb739f6e542a3a4830f81279e009d78c551a2cd8be8b083a5799 -s f00ec1fb2bbf4e54c9a7690424f489e92f48f793c9e4e31c9fbbe75040d64c6f91b64b8ec532eab374edee51f9076216b9cef29bcfad80a538f5a323a969de09 -s b3cb134455b2c158e0f5b472c68fa4f703ddfd4233e1244881653c5aac6b6574862d6ae8cb33c45631eb84c2ee1d55d694ad3589049d1787d9525aba72b2e657 -s ee80d5bc794161c71c5681b96cacaf57d4d79257fbc8e73a84a647b52687e7aef8937efb06436cbbdf77ad5d1eee729608392977292778395aa4eae448cc22b1 -s 5eccfcf5e0f7fc79bf6d6aa6dab0d3c7fecb706be17fc2ece2e172c4828acf2fea70719e21a0c5f5028a29f7daa7fd4193684df05d03a24f9b69ba6ac342d7c2 -s d00e0253ced7fa384a69a507fb58c864d2de4419c6071bf9f5222a0d8f903da4ddb28a22ae9475c51b20887de1b63db6d0e958d79f72f807c7ce5a79a5edefd5 -s ad92de3cfcd8522b79ccadf6b37b216b52aac9a959d7a3da08aedc12b57508bbc4e47cee4e28837a012b06b28a6d5686afde0dfa8cef77c9f3658b01e17d4c4f -s 323e3fa38addf76b2495bd58e7e0c1672b5febdfe634be09e83643ea2856c90cb49fa0513f9d5adce4ee59abbaac115908b2eefe4727e6422bd0119f7ea1daa9 -s 7787b6ade92aa72b2d46512f01d7b89f864e552ea79c0b8fb632e77ac8202def246beae600cb989d55ada274d3a895b6239f07ac3d3e0aa8216528fffa1ee71b -s aa81cef14e960e5e76081aaec029d2e359447b7376b241a891e79377ad22f23f56ed5da9733ed1befb475dd0a1c96d4e7580eeb64e2c0dc2bc24ad446ba48cc6 -s 05c6653f4ec0a045dff200afea6f068db17aded855ebb74e270e90c029c875dcd14a0c8ca37fe8cf869e293b1e8d662fae4bb6890318bb750a6403a12a07f5cf -s cbada4d52bcd35b2bce380b1ac67d3e28b4ecb17e974037b15b2cf909ae76919a24e7ee9d84374b9427d9de3776c2c792175b4555cf1003c257cd5a2785a258b -s 37c3d82587f07782dab2f0e7454451f05200a4e2af5b39e857fa1af29927bba56a0770a5a175390ed8bedf5d1d965eb04d1cf3fe7d755584300f3233928f9ffa -s 3480beff0d171a19369d7504343168a02ad84c6e3955386a676f1af6cdc5937ce1ec027186c6065837306fb237add09d512f5dd7e9559ba58c59a3205a5f92c7 -s 5bfede2c9acca732749176a13e60e59d3933c45f974a7a2a7a5079e4d2d783a6734f6e303d0a30ac5c9c0aca1c70efea631737980fc5e29120b026c6c3f571c0 -s 3586cebf5f2cfe150c0d3fbb5dd0a0f3cc8169b0cb376c01a5e5e602b35369e5d660a47cdc08a950568b2e2d5b1fdb8f44b83c8bdbf13703700303317c562b8c -s dad67d40d187330459f0795aa9020fe89c07546f68fa41c107f1df489097dddabf0372f9da3885de4d8201ab9b1fe80f83aa77200ae66db3887d7b73b7d1f41c -s d507760341ade5995774a9e7e4db48f0e7f7c6726a3852cc91da1726a567f537990b67edf3453e8211b799cba46c0b11f764a6aaf1a466c8d3a52b58b3c0f2dc -s b3f42151a57087de234ea93a479c27160c5763edf4e38b18b26338d3c61e0be6c84907dcd774039e33f92d5e1f1d065321c2a8f664683c30cbfe9efbf2b4e463 -s b0d4cb24a0caeef823c860a352ff549d262602b9d14745ada02e09726359d6c5d6a0549cf37419d18f053bea927c01b958e9ee8166f538334886e7a9ec8ec5fe -s 322b3ef09a8562611fa60b731b1df5a85e3cfd1a567fdcbfcbe52b0008e8d6fea0cdc41995fdfb561e4d89fdd3b36812a6ae56f1c310aefdf285730abce4def0 -s 15743d172d178abed01a83431195dcf687d81038bc63e47a73d01f80a0c6f55d34da33a4dea12a09d7c37c7e44a55a069e5d265f77f18cee1a10c81fef240ecc -s 1e5cacd69aade77d8a291c2bfe7d352b36906ed1fbe20714e050cc3cb33c61ba7fd0411d9b7e9e9f686dc3819e3adaa794ecb6e6612acfc24a98235f60a70cf8 -s ab25083f33220a678ed69f97c00f75b39317bc8ea985ec38faa066d6fc3e0ed5ce7af8aa6be85222ddfb015b32cf868d7f6af2e33d5ce1c92c9860c4783f6917 -s eceecc89abfe1d5658bb86d9145f7facee4feef8823539b6070363362d5cb320feb0933ea226c3035b547df622b6c869b27deddc15de1c794987f0414354078b -s ccc72e72955e4be1f0e5bbf028c745495a47062b7e3d8d59dddf00ea3d17c9e4d75cf7088abdf2593cf4efc1673a7183f181da9d5ec14f5b8bea348b81ead353 -s d98b8e47821dbec2584e180214f7e0237a44fbc1a4465425de88c49d3a287656366c216a9f6037bf1f2bfb3517faa2b2cdca035a40681210d05aa4c225dcee41 -s de4c01dd9e662e5dd960164b3840a21f1364c6616c371f2885f73c6a85b224f490554aa687cedb7c32254a33af233fc1c714bbf1751a7902eecdcb7a102baf16 -s 3de9ede5422020af315c4918ecfab0f90c3f8b12a4bde83c265639ef033798a1adc0a58c1f277bbd79acfbb440923af234771a8f5f0a5c6d59daa1ccf24c0322 -s 7a714e5a1cd87ed5ac6af35f9c389daff463b1d241461c3d018eb76fd689501b1e1ee6419e6ccf3d67a91e3145e7dc121dc884e69f68cc92e2c34b972844cfeb -s f6c8e87c74a616ac3bb9b73f35fa48ff21a6f9edec459f0677c56c1d435f2b75718aa9b6ba5a0e4732f77e711a392df751e2894a5e5e86cc739e0735158c7858 -s 3facc1de341122a3d036d0fd2f6f5532dfb2a9cdb6b08d9a6a0e2785705a528f0b872d12ca96b41e13b005007c8cef59bccc2599d4e63f964d255ec1ad6772b3 -s e6dc6635cff0c401b5629fc01896f7c6ba86bdfd486213c2edfca8e449851a90587ff2ecf43d4a53ce83da106b040e459009bd2e9c4d1f5f6d05a0a31918b9f9 -s e6c3f2861fdab8b7db8ad96f59cf4f59043288f6703fb1d3d45a72d8ef8a2a0c7e35bc34262c80f9207c6df05a7149cea953f69eb439109ac686d9c824eb3fdd -s b36fb3c4092ca68f816d491eba20252416532562691346319e87727f59779ed8c9a24467eee1fc711de586d5ebe4f430f62d1779c8d203b2a1e7e3a64ad38039 -s be8bf142af7636cb5b04bfeeebea4592280c33d791d7a88dd5c72822cab7f207248131c3559ea76fabbe196647c9d36163e295718bc8737a230bc6ffb8ddc088 -s be0e4786cc53f5e1a0560ef4626bab156e938ad657a90a3b6f075edadb19b97308cc7a486e300df23b43978caa1c13b54a0186481003041378dbb9935f0b4c96 -s 95f58a41003804f20964b0460c28dfb4cfc725f7b6184601a4b971ab350a561d7291d425e70ad98d99f25b0a8257e2f6382ff543cb0a100922d5755a97a94052 -s de23acd4eccf8909a4cf3bca5251eb61c17ba3f26e6d487c7b4cae88c97e1ba3932884ef9a6163cdc95aec36f11519e59bbcffbc965a941088d15879748cf03e -s 452632dd4b2fb6a282f0a97e8cfd452fdc666ebbaf33372ffd39c221e85310acda53f46a7d1c0c04e86b70a86360dc759966de5706b43a8558754cfec77ebea6 -s 28a24f23d65301edacb771871a683f4559b03079ef7bbe642585c0f2dcd6c9aa9a26f3c5d521d1f758f1ef969c6576651f87bcd6a5060298798017b7b9b05897 -s 3fa28fc55410bed1d35f6840d0f3d97673ed08f555e5de965ce7eb322d2621bca9f839ee1eb8c5f571f41948c426aed9f1aa0182d8ec94aa9e3e25b8bb69cacc -s 81357390bfbdb0b423dd7e6ab79c03f7a9b7d6c772e5386009597c9b216198e5a15c455f0a5b483b3b91e9898a25cda0360a0bff8477fa33fad659d4cf092c1f -s b49d14443a28941b20a48bbbcdce6a87ee3daa17d0784fcd2a6431ab92689909554138e4ac4c8dea4aa04a248b7a0191de7dc60adc364f05ec6f63d767fad78b -s d1d84beffaa44ccb2e4e3ae8f6302dfd3404764454e433e70c0d9743ffaf65f49f317a69b9bab85763b332fcc9037f99aaa544381ab8cd6f3967fca112592bc5 -s 9a51a2d6679b33a527879f989db7a941072f03dc9f4b0ee21e2b869fcdaba99149f855281991005674cbb441037ac7539da35ed0dff64ff6c18292bd1ac3c400 -s 06fd3c6913968c6a5fc04ac636a5a6154218747dbaa9723c27c369ad3588720c581d68114c8f1735313053d815291be8d863e39a1455e46ab49dd3de05ba7c76 -s e9eb67c0322ce3de7129960a82e8556108a0547393d647a8e5b9353359760a5c9dfa5c6e6b01b96592bf97e33dac75369c3440c489283d7ce87a75ce755f6b3b -s c402d584b4396adf225d2b2988f0d2e1b4d127d0 -c 659b067668289a4de83f8200579fa426c1a1af30c3ef94a117aa89ca46cf09b8ce37316fe36a0d2356f2e47c602eae01fbac907a65380080966b054147f438a2 -c c928b3e01c69d5a90e0d6b0e70234a6bd64a6d8c3f7baf276f2d6b39c54e2a88c2f6d929810949665850b85ddf8a7999fae13497cdbce29c5c8618808a311da8 -c 2f864f56b4fe57a7030bb18107cb58194aa93b086325cf539d7984cfbc2bbf4fcd439a15d8c07017efc8abb11551d6a84e6a5d64c731e1914e35e670a1e5d461 -c bec2174e3e5223a727de8b16c4c2b8eee902b00ec3d98491097007a4f2c4f5248ab7d1873cdb8de789d002a2ada4a38f1d07b9435169fc54b3394a77020aa09a -c cfabe0140ac5eb2c327c457ea01e555de53b8ae1bd07d17111c9f9c53a8f9790343d975b7925e95c593bdc6c8980e7afbb234b0cd92f172649fb3fdcdf8bcc43 -c 0a19d687cb196089e9316277677e17dcde49da8e7eb4379d597db1892440ee9aad4987d6a1b72013fd936dcc60c4cf32151245c7a7999cf25517e14b13a5f6f4 -c 1bba7b6cac6b3d4ae2a857c1a75b1baec1ccd075297a50b29e9071ae43b5bd9d6e8112835f0e8946c840b46a7820f38aa305c305a2df192c409742361866b08f -c d3031f21fe27ebdce4ff5eb601ac38e7f1ab5050a22d74e3bb0e362926deaa1fe65b239a18e025e08407003a703375567143245a9b1273ad2aa113ffe34f0cda -c e40a8e6640a2c036e6d43501808856aefb49623ab7221f558493ee2e6c345b654e8115a2df3b6f10301d33e02ab1e23fee1dd2260ea8cb06a058cd3794357006 -c 21254f8065318b5e35d577215d75972ace098f08f77a2b3657915890e6ec43bfad95862861ba79ba21588f4c584be30694ba09c0686fe3e6ef37fa22b04a66f8 -c f98d8622006a8e8dfed148611218de2836449be562e4af336b02337148c36d0d5463d7028c20cf899be7771f6a60bbbb442340b466ad2583d832ca435036a768 -c ed6ad40215863ea02ac1552836e3bcaa8cb9187fd60e362304a31d94d5009c4ea30d71f78a889592123fd02488c95b7e5656fe66fe44b10b10abde74b4f66fbe -c 8b04109a108246768e3e9700c72cc176f3413dea86ca865b14df9f883df2551d1b3584ac1d3b34370dd0443f8c70ece11f3c26c4adbbc4e33dd5d2436e2e0d3f -c 96917c6ab66e2247498771696f4659351f91059db643058d3c358046e07d7f25f9e337c045ec499d98adf8099042662d13f3ccf72f76ca53f710299222029fc4 -c d206a17c1c63ba9cee90f275b54c2b7fca0097cce1366d848f6c5ef5585a1308879b556088176d017e8ba44f427e176e39310f27e606d574cb68916ea07e60c4 -c 472b1db2848bc8b82c4a104a758406e75d6818481208589354579e50d8fb706e058aafdce2319fb8c4b252ecfc5dbb15053412869ac2298459eebbf10c95d79c -c 900f8b54087b5f2c21acaf54331b2be94c4e9575c61d1c7843c5510fcc8d68b3612e71d1a99cdcad4b396e05ebe3e57534d1fd8bcf4bc8cd481d84188b130647 -c 28175f11568c076711d73f7b531fd559d9ee2bd586c0d532bf731a7a62bcd0f0cbfc46fd7361893d87906d208b3530513f6312d75f3d1d2eeb592631c3c8e38a -c 5495e27d91bce5d7cefeacd94f7d81c4369905109b9b4051bab38e62a03958717bd6a631d12ed2f42fc32e9403a2115348559fb56309ef6069648c133e5a61fc -c 38ba686eeebfc0bc6aa2df9907f6bb9f6b8b2a9c817454a732b20acb2a970b4be33fd72c4e081fd28ad9699cb49b230bac38c6da9e2aec8ae8dabd1deeb9da07 -c f40721384e3e0efbc6210f823d9fb63cf84026b4c2fbc426cfa2fe72bc163a29a4c5505863e371b724dd3cd8c0739721d7392f2f0e86da6e2958926335ddee3d -c 2fbafc1e79e3113d3bed84baa7765a421c316e097156151850870f533f63870faad462d2c98c8eb4f49183335871ef7ac39ac4e30224fa534ecb152c24d881e9 -c 32766668a1f26926a146ccb475e2b3773de4a4bc1878502afdbb82bfdf84a69ce5ae4d34e730dd40e7daa8aa6fa9d3b886d15aa04a840969df3311013c21969c -c 2cfee29f5ac8cef13c2e16abaab7ebbbb5f5a08653ccd6a11cfaddcfb0f3ade2843906f7b100da3a9fdd966cf901157cda759c9db417da11440c79fce7972ce7 -c cf603e8864dd4136b36dee31c2b203fcc4d2e28ac818058000360df9fe58ef17950460d07bbff5de659f1c491e24aea03100d224fddc4d2455aecfb4831b5131 -c f6875812f4cd524ad1e0a8247bcc84e63699d90b1657d396a9ab5197a878c29d8c166d4ebec7f8fbd1ee8d53dca5ef61ae5e22e5cffd3ff5f92653266f293c98 -c d2206eacbae843e6b2351cc30a67f01c97d4061dc271cdcccb0d944779831eaab13fa79c8ef545d77e670014 -s d1d88b5e6c2e2bd1281a870e148ea599a7ca58d724aa0290d41daa250e9a34963210ade287e48372889c35f008723176f29ee3b7ab15017b81199368010470d8 -s 8536c920afb332919c7ebcfb29ae9ba0958610b87d3ec733e120477b415025c7acf267d6fa2ec7012aba215fce1b906f1497a449353f09617e88d55b817a26ee -s b7bcefd30522381f8d46059d879a6840a553b5f85e64185c1e36ea2bf232e7ad1a28923d2470f66d5575cf3212e7e964aaf09dc691f58831addf8c30cc15476e -s 1d938dd0757c2e9d9729fb66e28f68ba36bade5c -c 695fe1fb2282210122726ab82ca505d270e9b1703a644b6df758151e712ba58873cef9593325b9a6a46a7887deddab3b921bba8974f76894b1b62e20756616e9 -c dd223416 -s dbc7663df9ba72f3d95fe67afe98acaa62d770bd02dcfc1be2d83d0619d8d9e7d1b79f0ed3871a36b70de79bbed6baa33f2096366483a653cd611236b1136ce0 -s 165ab03048acb9c69ead0b78d61bad3cd6444e759ec8e3b3aa65cd71f72d64357aec42637ffd1fa5bfde4f584b62e068ee32014b6142061fa8d5f7878fe137bd -s 44760ff6aed1fafaacc04ad61ebe1c1900684b9af6a0d47b07641305d8d097277b35aeff321788c050162a025d5822e4147427a2b89e323d4f2d3a5dd177c3a6 -s 5eed7ed69aff365440a24beb6f21df180d271c422a4ebe1fe2af4ea2f914bd8655fc012cea806a3e5e9094dfb300b3bf2d2c0003a0524def2c5c079fd3f04043 -s f261a5f2f0d40c761eab2f39fb5511458e5593363f9a6c67ecfbb948fc72c17d50ee07a9689d43782a53de13e3da63846d3ab2f5b4c6ab9e30b896f8788320e0 -s ba7100dd5356e6a3054ca96c4c715c0831bc868d16e0b488894e870faac687760840c9a0 -c 6b77271a61a1bc27267649cdbe287a3b01d7e0dcca1d5c0c1361bb1db9ed7630d4837b506467f0ea4cd89b5c93e619957381f1d2e4ff285f19be897d0916ecf0 -c 8a30c801482a22715eb12e2aa990ec5fb878741baa69e06889a7e2bd57241c0073f0308f53f850a1487ebcea64c4a55437c605bb1ac32b0130aa66be +c 0e4993f7cbc386d415d7d0407567d06396e4bd324de5a76d8414559b96711f5c8ddfbcbaf0d130e23e7dcc8b +s cdf25c4c26f4b7dcaa8702eeeb6a5d37aab9281872f6f7e1e10c8cc0a1ad5aa440369ceea53a4f3a86227d9f +c 7af69b99c4443289c5ad85c4f4992a20f223368960294ec0d3052a79e0e5c183737e0aa92d498dd83c7b658f48843bc93fbb7c152b9982b5d61088c1103cf2bc +c 6e36d262 +s dacdff94e68464d4cd09f1f2afc3ada90ba3744319b0f83c1063bb149d413cf3383e4398c31f4116197a8f9c +c a3e4ca5af2011222c0f8e51c567de892eae390d09dec0efd00b1d77e125fcec65c7de448ca7664adac04e2f45b57f82918a80c4b5165ce6f827f6229f9ca123b +c 1c6bd6b8adc06f23697e52c7a963341b2e26ff9902cb0d6b6e0ef2c4c1cfc7db94857268519cbbe0bf8f16a03fa165485ffb6a2cda60d2350068976e14ad0361 +c 69383281d12c8a8a37ae7c24 +s c43f26afffa14a9ff749755a1c33ac41983f4d7ffc4a71fb513a3268bb03573e59c447d5b1e13a96f882ad50c49a92ae5cf97af6aaef07a025b291243039581f +s c3ebcc43ed3d76d6a6a1601669e838566c28743b6a0131a51d61cd5f3853d0c3ed01b8f7 +c f2dff017e3c3521dacfdb72819cd432ce18f6a5754a18cf451918f2c6ddf83b86d96cf1df80f33def290fb62331b2d940f044bc6ee47dc88635ab39280326825 +c 461039dd152aa6e7a1f393b89f4c5fe55d3b8f9c3e1f1b65be8a28ca2a3e8f2dde0c89f2d2e05f486d87a70b406359c8f50b709606e0d0070af84d5865a8d71f +c ca1a25b0d052331b821945863ccba59af5880ba72e5c3efaa334859efc808d6c8da395e2ee85bded136702ca4ee45185e4a59dbf63ac39a306e2ab8c274d1b49 +c dc365f9d2fe612e534fed469704a6c085ecae1af27c579fb0cafee81529f74c04033ba9c +s d2b45a27a22c171803d1d4a65200455e739e6deb57c9df97e6f541d2 +c ec491a2793baca7f00c184af3f3fc4ebe1e39f336229a4f324a6c503495f04371cf5f53b980906a72632b2020eb4ab4742092ce3 +s cd04800004f6897824d5ae35606349884b159918d2bdbbe0a14b0eab4ca6e7cd143f7c731ed9adf067d8417a +c b4470121a42be25b69a3f0e750f7273cf84c58aea53ee296ba3fa50d6a4f4328c3f187ac1168e3f550d764859184a43c4f469aeb99ac4ee37038fd0bfeed8e32 +c 4d0c159cefd47c990f2f534e1a2b5b875c4b09f34669d5be543d99c6ad624591896076a265b3103ac8381abef2094940a53d318dd49dccd955df1ffd1fbea9cf +c 0ffd030162b0d25945274f31cd5b7f37b37ea30c19c91d182a02de3d857971d7c8a18a5dc4ff4b686d7004533e18beb67d25617ef3f63de5dd8e8b85b34e8466 +c 803d9baf32488a8161a7eb2740f23623126d7aaec93edfd80cf22a8c9cb55feea4e7967640fce4c2c3d99275c86168a356e34656384890f8d6142d4992312978 +c fc725b04a1f6e253ce9db94af2080bd75b1187d8bf45244ea648e8e7da665010156302c92014a9c4fa914d9591f546947c669f7a57b20f80203058c11c0ad494 +c 08c833b82f3e49c62dcaec52dba34621a56794e6ff3ef488efbda5decc1408400e1240051c4807f1b2cc29e90155c1b212bac336a1542276f1d9370a2a5f9fea +c 77a754e8b802f2e182fa58db837c7ecfdf9f7ddc573c152aa98dee67b2c15d12d80cec5c3bb0fbe82a9e6ab17516d8448165128204c429c863681c165ad84779 +c f417ae8ead3cf16d926493ffe203d9fa2876bbd3bf24012cdf865a1371877aab14dce67a017386a5e57b6188edc14088e4a70285ff7016ef46dc5b9ea6a45090 +c 4c2ee4538c77c44dbffb87b21ae7fdd0df8e8e3331bb92423e9b51f6f5590e072c7567d3dd6570e8f3de97a412faa0454de328757dea50c4cbf75d0d814657a2 +c d6391b2eed343b45800502c5b2962f1d2ce8326bd67a1849b1924b27b5c6e1338eaec9d846d1fbcb5031cf79724af81221e60832b9321f39a6ec9b7ca1178f4b +c b9696827c063ffbfe55b9b394f502684ada098d29eb553ba77864a83ec1bdbaf2a5835ac8af93a2c946772a9b89bef19df21a9ff6b895d0a77b28b31e19ce0e8 +c 3074d7e9a79fe1ac432cd033431cadd3e5fceb08514ab5f4d8b0c6485c75eeea44042553365d11ead77c4c623b372bd687fdcf3ec54c1464fdf41e4eb3e447a9 +c e9871309dcd08175b9d95e9f2b9ea7311ce9bd6e15300efa1303c4cb364de5bb55a4d80bcf27cd60e36961d2bedb18634f73203fdd29f9b5193a7e84afc5e56c +c 7efe4b104f4b2a6a81b744ed654bcd45f1396aee97a8ab996ed42968867411ed5ea32686e15018815b4828102a55e99600173e823d9c4c74547ae356f4bf93ae +c 2cc23e32782b1ebd7697faa412e0422f15eed2fc526f6b25b9498c315980c6abbfb19d3628aa52646f541184bed8c6774b254d6ce9a998629c9fb44bf52d78ab +c d15475a875a49fa7a3c656da9e2428671a9ec2f1af4eed3c9cb5408d729304d8c5e36aef372126661189ba1898718099cfffb544888ddd4059cb09103e61421c +c b821cb4d082ff94965e2ff3583286874fff4a261fc3b98bfa29b52f254d8cc5a5bfba14c24c3d4867cf7c860a9b6e64f3b6b8704a6edb5c8952618a8b1584600 +c 83f27c1a65e44ff859cee945306a5926be7b2ec836c5785cca7d2d574570e27e573f46f8566fe5d2ef46cfd90363e8964736a9bedfca8928e01d0e2637ffe307 +c 28a3e0eda5e193e7f864a968b5a3eeb53f214c601bfc73db4742b3791e626e22bd8681c6d63e9ac0c53458ec8af306eea96b0f4d748c4d2e8e47c5a1f514ddc4 +c d1f0dc8f869790d257cd21e8897edeb4dc863e8077edbfb8ed96d28a26627ed1294b911ad43cb1217f20c6cadaff52378a3e59d064bad7fbeb921019670dd010 +c 941dec9705c668a8d246d19163e6685417cac4cc9027cc95e5937ccfafae150e07644965c7ef387f6e837606843d3fcd4a06f6903a498edcc5e6ab11e9edeab9 +c ab6e841dc0e0e8ed1ff97549e3b8947889be69699d8f2adeba032a053db6efe44720d24b0b8046723248f4df4d9038072c747287cf9494b4f039e036f76a24c0 +c 4116261dcdfa78217254307959d8c8a408c0a26864d50d6df9eec5c14ae293098d70af71ed05b81ec5bf2d83bc5f4550495d06b39c1089767cefd6cfb4899c2d +c e5d56d984916d5a21e2673ed462b1e101bfff5040c843ca85ee19ccc769fe4870009ad2baae935553c19733dc24306bef17b7e0c73836be2d1e174064889e73f +c e7353e44b779ab7e79ccd06274ec0059ad7bafd5763ea4bd1ec3019686d3aa6d7cd4b4acb7b7b0434117192e11868fb931a53e3301bd9acd239020ddf4d7c1f5 +c ce5883310998c036ce512e83b00b42dbb34b94686f2dd8bd4e3893b77dd7b49e3e70f40510e09db9d41b0b6fbfd43057b930f25eaf5a54dbecab8302654be6c0 +c 9a7f696c05fce0a60ade6047a3479fd0d10109bec48a4d7b803490810ed3ea7b +s e46313fd78add8e263c3b2f200b95cc851c90faafeabdd830100a60cf45d386e4d194690450b31f5e4f73c5eae97e7b6dee0798dd9ab3ce23907c80429316cc3 +s 027bbe6b69d8f341844db4fb5e80d13306ef93940c93c83d81c52fe4961d92ef5705f16f458b5fbf0e5d0db2f6284504fa869e96ba5249d2c446a96ba6fbb4de +s b6f7abdda8ad1d1ac0389dcefa9c49917ad011504e6ed01c88abc7c8f339a31f28b1d13cd252750b1c9849c86bcdd623bb986734eb5c373b68cb872ed771e152 +s 75c32105d4dda3e56e77041996b3075a2cbbc0dacb7efb1f53f45da754a8f55197f7b634b7fbe416b8a4e50fbee1d63afa1ab224217552917f2696d8fa599e54 +s eac275a7fd6bd80fa05a5283f93a1742 +c bd5012628e5db457a8da19802024c11f64e81b1909dac532924f5445cb207b3541ec29653cd35947cd60b21af3c22ca8afd6581a1df368cb1e6ace2e861e98e1 +c b3c9242592293b35b6ab6c788c713b13f658d42871d24ddd5983570bf7aab90304625182a092116f2bd514c3a37477e38aafecbbb4915ad5e51ea514d4bd8df9 +c 12442511921b65147b52e5c6f7cce1b908c83df1455edcdc6fba94bc2c68680480aeb1d4a4951fa22311c409b1362553d239d1cc3f53566a2763c04b630ec016 +c 7c7ccbbf8d61f145285893005b82d216a990e960e86aef42d78777dec6bbab80da69bf2e3b6234637fa6395b2dd73790ca1a0ba0797f979fb274f97693718599 +c 55a1773708e2b8d4d71f5bf17db3794ef10490c8aa0d852c1e6a277d0cc97a452864d1bef125c839ffc7917426da9e02cb6258d759dbf7eaacb583450d812abb +c da0cdc362fb1b77ac4c0ae4677a41475f36db3ed4e2e36f1aa0027ed999e7973067cf819ac2f1b0559ad1522420ca37e49cfb4089b93c35c5ec63d4e36a9a1ec +c 11cf15ee15e52690fac134583a7050b1d901711dd999b1daf520e726476e80bf06ce6c4b835563b43a15013de9fbc6680c7acc204440c5b515b7ec3f64ad7c45 +c 6fc1a1e47ab8853b72c7f3b42e6cd7c111d0780ff2bd17954f0016dbc94c2fc78757ae8315929af24d10cc7d1e5332264a42722ddc81b6da6d57f56445d9725b +c 88e4b5de66009a90c1f0097bb246c7dcecc1b4850dab9e4215e67782ebc8c938e1223e28a69bc5335737ccf805153f7cd17a0080908945f7272d25c5488af14e +c ce7b7ccb344ce7b463b40c365f57b724d4b335d426d7bd855ddc3a2e7b6cb5ae2f807a59446c174d4070f6312ceea9c9eb94214b2ed25c466c81c2319e44e976 +c 1ce641569bf6136fe5f06aa1e4280b7b498419d18865a6fe811bd678f027e8ceaa6cfb5eb25040bd710f0b1ea67ee3015d4eb201092836c68cfef91fd829a16a +c 7bb879e395e435f2a744eea41adc4c859f7769184c5586cbad5db9d24d6dfb8fcf5367f21799262aa8f6455c5a2ad6caf2ba66d0b962c04369867a51a3d31844 +c a87ad84f624131daa88a5eb40fb3b54e4d289effbeebb1da2ab1a7f8e6dc4d3b98395d632b24627ee8e8743e6750e996be977050f357c35c8f5866f7a19cf19e +c d4e853cc3407cd959dc9b2a5650ae17b4002d38ee8954f3d2c5e05492123e7a7f8e5ef81a7de65b2314b10319fd592bda0a71ee40336e9c3cd2e3248a9942c4a +c 244f4f2419ee8909c352297096d6452f051e88c02d8ee142a05e75e273a7450cfd77b2350f9f9c0f1a2cf226cbce00ab1fa2ccd19211c6a89cb2f3b430b78e33 +c cef99dcb766eb8ec2ccc3049dd3122948e65404beac9a972285507b863d48c8289e95f950bb00c6a8dee5b5c0fcec2be738bdd2f8fc874909eb25f4192253d55 +c 56aa5eddd34e810eea1fff70e5ae3626c597e993e2ea8e55f519bf9cb6765315cd9e1ea2c79fd205cc4c7e96ebc3c42439c4d9382884db701accd8f35c09ec21 +c 632c8150b07c24d28aff868aa789d28e1d33af4ca4048179e77b5cfdee5e7b95c76620365ae1b870879d2ff26929060e7efa336576831d2c8359cd22f7583f5c +c d7937c156e416073167d1c07bd1127feb0edcace45b118e7c19c26e6c7fbe4df77e6520b18709d593519b19947a44a24b064da4a96d136a3179049092f09efcb +c 05189e3565a6c3ce38be85c8ee3181fb4940e5e1e78194cf1e30681fa4a8184e469a913a +s abd9a47ea2ea98a01ed3dbe0c895b71ddbe770feefa59c624032908d181198220516762bc082af8a22a0f0253557e9d5bf2fe88643dc6927f33df08fac229b96 +s 8c9efc2d6ae913b5f3805d5178dea0f9b94d22558696ef3f53cacf29ef1f7d66c6065235269cf8b002d6831ca77ef2778f950bca210ebfd09ff82ca92935f914 +s 450bdcdd9f462a6bc7ffe3e745585a10a6609c534dc7d072b760f7e21f9394d40d23095193a892e80397f039012ae014cd0ea790cffbd1407102a37375598341 +s 488c618099e159e140ccf77b07a89780130d344f00d916ba5f3a3d34463798cb2d99d02c580362748ddc4153dda86ce119eb81cb44e16c9068a5de207a33c3dc +s a4b0ae55ca13f76412bacbe5d671c388c40ceb5fe90935c0e7413ab968866da68c978baceaffd733c449c59c046bb2c3ed8cccc6229516288f6a674bce304882 +s 0a0280d229cdbbb42e6f50831570366037f1fa3e1573445648752a61f63ad259a2f297589b499c203e4792f0819515bad723cd20c262a1f4de16a083c016ec86 +s 36f9e4f0d8a481185e82d3deffd498e6f74b17f2579c4bbd0559f4c19f7295e1fd85815199b81f5cfdbd13f0f776acf5ef6b5bb9da99d54391394745e602ca8b +s 09006cefe5a4b112504884d54a5dc5d7a800cdaf9a1c4719b055e5379877921fb1f7ff766e57997578e765eff9d2126638979fdd7ff5b031a638c24e7de55c34 +s ae05ed557830223d73fb62a86ab54e618b227ad09283803b4f527fd513491349b8291aed02e039b4bff7e22c58dfa9ba9f0ff2f0836b886c71b07a02de1316ff +s 73abae9a1bbb7041e283dd78c940784e14022550f09d51b27739e70c68f82e18fd46afe978f22cdbe1a09365a461ab55251d2469c89260263d8efef0b14ec448 +s e31a8c450065329dcf3830f461faa14dce5c2cd4abd278e5dc5c2bd6cdc1d32e730212379f6aad9e43acf6c439324cbfb557200237a9a17b8299e39cc951675c +s 69091364e7141d3e354dc9466d59e0c64e5bb31fe644cd6a1a9cab96f9482a8622b6587665916ece7a992ce6f92a297dccbf7fdabb6ff2b33dec03bf51d7ec14 +s c8ef43326b9b6c797c4816e114a5db86dfde5cc0eda61716aa264a9b91a21f21517760ba3e883d4ab64ec04e2c542554ef232fbf72cfe70496c882105a4f0139 +s 587abc3601e33e701817c438184aa42319a1be81f838e35fca39144c66a861e627c9fe82355429acd1039cc1c6a732c68642cc3dc6e19349f96fc8c9c089af9c +s 14e6cc9629eb8943bb44e06f3bf333da059c6598eb35f3caf46b4f85d588e58cd18268c10f5c2debe5c5007ef10629d9f9fe78a119bbf47f1e2fb63af1560b88 +s 912b7b3cfc13b0226094fdf3c04221c76c51714ecb720dc744857a155c874c7aeec923b3ccedaa52729311dd908a879a40e9e271f08e4910b4afdf211ec7edb8 +s 78582180a639d7a77642bfcdfd4102b29e20e0f9829f382abf09ecb1ea8d053399278504543a8d082f1ac2c2737f8d1def0eb93a6f7ad5ee9029122eca63749f +s 5ca0079a256068b6b09ea346ab8df31402bb3c69cae51e5763364a37231b84e2597262ae5aa270fc4a4f2c74e0e0958b72fdafb0b03b7f0632ddb0ffa84da9e7 +s dc742ad4ff619575d310deceaf62e15591f4e339491d23659580aaa267a6d99dacc49feb4a0bd3970f193fae1c836e92b3a388b2b07a6cbbbfdb02526f2b2048 +s d09a11343bbc787f1141e9089113d41d786b52dbeb3edb5077cd63bf77350ad2e0dfe8aaf0f33617a5e9a7ab7f74493c4752c542b323f4cfb02bcc1869c15f73 +s 2c1da50d9ab3b74b0425a9d744d556fcb8c13aed9aff71b3cf5fd262419d05e782906435a822ed3530bd69249e434309abfeb5a33b30c07a5a47010b8f2ef005 +s 17990e4d954983acae95d2ad9e9b0980829cbd87 +c 394426a91833dfe0777f55f31ddaba92236b99ce251e70d960c6f2e85533b9b630446c79630b15557745d0572e8de1ebbcb94c2f9f64fc9da7208ea46adb6b7f +c 3b73a0c67f4c9c0c23e6d7c57bd0b082049a7f988aebfd8cd4647aae3c80bf9083c515d4d364d42bd4a0ee97b4c6c536f5a3353d0040c0f4dd0072ec6fc8ed23 +c 2b960c33c644417d497e4e3829b66906ea4565abd070acec0c328db4ac3284cf73063ea841859d1166ab188150d44a829a2157d751eb01ac3ecd9261d0f470dd +c 490d5a387c9a23fd099ca1249a2568c1e8f96cc8a1e527cff87bdd8a85d4caf32afdb4d883dfa1ee3f6e5dda9bfea70819019f9ca24e510eda8e8891f91454bf +c bfeadd16f22ed1ccd97299757b95be3ae221fe41911396f6491b1874704239fb40f656f376c4175d5cc35b8849b202c92dd7b20c735292df5f3b14d2d3c66f19 +c c107132ae4e1e221cc841c01016dcd5f0c3ca0cb66c7f5283c2df593551725b94c6bf9d3ea9e8aa7fbdf90e7a3b0fd306cf56465af5ea647e1d20aecddad613a +c 948b1193d09806590be036708ce690326877999a663b438af7d21373a6d2f88cdc3e6667ecccfb57960048c0791480940b25d607725900aee153efcc5b376e0e +c 85671acb7a3d264e7168d896b49df93745213f9429d101666aaa528ef1e8b07d4f4b23fe59a71ae951d89a46c0552ee01a887b74e1b40bf61c3adfe9a082d8e1 +c 6326fcdaf2ff17bc0ed5d966a7412a4ef5c07dc12a5f9b75717e025675d9357eb0a3f7f54e80c5eb6b3ee5a92cd0ce0c6431876a60fe27af5f4278a3aa465bc0 +c bde636c6b38216c37d0d11a2a7a30efdf916efd8427bcd8b1179f3996fb4c5c4a1d91f7aad802336376624e1ee0989b233db692fc15b0429ce49f91082af4eb7 +c 3d27e93d86b8daad627cdea9c97f6157d29d34b83d1f6fb164cb5e207a766039c96860149914c77c424c121c488086ebfdc4cd350b168211492261d051a61cbf +c 671933ffce43b44a8c76a8610fb677de7d71a7c7466599b0ba289fd0a8e168bb9173c67e46ea7e3931620196959c01b35c784ea3169c91339ea506a6599f13c4 +c 52e0644b39d0b62496907eef851e18a78145fd89abdae081fb4ab5bdb8c34889528d5dda98a3f94b4ebd3226004655579dc770988567562c345a99cf8bada17a +c 12a58280ed92a73817a5b15084dc8987d9b3e49cd3d90da4eac474ee6ea3635696e4e7f7067fd09fa8ff95f659620c16c487143c14866b83e44b7b087021fed0 +c 94e57a6515b2624168998661320a630ab990ae8b4044723bc0e11dd347e46d8d7b1ded838f29926997f58f743a0602358823bd5987daac5ad8032d30a55db747 +c 7d35e05c9a6a20f37732c75c89534e5228aae749d4c1927fc59845b4b10248e800f5ceed05d4de13d2e9d742a171c9f06f58e0f114eaac2418bdf25f1b0c9552 +c dba79d7745c5216749012b71b8ef9ac9efca011903ef35b24b2ba37c45f1703c0b87a16ef0ab6d75ef6987e534324a98c180ffa1880746a4e6fb27f492a54dfb +c 9d0f0b4e1caf4d88d50f76ef54b3a9eb312d9d502b1cc1a1502dd8cd4a1d2764e18d33cb980a1b05c69ecdac172c784ec697c56a8fddd4beb8a7815f1f1f4dd2 +c e78810d4477c2924bff0b480af351e69aa767965bd4fcf2c858093458ffa7eca73598d31119b8e356d9dec6e2716d6b0f49785a0d7977214c38e61f99e010786 +c 1bf968b36f469857125285cad13f2c1f2c2e41105d3b9582ad18e88135433bceedbc26cb298ff3146561444ff49e78f4cfbba82e1df11c5e7b0d8e89527300a6 +c c3b62a268bec395595a0aaa60a49e3eb8874e4359f10a1ea996b7eed2c5f4b6a9f2a1f4a76f185f8e8d19a90e25d35a82ad87e18f50bbe0dbd1c4d2217c6673a +c 177b2837eab0f13d7525d0a70e573afd65d23af286f999deb64ef1c2fbf87bd8abf46da18a57c0c982c909ee9840632ce81489da1c848558a5eb6e1337d07769 +c 7cfec89fb45ecea4b9a071523850a93422e8b1d95b0c0896a6b200027955bc0ef1de25e7add14eb16ff814a58f53df6a221e66bea388da56c5ea8e85db297e5a +c b9c9945d8446b5959b5580746c3a9a27ed399aff7dbd0763a79830d37e7f5564e0a09701feb8eb81583dfbb1f696c32ecf5536cbbc29846a072853505411c7a0 +c a9e9b05e8c2ea9df14a7dc25d61f3e645ff13622d7d5f02a14f546a551266271fc36f74e47efe8c7f759c174520174d97a7ce9aad90a71b09459b343e0787cff +c 2df3c6a7b5bf52e9dbfd0d1727aebb0c59ecd7f9f7a95201fd3e85dae5c417e3915930fb69034bf9897bf7598bcf4644ffa6bc111cd7a4a6ff7f68a5ac891a5d +c 2b8000c8baeea0372642b4e2a54147c49e224565102744e4cd9047882ed17c17bb4a47ca978537d0c7a0a8c0d88bb10eba47b2b291104110f22edf2199b86899 +c cb16228d63f4ab02032d1791af0572ed60eb728a16b3c4f6a63a365fe8f27e86cb429d8ee52dcecfefdfa12b3c27127cb187b298d3451975155c8ec48d207834 +c 2a8b00cb6ec83ce66b0e7009da30169616e9c723b07c71aeac6218d02ca402adec0ce200662ecd86165022d3307fd49006372e898154722756a32d0702d4001f +c f2cd05ac9160a98a5c229b3423c8ebab1177ebfbc674866419b552870a2647698a291a58b0cdb5e0e8879a0d8fb253963350f4d171e8966327f26242bf325234 +c 1a069f3cc355141a86bacd8b416e93373239aba9bf4e00128a345e919b67e7849948c0fd0b75f9c23edf52c90b9d0cd93804356fe4dc3fcba23d62a87cb88587 +c d04ec7850a938abd7d1f343372f2a4a844457c473395b1b0496d6b14534954f2ab86801173cb69d4b1389998f27372aaae06b053051bd576abc3c605ff56435b +c e828b760376104e3dc5c95181eda6c9de0647ae0fb75c2379aed887af2d675d3c8f62a59ed05775991d63b59d25b297fd6e27260525b78c893f25a1ce8e298d5 +c 4270dccf7a4cc3e389f5a656e20929a5ac2f2b74a1ac481b7676a347ba2823260039d20a7c5981a03ebe6800a305428d28ee753e9745caf4f951c9a35940cff9 +c 7d9b66ea64de2080658d19176a8f707049a54ddeb620804f8720320db62568490fa932143dceb23f3706dd990032172239535d513de97ddb28a8a740e9290349 +c 169b0a7badc386db32c7e53950e1c382343be764e9bb80b96c689b59bce47ea36185a917b6eaa154303423027b6bb17f793c33e66df16f0badf103eda60d42b1 +c d59c414a2161f371b984f56c001d929eaeb05acd2576b9a2e06fa9e7cb291ea1a8dc5e921653d5ca090361d5f14d122bb424d8cceecfea9a5f19b48231e5d65c +c c5766b8730cee0ba9e58b2fc7a89330ae82c8b22e94343c13c6f211093143c5fc80f31e40c604d2064aac999a6f3ef53beec8e31387045b6a30fe438834afe74 +c 9432350459e470c8b57108cca4ad7e95c5a2d1593ce48bac9e22ee0e106dbd48b4a932dbf9a9296dff0e1b1098214df0c08c0840a953dffb47e71c96349bc407 +c 9a6ee5774d4458052e7bbd4060335a3990be912c47ccf4183bddf5f841c66b120f26cf6fb3b20cdf1cc64da6e4a5dc87b87b26e937d5b798e3183abc0d884d9f +c 6004732f17795f607d6856259238a2534884bd62ac42cf480d9b86b50d733f180e06d6f31dc6ce5d7f5b445527229da92bcecdae0497c5d0dd1f9a39de019e1e +c ab229ebd12fdc3f6743f0463c5e1053f1bad3e5ad3aaf51c274888aa6ee20c6f38f7abca942f83809db59fa7bcf9e0ca7925d6f619ea8816af83368f5faa7b21 +c d9bb4637d08140b8742a28f2c73b7dc99dfec663fde1d2cec1ac6a1098b9f6036e0f897c7622ae5b5d55ac8fd9199ced269c1fcf964091bfd1848eb79c7ebdad +c d5f53cb77a7fe62e7b44ad8296daec5e99cd399635f8c23d0ee7f084fdf715a2eea14053a1cf6e4152b0ff3731600287c9c9f60fdc5bf9b294ed1dcaeada9dce +c 60dcee93be0fc4ccc12dc82cb3baa5ccbf6b849ba0be33f3238cea6815437f8be291af969c3dd570a0c01bd4357f1065f140aa6996ca22f83681cd6b191993eb +c d35279e3f2e9d6b87297f3a96d2d1ee2022de48980bc8469cbe8e9c0d0275e25eda0b025733ae54cd2dbfd5e26c9add68e916b7fad7821eb55e202309c18ee96 +c 7ee993ff85dd79f55280d3bf3805fb108496ec1a97eb7a417c54a149701b6bde5179be1eebdc8d3c8245b20445051ed63bbb91db7ae77ad55be93c5ea172cb34 +c 94ee650b7b2d64b40e357c1c4a31e8d97fce173d97dfba4f64cc3c0fab251c9c4ffc68594afb90ce559ce559f1335073fb9e7bf0f6e7deaff39ed3173cf0ff4c +c 8460f96e5f5000132d0a9f7c3783413d4f339ab59e921f63832da55e711b5ee3eac08b97438d5fca85059fb5387218181aae29e0ca3808048de75af15fb22890 +c f1d40c53a7e5e7a95be6e1ab0a5ef6fdcab51e19a27f1fcc4c7c314b3f8c346221373a73509a17a573d638a88abaa8d7742213b761405c7fff6eac117a5194fb +c cc6cfc7d225689c41d90666751f9059573d49787903c659e2f1a4f73669ece9095060b3241bb8a39f862595eac5f966d4eba5e840d88a990eec9f1ac2afe1022 +c bf0d6b94657071486afb55da529d32e7dc2963f78de4f85fe756e3997f644fa8f6d9ef9a991b6f7e85b7537c7b0772fe50eddb389152eeb834b6d6b88591ecab +c 846f4ade8cce50c7ee93888146b41bac382de49bd554c65034ab61e78e0399270f6715043138ca756b2b13af1be583bf6996de67dbb9a315dbeacf631d6b55ea +c 47acbf8dc2bee64a01a1c9a44980d87d74bdd636dc968292e66f4fe84788d9271a6395f223f928547713f06d4b8cd61f0c40007a77af45a8b88f30c94bea950a +c 57a37c20e99ac5fe65440ae6a5a4089bbbf00d1cae0c0b3942096b7d27416237529483194f67401658a3bd7200b8f5179cfe91318ad6f7d0fb00fe81db414416 +c 57089f9104eb5d61753846a5f97817c912977336e493cb1491fc19de201cb1a77f4e4e8584d07598491f294681c0d59448894841138353a668b57c43249bc547 +c 0d7a3f285eafb0b4822b519e206ef0e5065b39327cce6238e3418874753f775d4408b7130510b2b775e34e5e8d025ea8805f30f23feb51435486436ea6ce6b9f +c 4fe0870ecebd071277b55216ba5792f764134f390d76ff6660ab46cb480444c7f50d013987f87bb7764f4f364240d1258f058516a4aed5cb2793c738c940c5f2 +c bb6d5f75ef9172f735d5724ddd71436e783ae2bc8a47b981284d70d4cca0ec94e9afbd2c59aa6a44e8e6a17ed9b1544d415d39bc98589beefa8ccfc463bb958a +c 6ce6b7a9e44fd2e990236dadc97ebb614cfde6d3c8420363a92a1bdec49478158a36365ad12a51156e6e4a0c4267d40d1f7a3fca9ab8b6bc1dd7266380fe05f6 +c 19218150a8d0397bd04ad323f7893db1d704335f8de218eec46fc5c28e9763c9c21e87f8fa63166b8fdb2a60f5736b6530a3416fba6a82559661d4a311e65525 +c 6668c8f80c994d60154e43cedb5dd1d9d9f08b634239445d74c079e6865c9057ac85e53391632e57d058810acc81edcf858c039172a89ef0a54684903ad93651 +c 4584ca417df6aa36f91a1286e397e5934023a3214ab6f23bc1b72a62cad30bc4fef4cb8ffd76d5ce36d7ba2c76d977a52175a76dadf64c235bcc6a05a53ca13e +c 9c76e5c39af8eb5ed6eca47a62e507c2b962b2a8da00008492d172f1ccde079023b554efa4fa30c4b3bd766fccafb80ee39aeb74d1420d41c4fbb344ae0d9ee3 +c 92c66123e05f271d4b04722643ca1ae1b18e264c360e6fdc09cf0eeb4f972e8bc7f621dfcd4c5166b233c26af6135dde34e55df1a897b6fbab3931673f26a3df +c 0c8c76548fbb34cda85a6f46e6dca70a9619656b00a4a9e71769aa6238e5e2cb36f1f1214dd4cd1f6bec9c1d3fad711386f4a645b5d534aec6a3135e984e044b +c 31afb727912919a6f2d53d146b121d85d6a612d9fe4d02aa3978804206763f3e70d7d2c3311506f64077f4223c5bf6ab054399455ef1c592dcaa28d6516fa0eb +c 2092f9fdb34fd91e365c6d7a512fbcaeb890ab26328bce840bf5028ff9f75ffb789d92a707ca74f0dd61271d47a5264e24bf174cdcf0b403565538a56b93cc46 +c 193644c7efc9e19d1e83452a77fa2f9c2b7e15cc6024dcb936f9734b727ef42ef8ffa308bfa365d1334eb14d52d91cf53487f1c2e51dcc263b0054e61d02cbbc +c 9399ad69c95a75181d8319c42f42856d1928f44554311f63a21a448a23b0522c60d3b306136b3dcfc2602d6c30ab30b5ee16ef15989576cad2431425089eeeb5 +c 09b08557e42852c10dd28fd5fb605d180e0d00fd252c5ebe8faa66f3efc690f07423d8ab5bdad29a911751219fb738eda5c59b1a117e60a00895dd661885b514 +c 595fa0d4517d2383b3c262674950ae2573c56f4712ad996e3da541e61136f4d1cadf0fbd6103e266708ec3f17693c05ea8943f92cae658348f345886b39bb189 +c 8cb02e2e4ed2a2301bda9d50fb7cee22bca7546912c6b1baa128d7320f1b888e3ee40c6c090fd2a32c32466626712cc9e1fd4fc9804bfb059decb6efe8aebbb3 +c 7eddb50334012197e0930c465c512973f69b8d08bad82b652eec151561095b19f354e001996dfc328ca66611c783b9e394b2f4f37d2d44d948ceb505ffdb6283 +c a771b57b908ec209d78d5e263596a13a65a3b1a4b63f4e75c2503e66fcb246366f3a5b0ac31c72045abc23a0554b952c1667605712193559254aca750f63cc9c +c 4c2b030c7d6294d1cbb181635a7dc458a1d42f02173e771437fa60d85eb0e3d1b17fa9b181b0baeb4c6a6840efa31d80e27138b1f23f1d428240f8d7766504a5 +c fd831a185c668ff1a0411fcdd3750aa682e6244c6dcbd95cf49b24a9904de402d280373f7e8f3d87949718431e02dacc8dfa74379bcf7b9c79fe66bb2815cc95 +c 67094959df8acf778e9f1bbb5e774ac334e0a30b09675513628036d8da32ccd25416390a837f7baa28cdd1a164fdde28b1a71938c6f38468325fb964e974c6e4 +c e28df76ece2acdf8d8bcb2915de8a03030456975128cf5c50ffb8b9510649c270fe7aee3f0e5edb80d4daf138fa7f49b3b14ce0d9be8789ebe3bfcb7b9830ea5 +c 8e6150ad372dc2454019ff1eea19817806ee6ec86292a0aa1a7e91551da40d711b6aa857146f3eb2a4fda1d7b7cc8d3556286a0c76af30a51e191cdc2c936002 +c ab8a3e8053816b8377664eea92b88093fd08d4e990e0e9c2a48022b0d20c170662d2d52ad4178189614fa768fb5e5e9f8f77f24573ee6449846baf6cc2a2cfb8 +c c0fe3087714b696622221fd33155b3870b8106b1d0e1693fbb27b80181ecbe08f3c4ad26c9c0ad37c91833a4efde4c0be0a45cac34a53ed8bc8a35f958207b63 +c c54bb3b841d22d495254fd421c0778eae1a5f0f819339709d605cd7bbcdc5ce426c3289377e2eb9587cf75ee33c406338658b4743156dfcbdd7b90570420e9fd +c 3e3e40666a27f2828f820a0b061e36679d263dbbeadb7df4222ed64e0b577ed3af21e111ed9f877fa43ea8c9a487a27a339b5c271b74e1c7951f52f0c7efebf1 +c 9db9379607e1000c9d0f1d74f6ddc965c05286259596b1ade66006c56dbc43fb899f563e5da0c624027a9ee18d6ebe5a4fefdf78f1d31dbf5c8511af415ffcae +c cbe3f06e93e83a6477184f60bd47037e57ea71640440e6ede0a0a7ca295138e47d8c31a377d1aab23142808bece7fd428ccc7a65ddc7bfc2912a14364309de97 +c 938033011e56b3f98d8c698c77810d85dae50450fa19a4d00cf8ea3af18ef3c1c044354ed1be07a9faea197c56d7a9ba07236608b5746cd899020cfd19e5aba3 +c c61ea8791db531ce01f85f4464f5407864172cdfe7f4db133d787b2cf3e8f5c3dc2ab2a41071a02cee50e97335fd2e0d45a09d93c29070b76855afd1fa35e9a6 +c 70f14cfe7b6eb5b853d154c6eea8ffd73498828c9bef0251208dfbd2bf57f1f00c6161f2c9d09d46a603e4b449dff802c9e017220d81b0747e590c841341a272 +c e18f48018ef799cf96dbfee296d277faac09a0a8a654bdbbbdc57678c4b963692bab1ce3a27df3385eb35b95b3e6ad2e381f08047090cd4750e1634ad2343927 +c b1a585109ebb93e4f4293743e9aa8b18f71d3d7df885e92e46e623f069e65a82d510e2aa029ff762f11370ebd900161d9fabee912bc44023b61388ce06644da2 +c dfb7dd8c1ef985f60646d35ecff420751253ff04af12eaab905a55467708b3aa01f262dcd6f2978798b689c73a706de3161bd7e11d3b6a3312738a116152f19e +c 976859ff43a543b5cecaf39f38116a108b5f8c6614b6d9f16f04b079fe20c0045d4baebca4611127b2dcde6443b3a3509024082e47e2d3c93b1cc65db6474a71 +c c815abad6928a6abe61eb42f02de7b0e8b1dd7859fad7e268446d2c9ad1a09d93be3192bd300e96024ed399f6a6bd6f717a87cb423b6c20431c415a8b8aca7f7 +c c0da5d60721138aa42e282a4ad131f241eb81e72e86dd02f11b5de280d62c69dd9de11add9bd3d779aaaa153b791b6da300718334ba328d8e45a92c2e0db0e39 +c de274f120f43b8ebeea5a5afaf05ce69e29cc73e4b164d95f5933e4550a48ae7e472bd5be9d7124ce6336da438812167e35535794f8b18229a8cc9bd2e65510a +c fcf58a9fac96f5890065cb4dccd64e23b30bc0f0646abb67b104831f7d3bacaca6791bd8f5b99beecb771b17d3064b74d4f803ba927fb97272a5b21ed24989ce +c e30f58a41cc00f360a8ac812aa5f3d5a3fed5772943e41d9d6b71996dc33f588392fa06196c82bad3e9adc4f10920357eda8d380040c0eacf0c77f0856a7a500 +c 4dff502cc4a3859c8193ce42a32d2831c8bd3a870912d097873240f83f2cd388b7aaffa188f64c5bf958e02eaa778514025e33e77771530af2da6ee1827ecb22 +c 603b17a909fe2dfacf60d8659dce260562b43799fde6e5ea3dc6539abba7c26ac9276091f9cec41651d838d293b6ae1696a761d1ce248d08a4ed2636f5bf0dab +c c0669f7a322d99ee6acc357ccb046f326ed72a4e6e6fa6bb9f5cfdc0bb5fd86076b5540b2126e520dac85ff30e737c53ad7926bc69d51180a0c7a5487f180437 +c 4b5c66be076098761b49f2d05823d0f45b0d4f9db90c0fe7fda42e2d5b98ffee92a94f1d961af8cea7f66620e56f2a9f769b394cc5a5d0908c5d64d87be97f99 +c 502c4e27a38e2169b74bcfad767f049e4678fbf4260727bee36cb60d2218b43c5c861fd847e8dedf9cdc8805c7f3595b7d374063f935a1a64baebff453dacd28 +c 3e138e45afd47bb3101d558ad012cc2ea4fa0ba08f3eae4cf12c3e03b1a31a9a3445196611e4d0377d9e1ada6cb0538e6fbdf500c546056c5e2f22391ed33430 +c 2e853749e5b9bd3d3554c5bfd9472d6a8d7a10ec5864652590c924a6f0784c526b1aa8ba38a1a725486e8881f69bdc6d1ac512c6e50c3a0aab6169eac02413cb +c cdd03503e1a3f91f25ccaa79a32548801ef3d623740cfc5e67ec46c9b8d7bdd1757138ef0c7778b0f51a0fce952ca6eb08689de99b16f13e9056eef0c11b5b7d +c 4f2693ec41696e3d84e26e1fcfcdec501f9290ad0cc6d936f5eb5312257128fbb42246911bc9b243ee681d9168c7a7616338e4d9b090208c7807dc3a25b52394 +c 8a5379728cbf88dea5bfef3db90e086d2f512642372e2be3a23d4cf538c39e2dbcabcac2fcaba6365b62384fb916ed372aa4e05814f884b058d59d30f20388c6 +c 7f36e0bb08e860e4622c0ca0993af03f0d952dafc75383e09e625d9784553c4e3f75e21b2cbbf1737f389d8b9f6511c6ca7b2136f8c4636cd6342d670cb09b78 +c cccb460d3024104d38692a9d2964710a85c73994e8ad236733bfe691311b8221fcb711a3b4924fef032584a967ba9014615ac96bbb9556d92fee43c53f5b0c19 +c 0f4d0adbbe8c519910bdc2c8355a35df80ef1d616bba2f24b8c0581f09cc167a1822aa7fae33c61d6177042e57fe1e52edb8698721551ebfd50ac8a1eb15041a +c 2cd5a26fdf655527147a7e22908404258f90f7d503a998b1041f2548b0ae6785735639822ecc2b1e236d91d7f5baefe38757a9c87e7f5f19fb8b81f4ba9e88ca +c b312939b2d137bf1a9a2b4b8d00e8a08d372e887dcba80f28d3e8ca56f9bc64fbc4664543693529b3d7d06d89ccca5ba62afcbf89d08527423d5d6ba81f7b906 +c 290d6a037c2cf8679228acc38bfad52a187f60973b151c59d7c54aa995fbfddba883999e1f6545538f03f6384d39a07e50c681a18b8017ca583554c1ef5d1ab1 +c 779f9f101f753e2a509430b9e24c79ea000ec0ae6729d47ba1755ea1b2527c577e4ca1515b23c4acd958277fec123e90b3bc659a6dd431546c7e3b4220e0c62f +c fc23d3c5fb60fe8be266c17940f9e3c462fb1a1735708b9a48fb13554cdd8b510d780820b35980cdd3258c3eb21158243aea1b1c93acb0196365566e86aa29c7 +c 5ab767085386c6f76b88d7f8487bd3c05731d1d93f194423b7bbc868ceb6298d07ff44dc8799acba1198c5a314f168487eec742457ea3af8bc1b3c12e0f6b335 +c 944c42cc771ec27289252869aaf82482649a697bb50eeb5832b42a030904e8de60d1c114ac6154cdb59818fda3f7db5e1f58fd3c1cd4ded54b7a0dbfb20c26c0 +c 1eedf3b12f9c0f864490dd35d6f67a57c2e57bbbc5398ac12b12b529b0eb6aceaffe21968e96efc6f44ce03bea801be7a6b9440b962ee459006ed0e540b65702 +c 448563836964eb75c30b00105142b718d608b33f4f520c6122fe48d815769b25eee57021ea988176702afc748745fc3eb9237d152cdc865171a9375dc294f47a +c bd6ab84a58f03a596a710df7768befad195dfc4910086348b4d251e37ac27ae47f7bfc72f63859371709088491e2499c2d6cade0f3b92f7b8727f6837e5140c8 +c 77ce87574236a80373a843575b9eaf58f96660fd759821dbe926c757a79ac93fb0f3418fa5cc1e4d97a1feb1acf29c27c231981684d563c1ac137d9a92d43e6e +c 6b328f5aab69f9c8b8e12ecf42dd1b12e165bd4e414226ae7171e3bfa2513f0f3da3096761d0d8cff42bd0b1c3301f8b51889a3503057038edb61a9e39fdabe8 +c 52698fad88a1ceb4c920e7346c4d6a9a811ad08bc505792f679bfac83ccfce5991635d8f2c9c2e7d6ba657a876a1dc9a04b7f83f5657c32291de3d1717d83b1f +c 1ab4f8056e484fe45082e48825654714b6a10bcbe1538d4e97afc67dad5922252f2ea1df4a79177e5d2e04c9a8926f7876a96af4ceccd4825545b01bf1109094 +c 98958a5f7be977c5a86562c1cf7b73238eb439b4d059c989e4ac4e598c14b87e2c7060d80e88af3c833ca3f6d96ce9e661fc354a708f1fd88a9e4c5789b081fb +c 4df26cf04eab2c7ee1331f131da4723ca2472289697eaf392e6749701eed0c3cbb7d6760f70a7292f9efa227b93b2b527af1b6905d821f16fca21b3f2bf8f1d4 +c e5ce462f7475baded2f5e5705806d3d3fa7952570fd38f58ca40114e522eaecae5f583be7ef511c7418bb2a98c8eaa6086c9c8d9b47ad4bf894f5ad676dd2440 +c aeee9627c4132e4e5586ffc72a5cc10deac584e235c120b7e8c225a571047d2ab59beb32de36cbc49294841cf53941e05c244a97eb2c5aa906cf5f69fbdcc990 +c 4b6fd422b02332457fc32a8b4dcc8464e130d09cf6dd53059352b34785af639393f37a2e32b7675a9987e64b73851816b377d80297997874d91c2c5091627538 +c 60a999deb2df8a066d4a9c8e7ec17b8d6acb6832235f5838839782f214f7e085f80728be7503c10230ef5912de3cb9e875730b417c73492a0bc5babc034d6026 +c a7afc8f5a885ddc60457db9d7d99df9543135ee0421c50d224037a37062890cda62ee2581912e71925d818d0841e757eb483765aceb4c79846c0c3d533c12d18 +c 5d14072f46389ced5f26f6eb4143bf5765697fd00ca40514d0ac4a81def1cd456b348e3334732d8b7b24674ca9d591775d6fab11605bb65cb962db606efa03bd +c d1e65f75dedf8707fc0f18287283769e2bbcbb21475d3ff578bc87ddb67edb14d22a6c8182cd295d505284d1124da1f16c4be6e34ea28f5aea19ea1a82b0cd99 +c 0b8043136b7372f4d737d005179d2986e180271400d7dd4b177f3dac2d8db4b3d3bdb6f448f130631b2bea2dac4020838671726777867c30f3c5d09f61e0877d +c a33b6956e073700939edce62f938718e383b2548be144b845216eeb57ed040a75016628f2cd859714f2da2abb73c6914674ec8b4662d31050a5ec34b69395cec +c bebf03d6efe9163c212be89e96e98d764261f47e4eb67f3d57a7c650a3ac994d107295e9b383052cbc3d59778f5bcefc89424b7a461bab906e71f5ef555efe1a +c 1b57ee8d229d3f13475154cec264f3c444895dac589d90c5a7e93aea4b269249cc984ae943ed2bd93f075ea9683a57ff1d04c31e0fe3c14ff1e124fce26ffd8b +c 0d53030c604d7c95214fb6d84571c7d018adcbf49626fba1e2668045787d5019d5f0a0d1408661aac3ecebe7192cf9a9487cca5c869dd55da5a5ecef2cbc6950 +c 37745b49396498d785234e38858a4d6980c219a7f0eb12f35f727c95c61004f76bee61eff8f9621622fe7a7582d90355f65050465866072c78043e899caa03c7 +c a3a8587d5f80a66cfeefb7bb14225d5c940deec9112701298b6b342a22666339b0825300552489f62f7b3c77f5ac44d2f0bef771737bd31723b986db5e95f99a +c c121a613a0e4d667cfbd9da2664843fb04aef06aa91b116b14da1f402faad28a5cbe67fe1f464cad423c8c829d3c5eb1f826a91dc81a55a99a74c1e214f0cc0d +c 289ddca399e67ae6b36d59c3578de6c82def551aac7adb86acde96166ea41a7f6b833c6c7deb1f33a7d726190185c856e4b19b81edb22c6756d0e45522938148 +c 1dcb7356a17c5a40491ae234aa592d7d16dfefed62bebd4b11abc5f6d803f25881914cdbf36222dbc5e966a0d4a49ee8e584830b1194feaf5dfef5ce14970bcf +c a2114b738f6204d9ebc8426524c1c428b3158876397b48c01e2fd1e96350eab64d36e06d8dad0afcd2832e6b4d5626d008e892da3f8db9dd0b452d8e4300ccf1 +c 0d696e3ff8ee676b06218673d16064804ed2e38daee3959de21e1c80df4b4b9cfbc61a54893e893e87ee1b713fe627426cad64b4b1bdcc75daf5b1cb3675b08f +c 13f815eaf8aa64ea7a27481c64605a90645d82855836bc3e8227ca7d3f886de92377f6f354eb97888c32c8058f173f181ddc0769525de5637ff002481de3fcb7 +c 4e0e1ac0e9fdbce357318d9302a4701f8245dacb1d9a9aa0e158d822824e728ed7940516be54d9faac7a7744ea0b2d56dc1cff29f5eedba3ba000645a76732b1 +c 31a4505f5a90650d6582c3a0069504a3128d2c030cd3c9442bb1f6065ec34b3b9cbaca086a758ffc82b75d3a6f72311ca630f8c227364b1eba9da61a33a64cc7 +c e85bc61da26ed4975d12619959bb985d1a7256357383d33e45ee6068aca17c79f8575ec6b191cf2417c5b76b7940a90487fd2c25ce1cea08e11c81b92771f940 +c 4cb8ce94e47b42db55e7b3e2affbd44e1ea5f77b1601c594106135dbf267c7cc24171c7547319f1346e981cd73d364b5604a025b345207f9e2611a693c1dbd51 +c 268892ca4a657c0bf07fbfdf0b47c43886a2b294e3749b1a5c436023a86a11eeae25221b18de43e67b3d5796da1e4ada0b8d1a9efeca4a5666148d9f0a7d9dee +c fa6dbfc01dae35c257b36764d0c56685f7f38d87ac2c48d022d44e851117103e4227b47c21c8b4f099cd57d290073711bcf964de2940e4115f0c553dd3a2fdbf +c 89af6f2ce56b8dd282e979e52de1a58b248f5c16855cf8845113dbe8afdb9d6874c57cb54dc58c0c74cbf9511728b1894e43e18a6360d6b8a6f2793ad01750d3 +c 2b162b260cd60387bd0129ae1ad9b2dfbe8c512beb87e93c31bb901320dc9fcdfb7f64d6d68bf3a8f4c9153a8e7670d6da5810652278e77fd54495cdd73e250a +c 68fa78ac0083a70ecc616c6f88a07abed5af5da7a828e24d30577873eb0d78586e99d095fbe305d94fefd76afebcb926d169ecd6e3a62bb1dae2c1fe2726d0f4 +c 59d3f372ac3d9af2ae247c2cebdd3905709b2d41031350583dbceddc8bce181c531e6b3a30c223156f8d9e5cd3ddc4d6f266de0b164ad1fc16ed59726ecccb81 +c 55c63ef607ba65b5252fdbd3026957e8e36c8acdab8edade75b4341f4972acf2e9524b7d460ceb0cb4cc8f5ab33353eb80255e40244925631624bd35733fc642 +c 5e9e9910d6f15a99018dd9b1bcc64272d90fbea1259a2e5ccf2dcdfe42a5265073ee4e67621c7951649465d0b0ab8eb251296d36c85f30080548c0206a89b515 +c 34ab47c802858a99afbc88552f674ddff5bf33bff671de43837785edebc795a39819f110da758d75fee343b5b597a70f561251b113217cea65dfb423bce11ddc +c 01538b1eb0ea65f98ff180c09e2948914bc781f6056c687a1e04b61aef3d9f8f111ddb7547c698d0b814487030d28038fb007d1d2025968e280bc686761ea098 +c 0e0d04ad00389aa8cc50ca89043364c5977103c7f386565a73a56eb83c77b6ff57ddae26cc3fa5013ea7caf28b5882ddc914172c92ff28345e8195362ec6b6c9 +c 5282e255b13413cf5bd9f11e415a14fc35063454b57c16ab7894cb82ba74ed472ce5bef14639627e91a75f39e6b006c81d97524df8acb528171919168c04c575 +c 961146fd828abe5f3e9c785aae467c51571a77292c871859e0d7f1a5d7faf76fe26124a22350f909b03970ae04ede79e1c940c64fc38dedb10834685d08a8ebc +c 57caaaca3b654b9f3cafc9d3014a52d1d9101584c29d00f4c873e145c3912c04224e747ce74f963a5f62adf9001d0a5b56e697301bf5684292232e1918504bf9 +c a69e0219d4dbcc37523f2c3bac2a00609401abf5a67268d20a5b6dc61346a395e5e7116e5f8093db939346fbfa33305fe11c9ceec3f69ba79a6ba0b71eca8886 +c 720dfebdc3c30562a79757b1dffc10238a993fb62684487387ee0330eeba4035cd46c84826c057e833c5e8ba42c2359c8daca58242768c1d3f017993f0fea5ca +c 2f80132b68d923d3805648ab2c14b2d2b2b10e696ed875a05252c3bf9a5325b666c2517fdad08c00face1655b681cbf7bc0884aeeced9baa93b5b085cf451ec7 +c c8e6b5d7c1efe12cffb1319371e833bf920691e354a114f31045571adb453a505c058654bf20f9d4ca409318b8d78a880bfe7f3d2ab6d45b9435d78803aeb5b5 +c 915a81a060f16c2b3f475eb62e47de7c466456a73d54acadf3fc98dbc8596d7e9a5cc02aec75fa3379070f9896bce8f8881ce6cfb3feef558cdee2cc5b699533 +c 09934b882b10a560cf933ea472c6ec5a981c3a6ebb6b38edd950a76c16eb7fa7f5007e0d4d1ef8115b8d1291dda1dd865d75e0f25e1e07d726cb26c825fb570e +c a1f8afe04fb8f6935f9f37b00640983d370edec294693e02ff6e12e527695e20dad3304158a1acb1ea426664b2826b05e5be011a6d4da01dd3b31a53942fba77 +c 70e7c1b73553858216146ae6e474e61242794d7b3915edac8967f88be3a2197a7573308604bcfd454f833f062724c072e945a6e063a2473031ddcd568c216833 +c bad1c46018ac5011aab34d141bcd3754eec0c8eb5aba4c9b10e3a6afb01d0d49ab2eb1ab2b375a7b97b97c55d091f8602a17365e7c45bf7ee021dd7f680d1d1b +c bd9ac738000b1fa330dfa6e56fd5c251348940aed88fbee68d2083c17e3c1848a720d2f893a52f1dd9b56b5d3512d766ce3c12910e8fa44dfad598032f8a02fe +c 1c35fb0c32700827a3798ea9f80865b6d5151e5378151b1b7215ed50087c07c4376f1d0695780a0249200906c74d98a9e9a987b869e4a89945e9d13777a54add +c 311c8f5932d204db9269cc95dc740b3f4aca95f65b3234a185f687981d214dd6fa28aa420490033939ed63f7cb2ee012f5c0655245933c075751d9554bac0080 +c c253ae86327311b6557af6d80fdcadc00d69c287d2447330ab01ae6d1c42f83c5ef2c45d2b4a29ad677e1973d9075a723a12b1a22e453a3e481e454989b900d3 +c 3f5ba9e60216ec445246bbb38cda4f9b8800ce808ae76524972abe9acc4987f3f41f178ad68822838079b4d6ab458845e2b0e81e6047c9cdcce4a16f3a770e2d +c 98f05e0cce88255e217b22e5a8d516ed093094a9dd57403c1897d07df92e114102353462930e21157d8e0b3444ca571df38c4029ba506ba279736e5d9ace5d52 +c 4a2a2b515dbe12cbce5cb01cee0f8d1d9ba8075ed5cab3ee6c8872df6e671212194237ab2b10070047daaab33d1f98565675d1393cff044e2b61926d9c33423e +c 952111e6043d16cf03e6c664281ddf1222c7f54e4876774a8f69441350906235477acf78906100f7da5781aebcaf1efe118e666ff48508769b4aad7e8fbc73f4 +c 18f1e11ba6aa6a5dd5eb7d30d76b9573ce91f6fed3f975a2e66919a342aae71bc7a799ec30247a1a93a0be5581cfaec99d432f4710485cc915a5f6d79ba56433 +c 4375f347646d0b501a8b9c329087d2c0bf7791ca19698c12105070c7947bbc20d2b1638c6324836a9dcbe4b009c6451766dfdcddc52bd4d0654faa4e6b0398eb +c 35bd87f2f0d038fc5e0d7244c5ee6f459eddecdeae31538e65f26d76773c7b00d6e96c3ab4dabcc87e01e4d00a0108224698c2b55853ce4028a1b3cfc8acbeb9 +c 18c4e257164051de50796235fef3a8880aec38f87019199c76a71be6a305cdd872d816d248fcfacb8f67c1e5db92b7ba5f1d53c53f6b12815660df312c57e043 +c ef94a34d2305b319bcc77208c9e3e8e53fc1c87373d12a1e155438d78e787ca5dedaffba617cfd10f25c7727896151ef7c192257ad3922fb1f1b5cd8345f8a79 +c 8a5555c3f280873084a00cda99339183bc56d156c95cca6305b7f290cc2ae3cfa044d42f8faa503532eead02d5a3bc5bf94b56912f89e23da4b7e4813d0943ad +c 4ce66fda5e3dfe0681a38d7309d1c7ecb9900d3643ae89e6ba67e4add26215362f41c175a339dfa85cdf4ffe8e80673c61005072c823e056867592193dcf58cd +c 2ed27ecb78aa22414216d7ae591c5b4b9ccd0793e84f1a1731124c01afc2d72e0a4f224127fe4df667498bcb33d3fdb349fc70919a6eb3dfd602140d447c0825 +c 1ce85b9f0e5190cecb6926d4d0493b4659ae195c2e759ab6404a92eab21707bef8fd64a17def46a370ccea3d51e284c31292e9eca57e822e45cc48b6f1a5ef7c +c 0d77e3b1cd87deb06aa6fa4f636f89d98c86ee333f6c107f82841155af3006a5165af87b3ccdf590e860510103e63d879854849c562ddef54d7c27368201201e +c 54d96da093d8728926312fd1fd6e5e0b15693bc11358d63e6458b955b23e284d0b53c29e29976d1f70259f401db55f735c9b8631a8441d15eb390f2e25fa10cb +c 9be6c7d5bd0f7f55f6589cb0a62bfaf2de700a8b477f7b2d412a06bcda64d46525a9eb441edb51e7110dc88cb6bdaabbd32d64f87df942f4f6d976f9bbd80837 +c 9d1549e764d509a9fa00018263ca2fbcc355c5bdb0135a014975985cbdf42e73e1bf8cd8511c94aeee1e726850bc29fe2ed50fa0dc7c27727337e76332c8f5a1 +c 39a15c0a4565e831fc5363d05607d8a6db9274adb0b3b26c40ee1acc3a3aad351fef579b8312d2547707022e483c2fec696d0f97239977e6c7217456741fd6c9 +c 8d3294de4c6b6f3e31017a4cf2e6281bdf8241b0ab2b2b9f86b95d3e9a04d97acf904da5c4bd47a850af6b4d8383f7ad9be6c3273399dc8dc6c893a73c9fcf6a +c 5aa3257fc98a491d44c5637edc48de1632ad2c4a415f01dbd9212f1fb8c978e9a92db54223c94897471b096279a44a1b2d03afd5120eb8807b680ce24d9c8bdd +c dd10d044918be4aef7f46c46fe66afe3e3acc9f571138c4fc5ac4eda953db1504f1d2db86163996086491d4938c767692226ba20140f3caad9c0c0566e1fe584 +c b2af57ffd1bb6d32ba881245e879d7d9700ae4844b50df3cec7bbc561154276c889f28298191def27094254cfee996fcdf5dc6e026b9ac46558c826b348abdeb +c ada43a3c3674f7dc38720e1de73bcb18a05d3f532f9dd3cd5ecbce2ed2fc29019cb318ba60c958e21d6678ab29201518d9ca04438d13ac9219a877c2201b9926 +c b871ff9784e78ae8112e89f6980bb8928e449cae65de6f2d3c86290317d8c5469a75c290b90e27bfeab3033bdffe8bac1f0d009092ea474cc3de42e5cd751cb4 +c 0018574b18d8a7b2e520e8f891e92f0b4f05543f461a4921db5642e6425f7bf51f16f6ac0c73985ece8b373befd1cdc1ab0b196b34eed8487ab353297a48cc53 +c 70a2423e24bd4b27e595558c09415b32204587287e26c30befa671372edca84880140288fbf5c8a06bd2d1e9f08a5412979e6885a3b5a0cacd9ef44d34173250 +c 0cf7f77288a03773b6d9a2608c0dc865086cd2a3d89bf343f645207446c181d9f0583bd91cda3c8a9b4c0c5c1d80567e7196e95b15209913d279f51f5d8d87d0 +c efb35e01c1a192d9dbc9a99117bcedb9fb0efed47ffd47284daaf24c6576ed4666477ded67f22fdb915a36deda40a04ff5356022dd3a5f2514e879efa04baaca +c 07181c73fc44469427ad29103eb7fe8dc7e0b83873c689cb7c1e7c8d912595f29ec34a353fb1d613a4598fee790b12f21edcc78855864ca40e8ec840b910b841 +c 14642e2001eb4c1845aadde62810fd4562fd35d0f25d92178ed3cb75e9668586731fa272ce25a298434fe63d2a7a04ef00aa37294758e7cf175452525f9cc068 +c 3ac985a7b023fcbaa71460bb29e6d57482abb66879425c581f96765a8f2e5dc8babdbe03221e880e816beabdaefa8c27a79df11d60f7a607ac498b93b58035d5 +c adf82341aadd1e2301b2183a64a0abcc4b4edea52512e7e95eb0304349cce5c2712911cdc709f15c7e89676c2d0f512fc7df2309e9ea9ade5785d98fb7b30492 +c fdd5af1ca545f91cd20ac5f36d1e7b7ab003bdc5e22a7eef3d4f39c212d660bbf4ad78f454d6d17885d5f3a69d4432b89d4c06cf66a7cea79d5c28c8129d279e +c a0f033da937aaf394430f062986ea0468ce5aff6ff713be7fd6a5c8582b2acd85757c3dbe07eacb2ebc942334d64a01a281021b1a831d79efc96e8f3bd203405 +c 1a1b7a27beaf63536eae9e39d5bb3c584578cb93102947b9565a0529dfb7e7a79dc3d9ff84cf1c3e93c811019ba564392ce519cf2eb84db3b6e8b42b0aeb4f49 +c 9862557b27568e11d2600c34c3c8aaf7715bbd3d965a74807ccc65296349dd7e216b48451982667b929fdee616f7abee2c5d337353b4783fb0d01a2b9128c73f +c 96a39b2cb36404979e2c70d6fd23ff21da744041f39d10ae8e0c01bb596e2c3007fd686749ce4dbf4a66e59fbc7f33c6ae4a290af0ac7c1c42e897a1cd1c7166 +c dcf1777b026f929a04064fa56b001e5f2349f47b6bb7aebb0cebb3c99ddbf28729e43e8403c42e74b728014594352f672c3a0b890d4b0bed697aa2387bce3ac9 +c 92618c4d25f9c76131ce3d9053cd9818f47d308221f5fa498f415cecf8cf1385aa3a2b8ab3976c00fd438b1e4a18469fa28cef0ada79696606461f71d1b026cc +c f6963b957e0b4d94273812718085d9bce83fba2b586777032e0f472ec15cc43709c9f21d69444e8ba8edf17945ec86c2a64623e0df38e36132496c052d23250c +c 9f7b83830dac2bf169a6f936df5cfe4e0a1e92891737ec11cd401dd7585e85c642899d5c1ed009244df42178ccece610e154bfa3dffecca9d77f24817fc1001d +c 507cdbd36f766c58f6a3e1b5eba77bd43fb38810a8d3dc3db7bc6d2e5bbf437063b2799f208b8f540a8eec43a507716cd4bde71bb96541e043fa8f6db4357a5f +c 8d73fd85160f8cfea6da26da80aaeb7b745cd12398bd675fdb69bb3a918126f96150fbf70b1e4a574823a19ab4950f4678d4c61791c9c5b99b23f45cccf9c975 +c 1bd209bd38228dc3133a191a6f47296ea3c7a77418d9d07b173836c1e9237f3e84b05959704f559e6614c135b6ea61292f4192fc40f5dfcffd95f11ea108fef5 +c 78fd84c7a5954bc703449c396822fedc782273ecdb5d4116b20d2a30efe540654de223ba6aeeeff8ad5cc877875a9be559f604f690181013325b4cc7ff5f2719 +c 3155ea5ea35df06a77027c381ff1c78183acf50727795ada3862a5cc376832212f794d0d4279485884c8005cb1653a36ed707bae165be53657f04baa84605575 +c 3b435f88fb89c3d80476148039dc5f335e4376107498bbf5bad9c82e78f40c7a010ae915116124f0628556ffcd15b6b3722561a9d2905dce94ab87269b64fcac +c 1202ade0fa313cb28add09345c99363a5697a6a104e68592967f8208029619fb7b2e67b72c411c155f441c58bdd257ae9fe5f4b345317a5e2e533e19bd74b787 +c bfb1f00ed1032726a88f96679ac3a3175a1937aebcbb54e2c54c1c45f462ff7f2d79f3159c5147aa2c12b5c06c8eaf206324be59bc192873e2f2526981b6fe0b +c 66aa951e290764c4e0e5b36566e3b1a760b4593d0194dc8af86f8c2de3c4261e789dc734246b795887e68dba2e546dcf41ea5329c704793b4392d7cb64442459 +c 9ed9871b9f6fbf336a8223a509461c93bd97245e81ea7a83bad37492d1cd5eef25baf774a85186802e815d68da5de8c688ed09288596e3395c3e6d42df00494a +c 554ab664e0b16a0ddcc4525ee0d357371331505bb3c2176222857efc46fe6c86f0775f842cf379cb46a6293f399c30b60dfdfb4bd6b39509a3aa0de0d1eb921e +c d85a6030625a38feca93d55e2a0cb67137d1461a74275b994a2c75e3a2a1ea0119c3c84b670d512c0e0d6f8d693aad31cff5459a0acddb165fb0c23bd2be345b +c b4cace710f0720712059bbbe60230c72532e6a4a23b8b42928b5261625c5fa22a2fe22c22cb6bf687eddaba15d14b28b3dc09cf935fa99c18ce69cae0c8bdd50 +c 10686be46e9ca4bd0e7ed1e0106ec7ab468dacaa296d97e7b5fc3582848275f60e17f7d761947f436a231be0a0d74f576cd3806e2ddbb96474638a38881b4a4c +c 6aa17e17bb7698dd382c7feb2cd667739ad53ecc039b4ede109cd860be4617e32c22d246a3e94ba7ab0f8bebb807ad29cde207c9816b8aebba9b88db01cafb79 +c 957645dc131fcaaa1c7e079920dd0a252dfee3b78fc970e18aa305cd3c5c3fd940e3d7d6ddf1d965a494b1872c96b25fbead2a1cc7bf656c974f14727349925f +c 2a2512d1350813210c750eaeb2a884408ecc62d7aa06d1a811fe75fab20263d21c6a4c3757546fe869382afebbf53e673f1ae9a1e5350a90221c9883a4dbf2cb +c 67cb4d223cea7947d18ea4e0db1f0b6286986bc4c40bd519bed035708a1804e788eb80cf0c34d2c36cf49cd75bfb19a170efcefbc9e900510364e08de63a1664 +c 09fc809819d6cc6f54e6fe8c2da58f3530e418e7a51e826c4950e581052d7a727b23ca7f185865d424e11289282f73f7622d25f117798bbba74d7c26b57e6a34 +c 5c4ffc298532dfe9f237729204f6c00d037c83a300bdae1276c3d88e866c9a0f6c44c11af6021142552a03e688e7ed96a6c499c813fc3b0ccf8b91eeb0325ab1 +c 2765fb71347e220f8e5567c2e38e50f0eec3c05efb634384db66c276edfac381a3f990822a2b2cda50a41fc0b489fd5ef4eb10469e72d423899b850166befccf +c 6c54539babefa47287717818afc17141b382dc9cec0a2e304fef04132329587f3a64ff2c0275d1257e8e84aae773b9e5b47cfbbf07cf6e47e3211d2e8deaa78b +c 1586c3ea068945e3d391e929f5e45e315681365446b032e087ee391e09a9d15ac8fdb28db3d5e08453312a946537bb0a63dc3a139efb6c6ddd47d8061633968d +c 612edfc0f1e328009123cba2424f2525ee8f5d8f5e65b3d570ac691320121c9123ad98bd7114880db6c70f2a24956c6b81cfd729e8e7e7a10b64852eab134707 +c 842950265c6255fdd236bef0381876aea5879b9a6d570d199324e44d65763a400ce597e6bbe90d2857796479f4c3ceda3995932d +s d7b8c8737b8be61e3c23bd8cc12fe28d3240b849fd85343ee45dc1e5611656303afa43cf92adc4d04f19ce33fe028d79ce03fc75bdf9f4e00fe0a4eec9f9208b +s 27d5d1209c77b2bd23124d6631c002dc251c27ad99894df70c250c168fe8b20b6aee1f63f2f979977130d9d0c6edca51c7b26a3d48caee4b16f738655269f8eb +s 3c882745b91d6094790226088b1d63f2c1040ccdb1376e2d0a4a66f414ec37ebc5d0976cee3d364f83500388134dd8d710f5935c992b8ed2f7d1341b79262982 +s d9d40f49ef3de448d255735ecedaaa3f8a4ff387841d5a44173243383f3bcd99f57a159fe04ebb2ee016bba6 +c 34278bb094844a9aeabf589fb0d83b0a00d66f0921d6f0658aff18539be550dc42b57f0dde240dc81b10e06d6b65c9779341dff1a732443abd328fe11caf0c8c +c c5885a1c138d5c52d3daa15e87a0099372812e0c99b749d84ca7d7e3d784af3ec4a2bda363ff0c3d3c6a30200c96d1a58a9d78b7e273196fde67ef0533fcdc85 +c d0c7ddbcaa5b13d1c6b6aafa3133a48a2d49671976b199a6637ecae41d59f210fe768fc4ea9b49ff001371b003208fdb332620daefb502983fe8a6386d7e7a43 +c 83c6e48e7c0f3ab0fb9e779c8e4535e502b6fde12bdefad2c2d5b485fdadf2e6ca75fe8363107e49a053d73e7da150f03cca9a31cdd6dd523f8cb5f4527cbfb9 +c 4ddb9ca0600571bac7249902fd71684c70b165b58dabfef7ea27fa57f4d3c846e1cf14d5cf1ed9b05cdf14ed9ca76c864afa8fa207987530d3453b0a31680abb +c 85f5a84a0e7b8ce4ba789124773082796b909ed9e5ca56fbd41706e084adaf0eac357cd7616532aa246c7ebe6bc86c5100f18d28f7fd2fa2d0a31eba1ea3a29e +c 6011bc99d9cee888af30144d2538023366dbb2ce1f38bc6cb4181937d6789a67571b12b1bc8a15f0e32c1604cffee2f59eeecbde46bc8e0d98274e9345022482 +c e478397ba890c0e9db66694a18cf8f04e0b9644955e2350ab415e4be4f734ac2dbff7991a26683a65246b91e6ea964b0fffe925946dd8d4f910d60d45a904efd +c dc1c726141df8071b420bf29f6db663c45f0c4d82fb6d7c87f9dd023b505b388c96a21409fade5b601b4654750bd20ca3e1cbab318b7ed5bd8199c1f88eb1816 +c bc733847a4116374a2e160604d98a0f58a2c8aa0bbc27a0ed372ebd3d625894b983f27c4d4c13cd22c9dcab88380d45977d20fb431d4ab0c78d435bfa065f944 +c 4bfb79684a7332ebdaa73cc8ded63c90096abc9a87f26735e4453893d4cbb743091ce6f6786cd0c6b90ac0dd2135931a3d8fc030e63f691c68927cbc2b10de49 +c 49ee2967f4d06803c3ea6516dea2e09666596a37d2a89c5d5fe45da574e492d2c327f536e7b244de1c036232a04f2f5653b6b57b0204e6448519909bd30b8874 +c 6d8d29ce8d0adaba7b4f4bbd96f3351391a122a20a2488165b2f8257b8a98a88be576bfb857f7f883d0e903831b82667ced522c7c9bc8d1eebd0418fd9d8ceab +c 55962d22e252c781402b97776b3e900badf2a35aa8da6b30fd42eac09de228015d566ce2eb5a3e870a802aa076b93143488f2f7f9668e9c57fa2cb87d1858386 +c af0a4ffa5cfd4b080fc1fb801839341ed9334967dcc6d293c41ef8d2fc874d978928cbaf8d8c73c2475f621b002cc32029e821d76d88f405506760dafa7bb319 +c 5f6a1f648571065c21345d006bf2a3795bbc958171a00f0f2dfd250e5865cce1b57eb01d8688666e46a05dc631951beae53471f0fbc43e2f9d2f07bc76308e41 +c 14554dde8c8026d3da0b107062d286888ff7268d82a96293e4eadc773deba215d4233cd30a627269461b0662d7a87e37f760cbab8941db8cf2c57bced2713ae4 +c 462059282b6d10b3618d61ccf13e2463aea1a2d69b6ee9169328f52b88410be0b316206cd1f34363e4a7e9a642eb94a44ab670ed42c34220585b96217bf9517c +c c5b205eeb103cb54bf25aba5adc818cc6a97edd3cdd3d0aa33aa96542103bd6564163374b7df21c9bd91d7e5269065448ae0027b56a1b7d34cf14980693913c1 +c efa75ba0fa482c3576154e9e8778c5f3bfa7388f2aed13ee74fe62577e8a0ee23a021f36 +s 22e4c166b6e969c831ba20466d17624cba5671e27e8e036fc8db0eafe302b49c9f4f1cdda07b9bd668c3cd2bb53a5589d49e418881f248f32b3c29f476fd920d +s d367b1cfd878902b009da2f469eee3303a1c69ee21be15335d1a88d5b6e530ae0c85d9147a5e77cae66a3c186caeac854489b3920d000986865a6b2b61120a07 +s 48d2d7d002b650b2333e8c31f6d79901ac92793fd4bf6e276c58533924cef1bddc7e1229e6dfdfde0a6a37f7d6f3fc1d270a7d91a74963185d58599c7732764d +s 6a7a2d2e8fea13170a3b693bde96ceed6daef89aa6a2f0219e9fe9380686441ba89683ec8be6cd21e907ac750b286d87be49c7b06f115621fa36710e94807acc +s fe58e8ded7850e8a29a8e8a8cf3ff44cd7a1e2538dc4c9ffc3479c5d645648323f03db534f6ff3db2d14cda2ebe4ca66ed8bf8c69ffc59ef75cceb822ca4057b +s 99017a56328829f6daf68fd919145cc310359ff8cb21123c87fe7e57ea707a88ae3bdacb8ca860c6efdc54526a4832041641d9ae2b19174d5efdb7ef4ad71055 +s 058f918ba3affba0123f7053f641178c81ee00e637d1c78a09ba7381e93e6d36c83f6227fc9f38aaab969b5f1f943e4646d7bb7b621eed7e95c92b06d9b86bd6 +s 126880b24ba1d9a437cad3e7448de0502d49dbbadda318bd344ae1299a041b990559de015f4a58e1cd7b46a980de216fd4fedd23d38eccaa93d02db83d2de158 +s 3c57ad72e932ba9dce1b3a5e76a1d00b9843c4aa49189d4f2ddddbf0438636f840497e29ea9e4b71b769528410761d361c59eccdef578a3f6eadaeebb8d45967 +s 904e33c2f9374bb0d2bdcf2dc2e3b80a7b24832bfa777796eb07bc652a1f205b46c10c221da07a55b8fd8d4764dd169081093c9572e9b0f0feb35de75b85da90 +s 468ae85e733087b90f5dd88b58f8df772b4bb5f9822adcda5feeb52c0f7cb4601c30710d5a9b93ce4e7e7e8e03ff8df667db6f4e52181d0af0e3064be254f00c +s 83c51d980df1ed1c174e4579a9c993399f153fa8c084727a8e19527e43a7833cf7eec9cdc64a89d2aeaee9ed63d1bc568bb00b4d43ec6e440c2cbfe5a85ffb2f +s b504b82993f6ec747abb04bec6cbf0d5bc614d88c6070868625830ee7def3beda217f6fcf606bb0687812c4ea2dd1a35eafede06e7c6fb9a7a45835be689df52 +s 51287b27129748fb58c30ec4c5cbae448e76b6495259aab31a9ef71731db2705fa9eac2b047c2fc6c3169ca731490b7a7fa53b44af1fb8595b393c8eb03017de +s 2f836effa13bc65f3cd677c19aa1c4d4b07ab64b14609c5492f559b6af86bd33292ada54233b55b8c4c9697203b27b71680fd8b0ba2583bd6fd94f7bcfc45fa1 +s 9abd5e2bf208f6e66ce0eb1cdf428f8ad5dc4c0c27476799ca12d9e91b207fbd9340896f6e0a6895822c518986aad74af026799c497ebaff377609a11aac0a3b +s 20473e0c86f40926ab406419be41a3e32a3d6f1e061ccb5d521ce2e87231b8fc516859d65a87492a9aebf4f20a5f36fe33cecbf92105a1c800bdeca8d72333c0 +s e1977d71109f0aba467c36b218dc944159dfea421a256fe8c0b8a3d0479bfe21e8915380e9eb9c71de82699854e773e068fc10bceab8b5d08f02131dd10c4c1d +s 022da072a43f2aae3a1d00430adf89bf25226cf79aa6789a521822e87ad72988d878ae8514580b122dc5368d877464a517e9741fe59bee6f08670ed16071ef6c +s e078ec8388928c703895c7220d8870ad77f01d9123faa6259f90eac228cbf863dae29df1515ae026a1bb9f5243c53809fbcffb3b496b6621541ae245af01192a +s 38f82d465ce22a2fd6877c8cebc39499ef5b7e4903b1f00715a68b057ebd3a157b0fbe93294c38ec4c86e4e2ce97fc15a66a4d1dd8aaa1fd5508518d6164d3fa +s f216f89799efa35fcc0fbcb76628249f1e5ab55acb1d3a55bcd94c000af356a5b2be8834684f2abd7445a1f23d54c174c1a9c01c1fb10be5832d0eeceed1740a +s de5b3250f4491d16fe38894cab9eb739f309f08dc65bdf2a56d4618f3ea914743107d092b00f5fae8e88e3a22be4d8a276ba405bab7115fdbf07313ede49f1e9 +s 5b87e5940fcbef39a75812143e451960fe99f4baaf7bf4068705bba1ec23fbff0b177bff5ff1e335427e2da436f9c0926c4c647aa252eace23a859805adeb738 +s b11997e1aa4dabf735cfbd5867eee54a8ddeb1830a0c1b78cdc69a64499a1d46f18c21986b1d17b4a676594757f74376ddfed3fbcd4c2584a57088b52f8b5ab5 +s bb2ae21c999e687c185837b4625c9f56e08bcd0481a979e10f675c652fd560f3a27af3fed2a7edfe1c4fc9b25760d6d9eaa0e0654619327b047836d6b62a7d83 +s 09ada13091483683064a79dc0af93dcb9d03f6d6b893a02437691b2f6542b10ebf757f5876c6a560c478704a4808a27e9ceb07f0bd8e2694e1bce0e259a83b58 +s b2cb491acff5e0d57215589d4b3c027b478f796e0fbd6a472a0506a13c5989b6488032fe73a6017359fc630c20eebf534ac2606e8fb55a5b3287a9693d4247cd +s 9a50b04806f9722e8fdd4b4187e0bc2579f88aa9270e85b5b62d0fcef672b01a0928e56a8359cd242e84dcdc4726abf0be3879da507065d317cc0e7989bdff65 +s 2bb1dc4156512d3d9a947a1cb38391d208cf2989976333b7f0c08676f5949f981b8b9af0633d9b153766d0128603621c1729ed3648b954b76199dbbf04f3592e +s 76f824fa4c1adc4661d8667edc9211eecd843ae9968dc8011dd3af113177fa39214bab1d888b3be48c3def0352aeb1b4ac22eeb16ac426b1f3eea14b7a58fd5f +s 93383e5ac14b1a87017cb0b599d82263d5d9284a772404812f9696c568c9630ca45fa263e82b642c13d33d361e4cf2a8e8e3cc165bc77d33861e2911cf86551a +s 6b1fc4aa198b6fffc863e0deb7c5ad7ddec66e2436f0dac03d9027821a0d7212ca43468fcc5b3f3cf5eb4933c6dfa13c4af4bef8407d9c77eaf53d23e87336d6 +s 4c462725165799f82ef33ad9983a35515cd8e50b3f6b6d74f82ac2d730be5c6380fb7175c6e3af06d4953f68cb68c2e5cc99078bcd601d3c3f7b22b58d39ebf0 +s 8b8e56885ebd83beb2152bfba12f5b320a8ef0b79dcf3d5fc86fd8cd941da07821e57ddba9d7d8068422214183c68bf8673a9a94aa30e8de0b399d9f8a69c629 +s 079e2305e398e675a8f92e31eeb0aa5847d21de1fc402321c88a1baeb150763cd483762588344805288781405283a559624012463b4cf235bd125e4c4fdc3696 +s 366dd37a870056ffe6eec271584c02d36cc6315e3f88c246926909df8cd4be5f51752ec62f6fb52bb9c5e4a3fd3a221e91b24b1961a9cd3130a7c9444800c204 +s c8b4b60d5f8e5f1b96ecedf22d63bd86622fbb27071852d11fc9a8407c76971b23304f48cc51c13fc3df3a45927813d3e193bf7e5f6e2fa92aa688698bfc64a0 +s 2e4f87f74ca1a654dd2296817a03e1db7f7d6afee4b1315748ec202e56535d4a311b8abae61b12530523355d38dc29cf5eb8d0af57e0f7317ece48c7dc58cc02 +s 2641e3f21c0e16cf0c3e8ebd457a5023e9edd3c62e7e56c8aefa5f1651ad98a8fb67b58c9330a363dbfbf9d1cedc22f8a785ce17438b33cea05b7ebb847c862f +s d388b733a1f1db02542469fedc9a151dd0da3ee105a338edb3520fbc85b5cb8372ccc4c95d240f5f2c108477b148d4eb9ad8fbb492f3e4bce1c660ab9823a44a +s 1b5fceb44d0b9cb619cd0faf0da2a0bebcf163c14f18b35471a8f65f54c5804c485b35143ecba5298ef256f03de902928f8e4f8fb17c551205e3caa26b282742 +s 64047591b0d1be85015f0899af2d7e3d2a0a836b9df2b3a7aed2a2fb091014c4d81e7491c2658aa84470ee9108911c9459a1fee8ca0b9f124da8f1379231e36d +s bd101139f876b83b4d68e01dced29bdd4480413f6925a33b4c854ab91e431b77a0b3aa90a203d7c3209ad098669ec1b612d555123d2a954d660edcf8e2a637bb +s 54ade92c594abd075ab641203a96dd9803e3f3ea66515545748dec853c97f498ba63d1359f490768c748abf341910c1d5bdf26dc72cf6c4f6874b7522ed7952d +s a6c284f1b740426d24a1a76b2133d0a20f7a71c8efed9a68c9cc23677d1620ae6d9956251756a4965325abc987eb9079ff909c3eb39b9b0d5f0d3261ff055a6c +s 07391e52978199ad8c2b097c63764d076be0b22b81de6c50a32c085bebbecade07eaed6494c29d669ab84f5848e103f5c70199dff7bce74ec31339d10ec2f367 +s 7f9d24dbffa55e4ee69cf48e33b7eb9b65eb2d84f55f8767bbfdca26abc8e81b792f7e025648d1e202aece45830a5f17b251afae922999cc1883638a2f746fce +s 938812bf58d104b135a1ad513a5390efa51c52a1429f1b861060b4d13891d2e689a0375bd3479ababd3c349de96ea51726589ba582f1e12fa407616ea26f3e23 +s f6d0c980a6d95e8190d43c9f5d5d62533463a3f63080d6c84db48ff3b804767333a8c73e44cf17aeef4a7684dff9b7f28120639ebe939582f5108bbbd8a44238 +s 926ae5cbb8676aa22dc50679de2a296d2d5b5ca919b9ff3a361d0aa455b982207e1d9a36e801173199e2bdbdb2cae312428ae8f067308d717e9d05e0e6c07484 +s d2be8a3cee061f34ccb76b3078f631851a365e40a7fec37b2fa8bd7065a5c43cf6cf01a5c31a9fb2a5b1fc60222f9f17cadb3cf74a86b630fa610a3c6342714d +s 3f65d949e4dd0413b966127c13eb2b3aea6977d292d0cae0567f1b3fcfca4783f3591aa55a9a3df4c05f4001f898a9ae1faa02bc5680eb3000c8855eeb0a67a3 +s cab9392a40e24859910af33139d6e7856e2280e330c2660b6fc165f17ef030af573adee4d0d99ff16111e367f7c33f3ceac8cf5793c905b11476f90cc31aad7d +s fd55605682141838fbc3c0df107a41c0526ccf68b390c40ffbc38ca794aba2b32735cda98e1df9d5e632beafb1d36167b6cbcc00753dc5469ddcdda935f78fa4 +s 57f15f7e4c4abc334c034c7453e184c2491633736aceda91c1edccbe3b62aa802cd3e9241371cea77285c5c900d3bc4f78efc73bf62f640408a89d63a674fe8a +s 186b06b946f4aa715d42242e6486452b74e35ac03097e56faa25c0bdc664b4b4dc418e010e22845f8c57b29b6f1cce3440f23652bb5511f6fe2866d55c243ff3 +s fd71c7a86629e1201c373a5e984f37673786e4c40bcc3dcdb9f54fccc9168db31bc6f7872ca249ec4f1f15e9d96b84f31e6964d0b9252af142009cbcd923e899 +s 333cd2814750bd3a2e13bcfe10df6e79f184bf34b3b645fa650342e4d1a6711802df8d9c18b3f63a3d2c26b10141106b24d7bf7ec00a6aaa5a627036307cfb9a +s 1766a5905a1b6a8d53e1372832781e46367d80e14e3cc261789c280d1443a3cce94acc03d3907078b2522c7142a3403da32756a1e5b7f8eeffce84150645b173 +s 048aa95b4eb6a8d3d8f0edd71132c17e99e79958e900306ddc9ad7fae542d958068cd3d32228c0765a67aa86ae22b24cce79dd92d541e343c25a916279a6dc98 +s 8920a4b2f0b30104e37f374f945ac65684b045bdcb32e9abb603a712de203d1c438afbfb0ec6febdd0d0aec61ea9c16f69c7c241065339a99d48a01f5d90acfc +s 493efa0670ef12b98dafa15b6425d8a879ec36f4883f12ee5090c8a8897a0632b8e821df7e6d5bf40e6020346cc645008e31e04f7bb9c65c19102bd4d7c7f5fb +s 88eaf393225fc6d96d517b05246139681f4a19f069609c1db7d609196d2407bdaae65d73ee482d1103aa182c1883f82a62c3c87381b9e555c0d8a06e3727289c +s 9034b47253d300f47bbc6283d7048f918ab0de638bd669a1a7a6c363db28393f2f8dd9982e6e63f4879ef6e54cd4100f0c0e9916f5fad2073786b5b526a54992 +s f475477524ff2ce6aad54a7aea77d6a787fc93bf26f75b0d2e5553fabd34f3ab073d09483b05d4a8c3e3231ad0b066db5857055664851d676b4d61b5f4cfed50 +s 4f6918e8d0f5a65d9eb9568df74a75b8ea25ca677e0af2aa12a9ad9cb7df801bc1829205d3ec7a00cf852b26a172d441e4085b1038bbbb7e77ad2b226c72299d +s 562d2f3a38267c164b5a8c8c66e04c059d6534f4f9539e86ac034f7e900de0a27c508b7a6ea03f0813719a8dda1f195c2b3b748e4f1e0c5c54116d47a5eedb7b +s e5f3d5053888d33c83dce008629e2d4743263db1a5cac0e1213470f22d8bbddb668ad6073f7da9e1455d8c04056b63d0309e1c036a9767973caebe2e2ebc1869 +s fd8f95af8519958e1818937e78162cb03144adb6adc4fcad3cd2d721683c2010435704c027177407d9bcbfef7fcafe07f8e7d02c89b8a036577930565f4ec953 +s 515ee1ac5e0451fd0dd88507038e0a1ce3171fed4b8b05a2e8b3a2ab706aabdad2bd2a7be264b209b776089a64f5867ecd39377ee2b06eee71b4769e1934c6ac +s 7e4f739e51d2396de2383e96a72abcd7e12255abc810d72dcf3ba74a3cb13d56cda4e63d2b87bc34647e6a2bbbaef7124c2bd7a31c148aec9d845423508d2f33 +s 12f9266dffad91b34368b0e2fb3d0caa6e862321a0fb3f959d7ca4bdcaa1ad45f9880423d1f1037b7fe741694c6bf7d585f7ef1945817ab3f1a2adacbe820435 +s 240367068e3daaa0bdd619bfb9fcebff0d8e5bbbf4867a6454f6c4f0984f3d914abb237e1c9fba8323a3ac9372b7e876089e5b5699c918cd956d85f8f5a9e2ce +s 8f9b98935f07dd61e08ecc951a4483067679a6efa3eed4c12a035c3e39133725f5579737dcd24cdb3705b290d72dfe2f269f8570f5e684895ce58b6562394976 +s 11b8451a841fdfe695a0bd96cfeb65b420c6b300a9145d451e7e4f0b5095475472041e2a4493171130e5c59a266566ba4c8c0a3c259976e0906daf7877e5a37e +s df7d8c825a6fe943ba48222835d5a1cd23132d1ee38b94dacf4ba4659048ebe8d6adb8d4361f7b53ce823cf39235cae4e554c0bad0ee2d9229aab2549b5ba4ce +s 3723f93e9f3c089c16cd4a391bb9f9b790051c40f3e6284b3966ff72b8648740bb0d6bd231e42102674bc896649c71ce65cc721ba0511e842e2f851171a3e361 +s 3f225c4050897037f89d49e11b907f9ef4ea0cb241ccd5d1db9cc2929d468cd3b3b4335e2d3e8bee6b9204776ce9c4355833ed8158f4f541c07a5a49b6637000 +s 40951500073db1c206f1b0cedb4d8fbbeb73a05903a9b3489a8f034fa1b66adc38e39d65dde5c9e013e4ae2fd3f133a419c63fd543790c564ec5faff3e298bd8 +s b401f1de765bc65f8470bfa8a63c8933fa68a2c613110651ec19a9f2d03b55463e1f036b49c1b097cacf3147ad85070d704c2282182b029a2b66cb069e2006c7 +s 6153baa82ae48ac34532d5a8d783b1c36a702752d5add12404337d130ef079389dbc355fa247ede46d02bf1380163f1bcf3741d4f45e542859c602c6ede7ce9d +s f9b6c89093361a430e6042bb990a2ecf76bd4b3c82ac49b9f16dfa36672c97f788612169bbceb0e69f81f2f4eaeb30e2ad69b6825d29583b02a8778daced5018 +s 2c60c37bafac5fb44e0cac1fa86fa7774ddeed71d98a2d694b21b4bb3f1fbfe9bc0d8f7f79e1ea36a36ea2ba72256777aa8a7fcbf25e718ee1f596baca007ea7 +s b48511a29d735916c8fdeebede4c2e435cc9379ae887782c602b01a04a52069e3516b6cb41e789f86ddc17d6d44aaf9ab17dcafa58fc1fd8d57688742d240a16 +s 4608f5d2ffc16a3bb70d4dc924e8b5714a3fe54f1a96bc9d912acd7a78798350c7bf8bb7a7917f6e9c9414c0193547a9c3ee3b4fef9d9a7eb4882761ccffe013 +s 27a6649393973554589dc9753f115fb669a408798d205c4405318327f1f38d1ab5e993b304b30108bab53059ab9cf32a7d0fe612f39d71f1e24222490a31cdda +s 2b468793bd7873d9c78547c70794aed4684f65767fecdddd540959318575cd4d7c385c48c95be95df8af3379bb4127d7e0bfa242a2dae66d2e26f1fb3181c4c3 +s ac3336a28498206eef22ba610c879e3c5c21f159a4504e6cfebf671969f5d8d9dcbcbd27fc21db34b21f0f1e6f5790dc5f90f93513aeb55234baecb7f1f73307 +s 9e0bffcd73a560be5dc7d1b7091073c23a9d14250de6a9b001b4f21a51e99136516de871815c3d86eec5bef2cea81bfa9dc5453d956fd719daae9b99b45dad80 +s 5f7a9c5bad521e8990fd5eca7eee696b933976ac1a2f9208cd7613d3f57725fe58a6b5845e26a6e34a53033966be36e8f8d962d038d92f36d8e2a8a4de24bdc3 +s 7c49b7de009b77f744ab6e3e83af530147fa87f75efe6835e1004a708e87a39a9f96dfbaf8cbdf87f986a6b8e7b7273b450b532938c698f70e0fb527c6f2728f +s 0186de759a77a4d73d474e74d3fd6beeb20092b11d083a007b8907481ad53a98e5ec856cf68a6b1daa53c27aebace982b744b446bf5310eb6eea1cf276a4d78a +s 337e58f52f4b3faf3d58e20b7beb1f870b9db30c69272b6203e7d00c703a299e83a72c9c65a1008b8248ea65af352bee8a3f151b9e4418eb75faa941874b64bf +s 12439b6bac8f8d9430659a2655c5031798543e6cd524218f461c824232245c88b61855b8c3abe18300b63a7c8893f38c1b49714393eab0c3b8bc63b16ee18108 +s 54bb2b204f22e018e27bc79ae885f4e27c848a27faad63cc63083109baafa11518f09ded800b18825bbd6c706ce0902a96bd634c1be632512d4aaabc8ccac749 +s 007dec3a42ee5f08080478df5ac4bbf803a9e3f76de94d5cc83c1f7fd4f639b1f5871457774eefaf51a71c1b2fede3dc8087dd54f53a174e19102cfc9dec1fe0 +s a75d6a53cceab0eb90cd2a0d86c5473873ac112a5764470e100faed5daa9cd6087166cfe7b8d732641a5e71928dc41d9ec62c087ffe7425a8adda158e2ee6aba +s b288713c3900b8f09ca1a7f45b29e3f2f05db22b711872b688a1b189d77e20bfcd43983db427fb2e96fc687cb22ce7bc0fa0c7ee89a389f86d282b2306bc0cb1 +s a4c75064346acb1327ab7f16ad60830c584d5c9b795390748a24be0e6758b76702f1eef6432030683f1c2da9e9f42700efe334b5ec809d88f96052041c51f011 +s b540129ea734b77a9766e5f46dc03e8763b55c28c1de3124a9641905b06f19de959cb71b30f2ea7de21fa6812221f3f224f9d5582a094d999d42c78f0338cae1 +s 82a2c87c75671167e4eaf999626b48eef7dd893192e72bb8f822db141e9e7331aa68dddc9b3709329feb2ce2fbbf24731ff3c952596e49f46579c86985e9401e +s 679f3d437ed16fef7b072a505cc919d0e3729a0e685e333d66925fa9afe3f613a774007d26ce213a10031a00c30c7ca8e92326697dfcd59df319c66a27c53935 +s c801315936de89155aa90fe539838d519eddf5e100b586e0cad9d150f307b5be7e0e6e1b3269dd80684d72bdde8de37c16c06740fdc992965c4326ba25730487 +s 6003f82141942e9e6c7ab8a5e981ce7787fbea1000d4009ead18053dd4763b29c6d8a9b7b788bbdaef2b17070e726b9bb6d7b56cf1ebebdc8c2ddcb3e6b272f1 +s ef2e61fe47d342b1596b510da436540989e84d5355ea0ec65107af52ace4d4004f2d1fbeeefdf0b3556966ae1dae9576266bfbdc645cc7e72cd4ae623056b267 +s 2dd57f432d2bd1b38e589085872922f3ca121b6ef918915c071c9e37a8bcdca64d6c70a2acf9d99fb798112015901c4852ed38ac78966daec3f433cc06f0a0fa +s 618a585ce177fc6d72f9ce9174ee64138e5dadaab8f5c09d39e9078145c2ea730b07c011d4fa57f67cfb3542745d143b3b1633c8fd32e5ff845573ae38c6f71b +s 015c275577c9527aa32f4ac938e7a93dc9664ed4447aedfdd1701e85731be20a2bade624ddc7a3a8ab8bc0d8c9aec26bd57ab4bf5a81d80fb4458a1afd63cbd9 +s 09b3364b5f39087dde158b9895f4c331e26082d7df4d7431332408d0163c157addc4c2bac2df7ef7f9bfcd3919a681d1aa5d798e139edbcd9a7b95a54a5619f5 +s 3f82b6421f072d68742238eb4c73e4322fa6b25b9279e51a14e9bfce8a86cd83c2ab51ad58ab9309bf941fc49c7d866ff69b4b84b6bf66ac938c16f69c8f2aea +s 2a03ab87b92a9bf0cf32dfd527fc2eaf9925b5820a20d362e541f2122bc655ae181b507d6b7e9a90fa6af68afb157044419287d727c32de74c687661f4349008 +s 2fac013bb010bc933637a606cccdd1677e83f8064f67880a1ac086557518545de1ba1538331dc41e3d93901e675156a145a9631fb92ad5bed5d9ee38d26ea217 +s eeee1fa0a06eef74a52dd325f7910633ee3ab4bd0069f1e92c80714059857dce51c1bc42ed25d87e08401b2359c39adac7623367b8df18d4180abb307ce5844b +s 874e3ec14757c9255bdae9d97b702f2333ce5e87275aed5a24cc82a2aaae682d400484b096448ed3c58b082d7ecdab2b9705c0b2b5ce65211faf0cbe1cfc2fe9 +s 23921f81ec5595e492b01a451af3b6e36f350203cb5d2769310b87796bcdde48180099be7cc9690f9788457ed9055c6ac2beece3b5dec738bd72d35aa59d4689 +s e0d23d8e5207a951db8e9eca525e9405c931957af45493fd727ef8fbc427f7f34554afbac4a4f7500b070b02c99012968b58279d6c8ea95906d451aa57cdc213 +s 01c5eeb840d9f43c297689c42a638414acfbd4a7bb53f93ea97b43b2b412e2d2f9ed98c5376069c0baab932e6247e0d52d28855268ae738136e3025bc16eed48 +s 68292b44eece25c238f7829555dcf9ec52b409d9f45c4e234bc8950fc332aa391a101f70385346b78421ed04b9cd9c521ce783af9939e3ecb690c897c4796863 +s f6dbedcfe6160af05eb9e2a953c927f62df7581700922e4c16c1d73cb81e6c0885714bc1ead78c336961ec5007ec355459ad90e71ea06baafe2f4f7df6c2a2fe +s 8b100e12d0dd3676c55eabfd78656c2f2b53eb77776116d6087ddf5ec0a19af11b10535d8d294878102a4f7524569ee7c0a9d8add07108b05e23133192617ff8 +s d8669ce8118d429a69b51037c14b26fd25f75b98fb68495d2fa06c2e2efb341c9c7d398c9294e6818f79da2a9947beab2a9abdc7d374205b73b5826d20c519b4 +s b5a3c16d100abf30b85fee7deaa1905fa5f7ac097001b39a25e7d9ed51045b99f0e02790d3cb5e0aaaaf31fe1ab9abca37a80ea350f6a198cfaa49d6023d033e +s ca6a2dfd1eb65c20f50ae979abde243ed9207fcf5e25672aa2d9925fb502fdaa5b0b924dfebb8c666efa46069f867af4044c8364c6f65cb88852d2926d822d75 +s 8eb64ff9dd69931f5428d05cd6b17990094d3d21f6320ee3640efaeea710789b1a5434fda208a521b36ce9d7bc7cd098365a71fa6e0f01c5a239034e1ebc1858 +s f7deab50fd2934b5636c63965ef87c3a1ebb5a5e8147f4ee570a49024b4be5898496788e1d3ac3d3b71e232d94d77cba3c3584af25d0946e3de0e8cb1c9049e2 +s 1874f6e9b49dfd3e8e9a63b88a5d2886830894c800f38e2ce50651abcae3ec0ece8e40e272024b114ed40c196679abb24483db18badf6a6f858a1cd31519bd46 +s 7782ffd38fded70028924e756afaabd5f13fe76d6ba41cac49903c9dad4e91a5f8a1cecc39bb5aa48cc8f97e86f72207b74dbf79b07e0718554adcb62a42a011 +s b0168fa2fedb281f6bd36f7b09033f5c61bccf93b6a3ea8154d57557876075aea37ed4c78749effd6b4ad488611950440e16c6c7e5a38e9a47e99e2014baec1a +s 706a0fbbe8f734f19fa8d84f93c357d9cec0b4d296ff803227995b7892f4c7ea16d3374b0b08cfd71798a81d52ef77a9866307976b3e959fcb0fd9c5b7b66957 +s 9321641a0edac638bf5e31ddbff936f9b62df2a9bdb33d95290abb1d7f1013b4ddd9a325d2afd7f0b4b84e93f35c949a1832605e707efbfb500bb029b5069382 +s 6d2893e160b50ce91cf8dbf47c9716313e5632d7f84d011b04b39f2a3c146c049030b38171a95da7d00206bd944f69d26dafeb2cb4a4b557bed0fffa8b1ee19e +s 952dfb9c89d1be11e7d03cef4977926d264ec0fdda1ac6aea612f881d0bcf8204bfbbff8d2e043ae0e783eaf0b3f69df049709f577c0e36f4ea9168529bf2153 +s 01e487559dc9c263e44ac59c1aa846eab58f59a017c6e9f96761e70f56d32da6f036514befbc6e05939014f15a4bf55395edde04c7931adf0133e627d8ecd7cd +s bde43a33fafde114c343212675eb7560787c77dcda6b0aab365713986f9a4c7c7da6809ae703e0d04d3454e4f3297b58283afd4f8c79906bc5d851b244bdf618 +s 20f88a6fd4a066700b40d0abdb90da3366e435312423a278b847e72797962729b8051e2483021d8f75757bfb064c44e685ffe97346fb05b9cb6f870bb61591f5 +s 5a4ec75e3049b6f8cbf913f043f0dd1b3e4a69712624965644a0fe3fbf3cbec45f05edb4c5a4d556a0428bc1f6f0a3b956cce7d73cbc5aeb0e1df6a37c49eda2 +s 419a186ebd2268d9115be7cad255c365881f21e1288b70675f0cfb8bebb6d79a2dd46986271b1f3943c30d8d0e9b4ec16a8a92591439fe615d7b98a4a010f9ad +s 1011d204e2e7e29ff9f6aaf3d688ba663591cce1ff0df64f2d6b9e5144d04bd588513b6b25eef95aafb996ce808f349a05c78e296f75ed85de764930f4e781b1 +s e76b67c8db07d070a5053f3adb95832293e73240debe1f94ed826bcac7bf22a126e245a4077d922911c73fa43d8b4da05ed4874e6a8d0b6ae6b5dbe4997f2a2c +s dfa3d67f5d203d5575c85696c3728a1f7dc1613df6d4d5f0505c15e6876086d2a098dcfd7b5dd39a89a23f6007f63d059febebded4ee6b26e260a5a7c8ad558c +s f61417e207379f8c9897f41702b43dcbd2c484eee79d2372cc559deb835dc2e91b1966d0d5789d4285483f0321472ee553f6abee08e1501dd2e11b56c04d04cf +s a44d52e7b1af9673640305ea5e30084d1f563d9913e62d7b542565b3ff72a430d1ddbe1651029f6d991d5537af4765852e453e59703a5d1adf593d0afd023a3e +s 112ae0ef0bafe23f97251a95fc443bdce82f2cc9be037198458b98d2f90359e2bef84f03d0935cbffd59397600718e29a98eac8cc0b69ff1a055e436eff1d28b +s 42f9b77e7d0913e5b86a5a0564d896bc0b4ea745348f9459769dd589c52f57b0eef590f8dda8fe4910d0ffcfa5daa9beacb31cbc334afeed850c2c2014ec6b0a +s d03d20abcf1e60f6b94d980d4c81dc88d59f7f23781c59cc34dccef21871a3a62373e525d37c7eec2c70acfe87118d810d21f1931eb2c89cc02393bf95141a8c +s 1a01c0f260d21368a61dd2e9f2eec81a5a348b1f8c0defd894bb5f73dd8774fba07d0d63ff1373dd9b2acdc91f8e801dc5b67db0f4e23fc0883e8989eac3b999 +s 74d54dfe9924c015148f2f7602c20dd01c79f7acdb6a96ab8facca65354bce0beb2aa414ecc8896c3416d1aa505a1cfcc4edb598eb66783faf1bb4b29b52a0e9 +s 0ac0b805f2537d62fc826c801d48474d67f97e3a6b82f2633b5e48bd1a5a29cc1dbbaf7a7ee5128b0fd69830f35b3330049ed0113877804a9f4406387f4ad8b6 +s 934385362bc8816c7961d3e2efc8e9a71d6020acc4aa8bf5aed66444b2f76da070038f2ff08b75c41a571f26bd03918b73facafc908fd3865b87a4385f248165 +s 3a65e2bf56ac86286a8ca9bb4974dfa2ebdddd08931f0867ebfa4577fa08199261bb6447d9f02c313b9fd14e7c1d281d19f73e2c62a1f5bd7d56a33a32063b1d +s 52aed93dc6f5d5cd947217e142b88f1a43533993e8026fc994209ce0b07dfbdb758100370c1fa787e99c1179510ce9de6b7aacd0d52cd2678818367705bd7c69 +s 08999b4af976845bc375d9fae2fa67c8c44d2eee0e94954dc8dceddff360f423a01ed13e5a5d997ab7cf481ad6de7c8d18dff9ce06fbe4f14c280779caa97fc7 +s c47a7808d8a24230c81cceddfab21c86f14f411fce3e7a79e0014bf74b60c80945325d27603079e219ec741cc8c9ad5593b2925c96b29ba4bf6ac50276955b03 +s 00c9d6bef5333df2fcbb3a3ba5b7136a604912e0206fcf61c46f9ae8666c74dca3a6c1acfc8e0650dc85271b4e37826b09d3bbaa9b4a55bf6925072d094e4545 +s 14a07ab405a8ce2bd82bce75a239b7d987583702b114799366b6840761c87af8f5c79bfe8905ad9c7a3dacc465c354b53c1f2a065c00aab3efa2b7b42de38310 +s 5117efd591e07b472e708003bf3140485b1433c5f30949289d871d06d82d1057752eca11e06f9dcbebe80b311299668fb7bb4f0c70ac71155c2068d5f6a11440 +s 7c3e6d8fa9fa4c8531c276cbcb9369bb3d903a8b4f5c8d6bfa87c5338b32d531969beff41a66a32bbdee5e6b2c6fb4746230761b30d9c29edd1cd0c3abf76296 +s 8a9ec29395c2bae6928066cd19871a5698a08ea4dfe380754404d940509127154c1bf6c3802efb55f65c9368209b26be525ad393d08717a61a384ce37a66c0a1 +s 734760e125d65cdad2312a502708845f7284e620f5212dfa5d74b2f0c94cc75bdded4355ee97d1f27d01cf9cbff569b956d53b484c39804ab41e75ee0a23357f +s 0fb292066fa19c7f934942beb57173a4cb331109e6c29601bb81f3aab19e1a57aaccdeeeb1d82942c2c825450c1daca01ad807089ae01ec0f0494009f5a363c7 +s f011a1128c5331594a66663f48c378c81576b9103c60c403ef5399943ccea8159fa1d8d59993cf0dfcb537133859b4d13cfd3f1a99585374949463ab5e048086 +s 56f3ed02bd7facc76abf23801287e6b57c94ee43f5d61c045bc98ff28bb2fbf48a76f93f43cc73ae39519fb741e1f072d70d526e369f1d5d34bc59fef63d5e18 +s c77956b86a5cdd73f2b215e95bb9add4eb151935a0a73c72348e6ba6160e721a2328695701c59f1f7c59e14c6cb64a9c2d26e6d7d7520e4bfb4013a7a2ee5434 +s c56cac52ebb7c7b3cd2cc81a45c13ec4059beb4debe9dc0a9339ebe0a55f709612cfe38c083862e316b1499fb74b1f99e6de1fd3a368634bb3a7bdaecb1a1dca +s 8c1325a92699be9d76c114857eeaa1fccc199b01c3813bbfe3467b93fee27bcefd2847e50588a747a65dd27200abe55e9ae0c1df9d56a26b5168b1086c1a908f +s be571926ee24e18609c05a2dc6e395cc704c96017f5ef4eb8c248755b6c044a23dffc092436d04008ccb51a6ed7cd7b88cbe65dad49cf5d621d813973a1afac0 +s 9aa0395d520ebddc92f140442ffe9c38a513a0a8c94526175d3d83a8beef33b09462a64de6e2fba8a2c90d024498fd2cca69f3ed6e1e04ed03d190b3340a7cdc +s 359a6de85d92f095bfd0fc2723d63a2c9dddfdcfce240ba06cd67e3fe6d15335ec1923e636ef968d69c1f5900335e259774ee0567733b6b286041a339d1ee27e +s 14e404162faccec8a5d3f718175e4a17ab0820c81227ed635bb53f0c9c822ed543ed52309b2252e46bf9fac285e5ec1564d8191c586ac576dcef6b6ad98377e6 +s a640e506771366762b5af9f7a787b50822e4207c8dfdce2860877c81651c123391a8213140e81e1a039eb832bd3867a514d7976a22a1b14e357269bf38c93927 +s 095ec6ebc9f162125c8b2ea7d8c75a75e4d410df44475e20e133ace85512a4887b04bf0019699db26e5e0d559fdb19eee8cb00d9b511183b3c767cd1ff0c4608 +s bf69d270e80669c994c1f18ec0b34ff170df8baa39e6001343898a49f05d8badb0976d1cfd22cb30735d01ee29e823eb8d450902c0aa90aa5d6be08c1dbbb51d +s 02803b62035167ac0df91f5e7070ac452c28b291e16698a23f29ea88764f074795783434e2582e4625921ba2958867d022d281854561a83af229d8e28b0cedc6 +s a9ea9bd38f681e63bc0c437aa6730559c75a5c2dcbaa46e12335f5f995f12f7bdb1612abb66a90d9255d363d3cd2f8148a506bff0e16a3763e71bd959b0ec8fa +s e89216a1e402b2aaa5e7ffef9c8ce29ab447164db77b005453dad2d93117ade92966d8306cdd45f6f20980b0513d41eda46e90c716a59b655a7c084ccba86305 +s a3b209efc6e5903b85ce0acfcca3085d5985861c3d01ba3df01252b3bb06173012be2a1fc3797ded3eddf058a178458fb728a6b95dd942fcbec720915cc0ad1f +s e4478027359ec781584e05c14f52be5723320a18d04c2d5a57ead7742f826be6d857693b45025e34b4111dba93871d44b66a245830bf078807ffa170e63493c4 +s aeadec7bbe13fa5da869b305865f2841b1223e290b206b0ea61762f71960e93b2b2c221c97b04b81983a77aec251b2bc7f86cbad433df139967c30724996f389 +s 9fb3ae18e706a08af57f93a43d6e71e3f39fe80c3ad635c85b7abeddbca07e2d8f4226ef0e950781ccb4c6cbb057386ba44d96569e228fe105f73914bd8d1a78 +s b61e5f732c77a0d7fd02a1f23a663df401795acd0877cad9ed4b3db4b471447af201018a360df69f21bd72ce41cc16f2c4825c1de33cfd2f61fd1aef5dff98ab +s 23e306f54892925dc9689d633472b227e4b03e76861cc0e6c50b04c059f00a1c7dc8d3196659b27878f22ff18bbf3d27e13290d65f01f6a22eb55c8c10e40294 +s e3be62ef124c18e4ec3be78774851768f00a9f229a9d2148febe2446f8f3d7c9b3c2a238825faa955ed79c49b64e320788b86d1a101c4a002c46b55d3cbeb5c9 +s 11347fff4b49019261347358d5e64eda4a1210d1439df19ae4c00a4d4c4fd2cf960fcce6582e8548fcdef15dce031d4784ad1cf5a2e892d80e2b44152b6161f1 +s 1671a251ba5d849f5a536a4ae5952b989678c26eb0789c09b4fa786f1268b99fef84f8e8f8556dfddcb5f9f06766a12efcff0ef5294cd9ae9dbbfc6e2fbf9dcb +s 967d4747ed55ccdb796096f4e9c34e594a2b7d20b535101e9c37ea2e70e5e169ed3eecddddf2e8a1560ad3f15eec1b5577f7a63984df9960b6c90d8a2374992e +s 786fd6732adacb706df246470b66f38fbe77fe3d700cc50fc993f2ae4a3c1605ed9cad4b3c360ff451bda1795c435a69587af666ca1ce8520386c9a7f8672d44 +s 4baee41a48ecec5cf136d14565e422ec3cc3a17a10f26f18ec29444cc9962964d4f2fb434269f9e12f35786e0a27dbed348c37491215072e36fc5e6284d9992c +s 7d3f0ed134ed9d982af74d8839968dddff35c6db934d0f0a63043c320ccc8be4dc459ee182466702dd3e2b7a135b77082748732a6f9f2ebd32e88058e7d640be +s 28e617256ff498635e382058d3ccc2e264d82145c7db11cd8789b8e452f24569b400e3a9c08b40a50a782a9c20bd7ca91a674f73e6dab05976b766d057500acc +s 238ee63ed0060ef107c17a05985299d208151474dae2a63f23a723016556182ca43739d00c100c6c21b883cb6fbefd82fdaf0d23f8aeaece77a53ed49cf52552 +s 21fba83c05647482139c6089007ebc4ab82f003a3b1bc2d556290f164d5c21cb5f310c75f823893c41f3855d361ac2c971f97246b7648b2326d8bbadf5603537 +s e35d79711ce320264010239d027c69af9b0a07a508c27e289ab285617c6ce4caef1ed4a491238a9c0a59d606adbd53d2829397d4c919065cb46e49ee59f34504 +s a9352e982763f569e04f84b0e42df85527f28eb50dde355f6c18aa3de4884f020ad382f78fe658eb45f2ab6b153cf1fb439562f47b0bee3f97937eb9f952a9d4 +s 1a9401b73d87be95095744586a6463b0eb4e66c5b4e5518c2ed507ea7a4470530948c0d127af699e0d8c1d933bb82b1901a9cb0cb7b80a55b46a6ef198a6afe4 +s 2db5b24f4f58aad8b322829ebd50c96e357a98c1b758b47c8ec08a7fc0aac81bc3bb7e30e2567a95b124f7af2e1d30e2af266f4e6adc79b55db52e64026121e6 +s 9f7ec0f8064cca441100ce391d36231d41b5ee5623cc045e4b21a023370936bffa4d157779c797e90a3d980734f7cd625cd092c1bba4163deb91304ee52a21f7 +s 7848c12eb45d00db0635c8ecba4cb698f21f1bb93da5d1aeffa8e26e62cc5f190fe46c3cb5873364c0bd512b92f755bbd4a7af611c5724147d58a3aa86e7ff4f +s be1ea84308b7fc0192d75744709a59450706e73b0132c25ab83c3767e851d0cdef48ca4166e6203270c82d8720c677a17d0bb0c17e1678b5bb935200fd7ae03f +s f9cbe17d44c0f84c6130060affd6110486e76804049f7aba448efba430cef0df9d8ea57ada09978f79dfff2f02b622a993f48eb7a62acbb7fb0b6182f36d7333 +s cce0ad1125f9bf7daf57935b4566dccb5800d9d744a7188c96e83e2384b7a881f7a52f994d34b18d854e371db174d20d1cd80763ccaa4f02719a5bdfcdc514c8 +s 2237984005725629c729f109274dbf7b94b20f372ec6125f5b98a24ac878660c0a99d9c8eaf0a9fbfecbad990855f293ce13093da25d0dedc348d11b991550b1 +s 4322b15711ba649f7b8e6ec6df48ddfa60f9a5a267ac060cd63ecc7b7c38480b654175391e07401c2d87a30a424575f9e517b05818b7293cf3a62671eca46fd0 +s 476061200ba21a29d7ebc2796ebad7aff36eafdcc2e368062e617a2cfeb3435ce2b8505007ce1433e3827017522a270039a0f6ca7d2a2522a07b72bbe79e12a6 +s f602eace8c8bc9cabb577faacd8a9cd0b6af0e7bcadde7e4d64f7d8762726501703970f2ce1626ca1ac7e32f8340858a8b0ea17db2abc19934f29da859f0fca3 +s dacfe22a6eca448d50551a40f1ddac003d721a14b2a5354d944cd73d67c8ae43ec9dfb104b28035024ba391730192b933c740237612eeedb9736f57c7b6c2802 +s d76274ebcef2bc7efaf1d5e5f6ceeeeb2143ab93a472b6fc32487c648966ebf118f440902195fef9ea816085171da06f4a157bc4c62853717f0e6ff64eb82c93 +s c9d48d037604ac70e056db6154bb767882ba7dbe52d06886dfebda2af52459005553c47ee7a31abbea2927a08035c03d81046a916139ec6e2025b922c4c7bb9e +s 643f542ece4be090fec317654f101d46da60022a023df550c3674754a8472262f2fc24a17c0697fc913f48a86fb4ef46237bf9c59cdac93e4d78ccb1d7f7726e +s c1c508098d32d95ae75a2701014274b8f44e09aec6c745bae12b30afef6758047879967401dea2f31bacfe86830543049f54bb5cf12d44108eed07bf78e42469 +s d9dcd4d5c9f5e4d4fe21f8df6f7732baea845cfffc70a92e223fd2cd16a999c845a791612fd266bde4a3cb55cdbdae8f64a17a53f908370bf0ff775be4327cf5 +s c59ae8ba84829656a5229bbe38531383576f83b1e8091e215cd8ccd7143455dbdf323bcdb14c0f7c0e8198361aa1bc8207d53370a6eb645ad5af51a214c14001 +s 164158cec1d7606d7bd28bc7880460d9b92294fbb8439c75465e5a78a9b65d292d8e2c78be0c898f22fb260b4cc6f156446a09760d4c075c344b00eee9f39ba9 +s efc6907a5640bbe4142ea2f571582c967d91711a9e84cbdca0e9d90e68019e6d3b923bc8f4608c0d09d8361e295962f8d75374d5d1ba8253f5d1beac41f61e98 +s 4c059e1587d481bc3b9f3edfbfa2d53c7963b36753149fad93257922b3258ed4b7f212c767a8035b5f6c33c7cc5f02d927ed654fff16bf416d09f98b02a3611f +s ec3c0dc037b3915eaa0e99887d80cd29439b5dc0da84f6a580b5e59ce3fb814099e8710bbdbf29e702f05142ed0003047aab9de0dcf67411a38fa4bd41b158e0 +s b7eb91d90140e4bd38e3dcc91bd21d32fa754df06f540ed45172ebd2e859d005c4becf7cb6ae7acc21371fed3f5f00b949b51c195a5b4cacd51f3d8475bba06b +s 12c4e292d2da8ec3b0dfabbd4aeb96729a39901116923663b87bf6fe202441daa521b57e186af1965095482a5ee12099c02e787723d73fa6cdf7676cc023d194 +s cfc7af69db2575f49b0e37ff44ea068fe8545de9803f08bc11e35b3dbd2850147f2e104c788c8099be2fef323766c35c6a7777e63052fea617579990bdcc04b3 +s 2e31fe2db832e0a5a04a0c5ec8856a28e9934e84f45bb8b7aea376d0b65f6708982adf4f3c415c7d9dbdd0e25295f8f4123bd926cb0d638f06e703ad324a03e3 +s a5b0c8f2de44f88690b758cd7d73b08783a78d4c1b5e148388c868594270d3be93fb0077a72bfce7c046383c4804e2db654d69e31c2c4fd57278df09e425c347 +s e475fc91015f2acae9c4797e4bafa16ab8c0ee3fdd04e12f25581c63d44252b014ad29b0a5e3517c99bdbf37a57b01d2305278552c015a7b347eaff32f737786 +s e375c559ccf6689b4412bd89c10aa63d27fac46aaa85afc4fc203d782796b5fd12cd386a17475d6b386fee1bb800ae434899fa4989bf0f7c227c09ce0302da45 +s b7797dde2e15531020fe2558ef9c47cb586fbfcb46969ba8200fe300af9c4e0b2b8550f2b036731e0e560356a8b95a80a7a3b840c275fa3b58341d010237ac9d +s 37a454d5a3639aa3977d6d3a8abec1f6feef59171b271b43837b8ab74094cd6dcd750213b7742d4deb46aafb99c7478c687f62a768206d3b8d1e04053751ccf0 +s 4a643a8fda0e26d808e274de7ddc5ace091e2d3b0d802c34fe0156de94bd06f1bed4d907458b5195328183c1aff110a2c78b16bc281e3b34d067ec0145734474 +s 0bb8ef42845ff1dcdf2c02704813c362ccc96895cd887fbc6e7672dae4d0cb35ddc42c0d33485e03315c5179e6305a0a333510acfd86dc8e4ace8324d03e03e7 +s c5d8b3b1f80211adcc486b57307986c89ea186578df22afa7d20d5665edf6dce535bf8f28c35e9950b3bea0511ccecfe30ad843c98195feaafa801b9a4c503e8 +s 3c9ada25b4f1ae279e92965fb44d06d88f7c32443fd4834eded7e1b8d72b005b311df5f48f3b21828683017a419eb8941d78be93cb5577117014f11cdc4d3a3e +s 80db20468e373ec8d8df0cc525393769f447f64944fe819eff9c46006880ab43e47bec6a974543d961be59dc4d7894bb98056ea2c41be0c507dca5fca7a512a1 +s 435c3473b53096c597cc4dc66375333a248bf282e31ed10e985bb234d7c7b8361e52081a2b57814088405ec0231a708aa533269cb72449a9524a5b1ad7a07121 +s 9edb02ae141033d37968214ff07e6d70b3274cd60d1868216cb4911f17d9ad11f7ca535f56415ceab5d68e4713a3a6dec2aaa0730d842c26da8e86f65c1ed844 +s 91dd8277d5fc944c3a7644b9e20d902fd6cb5b0d9357f2a750881a8ea74206c96ec3c41cd6b0fa9e377e315c1c4c74ed07cda7d57cfebc082143afbe8ae7c435 +s 77d5768f4eae560d335b39328353f6e7ddd14d4173881b398c4f070a12361c1ef7d29bd93e4fea8b8bd35750526a6168bc26a81988d91d167896a2475a9c6065 +s 291ccca2cc1f95f7340256e34e45d37c71aa73a0ade0e45c3f604b0c3a2ec58b218896cd1a116c254f28af51bfc590957ea3309de0095183afcddc024d61d34d +s baac2eeb976564bad85c76a79ac27b80bb50168b5320b0eef144b534fad76d32ebfd76c44bb49cdef85ac75637e9feb0b51481f373de13769146de0c8554e589 +s 573d1cac9339b979db54ccb1b85195d76791ae48f9b63609aa7132a372566b804c099f49aa3faddf976020ef6c5f7aab0ae3634bd908c65ca4d4326bad8ffcd8 +s b65974039e47316acf37151d68472c321bf3886f39fc58498462e55e5b0eed43530ed20f138b76ff989156628b1ff395ad5728a1618daf8678d8f2e2b6390ac9 +s 3774e61f7fd7f825e738069ad397abda52f67c47 +c 236054ace4d78d47baec2e59e2e217f019cc88837e6f8f79faf83fbd1d1bca277a95bd47168a3b38c57a2609e987a1a7ab1e6c3b6c44d0b130873373655c847d +c 1bbd8158274e5978b86b72776bd4677551c40277f9740d048e33c2c523b720e658da0ab15bc5c86ccb0c35f4bb5a55ab29897d003d4593803c75f96aa14427ab +c 599e42b1d9e73a9dd2d4d4bb41dc4fff2214132d2c2310bed736431a6ffca0df47d098475738cd496c941a0cc6e5bc20870b9a9bf9de66434c9a797bb8759a26 +c 143eb7a10f59b694f898bb0db9e9ef7358b6c5c21f1901ca4465342f426139574b269db1dd37ee9b50222b0abe3ec049b755214ac5c024ab7a18b59800416885 +c 4821a0e68eda7224d946159bcab1b53fd18addef59ca849e742f204b06ad4a3d00cb4f387855cdff3a713a5b36557780be44d0e17e38b5988cc9ca7ea2ad803d +c 158c9985c79e3cce4e5e63615208557ce328c357bd033bcf84606a9655d7bf459380976d6afa67011d53a30d498eefbbbaaacba243b5f5de6aa86b16117c9bad +c d22f51fb4657f983a9cddb50f597c422224d77abe9baf2e2f55ee6a174f49b100e38818e1c6c2defb7de4d274035d1c8d302ece933e6f0fc0712e77e8bd43e68 +c 77ef07dfecaf9c2a4a2ee00193d33c1ccb49477e20bf2689d15da1ba8b78711f0e536bfbb293bfe07c87e775763a6f737032b11e51f404c95e5024ef9bf68f1b +c 86973b3739ce0c6d24a1adc2f6c5b37517e53d859b77c485393390726e5d56f259b26e6778323b7fccb1af803a9f4fa1fa7874360f94cbffefc5a18d740659cf +c d57b4da291726b72f8b8d6f144b26b8d0f0a366864c6027ba05be90aebd0c00950d01a42728b3fdb47edad46cb5ea7ef0cbd91f5132665086feda4f1bb6e9c07 +c 35356608046ed1f2eecd1adfd760a9686fa6df8cb1b9b11b7a59118f81b5c179730068e79341becadc8d299d02cdea0885a06232b5fbfb7297fc39ef5ac7d88c +c 8088a8dd6709827c4e3ec1bdd155c06119e03b3c883b60481801ec5a191a72a3cdabeab57895b16e30249093dea0f93851debe6b91d33726e35e695f3b4eab17 +c 43fd2e2c6dfc55fff15421db25f3df8772a4dc5bbfd4dd8192230efcf4c8a19ce79693e79b2bee9d97517b2bed27304f047896de0fcd6b3f1d6d73b33dff4607 +c 306d461e6689262e8f704ed6e79abdcb728763b2db9cad833dc5c2a0afcf60023c31edeecc185aa54aded1928c446a410b287f8130aacabe7648022b359ed90d +c 0260b81c000e9466dc128e56653cb2fac6bfda613e47ccb3179c0fa7fe790cb971030d9cff53cffb08a5281100ccd997a18d427effc800629ad7e8b026751056 +c b4cd6cd27da5f673b3173517428d2ec90b876ab21403c3559afe392ad73d8b6cbd11363f857b7f252c9b93484a84d72ed93f57cb666d5e3f0a0c245e1a7c7dfc +c bd88a90f405a0e653e9b06f5896571ff365b0a5998d7ae67963550947a8ff745600dfcd7da76fbec73dee784d46b9e4b8ba29aa1dd97011833dc5f65f7441805 +c 6f3ef31db0e9e66d808a703f5f18af3a6561e3f5e3b201f76bd239a8419ce4332c43a219f127a200a34ed2c56cbf33687baa7c8dd83842609649e1e875ca1b38 +c 1f4705dd56a1731e2b4d23a2bc196cafb99587fa2d3c740f5dfd3f80f1091391a00a38c8f0de98de10dff6e4456fe5efda274d06d21a9559cd0f936e4df59ca2 +c c00384f06968ff7ecebcced0b1c5daf3d306fbcfe1ce5e5a40c6eb2b3f5c05fdd8c784015a496aa5c99b41a07ecb21896a405e97357ce6b8f902314d4abd9542 +c 68d04f0917442ff310646adf20368b2d3be667215c5de96cc335f9bddedc13175a33b46709e3b1786c9c9b1007a84b39568dac126a183b1cdcd987c7a4252000 +c 497e5b43c5931260e284a4b39adf3285aeb583d6741ea066d9b11949e156f93ec2e695e663338b6f56a5d70e4c058255afff3182ede9939f0b88c5ccf7ac9a3b +c 80e48f689823731671423b76bfed3930a42ff7dc0f530084fa0c6a41674381f88e60998f9fb5c1713fd0d30c7985c5292b76aaa67b16fb3fba6ace948a456ec8 +c cfe2086b85300e903d3625f61f724a8311dcfa1e858e7338db22c255be56be7a50ea8b016945665555d187fa6d7cbe29d1b59eea6a7be0153f3a482191ab9143 +c 21055e7dff33474a9a55f557b7abcc74e02bcea72a0f34e56880f804a99aa7ae67a778d53dae0b43c05b9e4de5316549116fdfe2ded7c269d286cb8653e9107c +c 56cba36e7987ff08a67af3b63e334ce69679d4f3c1b12b630c26634d40db73ce249b86394af4258740547fa658a826e939f3a5943c5dcf737e0f9792c08e992e +c cdf93a69c41e4566 +s d071690ce588aff89fcfad7a364831f9c5d250fc66d33da4159dbddf3be366ba2ba6ae922f684cc9712d1797448d9f20dad762171531142468ac81534ba69b76 +s 58ee146895df8fe193b079f400da376bc3aeb582803a67052577eb189b2bbfd75869e7c822ae094f23f9b3af0491085cda10e046b6a72ccc883871911fd7dae9 +s b6b2beadb08258f53bdcfa5bce9caff0e7207e4a438c649d1bece6803acb49396e30a5d6e983d81bde1c927bbc0596be2d173eb0b39bb3bf92ff5e995f294a09 +s efba3f034d48cfe38d57e0e26f07b21f7a192132187a317b42393af5630b3739458f89c7588b663a0f48d918 +c cfede64286a22dbf005bf038de99e2920380fa30dcb8282ca5e0979d92c63ec21b912c87a1c0f5f4a429927be16da2eeb09ab31fd123e95533b09f4095d83dea +c 3162cf77596357d39b17a597a7f1cdb9d84b89bee877e74422adbf407c87fbb6f4fb1f18dd52da1020c4a3f8815479987b2eeb8ac003db558cafed4f7fee8d18 +c 2fd1c5fa5263bbdda956016732e0a476ae1abd05966661330a3fa54bc37c28c3265931cb882a19f8cefe7310053cc6fa5197909f68f5a61c9c3db883c7f6e660 +c 2c863987355cf0d2b013a0ed0447463e47e83106420da4d8b1541e16edb8c3eb024c3d72236d534961fb2bbddf2b032a54be58bf4831e5199bdb49cc0bc433af +c a482560af22812a02fdd38f04b768a1c5d2f3deaacb99f2f0a04f6e34c6581806d908005c0c539ddbd2f4b4159a7284effc6651f2d3db0e95f12338529b3b0c6 +c 51110a6cdf1934a5f7ae3269967249cf2800a5bad475ecaf695269714aa4872ac9ffae6369480febfda645e62d3bee119e6cfc6dbb792df1fe6fee88dc39624d +c 3cbe678a763661ed95f5f77381426490df7283272281e24f67890e320cca5716ca1eeb9c8d506674c79b7e50e26d25cf0e8a6a842704854206dfb5cd5dbf3e2a +c e74bf0d0e0fa269364fe55b01e4eb84c5826741443374a2d43e49f7c71071734c1ea669ed3e13e26f4d2e01d036bdda680b0e50dabc10edc0153df47205d567d +c d55f94a2bd498e8d720276ab34c36985b764286dd5c11e6ea562049fab6302d78256ac87d12e09e23fdaf0da7fd9ef71239133d5914dbf56b31e681487b1fdea +c 63e028b6dc54ec55417901d0e27c2620c134b2e4655451197759a25e03522a91d61b1b9e23775f50a646614986a69d1ee69713bae473782027e5d43592706e22 +c 49364570be9f16a0547e3d74dd93ae0cc84cf7a79f86103990d0ac222bfdba2bd2bfeb3bbea6c9f5229ff1754cfb8300465c584586fafccd3031e95d0360aff4 +c 95e63592c26feb91bd0d588e801269d48b72389a10c43efd7d1d6b5605f66a3647d6dd9853628fd40a2196ba8d26186dedcd3f1b9251b7e291573dd65a7039f1 +c d75314d9e5327ed2c3a6c61930c34a7c808ad1614dc36d524467b45c5198a81cf223bf38457d5a57b479ff13d3d10133ee715b74fda747a69fe5dee6610f0aa5 +c 1c5f1700dc27fb90dea69f4d7d7539b98a6e532350c358d21968722956d696da9887ecedfb14b5925debb696f158c32e6e4ec4ed4bee28ff405191631e6715d3 +c eaa70d3c8d8099efe0a0dee8138a9e62468f6153be2675e9511e477016193fd585aa2200a6f83e9e0c1c47459c57653145206cb08eafb9a131467e1c0bc31629 +c 9cc6e13fb3a1b8ee25757e711a98e8c4cf53cda86718083f4ad8c985e1c12da634a89de3d19dd493eac3f9bbab0cfaf4db627a0ba5e79ed0eef5433d4b2cbdc3 +c 7201c74ad662ba1cb0b46ea0b2a0499a7bf63da9da89fb9161a0e38c60baeea993194fd9b6a5ca74ee07f5bb101fe414cee6a02ecaebb3d49098233b0dc604ab +c aedf5f284caa6add7454b4d744f9dd8df321d79a04bcbb1486b8ac5e3da91d5af54a281680c4dd2b86ca4e3001a53828b7b8d84019a04967b7bc51ee25c5ab57 +c c80542e4e4e9c6930315d307778e0211ab9768e9acb3b2d3c9933599270527a8069859569f939c46105c27a31d341b6ed75f7105934115c6c647d5a13031062c +c 1309bc405290c0ed6bc9f06f4be6ad3c088c0ce73241efb24617001354c8f50db5c8aa0a +s e1170b02a17bc46003d9667f3a3af084de0a622ccd22d6ea8799e37f5054d05a80cdab362f34cb6266277959c85133bb09f5221239c31b4ba885451db73286d5 +s e3c697e0f82b4166d11877f166c4af163aa66df13eb9ad3151d265d97b28e9bc342381e5694a1058ab4f9ad07f61a2d8138465e6b4fe76e6c398c3d954c3053a +s b877f2dea8e26c1b27c1badf33556049baf1b1fd734c641b6eb53e7ec6345b8afb3738cbb3fd523f688a8bd8e43ffa6d29a22a97371a55a911865de5bc62d223 +s d3150130bffece8cd5cd45f62e31d68cbd14b9cc05153913ea82acab56fd4fa48abd4b7f970f7de89f4f6431159e8fea8ab561f4604f8591f0948f087ef1990f +s 3d8372cd22004c4e619ba9d8400eea0ed33cbac63142fed8b6771ceb888f820b483a3685b9ec3b4960dfcb9336788bd56d6b6c8ce6c4ade5b143353c4bd48a47 +s 176778af98373f53922a0128907c706e8ec6a192e63f454803bbe79138b39a27e6ecd3b322dc51dc972348924cde2ef87a6ff93b221eac3801269efcda810615 +s cdfb90f96aae9a79327f02cb6aa41080085a7f1759095e9c08989603a881711d03bbdbfd06aa20691f8a9a3190018939871390827b28c8d299da11a1870f043e +s d2f2ffca42ab9be76d46c7ca6a9e9845949974c3294bac61396fb25dbeb80ebfbbd998bef56d8de4a646d8501ba5546932baf9485ad465f0de453753dd898254 +s 0f0f081ba76fae1194c47b1f82474ffb91d3e26bf90f354a1abc1ecf7cbbf01123517173c1ff56d3c606a654930008da6d76f6e4cce2907296bfb8ca8acec51e +s 353d13147771e804a1b668c74eea1fcc7bc248c4735fb12e0c4c1bf72a8ddde960e44ca326ba07e0d133565143d85418449f748e77567423c9cd71cb9d8172ea +s e345cc08f35ced1ee5aa6d2cd07c28ee43fb7ebb6372c06b451a285462c3c4c16424a25faa28cc851f22b834a1f9a1f91de9fffafab0429fb989fada53bea9ec +s d144c94ff42dd6ed5753c9ac2048b080b6cba2f49a44dd3c6bbc3cd7f4fc6f63f831e650ff4534af16d453873fa9fa325e59964526884729e017c8a8955305b0 +s 5f5475aef193dbc8629e239ad3415bc27f17c5e030b7afc7faca81b6441a9030360be08422556d0b8162395279e29a2492a12603afac35486981f8c9676d3b81 +s 99061343d4d2221f41a3efb9b356964ff664b18493f4671245cc142b2d4ab6a71a087da10246da338f5150c2fee40c0dc5148117dfacb950e7fe35d9524b8db5 +s 5ab00926f340dda0fcd41f2e0a61742250c6451fddc23a5216d8cb71fc91c145c6fd2d62b8e0e1d86730d83b2ed1bbefc1aa00a72dcfd73202553578fc29f662 +s 75f6d15915f4168e090a648f0a1ed82fe2b29fd1795cdbcc858e70c2441cd1e6347aee68789db250a0b674412a73ff0e38cb7eba764b4820ec44052335a737f3 +s 606885197820ef8f7891e85b148768b4e55502e24d90830c1591f7231d339ade3ee0b4c5ecabee25fa54fa54e2968d91680fe6b44981b8549ebe682464df115e +s bfb423cb7796389136b805c31fbc64ecf399789f16a2b34d040fc48b8b3413b89d5c175de5cfc836c702e43dcfa1a065f841bec5fcaa5ebea5a71b76e349c034 +s b0036c10fecc5815f3a80aafc16878001fe442f8201356b503815181e68c42b27418ed9ee03401660403689418f1e84e8d130c001ab494a3ca2dcfc956b8281b +s 815a2bfde323cebb804b6ef0c6fd09bc56e743d6fcca7636d1a366a9688676779d0860fde55022456d3a66020b8550df38ee9209ecb9202c2ec05c847cc03ac6 +s 4e9bf678e587c9d47d192ca5a8830e2c9b521b4c76d99652852af6bbf25dfe6b09381d25a1d715ee +c 3e55381581875668c7cc10f240298295782af6fe6db266bb8149cd384789869362cb41729f424bfc49bac1b8f5aead4da804b72a7a235466e0f0d34ed4830156 +s c815ddaadb2070ba36be7118de769344d1cef2d360f022b06b15fed88bd7a228777f1a20849802c080a5c91a455f4f0cb5504c2bfa22b38d46f9c4d3160c0ad8 +s 9fdd00d3c27c830bd87158800d2a3ed7bed0ebb554f81c9f4961bf0bfdc613b0ab47a17b561eb0ba58b38792bd3466dd5af486f6c28f1011572c5f36 +c 50ff4b2a66194c4a5caca6492a71248b0bc6c3a6e474beeb3bdd92c98b6f1cd88515f444b5a780b80c8d2b7bf5167e7740ecf48027a61f2b65d77555282f467e +c ff5e0f6161e0eea656ff2c323d7a182426eb066fa799e26380b9c60277eb4024 diff --git a/build/ssh/tests/fixtures/rsa.transcript b/build/ssh/tests/fixtures/rsa.transcript index e7495b1b972..b1e7bb00821 100644 --- a/build/ssh/tests/fixtures/rsa.transcript +++ b/build/ssh/tests/fixtures/rsa.transcript @@ -1,11 +1,11 @@ # ssh -i user_rsa toyos@127.0.0.1 true (an RSA key) seed 22 -s 5353482d322e302d546f794f530d0a000000c40a14222222222222222222222222222222220000002e637572766532353531392d7368613235362c6b65782d73 -s 74726963742d732d763030406f70656e7373682e636f6d0000000b7373682d656432353531390000001d63686163686132302d706f6c7931333035406f70656e -s 7373682e636f6d0000001d63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000000000000000000000046e6f6e65000000046e6f6e65 -s 0000000000000000000000000022222222222222222222 +s 5353482d322e302d546f794f530d0a000000d4041422222222222222222222222222222222000000446d6c6b656d3736387832353531392d7368613235362c63 +s 7572766532353531392d7368613235362c6b65782d7374726963742d732d763030406f70656e7373682e636f6d0000000b7373682d656432353531390000001d +s 63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000001d63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000 +s 000000000000000000046e6f6e65000000046e6f6e650000000000000000000000000022222222 c 5353482d322e302d4f70656e5353485f31302e330d0a -c 000006840b1453a62b21cae82c9aab3c3b48682280a20000015e6d6c6b656d3736387832353531392d7368613235362c736e747275703736317832353531392d +c 000006840b14f8b9673111f97f77046df0cfb9343d370000015e6d6c6b656d3736387832353531392d7368613235362c736e747275703736317832353531392d c 7368613531322c736e747275703736317832353531392d736861353132406f70656e7373682e636f6d2c637572766532353531392d7368613235362c63757276 c 6532353531392d736861323536406c69627373682e6f72672c656364682d736861322d6e697374703235362c656364682d736861322d6e697374703338342c65 c 6364682d736861322d6e697374703532312c6469666669652d68656c6c6d616e2d67726f75702d65786368616e67652d7368613235362c6469666669652d6865 @@ -32,15 +32,51 @@ c 322d3531322d65746d406f70656e7373682e636f6d2c686d61632d736861312d65746d406f7065 c 636f6d2c756d61632d313238406f70656e7373682e636f6d2c686d61632d736861322d3235362c686d61632d736861322d3531322c686d61632d736861310000 c 00156e6f6e652c7a6c6962406f70656e7373682e636f6d000000156e6f6e652c7a6c6962406f70656e7373682e636f6d00000000000000000000000000000000 c 0000000000000000 -c 0000002c061e000000204ae1a79f977ba71d703d842e05929121078eb44d4b6af63babc3a420b7a73c7d000000000000 -s 000000bc081f000000330000000b7373682d65643235353139000000209df408e461d7e5195b4f91a8d6be83d24692e5df0930aa782291fff455ea3924000000 -s 200faa684ed28867b97f4a6a2dee5df8ce974e76b7018e3f22a1c4cf2678570f20000000530000000b7373682d65643235353139000000403fd6899cae5e748d -s 8ddd5a708c7340e478f778a31de544cb9e888020cc09c04fea2c9e943720918b2bbe271ba4bd07f06f7398d85acad19ce1d1476b7b2b2f0e2222222222222222 -s 0000000c0a15222222222222222222229d0f015f95cf70f3fb9f7f9ae1875fc54290051d798a4d492ddc679d097c79f9f1f25643f96b4377fb9e3ef18ea8cf83 -s 06eff434bed2458c03c1f945b83b649c958b9a97 +c 000004cc061e000004c08b916943c25c2d60b0756b8e2a03bde0ac8686b9462e1a82707bbd7ec1aec5f30c4518410ad574d4796659392664301925997b22d221 +c b09131ba168e67468691fa97cda96a5cb6b0bf820d5407c951c7b66c9747878c87bc210c795378954b278bda63df828cd3d353d91a163e14995cc43647c91383 +c 29aef1e5191e364aa8699368850102fa06203a0b6a56980b6c3446734599fc8db311af65b8a560c9686518be9f00a56691c49837143bd9a5e73b015ed889961a +c a506c3592106d079386c52503d27995bcf9422fc2227b0a5c3edb5a72f6a7d1324b45b039aa92530224c5fac0a0870e89dbeec0818a1152da64a67663fd571c6 +c 22612473cac3f53143bc518a0684aff4083001e6c3784099fb3997d1fb03a056b2eae275e0f66b04b8cdb29891af3c9b0f57b08606c1635843b11b3805405686 +c 55b09d756428119a5be200756a8f375a1cc67a9cc5276a41474145e950728b5991c052824176c9c661240082f2e88b6e611887b5302fc382964b132b97b08a24 +c 268c9404dc76bf620b6718e6b2dff462a74236d6e432b9bc857a6a6e3298cea790a99a6b2adb70bd52d61fe2730bb8989cb8a739a220a69b498fec651e72917d +c 066368aad302d9c8482c4014e8704dbeecc7afd09ca2c99bcea182e2242f02fc0b6a9b0e73c176d5b30dfb15cacc28b4f891094166544ab0ab9d1b20b8a4737f +c 5b3ad587459019117ff15203b4cdae71b162e7ae8b5162fc19acc3781515aa80ab9c8d44e948faba047c2b84b962a2dac1a005460b3e42729714602a398bb573 +c 77f71c544ff535ee553bc640810a5250d6335cae78b09f0993b8a5c8e25a68e48815e533c8c7150784c04cdab90bf91b3301a196ee8157ab48aadd5c6edd6532 +c a7416132f4983fd7335866564ada80638ba114c646ec671cce31274f980ef0673fee3050c448a51295977e8c95cba6b6a949bb77913270a21a10029e4cbb050b +c 6b82da80236bdc06aba072d78409f5758adc13c29b6b2c502304bdb2647974bfaef97275306bef2b4431ab40d454007e277296ab3c9b680989563d2b0c50f687 +c 9d88c2a7a4f2b0e35622b79825efabb9bd82b3d3e618575b3c2e003c1cd7404258355c03b67fb13e11887b80951b221cc8376a43b5143096153ee6827698c51c +c 5213ceca890cf0083e92832fbf7cc8cdfab2f122bd0ffa09372a50d4939367789f30377ccb1799c8186bd7061a67e4b2fa7cad1ff88115936c2f746fb9630008 +c 2066648c1007fc408b272b3e1bb8d5e2c7df673e0c30873df0621055a4e3b28ad0e6169a5c1cde568d7628511bc2a88faa661b12290389ada719503309b19903 +c 09a7aba4bea3abb2ec7325d77b3a080e717464cf6cc24a83a4ba58bbc1c7b099662a55f8665131898f0b3e55f6caad695ef570a9ef8b608ea960bfc71b02c616 +c 1f636763a12d7dc63fb4190812f1b1a1222bc804ca2b943ea22577f3a2654493b9c1c2914daaac28e010090c0af4b56675f8bd677a4d70259694969642ea04df +c d761a73075ac42b39a1c6b559c1fac8338683990123b500e3002a8f8c0def69bdc324dcc108cbd78bef233b7ffe42d1c2bc7623cc954840946b2436bab67f357 +c 317b4130021b1a3d82b1d55987f6db7eaf20277f8795360248c86539c6cfc81d8bdd8fb6dc94e0444cca1529c68f86c6093a5077d7224be72e0d2a30b132356d +c 59a39f7330d46246dc65000000000000 +s 000004fc081f000000330000000b7373682d65643235353139000000209df408e461d7e5195b4f91a8d6be83d24692e5df0930aa782291fff455ea3924000004 +s 60c8fac6fab1804d89d0201bcf7c746f687d68c655bbc5a6c568d2b96889ec8d16f45afb57920eaa9ba4d66a7427df17b438d0c35c0b01226d1166e75bebe241 +s b1ad7f17ea87ea9b2191322a789339dfea591d3c83f0b81dd5ef9c3812e5202858606a37d0535dc818922e40bdba03a9f224eef10892a67b028781366e70cf0e +s 6462003006654568e478a32573e72665a989366b85ea2ac11eb171e4c7123b3385dd4d840e3a96060295a741744345ad23197eb12ab562e1034676bba5c32d43 +s c6f6185915af3ab99dbe1adbb46f08976eea36d2780e9f70944a237bd8bd3f14a4d0d4b7b147ba14b88e696cdd298148b8a41dce505651d90ba23495c95da0c0 +s 7da7e5d106de7e648455cde5ca9b4282adc16468585bcaee4afdb4b9223fddafe3c45047aea1ee43e1d34396e86fa09af168b58857a71229a3b58d44fbe905bb +s 7b538fd5a37857d6f7b202bee2a3d94753fecef0b7e9ac39f64588b41218ec759787d2f621ee71c7bd892fdc2d8ca10f80f1b72a035bca7244c8d1c97a26fde3 +s 498d51ebb125dfcbeb4f9935ff56d328e39c2eac09a60ef8e6744696482b307a80378c5afe072a0f5e775101c16b5abd934f70d32cc4f537aeab15abeb0ff157 +s 9b661c18acba5536fd65e36c43139a119491cc27fa4ead67605e01c266643eda7a7d4ec97833a3e2a89924ab284830975b10bdd5a932abc19cca475cc6f4e937 +s ac597747ea4a4f009c9842d13596804229d874df0f2a20cd85c60c68d2790ddf9bda2e4777ae536bd2790daceae449dcb8a44cebd79f484926c093c544637f08 +s d6c5d29b1144600f5d23f75f4a5c138ad45d43abc60f38bdc73170765eca828871f8f2b05a3544d5c9d65183cf26cdbb35aa2704b30920590ddee3413877ab24 +s 4b9ea85c31144fe733e77efda6c22b41e7a6d73d93eddd10c941c19fac3dcb676cd391e9ced608076e51c5eca5fdeaab1aa29d22fdf08e7489e0fc070c5838ee +s 026769b102b214301b04f302deb411985f1193b9ff15d75493402709bc6555263c0cbd175fa3c3b6d0fe2d89bf8ef8cce8c95c277e5bea84400f87e2407a8232 +s f1d4bd949678ccc1c7726bd1c1c41ae97b82bfe1d990a5c738689b2a6885a61c6d4e00bbc724e0dd16224658296350d54fe7e216061b977e9ebe23dc51b77e2c +s 9c033052f74ebbaee25dd8acc850ee8d59dbb6ab94f805c19adb5a4f3126fab1ff749ce95054b1f646bffcdbdc5bac819a3e9455bd66afaeef0e452fe9850655 +s d42d291a50b494aa1a663dbbbe564df33e6b2b77867d261d60233b133efc9c290b5a3c2fedcb606b11119d17baeaebf8e0d95b170409d6fc29249dd5ba5628c4 +s 8820f60e1cbd249cab9229d1bc4da1beda4cfbe53222c80875fecb9fccc02db62e9f5722a39313fe069ff7c4c6e1c4e2cd3d6adb6368b84ffaaa6403fe09ba33 +s abacd4138f9ba15b9dd146b2a0ed6edc675498863b742182bba83864013733efdbbf36e035f033c48a4ad94466074e421d8ad86e5a8a018594543e5b94e1e9ca +s 930faa684ed28867b97f4a6a2dee5df8ce974e76b7018e3f22a1c4cf2678570f20000000530000000b7373682d6564323535313900000040449587eca65e31c5 +s 06697323652c728e0307a81f1682ee53b5b746b261e46b160f4dec2f423de9e3d9b5737ef7d1cdef56d384268610b030699ec4b97d0bae042222222222222222 +s 0000000c0a1522222222222222222222eee83cb7e61f538cdec0dc38ad8c42800dfe9218e295a2a373dd9d9905432017220184861f764d64c8558fa0febc7bee +s 2cdf4c294da1b5335995e5b02bf045ecf9e14c41 c 0000000c0a1500000000000000000000 -c 71a212410283d9d00ed72a09b55fe2a5cd7c7834c473045551d81178cf23f9be89408cdf3fbf830da0d6c030 -s 8271d84e8934c5c7a1d6ebd644970e4d578c9f8b7b040176cce036fa478b39a8990b3e5964729d07fd36de47 -c 8b827e08604f501e5c2eed3f4b1247786424d908a28f352fb726750b8ab4b0ab940d5d814b123f7b49e3ef5f8a5e1accf512ce9dbc565eaea529c642b7b435a0 -c 6ab1b8c4 -s d3b4febbc2d74f394f1a8a49bdf603f2d7c5b152c448d1e41232011f722ecde932d73f9764410be26e5facb8 +c 7812983c4a4ab6a72eb3cc8b0a4dffaa8e34992cdd331cbfbc8084e060f811e0fb4b26aa8ff6f41225e53f51 +s 3ad5d22288dde16c9daf469b228ae26bfdaf5f9aafafea365fab393fc77b38de780516d93b8c4885c33a8c51 +c 8c1dcee5478a95a54405bc9ee90df9dd32f2adccccfac3973b7c6cd94e08a30739b1cc2073c4479b6b97276064e3d961406a4540377febea396d99ebc50aff64 +c 66d82599 +s 03583a04c93ec7fc47def94d5c7dbe3548a17ba45aa66bd215fb548ece95cd59a718aceaac1049899dc34df7 diff --git a/build/ssh/tests/fixtures/stdin.transcript b/build/ssh/tests/fixtures/stdin.transcript index 6610d37ed73..27f6a0306c8 100644 --- a/build/ssh/tests/fixtures/stdin.transcript +++ b/build/ssh/tests/fixtures/stdin.transcript @@ -1,11 +1,11 @@ # seq 1 2000 | ssh toyos@127.0.0.1 cat seed 3c -s 5353482d322e302d546f794f530d0a000000c40a143c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c0000002e637572766532353531392d7368613235362c6b65782d73 -s 74726963742d732d763030406f70656e7373682e636f6d0000000b7373682d656432353531390000001d63686163686132302d706f6c7931333035406f70656e -s 7373682e636f6d0000001d63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000000000000000000000046e6f6e65000000046e6f6e65 -s 000000000000000000000000003c3c3c3c3c3c3c3c3c3c +s 5353482d322e302d546f794f530d0a000000d404143c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c000000446d6c6b656d3736387832353531392d7368613235362c63 +s 7572766532353531392d7368613235362c6b65782d7374726963742d732d763030406f70656e7373682e636f6d0000000b7373682d656432353531390000001d +s 63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000001d63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000 +s 000000000000000000046e6f6e65000000046e6f6e65000000000000000000000000003c3c3c3c c 5353482d322e302d4f70656e5353485f31302e330d0a -c 000006840b1430b8b9f6dae15891acd5da0d82ef4bc20000015e6d6c6b656d3736387832353531392d7368613235362c736e747275703736317832353531392d +c 000006840b148e7213400cdf3330c2261faa7a35f04b0000015e6d6c6b656d3736387832353531392d7368613235362c736e747275703736317832353531392d c 7368613531322c736e747275703736317832353531392d736861353132406f70656e7373682e636f6d2c637572766532353531392d7368613235362c63757276 c 6532353531392d736861323536406c69627373682e6f72672c656364682d736861322d6e697374703235362c656364682d736861322d6e697374703338342c65 c 6364682d736861322d6e697374703532312c6469666669652d68656c6c6d616e2d67726f75702d65786368616e67652d7368613235362c6469666669652d6865 @@ -32,315 +32,351 @@ c 322d3531322d65746d406f70656e7373682e636f6d2c686d61632d736861312d65746d406f7065 c 636f6d2c756d61632d313238406f70656e7373682e636f6d2c686d61632d736861322d3235362c686d61632d736861322d3531322c686d61632d736861310000 c 00156e6f6e652c7a6c6962406f70656e7373682e636f6d000000156e6f6e652c7a6c6962406f70656e7373682e636f6d00000000000000000000000000000000 c 0000000000000000 -c 0000002c061e0000002008343fe3c009d008986351f28a6cc63d6ecf5ec4891ec412976140962966db18000000000000 -s 000000bc081f000000330000000b7373682d65643235353139000000209df408e461d7e5195b4f91a8d6be83d24692e5df0930aa782291fff455ea3924000000 -s 20513f6639b3e84e8db530e84bba689373da3b6f3ecf45df32414738d58d792d66000000530000000b7373682d6564323535313900000040d91ab4871b3aecb4 -s fd0f1089fe5074d3a4f1954889b45ecdf1140195e49dd994e599091ab23aa61f40ce8acc3157533d7a80b5607742f45a8997d80687cd670c3c3c3c3c3c3c3c3c -s 0000000c0a153c3c3c3c3c3c3c3c3c3c137a1b37a004bcffe9d5fe5c4f83a59d368c69b834f729d28ee901712d1ed2ec08e7e03c75fbff1ae184c41244c8ca32 -s b1bdbb97da2f814fc4b692f785fa5bbdbc81a8e5 +c 000004cc061e000004c00a7216d6307d4d5963d661a67f0362c40b08bfe8598a59c0076700dc731e7f260f5903524d48376132400a495e38744b3421bff69a24 +c a1e0c7522015a1ecac9464ce40070b32060bf7e8c08f3c1672e200d6a07ac5b761971c211dc5356f7634e0a5a214a72fe6e9c09652cacb29ab9aa0241496303a +c 2220a3b2be8a3178d74640606b8ad7bba0d6595af4c27cb66751bd957c017419a0a31c3097be663b8ec630c7d0cb77c3909d316a4cd430078a951a44f33dfb13 +c 5b057107ef239dc9c60d63754d6938c854983f8d5579d0f193fba9a759007ea1695392d50ccbcabddbe63b6dc17dc9740c226796d2e309c7b48687bcafd2e780 +c 4020ca26b10329e9a7f1a616a535525c2c4ab6f98efc4186702190ae7a79722ccb9d16bb32e74c2d19453e55b1910bcda1d13095898545f017db5a2ad1c1a35d +c 3b5001007c0d00598734127318a3b22a462e102aa06c517decc41d153c13a465d6ac843f76ac4efcc6d087433c601a1e72c6d22927182188b9f11203744c0590 +c c2d96667fe01c2cc2b77ce672fba02ae289b4daba2566f766bf11aa34e02beae16b56559186496b06f037e9cc934b4a737e3db7e1d2859b9b65edf126b87d397 +c d441b63792bc2bca618585cfb8d37d76c5a62b425031bc2444955718218129a81b27206d4ec3c667a89e211bb57a17b9d77a8c28db961c47127033bbacb96421 +c 3aa753622ea4f503c1ec174e28911eb02e55b19250a79b7578754d1400826a3632c8077a1b738df19c6bba3011840e5d326dc56554b3e20859e8354f84556146 +c 5c5afc1e46275907302bdc984dcc973b89c7309e1341d70534800a0499e07698f648edc6175fe893f4a2564d6285b0a1b82b277eb336ae5e136bfd532793c87f +c 66a9a4e17678099125cad1991bb1adcfb213fa08caec9865df9567ec756d9d44729dcb527fc510f5f946a89c61db15c3546744783328001153ae5ca609834c98 +c f8a369d975ff85241d114540db1b64f2a31bc81daaac1184814398cc1a248a98d76c3a899354e4eab5d4c512d308b2c8f71a7ce31b48a79c2c06c494e919a864 +c b889f4a49f3a201e6661bcbc4dbc946e81c46b30396f41e27ccbca0ab7b133504ac45f927b8860635cf8300db1840cd75c482564966401cb88cad30810ee9b41 +c 126a25bc8c82dcf83c10f6a7106142eae66f0141c560d258e0a1cc90dc084da464821a9fcab5a3f22347bad55065e28ecbb09a81a8ad322850c8aab89f88b6b7 +c 08624a5b4314987bd6f45e692876c8e9872be043c18ab9a2465ba7b44d25f8005cb798e30219ec9422d0c5b90f83899d9ab7767a4c2217b653e84eab41246867 +c 3131825b1533974b8c1e9920ae40293767a03d577b1adab8b72d16cf5c0b31d6878044d189eab274f87a203f7a183fd05a99f382c829087df169bcf72953e618 +c 2c5ba635c19f34a96952b499fb4c6353c8400fb82d8dfccd4239bcdf920fd8f753d0f9b541b237b6829fefa268c3c4659c78b82629a5e03422cfc0c191c49a54 +c b34309a31e9a6cbf4c41484ad69cfcdb372757807c2577e4e1490ad7a016dbb94b4c0c9da63d627288d2c087c69085573b712a3873ac43cca99aa67cf8343315 +c 04e53926c13439976a226aa88f8f82bd857da7375140217aa26afc4021ed2b6000d37fed34712f469b77c40b41b453941fa0870ed65a1e20d9f07d2c3f9fbeea +c edb0f909fbafacdb0330000000000000 +s 000004fc081f000000330000000b7373682d65643235353139000000209df408e461d7e5195b4f91a8d6be83d24692e5df0930aa782291fff455ea3924000004 +s 605bdd70e1b8eeeff9f3382d12970b4418a60ce504f158a06acf4a7b1660cde67116bbd22358471b0d762849d95527a49eaef3c41c62e43902bb03f0f6a0a127 +s 2a4f286a2925a76a523a85d16146d502dd5231917caa56b460e6618d2a4abc6f57c49d805c289fceb0d4a7702b1ede8b6bb49a17dcbf8182e9f2c515d9d03303 +s 9971fad499d22b9d6f94f9db13cea8151ac836cbcc706db09ce8e2850396a88df6c9a282e5a5642e64ca5c75123e5c82063c8d8fc73a644a9aa35ce3c06531a4 +s 5c08e776cdb0f5b0aa5f2ccdfba72d9398e6a9273457f64360ba8340470f799ef54b8fd10a3c80b2e028e5eeb0b33cbe0d266138597f285af61f157b9dc26fc5 +s c83c2d1ea6b2dd1eb2415477daaeeffab2a6cbaa8e64a2d76d9de80ea8f87bc1896157fd61032640086dadb0a202517511f7aa1712e11245a353a98029ee28ba +s 7f758acd1f2aab38ec92979b08d179f155012d6e8f21bcf0560faa8e950f120dd148893777377c2896919dfbeb4fc6f568ef322e9d2b44195196fa4a4335bbf7 +s 93f1c0335f9a8bdf992feea44f6f92954a1c686aa7f6e8fe3629114055278046757ec23e6d226ddbdb96e37ac35f604546c9777c241b83b61ef18497f622318e +s 4bc8386084492fb295f5314aef154e1fe26917bf36112b7bc96f242a02e281bb2beb345b35694e1af2cb913eed2db976aeb6908feabcbb06b3f8a1c4808b67a4 +s ce8ade382620fd297eed38ca8b0397c276f92c8fce9eec5d8d6d1a89c38630c57b70f1ed30e65463ba00e6521e9930c256831beea1425c3fcad2a33c9df00372 +s c0cbf269b1930972413673d941ab92c4b535fd4ea0798ff42ba6927960b4b2411286ae7411661398b9c1571a77c997a3833a52bd785d754e83e85cb3cabb222e +s b355fd60dd73389e7f3d0e151cbdcf7a6753b8abfd5a900776aaac06555efcf810cc941734a824afba47ba808510b4df2ce050e0baae6147a6c32b73e9159f5c +s 17eca40d9e9b1b9ac68dccd4c97119269367b1889d451422039c2f43d2aa28032ba7969d06ed1aed1a09f47b1282a233fe427c5bcabfdc0b0e4dbce4b25d9d23 +s 20de25f52d11b4f675b158116354dfac042be67f23dbd674afa5861c1a21d3aef6ffa0ab3a65b43e61e03388b6afb66265c0a27d7e474b7cec2080c0da561043 +s 7a6b53332f235c771756e487c3ab214b0afa5c81a84030634132c3ca552bc7c820fb484e4d05b4ed672269fa636069e822fa37ac1ae57cc8d48f044aa10a020d +s 3132c74080c032847689018076212c8a51e98a7120996c9b71d837def68923027ae70871e31b315caa4ef553fa6cdaa2735e15f1799a200d8c9a28c07e0886b3 +s 6435274277e1bbbe355102aab96f75eb609f44027ba4cd471d66e7e25e1785c826e69d60afc3bb30eccda09c21f6c4f94233e9a4e29bff794425062a185fa776 +s 0ab346e4fb334519be97a03221b843c8eb2a2ac885d25da3bbbe2e1083a11ef3b0b56042a3fef8d587648b7f73ed63358662098d79f1db68e6aa2a7aedb6978b +s 1c513f6639b3e84e8db530e84bba689373da3b6f3ecf45df32414738d58d792d66000000530000000b7373682d65643235353139000000407aa72461f13d00d5 +s 0b8ecdf8fbc8bf70e22620bf5a17fee53dceb7bece86e44b3048a347bc5ba6588b31c3e2278bbc7f836114d1021304bad347d036194e0a073c3c3c3c3c3c3c3c +s 0000000c0a153c3c3c3c3c3c3c3c3c3c93bed739f93b8296935f58a4368a12827b934198c259d7562a5ee778bf3dc5396d5537595c2d37ad07b2698b342b1834 +s cfbe3d90c29afa0554cb24a8c698668cb2fcc60d c 0000000c0a1500000000000000000000 -c e0849e634d022c3d15967956b5411fb4b42431dd58d1f5e72f2e70292cb08ad4314299060789f5071f25c20f -s 8589d67b5139524bd6643c3e589b6459b9788a5fd417ab5765fdf5302040642e8f41b8f67ae529c38a1b6b86 -c 90d816a2c0d59b4ea2fc5360170c56d248c171547bd44033625d58d41efbdc2f6a1b90546abba1aa41eca231de20e29cb4dead89344331711dc4e6c3bc660f4f -c 837378c9 -s 477a72c8610d427b2c3947ea5a5008f4feecd535c058f6d56a5c79c3268381f5ed23a7de812afdc86fbc02ef -c 813f908c45c3dedd383d0e67df615261a8a3ed5bc957b97154124c435f240af39f8eaf743ce05106165083f8893a90324d83fef9d1616618349796aad2beba4a -c 0257376b80ad2fa76b70c1be5ea101c18a4d376c011526b90666f9591a8f19fef3acdeb5574ac91441b9755652e765ae7608ee95cbe279fd15b8d8cfde2b15aa -c 5c12405505e77961f409822b -s 06c567c603c46e45cd64793c546057d8093a8f8aa1e6ff0dc67375caaef0b2edb1730ef79d4abb0cd746d5cf0d51348d1cfe87bcc6e63fd40e026d3a5df115c4 -s 07bf1d914c7ada8e8faaef1ad6a44f264c5455e9203dd42b27ff1dd9e2d42fe58b478345 -c c798a3acfa4df9fcd19e216075d009fd8c3e3efbf7f73ab4a52a0d4fcdfff4cd79270c93a4dbdece88908b63e78aa4313a1d56e864abf070d9307cde7c071ef0 -c e0544470cceaa5d8f8d2cdeeb30f1f637ccb73ff5663cfb5a0cb32441bab618d2fbec2dc456b5be32220b7cedd29e71e126c790208af342a105d7d0db4d5db4e -c d632ab3d14526b0507bce3e151c2bfb7988145499dc4f9102984f4822ba153de865e7168bd0a26e87d92996c32b7833e6c2298a47c69159f675671f0d17964ec -c 0dbf5057c5334100075f4f1e77d9668ba77986580165933b68c827ec5b24b4c1f5ddf854 -s 42e2d1d9c4ec2f28eaac375c4d35f22e488dcd468b3aa95d3d513377 -c 2b2e48c549dfab3db81db5618d1c830c366ae90fc2753a2ab7e7b8b9327c0207b1ce896d1e263b54dbf4ed1fca43d1df143c197c -s 5452e5ca7ca788cf2e7565f895d705305a396984a251e3fb0b39b21bd7e4d9f50af0ff67f913b85f9989c118 -c f39e581c4fbda75dee52576e0d088d6cc5bb62307c13f88c556f5c50387401fc30858de1c74e5529f261af30125d631f0ed12391 -s 44954a65972e226928050b97e7d5ae02011224eabfc7f317eb976a9d49934b6342251b6cc36d0c8f267c8bb1ada8ea3d881cc56f158d09ec9507df8133ed68f9 -s 52e9e741fa821ba99aff2a089a992996 -c 56a1fda92fa1270cab2dbc775208aa97dd8984222831a60c450b4b8be3d525a43045ee8451250cb0672abf16b81f7d64ef8d3a152f450c1a4eaf92d7ca383a0d -c c8055060e9613781c8be0263c8783fe4e8b81aed0662f44b4410d670b13ebee426c8c8a31cbf749c729b5aee802a65ba321b501f276a3caf158a3949faba09ac -c 44becc4bb7e8f7717905dcaf91e6ed7efd05cb821da5e0745355c4ba007ffe962a49cf210e31937408b10d63a3bcc689d1cd161db37d231ac1b965324333a9d5 -c 0cb0ff37ed1dea801892f18950ab141345504c46facb016cbd1a38e2512ab6bd6e5f2ab924b929bde9f6d785be2eb8cc7ebc2a82b8cc8d100770defbd4ef6bee -c 9c7a9fa3b61c54c5ec26cc1ed5e466c7f95286ca8f0ff448e9f8f71a8616864afc16bc476c7482439e31a07db5a27d265083cc3b8f91f68a3e5edad465b210e5 -c 8f2ff6032a578c4166cf18b7f3c0af2136c0c9e130cda6d4753a44766ac9c05dca969235b0b4099914473011e7ff41ff8d2349148fb985c8cdc6cded44527574 -c 66637867a55b4e80e75d5eb9c054ec48c8520d3e26e0e6f4a6f7c60d370b12c9be1f161cff3798ff5725ef4cd409999c88f968d6c1f33a4b3ad1eceeaec53e1a -c c7d66d3bfc7ef2007d3a6ea731ab3884e6329f3e06013abcea46b7387a973f73846ba28284b2c7df23f2f1d056d3f72f99797f8ddb0cad5d54428e1c890af544 -c 5fe5f57a11a1c3439bea1ea6416b2c900aa816e24992f5999505425a2b48db444f6b7097d2506d9746f42dbb0a4e2872567e9f81846b42936a74c6c90c316c43 -c 0511297981906b58e3045a9d4631e1b220039d12a2bf131f1cd6e80d66de933988890c663f3ee2c62cc3e7c6ac61bfcc16c2354ab8565be3ef3e66d1aeed787d -c 732ccdf1004a0967a8e93d172b4a9ad43b975243d5c1aa959874b275769d572c07ba59d18818c7d6a4784e5e8f787acfdfe65c192e051a4351faed6299f3ee60 -c ed63e9c0e4a58db1357a696688dc076814215b1cec2a074ec9e565c2dad88d41bf6c3244db97bce6d554e22308a8a04cceb7f536912802dd156839601a4b152b -c 1f3c13a259ed9fa616132b70db35088b316fe9b0d8921e8d7cce3cef82bd8c4131d096e7533b8b453628d5b53a2ee4bae2698befe9e5d117f082efe02c4a6bf8 -c 31bbaeecd3b38852ebdd5306b14acf2456a4b7f338c2eee1f6bf7659e9290ba3527ca94b0cde540ef1782ff979a3080bf656bd7157175da11a5b4c8cb99df8bc -c 0a4e58f7fb5304e3ff468cfe6d83fb231e65a202b8834136dc8ca3e821702bf0c80ee47ddb234d34b1fa48f03c4f69bd9a35488ee3ef1440999593705e29df28 -c ef80dc61776354266ed691d243fad6b921b9398f24e781141ad77b8c5838d425fad754825593f84791cbd2b48cc2c0ee88702d9fef14c06656b7d2eab71a4cd4 -c 7bc63367bc8a11f165b2ada9e5a5d04e9fcb9da6abe819860a9a9d5b1812872b279b1586bc6420ae1c174c8026b78a0bb0b24851c465cae6fb30bd9ef097ed6c -c f174951dcd987c0929f62bd19b50840974509ce14d8a3e8d1a2d4fd6ed450bff7a8d4ab7399faccdc6b5cf71bb0b9a69ddb84e0b91a4157c0eb4527e0e91949b -c 195ae5f4b73a2d88540befb4b71aa28b7683dca415f5cf91ee5d7c91bdd352aa240f85eaac605aef1008655baff0cd7f8eead1694ee76ef681e564163c5b053b -c 1e4fd0fe907bed8adac16b5a2fc13f8b5248d9da616c50b64073e6428589bb0c0b1b989faebdc1ee83edb67eeb669fb487b1fa66ef61e66356eef660fcd0e118 -c e8df1aa7d05924dd8db23f15c29a74cc98e704556380a6cb3ac9205c7099eb1dc691e7048d64b72fa6a75ef853f49aabbc7266a51456bbd17f1cb3250e309fe9 -c 17f9c1aace31106a517b3de963f518f2ff8df975db9b1f10d9769dec6c67a2faa8c1ce857ced0dc1722d411dcd8e2a80669fbfd0128828c37017b5ac52a3cfc5 -c 118baf9b33c708a16912de353771678aba9d071c8ed328622a448e149fd929989ab7e78dad90e53a645d8283a2519d087a204e6ae5abf76c173b7d037d762344 -c 560fa30ea01cc88b2ac07dd2fbc5f5a89346498fc61ad1a2b3d2acd6c8b117a6adf0bbd72db2d2d1f3e061935a88725ea686d92ba8719fa5e3371687d47c7372 -c 2c5c18a57e04e6ba6386cd50a04f1b63c408ee67968f9a4a53bfa6d4a97bec9f1efa6baac06a1b88de19cea05e8a0ef844ea73b922f51fdae4999fc7edd74639 -c 59190b46f6011f9807486c9fe6648792cc394e6cfa450646fdc97d8279591a895849c8599ae75fdc863b4493a82c5b793f748ed5cd1d1f1b7bcfaecc01a37a84 -c 7088c4313cfb343495872f62377a3cdaafb8b0c17ab734b2d449ed0dd96f5bb7d57719c27e6f01502f78d5c1f6cc61ac8556295304f451c14bfffbb90fea4992 -c 1fe8eba1c639bad8c82bc30c0f2da88aa43bc9200a4054e0787d03a6b9cfa1ddab0c1a2cfb0a7cc97cefbc3b69e9719fc12057424ff90f8ee5c0849c318bafad -c 58ba1172e271cb7a406c2e94fa0ac698f53591e97106891dc3bd82937e68efea14c94c151e400dd8ac6371e95dc4426caa672f33fdcb8a816f2174c8c9888429 -c 39335615052e1f302f51a392890cdd2ae362d1731b7db13088a118032b327ad3f8d8ccce3fdc7f75f09adb79fc480cf3e514f83f1efcb175c450311912386b53 -c 2d8e160d1c37ae728b389dbb62e2d792c341eff3a93f73e07b11e5b8b23177eef2fc9c84bb7d4865bfffc889e3be675f3a8a3e0ceb17973ce6c6e1cb71fd0a7b -c c32ef796ce6080683a5c257a0d7d5987e51c70253561734e52c10cc578a9ff931c4da126e79e3ed0ef51c7309a3d5b8bab397ef8ae4c718f9aed74c6daa955f8 -c 3da306c4da4f6fe5e57b9cc84eba6da2f36df3d0afdb9cd831ed4d0b088ec73dd9a579ed9a28373b4e8d02fe38dee6babd37a3196f01c2f8545d544ba4ef00e6 -c c7d3506db765af4277f51e7f9c1103682c15d8f4a420772a067c1eb16ee3fb1e8895c5be9f267cbee7b834493463dce7b5d3a2416fa52bfca9d7c35d2b8375a3 -c 03c87e15ed1ba2a3a2f175d4f3a0135213723ffe9ae0007719f76f585d0bca28eefa60c063001992fbf8f54fb8526a74d9b57d2065e78d0ff562f99cc34d47fc -c 9fbdd25ce265781597ab3eb2043156a6fb4807f732536102f0f01c9f99f898e78ddee6c821ea231fed892e2d43e289e23a96ab763dc5e216aadbd9729d3d4f35 -c 4bad6de4c06f1da02c640959a01023e41bfe0f631b9ccfebd5734fffd25515cc41a36092879864d5c8b4f5843207ea680a3b58cbfe8be654bf6ae5107a7186e0 -c 70a882c3ce5926fbfcd00f5ec07b70da7d25beea98359bbbd78266c376a5b01cb331d1daf873cd3aa3acbc3e6a23974a3888534a67114b8a41a045af3fd1604b -c 7e34b501119c523ad97ed07559b94c9e4794f18fcc250e42eaac01b3f22dc4eb88b7d48e21bfb7b4ff9525df8a09070f563861ffbd98092acc4bc8f914a3317c -c d3bfa2c8a4409c8d0edde65302ca6aa59076832d4977018f5606f77e6347648c4abd8991aa4a90300954e5bfc4ad6af9f8c080dc024780881d4c33a85a5448d5 -c e445538b33081afc984ebfd46653dd3397ff2822ba7f8eb8c6ad52db089f408bdd3ab6e68bcb40b86e17f142a32d4ffbda652930cd8c82a1fb559bcb171a8de7 -c 6d5de102795667b2a6c3a947613718d3f0592835a66f7f1a3386ece7d5a3b218e641dace7a90da98c965abc9464c632a97e5a5e66f460f1e3cff3cc120c8f106 -c 8af12bf4848a896519592f805f5335ce26090995910181c611ea8e49d13897ced85436f9d989c871624c0537b74edb4f2fd2c34abb18f8102d0f47914dda8614 -c c0fccb5fd0e99ca1e35a27225a6f6d225d15bcfda398a84629ed12e42708073109b779fa63caa3f62c496a762766b3981b0d1ef8d538d6ff96c0ee0342fdec70 -c 8e84bcddbbdc0143a52e232c7652649e12dea944c5308e4b1522a50f47550da18e81cd36f7aef25ece23511fcfd01c0b92b66b90b3ff906dc107925c23b392c5 -c 0412b420e91373fb241b0e87d2695ad8a126eeb37868579569a03dc6c34fc3dbe9f30013f4cd6ca77b8d8f03927a9568d62f054e0fd0d98eafae07875d4496e6 -c 146c536760f906866b4c9fb1f6bd27ce3f419ad6c0e87345ff5ad3b228d900552e67742938e538836049869a64caeada56e6dcf8786a498c09d24a95b2e0858d -c e971b2667ca1b8a5e7312c1fac8863252dbca3d503157fe92644acf6907bcda1d92c5208e21f94a46d45be262f204a207bc7fe95477c34962eab3b3842a5638b -c 7b8e046c235003308b20cd594b4fa20aa9a04a3eaf527efd3ccc877c5a8ebc173289f127c1dba6d5aef48ccd451b88826e94a3e82bb42cfe1e6abf493084507d -c 9b48ffd458cb6aaaf0e9b7f9adc2f2c03836032d214231a46c934a65ebea8a0dffd9e7a54a8b9561a7e263049b37fad29bad343b123d8bd1643c01fadf62a541 -c 87f7397ecdd60b974cc6268727dfe80d4a028a985ecf4035b5294687344569b7fc0577a010e2b1fb9222d65bf596c07c5c846a34fc08d7aca7480ced71acf2eb -c 0e8e970197a147c9089c31bb4977140c42aba7d2231bcc8e6a8148d1dfe3b0f59698fa8a31e047ae991c2e2409adc0e9f2200858c355cbd9055548a270dcd803 -c f380c56193e2c425c46547c00b4b3439a0f6a58f58c0b26947dd4c0cf995c46f1b455730c7f949fbc69a927a4993f40761e6c69ac1e183a87fd7fcf9328c37c9 -c 4a681e59cb89422af415207e9968292c46e2cf4992f04b529050d543c310af274da708fbd1077fd438a0534ee687912b4c70f14432dc92562ad296d4e8309ae3 -c b9d05fade53caf967a26a3cc3ccc861f2a5c3a0d77eba5e62a1a0e5a8b63a4c3848aaffd47ae9a60b02160b985efd1cd53ad41aeba24606fd97f8a14603c3deb -c 603aeef03c9b55819c2757360ae6134e20ec034a4f3055553c76c5bf66e2fe9dd52c5d9e04d0fe2bf49d294c9a9da29a69065f58d6fa3d62ad3c0d56fa7ab1a2 -c fcca6c1806dace69a96000dbc70258c0250b5854e24bdbd369e46815a0bb203b676453ad60833c0cff4f347643ca44c2eb31977df510f3eb409a91d8527a0544 -c 335dea92b094303617010de7a9c6081c97386a185e14a21248429d5c89ed7afe8432ea16af036d1953385a1c5b113232903b48ce1fc343d94ddef85fa045df24 -c f7e2cc517c1a3287f446eb1b654eef41b05ea83cafaea588c609590bb8dfbe26f09fbed2f86c9d3eb4819e3e4efa596794611c58d8531b80e8bf8dfe38e377bf -c 04072c65b3147eb2bda904b0a425d5eaf82cfe80f5898af0e13edf86ec69b2721703dc53d4e1fecd4f6e34d1582b09b014d5fdce8f883d63e4f12bd28036bcc4 -c f4cc41db493db35161fedcd83a150c8c610c88f86de5ea474e8bfcc153629ed46951dd687aadaaceeb05a9de53f3fc090d1c6fb16f51f6e6db7a7f0eefe563f3 -c 6413474a2783984afa3fe720b8c98cb9d2cd3d48354d35c329943b89086f38d0c37cfe0ca2cee24810400d9c48d0a2bd76f686009dbb9dad13c06286fdb2013c -c 0031d65d01116e125489299e4107e6f1513154dd454ccdd44dd64a9d1fb11c269abef53c9a8459eefa442f17b9eea203ee96ac68e22dd559bdeeeec573aa47ed -c 3147836ebfcf97311a51a0599f12f4ff6206b57288835e87eaedbdab8026b260aed3f1f51e5e8bfea455044fbd9a12bfd0054b879a24eb9ab2118bfc5e96deaa -c 14af289360fb70795991047902af385d1cd82790e81011a64251b1a7571fdfc72db0338daac3ea470d5fdd071611da663bfb1a064f7aa5a54a713e82c92b3a7e -c 52aa0dbf72c9cabf10a32d4e0570831bbb5a95d0ea2d5e1df83addc1afc62ea99eab0d3d43a7cfaa22e6615742a3ea44c4d53436e245467d2aa7b800d5071e1e -c 8191489ea28b66391f1f64d31ef188e4060f6d0a6004d931ae9bdaa3fb2d678644ec861221da8cd1811f41123fa45a272809d75b982c8aa08e979158e7a6ddd3 -c d7e0c66e68708805ddb5df9fa10bdeebeb3f04a10727700356a0b176a312439e2f7ab63f63f72d42752ab5d4bd5b066b5712768a7e7d2405347c20635fc1ea22 -c 1e6622642ecee9a2bc4b1e37492482205516aeecbb80cd0fe3ff68ecf6bd6fc0ea8507db10da124e9656beee6b83612fa27601f9af4512946e488e780593f37e -c 58078057dfa123be2880847bb8c6af74c9aeb4dccc9d8504ea29c8f0d1c5da83108ede016d49b6932e6e9ba2e4f8651776f0dbda1721603c4d45350f8622d657 -c 4539d84df6151bc82dce8db0c7ed49a0e3c0af74e5ab4cfdfc442056f689435c0754dd561b7a64a4bd17314d8d9717b413259a54fd01a90460b825b5e208f538 -c e299e107c5bb7dfd65646f1c84ba52f39bd8ca551b6011a5b7ac057b410466b4b6e3be321ff5363f042c35f3e5d0474f9a8ae0ba18885c6b9ae635c3c097ee62 -c ed387bbcbcafa777ac4ccdf2c7d617078a1acea93edae5453f14c04e72d7f9297f942c438b7a6f05959de107c6c0c671cf91af58d9d3d43b360619b778d5f389 -c c4c4efa69152e6dd8a6c5c2d8b420493b4c931a3ea1ae00f279e54f3e9dceb593a49995dcf06b19388b22eaf997da11f7644684921bdffee2d7ea0bfba1d8650 -c 2a338cac9592eb472bd93c0b65b0588381cb4f7f344ac434f096309427f6a2a7d1707e7e4c990027cbf58112d7890116ec809d3b398643f061cb090041a76966 -c 73b5ad801cddbfc5a410c7b639caa710cbbe29aa5fce607c2f67216e52d915f267b4bbc2734fdd2ebfc7952f337995ae47bf9f704c27d32d389507acc38a708f -c 1ae48981b6e678e5f3b5387b92fb5fdeebb54d55dd54926c968f399079d09cccbb6c33e28a83eb0bd3c76ba1bc31457b1d5691875583ad4398f0163e2c7a767a -c 0a847aa49d5cd9eeb3e63c69cfd61dc93b845aba989f175c200110ed61e57699562e7a2341d0e9b554ac4bec9b42f382a36a2237ded51f7f0bc56e36ed57d646 -c 524c12dd0fd06aa3c7d0c7de1e0ef94c1c0852592d16b9bdcdc778a2c2745b61d5fda1fc0adf8dba65255924ba6005244d7cecec0d48c7ae19986b9169e21fac -c 5de3153a4161d8aeeb3299e10f4b21f573f396b3b8c3b94d84b7f341ac79bf8a8667551730459f2ad9e2ccee5f6964994b8e3c62f10dcd1af614d1212ceb83af -c 97226d7e6a2e6cb37bbf8617558f833d656854b942b97eb6e4719f2b92fcf0f12fea00f9c0bcce02c4860b2b1248917ece7cdfe7c93df9c29feeec69b8aae85e -c 53d100181ed0024fb90358ded676adf1e649e52d9c3ee594c9c71aa0715d27a994efe88080841f628bc3dee810cb6482795be2a83788dc894b77e34e94f98fc9 -c b50bf88e90dc920fce222b8f6680be26745b06cf4dcc64c22c497c64c372d0264c36969e9fae39d38210e334966553aa9f1937db5f4f1e242122b808da3316ab -c 745b8928ed8bca9be8c2d2d5012843c8b6ec2809c8246ab96995d2eb0aae361c1934cc45d6963dcd0f2a13420fa69e1aa20be2a1ff117e20c58ea1bacb7cc02e -c 54cfd76128ef06fc9bee6c9aa75c88b52b5e98a53d49c2f6144f9e917bc406888f94dee420b3f4ecfcf24322aef6e1688e11870f72f869b5de5151ddac28610f -c fe207b556cfdc216a3936869717fb7ba4b78154375d32adbf77f50eb21dfc401c6d127e5e84609dbea6ab162004586c98f028f52ea5024a663fc9a292a310b8b -c 49a837c7b9d409064a8c1ce7cf9dee2560af5dd99d5d076d250e19e50755f4f967c867b9c2920ffaed6f269e64e253008de55a82d0d82679246766d6837f9ffc -c 738b3bc940cb391331dcde9dfb3bc552ed29fc51cc85a62d1dc34d0d7430e57611d6790e3d6ffbfb744e34fa35b640989ba47e30903f2d235f8f242ed54e7153 -c 2908d2c43a5590ac665a33c39fb354edbcac66e3dd2cb7f08d829eb227754734a0f915d711bb54dc13259de0bb6d7a3e61dfc79f47f65b5d2b4176d896317f04 -c 25341dc0c4f4e0bc4ddac30b5dfef339545eeb4af506cc3d6a88f9a54550c7ed9478358d568bd43a919af0eac6dcd5a4d0447488cdbb112917e37cda23bafd6e -c 58d4ce1538791a0894a010f60890b6ec493c74590c5389c02c5b2e90d171ae871c2ce35472dfe4e745f6f654e7c7756eb9c9416233c420caa51d099c540ce2eb -c 63c1be1824190be19fd695f7cc3240c042e8603fe6a90e39ad90cee96219d423478ebea1521d84b95ca01183527b70fc9301edd44b77d89ba8f5eb81aa3e068f -c f85d491c35870a475ae7444605a4a77a5ba4b17f79310c3faf80d3bc14b28e6b81e7bfffd62e34a5d0c64c9ac967038ff3ae1b4698982031b38ebed345d0b073 -c 071e4df4c092b7d3002c215264fcf82e73f8efce5ba08f9f091096769bdf59e6f00dbf55970e99ec11725c50b98a195f5101eedd74347ae78d46604bdf57c0e9 -c 91e1792fa0ccee043335db14d4578627a6fb549f3b8c6001352825d3e9041682f901b23d4528774a5783d66718d4c56e975c743fd9a1da6a6dc1c2d787154f8f -c 067f32846557709b574b4c870903dbd4e564bfdf57814dd75f0051f9b33b1728e3727c1c83ade97d0f7246f60ffa71f6f0d6d7d2bbe6c159325d25fb425b3428 -c d4a061aa34178682f6aafa622955f9767d2f74d1fa46525f7b71a3147a0f20d8aef09cfc05465e2be900f74e2f0120783b9179d8be66cd762d14dce824778f95 -c 3704728ab14dc4af7c354460d6cd574b7bb14d2c92d10d56c2cc1bbf0e1489b8924f5a1ad185d3e922c42e29e6ddd60a6b1ff5145baab2c6bbef624e0b20c9b8 -c adf1fd813006c9df9db20e99e2f8738b8071e30e789c71d8549d06e09fc9c3fd4a4150edc7938f52f8cfb50277198c4d659115257f25c44d866ea8815c5059f2 -c de9496f070c9fdefebd90822bd6a7470cc950e2c54e4d9a52bcd96692a3ca12612529a1057c4e1b8e7c662eaea145aa907b421333265c42d5ae102cea827c5b9 -c 869a089ead1045d990797a933faa9b47299577cfa003c01c2a81ec23a8a4a01a90f3461b6ed1ce1dc2980c7f4bb105bd5ab776315efb52d50d30842552588a69 -c 8312734be1a932438ba51e6a69333ced225488d812d3c09a627706a5ffb7fa7eef22dcf7c37be6dfb7b324dcfa49ef433f76217a265f581d61c714fde91b2e35 -c 4adad112237d99e0c2996cd8ba9db628c69cb38c48ce84d7ab76255469c270a9800c1d125724f75cbb45520db890f1ae22db5eef83b03f7514ded33b6c1fdfcf -c bfbdc60b37f082989635c0780b2e51b1431800b1f8cb2718259105042730b24c20f919e7faf2d738aa317d3871c58b049cef2bb0903e779248ffa2c7a8a3b7c1 -c 15092f263cd712e01c15824525e775e1a89f925726072d92202de41c87e889545675cacc142d19f33cb48d6f1160e34803966b687df6e81a9a621a3755bb563b -c c2392c8edde9786ed6f411f96ca0a29dd6899e18a8542ae90609f7f3f70742e3064ca354bc28e14988a6d20c5b47f8aa06cb75028c99665f2f6580465a9e5dff -c a1f36d7ce95fb1bc99ea03718ac345182250812f9a645254e1436eda474718316981672fd8b167f900a01a54f7146b8da4d65deb95f9112c6467dfa9e4b5823d -c 8fb3e112eff36f7d86554a1426e6eb80f635c938ae0fd70819a97e1a5f8ab32bac1f3afaa3ac4af9f6da70148347af307d5edc8332c5d05b8f6a5053098ae4b9 -c a8c36be72aa5973d6cb9684b286c5b65d3582b3c17c89e73acb1e0755a663e1e1b3f80f64053652a923b2103db68fb219034abacd33ef314a6a7a34bd9e374f8 -c 01335e30b20553dac2c8a16c674961a38c91b7a9b1be274dd0b5a91ca33052486862fce13d8b2117cc6da4e6e58bcedd4f6f60521b328044725c1a12756d54e4 -c 5bc43f4bb6d917ad12dded7f1294b11c01525e0af47a966a3e28160eb3141ebcc068adb482624318fc1a07d3f38a671a451dfcfc3e446e91d1c1d2b5a2fa7239 -c 32b7e8335443612a91c89d2aac66bd3ff32b2b1f67351316e2dc42215b8bbd02a4fda6f29d3765aa24de28308c7a90b2a4c9e3e99feae7dc34cb895f426ce5c7 -c 00c20d96eeb70b9fb1225de1352d0219118cd12a8fa75660a57e602c7ab9feccddcd38e254b5eed96ec81a9767d0e03c6a78235c1fe31dfe554b5dfbf9253b6e -c 8c6727bf6fc09080a873623eb9ee43e7cdf512cc6780363726771e8144c08c33f96416300d2cca020bda0ee048c6f518743f65b90de3abcac971b6e4eb6cf886 -c 0e7b35b11e673817d6324d71e97ef76cb5283d6c9cda29c677975e5fe385a07a2a66efddca9c8330c0eec37daf89037dbc46a45d66207d5cf406fbeea41cab17 -c 3b54dbc3cc83b5248275918701b0e762f180f3f945b5e8ca8dc3e5c43cee663cc4e6f99b8e066d6d1e41b5b782167aed468ffa7b7bfdef1b488bc2a9a9de52f0 -c 408886cf7bf92ebd30636445e01f85c3f87b56ffb22732a8396209c22eb0f63cdd17d74c49eac8c60158ed0537edf412a968765fcdbfd203e4eaed61645bd63d -c b8b749dc5d8bf3386d0e25cb6c8f711cd23d1f36fddf6f0ab95dcb8c090319183dee393d6b4507754f06dfd165cb6551ee86401af63506500a08cf31e25e3cc9 -c 785783bd1506f4b9911dbd6b2f8427818b2360a6aba056493a1dd903f2f2c1a9558a68789790b5eb7f8f7cd67e02ce68ba4bf7a6b9ed680b40e2a0d6d16b8086 -c b1b6d7df905394f8092df02e431154f055fcc427e48666c427d76624fd8685fd908cc6927f4e25f8367fc3cfe5523e14b9791ee66589ba72f47cc1aa08d532a6 -c 3b187aeebbc1e5a9572d7424fdb2ba84e1541c2b8c300eadef6fb2c9bffc02874903963e6faf51396abb3bb54b34c3412a6b2d6b4e1032db99c8b51ac26efe59 -c 4f53ac8e618718eb98676650bb815b5a063875ae8bda639fe56504a1f16edb8e1cdf61e028dfcf7924567b3b25060b68b9dc375103edc5a09e490f302bcb1440 -c 48c22d7e7e4ad65d466f25a903873c97604813a601551ce17d5e235bb77c3227d7e21ea05b2ebfc941d2ea7ddea30e56061de99b5727a881c21047dd01744822 -c 229fdbb55c3792b84aeda74e72b52ef8212bfe3fbc17e9a4c42aa163d35143ed997872a51b444683dcb58491a7ffff171786182054ad266b61c42546512701f4 -c 9f13ca3844000532624e60c7018054886a1f36cf284d40e10b44b1bc793ab6af974663eac2398db4b6eae1feaf1bb0daec7ba90e54eff7652471406a84a400e7 -c 5e082c9c88fe3254fbeee0c4fe7b7b0aaa37405cd28a36f802c8474607f7e7e2ed1a4daa7d63605bdade69e8a3b4764243da9a458e7612f7154ef4ad3118927a -c 951a403b6176c59af86238c9fed23331209f9d3b5ff20e6bc2178d6fbb718b032b4b483823c918bebadf66cbf06dab2fd6df890cf39fe76c3669a5d2a7959a56 -c 64f018cc8d6b7f7e1898f86ad4c77256e53042f2e479370bec334f0606648f69f15d18498f531e1788df6dbb3a8bcce0c3de656c1c09b1c15a026536b996db7b -c 249d237d94a88d4cbe15eab528c6e6ea7dc64262c9b76ee267c5eae1aca4ae567a226b4c40ad8253537e098cee1e110bcb0ead2de4562c722b38328a0d10c5ca -c 5a48736510cc10c0d177eae4d6a4c2a5fa52708a661863d741aa9a0851145e592d7ba8524e79133ecf6fc4fb2fc56e48d2b94813862902eb684f67d18ab5d8dd -c c7cf45cf6d8497a402438835d1285b773a52a07cb4637f93c57f81b52bfde827d1c178cb22b351d556735ade5c6ade7e22b9de13bfe725377a47334760eb83d1 -c 0ead3acf9df26841250684303411e0ea0508d40453036ab2cba0f187da0622d4c874229d56cb4ce786282c988a4d421650ceeda448373c9e51dbcd1ded4c4040 -c a8f39ec4831e9199dff6c106f8c3eca83a4ceb33af8ebf86eae6dfa435219da27544e686c5b7a9cece4da98b1e99cfd203d7c9a92222b008601bd4ee948467c0 -c c1260fe25547f0846ae4ddef77e2b40545c8ffc9c5ce8337822d647ae3b54195f6b039ea9f1b5b2e7df52de56c4438ed8d23aba00a3952018c899611b10e320e -c 1487eede2580857c85b51cb4bf4aba2170ae279095faa41b8faa1cd88d60a917fe77eeb30bcd4b38679cbf1d5ee3d19304fd8dea8e9b8a89288628534c981459 -c c970fb0a7c3e2043f7f9abaef6ade3e1e0131ff2dccec66dc5fc2ca3d92df9dc68fc51c52064ee7b6d6de70cdf932a369d22e73edce1d1956268f51767896c1b -c 9b869c815312a5f20abac6b411bcceb613ba2560578417fc889407b4b48daf2f877c392e0c6e407f2329218c7d04a55587eefa3520c0c898b1f8b29242034734 -c b2606ca69196a2788cf5664a868ffa673c2a4ca6cb03cc8835361eea54e88c69296f81ebe253d4769406e851771b4aa7e195d969bf515c720becd2f81816a9cd -c a7d48dd4bc6d90bcf8a4e7baa3bde86e6fcd63b3df8102270f57e66c2182cec02f2325f5eb1a5fa6a072ef023ff71669354b1c239ed67df86c5a25915d65912f -c 149fb8a150f5059e232603997ce0aca8e887b66888663350e3938f4a7d3d8b3cac730c7a77999808747aa46a397619e4aa0cd47ad00316f69279dbf5c8ba7468 -c e3b6c57918848cb8 -s 67565f01cfedde6929a06cd3a3d6496312df3cecd4c914b3a788a13ecb0771dab78283ab8f6ed36e51eb1504c9b6a65cdfcebb45533006d3390970f3e23c3051 -s a6313c0ff7f58af94a16505c863d0d80065ac614f35518af6f444784816c58c4088056dcdeac397cb5d925f1b9f21a98f34e7fef1e01cca6b398c8da0e268338 -s 56f7eda4138a4685dc8241e7d971d9c1853f29fcaedbc59b4a40a5b8ba305f971c1733698bf5ab0bce16d925e0d17427bd5c50bfeaf1084b8d11f363fdc8fecb -s ac0ff0eecb2618c87f95ff3ba1d378523b70250de573d25279ce00a4b026d5811832539e055c05e17132f58878bbbce56104fa4f3915f4478b81906b20b91286 -s 6816029dad96eeebb0fe91ca40ff9f5fd13b4da38e2e276876be6ef5911500a22c33f57c73dc88f168ee292272c563d2c1065f6a3901752e82d22797c397fd2e -s b956b531354d994bce401fef627b6df5a196705b6721adf453559c553d2b44a4e5d6908638b02f88d8cbd7c05f2034a3c317558ddb9793b7688a6c91af992643 -s 99a63ab8b82852e0256f9dae9fe63b2bb62c87ed08baa7cab794725071a61f4f36c83a777e024a5218b8efb8d058d41f17fe87fcbc02e5d4ed4016241234968f -s 7eba6a9040609b5b4fb2a8276d9ff510c491a41c93a4da4b3f9e360ab2a29f1d5eb3f11bdee28cdb3b1d8715c30ca7ff9c0f18bfe26f1be4aa4cc2618c176a44 -s c93f6e478f439351bfd0456399b551894a1518990f4a692d689f62ef751acde2cebfdaf88149a797238ad08d42aca33b2b22bdccfba28b254b4813d658ebbf14 -s 7b943b5d90b097e0a042c28f6f3e926cb2b7d9602092416cc2fa6d6375da3a0fca4bdd75c171bf258d1838478faf6817642528b9cae83c041ff986dc0e3a2a3c -s e244174785344ed1af56e4d761d17ecfa2e07c7cf4bc148e46a9d4cf4a499e3e27271eaada5e74ab8c13cc9799db92aad51fe0129c9a7100079a276c7638204c -s 08345182f24ac84020e5d02f90fe48db87d06a7e05a3f89667ce2d2fd8bc7470ec9111913628502d70be8d0a2df58d3f326f808d6852629ea552a594722c1e78 -s a061c5fe867f22d5f58a475601c57de7dd3e8aa3dc97e5d141f0629d064bce5bf034c3a9633d4c4c6ea52f1818670157f23cd2e2fda69cba9781a6a78a8a5637 -s c75ec9a04c9d18602641559edbda253746547b330bcb1dccc0f400472d7b0ea63b7a0aa99eec61b6bdc0b68749e0a401d35945744d67f2859c29206aa5829ee5 -s e3439d3d0aa3e55adca64c784eb887574510bc132915d72df6b8b6fc4d122b5bc82687cafcc25c05e06a8fcf75eab6ee9a8edf97857b60b3cce19d1df0d7cbdd -s 9df4b5dcd791923ee38d5afbe88aee2d7b50f31fc237462a1a2687f6a54d713867e9cb08c06c204977d7a75a5cc2d32e5ef54f45094afb249d7eb42f531edae6 -s a2bfa3db0935c1fbf45fa05f72d9ef2f5183d2bcba9989b4584ffb2c66f52ee78daccb4e38b73b51ded6b20dd011f85a380e7c940b2d8886eb59ccbc2c77b6d3 -s 3626fabefee31707dd81ca5275f4278417621d56eae2728f9406165cdc23c35e202d1446d15aee9c04b601ca16ba6bdd3d46e01ec6feade4f4edcda59e611f00 -s 42062bde8f01783c852765a923b689001a9c5b82751420a2b928ff60e769d13d4f55c72bf887020f1c8a1033c3944aa4a30c0ca0e51262f8411ecc3b0a9356d6 -s 73079ad53439ff51a3dfc17876581370ce70496ee006826e4d44cd81c8d33319cdd518ed98e381cf68c3873f01a2f25cff05190a54464307535b5b1ca619ee4b -s 8b85d39722b0e7a5f2d5a7666aa4fcffe70d04947c0e7b5e785061393ed404f44724caee200e70320d3a69e24ebb538ca18d0d564f5fea10347a96e4ce6447ae -s 0244f06e2fc97d51a03e17eb837af33a306b7a2aa63c5eb7d9b14caa4d57ba9763be9c5477d2f5b11b56cd68cf24576b3faa0bbed0abba86c3eb5c000db39806 -s 1431b1080437a4d19ceb0ba142a71ce06f27d121db9e7f5161560f5a9eceff6f30929758beef3745591dbd101506983bef3658ad8100cc8b3c233c369b5dfe28 -s 34acf3679178c9c418b2c25f2cc4256d8f2f6f10e1865bd803d96953a28c2106be1d0e2f0e3df308d3d1406a318d6fd91ced2d53ebc04b8848dace653c0949c5 -s c72de4591e12740b198a7ed2a89ad1dfe290dc55cca814d87ed39c8aa7694987bd145a29123bfb3bfc22438fdd98a1289ca30758a686cac89a685e87c84d1f00 -s fadcfe798e675047f0b9672c4a7cba05e88b822e8bc409ac553a3ec4c1887d0c3cf71a23085721e8cf15995e46f3ca07bc40571ca64ba836b12a49e4fb2449d0 -s 25c83ace4a7c2cc3177e4e2a6dbee51e91bc36fc550dc3d0985db9f298a29817c75ba4d4fc31addb485b4a60f14f72c21bc2b7afe99867ee62ec02e79b252d1e -s 66922058853ed7e6e4bb36b143743735624e8ebe1abb97587acc897b280c3886070143bfce73c52022cdc4a6644fa91564915092f868edffb4521479423fd91f -s 999c268a649a52e25bbab42cec9fc5f0445f6f106bad29bea1824fbd160cf2b75fdb97f87cdf7c7786e1a0ae2202ec8347693ed3d799dc629fa5922e19faef27 -s 5a6e9eeb0871336bf10c6f6c347650119134443df8294b3483e0ad778d832c2c6b3992c85e16663958b854e69e4dfb9fe76ecbecd439c3dfb0c35ee0af8066a0 -s 305fdfc418a001afe9bbc0b261e0a919b390aef1122c671b8fd858137a1c53b33c6b7e04c3caa1b2c1801c276cedfea7421977669aa383e9b0fe93a88f0478eb -s 553c008813ce0f17fc07e0649b9929882c7062f40b652d71dbf8d4be05cfcb5ec536c4d45a86b8e5d60b694274b96624bb5780abae8a0ebf9ff5494b92f2db3f -s 7d7b9869cdafd714beb10651a8c36eddfb51f6dd7c56f177aeaa5995b40aebb7895861fd8bbc731877d3983ac84ad8269334d70cb463f82e83021226372149ad -s 035b604f8b5ce98f38289806e16a8449c9ecd08edf4b7020d1ef2c7af98d2d345496b32fb44f22dd463cc2a2e8a88204c234f437d6ae13933fbeb3e1c1a5fbf3 -s 442ddf60755047cc6f40f12d26b2a02596f36f33ebc4a6c8915d7500a1160cc744e96c60ab93e2847c12f605f36f2261e49d1f49757925b88302022e5260f687 -s 313bf60ec0e798c2d92e07898ae3517a519728256ce94baf7ffc32d150694f7f7ab1eda40c67d4239f15ddb6952616664707b89ef1ea1d45b30c8a35261c1d37 -s 3976ec6d07fd7444027ead5fd3f5967c5ad5f64c668263cea172fca24d6f5b5bc6c84ce7a4591d4523a61ce2ad12abc238c4d849730c3b274bd0c292080f7596 -s 12e85b93776b0f05e77f1b089361fc3b4425a137e196c4291c151c3e1d676b5c9b8bc874b7147346d179272b2d4fb19c484034b5300ef7a418dc3af4d8586784 -s 4576cd3583f09968a432690cab98dbded8b174fca09b421372ed3ec8478bedd01f48e9212d587ac39889b6a1b574271f8c443b0fe0e59b4798cb35f1409a16e6 -s ffe47552574934e77f35e5882ef0a28db95630431118d003398950c5e2299799fa93bbfc25aeaed86ea0fa31d3f645840aef08fc0f5bb38fb7326184353da636 -s 9d3742ee85048af61c18e285270d9c06f33585acd7496d82e5e78d2b5473bb5f01a99b25fc4bb24c9ece76c7f1be8d52c30ce174f67a5d68f22a1068a0b908e3 -s 4fb84fdeaaf4be53e16c9653cdbd9829229896958c6b8c3a9154c73f182feaf33aa17f370245f44defe4a0c91f3df141b6201c16bb8d782ce9a51bfdfbf08571 -s ea52cec6e08018abdbf26693785255add4ea63cf34dfdf6d9528a6bee7a62d23aba48a630d7adff4ddd169a150919f2ae1b51969a9b253a90f220ac3c46ba25f -s fa24337a41a2f5c3d6a63c65538ae7e6619293d85303bada9b679dea92a977e9a8d10fbc7b8b2312f30c0b20c7f30faf9bc79f1b78edea5434822e6adb8770b6 -s d991f692d942d6c5a7fabe4dda211a9a099c5cc81585a3e9726e619e538dadb2e9ed14aaa1fedc8fa4380f47b5ffb4198c93ddb044047cb2acfee2a071a44b3e -s 4783f6ee983c4081a8fa9f91fe924710e7af376b1ab9cc56cd206c335933e0cfc2a66951d92f21816c8b3b3ea2db817ad43716f868558a94798518a63ae7bd54 -s b00e319976fa74cbc6f4ee4c85b06cc1cdc09fea4f6858f303ba67643881c2ff0de07e591c9f74474404c08e1989679c6fd6c3869370bdb1f7eaa5e6f7496942 -s 2509e698fa5d798a6a4688a49591186035e19842b5d50e41a489bfe9abda35833a14c9bacc48c8397f39493ac08dce3a6a44229e1af8f62ada097b286505a4fd -s 872f379470f1339a0306e8c0634ef9c2589bb833a7237ed82d709149458bdc9f1ec76dd2ccd401be435fdc83839e67187cbdb9b333adf60622db9a3630cee863 -s aa32e064daa0a9c9b3e18f20ddb3e96da2156902ccfb3254afcda68b10696fdbb37d2d56ecd9b94d73db984b6ecf317bb88d8aebd3077e0a054e376cd0e13722 -s a7ce15b56bdbd3cdaf48e51ac2aa1f4447e587ecaa01b244d83e780a44b6b573807644bde6ec7df5493f5cea88a2597a61f3a030318132f3bed5234facf05a69 -s e7d08d1840561cbfb99ced4399a68707cf407534e9f78129b4e3bf6199aec4414d67727014fa5efd3e9728f59594353e2230b6bacf9963e3f8c84fd96a973823 -s 1a1c0a583852e3dd6adf467d00c1be531791de22b71f50cd4e16dd5575c89d6874e8621115c9192d1f05215c18c3902d487de0d607956c671cceda0c8c969e99 -s 57bd2af6ec3f25f2fe936d09f969fbdc97d22738bdd47b9ccca4cb5ef34f669cc65d0c54158c4b5b2627c3870904f9011e50dcdd43de7f44dfaa0d5f5344d192 -s c830e2173772203bb8e7ce368189963697685725f187dab5511cb83c2bf6053c4685c6d959ab8d7ffbc5bae4ca8bd19e77276788df87a7e85c7048fa67197ea5 -s ecfb1fa76690da514d7e984806fc0dbdd97a9dd7e534ca433d21db156547ad58dfdfdc29d54de96e24a2ac6cbc1a092d60f8630f4a465c9cd15ce6d480998a18 -s 6d56582ed6c6fb440f4c192318d209d43e191159b5ea3e220ccc7475a1c15cfe93f21d6043a6420060c7b8cecd24c4d7ae347581332e0cf442fe9d2ca6161467 -s 55f579e0aaa7fa5af74215131aaa1c454a87668c694d6ac84c1723e161c9940a1b1d72b162232de03e8882149efd0f42e6ca0a01c172251f34aa555d0585d3d2 -s 8c9320f7827ac7f770f6e5355a0f45f1d23a609c1919eb9911a4dd66888c2c5966eda9d56a695fedb9fb77043fb06440ffd682a76b14c5d016cef0ab17dcfc98 -s d0b64d69531b4c2b19ef481a4213d482c8afebbc8713c2eade85831e35dbfc1f4809dd1fbdab2711d5d4ef24edd32347da64dc6ebc0329ad8838f29f2361ae92 -s 36097393e002dc13d509ee447e04af74d1af1513f9f2f9824e1a9e47e7b1edc0191a026f359dcc1c5c7dd25c518eefe8ba50f284be6b3feb89188b1c1e8ee9a4 -s fa0c7a65d64700d71d448f5e6db890258732d0efd506b3a3ee45126f95dd50547d124fb8cbf494b2118571433d579b4acc2f42155848571e5fc72ae7f10c51eb -s 61def024c4a256a72cbd5dd62106ab0f174cf7993b0b47811a50235307425a5ad34c4105051b6077b259f5e78d222c173519ded6b19540cd35467f0b528b5f2b -s 0db28ef96faf938e00ec0094515fc81c5cd2876b06adf90a7a77f15270e37f047e4bb6e32fc24dc8ca03d3f9eed241eec78a890a83337d96266efd74ac1995e4 -s 951568d6af4b9c5642c5c57a9eb7363c762fb651162097c6d4e0722500a20184f236f3f22ba2653fdd2f13b3095f5f4f205d43038c4796a9f56965ad59c1c675 -s b56207b5d31d8be433ecd5f90d4f76f47b7229d07a6872d3719203dae3faed62fc96c22ef788cd8efa8fd462f11e6161925594c3553bc00eb7a85ff23e17b0a1 -s e3ee6e942f203ecec61cf3e078970682fa26cc42602b43e4e09cbc394e334d281052a9bc6db681c39670c160c7bc5b31aae1c91fc41eed351ef77cf0ce6d5463 -s fab6e5fa80da3b09d21e6d5b5badab4abae131ca574f8408dd3ca1657478b482d638a623220cb283a140175ad7d1077a74e531c2d2735cc2c9612dc27aa7ab23 -s ac4894a129f273a47ca4e867010ac80362b8c20847dad1049677e68039eb7c208951d7f35e1f826a3009f1ea10885be77afab570ae7d0e0f1f404682b9116941 -s fdf5069516910a585ed0d0f8bc2e4ad92be428bf965da490a5ab275fc65a6413ee496ea5de884090951e4edf66f1eae3b3ae57a5d4a16984c8746d486443dc91 -s 8d7955bdf881d0febc8daa25a2e700e47bd248c45fecfab36b4f60ef7d1f9cf4b207531071eeb8530ddbda2f56dc036dd4e91d0e15c501892a8dcf752fe9db50 -s fd72373d827c6f0c39d89e3168cd9d8ff66ae09b3fbde3ba5d5ffcbc39dd2e85df21823cba353e8c5d5e240fe8e562258dd4632c93143c2aeafa0045df6370d1 -s ea393757589f721e0bb6be70660c96a16425a5f7c6107725ac6501b53a02c805f903da5dac9cc1cb9565923c1d82b722933c8e10ff3cc02a365c4e716f54453f -s 91e27b8b7a6790a4b269e8b027a53f9c1ae52c10bf69594c2190b392507272661329b7e2028504d36cb4390d8242d47b4370173a519c97170f19d71f2a255730 -s 26dddc553ddf03463edb7aee024de80d0d38a8d9a9fcb18590df19940bdff59ce06bd737041561ba5ca0df018f8a23dc105d1dd1b58e4af40b1552fd52473654 -s 7e3aa0f6ece74718a1e79b411b2435823cd7232e7ca9ac10cec7d10bc8f7df628b4d60ac83f76e86a88d97bebb267c53f04bbc1d4c8dda11814661776e910a09 -s d3b1b0d0f4bb286282f39981c023b986d0ce9b2792effb4a206d68d96b09830b244b7533a4ef6abc59b06ad418a07a7fd8554df1a120114990b48325acccc5e9 -s 04cd5cf2f59f4534fe47e7c786d1ffb5b5b5309ea4793ad98ac2d23eab95cf4ae27fee412b65e4aa1da1315ae8acd150899a0fd824f010f9542408eb2cc9bbf1 -s 927944415a15225e31c7a069119cc4ec5946a3f1372c395ebcfe43dfa799fcbf22aeeef8df9bccf3c16f2aae504e41eb4a6598b8e826c489083e3d9abb33b8f4 -s 52bc666f25f41226e8bcd34685380472afe24604213b71fa7251e922626c0f852c081eba446ba06d88b0575b4e5c8f15925af870786aa51bbfa0a3eedba8cfc4 -s 58c31b7589c7c5271c7ddec149f5fbb3755f0b64be67e7dc5c82aae288f7e792ad28b202304df87861ce5eec4b38f84af71664b551ea976c798038a85b832435 -s 5fd5d815119b49f691b562e9a68f75d0afafef8131392b552433ace5e716268ae3df2c61571c3dffb08cdc8aa26c62916a64c0a2cb7fb1a65fa060b6d28d0122 -s a41a69b24b1ea4403c8cd564ae1a5e21547e2026ee19ce13bbf1e3c3d97bfcdc0d2dc784bd4ed196d346f279a8ec011093ef6ad1bcd36e0e971f79a2455467b7 -s e0e233347c729f73917071fedb4e7e664b950e9fc2c543affd79bb2de92a690efa00bd4918d6a0f18fd8d5894665388722fd8bc6fdc231626081c8f7791dbbbe -s 48c933160c18fbfc5cc79af370437d7d6328c8bddb1e1c6817d0e43921ee87da2d7108aca35a974874295b8d93c83a30af21c8713bfbd9a7b0c24133bb761a27 -s 3cef72d421471122b949c2a0eba7c8c1c98ec2609de25c89ae80e5ec972181a9ced8cba04d43c5872087ef1cf0c3a871401316f6893169464d78b353e9488482 -s 1624f742727aa6a789b8cfe9bbf0247c303b24102b1b8bf94e613cc49017cb9a88ed265efbfa47ae1a14275fc3356d63b1c74bbc1743958969baef7e416e9f64 -s 777d56363efe61090e39a53f39d889faaaed85d7ddfc69ab2e21a12370e11e346ed404f69aadad6a8f8f7a5ab13b28b472cca7fce8c709c1b5009e2a92db8eb7 -s ec245d11e22ae7b4ff089ca11b98b6321d0a20bee841e0eabe8889f431efdb07f680d66fac985a9de980ef0c3bce76208d7307e278ac157b3968894e7325993d -s f2b64ca7527d0f1daf9bc81c432870b068cb2cbb4032426093a1bc0fa95946e6caee3c7eaebe02e64b57a83fa7dbdfb18aaa506c064c09c3a204008d5d2ed1f0 -s 250588c3669b1ba9b43dcbaae893478062945a56aa7330dd5c2b3b50f102e68c0d977547a9e75e9e8fcf312c63f9550c78666e88a4191eca16462b4654a6ca41 -s fc607aa433236dcd69f301fc4235e7d58322a114764054ca3efdd6391632b49b22d4847e70b7803dc77d6cbd49888fb65c750856057ac00c5c6ae9e50654a932 -s 02609c536c7b9d0f96023ddccda203d3ca984f680c47029630425768d0f1d1264e599933089af07dbab4b18b1a991aad83f762a75e74bf06b2bab054a19fe092 -s 341a6325e508e419b6c26e64c6c37f5c5c2ab067b95d1c387068b0a3dc62935171c198137baf3e3f4d2c609f5eb550dc63ed2419982b22669cc80b2302c5a7c5 -s f0425def4f926203930edd32d12b57cd5b5525dbfdded13e65e8070301661faf3ee610aeb565f470b6e593609859baac8f7217406f767e968be840f3699bdd06 -s cdc71a174dec1d8f0b20cd1e363c7f42672ac5625b026b6125f231181544ffc7b7527ecd909567c5d12cec5114dcb3230478b3da56b12ac320758b20e3ced149 -s a3792aa5f631a429be163dfe7446dd61352d7ac7c25a0bf156f443e77bc92d0949fbbc18f7004d140159af5312852b86697df172e07b1e110934c1781dc5149b -s 06bfa7359c951d486377d88fe6f9076fc116d5ffafbd5d78f0bf340a86daec0045709350336a40c651b95363f38faf12aad37882ff9645ce47c437ecda6e2c2e -s 112b93c567330d27e60c80dd2a32185618e165712507b093377008ac8720036a347efc95319a5cdfba38667b9e25426b422cbf24187e0b448580e1e006bbf4b5 -s ce9e42c0cc603c56672e99c373a6bad6687c8a3208578ff0c71c2ae131663c531ff9297176a9a2cbf1e3ce601d2879329e28c8a866229c64516622d2b90eb8ec -s 5f896ebdf958f44df8c743696058d1993c6b400ff5129b428f7aec8aacd8f243a8c1fc192aac71d4eed2064e610effe17fe5e1f6451f3c5605fc70200af9cecb -s 096c67b8a764f88ed0d1daf842f930bef61634f8c06fdc2a33780c9709c73caafe04be339ec06ed91d1aabe55c7e539e4afb46cfb08316a885ac27a713feccb8 -s befbffc2e9b31a4672dd8ec870bb089a7a80fe3e08e8ab0441fb67b7d799e73a04b6824be0127463a4ae43b1a90744699986c8f09f2ae6be20a0da5aa9ae3027 -s f5872b3e7cf1011f51043fde2f72f1633c42ebe11ad0a150f3ab389d5c088422de4aff68f2b9a00af3863e03a2571d078a624d13a5b6f38bfe6482d6e5190b28 -s 23ce159eec90040465c7859118d23b07c3d0e6515c2576ebba334aff7b40ab6177a95b308bd120ed0b857166aa215ef6f11d726a1b3a41ff4dc6e08e288685cb -s 8e64bbec90e089edc5efd1b8d5620361f34c89d6171a5808befe27686eea7a238ef03c524890fa150b2f3b6c31e087f9172dbf7a86fcc9a0c80c57f323a5c9a3 -s a5bcccf7d190d10e05768416e28be566478b73aa656a254d306a4d1bf44366a2178947dcfbe92a5ee4d2c0b56dec1f2e0794a9c4cbdb07a48b9516f9450e3b1f -s 9e1dcc9566aa1ca080b720b3510cf98180eb4a5bc447c4e79cc3376a30b67c8ab60e5f11451d82060aab226edbbb8dbfdc0747ed8a42887ec3253f662377f979 -s 5fbbbbeeff87690079775e3eaf3d66f19fe8be9067a317ef2ce9e9c3ea8d307cdc6d7aaf9161adebdf7225d460d9cb02ddaabaed3c4683217068c727aae7dae8 -s 8fd0d4e06dfe705bcb1dfe3a599c685621997b4f602693d2fbd219cc2d43b3cb08434c995f12fefe25736b46ca39bcbb4d75c7557a053babec7b5ab2a387655d -s eb7a2d305e4552a75a56b1a0c342754cdd28586de2693d07c2881cabeb04aa98c4dee65e216a3652f25a84c4858a8ef9dbed00502cae53c6cc1dc1dbe9e2a12e -s cb1ee7586e7d2785bd4ddb1b12b5a2106db475cfee591cc0da6cd9061e7683fb714f1cabcccc660404dc434d27f132b14071edcd345d511c5bfa6dba47baff0e -s 9fce24d47b66a9ef98da0a8756ce97418a6bf17e1eec9b6a55182d096d99e77b518302fdf13264e234be6a82190f5979ef47cb3fe99257b5090ee341e709b4a1 -s 6e322a87740448dd258e714e1710ec1abaf1c4b9ea5186e5158e132eac8c26414746d803f20df246f054cc624f5a6cc6ced02fc2fc7c4350d46377dc6a2f1357 -s 2d625a603ed7ca31a49b3e883ebd9eff9f181833e7a01b4473bf47b00b696216d77cbb17086b7cb3a453e27474d346a4b686205bdfb6ff7288021882c3e86f4b -s bf9602ea455baeb094f2f3eda8bacbecbca37f4a2d771d18dc1b4dd98dc958c64aa0c89e30f5ad75a16ec4cc01f288f6f36b96014f41d30077d967a616217265 -s 03d6ab3791ba0aaa26b9ff91672d0099c9e47b7b35afcee7947d264fa3a56caf6ce5622df125d6b52a896efb3b9e437f60cca2131e7cc628bd26f352971f3d1b -s a1493492acd657b7e1cd9d4c6177d38c0ee7544b7a4a91a8e043de4ae8a3b4ac22be3aed5eabf5b62f98ecf15e918295e2d50fec1f384c99174dd648b13efbf8 -s 0be27332e0ed92e1b05b2820699fbdd3390181ffa851743a20795e982488343228a81fe141ba06ebeaf6a21dae5dc5a1d9570a36683c2cfc57f2dc447183bfb8 -s e7878ebda6d9411e82e222c328abec6dfb7fbfd6caa4e198787db790fa620f87c9a5c25a04921371122003a6a836a7c994ac9ac2e13257c26907945ffdbc62e6 -s f8e73bad5fefdca5933cf9346859e890a208a08ce1eccb02e05baaa7db3ead41fe72d5523c5558bcdb8bd107af8a6985f1687188245bf45d2fabc1ec36989957 -s 1466019852526a1982bfc9b1e2a6d47457977cbf1f8b86ba6919438c8ffb71b7a4385c60daabeb46eb35f775d43a30b28390ac1136f21a980768e305ae3726bf -s 759858d683bad3a2226ce4a21356a424bb37b3f55bb1be09f4bd305ba4182ced3b2705c0f7804ec28eb32120153782d7ac025e0da42378a68ea33214eaa88fc5 -s 3b40c011711a95f3844c18872a41870f0a6c3c74f158853684408c1e55e73257438beb87ab45e7228d62c69dfda5e36e5a9b2cf6e1c9db8f9e0f7c19a5b7ccad -s ab7f0d4c36f648a1715de1615b9aa1f7319f354fe556abd422b395e030fcbbd60c6f94ba1981aba6241d39380602e4d8876e83df222a2a03ed5b32ecad8ed440 -s cb58c7fbbfb45768c646110585be3699756900f0a7349e5ea36c107dbc8d0e1f6f08d5eeebb9a28c4e2ad3a4032d2153a48ee4cc28d72a8de991407c32b0e7bc -s 8b8490eb6f2041b536a61f18a0505c996088cce3b5ef37b3688c2663c68b873de8b8c3a20894ae7968f22553df3d6ac07a7e1d8f345ad7abbd447b2cc254e721 -s 765d0b123d09f27099272c7150f44d6d62943f08ad99be7c1b7311d2c71bb756931bba96e2f61c6da73bdca2348560639cb3e93c2c5152f23f0fec5aad3eb5c9 -s 573fbef923f9b586d2c9eab8f4a9f36ee48577de490699eb2905d815e6be19414ddf385ebaea3275cf3fc7c6ef2009d53c7b0268d98d4a7bec5cd1f7855457b6 -s e1c538041a5025a13b7f9ac82c9e9cd7ed71ba32338913d527651552f4884ee5106932a82edbe2e6cb20e53bb64bda953a83ab48b03e29271efb2175ee42f2ca -s 815bf9d83179b45c9bd2933478e7516190395ee9496da6541d15107d7b39d2315e50a661d1c0baf138178c9b99f7ef03d71b4a99f8ecc3da3882c0d76d24ccbe -s 583bc164b38f23922d8250a57eaea5d38af5fae886426977e711404b0c497d0a498c8d999c4b7d7e2ac5b812c9881e9502df153a8230ffa4445e7193944fe712 -s 75599926c3a9cba1553ef9397e7f16a668bad20e161463c0717d67f75e00d58f50055d2dc9257e8f5ca550b2964b483c600cbdb62508ee07ee25f7c1907f0711 -s 5bc8fc1dc8ac0ea8bd30a9749b5aac8cc6e8ece1e8303b77b834350e2dd74fd86ba376c39e3150bac2e370ad743ab26fb09ae72c8f24e8eac3e97cf43058e1d0 -s ecc4c884bf84460a39d49d3fe79bcef4c19411c1ebccaceb3d84fe23cb5c867c359e60f6cbb15c45be59634aa9bdf2610483265f4942b2996392e41ffa71d4fd -s de91050a78130cee4932cb10219c5c14615afa48d67d15d2903d8d07f4bc77fda9999cc85b553e3b4456f7f419c7b1a18ce1742acc71a717831b2dd17caeccb1 -s fac9858deb4d203530225de07d4e87b6b107a88ed9de5c24e3dd2eae05cc29940c753485eaaf73557c2270fb422fce639cf85746c758a05422b7dc09e956ee7c -s 82af6b6f4fe408af05d7df1f871e7215fd6419d5d2bbbe374cea038ef68510fbb00b6602c8b920961726b3e87436a27b16da2f9a79633341b77b54192648a82c -s 20d1879507f23156c0601f25e4b6d15aefc29ffd34b19c2f7cd8c4b4e39981f23f29ce9220eef3b11c0b4a11fa6965c35bf0aebd561859ad4f39d19ccb3b948f -s f29ff6333208004e9aef2a0a00be0c7e0e61921f9d74efe1168185704750e52f4e1f6a3939f30f4937e81fd5c185147393a69e7bc0f2a9b724e725424d18576e -s f192b4097aa8fbe8cb2d59ffb9c72bd9158b7d943cebb23cc1b9b79c6326c3a37dbfc785419626afe4e07a42972eea40e66f623ed289288aefde395b7901f03a -s eac4ceb4422f9770ff262a956b562a1f7030b632d5cfab382f153931ff332bcc -c 35d57d9a45d3e17a2ffb619e74a20919a3ff2bea74ac4d0ade3654c28a4204a775e0a07cb5d65b06446532ce81c182c5ccc5a86eae0fad5ce2f0d3fbf9904d0f -c 12450a39d148277bc88f1cd52501fa61634e8584b4f614f8634e10839b2018a5 +c 7a1bd0680f1ba1e2f86a05de7c436b68143a59817f9573862b8f0ba37c32b1fc75efa432c34827d224a747ea +s b86049a411ffb28bc2175257e6ac1ab72210e591081d836169b03ffbe62a61ed6222657f0db2cae85fa4ab24 +c 90190aed869a0836edab8723b38057c18b19140cb2eaa2813b3da532093d61abbdd77a498519b25ade297710e1a123a4259de71bd292ba6167c6e58a2e73ac02 +c e50800c0 +s 389f2553b69ff70ffafe3986be885b35059aeaa391d673417453ecfe0931f8b991e74e875e00bb5a704b6d27 +c 4526eb33fbe25212a90f7a73af3de88000254aab11ccc49ddc250fecb42347e55b9bdc39e6fca05a7aa671998cc80c29fef24296cfc91c53edbd7e7449b60177 +c 395cd375857361335a4675ad4d03d15eff0b87a723b0b45c77ec2c1d0b52bf0a48c3cdbeb6e42d3ffcb171b3d758ebc44ac6556a5b83782f4aa2e3f021c6e522 +c 9e7bc4705585efe78f037e23 +s 7946f7beec7b5373080ec87e1bd7157c86149eeb8df4cdc71284e64cc4b2c559633d84c393939aae2de8519fe8b72ac5dcdf966563c40753b098c07897723938 +s 97d866b22187ff60cbf4258989d5d5bafd26fb6e697fd6a961db5536f85fb692c284979e +c aa49af358f06277320e902ba959ca4889e2383a0bbd492ba393ed178dc0f0df56ea64ce6655179ce9d84ebb06e0b7f2fb113df334d9921d5ffcdbe96e32646b1 +c feec4bbc35f4df88f3b3810067f3eea42d28ee3d9d02ecbbe28d4b04770463e61156b9aa9f00d1d88023519083c2468c98f2d3173ad5fe61510b33b405e49f02 +c edaf83bcee729c3fbc206f911cdbea1faf317aed249b9f3aa08059b341082048bcda3a9546c10210d4db8d441bcdc862c00b12ce6906b98bde82cd1567c7ff3c +c 5dfe70eda48acb8ed8003a7a565549b99fb0ad915489271bb159cbdef6f304af996f402f +s 10f745ef0a4e73105c34cff64355d5279572b4937e960d1c1edc09f3 +c b80f304c37a0dfc4e490194ebc3d5a6535af82a1eb545fe716611286966c1f6109f27caeeebc5b3f1bd048ca2c1453b64906b43d +s 04d44ac2710722b56cd48a775c87ae7c054991bea933eeb5105abccb94604e3f5ed673c6e5fcd85447da7098 +c 73ad165ce11de7900abe0680c1c83e341d41694e75832ecfb3cefdd44135bb09bd42bbe180e767286c4aa2639f14ec1ae5da0a09 +s c7b68405d4c49a1d7d7df929f4fc32900544e8be4cb3f86bff62ad7854d5bedcb5a379c8e573685c063094bcf2a3e347b5e8d371807aba52a3943f46817b4529 +s 5205f7f3cd0eedac6bb4b16b054c9211 +c f6818cf2f5a8febb37307331f77a273edc6eb2ea2d83212bcf972e676d0d21377f32317210b7d75f006067008e78c0ebc58066789eef3a9f3d5eb08825b239d0 +c 6d607e98a54d5775c8a55f85fde677c4dfa37785242ca13728b06ead902e74fbbcaa5284e460919862630135e310b21e8e5266f8693c53528ab7a77275f37c6c +c f6e6257defafed636742ccd06319b57c8837edf926e5403a23bf5a34f3bad94ffcce7f643e0b34d912ea36f8573b9e8e75339eccd42d657ce8444d6a5f49a8c2 +c 0999c4f550140709cad6371938566b2ba140a00b2ffc27ea7d4da5a6727d5b069dc4c4c94351198e75863c14f098326428e1647368daa0f4bb088be027ad6cf5 +c f22ba110d271230ebac7127d0903ce64f856a11278f6e726f210a52a75d94b62546d0bb3b6358ec24a07a54c5658d6b78e57c3a33bcfe618f24868a3ef417159 +c 6eb5ec7c2ff724f0fe6e6eba1e53d93c39452a913cfe378b3f484cbecb5e2cd2e999554d6a46f4f9e4800babe3caae1ba328122d147ecd163f5ac79e43985730 +c c7fd341286ee8e0fc09666494bc4ed3a3b35a0a31d78763c38aba2c5cc0b1ce6af761000846d73440539de872af1558a233be65dfc4e17000f9a84363e1426fb +c d37543fe684632da2b9a03499400df005e4856007009e0c8c2bcdd1730c1b77f54edee868c2a372f6d0ca1a836f1c8f6c3f03eca352a6620beb46efaa76dc42d +c 6042e1a842ec003318e6ea339b87a28a776435fff5b3b45fa78177ee9c8bda4a518c694d7f97a9e475135ab8e899ae72ba96df3712094166a01a8601f8999a94 +c fe011149f6cf09ca20381c44e3d3006d5d70c32720863efd78c3ff8dbfdbf879b15f8884a6877678a2256b53abad850398e990d84d841818076b94734b6ab16d +c dbd01289c2aa4961d1520cc8ce761b66bc81723929eb5ae89fb331b80aa9ad454869ee422288b8fec0edc523102202a59193edce625472e4559a081a8c1e106b +c c45d73d273ad543dda38721fd0b98263417081a4831be813306e9138ee78392b3f431ec53aff31cb775bc5f4d10f6a20855bc9ab3a6f6e3be20b8ccfba3a71b3 +c 8f049ff3d334d209b21e336cdedd8ed427e75c31bf22affc58e51f2ddbbf8a953a0b6312ec56330324d1ead23c964508db584aa17979e3ff78e58210f1556bc7 +c 9dd5641bc64243a8cb516676d68f8dbdca7a9b0273131ad302a74d62f13885e664da00befd486a5043e6fabf41261b4be15ecde3d25c48d0560676b6f3aeeccc +c 0e7029965b5c39c7dcbb7029a6611e6dfc6b3a94a4bdb76cbce5f6022b60131cb3bda43210da34ff2e05b11c4a5adf0a40096b8a6822aa451fe3583bad07bd2d +c d7cdfa70d0335d21dae19529b8839fc6cbac60475edce9f8ec82150cd8e935c9def9542a470fa96186775557b5c939feaeeb0534df8349ff47b34bf91d16145f +c 278f2b267e22abd4f326fe663d85f985396989ffc5fa7f738d6220dca16c7f22beaa93a40b4a88ee0161e917efe55ee0d0d9717b59637570a65766e1ed9d22d4 +c b3fd7419f970e9a67cb15bb570b079d37ab338f33aedd1a5eca14491054756cb68d7245d30c7974f86e3140faea05d80071ce7df9bb5970af84a6d2179f6c5f6 +c ea4e33978c2d68c8095f69120ad09df953d168bd81e1fc8b3fee3e061b27ee33b65c6f88b680094e620d8f6b54242fb167422200bff7a236155641667233fad4 +c 7fd57b5270f5a801a82d402a9f6ec3f857daa63069fee8fbe585c60dcc30c9e5cd3c85ae846c2ee7cddc60459f8ca04af31ff4216f74151fd02c86900db18353 +c 701b838986b2d7091babf8b3aadd77904f65f80e690a6c543b4946c8533101596bffe612e8596c177080ce0d6bb6b812a3cbe25e23c8156b2d33cbf6bbe4b78a +c c4e8469b981a98cb7a262d49d8d2117db218c8c2740eeef5bd85219f7144c3c38316208c6039145aa2fa02be97426a7c9b602c432d5709c3f3f145d1f42656d5 +c 06b446809e1d0ee10512118e13be04d4603d3d3bbfd17180d140a57576d90812d1ef989033a669695c5a4ac2b3e188932f8db6d4ea3901f64aa833543e34e577 +c 33a017120b2921d19462818e4dc65054405dab2b9e357bd1aa9912da8ba5b0450116fe66637b9823e4726b2c51b2adfac3938351a3ba00d588dee72b1efb38d1 +c 2b08925a7c3b8a38fb02572e70a572e7d76d1ac8d671e8afd52148c814685d1feb04be234fe2a25e66ca9045be5c603ba56810a1d6f3bdd50e2c926ec2eb17ce +c baef87749fe06e15fe7695807e96230c20bbc710f154fc4f4bd31201792719ab4da983bf6040cdb00f3a7ef09f2cebc3d3aa191380c7d8bc3ff0137a770fdb0c +c e6cccef56b04d937c6ae8af649ab74efd24daf752606b32bee5ef9ff77ab0ffda0a41c8e635d32be5db9c1357ac79aa04890eac685da9e0c5b96377c22d471eb +c 51a0a25b47c9880d582a096ae7119f9962fd7819cc3d11ba9e2825e7afc826dbd99917607407350d15b38ac6e6c347f5d0247fb251efdd64d4f3e055fb877701 +c 6f2606b6f1526296a786677511c5f0a97fa8d4ad15a067210c55b9dbd1e452688f8750adfd699432dd9daa91a4055fd4b628dad544bd2e8e74ee0d223f76401a +c 71ea065b92e78cb74902011c34abf1b50dec0c37e50f5a0f57774ece151ba2d2efac965c8d48c4a6ee27002296d85a35d4dbf4d64ea4c7eaeac6890c99ce65d6 +c 4d75d476ea39ea8165027dce931a4f4a5009b9783e32c61e71a009a5e4d89a972e2d6aa22f795e34e8b651f30d9cbdab99f9ed887a11dd90f11bf05cc1740e83 +c 526f70805b5da41bc06c126672df585db13832d0503dd03bd9715b39f76f5a828af9e9bbf64c90bba883d66a741ea3010ed9520fec43272aafa381b34cc1a441 +c 3adf566fe43ddef99a27f7b9298d0f30298d9757fcae9b4d35c5ddd4af85127d432569ffa3ad207d0825a4c9900178b958c3ec0a919a269624b53996a28c021a +c 24f7819d634659320f38634c7fc0128c5110b5b692b85507b94459462306e7b18c0ce84ff0b2de8fdf90f3c67049efad07d4ed53a35a8daeffe83d7ac954f1a6 +c cf2012f12c7ddb8d89b224eefdf8e1f7b6a48360751b313262167f74800e79b89c8f078c351c387099fcfb6edf78ea573de94c9bc0dbfa2fe3ca92c7ebc37986 +c b9140a0eb6b9c890adc47497c8694412c6cfd4f1ddd00575270426339e980ae00c4b7e7a4a26623433c3bb6293234cabdd52b2e9c7fde9986ca2370926e6b25c +c bfb30a8f72d0d0d94393c0b7dc92db3e9a97157ffa8d4055e0090288ad2b1088a111c07e6f0bef6492bbbcbf11bf63c88855dded82e5d190a088a0d290ace879 +c 8b602b68012db7bb4c23619b89ea538ff28131fbe27e9600c09a24e077cc01bff251dd9c433e0abb11904260bd03ca7d06a0d84e203f75c4a8d851d7c38ab2b4 +c bb470252b06e974c21febb2fdc55026e0c5c9969c1f19481c3161583ceac1b54bd093406cd6d52b6986bafbe43e7c04840052f9632079ca8704aefa462b27a39 +c 25304b5ddba4f1b2403694a056e18197ee1acea13e0e557eb647e79509d0d716c6bec8ff82244ce3399dcf3908fa80956ddd4536bdd24bdb76caa84cd977665c +c 7928d1a3e8e1d6c641f33bfd5287b40e8bbd175c2bdf24cffc63ba59be928835b7f8dbdf2e80bbb71226ca89236d62f4df2ebc1eca5239e72ef0eac343665237 +c bff816f05627e4042039e77b86e1374f94ad3f609429519db06b89cad2aea70504d518327b5fb70ef95db762e07c1842d28f555939070e3d73b785d54558f873 +c 8fe7a801e5dedc26f4539fcb2ad7884126c56a5815b0b74da7b81e8c3a3b1b60df72603fa7ef47e6367856b93e0a7d88ec4d17c9fff12da89a7dafcb32b563f8 +c 33fa5c1a37f042271b04280328e485137d407af12fa22b216f6b1c355737f5ae971b769a7619ab7a86c30702d21790d97753a084f2c8b23c846e57a7c7bb1704 +c 037dab2b7e79c09218fe98edbfc1cbab4b62fa379f4659493e01e01fac485a64cea4c3c92688f91dfc4fa95e8044fba754e3d282fd5164fef6fbeb60d1dfd02b +c 9367a7ddda12cb2998f5005b971b4202c40105ac46aff24c02d8d97855508b6ee144d61ad539d89ba0da44c4ff72ba65a06b340f01a9682599bffc174ee08a71 +c e5087455e5f4cd029b8c75122b0ebc55ad3ba2c5d94ab02f1455e5341b3b92e146b1fa76ce37e239760fd9b8178efe14aed21991166889770dbc9d115535058a +c 1233a73170f6c05bba74b0ae0599aa11e098d5c45bfa210c6f3006ca9a40c0aacf8b132f8c383f09668fbaf59b4a44eddc40f601376d33ad18a6e859760c9605 +c d0ba688299a0d863448ec5720ddc8d057d31d6696e4c7fbbaa55f7d0ab61f8062bd8341b982aed74c1bfb367414b09f3a8540db7db6be9053e83291bc9b33b3c +c 45e946922eec128c2ac4dc6f647cee0ad201676d684e8b714c3a96b928969ab34c96c9854ae0717fdd4fcde59311caf8afb7664d9e35f242e7325af62ce5a0ff +c da57f9773d9e077fe9650860e4558dde78aede019f74599faaf92afc9f38a60814583f3ee0c46af667f7f70710db7a3a48de61caf25301bea5375f605248f238 +c e44cb0be994057e6bbe7187a6addd6b05c670954a29b5007beae4539ebc508583557761ffd6c8a2c15797a7486a2d925c97896cdbb4097b6c1372cdaa7a65d0f +c 8fc5d942c25d5385fcb319a2015084ed11f0436cc984e1dfb390e8a1339fec1c50166c397bc9ea8e382fac9ab1f289f54e3d56b33db00398a11a11dc4b6d0d5b +c 1fa0fe8ca2cfd38f081809f1415a460ed43e17f65ceb195a6232c68e18c4d56fe280f27d6d53f1516b8f3be31ed157837f16bc82cbd129287397cda6dd4ee9b1 +c d7924262981786fbd8630fa50675f39ebb982839dc826f20940ff859fe5e7cef1e8ddb0ac77636ceeb6724a0d30c65ebab8a3af6209495e53d8286f882f08389 +c 004f16a2f9fdc672eab22e72809fc9383ecf5a02d70b4222c91123ec595ca557b15ccadc110dfb1215b8c8d6a4eb7c3303558627699016cf8935a6f132025386 +c a0e8dc00cd47cfeff183cb3764c448e2bfa3e19fcd3aeed3543b8248dccb595c49f72423a389199b440d4700619775b7787a2ec4af60fa2d01b2f6801993f933 +c 60a42a3a5c3952a6191d94ffefaafb1156d3155bcd47420dde8eed88ca52e214b5a5eb3d5542cdc366de13c8c502795ae83723cbbb9c13a04fd5b5f09aef67b5 +c 6ef31df1c896102af7cb02cecf152ce049dda0c1e1d3f2cc95e99d3924a068d3ac3e42d48a6ca0264fe401b31775756f72e9204f3bf3b162e5ac59c96d54f367 +c 6803924191e9e42458bce50ac4f8b5e76f87b298c2c20176b66236f9d57c37a04105bae756806e53d49ff56fd59b81c4c6d4a91a6fd3e511e3deb42ad4c76c1a +c 68c5a5c9e946dbd4e2bab96e5b86304e127ec3865e42a87c95059dd6ea1eacb2c26b96532fd2b944c3cc800750d605d4ad15269c96441222e4ed19e3d4ddf508 +c d275065efc9ebea9a4f24d5faaefad0c0325a98d7afd233e98c678454310cb6bd2a623e3a7f8ff68e483e597b990146a2fc83bc1925b7b39010b3477680db1db +c 1a9a6c957dfe54c4bf54916922a39f1815ffb235eca28d32f3fe70a4c81e4e5e4e909f52d590a953aa1d8ea5caae6b814edb5e6b050b60eb778809869f8e05e6 +c 12de241c75de5990cb0677ac1fbf60c271e05b7be46679a30ad88f1a3d45ac7ba3082de9d0c1da3092f13f308976b70490e6c594662aa8fd297fa021e6e9cb7a +c 46b8d20c5fc740e2d8359f06224b08468efb53d90f1c23e0d5ff8ec259cd8a478f2b7999927d253083ecb06aed6369dcda75dbce46fd6c6ceda8e311c1198196 +c fb0f8e50f6187c68d863f0a8b3cd3ce343b14d42846e8d3957631c981697e8b9e7d9550c4bc80725a99d587dc5a9925310b7fa1ad448fa6c95b6b5efc5ccf9c4 +c 8656b4fed67aa57da03864f6b0fc5621d567f641bf8bdbc18b527a350bedbf68dc64c82a59b05b490c7e3c0f6552f5e8045c25999a051284cd053ab4f472c71f +c 0e2ec76a97555ac08300fbf3db74db6ca1c48a84458433a6ce729ef6ac9ba7b25c4077b55f49801615e236c9dd3082c19eb13f9226537a8d46e80e59989d83e7 +c fb2716cb622adc01de198e18812658339ecd55511207ba031db4c9fd8914b6aba164077bc1e582c241fc95659f27ec34a4492c2a036cd34f9580e649b4e0c392 +c 0c6a2bf3d43257c9336dbb5d1f89f336f0d36343d783eec0707baef5a6cecb04beb13fd2075488b0b083713451f2af7f93162ca5c07631e1446d2f7137dd51f7 +c e33d87876bf33ea4b07b738a76c8266963a70217f56117da504780e92aeffd1e9ae0f8a9d03faa6681b99faccd6e18718fc15419c9d0eb9b5144c240b4effc1a +c 99e3e7644e24f32310a7cab2abc02621c80a0526a776e9837b18bb0deb63f57610215b9fab0f4c03a51e2d653b2ced36a4105dfb517a4cbef9dc301704cc451b +c c9111fcda81b3542baf59e33b562645341dd69d23a7640e8434c4da9768ca280779e64f605362171d23d8a09305ecbfcb034107430571034c89a41aa19765660 +c 5c383580e585698dfccfe5839c9bf677090e031b5c66f80257279547ca21f64c34ff9bd1e71b228585c2d95e5b20ff4218a06c9c3ed0e0d805b348544df57361 +c 58eb81d0fc60a6eabda0ee315ea542bfccd59a1a88b298a943e8e9edc12534ae82790a889cbfced68dbca49e5a3063eb0698e6875d1f9c7fe35030948bda17ad +c ce8177dd0c863315d402f6fff00e54a53fa7e90c9bbdcf9819d2541c24ac130354d24cea0cec1769d0048171173d8121409604c55693f3d51ce9db4438a68cb3 +c 47824c67d65ca85349be436c5696a64a9a2e5b041d80937800fee07cd1257c82558193f2dc50cd4ad01eecb8dbf7c2e6f9be5e271ad7805ee6516eaf5b027e37 +c b999b3f1365973ec041a42bdbc1fbddc19dd703c7feaea19c45a85109747885b9b8c44aa7715888c08556f56d01c8b3a30acd981e7aaf366e8953775f10051c8 +c aecccd785b2aa8b693d4ae60d9b781502aaefe62f08286e19da2af34c7b8a14a7757fbe441486555483553c59cbcdc2614a462dc624e8e8307aab3934b41ac07 +c 75609fba11448a75fce0759ccb626069a13359f542121f1b6ce8decdff085ac44a83fa91c878f4791af17161339ae34d4e7cdf927fab025b8837b18de278cb35 +c c2226c1df849baa6c05e85e697e2176ef8cd8087c2af293c1716a7223aca87f1585e25eba21ca75430024600c50617a34a99ed8e1fc0b6359341fb40311d4b0c +c e39f322415898ad195462f5d4e57f5af330b8bfa4dcce5b55269e9d520e7d537d46d902685fbd841fc96227e25ddd613b735b28d4c3ad8770ca2f0823daea2e8 +c 876cd9c491736820299bc193048efb2e2f54ab3e7a104e02b87ace097e822f5fb0799b3d709eabf4cfd358181fda99bba6cad2fc2ff7789a12ad77dd23d74d23 +c df57d42236d3d57bcbacbeb5d70683d633882b612f3f159517ae3ce12b1e555703a14aa09d6963e89e162f7db21ea4949784234662fc7fd0b910f971b59756a5 +c 5a99edc91b1ad6f24f5cb43f7ab90c1a74094fcf5f013034e18358419cb372834643c0b5a69c884b3140147afefe76c597aaf9a9f681848454a7a05b0bbb60d1 +c 81ee224cd2008399aadd3d3817b4cb308932df121e6f8bc8982774d3b7a5d606780c2fe575f198d8b1985fccbdb1b1746d094d2d8acf820a9b2125de54238145 +c e3b6b7135c358dd74bd574e7b41086e88ef26e5dd567f4dcddb7e4eb416069484e3ac7c2773b95fdf4be4c3b225d7029ee19badb651ec8b22220505eb80d6741 +c af96626fed1a6c540ae3d39b072627c9c81d3ff8093d2628faa3716d73030868b5279241bb8ea1e967ceccddebe3d1e31f3023b3babf10da47d494f5765ec59d +c 832188d21d51266b5f48a4d29242a33ef486803f78ab4107ee935e5ddb339508b55da55d300aacf6e0c1c0d0607fe226ab6dc25a7411d96e42af4b1a88067713 +c 9b1d87a8768d0cf0a75b8a9cdef96c8033b0915135d0508ef093687a58e5a3dd948848017c9ca739669f8bb123dbcde58d67144c530ad255bcf9724c16772d7d +c 8fb1a7003ce091e18e85d0045ca19f0696ff1e927f0f2a1a22b589696a9c00aa8c9b189989413cd6157d6fdd5abc55ba506024f9be7fe3f5ba32bc4b23b56c14 +c f71183801c495798749642db6faa52ddf8d961fd6edb5fbd95def2608c89968c1b014d4361eef76a82d5531c0d522b9e34d0c2d207b43730298f856845295236 +c 06b2085150a1cf3618f6f5c35e8a6949b9f266621363c453c17b658a9cc36616f311ae04ff0b54c43f01ea071c4a6c45d2028e41755adfceaf4e43dcbc238eba +c 95ae944b6992c458e64b278524c50319420ec79ba12dcc09354417dbbbc3e2040095e3c31d2631d256da367b70171a425c61304e457a6d1c0be3413fe9576f25 +c 83fc593b0bb666640fa08177d778885424e5410c8cce701e954ac3271d64205be44a22ab57ca2708c6f41497ae8adfdd338a70e55f85e97587779f6f2581900d +c 81ae3ea169815311595cca3531cd6f4c043ab8a954fcb496eef51fb6d7031ea29dcf6abf1f975dcf8882b77248566b0c31c1378a756cde77589c6c683bad7fbe +c 71a51ab41aca97d3ff23046754367937633e774ea69a6d1608826cc496f0c554e627087be6dac30ea557e4452e0388239e9f3e3aad56305292cb85b5363dc801 +c d58565a2b9b95a987b532fe44e8278561799dbdd36cfc813fbe10801aaa34f0a35e02473a89385ddef018c50019a3e68eb8a6726816e13b4795df2f48b556ee7 +c 90a5350f11f8ad16c962fa520e3d4512749c2a1ded8e0edbafc73dc2b9b1c8ad18ebc3008ca4b52555ba28ec4d8dfd204c398658509f5ab59d7e04de82d9d96e +c 69033c2278bf8df49ad1056e62da8fec6b0728a93ed2c1dba5bc50a964de17db5b0107179200547b78066327e68cb695ad48c933d27074ccf3253405f2d780c7 +c 927f8434a499969a1e41938ec2b47bc844a330ad1c469b0e344a3b00e37cc211359c70ceafe19ba0b1da3db71f0f65345c352c7d5610a81828ae23d6bf29357c +c c38549199a4dcc1138145921a1679863dcda77caac54558c9bab305ff28d6eda3aa1da5b5c388679c97390d6aa323ca14e9fc0ff459449472d75602b7ea5f51e +c f7f61f805e452a2c20a1838f983633ca586b59af04a781399492c3545cb028509b991ed178e1b96754e816e7f364afede92b15bccbd0e07b94239f33a7de0cd2 +c d85a81154dd77bfa871890799a065cac7a3c940c81821d3299f4a9cc661f463611c3dcca358b4fdc6d2c0d3d5927554bc72b5ace97481ae7fcba562dfede60c0 +c 73c4a1e9d533bd728d9a47516dee0ea29e3b805c8dcd605cab0f4e915dba2278b56d0dd312995821333a25fff8e26fe79a791b873839a6efeb5be7a752da0f67 +c 5204262ac41f3b8ed61ea1316187eac173791695664ef54d06fe522499804d664d5ea935959e5ad2f59d42be87ebc0fdd3d4d5fb6f9fb37b9dd80294b0c648be +c 95bd3125c98c50984b7bb2d711b7c6d3ddad7cdc69d4d1724c1648060a507047ef819207bf14480cb18fa774f0cc6f50cef22fbaa8d2ccfe0156c4ebdc6690a0 +c 91905340565ccfa3918329e31101f9fd7b1657960bc90e82f43b162822116958a04e959d78dcfa8ba9321a34af3780ebacc4dc2e7048503aa3474634e5b0b01b +c 2fe193af44f4eb113cb1ca8ca712e568c6580d3235fbe0cf01d1e54ae885019c4d1365147383945c01ea4296c76a46a5c2162ad3609b2869bb5d09b9c4acf2bd +c 236c2509476ca9bbbb20e7d2927fd23acf47668a23e3f1d8396dd6ed81e9fb3a3ac2460553a0b7786158266852f2a9f64caeecf353d1b6924134f34673fc618a +c eaabc7fdf378ff72ae78bfd13cf931d16d32f0dedddb9ef1a67a4ce314982374b8acfce5377759b464de8b5d04d2779f560554a430c673eb2aff9a77037d9ae3 +c 43e3f2b38aba7df691e0a8aa2d6edd115640eec4cfa2345064304db904e6c8d7eed0c159181c72f9e5563dd066733e1944f4a530f8fc2682b2769ec7f410f538 +c 131be15f0a7039c8d852c66a674ab3e2c45b3b964680751213258e22a8dde0db014c92b43fd6864b56e589a3b29370699fae85df3847389718544589725c5872 +c def832d62b28775935ebe18100abba09495a43ab43d8777ed1209cb5fecd8c84282c57a15953a08a72bc81b55fe501ced05bb126d26228491e0df4968551004e +c 6d34e988a462c8020da44a9951f27b5012c18101d1d1a7af07257dbbb03c53061bb6fbd0aa3079f6de2d6bbdecd3caae0c998a33bcee4ea54aa9a9ee20ba3e88 +c 30ff3a02d1a85f77830ccf2d6643c4d13e2aafc5512bd51651951b2261a3d7bd1e7c4564117129f1a92521df183ddb62c492033c987ba64b2d2bb0a540ff0b00 +c c086d1b0304c56478dc709c87c7bb44d2b3e92bb2d13ddc82fcb0eaabe63d3b71381f11d5ddf78582526160ab3dff90e7fd9e9d20ec6c58f61833be3d7ae66a3 +c 5e0cda948bc649cb7a507d40af618ab41c773fb4469b50893f0a9d9bee6c8c3490f6a050782aac5e8b8b2bce351fb7296d61b767d1e9401a03d030f299700d8f +c 93ab1085010de338e9b16803307bd79a5952850b2da703c812c8c1ec845c0516a5e32da1b96f043eeb66d2436aecceb5315534838721fd8b0a88a712ee536aa2 +c 55c5c6f39cf86ef4db9317aff9ea1c9785652d2329c958eef8298097f5508e9d08f0305dce0cc05e8b12becb8074c8f8c207dc5e2022ed82671763ae6cdf8919 +c e74086493e56bffae9803e06de8308e6730acc129fdc717fe39c2dc0065cadb51794b9e58c53ba99496ac034dd33ab2af51d38a6296d4c23dd92f5ce581101c8 +c b6763bbdc426f0ff2886e7f432f93b13432f60b881ecc3f079b6fb594b562a405851424c26e70fca86a903483dd238dfa4a881672d401555fb11045d01d9f70a +c 2f6c0336855a7ff6cf5cde60ebc3797990e2ee0daacb302dbfb66debe73126bc7362daf978adee5dfa2c15d66b58d04cab8274e3dddd080d6f62ac5a3b66f8c3 +c 9b5ddbd5e3c8e343c7396dec583c8c3ac1a2ed75440f8112a3055e7294890ece816cf377088a6bcf4e0de1827b97320cd297049dd9956fb4e7617cd28e3ebbda +c 06594ee2d209a56fae9f46ff6ef976f6f002b86eb36775713b8335dc74c1dc035eab26f70c9d041eda03f028afc5334d849c27b5178edfa70f0810eb5ba04205 +c af71e2ffdd1729dc696be8d24b744114fb98003c8b4db234f6e01b967dc198653adfd79f4a99d3438ebbd25de45b56046053dc6f703191dee1572f83f8cfced6 +c 1bdd9b8136c70a24d6409af54bdc2a97e84a53c0fe2fee85ff5fe9b413634447d5086b8f35cd651a93683776e858887b7f26b85be18fdb8fd385f229b8137d7b +c 0978b5db436a4ef88c5bb75720920a66fe6005cc192753dd8206034c0f85a2014895299f35dba912e11306266fdda56910aabde3203e1e56a250bd2ec35ad990 +c 870b443b1fa1c7ddd87055d74672ac15cf70423344de328af3c680bb3f884143dc2cde5fd8d02de9fe49a0e575ae7304e49f85b559f5d9ba5f45fabda351b5e7 +c 4d6167956777d4022fc76cf24f40741713e6a424f432de97cbc7291a53f7c119aa331af293663f137a1228677c20fc5aaefb4ae339085157a2df90ad1947283c +c 074f21cfa8c40740ce8a75e212d7ae6d7d88336c89da7b9fa9adaf54837af49273cad70b8abd7cf630fbb19acacf8e03ac4c8eadb2975449a2f11fe8dd0470c5 +c 1a6a6d54f09a450c9164c8447174bd19de16d4cef330fc8c509d3a540bb7758482d247fe7ee8d903625e6687f049f0857b6ad40ae1ef4301d381c913278f8ac5 +c b138f23b9e5bd18973721a452c336c6d897fe99323097bdc4d569c0c8b20219cb317c0b88028a7ecb3e0db6aeac32d01f9bfa808a03b443d7b8b86b7f96d6392 +c 5043377fee6a697685b123037d909f20af0faf7204c005cc58b4fe47343f98aac8fe0728c5b90b28b764bf5af2df3f7214558e90ca114e7689ef6b8550badf5c +c ffa9094ab7aeb010102f0298ee2b3167edd7dfae21f183d041d3ee9066377dd062e7060403b599aa4eab16766c9eea8bd2d07d44126c4f0f91a67271aca269fa +c 76c5492b918ce1f1bb56dcd0fa91d5fe3c5392eed9e779ba73c4d26807fa1c9bdfcdd9290eb704d11036eb095b697a9d9f678a70101980d2608bc38a3b9d97c9 +c c27d80e772ac820bf9c03cc0f4212d54d399d00c24eaa6803ac28c92986a59059672d9df17871d7b2b98c79055042beb7aa83081ef10f8a6d33dd5f6404c4b83 +c 4a3da010940c325ecc8511456cdf2db85df958403b7af7f8859d7fab0cb4919a08356d30b9eb80186625ce632a17045086f0040e615e32169a33e10684218de8 +c a792ae41f30e81cc8a44a929c7426e4c1ec2e96e45d61c0b51b48e445c47ed0ae1f21e1b621a1e9128cd1c52f83c8c0908365aa7372b4602bf92503c049cad4b +c 0bd8d8744ddcf9eeb019bf443054bfa073f8d88f32b556e3f8c17e8fa152a4839ad5c4dd1838e14eff41406bd1c4f5632ac2389359f3d96a714c370369f793be +c dccaf00c6afddc4a +s 345e3426f03d25bb258a7e8614434b04eb574e36e1cb9b289d219d15adbe747909b8ec85a07c63a91e95426f1951d9c9adc4f259537005f4a053270b64845501 +s 1f207b93bbe90865593048e975790d71e0fb411a684424207ebd5215afdaa29137c7327e5eccc00db73aae342d6088d549beb3a3c74b2610d3ce69939dc0cb10 +s 3f361d294e306a7f73b287a0f003d5be4a0ce3e5948eb6049f81d26e5d9d073131e3f92c37bd434729ecfdb499e431a414cf0bd328e1e9c480053e91977dfeda +s d1afcdf08bd205e83de6a2508e498946e677ef62e9a946d002fbf0cb55f75afe0599cc99ab5edf3115b888cae57526785e7fbb30ad05c767391c0987c48f0ba7 +s 9aef28e28660ccba61403d583e80f4fa4775980aa64943f37920095a8a0343e8715b6c1be2ff4e13124c199091f1bf38759522471d8f4314737c1922fc0bdc97 +s 82e243f025016066db0e0aed660de66056b833af72460ea22717aac033d00dc8c938b24d8fc901efb5709d333a254546af38eeb5f5b3a867f874599f18712596 +s 7dba39344028e5924fdf4c091142a0fa7f489706ef28b0b962f647cbafd488bf4c066f0814f4797d1bafa7aad214101086a591104aa556922eab1461ae01e5a4 +s 39b55ad147297de0967c7200b62038f94b6b10ce5de7d1a7e6fdbf5a6b9c3ff7807ddeccd87ca1cf4dbcff88197704e71d12c8cd1752e1f564dc1f9544cdb75e +s 6694cbf430c7d6b42bb3a45b16087f83be7b28a8817dc131378b824e5b6e1ceed58aab70b3fc12a10b99e71061adc7750e5b926862ed38b45da7236233f66a54 +s 44137e2470b2d98f2b4b6d7c94fc0d52b9d3156683b135f0196c3c86c55e0c1bc1a896a5c9ed6bb1da55472c63626bd5aa2f90b86e1f24d1509e5214e595e270 +s 2d535e14133afd8fc88767ef4133714f08e4558162ced3683ebcfe19dbcf5e7abce3ab4554cd5abb17df9eb3fb91f4b89c09f018eabd8acb7bec151a39bc875d +s 1498633ef3d341cab0e5eec27c66300dfc3882061d385a40d59ac46ff18bd5a1ae5451f041478dc1f789fa491c364659f2496eaae5fbdcdc271382c0d24d829a +s eece5a225e1db8f57fe9f64943161d6b024e61d5e6a9efab93c44c77c6f407566c0f41c3f06458738e389a37355e3ffc974df9786d5d7202fc53b72e0adc1f5c +s 63f11f57f5562341ebdfeecc467abf0c1954171f1037a9a4699cf3a60941060c92942da29437251538c4669a057ee5409345e482183c5081ff0457d4a6d4179d +s 8117717f628e95c040aac85379718e2b5bcfab829481bcfc4c98a196ceb7adc64278141c86021e95ed04d1efcdafc411b3e710ea6afa5cb7cfb376efcfba975d +s 9e752b214086fe08017f3e144f370ecc8f0cdb115332fb7510d3b0f106034649088bd391b35ea0667dd29e51c1f4dba1970bda62c33c3d3eba5d1f00e43121fd +s dd94c7800c99003b9ae5aafa3ab17664736a0cf476c819cd1560f12da6f238602a033f44f787a8d7e5db5921db13360b9e715d0f37d65c5c8b78bc3b3793a8a2 +s 964ed395871c86b89139fa631adf85ca48d7b3489bd14e0910cb0fd586576129ccda5c7f2edd460f5a9c4f9ba9c9772d41684daa9cd972ac15900478b4ea1aa6 +s d0db7ea8c6f9ebfd838a7772f9a494568affad038ceaede217c949fc76fe7a695e60db2443ca0d45a2ee00435f031598dd76f21af57fcabcfeb0c4c087c3d805 +s 7463b51a53e342531ede13cf650880748bb8b39f1917af72c05d3f444317b3e19ee65fa16d7abbd939be8a7c0a6910dac48399ccc1a76d809fe8c9c8245ce2ef +s 8851d2d6dae340236c7a8ec5191137996e02a11675cf5e032f8a7d595986c84e800c4f83342413c337d1e19faae5f18b167547d6d726d01b28c599c31bb7386b +s 32175e1a71930b33a6e3f2ae667732e931044bed876e5b4a9865cd16a0f60a7d5017c612829a5803997e4f5c9f9304567dc91a337020ea47246498eb270cd06c +s 5d1fa660f3c347b1390a82e5775c5a11b4b9ec6d1bf75603455bb86e1ced842a6ea30ad94cb2a77a677fefd31302e847c1c5911e469c2271c7b1fb1b018ec31b +s 383c03748235a069343a3ed6e9f8b1bd25afdc820ca9852046a590b9a79f6aa2cc0d50da82f03c97f9fb2d6507a756b99fcaa78ef5af39941809e572539ca5e0 +s 1a6513a4e5f8264a3f89edf6440a8c22cfa7f212716d14001f9e74692a14dada8f4d55d8a1d1ea24eb95bf3fad6a477213f87a2859b927198e007e70672bbc05 +s cbe092b3660b2e1ea186842c20e84a7cb881ec228e0c196254001eb916d3f781f894c40c6053186fe0e299f00f3c4776824fe6a8c2d969ae50306b0d2aa020b0 +s 86cae5f30c899ec8c3bf1e4001fc63d8334acd6a4acc690fabf73436b654e364ab7366434d94a8bf3cf2fe69967d642d2b939040496bc79d49c9385eadca7975 +s e1b5ab4275acc540e524c787d6832362cef749f246bf5232b4b4f031ee12d438836998ad6507062a5d1748095194db1483acc8d0b6647dbf828e83bda7a3713d +s 6da4cc0814c3c23e163061c78a5789151309995641b8dcfa1c438ab6f74d7a8954fb7dff7f30ef5a59c022b14fa33dba88c8982842f2fcfd7cdcee4ba02e64da +s 434573839d714435aaa3c8fd7dfc42789da5d2ad980ff53a094ab36d47fcad92390a40b4c80c61a614d8cc95f2c03f5f7188a5c81c9a3b747e4c6f6d5ef35783 +s 578694b4c19ae35d68aefebff277c5286d370425d0f5fdcf521d51afe02525b6b7fc364795fc99c91483f6bc68be90489ce3224de301f22cd79e27df6ebf1984 +s 07d4e54ee8621a052d0882d9052a513cf5caf03b9c99ba1a555eac689385b704f828cb56fb26237494f4ae527a2bfeef7f5f9b68acc364b262615a26947f7e1e +s 15217afca135f499023ab813621d9591bc6d948ed85697d89bbf2859d91a4f17e0a2ca5694b2d7cbd99e89d41b2f9f57a9ef541f70d87c179fb1d2c5e2cfc83d +s 4558d3b2c99660e4ef775a503aed29b18b6c463ada6fb7bd3caa6d8f799d4985a6c6635b032bd0ef7962cb3b667b5d7307707ec2f9566b9b95646121703abde5 +s 66f49a1edfc23605c0a502ce4a58a627316b611a0bf40eaa5f983f3ad147cb64366001428a6e8ded2eef49bf0a6c199f7e5a73a7d01644cb6a62855d418cb0e3 +s 745d963d679cc4968b24a30e0f6adee4db1b38f45b3de4cbaae94e0f98d32e9dc36ded9b48aea0d83a1d756981a88d0ac15ddcd524d408cc0b0ec44069f22567 +s 2534a6eadeedbc808763303912db8a0ab252a7e029ec62462c057e99ff266f71c732ef89381198c61a9650ec1ac1971ec368ab2d2eb3ec5de7fae6b3183ce439 +s 58bec49e8e73cc5568b01453fb025616059b47d1327a56d9920b5352a2746c5ded33161e2293b40653afbfffd186af04e5cc701090251321b4212c47bb59554a +s 7c9df2039aabb44f8a330e3004171ac4f9b53b996bc9db36b663aa0121beb7eeec8f5a883db34a400f92044c544207983562fed71763ec4deaeb0ff349b945be +s 9371d684cac4be380da21cd128cb54bab19ea57c5db75991fc2714a3b963a3d129acaf776f0f85029c3f99a9b13c78cc1d6da213c94946e2b10baf3980dc4e19 +s 67cc4446baa804c9d2d68ad757c70ec38aaf70625d62624b6509b687fc9ca4a4c3e0893130151e4942eb321d7b3a24e05d86f4e6f528b55759cd123a8d08471c +s 7d592366ca83c913fe0849ab9b13e7d063ec9c3af55cb9a6a879ca38b3374dc38def284c8d1ab394446a76096376dc0720834005b9b4d6f5a07e61abfc1e0c88 +s 4d1827b2d90aab3373c13c972098efd7664b551fe73fded22ae27df9b416e1c7c13ed593d678880c1a8be827f5c79068daa441b817feb1641ef42a06aa9bd6e5 +s c2c6ec624251356047bca695304699bdd2b60d0332508081c5f93a3457d65dd49258fcabe8240c44f899a73c560491367f9785844ce68290fd9abf3a314a8c60 +s 5f8aeb89dce526cbcd61cd995a5049b3470d94b14c89d3860cc4db8e17f639aaa0d70851c6040cce4821e964474790a89b1dfe8a402af28be8e47b3e3bec9699 +s 014c3ff0aa9239705fd9cdcf185554a948c4748ea7704828c96e7a792716cc79bb6de7503ba2a3fbcc89559aa99c9c41cdae59729f7f9188ba0a0d6f2d5dfbbc +s 10418998c9a0872040228a3a8040e6883ea90c4019579d96c83a1c1bb82b1ae33e9afb076ba7fe116a490179d98a8d670c68f22bdef43d483c5613f8cb0a8d0a +s 4aec53a57a7825a7bc66fa9d384a56b4c93f2ef5b6869672f7658e0c7cd21f22e81d65d30a177a7e9c68fb6250420b5aa877c30bbd448fcd9ee8d92f542b3028 +s 5ee91826e4df6a061a3761a3536da8e2a7e80db5e5b7a42704d69d8c42aab2c1cc428a3ba8be53c2e6c0b8f8fab297367d9b7dad7344c11736bf26ef33d8e556 +s 9bdd426c73626dd1f108df14b7076cf981ad3d793266f8c4121e0f3e5f657f24ca40dd56d8d473b87bf8eefabf404ab72ce96b6600093a7bf74f4a3e5a6407e5 +s f10c8372e9385ef413723a5f4bd503997bbda7b39089fc165dc1d4174784b9e89ac36083f2fd70953de8abf32eb8f6185af651516fde680a7ce39db4594cf058 +s 1a2b8917fe692d8cf6acdcc16a036c2966ff3cc286ac34beea56ae2de642ad20c21f2ddf8cd29d4ab9b072b92ccf8a191f71a78b3cc4a2f8746cafbe1e907ce8 +s 31aa2350b4ba70950f473552c61c65aaf68d1315bc1a9339ed25d8de5fb8e8fd0417d4a74fa1394ae648ca86101ddfd14edd92316eff36f855f97da2bc8702cf +s 110a4518a3d1f6f4f404d5e858df399c0061350859c47181710e46deb6859fc59a5236cb54998e47aea5c26b8ee782478c28ea663c61fe8d23574e1538059874 +s 4211de2566c2384a9c1934083e44660ced50d015aeac6c626cfb858074dd54d27b6b083a27e3242011ac61bf35cf11be01022cb249e8ea05bf4fd8f56e122aab +s 98ea1896b9ae773fcb2a128dc8a923beaf55e311f3286724faba91c75af8f595591d70b265a234061d27d1a7163e0bcd61dfb72eba587b15bd53b8bd9f7acf62 +s b8be3cffc3fa6d87c4348a76efcd75c4de3cc4721f9a77ce260a2861bd1a35628b548e5863ce610b0ebf76ab8cf15ec3b1397b1b05659ea011e257a3eac00200 +s 1df6fa4b4d4c94972cf9ea4cbff4232c91a3df8630161c3e2081ec0c0afe079b442db66fa42c4760b281aeb0a8e64846df2eb351fba684704506cc364ae8b86f +s ea762025538de54ed5ab6654efb67e6dd1098ec91fa7b2534403be0bdbcbb08e93d2c481c390d61dbf44a66a0dcef9ce241ec62e37d824caacc3bfd7e50b8857 +s 16b68f5a66a446db452e646a0f3dc7ad631000ea067d799328a6511c676a259d7d5fb6f78f91b5a530bf6c1ee03285003d96cb1bad1c8686e5fc9f28640741b1 +s e6fbfe06592647adbc0dbdc91005d48dd9b4ab4a1f2ebb89fb46af0e0e5ec9d481b05406325d5ae6abdfb612301acdebc0fc5994fcc2e010390e9c0c249404d1 +s bb88282c28ae104884613460f9eac173a169f404f00b53090fe7a558924a0dbec647c62c1d5306369e949a95723ee5636c5fe66ab1cccd55bb5f1216154dc3fc +s 610bcdcb2cd2b3d6f0ebfb40221c33afea2f933401d4997e6054a046d0641c7d57f30cd6dd6de9fa726fa6e31040d64e9bd5473338e8bb0be2a0155585de7bf4 +s 43899fd5d490a412cb75b0b1de24a40e2d1d123a2c32671f2ce7c152219c12471dccb7ace35154a985eb88ced70709e34f8b62f82dc058c5cb64272dd54eba8e +s 4ac227cadcb190be8c52ceda11d22cbe5874b10befed17b39493530a208cab9c87a7d9963ab87dfa1a90aa3e22c5532d3fbc60464e2393d7afc46da369952d31 +s 645d7ab5f2eef92b9fe0be5d3ff9a433787dfa506002e5b5f19a611781b491351ec9743fe6170898854356ec57feea2210296015a4afbfca24944482a1fc88d1 +s 3fb5953ea8d3d433760a4fff1d909774b5966eb069f6754ecb6d989e4e473dff734e37cb4a691eb50f5877c3def3ac7ac598e6701ea2790a62c7245af9993bdc +s 3137bed541556b62d2ea7ca983aa12ceabf3f598598e1e264acdfb04f60340333aca6d096bf78788096cc0726e3daa75b3e28cee5cf1aa7337d034537b3600a0 +s 15c012df5885b7289d322504e88e0525ffb2de3d0582b653876d00181a52f0ede65a1373854ccdf9ee599a78f255d7359311dc3367ee42d1ff3941422c76a9c1 +s 90b54c9bed55232c7eac8f3ec72cad79d00f942f3b5dd646642a3654a434f286a6258723df286cd6a1014247dbed23f8063698e440b94606da136c6a2192780d +s e94d6f08c4c434ed1e543a97e1f63f758ed5a2820406662120a7057ff5a81adbc36f618457976ab77365d3657528290fddee2cb956bb3af9103bff9975683b34 +s 5db1e1b304b104a752f3bfc88cdd8767ae064e6761a8f394e66f036a80c58d07d83fe7d9610429c2ff59c945e6dddfa8bd4d692fed85218fb8d9a0e8901e2914 +s 1fa1db899b79c4cbb90bf3aca092321db62deefdbea9fe84567a16f4399e820fa548d7889b2b44362e4e1982f6133e33754f36c25bdd60f79be9f9318869a678 +s ebdbb0ef0daf51562064059bec0984827bf0487d77973e82e3dfe1e17e300752fa09ee6cd817d86028aaeb985ecefe7c16b04285346acd659ff28810cd886831 +s ef84883842166a45182b6d947e9a492908e7fddc3d665bc486abd8a39d1378f0b3f9e12fbc33a9d9b22089bf053f3b8cae22471681863361b63e4c5fbd21a30b +s 31f6233e225e1225176d1e9f3bd79258e6e6337c61118358eb881f36646c2fc728ea98333e00b53a04a2b49f8eab9cdf97e93af3fcdf1fa2bfb891b6c12dc8ba +s 9b0ff10772dd87089216995b1600c53dc8944d90290f7ed97cc99faf528b0a6989d0ec56b51177872c68dc121b3786c870c1b2ddfcbe9e9011469dc7a0382c86 +s d480b65311d2c7420fd4f820f22f8cc6e6af5a182e02f4308d3f8f5d2253ac0ee1aa14657018bb0c56ddd20e904d35167a8e9cd8fd07b4a4f75e05d8c662d526 +s 4e5a1a683c1dfb39fd0339da311084227f9b19343710aa3d2d2addcd000171b965e9548af18e2597efc8ec87e55642969a9043f42dd28005eeed5ab7b718809d +s 93307772bac073a64021762836d667f4112cb8dfe3d4196ba1269883e8a8141b687f8a4d71c4f0e43526b308e90c08b0f07dc22b78d7c7cd61315cc71c3e024e +s 131c0a86b1c503c83bd9233b28c6a363db9b69fc2e0314bcfcd0ae04ab79731c69fa2435a474866d02541225e2045e30c0f94895f10ea27a57c833aa5e9c023b +s 111b1a73518fb177df37880d319dc8411055e0b44495e05fc0870d0cbc5c99fed238ac1e2d58780c184e644b20d1bf0f96e590c4bc25d1783f95af0171b0dc52 +s 47759c523033153505fad1fd037c3e6c3ab6162125804411f27e1eea3adfa5f7b1af3f7a0c9c7d39786221b26e5d27953bbbc4a787ef6d79b320d9578fba3507 +s 5ed1507d5eb7252135e94fad203a7f4bd967ca206cf1c2d42d64885feff2918e1fa4b221ace508e9c2f8eef388ca3bd37d9a2663f67b1d97da59242c6ad4d619 +s 3313832ee5bbc67353786271e5bcaa784bf9ac929846c99962a712363617279c332b4d1b1b52c48140555f3db3c0e94d2854d17b990d36c926545418da644459 +s 8081f899eb289d328810e5cb245c645413980c8baeb3285bab225a78a55876d45598c09b3ae0aed11158384bd316dd9bf82de2e2683bcba6e43bcdb81e3196a4 +s 5337a47217500094e97d156e68b5994b664ad2f19243cf79096927ebb0da36d7fe250af143d2d7c70b61aaeabf8a219a4073de59e698c10c95ab16136809c5bc +s 56a47bc618c896108e082b5739457c70d4a7128c0eceabde4a0f3cbf1102c61d0a59b4a7f876da8cc0f7d8ae59d981548d4014a2fee5c40e72a37c0943408cec +s d8c0fade7575397cfdbc69ffb6d374fd37a75273c6cbf6980bd7b2e5a8718e5cbef0f40f72cfa8365049d88763c16d425243f1f7b1c27a368450a2fb909d2fd9 +s 4042509d962116b14a648b2c197468d2be6ce669317d0fbf5a155b6fc816ab2d12f61b10ead755174436636edd5b2188f0a20ed668ad148f8f02670b500e36fb +s ccb0b58f31ea7be6e937c6672fc03a1a155f24156f65b8be9aca03ccc78ef6af3d330ffc85bda1c2421fdb720182a91e44b51ff9dc37a54aa9b1eba361e4ae36 +s b444122384cf0ee3eca5485305cb569b5d36fcf0bf5197c1488b3dda1d64b3e6076185a5b424d464b6e040109d281a13ac6f4eb3e1286a2dc95ee0db2e0e5740 +s b4fd28c566e677581af2a65227f17fc77f7ff140b00a722fd1a036677b425e27fdd693af21d0fd66fc446912661aa2d3cdaebe952b9b8ffceb5db03f4519cad5 +s b7e60af2e4955233d0d1e48f94c9c139c645e8bf2f0e9054e11776281e68e684e297d153d5bea4c8a95dacd2ad05ada3e5ad3054c3456453ea9c3bb7cfaa6445 +s f03a39fbc5b5552d90bab424d804d65b6267b41ab6f77fb3148f1245c62aeb0fd7da633122ebf4d2021728b16094f837ef4703895a9be72d6c5163830f355611 +s 937ebe9109b01dac8a5eb7e911e520251b90e279b1b30926c39f1d8e1e14af1e494c2360701bbc4846621b427cbd66f27832663f85ad066880a04108572db6f0 +s a02d7bfbe0709f9cd7066a9340beb5c609e404dc81bece2822a32c1d2cf0eb0b925e2775f9a033f32e8f0e0060dc6b81f7f1099bca1d82324810e280cd9c60a9 +s 4fa9e03c5db24b84111014e3f3238189ea9262d83b11e662051a0706d688c178d6a8667a21e3b05c70fa90df81c960deffa695693fb36917103efbfdbbb8b9f4 +s 7fd83eaed108b8632b0190af3d8fbe42e0afa26cce8ff1c67c9c30fe9198a235a50a01a4792a50e9352e129c5922a617f24eff798dab44e7d9aeb2699e889efc +s 1a844be6a4e0dc762c6320e820b77dbcec630d41839ac7595352c997f4476940d4a1a966faea3ac27b1d6cdd458c067679b778ce78295b9409f07e4b14ed194e +s 93d9a7dc87269458c2ffab2796075e16606740154350a900ca9e63423d1b477179b68ea5365c6fc38f8d2f4a7b9c508c6e814e2c0533f23ed0cdf795c85d6d4e +s d71cebf0d4fc372574665ebbb73c4c792ce38b0be0908dbc5cf87ef152bd83a4636d16d55fc693534aaaac8be2fe30c1a017fa47388082ecaf320f354459a2e0 +s 5d6fc328d2e2e886919d276d8ffd6bb20032c944901490c0be0b253d34c7ffcca86c7e129c9dd369a3e1322a435fb21c11fa52a1b0b3d35794de708dcea48521 +s e508a512624e5eb470081b23409ce3bdd32ef228e2383881b1eb01f54f77dcc23bbcb6fdee075b7aad7cb27192a29070ae5a00528eee25d652757e66789a5ca7 +s 0f7d9cbe53c286884163fc22fce8cf72431c059599f9cd986dacb85f6b4de59be596a2746dfe1304b91f07525bb39a98eebdd3998d521a020db6783ec73fda91 +s 1017ffebbac3a53b0b2445517b6fc591cfc3bd362083819c8d9e01666c6a5fd91a72c4b5cda976e732139e5d4b9b0a4b3cd7138389718ff75bd29809a616cfa5 +s c71eecb9763ef76a066b48839acc82ce396e00b347f17cf87fe41dabf9e148766a1aa3606c75e74ffbc4663db0ea5ab94e81e0c91a0d56189bfa155e9b586879 +s 7fcd835f67368d64e9d36989e5e49f6446b4318a329348d1f308ba2c242080e2c99056c4edee1866fb239f754e49e32d3972c287d652dd063acb525bd4e73d8b +s 928161f74bb6633c91d60f53f987f4706fc106a2255607ab128a2b46d99edec60aaf959adc253285d067729293ae7b4a26c0a414274cb7863767b1ebfdb89f0e +s 91b6b01e6f74793ceb557eac5bb5f5748d160940ed5064e5b1f4c33cde949bd5f96f918afbcbfc9f4a48e1533f6860655f274981d038d2a644be88503da9f0e2 +s 5b7d0447ddc7bb069ad6a43fd132f42fee0d4261ab03632c45630316b5d8b3afdbd3b197138f6ea293d2e6f5983ebbaef1b1070bf3ecc9ccd38ebf9b69c200db +s 56dd637f61fb0d9abcc5262efe3c63c8d43b762d5aaaef9d72fa29dbcc2c38a7ceb992ce9d2112d06951a383bc041af9c8a986b83c12471683e9bf5edd95d9e0 +s 1b549bfda1fec968cd475534dea99ddffad6fba180adc15e7631729ca99bf3b01c658dc4e3876de012a5c13e48f269f505ad7b675b546fc24fd0d7499a0f5c94 +s 82afafc2b13402d01b2fcf57d5d4a9c5474e27406a0c5f92654593fed3cf05fdfcaaae5eaaa86c3c548d3d1449a13e830ff1f5eee861a9f0b2ba3f352b0225a0 +s ee8a57be862c832441617fd986548e57f55ff96bca8af2e5bb7b785472f87af9aa875ac05c075672b8173eafe864a52c972e76133f7c2353a271e3f13bdb04c1 +s 2cda2bc304b21375b048e28d373e28617de7247d999d1dc651797156b2c20b321040bad90cafcb1f6b40343548a521f22a3f676258ea01d346a3422cd7dc9692 +s 26732f66714d744e9eac2865dd795a89a72cb820d7c3d59b89073e1f6d5d47df61cd631e2c135da9ff25cf8245660d75c385dd606845a9f738894b1d6983c9e1 +s 6db384704fd5d0d4cf58ba920645377e1da09bd4b3911aad8c84b240fed80af817214ab6f5848593633bc17f1bd7208b7f6660dbd64b4f6cae4ebb0d657a8dd9 +s 61675f8b3ae3eb540d61e68a8e2950b5ae7c7d7caf0fb2d80339cf505b063df489994aa3bbe41c3a257cd6e6b39b9a88b8ca3164105a75757fb6200593411ee3 +s 7af54c275f5936c7d73724cc71102f7b82ee20b3501fa499cbe2b0a918ed3de9c9394ee1ddd2ec02da02f8f659ee77abfa04ba2de92378bf3c84522af57e46b0 +s 83875b198e28fddee2c91866520738dc480a1800daeeff43dfc18ac2e7a99b8225b1b3e60f653c483d1f3805b4d2cef0ddd16e3efbd337d1af1dbc285753610f +s 7f7cdf0e0eb31f56c29e6080d24600b21f33d034513ab6507f4cfdac91f267422df7fa2ed58cf3da8f50d66c63e1ff27c14c5cd07cf63beec027f0d7a965ff10 +s 57f6e5c7f07836157fb430dff07e542b1759712d16c585acb81482eb6fd071be6ae10ffb73fa5d3cd95ac96ef95dd9cdfafd268bfecd9d43a1d130db4fa66cb7 +s e4faa907ca277be6cb8150f1edcff5ce3871bd1cb5dc5142033b32d77f30d7ad272a1c6a316f66b19a4019257b766bf4389b22a8ee81b68afc3c00fe5a6a0a1e +s 54860fc7480c9cfb8b173a05b799c5c1387c1302902d86d8bf125b1ef0471c739bbaa381a806037c0aabd7fccc21242e782c4da568aa7d5a50c53f15ce98d6c8 +s e9fe758db68c56f3c0be2265af0012bd17a0cbda9db9555393b995307c2987d2a1a73ad53dbae3974df9eaff586763c38d5e6c021d63a6a46d3ec7bcb659fce2 +s f329ab956734cbee27146dfcafa8fccbcd3143da3069d1ff04a7f8f97ccffa024fa7cf95721e7bcf8dbc40205002c3e7d38bd2601de81ad9d1766cad7dbf354b +s 8fb7e1b721d95f35068d2dee565a60bb6818a8803de907c03d151a3c5ead53339ebbe6f56a3ad7f35e5ad7cd20033f16a00362d8a9c7c538254db1869619c0f1 +s 5d3ee27f69f349bd0b71277b0cf767a79892422d4ef632488f32a855c2f9188e4c2b9d1f4d1ea014ad349d583422ee8e26b7579ac863b9481d47d9436256e809 +s e033f7c16bdeeb8711c3119868c9b8160d1640960144a09c7d73eac0403fb719ac379ecc92b31ede9d9ee9753504a0aed009fcfdaca3f056ab9096a3fd8c7e71 +s 1cda211645e1e1b216a477319d905df3382ec534b00e6c0693e7fdc9e2eb317535288d0fd442c021253ccec514bd81da4f57f5bbaf9aaffa97161004e60d8a4f +s 0992d38d856e2dcf304d58d149587b61500c038de85670d87fea2a42c8aadd4f3fb44d54733c0926aa9301e065f2202e70a1902730f756ba954eb4fe0c2f3c8e +s e1fbe17d7bbf34aecee68ffe7027e0ea7bd4affedf3f6b50a928cde3b7dbde07e22d452cfac077d99477fc8bff0c9857f1e624bb37438ae74cf5f708ac88cc7d +s f05b121e09ed0e2ee5c5c0cec3fce668f7b8d68a03a77a7e3e1487b7137eae61173572b91727ab2110b5b081ea26c40af7962bcd5658f193635b4c5d14e0721f +s 5df98dd0609879747c08a35b45d215b847b5b7845db51f819ad4e21f592cd33ca826433fc9e1eea25e969f6a1c4a04d0b456fe28a4ea0f83a9e3ef57cfbc7d09 +s b5c775651b1926e46469b8dac71c0392391d67e85d2fb77d3bf8c8438d44f1b9ad11049c14bc9215821a2017095f78c4d8a3333e7d3dfbfe7d2b5bcc374de3be +s 3d8b75c3379312d91e07da30c3c4d91f21b2805e1e9e52d6564ae99312df7898ebdc43d9a7430ba7f1d1f887c333eb65c7d6d3c2daecca274342082d4506d8ae +s 1342e15a16199b26fed421726939007ef5a73591b7b2190beb8a0fdf2a88172b5e342d86cd55e3e72d8381f9f49a3cfe7b225b61246b2d0970f7ecb5d452f83b +s d1b6fecb00fe014ec83675a54ef99c6b2b04959d693bae8f0999126454c13382551641bd878105a7dea665fa7f2ee245ee4c8b6a15d159517dc46d33ddd9bb65 +s e60cf617fb0dfb745e291a2bb2a8ca7223d765c56f28470c8a19fa89b8baa2e202ce0de150df056cb3d1fcc4545a6ed4b64d8282947a7131179954ed3a08de1f +s e7a307998a77b91ee4ee23f2c811a9be3bf1b37ec817f864d820fc6e66d1e9dede3507306bf067c2eab75e71d5d58c5a17cd4ea999e832f94ab35b6d9c4c2e1d +s 0bb79851e4521b6f25ad1f8b6fbc201cdb4bfef703015fb350a159237984f000 +c 2807a3e3a0917a3a5dabec9afac011dc42a1649013ee42bc089ce5e2ddf1f79bbaa2b18e320f82dcabd8d9e294832a415124dfe004d0b82093eab2a2ff49d18c +c d68647a1d4ddbcfa1f0fb9c9d096e4f53214d2b3b20b280a27305005db0b836d diff --git a/build/ssh/tests/fixtures/stranger.transcript b/build/ssh/tests/fixtures/stranger.transcript index 7e083c3a7b1..0428c3ea72b 100644 --- a/build/ssh/tests/fixtures/stranger.transcript +++ b/build/ssh/tests/fixtures/stranger.transcript @@ -1,11 +1,11 @@ # ssh -i stranger_ed25519 toyos@127.0.0.1 true (a key the server does not name) seed 11 -s 5353482d322e302d546f794f530d0a000000c40a14111111111111111111111111111111110000002e637572766532353531392d7368613235362c6b65782d73 -s 74726963742d732d763030406f70656e7373682e636f6d0000000b7373682d656432353531390000001d63686163686132302d706f6c7931333035406f70656e -s 7373682e636f6d0000001d63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000000000000000000000046e6f6e65000000046e6f6e65 -s 0000000000000000000000000011111111111111111111 +s 5353482d322e302d546f794f530d0a000000d4041411111111111111111111111111111111000000446d6c6b656d3736387832353531392d7368613235362c63 +s 7572766532353531392d7368613235362c6b65782d7374726963742d732d763030406f70656e7373682e636f6d0000000b7373682d656432353531390000001d +s 63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000001d63686163686132302d706f6c7931333035406f70656e7373682e636f6d0000 +s 000000000000000000046e6f6e65000000046e6f6e650000000000000000000000000011111111 c 5353482d322e302d4f70656e5353485f31302e330d0a -c 000006840b14cc2a8ac74582b941ad157c8b2474378d0000015e6d6c6b656d3736387832353531392d7368613235362c736e747275703736317832353531392d +c 000006840b146225b376fd0b863964fe2b4760c3716f0000015e6d6c6b656d3736387832353531392d7368613235362c736e747275703736317832353531392d c 7368613531322c736e747275703736317832353531392d736861353132406f70656e7373682e636f6d2c637572766532353531392d7368613235362c63757276 c 6532353531392d736861323536406c69627373682e6f72672c656364682d736861322d6e697374703235362c656364682d736861322d6e697374703338342c65 c 6364682d736861322d6e697374703532312c6469666669652d68656c6c6d616e2d67726f75702d65786368616e67652d7368613235362c6469666669652d6865 @@ -32,19 +32,55 @@ c 322d3531322d65746d406f70656e7373682e636f6d2c686d61632d736861312d65746d406f7065 c 636f6d2c756d61632d313238406f70656e7373682e636f6d2c686d61632d736861322d3235362c686d61632d736861322d3531322c686d61632d736861310000 c 00156e6f6e652c7a6c6962406f70656e7373682e636f6d000000156e6f6e652c7a6c6962406f70656e7373682e636f6d00000000000000000000000000000000 c 0000000000000000 -c 0000002c061e0000002014000176b9bbea136e511248e38d420ba3199ed40399f75bf06ae0c5b99c1033000000000000 -s 000000bc081f000000330000000b7373682d65643235353139000000209df408e461d7e5195b4f91a8d6be83d24692e5df0930aa782291fff455ea3924000000 -s 207b4e909bbe7ffe44c465a220037d608ee35897d31ef972f07f74892cb0f73f13000000530000000b7373682d65643235353139000000407352e755a77e5300 -s 244a4a4fa395f693bcaaf88bed0a3840a0cb57f1a4245e2a7abbc4c5285369114fccd8a6fb75646ea1f99abb0819dc88d76a5591badde3031111111111111111 -s 0000000c0a1511111111111111111111afabdc74023ccb38d4c8d72a18f98434d7a8b4ff9a339454a534e355bdb69bb6b8082375a2277defb72bd007ebadbb6f -s a05a9dc2619ef84dc8149902c8c22f72b9feb7a5 +c 000004cc061e000004c01a297844c3339636ac73890e2596a8700aa9c57031c976a5e0380b7e645d4150aa6274af87db67fda4bfacdcc5a48400418bc4426a28 +c 25c0226aa763030c90804044a4d0577b5c6a8a9025fbd397aa5737a689cfb1aba2abf62ca2a43b331c72eb394199bc7865878a198c3e66f7652677574a511f13 +c 86137202d03838ad092b8ea5d24e59cb66e93a2cc4788b3ab2506b71c5435b84c5d306e65cc1b7409e7be9b61187c215b540ee0c3b751c2ac9769e973889f590 +c cfd3121ffc9179e79882f10c2f4111682e47b379d1bab5427f7fe81da995a015e11e06c8bac144825636a82991029cb14000ba9eaa226d1c4a3191577765ebbc +c f18544de47b87590ce9619b3f0f13ded4c4af39ab2098984b9574d91c401de86176967547da21f077b58d46aa490206e04448386e6253b02b174e0509aa0b68b +c 51c5bd2c5858d72361b28923a54f0008a1f34b82286b57f67930a538638e714dae732ff13a2ac93c1ef7c655733c89c55c000ab893d0c8caa9077e62519deea9 +c 8b1a75619190c3e478093f24459d753e9a5306e07306ba69c5a44330f0603fa165c8f76c566523a3e5e386a24a1a4e9b722179205b8026419b194a71201ddb68 +c 432ca509671cbee064708977347317c14b322ddb43d6788fb124a6419a49b994407021b85618c21bf58a14e86b0ae79bd3577d32a4c99dec813ea74d84854338 +c 3b6679950c3fd83600fbc7bdc5b413bb97438c19dad8641299cbe1953f8e48676a9521c9bb83f167980e524dfc126f6a96cf673969771503b9f329c856af1ab9 +c b51dd7a9b864bd377a1c7c9872e53789a7f7b25934af095793c7e3408fc08918716bdb02212b94344f1890a693b2405186961008505c179f76b63b379a14f215 +c 625229f7420fe58a24dc126ac5f55549fba38d425096d7c2fe578690acc3971a6ccd102a51ab094ee99401f55edc79ae2dcb974e867442fa2314973fa8d396d7 +c 59566a6a524d17841729220140164fd7333b8106e1fc316bb38bbb1c69315b25921304f66327e5780b474b00fdf222b8629a9cc54133867e407c5df182ca1a57 +c aeb1c593646143b57ba0314957fd50600a7650ac387f57e3317a817a9db6163e9c1b1d0095b9e450a584a57719342fdc74cc0193276865c27bb8456b73b81c7b +c 692999353acabf90589c2a2b9d5bba04c659d2548b8cf154b2da26b0c7cdf76002e226c843e336060a77e3065777f60581f23ef1c81e72860f40731bc353baae +c 817c1460b590780f843367922841144c7d2a66997689c85c7abb7d239641b1b1e690901756818205a247cb3ee275b8b0e66e368b7311b62891cb35e8f88de981 +c 55b9e7999700602648a3fa3a40f2877c9bb47771137e1766323618960e977566004197417b6fe1a683f5cefad37e5f68945f0136bc796accd4bfe9462f027763 +c 2cf01975f22e8c58c64fe0b9bdf044ad815d4f4b6dd04abdc74634c20279f150c17e3c882ef7a76de02b085897c1cbaa37dc8f8618742157bf79877920776407 +c 940dc2b06a711a2cf9c52a9c758cf97b68386caeaad532103176409861e555b01439cc1c605c68897ca0e10720cb00a198bbe669b11f7567f1b9aae3f9071b23 +c 219354c09abb323c144035b4ddc4c99b434dc4d29ced8c72fd824304a475dc781c95e90247c6dc48592c38bbed2458886ed8017a72ebb19a57886985674e7a0b +c d81d20c126a79f1a5660000000000000 +s 000004fc081f000000330000000b7373682d65643235353139000000209df408e461d7e5195b4f91a8d6be83d24692e5df0930aa782291fff455ea3924000004 +s 60d8a0b185ac98769195b58ed67cc54ad23264a4d2047e7264874db93d3274c8e5bee8ad1ddee48cf6496f84f8ae2e92e95f8fb9034b68b1638fa8007b7d8550 +s c8172bc92afdfed562d44329789931f4a48b450a9992d45e9fc87d4000ab0352b265ef8cacca0a63b37eed0eafe4359c04e630e8474c52412141257a0fcdef1d +s 38fd263710e4bdd3d225853157ec86881e0c5e521ef879a1f29026abe98356626720df956f99945173cc96089ebc3b7a40ee01e4dd970030e9306484bca2cd53 +s b70f7f762db8ad2c3ddc2896e28a3a665af22f71a59ca9e4073abba8f960a2222d7a8ab536ed5fd856f818e487d2a8f1cc33a32cf80bbd25bc2abbd6f92dfa81 +s 072d65b2c628f62892e6d49d763468f60d26e958307494c8cae2a46729aa71f463405bd2641fa5d5da2bebb989369ad384dd03718de7e655be975f1c333c063c +s 2723d30e581e25c1bc34295e30ced29c9502b72163105c396499e4dea50d8e27ad1755df0ed27cfab9a3f61910a625fb0c78bb794fe8b137ebdb2c003d6fcd60 +s a7009d99adc7aed5e94b5c87a6047764273bb939f2a18ec47490a484420f792944ffa67997785423dc1ae0b4e8b62f914c1d6398ced9541c8d1fe193d4a3e1e7 +s 3b84e4c8b94fa3b91e91cd7b36c53d575cc842f8a56c3e17b4316c9dfd533383f073068b0ffa2445a520d77acc98617dddbc46556321d0fe5e8c5951bfbecba9 +s 9abff5673a623a8bf33a84bf31bdb0597d8b4ffa69d108273de0a6216d20979b206a21f5dc88ea6885effef1c1093603b825a8981fed424fabaa1dac2cb8bfe8 +s a1badce46796700a054274dd68bffc64229d67b30fd78a59610dd532358a50f84addf2211def04be078fb9d2ab4eb28bbc18ea3ed300f6845f05dc4269fa73aa +s c96fe43dbae96482d9e2e71703b837468432e189f7a5d84fbf1cd7720389262f64549d73780298346f42870c1f03fe29b1e329a1691b17f15ec38d597a79a9fe +s f389c81d8b9dd686670446cec0101a1b26f8f0958d2de9eaf7d3884d05e13d5820a383dd263667e58c87a38298e6e6eec92d631a0b9eb1c180d5135127fa60e9 +s bb957cd405c41b70d0e3e34a382c16d569ff33ddd29bfe275f2d3a18a15042d7a282e7cf7e128a861a6f3d56f9345f012b29fe269811438bb181d4655954a48d +s ab36b16651fa1ec608c6c32c3408b79efeb323970c9c161c61c83167d9f3e8775da19125078d3ec5d7cd045e7d86ba3caab5dd6e64a6e07bbdffb13fcc5ef3c0 +s 4a5747cf6aa02783d63c61db4362447dcf7b1eaf8aff6fc685f158fbd2faa21e3c8384039558599bd7d1e4fcc642d16d9280d64fccf8dc995b3e27f4214d0eff +s 03cdbd46bf15bbad794a3a9d9328f3eda7b42b73d12dcf1f9d36e1fbc2a5b54b24fbda83ecfce5e32e5fb837f18fca4934241e8fb8b8ee831391074a7f49315c +s 0240935d966aabb573f80285999b1d74fc9f538f83f92f724d186863ef960531cb55c2903baebe767f0d8502937b1f4c67ebe9594ae70a52502f24ddf717e578 +s cb7b4e909bbe7ffe44c465a220037d608ee35897d31ef972f07f74892cb0f73f13000000530000000b7373682d6564323535313900000040b803f33027969539 +s ea910ed7f5f472527595e6718654447d2e260d5c9a9e534e10c1e3c2732b27f98c0666627c2170de0f3e351c58f2327af3b03c8d04efce071111111111111111 +s 0000000c0a15111111111111111111119f6162e93b3db667137c801397b0040380afe4d90a9edda4355a542caf81ab9c18160e8c52c1ca0bcac30785320a9521 +s 17f2bc68cf3e3605d921d79fb3db36c7bc0fe198 c 0000000c0a1500000000000000000000 -c ed6ea6be0632d98c5321beb4ac1042550124ff29827821362e5c5e7ddee50eddcf5b88a8382fd2c2d0a0f221 -s bba82489a05c353dd5521debd3a916d9e3824661d4ee1ffd500fcc0e74273f9033a441ebf8d1d6ec6b970492 -c 01e47861b1d4285a58b9f38004e03508fa4b8ffac93c22af0bd1e34d2f9b32ede7468087ce21047a89d1508e07e948322f3be611f544e4056ba757fb39bd4940 -c c9378860 -s 99f88957d7b06debe34121e6ec18534f2d5d4c8b4551fe15464374b71eca3a4d19ae9a0b659120b918f9048c -c 3b9dfaf261191d205577e8995463b2505652eddd25aef171c06927f27a9c347d5eae7b1943b887eaa5811833750b34dbc07d8ad01ccd33fc938df26e5cb4d895 -c b158ed6f2f0d52bcfb08891cacaa3a02fc83a70d897a4e1651251dffd914335f860a1044eed6799e6e8a721f88149dfa736e42c5347a500d72e21a3014277932 -c 0f092fd6cbb908dd4c7adc96 -s 831d9d84d9a9d6a8298889a5667de3396dca6e6f533f82f462d3deedc1fd33003f5aea5ed931287ed5d6e6e7 +c 3250f1d26db52b235ae9d7e8496941d71b6230c9372893c951bd7189c0e6201df5f56b5322b665e2504b3b26 +s a3b5cc9cd5057740f61c91dc87e956d47a9c35f1fdb4fc1ae23d6db5b7b1d31d278bf96b86c8a27f58acc199 +c dd02fb833d9d4e88e6771f3b2118b9e5f4da44bd02fb2ddd8b9925d7aa7187c37b3b85c24897eebe744ccfdad0692896fb816f1c23008b5e25992f91ec75994c +c 18375572 +s 49d75462b2d09e2d8925b0aa2ce7e1383fb45db1f59e494b75359c5f456d81f83d209d9537817920cd58d004 +c 3015d8b5b91b828cdf09c7c457a49a52b9901399036695e0246098d8a12124bddc04c4b8f6e642a51ba4f66382d46aa566624cf93b3cc745d6a541f80d512444 +c b00ba7dd1c388bf79675d4b40e07b8adeb31ee45afeca082447f394d1e806f5507e663878a3236f614098460e74ce0c0d2c005fba76f3e4a9f4ed297e5e0254b +c c8913593267ed204421ff92d +s 3a96cff260068fbc40128fac5ecc85b5f2ef584d44f9a90a939eb13b6d6255aa3c3fcb0411dad6c9e1d27898 diff --git a/build/ssh/tests/fuzz.rs b/build/ssh/tests/fuzz.rs index 43b758b8ceb..0fab4feaa0e 100644 --- a/build/ssh/tests/fuzz.rs +++ b/build/ssh/tests/fuzz.rs @@ -19,7 +19,7 @@ mod common; use std::collections::BTreeMap; -use common::client::{ed25519_blob, open_packet, pair, publickey_request, signed_request, string, Client}; +use common::client::{ed25519_blob, open_packet, pair, publickey_request, signed_request, string, Client, CURVE25519}; use common::driver::{host_key, public_blob, Fixed, Keys, Side, Transcript, USER}; use toyos_ssh::{Event, Random, Refusal, Server}; @@ -158,7 +158,7 @@ fn message(rng: &mut Rng, session_id: &[u8; 32]) -> (Vec, bool) { out.push([2, 4, 3][rng.below(3)]); out.extend(rng.bytes(12)); } - 22 => out = common::client::kexinit("curve25519-sha256"), + 22 => out = common::client::kexinit(CURVE25519), 23 => { out.push(1); out.extend_from_slice(&11u32.to_be_bytes()); @@ -365,6 +365,7 @@ fn every_bent_recording_is_total_and_a_bend_before_the_login_prevents_it() { let recordings = [ Recording::read(include_str!("fixtures/exec.transcript")), Recording::read(include_str!("fixtures/stdin.transcript")), + Recording::read(include_str!("fixtures/curve25519.transcript")), ]; let mut outcomes = BTreeMap::new(); let mut held = 0; diff --git a/build/ssh/tests/replay.rs b/build/ssh/tests/replay.rs index f8399825f74..3035a116bdd 100644 --- a/build/ssh/tests/replay.rs +++ b/build/ssh/tests/replay.rs @@ -2,11 +2,12 @@ //! held with this server, replayed byte for byte. //! //! `examples/record.rs` served each with the fixture host key, the scripted -//! driver and a fixed-byte randomness, so the server's ephemeral key, cookie -//! and padding come again from the transcript's seed, and its every output -//! byte must come again too. OpenSSH accepted those bytes: it verified the host -//! key against a pinned `known_hosts` entry and the signature over `H`, opened -//! every packet, and exited with the status the driver sent. Its own bytes — +//! driver and a fixed-byte randomness, so the server's ephemeral key, its +//! ML-KEM encapsulation, cookie and padding come again from the transcript's +//! seed, and its every output byte must come again too. OpenSSH accepted those +//! bytes: it verified the host key against a pinned `known_hosts` entry and the +//! signature over `H`, opened every packet, and exited with the status the +//! driver sent. Its own bytes — //! sealed under the keys it derived — open here only under the keys this server //! derives. Nothing runs `ssh` at test time. //! @@ -16,10 +17,10 @@ mod common; -use common::client::{derive, exchange_hash, open_packet, plain_packet, Fields, TAG_LEN}; +use common::client::{curve25519_k, derive, exchange_hash, hybrid_k, open_packet, plain_packet, Fields, CURVE25519, HYBRID, TAG_LEN}; use common::driver::{drive, host_key, public_key, Fixed, Keys, Side, Transcript, USER}; use toyos_crypto::ssh::OpeningKey; -use toyos_crypto::{ed25519, x25519}; +use toyos_crypto::{ed25519, mlkem, x25519}; use toyos_ssh::{Declined, Event, Refusal, Server}; const EXEC: &str = include_str!("fixtures/exec.transcript"); @@ -28,6 +29,10 @@ const REKEY: &str = include_str!("fixtures/rekey.transcript"); const STRANGER: &str = include_str!("fixtures/stranger.transcript"); const RSA: &str = include_str!("fixtures/rsa.transcript"); const FORWARD: &str = include_str!("fixtures/forward.transcript"); +const CURVE: &str = include_str!("fixtures/curve25519.transcript"); + +/// Every recording but [`CURVE`] negotiated the hybrid. +const HYBRID_RECORDINGS: [&str; 6] = [EXEC, STDIN, REKEY, STRANGER, RSA, FORWARD]; /// Feed `chunks` to a server seeded with `seed`, each in `piece`-byte inputs /// and the driver run after each whole chunk, as the recorder ran it: the @@ -91,6 +96,28 @@ fn an_exec_openssh_ran_replays() { ] if user == USER && command == b"echo hello")); } +/// `-o KexAlgorithms=curve25519-sha256`: the classical method, which the +/// server still runs for a client that offers no other. +#[test] +fn an_exec_over_the_classical_exchange_replays() { + assert_eq!(Recorded::read(CURVE).method, CURVE25519); + let events = replay(CURVE); + assert!(matches!(&events[..], [ + Event::Authenticated { .. }, + Event::Exec { command, .. }, + Event::Eof { .. }, + Event::Disconnected, + ] if command == b"echo hello")); +} + +/// OpenSSH offers the hybrid first, and the server runs it. +#[test] +fn openssh_negotiated_the_hybrid() { + for text in HYBRID_RECORDINGS { + assert_eq!(Recorded::read(text).method, HYBRID); + } +} + #[test] fn an_exec_fed_stdin_replays() { let events = replay(STDIN); @@ -156,8 +183,11 @@ struct Recorded { /// Where each side's sealed packets start. client_sealed: usize, server_sealed: usize, - /// Where the client's KEXINIT, KEX_ECDH_INIT and NEWKEYS start. + /// Where the client's KEXINIT, its message 30 and NEWKEYS start. client_packets: [usize; 3], + /// The method: the first of the client's the server runs. + method: &'static str, + /// `K`, encoded as its method says. k: Vec, h: [u8; 32], } @@ -183,19 +213,34 @@ impl Recorded { } assert_eq!((c[0][0], c[1][0], c[2][..].to_vec()), (20, 30, vec![21])); assert_eq!((s[0][0], s[1][0], s[2][..].to_vec()), (20, 31, vec![21])); + let mut kexinit = Fields(&c[0][17..]); + let offered = std::str::from_utf8(kexinit.string()).unwrap(); + let method = offered.split(',').find_map(|name| [HYBRID, CURVE25519].into_iter().find(|&m| m == name)).unwrap(); let q_c = Fields(&c[1][1..]).string().to_vec(); let mut reply = Fields(&s[1][1..]); let (k_s, q_s, signature) = (reply.string().to_vec(), reply.string().to_vec(), reply.string().to_vec()); - // The server's ephemeral key is the seed's: generated here as the - // server generates it, it is the Q_S the recording carries. + // The server's ephemeral X25519 key and its encapsulation are the + // seed's: made here as the server makes them, they are what the + // recording carries. let private = x25519::SecretKey::generate(&mut Fixed(t.seed)).unwrap(); - assert_eq!(private.public_key().0, q_s[..]); - let k = private.agree(&x25519::PublicKey(q_c[..].try_into().unwrap())).unwrap().as_bytes().to_vec(); + let (client_x25519, server_x25519) = (&q_c[q_c.len() - 32..], &q_s[q_s.len() - 32..]); + assert_eq!(private.public_key().0, server_x25519); + let k_cl = private.agree(&x25519::PublicKey(client_x25519.try_into().unwrap())).unwrap(); + let k = if method == HYBRID { + assert_eq!((q_c.len(), q_s.len()), (1184 + 32, 1088 + 32)); + let kem_key = mlkem::EncapsulationKey::from_bytes(&q_c[..1184]).unwrap(); + let (ciphertext, k_pq) = kem_key.encapsulate(&mut Fixed(t.seed)).unwrap(); + assert_eq!(ciphertext[..], q_s[..1088]); + hybrid_k(k_pq.as_bytes(), k_cl.as_bytes()) + } else { + assert_eq!((q_c.len(), q_s.len()), (32, 32)); + curve25519_k(k_cl.as_bytes()) + }; let h = exchange_hash(v_c, v_s, &c[0], &s[0], &k_s, &q_c, &q_s, &k); let (host, sig) = (Fields(&k_s).string_pair().1, Fields(&signature).string_pair().1); let host = ed25519::PublicKey::from_bytes(host.try_into().unwrap()).unwrap(); host.verify(&h, sig).expect("the recorded signature covers H"); - Self { client_sealed: at.0, server_sealed: at.1, client, server, client_packets, k, h } + Self { client_sealed: at.0, server_sealed: at.1, client, server, client_packets, method, k, h } } fn key(&self, letter: u8) -> OpeningKey { @@ -209,12 +254,17 @@ impl Recorded { } /// **Key derivation against OpenSSH's.** The exchange hash and the keys of -/// RFC 4253 §7.2, computed here from the recorded exchange, open the first -/// packets OpenSSH sealed, at sequence number zero — strict key exchange's -/// reset — and the first the server sealed. +/// RFC 4253 §7.2, computed here from the recorded exchange under each method, +/// open the first packets OpenSSH sealed, at sequence number zero — strict key +/// exchange's reset — and the first the server sealed. #[test] fn the_keys_derived_from_a_recorded_exchange_open_what_openssh_sealed() { - let r = Recorded::read(EXEC); + keys_open_what_openssh_sealed(EXEC); + keys_open_what_openssh_sealed(CURVE); +} + +fn keys_open_what_openssh_sealed(text: &str) { + let r = Recorded::read(text); let c = r.key(b'C'); let (service, used) = open_packet(Some(&c), 0, &r.client[r.client_sealed..]).unwrap(); let mut want = vec![5]; diff --git a/build/ssh/tests/vectors.rs b/build/ssh/tests/vectors.rs index 3f07b76d3fc..91abce255ea 100644 --- a/build/ssh/tests/vectors.rs +++ b/build/ssh/tests/vectors.rs @@ -1,11 +1,14 @@ //! **X25519 against RFC 7748**, through the calls the transport makes: an //! ephemeral key generated from the randomness it is handed, its public key, -//! and the agreement with the client's. And the one input RFC 7748 §6.1 and -//! RFC 8731 §3 say to refuse, a client key that makes a zero secret. +//! and the agreement with the client's. And the inputs RFC 7748 §6.1, RFC 8731 +//! §3 and RFC 10042 §2.1 say to refuse: a client key that makes a zero secret, +//! a key of the wrong length, and an ML-KEM-768 encapsulation key that fails +//! FIPS 203 §7.2's check. NIST's ML-KEM-768 known answers are `toyos-crypto`'s +//! (`lib/crypto/tests/nist.rs`). mod common; -use common::client::{string, Client}; +use common::client::{string, Client, CURVE25519, HYBRID, STRICT}; use common::driver::{host_key, Fixed, Keys}; use toyos_crypto::x25519::{PublicKey, SecretKey}; use toyos_ssh::{Random, Refusal, Server}; @@ -41,22 +44,58 @@ fn rfc_7748_section_6_1() { } } +/// The server's answer to a message 30 carrying `value`, under `method`. +fn exchange(method: &str, value: &[u8]) -> Result<(), Refusal> { + let mut c = Client::new(Server::new(host_key(), Keys::new(vec![]), Fixed(1))).unwrap(); + c.start_exchange(&format!("{method},{STRICT}")).unwrap(); + let mut init = vec![30]; + string(&mut init, value); + c.send(&init) +} + +/// A valid ML-KEM-768 encapsulation key, generated from a fixed seed. +fn kem_key() -> Vec { + toyos_crypto::mlkem::DecapsulationKey::generate(&mut Fixed(7)).unwrap().public_key().as_bytes().to_vec() +} + +/// Zero, one, and a point of order eight (RFC 7748 §6.1's "MUST check"). +fn small_order_points() -> [Vec; 3] { + [vec![0; 32], [&[1u8][..], &[0; 31]].concat(), hex("e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b800")] +} + /// A client X25519 key of small order makes the zero secret, and the -/// exchange is refused by name; so is one that is not 32 bytes. +/// exchange is refused by name, under either method; so is one that is not +/// 32 bytes. #[test] fn a_client_key_that_makes_a_zero_secret_is_refused() { - // Zero, one, and a point of order eight (RFC 7748 §6.1's "MUST check"). - let order_eight = hex("e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b800"); - for point in [vec![0; 32], [&[1u8][..], &[0; 31]].concat(), order_eight] { - let mut c = Client::new(Server::new(host_key(), Keys::new(vec![]), Fixed(1))).unwrap(); - c.start_exchange("curve25519-sha256,kex-strict-c-v00@openssh.com").unwrap(); - let mut init = vec![30]; - string(&mut init, &point); - assert_eq!(c.send(&init), Err(Refusal::KeyAgreement)); + let zero = Err(Refusal::KeyExchange("an X25519 key that makes the zero secret")); + for point in small_order_points() { + assert_eq!(exchange(CURVE25519, &point), zero); + assert_eq!(exchange(HYBRID, &[kem_key(), point].concat()), zero); } - let mut c = Client::new(Server::new(host_key(), Keys::new(vec![]), Fixed(1))).unwrap(); - c.start_exchange("curve25519-sha256,kex-strict-c-v00@openssh.com").unwrap(); - let mut init = vec![30]; - string(&mut init, &[9; 31]); - assert_eq!(c.send(&init), Err(Refusal::Truncated("Q_C"))); + assert_eq!(exchange(CURVE25519, &[9; 31]), Err(Refusal::KeyExchange("a Q_C that is not 32 bytes"))); + assert_eq!(exchange(CURVE25519, &[9; 33]), Err(Refusal::KeyExchange("a Q_C that is not 32 bytes"))); +} + +/// RFC 10042 §2.1: `C_INIT` is exactly an encapsulation key and an X25519 +/// key, and the encapsulation key passes FIPS 203 §7.2's modulus check. +#[test] +fn a_hybrid_init_is_held_to_its_length_and_its_key_check() { + let x25519 = SecretKey::from_bytes([9; 32]).public_key().0; + let good = [kem_key(), x25519.to_vec()].concat(); + let length = Err(Refusal::KeyExchange("a C_INIT that is not an ML-KEM-768 key and an X25519 key")); + for len in [0, 32, 1184, good.len() - 1, good.len() + 1] { + let init: Vec = good.iter().copied().cycle().take(len).collect(); + assert_eq!(exchange(HYBRID, &init), length, "{len} bytes"); + } + // The classical method's 32 bytes are not the hybrid's. + assert_eq!(exchange(HYBRID, &x25519), length); + // The first coefficient set to q = 3329, one past the field (FIPS 203 + // §7.2's ByteEncode(ByteDecode(ek)) == ek fails on it). + let mut bad = good.clone(); + bad[0] = 0x01; + bad[1] = (bad[1] & 0xf0) | 0x0d; + assert_eq!(exchange(HYBRID, &bad), Err(Refusal::KeyExchange("an ML-KEM-768 encapsulation key that fails FIPS 203's check"))); + // The good one is taken. + assert_eq!(exchange(HYBRID, &good), Ok(())); } diff --git a/issues/the-ssh-server-is-toyos-own-and-russh-is-gone.md b/issues/the-ssh-server-is-toyos-own-and-russh-is-gone.md index 6e6bc5ec7d3..38ce9dc7584 100644 --- a/issues/the-ssh-server-is-toyos-own-and-russh-is-gone.md +++ b/issues/the-ssh-server-is-toyos-own-and-russh-is-gone.md @@ -28,8 +28,7 @@ The owner's rulings: development instrument that records sessions for replay. No test runs it, and the guest suite runs no host `ssh` or `sftp`. -Compromises of `toyos-ssh` recorded on their own: -`issues/toyos-ssh-offers-only-a-classical-key-exchange.md` and +A compromise of `toyos-ssh` recorded on its own: `issues/toyos-ssh-leaves-its-secrets-in-freed-memory.md`. A compromise of the server shipped today, until stage 2: russh's `p384` @@ -61,8 +60,7 @@ Owner: this track's. Exit: stage 2, which deletes russh and the setting. login deadline is what bounds a client that only offers keys, because an offer answered `PK_OK` counts as no failure. This stage closes `issues/sshserver-holds-one-channel-and-does-not-say-so.md` and - `issues/sshserver-still-speaks-rsa.md`. It waits for stage 3, and for - stage 4 of `issues/toyos-crypto-is-in-the-tree-on-par-with-ring-and-secure.md` + `issues/sshserver-still-speaks-rsa.md`. It waits for stage 4 of `issues/toyos-crypto-is-in-the-tree-on-par-with-ring-and-secure.md` on SSH's primitives. **Exit**: - `system/sshserver/Cargo.toml` names `toyos-ssh`, and names neither @@ -74,14 +72,11 @@ Owner: this track's. Exit: stage 2, which deletes russh and the setting. - `.cargo/config.toml` sets no `p384_backend`. - A recorded `sftp` session and a recorded shell session replay byte for byte under `cargo run -- --ci host`. -3. **ML-KEM.** Our own `mlkem768x25519-sha256`, on `toyos-crypto`'s - ML-KEM-768 and its hybrid: the server's encapsulation side, as one more - `kex::METHODS` entry. Lands before stage 2. - **Exit**: - - NIST's ML-KEM-768 encapsulation known answers pass. - - An OpenSSH recording that negotiated `mlkem768x25519-sha256` replays - byte for byte, and its client's log has no post-quantum warning. - - `issues/toyos-ssh-offers-only-a-classical-key-exchange.md` is closed. +3. **ML-KEM.** Our own `mlkem768x25519-sha256` (RFC 10042), on + `toyos-crypto`'s ML-KEM-768 and its hybrid: the server's encapsulation + side, offered before `curve25519-sha256`. Every OpenSSH recording but one + negotiated it; the one forced onto `curve25519-sha256` keeps the classical + method's replay. Landed by #1023. 4. **The forks retire.** After stage 2, tokio has no consumer in the workspace, and mio and socket2 remain only as host dev-dependencies of `system/netstack/node`. diff --git a/issues/toyos-crypto-is-in-the-tree-on-par-with-ring-and-secure.md b/issues/toyos-crypto-is-in-the-tree-on-par-with-ring-and-secure.md index 0abb535a765..5da7ed06651 100644 --- a/issues/toyos-crypto-is-in-the-tree-on-par-with-ring-and-secure.md +++ b/issues/toyos-crypto-is-in-the-tree-on-par-with-ring-and-secure.md @@ -463,10 +463,9 @@ Not consumers: `tests/acvp/`, outside the crate's directory, so no image ships them. The consumers: - - `toyos-ssh`'s protocol offers `mlkem768x25519-sha256` first, at any time - after stage 1 - (`issues/toyos-ssh-offers-only-a-classical-key-exchange.md`). sshserver's - switch, stage 2 of the SSH track, is the shipping step. It waits for + - `toyos-ssh`'s protocol offers `mlkem768x25519-sha256` first, on the + crate's ML-KEM-768 and its SSH combiner. sshserver's switch, stage 2 of + the SSH track, is the shipping step. It waits for stage 4 on SSH's primitives. - Every SHA-2 is the crate's since #1016 (owner, 2026-10-22: "use our own crypto where possible"): `build/`'s digests, `pkg`, `lib/swap`, diff --git a/issues/toyos-ssh-leaves-its-secrets-in-freed-memory.md b/issues/toyos-ssh-leaves-its-secrets-in-freed-memory.md index 83520bc4fdd..24c3dfde0fe 100644 --- a/issues/toyos-ssh-leaves-its-secrets-in-freed-memory.md +++ b/issues/toyos-ssh-leaves-its-secrets-in-freed-memory.md @@ -8,8 +8,8 @@ opened: 2026-10-09 `toyos-ssh` frees every secret it holds without overwriting it. -- `transport.rs`, `on_ecdh_init`: the shared secret `K` sits in a `Vec` (as - an `mpint`). +- `transport.rs`, `on_kex_init`: the shared secret `K` sits in a `Vec` (an + `mpint` for `curve25519-sha256`, a `string` for `mlkem768x25519-sha256`). - `kex::derive` returns each 64-byte key on the stack. - The host key's seed passes through the buffers `HostKey::from_openssh` decodes the file into. @@ -17,7 +17,8 @@ opened: 2026-10-09 A later read of freed heap or stack, by a bug in this process or by anything that can read its memory, finds the session's keys. `toyos-crypto`'s `ssh::SealingKey` and `ssh::OpeningKey`, `x25519::SecretKey` and -`SharedSecret`, and `ed25519::SigningKey` overwrite what each owns when it +`SharedSecret`, `mlkem::SharedSecret`, `hybrid::SshSecret` and +`ed25519::SigningKey` overwrite what each owns when it drops (`lib/crypto/src/secret.rs`). The keys and the seed `toyos-ssh` hands them by value, and any copy the compiler makes, are not overwritten. diff --git a/issues/toyos-ssh-offers-only-a-classical-key-exchange.md b/issues/toyos-ssh-offers-only-a-classical-key-exchange.md deleted file mode 100644 index 8fbb17da786..00000000000 --- a/issues/toyos-ssh-offers-only-a-classical-key-exchange.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -status: open -kind: defect -opened: 2026-10-09 ---- - -# toyos-ssh offers only a classical key exchange - -`toyos-ssh` offers one key exchange, `curve25519-sha256` (`kex::METHODS`). -The server shipped today, on the russh fork, negotiates `mlkem768x25519-sha256` -with OpenSSH 9.9 and later: the pinned russh (`389804d`, -`russh/src/negotiation.rs:103`) offers it first. The switch would therefore -trade a post-quantum hybrid exchange for a classical one. Every session -recorded against `toyos-ssh` with OpenSSH_10.3p1 logs `** WARNING: connection -is not using a post-quantum key exchange algorithm.` (#817). - -The owner ruled "Write our own ML-KEM (Recommended)". `toyos-crypto` now has -it: ML-KEM-768 (`lib/crypto/src/mlkem.rs`), held to NIST's known answers by -`nist_mlkem768_kats` (`lib/crypto/tests/wycheproof.rs`), and the SSH -combiner `hybrid::for_ssh`. `toyos-ssh` (`build/ssh`) offers none of it. The -switch of `system/sshserver` waits for it, so no shipped server downgrades -(`issues/the-ssh-server-is-toyos-own-and-russh-is-gone.md`, stages 2 and 3). - -**Owner**: `toyos-ssh`. - -**Exit**: -- `toyos-ssh` offers `mlkem768x25519-sha256` first. -- An OpenSSH recording that negotiated it replays byte for byte, and its - client's log has no post-quantum warning.