From 245179517b77bb792e07ee615a513d1c6a57a800 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Tue, 19 Mar 2024 10:48:08 +0000 Subject: [PATCH 1/4] feat: Add CMOV opcode --- .../acvm-repo/brillig/src/opcodes.rs | 7 +++ .../noir-repo/acvm-repo/brillig_vm/src/lib.rs | 55 +++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/noir/noir-repo/acvm-repo/brillig/src/opcodes.rs b/noir/noir-repo/acvm-repo/brillig/src/opcodes.rs index 03a8e53e510b..22a0ebe11704 100644 --- a/noir/noir-repo/acvm-repo/brillig/src/opcodes.rs +++ b/noir/noir-repo/acvm-repo/brillig/src/opcodes.rs @@ -156,6 +156,13 @@ pub enum BrilligOpcode { destination: MemoryAddress, source: MemoryAddress, }, + /// destination = condition > 0 ? source_a : source_b + ConditionalMov { + destination: MemoryAddress, + source_a: MemoryAddress, + source_b: MemoryAddress, + condition: MemoryAddress, + }, Load { destination: MemoryAddress, source_pointer: MemoryAddress, diff --git a/noir/noir-repo/acvm-repo/brillig_vm/src/lib.rs b/noir/noir-repo/acvm-repo/brillig_vm/src/lib.rs index c7bf014f068e..e2a037618a49 100644 --- a/noir/noir-repo/acvm-repo/brillig_vm/src/lib.rs +++ b/noir/noir-repo/acvm-repo/brillig_vm/src/lib.rs @@ -339,6 +339,15 @@ impl<'a, B: BlackBoxFunctionSolver> VM<'a, B> { self.memory.write(*destination_address, source_value); self.increment_program_counter() } + Opcode::ConditionalMov { destination, source_a, source_b, condition } => { + let condition_value = self.memory.read(*condition); + if condition_value.is_zero() { + self.memory.write(*destination, self.memory.read(*source_b)); + } else { + self.memory.write(*destination, self.memory.read(*source_a)); + } + self.increment_program_counter() + } Opcode::Trap => self.fail("explicit trap hit in brillig".to_string()), Opcode::Stop { return_data_offset, return_data_size } => { self.finish(*return_data_offset, *return_data_size) @@ -793,6 +802,52 @@ mod tests { assert_eq!(source_value, Value::from(1u128)); } + #[test] + fn cmov_opcode() { + let calldata = + vec![Value::from(0u128), Value::from(1u128), Value::from(2u128), Value::from(3u128)]; + + let calldata_copy = Opcode::CalldataCopy { + destination_address: MemoryAddress::from(0), + size: 4, + offset: 0, + }; + + let opcodes = &[ + calldata_copy, + Opcode::ConditionalMov { + destination: MemoryAddress(4), // Sets 3_u128 to memory address 4 + source_a: MemoryAddress(2), + source_b: MemoryAddress(3), + condition: MemoryAddress(0), + }, + Opcode::ConditionalMov { + destination: MemoryAddress(5), // Sets 2_u128 to memory address 5 + source_a: MemoryAddress(2), + source_b: MemoryAddress(3), + condition: MemoryAddress(1), + }, + ]; + let mut vm = VM::new(calldata, opcodes, vec![], &DummyBlackBoxSolver); + + let status = vm.process_opcode(); + assert_eq!(status, VMStatus::InProgress); + + let status = vm.process_opcode(); + assert_eq!(status, VMStatus::InProgress); + + let status = vm.process_opcode(); + assert_eq!(status, VMStatus::Finished { return_data_offset: 0, return_data_size: 0 }); + + let VM { memory, .. } = vm; + + let destination_value = memory.read(MemoryAddress::from(4)); + assert_eq!(destination_value, Value::from(3_u128)); + + let source_value = memory.read(MemoryAddress::from(5)); + assert_eq!(source_value, Value::from(2_u128)); + } + #[test] fn cmp_binary_ops() { let bit_size = 32; From 476e66500dcbf5cd3c21f64b740f84bb9c25b36f Mon Sep 17 00:00:00 2001 From: sirasistant Date: Tue, 19 Mar 2024 12:00:15 +0000 Subject: [PATCH 2/4] feat: Implement CMOV instruction --- avm-transpiler/src/transpile.rs | 18 +++++ .../dsl/acir_format/serde/acir.hpp | 74 +++++++++++++++++++ .../noir-repo/acvm-repo/acir/codegen/acir.cpp | 60 ++++++++++++++- .../acir/tests/test_program_serialization.rs | 8 +- .../test/shared/complex_foreign_call.ts | 4 +- .../acvm_js/test/shared/foreign_call.ts | 4 +- .../src/brillig/brillig_gen/brillig_block.rs | 27 ++++--- .../src/brillig/brillig_ir/debug_show.rs | 18 +++++ .../src/brillig/brillig_ir/instructions.rs | 19 +++++ .../__snapshots__/contract_class.test.ts.snap | 10 +-- .../__snapshots__/index.test.ts.snap | 10 +-- 11 files changed, 222 insertions(+), 30 deletions(-) diff --git a/avm-transpiler/src/transpile.rs b/avm-transpiler/src/transpile.rs index df6ac3105c48..5e3c81eaa2e9 100644 --- a/avm-transpiler/src/transpile.rs +++ b/avm-transpiler/src/transpile.rs @@ -157,6 +157,24 @@ pub fn brillig_to_avm(brillig: &Brillig) -> Vec { } => { avm_instrs.push(generate_mov_instruction(Some(ALL_DIRECT), source.to_usize() as u32, destination.to_usize() as u32)); } + BrilligOpcode::ConditionalMov { + source_a, + source_b, + condition, + destination, + } => { + avm_instrs.push(AvmInstruction { + opcode: AvmOpcode::CMOV, + indirect: Some(ALL_DIRECT), + operands: vec![ + AvmOperand::U32 { value: source_a.to_usize() as u32 }, + AvmOperand::U32 { value: source_b.to_usize() as u32 }, + AvmOperand::U32 { value: condition.to_usize() as u32 }, + AvmOperand::U32 { value: destination.to_usize() as u32 }, + ], + ..Default::default() + }); + } BrilligOpcode::Load { destination, source_pointer, diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp index d047e6c9f8b5..0c3d3ff7bfc1 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp @@ -591,6 +591,17 @@ struct BrilligOpcode { static Mov bincodeDeserialize(std::vector); }; + struct ConditionalMov { + Circuit::MemoryAddress destination; + Circuit::MemoryAddress source_a; + Circuit::MemoryAddress source_b; + Circuit::MemoryAddress condition; + + friend bool operator==(const ConditionalMov&, const ConditionalMov&); + std::vector bincodeSerialize() const; + static ConditionalMov bincodeDeserialize(std::vector); + }; + struct Load { Circuit::MemoryAddress destination; Circuit::MemoryAddress source_pointer; @@ -644,6 +655,7 @@ struct BrilligOpcode { Return, ForeignCall, Mov, + ConditionalMov, Load, Store, BlackBox, @@ -5824,6 +5836,68 @@ Circuit::BrilligOpcode::Mov serde::Deserializable:: namespace Circuit { +inline bool operator==(const BrilligOpcode::ConditionalMov& lhs, const BrilligOpcode::ConditionalMov& rhs) +{ + if (!(lhs.destination == rhs.destination)) { + return false; + } + if (!(lhs.source_a == rhs.source_a)) { + return false; + } + if (!(lhs.source_b == rhs.source_b)) { + return false; + } + if (!(lhs.condition == rhs.condition)) { + return false; + } + return true; +} + +inline std::vector BrilligOpcode::ConditionalMov::bincodeSerialize() const +{ + auto serializer = serde::BincodeSerializer(); + serde::Serializable::serialize(*this, serializer); + return std::move(serializer).bytes(); +} + +inline BrilligOpcode::ConditionalMov BrilligOpcode::ConditionalMov::bincodeDeserialize(std::vector input) +{ + auto deserializer = serde::BincodeDeserializer(input); + auto value = serde::Deserializable::deserialize(deserializer); + if (deserializer.get_buffer_offset() < input.size()) { + throw_or_abort("Some input bytes were not read"); + } + return value; +} + +} // end of namespace Circuit + +template <> +template +void serde::Serializable::serialize( + const Circuit::BrilligOpcode::ConditionalMov& obj, Serializer& serializer) +{ + serde::Serializable::serialize(obj.destination, serializer); + serde::Serializable::serialize(obj.source_a, serializer); + serde::Serializable::serialize(obj.source_b, serializer); + serde::Serializable::serialize(obj.condition, serializer); +} + +template <> +template +Circuit::BrilligOpcode::ConditionalMov serde::Deserializable::deserialize( + Deserializer& deserializer) +{ + Circuit::BrilligOpcode::ConditionalMov obj; + obj.destination = serde::Deserializable::deserialize(deserializer); + obj.source_a = serde::Deserializable::deserialize(deserializer); + obj.source_b = serde::Deserializable::deserialize(deserializer); + obj.condition = serde::Deserializable::deserialize(deserializer); + return obj; +} + +namespace Circuit { + inline bool operator==(const BrilligOpcode::Load& lhs, const BrilligOpcode::Load& rhs) { if (!(lhs.destination == rhs.destination)) { diff --git a/noir/noir-repo/acvm-repo/acir/codegen/acir.cpp b/noir/noir-repo/acvm-repo/acir/codegen/acir.cpp index 11afd44ed6d9..bdec5581ddbb 100644 --- a/noir/noir-repo/acvm-repo/acir/codegen/acir.cpp +++ b/noir/noir-repo/acvm-repo/acir/codegen/acir.cpp @@ -571,6 +571,17 @@ namespace Circuit { static Mov bincodeDeserialize(std::vector); }; + struct ConditionalMov { + Circuit::MemoryAddress destination; + Circuit::MemoryAddress source_a; + Circuit::MemoryAddress source_b; + Circuit::MemoryAddress condition; + + friend bool operator==(const ConditionalMov&, const ConditionalMov&); + std::vector bincodeSerialize() const; + static ConditionalMov bincodeDeserialize(std::vector); + }; + struct Load { Circuit::MemoryAddress destination; Circuit::MemoryAddress source_pointer; @@ -612,7 +623,7 @@ namespace Circuit { static Stop bincodeDeserialize(std::vector); }; - std::variant value; + std::variant value; friend bool operator==(const BrilligOpcode&, const BrilligOpcode&); std::vector bincodeSerialize() const; @@ -4818,6 +4829,53 @@ Circuit::BrilligOpcode::Mov serde::Deserializable:: return obj; } +namespace Circuit { + + inline bool operator==(const BrilligOpcode::ConditionalMov &lhs, const BrilligOpcode::ConditionalMov &rhs) { + if (!(lhs.destination == rhs.destination)) { return false; } + if (!(lhs.source_a == rhs.source_a)) { return false; } + if (!(lhs.source_b == rhs.source_b)) { return false; } + if (!(lhs.condition == rhs.condition)) { return false; } + return true; + } + + inline std::vector BrilligOpcode::ConditionalMov::bincodeSerialize() const { + auto serializer = serde::BincodeSerializer(); + serde::Serializable::serialize(*this, serializer); + return std::move(serializer).bytes(); + } + + inline BrilligOpcode::ConditionalMov BrilligOpcode::ConditionalMov::bincodeDeserialize(std::vector input) { + auto deserializer = serde::BincodeDeserializer(input); + auto value = serde::Deserializable::deserialize(deserializer); + if (deserializer.get_buffer_offset() < input.size()) { + throw serde::deserialization_error("Some input bytes were not read"); + } + return value; + } + +} // end of namespace Circuit + +template <> +template +void serde::Serializable::serialize(const Circuit::BrilligOpcode::ConditionalMov &obj, Serializer &serializer) { + serde::Serializable::serialize(obj.destination, serializer); + serde::Serializable::serialize(obj.source_a, serializer); + serde::Serializable::serialize(obj.source_b, serializer); + serde::Serializable::serialize(obj.condition, serializer); +} + +template <> +template +Circuit::BrilligOpcode::ConditionalMov serde::Deserializable::deserialize(Deserializer &deserializer) { + Circuit::BrilligOpcode::ConditionalMov obj; + obj.destination = serde::Deserializable::deserialize(deserializer); + obj.source_a = serde::Deserializable::deserialize(deserializer); + obj.source_b = serde::Deserializable::deserialize(deserializer); + obj.condition = serde::Deserializable::deserialize(deserializer); + return obj; +} + namespace Circuit { inline bool operator==(const BrilligOpcode::Load &lhs, const BrilligOpcode::Load &rhs) { diff --git a/noir/noir-repo/acvm-repo/acir/tests/test_program_serialization.rs b/noir/noir-repo/acvm-repo/acir/tests/test_program_serialization.rs index 2c8ad2b99868..5288bc05a02b 100644 --- a/noir/noir-repo/acvm-repo/acir/tests/test_program_serialization.rs +++ b/noir/noir-repo/acvm-repo/acir/tests/test_program_serialization.rs @@ -207,10 +207,10 @@ fn simple_brillig_foreign_call() { let expected_serialization: Vec = vec![ 31, 139, 8, 0, 0, 0, 0, 0, 0, 255, 173, 143, 177, 10, 192, 32, 16, 67, 227, 21, 74, 233, - 212, 79, 177, 127, 208, 159, 233, 224, 226, 32, 226, 247, 139, 168, 16, 68, 93, 244, 45, + 214, 63, 177, 127, 208, 159, 233, 224, 226, 32, 226, 247, 139, 168, 16, 68, 93, 244, 45, 119, 228, 142, 144, 92, 0, 20, 50, 7, 237, 76, 213, 190, 50, 245, 26, 175, 218, 231, 165, 57, 175, 148, 14, 137, 179, 147, 191, 114, 211, 221, 216, 240, 59, 63, 107, 221, 115, 104, - 181, 103, 244, 43, 36, 10, 38, 68, 108, 25, 253, 238, 136, 1, 0, 0, + 181, 103, 244, 43, 36, 10, 38, 68, 115, 180, 20, 167, 136, 1, 0, 0, ]; assert_eq!(bytes, expected_serialization) @@ -306,14 +306,14 @@ fn complex_brillig_foreign_call() { let expected_serialization: Vec = vec![ 31, 139, 8, 0, 0, 0, 0, 0, 0, 255, 213, 84, 75, 10, 132, 48, 12, 125, 177, 163, 35, 179, - 154, 35, 8, 51, 7, 232, 204, 9, 188, 139, 184, 83, 116, 233, 241, 173, 152, 98, 12, 213, + 155, 27, 8, 51, 7, 232, 204, 9, 188, 139, 184, 83, 116, 233, 241, 173, 152, 98, 12, 213, 141, 21, 244, 65, 232, 39, 175, 233, 35, 73, 155, 3, 32, 204, 48, 206, 18, 158, 19, 175, 37, 60, 175, 228, 209, 30, 195, 143, 226, 197, 178, 103, 105, 76, 110, 160, 209, 156, 160, 209, 247, 195, 69, 235, 29, 179, 46, 81, 243, 103, 2, 239, 231, 225, 44, 117, 150, 241, 250, 201, 99, 206, 251, 96, 95, 161, 242, 14, 193, 243, 40, 162, 105, 253, 219, 12, 75, 47, 146, 186, 251, 37, 116, 86, 93, 219, 55, 245, 96, 20, 85, 75, 253, 136, 249, 87, 249, 105, 231, 220, 4, 249, 237, 132, 56, 20, 224, 109, 113, 223, 88, 82, 153, 34, 64, 34, 14, 164, - 69, 172, 48, 2, 23, 243, 6, 31, 25, 5, 0, 0, + 69, 172, 48, 2, 124, 203, 96, 70, 25, 5, 0, 0, ]; assert_eq!(bytes, expected_serialization) diff --git a/noir/noir-repo/acvm-repo/acvm_js/test/shared/complex_foreign_call.ts b/noir/noir-repo/acvm-repo/acvm_js/test/shared/complex_foreign_call.ts index 27abd72305f0..f11f6d7aa05b 100644 --- a/noir/noir-repo/acvm-repo/acvm_js/test/shared/complex_foreign_call.ts +++ b/noir/noir-repo/acvm-repo/acvm_js/test/shared/complex_foreign_call.ts @@ -2,13 +2,13 @@ import { WitnessMap } from '@noir-lang/acvm_js'; // See `complex_brillig_foreign_call` integration test in `acir/tests/test_program_serialization.rs`. export const bytecode = Uint8Array.from([ - 31, 139, 8, 0, 0, 0, 0, 0, 0, 255, 213, 84, 75, 10, 132, 48, 12, 125, 177, 163, 35, 179, 154, 35, 8, 51, 7, 232, 204, + 31, 139, 8, 0, 0, 0, 0, 0, 0, 255, 213, 84, 75, 10, 132, 48, 12, 125, 177, 163, 35, 179, 155, 27, 8, 51, 7, 232, 204, 9, 188, 139, 184, 83, 116, 233, 241, 173, 152, 98, 12, 213, 141, 21, 244, 65, 232, 39, 175, 233, 35, 73, 155, 3, 32, 204, 48, 206, 18, 158, 19, 175, 37, 60, 175, 228, 209, 30, 195, 143, 226, 197, 178, 103, 105, 76, 110, 160, 209, 156, 160, 209, 247, 195, 69, 235, 29, 179, 46, 81, 243, 103, 2, 239, 231, 225, 44, 117, 150, 241, 250, 201, 99, 206, 251, 96, 95, 161, 242, 14, 193, 243, 40, 162, 105, 253, 219, 12, 75, 47, 146, 186, 251, 37, 116, 86, 93, 219, 55, 245, 96, 20, 85, 75, 253, 136, 249, 87, 249, 105, 231, 220, 4, 249, 237, 132, 56, 20, 224, 109, 113, 223, 88, 82, 153, 34, 64, - 34, 14, 164, 69, 172, 48, 2, 23, 243, 6, 31, 25, 5, 0, 0, + 34, 14, 164, 69, 172, 48, 2, 124, 203, 96, 70, 25, 5, 0, 0, ]); export const initialWitnessMap: WitnessMap = new Map([ [1, '0x0000000000000000000000000000000000000000000000000000000000000001'], diff --git a/noir/noir-repo/acvm-repo/acvm_js/test/shared/foreign_call.ts b/noir/noir-repo/acvm-repo/acvm_js/test/shared/foreign_call.ts index 0be8937b57d3..b24c134b26ff 100644 --- a/noir/noir-repo/acvm-repo/acvm_js/test/shared/foreign_call.ts +++ b/noir/noir-repo/acvm-repo/acvm_js/test/shared/foreign_call.ts @@ -2,10 +2,10 @@ import { WitnessMap } from '@noir-lang/acvm_js'; // See `simple_brillig_foreign_call` integration test in `acir/tests/test_program_serialization.rs`. export const bytecode = Uint8Array.from([ - 31, 139, 8, 0, 0, 0, 0, 0, 0, 255, 173, 143, 177, 10, 192, 32, 16, 67, 227, 21, 74, 233, 212, 79, 177, 127, 208, 159, + 31, 139, 8, 0, 0, 0, 0, 0, 0, 255, 173, 143, 177, 10, 192, 32, 16, 67, 227, 21, 74, 233, 214, 63, 177, 127, 208, 159, 233, 224, 226, 32, 226, 247, 139, 168, 16, 68, 93, 244, 45, 119, 228, 142, 144, 92, 0, 20, 50, 7, 237, 76, 213, 190, 50, 245, 26, 175, 218, 231, 165, 57, 175, 148, 14, 137, 179, 147, 191, 114, 211, 221, 216, 240, 59, 63, 107, 221, 115, - 104, 181, 103, 244, 43, 36, 10, 38, 68, 108, 25, 253, 238, 136, 1, 0, 0, + 104, 181, 103, 244, 43, 36, 10, 38, 68, 115, 180, 20, 167, 136, 1, 0, 0, ]); export const initialWitnessMap: WitnessMap = new Map([ [1, '0x0000000000000000000000000000000000000000000000000000000000000005'], diff --git a/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_gen/brillig_block.rs b/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_gen/brillig_block.rs index f808bfac43b2..0c8df6222df6 100644 --- a/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_gen/brillig_block.rs +++ b/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_gen/brillig_block.rs @@ -1339,18 +1339,23 @@ impl<'block> BrilligBlock<'block> { BrilligBinaryOp::LessThan, ); - self.brillig_context.codegen_branch(result_is_negative.address, |ctx, is_negative| { - if is_negative { - // Two's complement of num - let zero = ctx.make_constant_instruction(0_usize.into(), num.bit_size); - ctx.binary_instruction(zero, num, absolute_value, BrilligBinaryOp::Sub); - ctx.deallocate_single_addr(zero); - } else { - // Simply move the original num - ctx.mov_instruction(absolute_value.address, num.address); - } - }); + // Two's complement of num + let zero = self.brillig_context.make_constant_instruction(0_usize.into(), num.bit_size); + let twos_complement = + SingleAddrVariable::new(self.brillig_context.allocate_register(), num.bit_size); + self.brillig_context.binary_instruction(zero, num, twos_complement, BrilligBinaryOp::Sub); + + // absolute_value = result_is_negative ? twos_complement : num + self.brillig_context.conditional_mov_instruction( + absolute_value.address, + result_is_negative.address, + twos_complement.address, + num.address, + ); + + self.brillig_context.deallocate_single_addr(zero); self.brillig_context.deallocate_single_addr(max_positive); + self.brillig_context.deallocate_single_addr(twos_complement); } fn convert_signed_division( diff --git a/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_ir/debug_show.rs b/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_ir/debug_show.rs index fa99e968a315..5611905697cf 100644 --- a/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_ir/debug_show.rs +++ b/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_ir/debug_show.rs @@ -121,6 +121,24 @@ impl DebugShow { debug_println!(self.enable_debug_trace, " MOV {}, {}", destination, source); } + /// Emits a conditional `mov` instruction. + pub(crate) fn conditional_mov_instruction( + &self, + destination: MemoryAddress, + condition: MemoryAddress, + source_a: MemoryAddress, + source_b: MemoryAddress, + ) { + debug_println!( + self.enable_debug_trace, + " CMOV {} = {}? {} : {}", + destination, + condition, + source_a, + source_b + ); + } + /// Emits a `cast` instruction. pub(crate) fn cast_instruction( &self, diff --git a/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_ir/instructions.rs b/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_ir/instructions.rs index 5c2a6bfaccae..99fb4c89f641 100644 --- a/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_ir/instructions.rs +++ b/noir/noir-repo/compiler/noirc_evaluator/src/brillig/brillig_ir/instructions.rs @@ -359,6 +359,25 @@ impl BrilligContext { self.push_opcode(BrilligOpcode::Mov { destination, source }); } + /// Emits a conditional `mov` instruction. + /// + /// Copies the value at `source` into `destination` + pub(crate) fn conditional_mov_instruction( + &mut self, + destination: MemoryAddress, + condition: MemoryAddress, + source_a: MemoryAddress, + source_b: MemoryAddress, + ) { + self.debug_show.conditional_mov_instruction(destination, condition, source_a, source_b); + self.push_opcode(BrilligOpcode::ConditionalMov { + destination, + source_a, + source_b, + condition, + }); + } + /// Cast truncates the value to the given bit size and converts the type of the value in memory to that bit size. pub(crate) fn cast_instruction( &mut self, diff --git a/yarn-project/circuits.js/src/contract/__snapshots__/contract_class.test.ts.snap b/yarn-project/circuits.js/src/contract/__snapshots__/contract_class.test.ts.snap index 677772fdfe77..57656021141c 100644 --- a/yarn-project/circuits.js/src/contract/__snapshots__/contract_class.test.ts.snap +++ b/yarn-project/circuits.js/src/contract/__snapshots__/contract_class.test.ts.snap @@ -9,18 +9,18 @@ exports[`ContractClass creates a contract class from a contract compilation arti "selector": { "value": 2381782501 }, - "bytecode": "0x1f8b08000000000000ffed9d779c14c5baf77b6141647645ccd9c5848ae232647681c19c30a38888b02c2b28b0443163961ccc19094ace02028a80184ecec993f4783ce9de7bcef9dc3fee7bef1b7c6fd74c3d777f5b542f3b6bd7f09b9deacfa776aa9fadeee75bbf7eba3a5577fd330882a22033b50cd319c1fe93fc3fa57fcbbfd9d425c67595bbe42cca13ce1679c2d9324f388bf384b3559e70b6ce13ce43f284b34d9e701e1a23a7626b11d49fe2e66deb40d7b8191379a669491e685a9a679a1e96079ab60bf2a38d3a3c4f38dbe709e71179c279649e701e95279c47e709e73179c2796c9e701e97279cc7e709e70979c279629e709e94279c27e709e72979c2796a9e7096e50967873ce13c2d4f384fcf13ce33f284f3cc3ce13c2b46ce4ec0d951ff9ead7fcfd1bfe7ea5f297b9efe3d5fff76d6752cd6f31728ae30a9873449e37f5dc3d42d4cddc3d4c3f85fcf30f50a53ef30f5d1ff2bd3ffab08536598fa86a95f98fa6b0d0684e9c2305d14a68bc37449982e0dd36561ba3c4c5784e9ca305d15a6abc334304cd784e9da305d17a6ebc37443986e0cd34d611a14a69bc3744b980687e9d6300d31586e0bd3d030dd1ea66161ba234cc3c334224c55611a19a6ea308d0a534d98ee0cd3e8308d09d35d61ba3b4c63c3342e4ce3c3541ba609619a18a649619a1ca629619a1aa67bc2342d4cf786e9be30dd6f68f640981e0cd343617ad8e09c1ea647c2f468981e0bd3e3617a224c4f86e9a9303d1da619619a19a659619a1da639619a1ba679619a1fa605615a18a667c2f46c989e0bd3f3617a214c2f86e9a530bd1ca657c2f46a985e0bd3eb617a43b3c88eb0284c6f8669719896846969989685e9ad30bd1da6e5615a11a695615a15a6d5615a13a6b5615a17a6f561da10a68d61da14a6cd617a274c5bc2b4354cdbc2f46e98b6876947987686e9bd30bd1fa65d61fa204cbbc3b4274c7bc3f46198f685e9a3307d1ca64fc2f46998be15a66f87e93b61fa6e98be17a6ef1b9aff204c3f0cd38fc2f4636dfb89fefda92e2bf7ef7e16a69febfc2ff4ef2ff5efaff4ef67c632bf0ed36f0cdb6fc3f43bc3f6fb307daef35fe8df3fe8df2ff5ef1ff5ef57faf74ffaf7cffaf72ffaf7affaf76ffaf75ff4efbfeadf7fd3bf7fd7bfffd0bfff0cd3e60e997c9ba06e4a0531b551dd6ad2cf7e44fc8e41fd4969d152ff4f7ecbb4bd58cfcbaf68d74acfb732ecadf57c6b633d6df47c1bc3de5ecfb737ec47eaf9230dfbd17afe68c37eac9e3fd6b09fa1e7cf007b22807bc3daae6c2db5a9086c12af2dc0d64adb5a82adb5ac0e6c87685b2bb0c9f66d0db643b5ed10b0b5d5b636604b68dba1a265984ab42d15c4152be523d47a4be35eaf7e5e7658fcbc23d57adb39e23d3c7ede516abded1df0aaf83842afeb70889b23b5ad3dd88ed2b623c076b4b61d09b663b4ed28b01dab6d4783ed386d3b066cc76bdbb1603b41db8e03db89da763cd84ed2b613c076b2b69d08b653b4ed24b09daa6d2783ad4cdb4e019b6e728353c1769ab69581ed746deb00b633b4ed34b09da96da783ed2c6d3b036cd2fe9e0936395f3c4bdb54db7168112ca3edd26ea59791361b6ce7487b0db673a5ad065b2769a7c1761ef816dbf9d0d688adb3b649bba5fed747e753415cfb49b246adb722eef5866b56ebed1bff7ad3cf1cfb05755aa7c04f0568d55fe763ecd7d4057d17e9247ec45e0cf92ba1ac94133de4d823ecea1853a9f3fd1b58ae8fb15c2994a9b4d43f15c45bffbe064f5f83b915e4ddc46cd7ae3e661b3d651db383a1ac197b721ed41c637620703888d99e3e661b3d651db33550d68c3d39176e8e317b1b703888d92a37319b2cf7319bb96f1604f6d893eba1e618b3638023fe98edee63b6f153d631fb189435634fae899b63cc4e038ef863b667953f3768f49475cc2e80b266ecc9fd99e618b34f02878398adf1ed6ca3a7ac63f60d286bc69edc2b6c8e31fb2c70c41fb3bd1dc56c571fb341e6196810d8634fee5b37c7985d0c1cf1c7ec487f7fb6f153d631bb03ca9ab127cf509a63ccaed779f59ce127fa39c34960fba9b69d0cbcf1c776757747b19df4b19de91b1204f61895e779cd31b63fd07915c7bf80fe0862fba5b67500dbafb4ed34b07da66da743bd1cec03557e1f68f494f53ef01b286bc6b23c5b6e8efbc08f80c341cc56fb986df49475ccfe0dca9ab127fd1c9a63ccfe1e381cc46c8d8fd9464f59c7ec7f425933f6ced6f9e618b3d2d7549d2f7ca1cf17ce05db1fb4ad13d8bed4b6f3c0f6476d3b1f6c5f695b67b0fd49db2e00db9fb5ad1c6c7fd1b62e60fbabb625c1f6376deb0ab67fd1b66e60fb576deb0eb67fd3b61e60fbbbb6f504db3fb4ad17d8fea96dbdb54d3def92be5772deda06f85341bcdb56fa5dcaba65be4b0e7cb7337cb7cba1eff686eff616df4907be13e043a622633e05f9a45b9ef252e0415fdde2f7d555d5bd6bd0f8ba77039eee0eea9e001f8de1e90e3c3de2e749f7ffed19ff7ad3dbb8aba169027c75857af57250af22f025eb9679f1570a366c5b7b59187bc7cf982c025fb26e99ef0d8c62c3b65edeb992fd471d0f3b16d5f13ad897d2e744e24fbe5b261cddc02e65aee850c7d649b395c0fff1b8d7c3b0398acb745c882f59b7cc8bbf12a84f8fdc33261bcbd8dd6074d54614812f59b7f75db71d248fc77107d73ad6364d7c57e4c0776fc37737c337b69d3235746ceb0dccb15f73ea635b65fceb2dc7eb13b936143f78fe80d77071d5097dcbb5a1f8117b31e4af29aa2b2be5440f6987855dc5b26c4b643797eb652c570a652a2cf54f05f1d6bfd2e0a93498d536b9088e850ef687740c54181c32df0db4ab8cd0ae02b49332678376aedab33e068fccf7001e69c77a028fab6ba2289e5c5c8f1dc8379ec3e2f5b3fc1fcf035c6daf2e06a3ccdbb6576f60b49dab38b89e69f05ca53b308aad0ff07475a459d476ed4ae2db41aca4db23f121e7e6b2fff600bb94e9ad5fa8536de55dd056ba88118c47991a7bcd1bff764aa6afc1bb67c183dbcec175551747f1588ef76fbe0ee28d35b35dea6e6815758fc7555bded5e09179f1e7993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9e999f199f2761bf2d29d78384d1ecffe6ea3e7ffafb877a5db27ef55ce7ff38ed0f962cc7fe31d20fe25ca3cec550a6b4455dd9ff0ffdc1cce754d847b2875bedd2db12fb63a6605efc615f2bdc960cfd9dca62f39d1ce9ea799bfa0698fa8ea6d9f7b387455317fd9f51d3224353ec8f7f9ec1a3e2b4b2651d9b8b677fd93e8b44ad241fe7b3bdd2c01eebf16f9764bd67d62d82faed071e675cf5df91b65a9e975718be8ba1cc892deab68df4ad923186bb1acb61bf1f59b72c732ed82b8d75b7d3cb0a472b63fd3d615929730ab4a97b5ad469e6a0ad4c66db771d9f9bc77f1cce3cc7ef9a054f17e071d1ce383adf28c77d20eee7f866ff34db798c94c1be7d0efa5536d8df49fc7966cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367e667563ce6b3567cbfb61b09638efa3ea49f67c8b7ca64fde9ef05b7a8f3ebfa399c3c73ea64d419df1dfd678bbab29b75be24d8bfbf43d4b674f57d8aa86d29fef0db33f82cc8c573dd22f025eb4e5ab4907c596cbe33cff15d8c0d21cff1bb1aba76b368ea6a7fc567aca829eeafdd0d1e7c361af56d9fa46173d977282a2ec41fee4b49b0491edf8f76b19df15862f6eb117ff8fcfa3b5adb7681ab6d9f2c77d96ee0775352c1fef18ddf53f921b47d3fd679ecc3817d47beb0fc5fa6869e538b7eaace0ebeaf595e04eb92ed6bfbb6e700608dc977175c57914e030c0d8a21ff798bbab2524eca8ad6c2aef611f9060cb29bcb7537962b8532fd2cf54f05f1d6dffcd66a7f83596d939f419c7d01c77f576d52bf088dce058da48ce36f365afb579afd0ab11d6d6d949165f15b747f85362aaaffa8ed18e0fa3826ebb61dc7cce34263fa79167a3fadff82f622ee7e5aff053184fdb40263fd9d60fdc2d53a883eb64899ff67acdf3c279765b01fd8ffec27f03d97a4ce67734e7eb0aeaf6ce7e4b85c54dd15337e072d152333c604b2e079829469abb5966d5619c1dddbb26c69c4b2a295f9adb092607ffddc7c672db3cff737ea22718ddf20973247425ddc9cb764ce015d7d532e057552f9a4a5ae52e638d8d74ed0f9046c27dc6fcfb1fc5fa686ce01710cf70be3af737afb5e049c29f083be2f06d6987c7741df720e287ec45e0cf9b35bd6959572a287682dec6a1f91f328643797ab30962b8532032cf54f05f1d6ff4283e74283596d939321cece817ee8aedaea01111a75028da40cde53b47d07d476afc3d5fb1b51e752f8fe92797e85c74937e74df6f358f3be9aed1ca193c18fe7083da19d4d58ca9af70be5781967bf617c57a227f8c577255c7dbbb90fe89682793c2f3898be5d7cc756f98b1a33a14f0e7c478d99900bdfed0ddfed73e8db6bee3567d2dcc11804e9f7cff09ba56a6ae8bc14c72590e55a00a38bb11c1241fd6f8f1f8811c77790e55a02a38be343b6df3eef098cb25c3130ba78b714c7df680c237e63188ff3c2e8e05bb15d9afaad58bca7d71a1899ded9c467538700a38bf3e2a6beab87e7f36de0d7d5b8445db3604c02a32c772830bab8378ed7328d61c4eb2259ae2d30ba788695edf84ef8ed79bcb7ec92b1a163bbe3be28c96cefbd54bae569f05c037d3b18d730ad05de673c90167dddf23478ee83be1ddcf74b6b81e30c1e480b7c36e862dcc34450ff39dc8178f0f9a52c770430a61c31f6cf8231058cff73af18180738624c65c1380018c57e14303ab8ff9a661c900523dea794e58e06c68b1c315e9805e345c028cb1d038c2eeea526c06f63182f064659ee5860bcc411e3c559305e028cb2dc71c078a923c64bb260bc141865b9e381f132478c9766c1781930ca722700e3e58e182fcb82f1726094e54e04c62b1c315e9e05e315c028cb9d048c573a62bc220bc62b8151963b1918af72c47865168c5701a32c770a305eed88f1aa2c18af064659ee54601ce888f1ea2c180702a32c57068cd738621c9805e335c028cb7500c66b1d315e9305e3b5c028cb9d068cd73962bc360bc6eb8051963b1d18af77c4785d168cd703a32c770630dee088f1fa2c186f004659ee4c60bcd111e30d5930de088cb2dc59c0789323c61bb360bc09186fb4300e72c47853168c838051963b0f186f8e9f317d2d3d280bc69b81e796f879d29add9c05cf2d6e79d2dfd5bbd9e2ebd6f87da5b7c5e0a0f175bf157886c4cf93de16b766c1230ca5b01c6a765bfc8c69cd8664c1781bf00c8d9f27add96d59f00c05cd6eb368767bfc8c69cd8666c1783bf00c8b9f27add9ed59f00c03cd6eb7687647fc8c69cd8665c17807f00c8f9f27add91d59f00c0fea34bbc3a2d988f819d39a0dcf827104f054c5cf93d66c44163c55a0d9088b6623e3674c6b569505e348e0a98e9f27add9c82c78aa41b39116cd46c5cf98d6ac3a0bc651c053133f4f5ab35159f0d48066a32c9add193f635ab39a2c18ef049ed1f1f3a435bb330b9ed1a0d99d16cdc6c4cf98d66c74168c6380e7aef879d29a8dc982e72ed06c8c45b3bb1d31de9505e3dd169eb8bf937d97c5d73847751f1b34beeec2500acb613f89f18e18c765c1381e186539ec2751eb88717c168cb5c028cb251c3336d44fa2167c4f88df77ba5daa0d1aafcf04b73c0df69340df131d69312168bc1613ddf234d84f027d4f72a4c5c4a0f15a4c029ec90eb448808fc6f00843292c87fd24a638629c9c05e3146094e5b09fc454478c53b2609c0a8cb21cf693b8c711e3d42c18ef0146590efb494c73c4784f168cd3805196c37e12f73a629c9605e3bdc028cb613f89fb1c31de9b05e37dc028cb613f89fb1d31de9705e3fdc028cb613f89071c31de9f05e303c028cb613f89071d313e9005e383c028cb613f89871c313e9805e343c028cb613f89871d313e9405e3c3c028cb613f89e98e181fce82713a30ca72d84fe211478cd3b3607c04186539ec27f1a823c647b2607c141865b9bb1d333674fdf26833f71d75add2dc7d475d973477df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f771cee4fb3107be13e043a622633e0579612885e5eef68ccd9a1179cae2e329c7baa3afc709eafeb885a7c851ddd1d713047517867c637c2c0f18711ff73a369dd1b18ec9a6322a9e271df13c9105cf93c0f394239e27b3e0790a789e8e9f271d534f65c1230ca5b0dcdd79c0f8581e307a1dbd8e4c8c5ec7c2d1d1337a46cfe8190f06633eb4e19e312fe231d95446c533237e9eb4664f67c133033493e56e71cb986c2aa3e299193f4f5ab31959f0cc04cd66583473c0986c2aa3e299153f4f5ab39959f0cc02cd665a3473c0986c2aa3e2991d3f4f5ab35959f0cc06cd66593473c0986c2aa3e299133f4f5ab3d959f0cc01cd665b3473c0986c2aa3e2991b3f4f5ab33959f0cc05cde6583473c0986c2aa3e299173f4f5ab3b959f0cc03cde65a3473c0986c2aa3e2991f3f4f5ab37959f0cc07cde6593473c0986c2aa3e259103f4f5ab3f959f02c00cde65b346365bc3b0f181fcb0346c73a269bcaa878163ae2599005cf42e079c611cfc22c789e019e67e3e749c7d43359f00843292c77771e303e96078c5e47af2313a3d7b17074f48c9ed13366c7f8781e30fa6ded1959191d5c5f35f80ecd33cddc77d43b34cddd77d43b34cdddb78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c33f97e2e7edfc96cbf31f31cf0b8f8e68da37a96abf53eafd7f5758cfa29ad5e30b47ac6d0aa14ca3c0ffabde040bf22f02beb9679f1972d7347026647be938785eb3814ea2f3e1e33f450fe5f7454f7a8b6fec566ee3baaad6feebea3dafae6eedbc7b98ff342f0ede3dcc77921f8f671eee39cc537e65b0575e7edf2fd53b58e9774be58cf4bf9c7c12e65261f92f96d17f87dc8856fbf0ff9634521f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7395f9c633c54e6802730788206781690f14c25e3994dc6339a8c672819cfb5643c1791f13c48c6d38d8c670219cf48329e9bc978ae24e3b9808ca71f19cf34329ede643c73c878ee22e3798a8c671819cff5643c9790f13c4cc69324e39944c6338a8ce756329eabc97852643cf791f1f424e339878c671c19cf5c329eb3c9788693f13c4dc6732319cf61643cedc8782e23e379828ce77c329e0a329e47c878e693f14c21e3b9938ce736329e72329e6bc8783a93f15c48c6f300194f77329e79643cb5643c33c878aac8780691f19c4bc67305194f4b329ebe643c0bc978ee21e3e943c633868ca71319cfed643cd791f15c4cc6f310194f57329e89643c33c978aac9780693f15c45c6d39f8ce75e329e5e643c63c9783a92f1dc41c67303194f2ebe679a0d4f09194f2919cfa5643c8f92f14c27e3e942c633998c6716194f0d19cf10329e81643c03c878ee27e3e941c6339e8c670419cf4d643c4f92f11c4ec6d39e8ce772329e22029e44b0ff182609f8ff73606b612cab3efb3aa743ddff5fd6f616b0cc2b3adfd2b2ee97c126df927dc5b22ceaf432d425a5f3e5df6c4aeb84be52302ffe4a80e315129ecbc978da93f11c4ec6f32419cf4d643c23c878c693f1f420e3b99f8c670019cf40329e21643c35643cb3c8782693f17421e3994ec6f32819cfa5643ca5643c25643ccf91f1dc40c67307194f47329eb1643cbdc878ee25e3e94fc6731519cf60329e6a329e99643c13c978ba92f13c44c6733119cf75643cb793f17422e31943c6d3878ce71e329e85643c7dc9785a92f15c41c6732e19cf20329e2a329e19643cb5643cf3c878ba93f13c40c67321194f67329e6bc878cac9786e23e3b9938c670a19cf7c329e47c8782ac878ce27e379828ce732329e76643c8791f1dc48c6f33419cf70329eb3c978e692f18c23e339878ca72719cf7d643c29329eabc9786e25e31945c633898c2749c6f33019cf25643cd793f10c23e3798a8ce72e329e39643cbdc978a691f1f423e3b9808ce74a329e9bc9784692f14c20e3e946c6f32019cf45643cd792f10c25e3194dc6339b8c672a19cf02329e4a0bcf738e78e47d7759b7cc3f47e2dbc1762857eb7dd5519d5ed3eb6aa5d72bfce2af18ca4c6f9bf955cf3f7059e132bf4f80efe6bc061abde6a82eb23d8a8ced83be5f72e4db1c9f4fe65f6ae6bedb19bedb1588eff686eff605e2dbc7b98ff342f0ede3dcc77921f8f671eee39cc9b7836b83247e274da622633e0579bc5e70f17d3947f5ac779df8758cfa29ad5e37b432afad4aa1ccaba0dfeb0ef4b35d7bcabcf8cb96b9230133c64559106f5cbc117f9d92aadfe1a1a0eb1b86be58af458e348d3a862c6ae6bea38e21cddd77d431a4b9fbf671eee3bc107cfb38f7715e08be7d9cfb3867f2fda6cec778dd588e3ed4f345b91e7813fc2ed1f9a218fdaa752dd6eb2ad6eb168e25609732ff1b9e6bfa7ddeeff371f9f6c7361fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be99e3dccc4b7ff1b381cd557ffea858ccc5bb0407d377542c3677df51b1d8dc7dfb38f771cee47ba903df09f02153437dfc9602cf62073c8eea997eb6b1cca8d373469d4aa10c1ee39739a86711f89575cbfc32e091a912785cc44163b639f22c20e3994ac6339b8c673419cf50329e6bc9782e22e379908ca71b19cf04329e91643c3793f15c49c67301194f3f329e69643cbdc978e690f1dc45c6f31419cf30329eebc9782e21e379988c2749c633898c671419cfad643c5793f1a4c878ee23e3e949c6730e19cf38329eb9643cc3c9789e26e3b9918ce730329e76643c9791f13c41c6733e194f0519cf23643cf3c978a690f1dc49c6731b194f3919cf22329e6bc8783a93f15c48c6f300194f77329e79643cb5643c33c878aac8780691f19c4bc67305194f4b329ebe643c0bc978ee21e3e943c633868ca71319cfed643cd791f15c4cc6f310194f57329e89643c33c978aac9780693f1bc4ec67315194f7f329e7bc9787a91f18c25e3e948c6730719cf0d643c25643ca5643c9792f13c4ac6339d8ca70b19cf64329e59643c35643c43c8780692f10c20e3b99f8ca70719cf78329e11643c3791f13c49c67338194f7b329ecbc9788a087812c1feeffe27e0ffaf834dde517f0e6c6fe9fc62b0b5b0f868a9f3cbc056acf3b28e43c2f46287fdd78d3ab97a2f1f7da5605efc9500c75b243c9793f1b427e3399c8ce749329e9bc8784690f18c27e3e941c6733f19cf00329e81643c43c8786ac8786691f14c26e3e942c6339d8ce751329e4bc9784ac9784ac8786e20e3b9838ca72319cf58329e5e643cf792f1f427e3b98a8ce775329ec1643cd5643c33c9782692f17425e379888ce762329eebc8786e27e3e944c633868ca70f19cf3d643c0bc978fa92f1b424e3b9828ce75c329e41643c55643c33c8786ac978e691f17427e379808ce742329ece643cd790f12c22e32927e3b98d8ce74e329e29643cf3c9781e21e3a920e3399f8ce709329ecbc878da91f11c46c6732319cfd3643cc3c978e692f18c23e339878ca72719cf7d643c29329eabc9786e25e31945c633898c2749c6f33019cf25643cd793f10c23e3798a8ce72e329e39643cbdc978a691f1f423e3b9808ce74a329e9bc9784692f14c20e3e946c6f32019cf45643cd792f10c25e3194dc6339b8c672a19cf02329ecadcf024d5bbedd2d73a002e9c52905f063c8b1ce8e3a89ee5f85d83af635cafd2ea6d43abd70dad4aa1cc52d0ef6d07fa15815f59b7cc8bbf7c64563c8feabced3b108f92308a6d915b9ef47efb68507f6a68bf7d1b785cb46b8eea99debf961b757ad4a2bb94c1585deea09eb67d47e697c376c83766c5f384ce0b6b02ca3d41c228b6656e79d2fbd71341fda9a1fd6b39f0b8687f1cd533bd7fad30eaf48445772983b1bac2413d6dfb8eccaf80ed906fcc8ae7499d17d604947b9284516c6fbbe5e996803acbd4d0feb502785cb43f8eea99debf561a757ad2a2bb94c1585de9a09eb67d47e657c276f0cc9ed9c6ac78e4d98eb026a0dc53248c625bee94a75b7902ea2c5343edd84ae071d1ce3bd23ddd8ead32eaf49445772983b1baca413d6dfb8eccafb2f82e0be2d5627523b4586de1599d632dc45fb6cc4bf390d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398a994167c523dfae14d604947b9a84516c2bdcf2a4df0b7a3aa83f1519f329c8af069e950ef47154cf741ff235469d9eb6e82e6570ff5ae3a09eb67d47e6d7c076c88679551e327b9d9bc6ac7866e8bcb026a0dc0c1246b1ad74cb936ec76604f5a786dab135c0e3a29d7754cf743bb6d6a8d30c8bee5206f7afb50eea69db77647e2d6c07cfec996dcc8a67a6ce0b6b02cacd246114db6aa73cc9f4fb8d3383fa5343edd85ae071d1ce3bd23ddd8ead33ea34d3a2bb94c1585de7a09eb67d47e6d7c176c88679551e327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7c2d159f1ccd279614d40b959248c625be394a76bfab9c3aca0fed4d0738775c0b336769ecc730707baa79f3bac37ea34cba2bb94c1fd6bbd837adaf61d995f0fdba1b933afca43661f1bb961f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e6286686d8503cb3755e5813506e3609a3d8d6bae5497ff76076507f6aa8dfce7ae059e7401f47f54cf7dbd960d469b645772983fbd70607f5b4ed3b32bf01b68367f6cc3666c53347e7853501e5e690308a6d9d5b9e743b3627a83f35d48e6d001e17edbca37aa6dbb18d469de65874973218ab1b1dd4d3b6efc8fc46d80e9ed933db9815cf5c9d17d604949b4bc228b6f56e79d2edd8dca0fed4503bb611785cb4f38eea996ec73619759a6bd15dca60ac6e72504fdbbe23f39b603b7866cf6c63563cf3745e5813506e1e09a3d836b8e54926a0ce3235d48e6d021e17edbca37aa6dbb1cd469de65974973218ab9b1dd4d3b6efc8fc66d80ef9c6ac78e6ebbcb026a0dc7c1246b16d74cb93debfe607f5a786f6afcdc0e3a2fd7154cff4fef58e51a7f916dda50cc6ea3b0eea69db7764fe1dd80ef9c6ac7816e8bcb026a0dc021246b16d72cb93debf1604f5a786f6af7780c745fbe3a89ee9fd6b8b51a70516dda50cc6ea1607f5b4ed3b32bf05b643be312b9e853a2fac0928b79084516c78bc58e888a7d4e029b56871b07cabf90a9d2fd1bf09f87f0530ba6a0f171a8c328f318ebcae356b67f0b433343b98be55fd2b75fe30fd8bdbab121819b657bb1c68d6dee0696f6876307d2b2dfaeafce1fa17b7575f6064d85eed81c741fbdc2d61f0a8a9a1f38d2d8ef57154cff4f9c6d6c0ae3b1e87a40c1ebbb73aa8a7ed5c42e6b7c276f0cc9ed9c6ac7806e9bcb026a0dc201246b1e175cab6f879ba250c1e3535d48e6d73ac8fa37aa6dbb17703bbeedb40772983b1faae837a16815f59b7ccbf0bdb211be65579c8ec756e1ab3e219acf3c29a8072834918c5b61578b6c7cfd32d61f0a8a9a1766cbb637d1cd533dd8eed08ecba6f07dda50cee5f3b1cd4b308fccaba657e076c876c9857e521b3d7b969cc8a6788ce0b6b02ca0d216114dbbbc0b333769ecc7840c8a3a686dab19d8ef57153cf4c3bf65e60d77d27e82e6570ff7acf413d8bc0afac5be6df83ede0993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9e999b59f10cd579614d40b9a1248c62db013cefc7ce9379ee803c6a6ae8b9c3fb8ef57153cfcc73875d815df7f741772983b1bacb413d8bc0afac5be677c176f0cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccdac7886e9bcb026a0dc301246b1bd073c1fc4cfd32d61f0a8a9a1e70e1f38d6c7513dd3cf1d760776dd3f00dda50cc6ea6e07f52c02bfb26e99df0ddb61b767f6cc1666c5335ce7853501e58693308a6d17f0ec899d27f3fc1479d4d4503bb6c7b13e6eea9969c7f60676ddf780ee52066375af837a16815f59b7ccef85ed900df3aa3c64f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce85a3b3e2a9d279614d40b92a1246b1ed069e0f63e7e95a9e3078d45464cca720ffa1637ddcd433f3dc615f60d7fd43d05dcae0feb5cf413d8bc0afac5be6f7c17668eeccabf290d9c7466e987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398a992136144fb5ce0b6b02ca5593308a6d2ff07c143f4fb784c1a3a622633e05f98f1cebe3a89ee97e3b1f0776dd3f02dda50cee5f1f3ba86711f89575cbfcc7b01d3cb367b6312b9e1a9d17d60494ab216114db3ee0f9247e9e64c2e0515343edd8278ef57154cf743bf66960d7fd13d05dca60ac7eeaa09e45e057d62df39fc276c83766c5335ae7853501e54693308aed63e0711077699e528347e63f21f0ade66b75be44ffe2f6aa054686ed559a03cdda193ced0ccd0ea66f55ff093a7f98fec5ed35011819b657bb1c68d6dee0696f6876307d2b2d26eafce1fa17b7d7446064d85eed73a0d9c16c0f0fe6be7d30e3d46b7ef0342f3a889a171d44cd8bbce6549a3b38be24f1581600034e29c87f0a3cdf8e9f277d5feed32c78be0d3cdf8a9fa78ba37a96abf57e07d8e35aafd2eabb86569f1a5a95421964f8ae03fd8ac0afac5be6c59f67f6cc51cc786e2bac0928f70909a3d8be053c2eda0d55f7f3f5ba64fdadc2f4d951757e5d3c2fc17bc5adf47a8543fc154399896575657fa7d94ae0ffb2dd547df6193647ef3077b13db79379f15712e4ecde6d83f792510b17cf9bb23deeefb3f07c1d1f4f39eee7e86bafa3ba67f3ec6faf8527c6ba77897aeeb927febaa7db8fce7a5db27eb58ffefb514e35ef86fb9eb41f9d8d3a17439981657565ff03da0f5b5be17adf94737273df6c11d4b567c255a6ede633a1afb55dca7d04e5b1cda9d0bfb87f56405d5db58b51f798b05d34db6e97da9bcf254ddfa5a0cb47a49ad99e53a08e9516ee4a026e8cc75cee67b26edb33b24a434736cd705b7f64d1b1af85bb2f0137e37eddd7d0914db303edd7832cdc8308b819f7eb41868e6c9a1d68bf1e6ce11e4cc0cdb85f0f367464d3ec40fbf5100bf710026ec6fd7a88a1239b6607daaf875ab887127033eed7430d1dd9343bd07e3dccc23d8c809b71bf1e66e8c8a6d981f6ebe116eee104dc8cfbf5f0a0be8e6c9a1d68bfaeb27057117033eed755868e6c9a1d68bfaeb67057137033eed7d5868e6c9a1d68bfaeb170d7107033eed735868e6c9a1d68bf1e6de11e4dc0cdb85f37b6df3eeb7e5d6be1ae25e066dcaf6b0d1dd9343bd07e3dc1c23d81809b71bf9e60e8c8a6d981f6eb8916ee8904dc8cfbf544434736cd6cfbb5a37709b37eb7f163a7fa64c698fe380b9e0f81c7454c398a837247fd5cd27d53f7185a7d6c68856377ec05fd1cf48569f09b04e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f337e97119faf48b98f4818c586cfa45cdce75775bf40af4bd6df2a4c038fa9f3bb3776bfc9f222c35f0a38c45f319439e1d4bab2d76bb69260ffed866371e3b6dc1d7b1d32dbd28c7f99177f25509f3dc0e3e0fdfc34cf5e8367af450b7cef341edfc9916e344e96abefe31d1ad46de7dd467d50d30f62f75f5fd32243d30f1cfb4e04f5b7a730e094823cf2b87836eca89ee9b66097512753e35228d311eab9cb413d8bc0afac5be677018f4c2d80c7550c06064f60d147a64a329ea9643ca3c978ce20e3194ac6731c19cfb5643c8792f15c44c6f320194f37329e09643c23c9784e25e3b9998ce748329e2bc9782e20e32926e3e947c6338d8ca73719cf5d643c6791f10c23e3398f8ce704329eebc97812643c9790f13c4cc69324e39944c6338a8ca70319cfad643c4793f15c4dc6d39a8c2745c6731f194f4f329e73c878c691f19c4dc6339c8ce724329e1bc9780e23e36947c6731919cf23643c15643ce793f14c21e3b9938ce774329edbc878cac9788e25e3b9868ca73319cf85643c6dc8781e20e3e94ec6534bc65345c6730a19cf20329e73c9788e20e3b9828ca725194f5f329e7bc878fa90f18c21e3e944c6732619cfed643cc793f15c47c6d3968ce762329e3d643c0f91f17425e39948c6534dc6b38f8ca78c8c673019cf51643c5791f1b422e3e94fc6732f194f2f329eb1643c1dc978ee20e339918ce706329e12329e52329e4bc978a693f17421e3994cc65343c6731a19cf10329e63c8780692f11c42c633808ce77e329e1e643ce3c9784690f19c4cc6731319cfe1643cedc9782e27e32922e04904fb7f8b2901ffdf0b36f966d087606b61599f3ca796f2eab8b8b8c3feeb6e6159f7071606d4e97da84b4ae7cbbfd994d6097da5605efc9500c707243c9793f1b427e3399c8ce726329e93c9784690f18c27e3e941c6733f19cf00329e43c8780692f11c43c633848ce734329e1a329ec9643c5dc878a693f15c4ac6534ac65342c6730319cf89643c7790f17424e3194bc6d38b8ce75e329efe643cadc878ae22e3398a8c6730194f1919cf3e329e6a329e89643c5dc9781e22e3d943c67331194f5b329eebc8788e27e3b99d8ce74c329e4e643c63c878fa90f1dc43c6d3978ca72519cf15643c4790f19c4bc633888ce714329e2a329e5a329eee643c0f90f1b421e3b9908ca73319cf35643cc792f19493f1dc46c6733a19cf9d643c53c878ce27e3a920e379848ce732329e76643c8791f1dc48c6731219cf70329eb3c978c691f19c43c6d3938ce73e329e14194f6b329eabc9788e26e3b9958ca70319cf28329e49643c49329e87c9782e21e34990f15c4fc6730219cf79643cc3c878ce22e3b98b8ca73719cf34329e7e643cc5643c1790f15c49c6732419cfcd643ca792f18c24e39940c6d38d8ce741329e8bc8780e25e3b9968ce738329ea1643c6790f18c26e3994ac65349c6d3c2e0c1ffab77c3f6e8bc7c3ba818fe3f49772e6fa7d72565e419b1ba57f19e6153f5dde9a8beef0575530ae677427d85fd3de079cf11cffb068fe9bb04f295a0d90ec3a618b73b62dc6130cafc766014fd7600cf0e473c3b0d1ed37709e4fb8266ef1a36c5b8cd11e3bb06a3cc6f0346d1ef5de079d711cf7683c7f45d02f941a0d956c3a618b73862dc6a30cafc166014fdb602cf56473cdb0c1ed37709e4078366ef1836c5b8d911e33b06a3cc6f0646d1ef1de079c711cf1683c7f45d02f921a0d926c3a618373a62dc6430cafc466014fd3601cf26473c9b0d1ed37709e48782661b0c9b625cef887183c128f3eb8151f4db003c1b1cf16c34784cdf25901f069aad336c8a71ad23c67506a3ccaf0546d16f1df0ac73c4b3dee0317d97407e3868b6c6b029c6d58e18d7188c32bf1a1845bf35c0b3c611cf5a83c7f45d02f92ad06c9561538c2b1d31ae3218657e25308a7eab806795239ed5068fe9bb04f2d5a0d90ac3a618973b625c6130cafc726014fd5600cf0a473c2b0d1ed37709e46b40b3b70d9b627ccb11e3db06a3ccbf058ca2dfdbc0f3b6239ee5068fe9bb04f2a341b365864d312e75c4b8cc6094f9a5c028fa2d039e658e78de32784cdf2590af05cd961836c5b8d811e3128351e61703a3e8b704789638e2596af098be4b203f01347bd3b029c6458e18df3418657e11308a7e6f02cf9b8e78161b3ca6ef12c84f04cdde306c8af175478c6f188c32ff3a308a7e6f00cf1b8e7816193ca6ef12c8df0836e1ed03b6d774be37d85ed5f95e607b45e77b82ed659def01b69774be3bd85ed4f96e607b41e7bb82ed799d4f82ed399def02b66775be1fd89ed1f9fe605ba8f329b02dd0f901609baff317826d9ece5f04b6b93a7f31d8e6e8fc25609badf397826d96ce5f06b6993a7f39d866e8fc15607b5ae7af04db533a7f15d89ed4f9abc1f684ce0f04dbe33a7f0dd81ed3f96bc1f6a8ce5f07b6bb75fe7ab0dda2f33780ed639dbf096c9fe8fccd60fb54e76f05dbb774fe36b07d5be76f07db7774fe0eb07d57e74780ed7b3a3f126cdfd7f95160fb81cedf09b61feafc18b0fd48e7ef02db8f757e2cd87ea2f3e3c0f6539d1f0fb69fe9fc24b0fd5ce72783ed173a3f056cbfd4f9a960fb95cedf03b6cf747e1ad87eadf3f782ed373a7f1fd87eabf3f783ed773aff00d87eaff30f82ed739d7f086c5fe8fcc360fb83ce4f07db973aff08d8fea8f3d2aea976f64f3a5f16c4dbce7e15d44d65e05bfca9327fd6f9d6461959b618ca9ca53b14aa671cea5ba6d20e4bbbac6cd20ebf063669875f059bb4c3af804ddae197c126edf04b609376f845b0493bfc02d8a41d7e1e6cd20e3f073669879f059bb4c3cf802da5f30bc126edf002b0493b3c1f6cd20ecf039bb4c373c126edf01cb0493b3c1b6cd20ecf029bb4c333c126edf00cb0493bfc34d8a41d7e0a6cd20e3f093669879f009bb4c38f834ddae1c7c026edf0a3609376f86eb0493b7c0bd8647ff90a6cd2367f0c36699b3f019bb4cd9f824ddae66f814ddae66f834ddae6ef804ddae6ef824ddae6ef814ddae6ef834ddae61f804ddae61f824ddae61f814ddae61f836d9cceff046cd236ff146cd236ff0c6cd236ff1c6cd236ff026cd236ff126cd236ff0a6cd2367f0636699b7f0d36699b7f0336699b7f0b36699b7f0736699b7f0f36699b3f079bb4cd5f804ddae63f80ed119d97b6ba0dd8e459b19acabfe184e3f0b4005fc2920ae26dfb714a411eeb2e532519cf1c329ed1643c2f91f19c41c633948ce738329e43c978de20e39940c6b3908c671919cf52329ed7c9784e25e3d940c6b39e8ce748329ef7c8787692f15c40c6534cc6338b8ce705329eb3c8788691f19c47c67302194f828c673e19cf12329ec5643caf92f17420e35947c6b3968ce768329e1d643cdbc9785a93f17c45c633838ce71c329ee7c878ce26e3194ec6731219cf61643cedc8782ac878ce27e3994bc6f32619cf22329e97c9784e27e35943c6b39a8ca79c8ce758329e77c978b691f17426e36943c6f314194f2d19cf33643c55643ca790f10c22e339978ce708329e96643c7dc9786e21e3994dc6f322194f27329e33c9785691f1ac24e3f9928ce778329ead643c5bc878da92f1ec21e39948c6b3808ca79a8ce735329e7d643c65643c83c9788e22e36945c6f33119cf4c329ee7c9785690f12c27e339918ce71d329ecd643c25643ca5643cf3c8786ac8785e21e3398d8c670819cf31643c8790f13c4dc6f32c19cfdb643c6f91f19c4cc6b3898c672319cfe1643cedc9787691f1bc4fc65344c093008e006cf2ff966093eff0ec03db173abf076cf20d9f37c0f6b9ce3f02b6872cb616163e61980e367957f60bb0c9fd9987c126ef4c7c0e36396f10ff6a7e6587fdf95bc032e2a7a5851ffd7d6ee1923c6e6f592615c4bbbdd1572ab07ff3aec8603cd83cef93f1ec22e3694fc6733819cf46329e4d643c2793f1bc45c6f33619cfb3643c4f93f11c42c6730c19cf10329ed3c8785e21e3a921e39947c6534ac65342c6b3998ce71d329e13c9789693f1ac20e3799e8c672619cfc7643cadc8788e22e3194cc65346c6b38f8ce735329e6a329e05643c13c978f690f1b425e3d942c6b3958ce778329e2fc9785692f1ac22e339938ca71319cf8b643cb3c9786e21e3e94bc6d3928ce708329e73c9780691f19c42c65345c6f30c194f2d19cf53643c6dc8783a93f16c23e379978ce758329e72329ed5643c6bc8784e27e379998c671119cf9b643c73c978ce27e3a920e36947c6731819cf49643cc3c978ce26e3798e8ce71c329e19643c5f91f1b426e3d94ec6b3838ce768329eb5643cebc8783a90f1bc4ac6b3988c670919cf7c329e0419cf09643ce791f10c23e3398b8ce705329e59643cc5643c1790f1ec24e3798f8ce748329ef5643c1bc8784e25e3799d8c672919cf32329e85643c13c878de20e339948ce738329ea1643c6790f1bc44c6339a8c670e194f25194f0b0bcf3e473cf2ad1859b7ccef6be6be771abe771688efed86efed05e27b9be17b5b81f8de62f8de5220be371bbe371788ef8d86ef8d05e27bbde17b7d81f85e6bf85e5b20be571bbe571788ef9586ef9505e27bb9e17b7981f87ecbf0fd5681f85e6af85e5a20be171bbe171788ef4586ef4505e29bf9fa5b7d274cfa2aefd2bf09f87f0530bee188719fc128f36f00a3d8f07bd4158e78a2aedd2b087c2b2de45e963cf34cc0ff2b81d1554c55188c326f8ba99dc053e98827ea9e4325816fa585bc8b2d7d2a13f07f1c7fd9554c551a8c326f8ba9edc0d3d7114fd4bd92be04be9516f2eeb3bcf39780ffe378ebae62aaafc128f3b698da063c831cf144dde31944e05b6921df0a936fd224e0ff383ea3ab981a6430cabc2da670fcdcc18e78a2ee4d0d26f0adb4906fedca372f13f07f1cbfc9554c0d361865de1653387edc10473c51f7d48610f8565ac8b360f9467b02fe3f14185dc5d4108351e66d3185e3dd0c75c413752f7028816fa5c5309d973e5609f8ff3060741553430d4699b7c5d47ae019e68827ea1ee63002df4a8be13a2fef7024e0ffc381d1554c0d331865de16536b8167b8239ea87bafc3097c2b2daa747e8dfe4dc0ffab80d1554c0d371865de1653ab81a7ca114fd43de32a02df4a8b6a9d976fce25e0ff38fefb70478c5506a3cc0f0746b1ad049e6a473c51f7baab097c2b2de4dbfe2bf46f02fe8fe3b1ba8aa96a8351e66d3185e341d738e289ba475f43e05b69315ae7654c9804fc7f3430ba8aa91a8351e66d3185e3578e76c413f56c6134816fa5857c9b6b99fe4dc0ff6b81d1554c8d361865de16534b81a7d611cf628367b1458b83e55b69217db997e8df04fc7f0230ba8aa95a8351e66d31b518782638e2897a963381c0b7d242beadfda6fe4dc0ff2702a3ab989a6030cabc2da61601cf44473c51cfa026e6c077d4f3945cf88e7a36900bdf51f7b973e13bea9e6d2e7c47dd7fcc85efa87b69b9f01d755f2817bea3ee71e4c277d4f57a2e7c475d7be6c277d475542e7c475d13e4c277d4f96d2e7c479dabe5c277d479876fcf7d7b1eb7ef8379ee50a8edf9c13c861ecc6389bf36f0d706b9f2ed8f25feda2057be0bf5dac0b7e7b96fcfe5faab2888be1e7bcb91efa5866f99c7e72c4b1df95e6cf896797c66b0d891ef45866f99c7fbdf8b1cf92e357ccbfca21cf86e67f86e9743dfed0ddfed2dbe1d6cef6422a87ffd2d0c38a5208f31f0a6032d1cd5b35cad77895ed7d731aed776dfc6dc5f4aa1cc12d0cf75db21eb36db8e7c64c6b8288acf7779027cc877c9944d9e1fbf063669f75f059bf40b78056c726c7a196cf24cea25b0c933ab17c1365ae73f069b3c3bc63efbf2fc7f1bd8aa741efb8a0fd7f92d6093be54d84759fac36d069bf469c4beb1d22f7523d8a46f31f6c994fee1ebc1267dfcb12fa0bca7b1166cf2ae0df64193f7a556836d8fce63df27f90ecd4ab04dd7f91560fb83ce2f07db833a7f0bd87eaff35f81ed773abf086c0fe8fc9b60fbadce2f01dbfd3aff02d87ea3f3cf83ed3e9d7f0e6cf7ea3cbecbf66b9d7f1f6c9fe93cbe43354de77782ed573a8fefeedca3f3dbc1f64b9d7f166c5375fe19b04dd1f98560fb85ce2f00dbcf757e3ed826ebfc3cb0fd4ce7e7826d92cecf01db4f757e36d8c6ebfc2cb0fd44e767826d9ccecf00db589d7f1a6c3fd6f9a7c0f6239dff126c77e9fc62b0b5d0f9a560933123b19f4ab1cebf05b6563a8ffd8fe4fbfe13c17688ce4f005b1b9daf059b7c1b6e34d8643ce81ab02574be1a6c253a5f0536393f1b0e3619ff6418d8e45c6a28d80ed7f9216093f39ec16093f12c07814dbe41da176c47e97c25d8e4dbfa15603b46e7f7814dc61c7b036cf2ddba3d6093b1981f069b7caf7a3ad84ed4f93f804dc66179106c27ebfcefc1768aceff0e6cf20dcf07c056a6f3bf055b079dbf1f6ca7e9fc6fc0266364dd07b63374fe5eb0c9d8c1bf069b7ceff933b075d4f969603b5be77f0536194be41eb0c9f8a0bf045b279d9f0a36f90ef714b09daff3bf009b8cf7f773b0c9378627834dc675fb19d8bae8fc24b02575fea760ebaaf3e3c1d64de77f02b6ee3a3f0e6c3d747e2cd87aeafc8fc1d64be77f04b6de3a2fed8cda9fd57ebe57cfa782f8cecb94bf0f83fa5343d706c2803c719e6b97020ffada1d7bdd93e9f37ad9ef5be8f54a0ced06dfbb62f79db9a6f840afab58af7797e1bb18ca9cad1b07b59c1cf35beae5f618cbe17d2c59b72c7301d8df37d6dd4ed7f70347f5dd65300937ea2065ced34cead8f8039d6f03cbc4c896be3e96580b40439c52901706375a25cbf1bcb7313c1f00cfeed87932d7eb2e6202f7adb8afd7cdfbb866ac9542995da0dffb0ef4c37d5dd62df3e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333fb3e2d9abf3f85c59caed256114db6ee071719f1f9fc3cafad5739df74fadf3bb3b76bff59fefb5d2eb2d37ea5c0c65be86674e7b74be04fe2fdb2d6a5b3a784ed8e0b6147f25501f7c16b4d711cf6e8367b7450bc997c5e63b39d28dc6c972d597453d63df63e8bad7a2a9abfd75b75e5791a129eeaf1f1a3cf86cb404783fd2bf0958cf47500707fb78837121fe705fda0d36c97f088c2eb6331e4ba43d90e7e1f86c5acafcca782e1effb64f96bb6c37de833aa582fde3bb18cafc0edabecf751efb86ec05ddfe61f9bf4c0d3da716fd549d77c45fe7f4f6dd0e9c29f083bedf05d6987cd77b87a64827f123f662c8ff1dfa734839d143b416761caf1cd9cde53e34962b85323b2df54f05f1d67f87c1b3c36056dbe44b88b37fc0f1df559bb43342a30b402329b31b34dae38867b7c1231ce24f9591eddfda2823cb164399ff056d94aa8bb4f3524fecdb82c70057c731f125eb9679dbb9f107c068d651c5c7c063ea7877c7ce9b5ffdbf0e29cbfc62bb1e57ff2f59773bbdac7004c6facb61fdc2d53a883eb6fccff62dab5bbfcbfe657b8c3a0b0bea2c65da95657e559c5daaf3d99ceb1facebb6a873fd9d0e781241fd6b6f3535747cc763cc7bf07f2953fecda62e8eea596e3b76bd6fd4a914ca74847a3a388f69f05de01de0dbc536472de41c6a97a1453194e95096f995b6234a47bc56fd202775495acf07cb2d7591321dcbeaead206ec7132b9dc6eef429dd47a775bea2a65ce2babd3a5b3ce27603be17d93be96ffcbd4507b8063f16c8dbfcee9edbb053853e0077dbf03ac31f9aef72d1039df173f622f867c65595d5929277a88d6c2aef61179e70fd9cde57619cb9542996d96faa78278ebbfd5e0d96a30ab6dd2a5ac2e2f71e4b2dddc16a15139682465f0feb11cdbf1bd3bdb717fb723eea8e3fe6e6034db4d3c7771c9b6c76033efa1dace07a50c9e934999abca32bfaa9d4d58ca9af7865ddcc7c4775003a84760d455268c0107d786ddf0da49da29f1d319ecbb755e74ee6c68570c650695657e1d9e775bef5d9ad777784d21dce6be85ef7e0c29abe3c6b11377ebdf12b07da27f1d5da775b3dd33140edb3dc3e16575ecb8ac707d6ca98b798ddc22d8ff9efad74659bcefd6d07266de1c8752e9fb8951cee607af79627b57a34b793932b508ecf70b3e34d88b82fdc7dc94fd0063cebc8fd2d9580fde47a92dcbfc4a9b649655dbfedf8faad347b6a36887ed09c6e487c098d2f9f26f3675b1d55fe6c59f62fcc8a8839bb62bf3be5236f781f7008f8bb6dd511b5d8ec7d836b1adb77795edf8ffa1a1550e9fd75a8ff9e633f736463e1edfc96adbfd279b16bb2c3cae9ea34469b1cbe23b3e2d7a8cb41d3f6c5ae4b2ef439416ef5b7cc7a8450ddef76c488bf72c3c2eee4535a4c57b16dff169d1b3bca1e71aa8c54e0b8fab7b0f515a88bf6c99df27606e63e4e3f1ddadca769fcca6c50e0b8fabebe6282d76587cc7a745971e788fae212db65b78e2bf3fd7b016db2dbee3d3a2576fbc87d79016ef5a785c3dd38dd2e25d8bef18e36294ed5e8e4d8b6d169e6d39d6629bc5778ce7873d6cf7da6c5a6cb5f038b8efdaa0165b2dbe63d46204de776d488b2d169e2d39d6628bc5777c5a5475b7dd13b669f18e85c7d53de1282ddeb1f88e4f8b11bd94efcd8dd062b38567738eb5d86cf11de335543a2e3635428b4d169e4d39d66293c5777c5a54a7cfb53636428b8d169e8d39d662a3c5777c5a94a78fa91b1aa1c5060bcf861c6bb1c1e23bc6b8485f4fae6f8416eb2d3ceb73acc57a8bef188f23e9b858d7082dd65978d6e5588b7516dff1695193beffb4b6115aacb5f0accdb1166b2dbe63bce7928e8b358dd0628d85674d8eb55863f11d9f165dd3c7d4d58dd062b58567758eb5586df11d9f16a3d2cfc45635428b55169e5539d66295c5778ce79de9f6626523b45869e15999632d565a7cc778de99be7fb1a2115aacb0f0acc8b1162b2cbe636c3bd3e79dcb1ba1c5720bcff21c6bb1dce23bc6f3ceb4166f37428bb72d3c6fe7588bb72dbe633cef4c1f47de6a84166f59785c8d8112a5c55b16df31c645baed5cd6082d96597896e5588b6516df31ded74ab79d4b1ba1c5520b8fabf11aa2b4586af11de3f548fa1edf924668b1c4c2b324c75a2cb1f88ef15951fa1c7c7123b4586ce1599c632d1683ef3db1fbcef4e7161fd217eb7c438b6228734a87ccaff4c58ad251d681fdcab02e6fc65e974cbfb24511757913ea2265ce80bab4099c8c51d4cd515dd331f306d449adf7234b5da5cc391dea74e9a4f309d8261f836e7d2cff97a9c8984f415ef453757e2dfe3aa763f555e04c811ff4fd0ab0c6e4bb0bfa2ed249fc88bd18f2bd3bd4959572a287682dec6a1f795de791dd5c6eb1b15c299479dd52ff54106ffd5f33785e3398d3ef3d409c491cb969bb324caf4768743e682465b0cfde478e78cc3e84c221fe5419d9fead8d32d88752ca5c086d14f62b957a2682fdfb4d3a6acbba20bbac5be6c55f29d8f600a35947151f9f41df4f192b42c69150361917a22baca7a7615375ede5a8aee24bd62df3bd8051c6a9e8997bc66463197b188c8aa78f03cd70ec0d991a3a5ef4019ede0e781cd5337d1caa30ead4cba8532994c1771b2b1cd4b308fccaba65be027cbbd8e6a8851c93cf31b4288632c38df3c7281d651d2a7e7b5aead2cf715d64ddd22ef5cb81ef4ac37777c37722a8bf9d83a0e1fdab1298fb3a6056ebed1fff7acbf1bc4d624afc74873a0d000de2aa13ae4bcef30618da16437e2a9ce74939292bc72f6157b12cdb12d9cde5fa18cb9542997e96faa78278ebdfdfe0e96f30ab6d72179cdb39d81fd231d0cfe090f9eea05dff08edfa817652068f7f3d1c69d7d7e091f91ec023e7381560937305e14fc0ffbbe680db6cf72a2cdc62c371e27a5818bbc7cf983ed7e96130ca7c7760145b5fe0a974a499b9adcf31f4c1e3726ba38c2c5b0c6566c1b1316129abf6bb8e4575f56aa9edb1bd3ba6dbf4d60ef4c2711a03d02730340c402fa9672b073c6d83bab11a274fa99d34e2ce51378cca3c7a14b46203137f8b2cd5680136ccb7b4d882a0fe9094c5609321295b81ad85210b0e8529e565483b1772a11eb2ee6283b30db0c4e91b87f394a9a1d03904785c84b20a1d19d25387ce2d93c64c1985f1d1cae06c4aeca8ffb56ca05cd4ba5c6d07739f48c1bc1983c58efcb784faa6605efca96d53aaf313468cbc7bc0a43ba78e1b357eca6414cadcb1315f14d4df00e66f94e0ae763a0c00ac30360ead8c7a618321ff930dd3367ece6e3866aea94d00fe646a0bba1dea4037b57e19fb76e488b163af9b5a3576ccc84ba78e1f39654ced78dc9a6d0ce5a2b6b4fcbf35d86c4d3c965513365bb8ec21169b6dc25186db804d8e5c87824d78da82ad25e4a5bcb9659c846b4758bfec52ea7f4a9c56bae287047521208763d5aeaafd577d3e569d06a9a18ed5d0c66a73aaa18bd51d433534b1fa8a9d1a7a580d35ac86163e21c80c1dac860a3e39c80c05acbe7651166486f63d2dc80cdd7b4690199af72ce0fb36309f1d644ebbd4d0ba9d82ccd0b9ead6a57a755d7de64dbd5baf4edfd56d0175caab2ef1d4e9a73aed549717eaf685ba95a54ee9d4e9b23a1554a76fea72a4bfd67a40982e0cd34561ba384c9784e9d2305d16a6cbc3744598ae0cd35561ba3a4c03c3744d98ae0dd37561ba3e4c3784e9c630dd14648677be39c80cbfae867fbe35c80c0d7d5b901936faf62033a4f41d4166b8e911416628ea91416698ea51416608eb3b83ccf0d66382cc30b9770799a176c70599e17ad570d86a986c357cb61ae6570d09ac861456430dab6189d510c66a08643534f2fd4166c8653564f3434166d8e7e9617a244c8f86e9b1303d1ea627c2f46490191e5c0d1b3e23c80c33ae861f9f1d64862b9f1b64863757c39eabe1d0d530e96af87435acba1ae65d0dffae86857f314c2f85e9e520f348423d8a518f28d4ed7ff5184cdda27e33c8dc3a5f12641e71ab47feaa0b84ea12a2bac8ac08325da8549732d5c54e7539545d30559754d545577559565db8559776d5c55fbdf2a05e0151afc4a85784d42b53ea1532f54a9d7ac550bd26aa5ebb54af11abd7aa770799dbe27b83cca352753b5c3d1a50b7ccd5edfb4fc3f4ad201393df09d377c3f4bd307d3f4c3f08d30f83ccb0c66ab863355cb21a5a590dc3ac866c564339aba1a0d5b0d19f0599a1a7d5d0d5bf0d324362ff3e4c9f87e98b2033bcf69761fa6398be0ad39fc2f4e730fd254c7f0dd3dfc2f42f61fad730fd5b98fe1ea67f84e99f41dd30dbd8909ca05b1f7d05138c983265d4b80953caa6d4968d9b3a76ca980963ef2b9b3666cae8b2da7b464daa195b3b0d17feb65e58c6081f3069d288fbcac68caf1e756f59edd42965b5356555b553c757d73b88ff452f74d2fe1e475457473bfbcf6f42fa7f9be8f450dd2ecae8eb57345cb792964d10e488a62cd4a365d32a34491fc1e452f7c6cc7970d9e4b1b553cacacbc6877fc3036fedb451d59dcbf07f934391274f299b3c65c4a4296535936ac79575e98ceb7db86d132af15f6dddc09c7942d3c4e9a8bfb3d4a410fbe5a94d50e03f4e6d1a69ebb26f40dab6ac694ecbca9a50c3b39ab2d0954d24bca92c5296c953aba64c1a31724af4c2b77e9385ef684a35c737b19a27776882b3d39bb2d0800e4d23bca329ce6666e12cf86f5a25cf6384550600", + "bytecode": "0x1f8b08000000000000ffed9d779815c5baee7b604064390398b77130a1a2382c3233c0c29c30a38888300c232830443163961ccc19094ace02028a801876383b4777d2ed76a773cedefbb97f9c7bce0ddedbb5567d67de29aa875963d7e25db3aa9fa766557f53dddfafdefeba3a5577fd330882a22033b50cd319c18193fc3fa57fcbbfd9d435c67595bbe42cca13ce1679c2d9324f388bf384b3559e70b6ce13cec3f284b34d9e701e1e23a7626b11d49fe2e66deb40d7b8191379a6e91179a069499e695a9a079ab60bf2a38d6a9f279c1df284f3c83ce13c2a4f388fce13ce63f284f3d83ce13c2e4f388fcf13ce6fe509e70979c279629e709e94279c27e709e72979c2796a9e7096e50967c73ce13c2d4f384fcf13ce33f284f3cc3ce13c2b46cecec0d949ff9ead7fcfd1bfe7ea5f297b9efe3d5fff76d1752cd6f31728ae30a9873449e37fddc2d43d4c3dc2d4d3f85faf30f50e539f30f5d5ff2bd3ffab08536598fa85a97f9806680d0686e9c2305d14a68bc37449982e0dd36561ba3c4c5784e9ca305d15a6abc334284cd784e9da305d17a6ebc37443986e0cd34d611a1ca69bc3744b988684e9d6300d35586e0bd3b030dd1ea6e161ba234c23c234324c55611a15a6ea308d0e534d98ee0cd398308d0dd35d61ba3b4ce3c2343e4c13c2541ba689619a14a6c9619a12a6a9619a16a67bc2343d4cf786e9be30dd6f68f640981e0cd343617ad8e09c11a647c2f468981e0bd3e3617a224c4f86e9a9303d1da699619a15a6d9619a13a6b9619a17a6f9615a10a685615a14a667c2f46c989e0bd3f3617a214c2f86e9a530bd1ca657c2f46a985e0bd3eb617a43b3c88eb0384c6f8669499896866959989687e9ad30bd1da615615a19a655615a1da635615a1ba675615a1fa60d61da18a64d61da1ca62d617a274c5bc3b42d4cdbc3f46e9876846967987685e9bd30bd1fa6dd61fa204c7bc2b4374cfbc2f46198f687e9a3307d1ca64fc2f46998be1da6ef84e9bb61fa5e98fe254cdf3734ff41987e18a61f85e9c7daf613fdfb535d56eedffd2c4c3fd7f95fe8df5feadf5fe9dfcf8c657e1da6df18b6df86e97786edf761fa5ce7bfd0bf7fd0bf5feadf3feadfaff4ef9ff4ef9ff5ef5ff4ef5ff5efdff4efbfeadf7fd3bfffae7fffae7fffa17fff19a62d1d33f93641dd940a626aa3bad7a49ffd88f89d82fa93d2a2a5fe9ffc96697bb19e975fd1ae959e6f65d85bebf9d6c67adae8f93686bd839eef60d88fd2f34719f663f4fc3186fd383d7f9c613f43cf9f01f64400f786b55dd95a6a5311d8245e5b80ad95b6b5045b6b591dd80ed3b6566093eddb1a6c876bdb61606bab6d6dc096d0b6c345cb301da16da920ae58291fa9d65b12f77af5f3b2d2f87947a9f5b673c4db3e7eded16abd1d1cf0aaf83852afab3dc4cd51dad6016c476bdb91603b46db8e02dbb1da7634d88ed3b663c076bcb61d0bb66f69db71603b41db8e07db89daf62db09da46d2780ed646d3b116ca768db49603b55db4e065b99b69d0236dde406a782ed346d2b03dbe9dad6116c6768db69603b53db4e07db59da7606d8a4fd3d136c72be7896b6a9b6e3f0225846dba5dd4a2f236d36d8ce91f61a6ce74a5b0db6ced24e83ed3cf02db6f3a1ad115b176d93764bfdafafcea782b8f693648d5a6f45dceb0dd7acd6db2ffef5a69f39f60feab44e819f0ad06a80cec7d8afa92bfa2ed249fc88bd18f257425929277ac8b147d8d5b1a052e70734b05c5f63b952285369a97f2a88b7fefd0c9e7e06732bc8bb89d96edd7ccc367aca3a6687405933f6e43ca839c6ec20e07010b3bd7ccc367aca3a666ba0ac197b722edc1c63f636e07010b3556e623659ee633673df2c08ecb127d743cd3166c70247fc31dbc3c76ce3a7ac63f631286bc69e5c1337c7989d0e1cf1c76caf2a7f6ed0e829eb985d0865cdd893fb33cd31669f040e07315be3dbd9464f59c7ec1b50d68c3db957d81c63f659e0883f66fb388ad96e3e6683cc33d020b0c79edcb76e8e31bb0438e28fd951fefe6ce3a7ac6376279435634f9ea134c798dda0f3ea39c34ff4738693c0f6536d3b1978e38fedea1e8e623be9633bd3372408ec312acff39a636c7fa0f32a8e7f01fd11c4f64b6deb08b65f69db6960fb4cdb4e877a39d807aafc3ed0e829eb7de03750d68c6579b6dc1cf7811f01878398adf631dbe829eb98fd1b9435634ffa3934c798fd3d703888d91a1fb38d9eb28ed9ff84b266ec9dadf3cd3166a5afa93a5ff8429f2f9c0bb63f685b67b07da96de781ed8fda763ed8bed2b62e60fb93b65d00b63f6b5b39d8fea26d5dc1f6576d4b82ed6fdad60d6cffaa6dddc1f66fdad6036cffae6d3dc1f6776deb05b67f685b6fb0fd53dbfa689beaa7277dafe4bcb50df0a78278b7adf4bb9475cb7cd71cf86e67f86e9743df1d0cdf1d2cbe930e7c27c0874c45c67c0af249b73ce5a5c083bebac7efab9baa7bb7a0f175ef0e3c3d1cd43d013e1ac3d303787ac6cf93eeffdb2bfef5a6b7713743d304f8ea06f5eaeda05e45e04bd62df3e2af146cd8b6f6b630f6899f315904be64dd32df0718c5866dbdbc7325fb8f3a1e762aaae375b02fa5cf89c49f7cb74c38ba835dca5cd1b18eadb3662b81ffe371afa761731497e9b8105fb26e99177f25509f9eb9674c3696b187c1e8aa8d28025fb26eefbb6e3b481e8fe30eae75ac6d9af8aec881ef3e86efee866f6c3b656ae8d8d6079863bfe6d4c7b6caf8d75b8ed727726d287ef0fc01afe1e2aa13fa966b43f123f662c85f53545756ca891ed20e0bbb8a65d996c86e2ed7db58ae14ca5458ea9f0ae2ad7fa5c1536930ab6d72111c0b1dec0fe918a8303864be3b685719a15d05682765ce06ed5cb5677d0d1e99ef093cd28ef5021e57d744513cb9b81e3b986f3c87c5eb67f93f9e07b8da5e5d0d4699b76daf3ec0683b5771703dd3e0b94a0f60145b5fe0e9e648b3a8edda8dc4b7835849b747e243cecd65ffed097629d347bf50a7dacabba0ad741123188f3235f69a37feed944c5f83f7c88207b79d83ebaaae8ee2b11cefdf7c1dc41b6b66bbd4c3d02aea1e8fabb6bc9bc123f3e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f333e4fc27e5b52ae2709a3d9ffcdd57dfef4f70ff5ba64fdeab9ceff76da1f2c598efd63a41fc4b9469d8ba14c498bbab2ff0ffa8399cfa9b08f644fb7daa5b725f6c74cc1bcf8c3be56b82d19fa3b95c5e63b39cad5f336d5c75a7d47d3ecfbd9d3a2a98bfecfa86991a129f6c73fcfe051715ad9b28ecdc5b3bf6c9f45a256928ff3d95e69608ff5f8b74bb2de33eb1641fdf6038f33aefaef485b2dcfcb2b0cdfc550e6c41675db46fa56c918c3dd8ce5b0df8fac5b963917ec95c6badbeb6585a395b1fe5eb0ac943905dad4bd2dea3473d05626b3edbb8ecfcde33f0e679ee377cb82a72bf0b868671c9d6f94e33e10f7737cb37f9aed3c46ca60df3e07fd2a1becef24fe3cb367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed933f3332b1ef3592bbe5fdb9d8431477d1fd2cf33e45b65b2fef4f7825bd4f975fd1c4e9e397536ea8cef8efeb3455dd92d3a5f121cd8df216a5bbafa3e45d4b6147ff8ed197c16e4e2b96e11f89275272d5a48be2c36df99e7f82ec68690e7f8dd0c5dbb5b3475b5bfe23356d414f7d71e060f3e1b8dfab64fd2b0b9ec3b141517e20ff7a524d8248fef47bbd8ce782c31fbf5883f7c7efd5dad6dfbc0d5b64f96bb6c37f0bb29a9e0c0f8c6efa9fc10dabe1feb3cf6e1c0be235f58fe2f5343cfa9453f556707dfd72c2f8275c9f6b57ddb7320b0c6e4bb2baeab48a7818606c590ffbc455d59292765456b6157fb887c0306d9cde57a18cb954299fe96faa78278eb6f7e6b7580c1acb6c9cf20cebe80e3bfab36a97f8446e7824652c6f1371badfd2bcd7e85d88eb636cac8b2f82dbabf421b15d57fd4760c707d1c9375db8e63e671a131fd3c0bbd9fd67f417b11773fadff8218c27e5a81b1feceb07ee16a1d441f5ba4ccff35d66f9e93cb32d80fecbff713f89e4b52e7b339273f54d757b673725c2eaaee8a19bf83968a9119630259f03c41cab4d55acb36ab8ce0ee6359b6246259d1cafc56584970a07e6ebeb396d9e707187591b8c66f904b99a3a02e6ece5b32e780aebe2997823aa97cd2525729733cec6b27e87c02b613eeb7e758fe2f5343e7803886fb85f1d739bd7d2f02ce14f841df17036b4cbebba26f3907143f622f86fcd92debca4a39d143b41676b58fc87914b29bcb5518cb9542998196faa78278eb7fa1c173a1c1acb6c9c91067e7403f74576df5c0088d3a83465206ef29dabe036abbd7e1eafd8da873297c7fc93cbfc2e3a49bf326fb79ac795fcd768ed0d9e0c773845ed0ce262c65cdfb8572bc8cb3df30be2bd10bfce2bb12aebedddc17744bc13c9e171c4adf2ebe63abfc458d99d03707bea3c64cc885ef0e86ef0e39f4ed35f79a3369ee600c82f4fb67f8cd523535745e8ae312c8722d80d1c5580e89a0feb7c70fc688e33bc8722d81d1c5f121db6f9ff7024659ae18185dbc5b8ae36f348611bf318cc7796174f0add8ae4dfd562cded36b0d8c4cef6ce2b3a9c380d1c5797153dfd5c3f3f936f0eb6a5ca26e5930268151963b1c185ddc1bc76b99c630e275912cd716185d3cc3ca767c27fcf63cde5b76c9d8d0b1dd715f9464b6f75e2addf23478ae81be1d8c6b98d602ef331e4c8b7e6e791a3cf741df0eeefba5b5c071060fa6053e1b7431ee6122a8ff1cee603cf8fc52963b1218538e180764c19802c6ffbe570c8c031d31a6b2601c088c623f1a181ddc7f4d330ecc8211ef53ca72c700e3458e182fcc82f1226094e58e054617f75213e0b7318c1703a32c771c305ee288f1e22c182f014659ee7860bcd411e32559305e0a8cb2dcb780f132478c9766c1781930ca722700e3e58e182fcb82f1726094e54e04c62b1c315e9e05e315c028cb9d048c573a62bc220bc62b8151963b1918af72c47865168c5701a32c770a305eed88f1aa2c18af064659ee54601ce488f1ea2c180701a32c57068cd738621c9405e335c028cb7504c66b1d315e9305e3b5c028cb9d068cd73962bc360bc6eb8051963b1d18af77c4785d168cd703a32c770630dee088f1fa2c186f004659ee4c60bcd111e30d5930de088cb2dc59c0789323c61bb360bc09186fb4300e76c47853168c838151963b0f186f8e9f317d2d3d380bc69b81e796f879d29add9c05cf2d6e79d2dfd5bbd9e2ebd6f87da5b7c590a0f175bf157886c6cf93de16b766c1230ca5b01c6a765bfc8c69cd8666c1781bf00c8b9f27add96d59f00c03cd6eb368767bfc8c69cd8665c1783bf00c8f9f27add9ed59f00c07cd6eb7687647fc8c69cd8667c17807f08c889f27add91d59f08c08ea34bbc3a2d9c8f819d39a8dc8827124f054c5cf93d66c64163c55a0d9488b66a3e2674c6b569505e328e0a98e9f27add9a82c78aa41b35116cd46c7cf98d6ac3a0bc6d1c053133f4f5ab3d159f0d48066a32d9add193f635ab39a2c18ef049e31f1f3a435bb330b9e31a0d99d16cdc6c6cf98d66c4c168c6381e7aef879d29a8dcd82e72ed06cac45b3bb1d31de9505e3dd169eb8bf937d97c5d77847751f1734beeec2500acb613f89098e18c767c13801186539ec2751eb887142168cb5c028cb251c3336d44fa2167c4f8cdf77ba5daa0d1aafcf44b73c0df69340df931c69313168bc1693dcf234d84f027d4f76a4c5a4a0f15a4c069e290eb448808fc6f00843292c87fd24a63a629c9205e3546094e5b09fc434478c53b3609c068cb21cf693b8c711e3b42c18ef0146590efb494c77c4784f168cd3815196c37e12f73a629c9e05e3bdc028cb613f89fb1c31de9b05e37dc028cb613f89fb1d31de9705e3fdc028cb613f89071c31de9f05e303c028cb613f89071d313e9005e383c028cb613f89871c313e9805e343c028cb613f89871d313e9405e3c3c028cb613f89198e181fce82710630ca72d84fe211478c33b2607c04186539ec27f1a823c647b2607c141865b9bb1d333674fdf26833f71d75add2dc7d475d973477df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f771cee4fb3107be13e043a622633e0579612885e5eef68ccd9a1179cae2e329c7baa3afc709eafeb885a7c851ddd1d713047517867c637c2c0f18711ff73a369dd1b18ec9a6322a9e271df13c9105cf93c0f394239e27b3e0790a789e8e9f271d534f65c1230ca5b0dcdd79c0f8581e307a1dbd8e4c8c5ec7c2d1d1337a46cfe8190f05633eb4e19e312fe231d95446c533337e9eb4664f67c133133493e56e71cb986c2aa3e299153f4f5ab39959f0cc02cd665a3473c0986c2aa3e2991d3f4f5ab35959f0cc06cd66593473c0986c2aa3e299133f4f5ab3d959f0cc01cd665b3473c0986c2aa3e2991b3f4f5ab33959f0cc05cde6583473c0986c2aa3e299173f4f5ab3b959f0cc03cde65a3473c0986c2aa3e2991f3f4f5ab37959f0cc07cde6593473c0986c2aa3e259103f4f5ab3f959f02c00cde65b3473c0986c2aa3e259183f4f5ab30559f02c04cd1658346365bc3b0f181fcb0346c73a269bcaa8781639e2599805cf22e079c611cfa22c789e019e67e3e749c7d43359f00843292c77771e303e96078c5e47af2313a3d7b17074f48c9ed13366c7f8781e30fa6ded1959191d5c5f35f80ecd33cddc77d43b34cddd77d43b34cdddb78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c33f97e2e7edfc96cbf31f31cf0b8f8e68da37a96abf53eafd7f5758cfa29ad5e30b47ac6d0aa14ca3c0ffabde040bf22f02beb9679f1972d7327026647be93aa7d391cea2f3e1e33f450fe5f7454f7a8b6fec566ee3baaad6feebea3dafae6eedbc7b98ff342f0ede3dcc77921f8f671eee39cc537e65b0575e7edf2fd53b58e9774be58cf4bf9c7c12e65a61c96f96d1ff87dc8856fbf0ff9634521f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7395f9c97c2ff2b73c013183c41033c0bc978a691f1cc21e31943c6338c8ce75a329e8bc8781e24e3e94ec633918c671419cfcd643c5792f15c40c6d39f8c673a194f1f329eb9643c7791f13c45c6339c8ce77a329e4bc8781e26e34992f14c26e3194dc6732b19cfd5643c29329efbc8787a91f19c43c6339e8c671e19cfd9643c23c8789e26e3b9918ca7948ca71d19cf65643c4f90f19c4fc65341c6f30819cf02329ea9643c7792f1dc46c6534ec6730d194f17329e0bc9781e20e3e941c6339f8ca7968c6726194f1519cf60329e73c978ae20e36949c6d38f8c671119cf3d643c7dc978c692f17426e3b99d8ce73a329e8bc9781e22e3e946c633898c6716194f3519cf10329eabc8780690f1dc4bc6d39b8c671c194f27329e3bc8786e20e3c9c5f74cb3e139828ca7848ce752329e47c9786690f17425e39942c6339b8ca7868c672819cf20329e81643cf793f1f424e39940c633928ce726329e27c978da93f17420e3b99c8ca7888027111c38864902feff1cd85a18cbaacfbeceed58f7ff97b5bd052cf38aceb7b4acfb65b0c9b7645fb12c8b3abd0c7549e97cf9379bd23aa1af14cc8bbf12e0788584e772329e0e643cedc9789e24e3b9898c672419cf04329e9e643cf793f10c24e31944c633948ca7868c673619cf14329eae643c33c8781e25e3b9948ca7848ce708329ee7c8786e20e3b9838ca71319cf38329ede643cf792f10c20e3b98a8c6708194f3519cf2c329e49643cddc8781e22e3b9988ce73a329edbc9783a93f18c25e3e94bc6730f19cf22329e7e643c2dc978ae20e339978c6730194f1519cf4c329e5a329ef9643c3dc8781e20e3b9908ca70b19cf35643ce5643cb791f1dc49c633958c670119cf23643c15643ce793f13c41c67319194f3b329e52329e1bc9789e26e31941c6733619cf3c329ef1643ce790f1f422e3b98f8c2745c6733519cfad643ca3c9782693f124c9781e26e3b9848ce77a329ee1643c4f91f1dc45c633978ca70f19cf74329efe643c1790f15c49c6733319cf28329e89643cddc9781e24e3b9888ce75a329e61643c63c878e690f14c23e35948c65369e179ce118fbcef2eeb96f9e7487c3bd80ee56abdaf3aaad36b7a5dadf47a855ffc154399196d33bfeafd705c56b8ccef13e0bb39af8146af39aa8b6c8f2263fba0ef971cf99677b464dd32ff5233f7ddcef0ddae407c77307c772810df3ece7d9c17826f1fe73ece0bc1b78f731fe74cbe1d5c1b24f13b69321519f329c8e3f5828befcb39aa67bdebc4af63d44f69f5baa195796d550a655e05fd5e77a09fedda53e6c55fb6cc9d0898312eca8278e3e28df8eb9454edd6e1a0eb1b86be58afc58e348d3a862c6ee6bea38e21cddd77d431a4b9fbf671eee3bc107cfb38f7715e08be7d9cfb3867f2fda6cec778dd588e3ed4f345b91e7813fc2ed5f9a218fdaa752dd1eb2ad6eb168ea5609732ff0b9e6bfa7ddeeff371f9f6c7361fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be99e3dccc4b7ff1b381cd557ffea858ccc5bb0487d277542c3677df51b1d8dc7dfb38f771cee47b9903df09f02153437dfc9601cf12073c8eea997eb6b1dca8d373469d4aa10c1ee3973ba86711f89575cbfc72e091a912785cc44163b639f22c24e39946c633878c670c19cf30329e6bc9782e22e379908ca73b19cf44329e51643c3793f15c49c67301194f7f329ee9643c7dc878e692f1dc45c6f31419cf70329eebc9782e21e379988c2749c633998c673419cfad643c5793f1a4c878ee23e3e945c6730e19cf78329e79643c23c8789e26e3b9918ca7948ca71d19cf65643c4f90f19c4fc65341c6f30819cf02329ea9643c7792f1dc46c6534ec6b3988ce71a329e2e643c1792f13c40c6d3838c673e194f2d19cf4c329e2a329ec1643ce792f15c41c6d3928ca71f19cf22329e7bc878fa92f18c25e3e94cc6733b19cf75643c1793f13c44c6d38d8c671219cf2c329e6a329e21643caf93f15c45c633808ce75e329ede643ce3c8783a91f1dc41c6730319cf11643c25643c9792f13c4ac633838ca72b19cf14329ed9643c35643c43c9780691f10c24e3b99f8ca72719cf04329e91643c3791f13c49c6d39e8ca70319cfe5643c45043c89e0c077ff13f0ffd7c126efa83f07b6b7747e09d85a587cb4d4f9e5602bd67959c761617ab1e381eb469d5cbd978fbe52302ffe4a80e32d129ecbc9783a90f1b427e379928ce726329e91643c13c8787a92f1dc4fc633908c671019cf50329e1a329ed9643c53c878ba92f1cc20e379948ce752329e12329e23c8786e20e3b9838ca71319cf38329ede643cf792f10c20e3b98a8ce775329e21643cd5643cb3c8782691f17423e379888ce762329eebc8786e27e3e94cc633968ca72f19cf3d643c8bc878fa91f1b424e3b9828ce75c329ec1643c55643c33c9786ac978e693f1f420e379808ce742329e2e643cd790f12c26e32927e3b98d8ce74e329ea9643c0bc8781e21e3a920e3399f8ce709329ecbc878da91f19492f1dc48c6f33419cf08329e79643ce3c978ce21e3e945c6731f194f8a8ce76a329e5bc9784693f14c26e34992f13c4cc6730919cff5643cc3c9789e22e3b98b8c672e194f1f329ee9643cfdc9782e20e3b9928ce766329e51643c13c978ba93f13c48c6731119cfb5643cc3c878c690f1cc21e39946c6b3908ca732373c49f56ebbf4b50e800ba714e49703cf6207fa38aa67397ed7e0eb18d7abb47adbd0ea7543ab5228b30cf47bdb817e45e057d62df3e22f1f9915cfa33a6ffb0ec4a3248c625bec9627bddf3e1ad49f1ada6fdf061e17ed9aa37aa6f7af15469d1eb5e82e6530565738a8a76ddf91f915b01df28d59f13ca1f3c29a80724f90308a6db95b9ef4fef544507f6a68ff5a013c2eda1f47f54cef5f2b8d3a3d61d15dca60acae74504fdbbe23f32b613be41bb3e27952e7853501e59e246114dbdb6e79ba27a0ce3235b47fad041e17ed8fa37aa6f7af55469d9eb4e82e6530565739a8a76ddf91f955b01d3cb367b6312b1e79b623ac0928f71409a3d85638e5e95e9e803acbd4503bb60a785cb4f38e744fb763ab8d3a3d65d15dca60acae76504fdbbe23f3ab2dbecb8278b558d3082dd65878d6e4580bf1972df3b23c64f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e6266d059f1c8b72b853501e59e266114db4ab73ce9f7829e0eea4f45c67c0af26b806795037d1cd533dd877cad51a7a72dba4b19dcbfd63aa8a76ddf91f9b5b01db2615e9d87cc5ee7a6312b9e993a2fac0928379384516cabdcf2a4dbb19941fda9a1766c2df0b868e71dd533dd8ead33ea34d3a2bb94c1fd6b9d837adaf61d995f07dbc1337b661bb3e299a5f3c29a8072b34818c5b6c6294f32fd7ee3aca0fed4503bb60e785cb4f38e744fb763eb8d3acdb2e82e653056d73ba8a76ddf91f9f5b01db2615e9d87cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7b97074563cb3755e5813506e3609a3d8d63ae5e9967eee303ba83f35f4dc613df0b8782ee348f7f473870d469d665b749732b87f6d70504fdbbe23f31b603b3477e6d579c8ec632337cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5cc101b8a678ece0b6b02cacd216114db3ab73ce9ef1ecc09ea4f0df5dbd9003ceb1de8e3a89ee97e3b1b8d3acdb1e82e6570ffdae8a09eb67d47e637c276f0cc9ed9c6ac78e6eabcb026a0dc5c1246b1ad77cb936ec7e606f5a786dab18dc0e3a29d7754cf743bb6c9a8d35c8bee5206637593837adaf61d99df04dbc1337b661bb3e299a7f3c29a8072f34818c5b6c12d4fba1d9b17d49f1a6ac736018f8b76de513dd3edd866a34ef32cba4b198cd5cd0eea69db77647e336c07cfec996dcc8a67bece0b6b02cacd276114db46b73cc904d459a686dab1cdc0e3a29d7754cf743bb6c5a8d37c8bee520663758b837adaf61d99df02db21df9815cf029d17d604945b40c228b64d6e79d2fbd782a0fed4d0feb505785cb43f8eea99debfde31eab4c0a2bb94c1587dc7413d6dfb8eccbf03db21df9815cf429d17d604945b48c228b6cd6e79d2fbd7c2a0fed4d0fef50ef0b8687f1cd533bd7f6d35eab4d0a2bb94c158ddeaa09eb67d47e6b7c276c83766c5b348e7853501e51691308a0d8f178b1cf194183c25162d0e956fa54585ce1fa17f13f0ff0a6074d51e2e3218651e635c6c2539d0ac9dc1d3ced0ec50fa565a54425e4db8bd2a8191617bb5cb81661d0c9e0e866687d2b7d2a29fceb7d7bfb8bdfa0123c3f6ea003c0edae7ee0983474d0d9d6f6c75ac8fa37aa6cf37b60576ddf1382465f0d8bdcd413d6de71232bf0db68367f6cc3666c53358e7853501e50693308a0daf53b6c7cfd33d61f0a8a9a1766cbb637d1cd533dd8ebd1bd875df0eba4b198cd5771dd4b308fccaba65fe5dd80ed930afce4366af73d39815cf109d17d604941b42c228b66dc0b3237e9eee0983474d0db5633b1cebe3a89ee9766c6760d77d07e82e6570ffdae9a09e45e057d62df33b613b64c3bc3a0f99bdce4d63563c43755e5813506e2809a3d8de059e5db1f364c603421e3535d48eed72ac8f9b7a66dab1f702bbeebb40772983fbd77b0eea59047e65dd32ff1e6c07cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccdccc8a6798ce0b6b02ca0d236114db4ee0793f769ecc7307e4515343cf1dde77ac8f9b7a669e3bec0eecbabf0fba4b198cd5dd0eea59047e65dd32bf1bb68367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b666e66c5335ce7853501e58693308aed3de0f9207e9eee0983474d0d3d77f8c0b13e8eea997eeeb027b0ebfe01e82e653056f738a86711f89575cbfc1ed80e7b3cb367b6302b9e113a2fac0928378284516cbb81676fec3c99e7a7c8a3a686dab1bd8ef57153cf4c3bb62fb0ebbe1774973218abfb1cd4b308fccaba657e1f6c876c9857e721b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec752e1c9d154f95ce0b6b02ca5591308a6d0ff07c183b4fb7f284c1a3a622633e05f90f1debe3a69e99e70efb03bbee1f82ee5206f7affd0eea59047e65dd32bf1fb64373675e9d87cc3e3672c3ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc0cb1a178aa755e581350ae9a84516cfb80e7a3f879ba270c1e351519f329c87fe4581f47f54cf7dbf938b0ebfe11e82e6570fffad8413d8bc0afac5be63f86ede0993db38d59f1d4e8bcb026a05c0d09a3d8f603cf27f1f32413068f9a1a6ac73e71ac8fa37aa6dbb14f03bbee9f80ee520663f55307f52c02bfb26e99ff14b643be312b9e313a2fac0928378684516c1f038f83b84bf394183c32ff09816fa545adce1fa17f717bd50223c3f62ac98166ed0c9e76866687d2b7d26222e4d584db6b2230326caf7639d0ac83c1d3c1d0ec50fa565a4cd2f9f6fa17b7d7246064d85e1d72a0d9a16c0f0fe5be7d28e3d46b7ee8342f3a849a171d42cd8bbce6549a3b38be24f1581600034e29c87f0a3cdf899f277d5feed32c78be033cdf8e9fa7aba37a96abf57e17d8e35aafd2ea7b86569f1a5a95421964f89e03fd8ac0afac5be6c59f67f6cc51cc786e2bac0928f70909a3d8be0d3c2eda0d55f7f3f5ba64fdadc2f4d9d1757e5d3c2fc17bc5adf47a8543fc154399496575657fa7d94ae0ffb2dd547df61b3647ef3077b53db79379f15712e4ecde6d83f792510b17cf9bb23deeefb7f07c1d1f4f39eee7e86b9fa3ba67f3ec6f9f8527c6ba778d7aeeb937febaa7db8f2e7a5db27eb58ffe8fa39d6ade1df73d693fba18752e863283caeacafe07b41fb6b6c2f5be29e7e4e6bed922a86bcf84ab4cdbcd67425f6bbb94fb08ca639b53a17f71ffac80baba6a17a3ee3161bb68b6dd2eb5379f4b9abe4b41978f4835b33da7401d2b2ddc9504dc188fb9dccf64ddb6676495868e6c9ae1b6fec8a2633f0b773f026ec6fdba9fa1239b6607dbaf075bb807137033eed7830d1dd9343bd87e3dc4c23d84809b71bf1e62e8c8a6d9c1f6eba116eea104dc8cfbf550434736cd0eb65f0fb3700f23e066dcaf87193ab26976b0fd7ab8857b380137e37e3ddcd0914db383edd7232cdc2308b819f7eb11417d1dd9343bd87e5d65e1ae22e066dcafab0c1dd9343bd87e5d6de1ae26e066dcafab0d1dd9343bd87e5d63e1ae21e066dcaf6b0c1dd9343bd87e3dc6c23d86809b71bf6e6cbf7dd6fdbad6c25d4bc0cdb85fd71a3ab26976b0fd7aa2857b220137e37e3dd1d0914db383edd7932cdc9308b819f7eb49868e6c9ad9f66b47ef1266fd6ee3c74ef5c98c31fd71163c1f028f8b98721407e58efab9a4fba6ee35b4fad8d00ac7eed807fa39e80bd3e03709c49f67f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b667e66fc2e233e5f91721f91308a0d9f49b9b8cfafea7e815e97acbf5598061d5be7775fec7e93e54586bf147088bf622873c2a97565afd76c25c181db0dc7e2c66db927f63a64b6a519ff322ffe4aa03e7b81c7c1fbf9699e7d06cf3e8b16f8de693cbe93a3dc689c2c57dfdf393ca8dbce7b8cfaa0a61fc4eebfbea64586a61f38f69d08ea6f4f61c0290579e471f16cd8513dd36dc16ea34ea6c6a550a613d473b7837a16815f59b7ccef061e995a008fab180c0c9ec0a28f4c95643cd3c878c690f19c41c6338c8ce778329e6bc9780e27e3b9888ce741329eee643c13c9784691f19c4ac6733319cf51643c5792f15c40c6534cc6d39f8c673a194f1f329ebbc878ce22e3194ec6731e19cf09643cd793f124c8782e21e379988c2749c633998c6734194f47329e5bc9788e21e3b99a8ca735194f8a8ce73e329e5e643ce790f18c27e3399b8c670419cf49643c3792f19492f1b423e3b98c8ce711329e0a329ef3c978a692f1dc49c6733a19cf6d643ce5643cc791f15c43c6d3858ce742329e36643c0f90f1f420e3a925e3a922e339858c673019cfb9643c4792f15c41c6d3928ca71f19cf3d643c7dc978c692f17426e339938ce776329e6f91f15c47c6d3968ce762329ebd643c0f91f17423e39944c6534dc6b39f8ca78c8c670819cfd1643c5791f1b422e31940c6732f194f6f329e71643c9dc878ee20e339918ce706329e23c8784ac8782e25e39941c6d3958c670a194f0d19cf69643c43c9788e25e31944c6731819cf40329efbc9787a92f14c20e31949c6733219cf4d643cedc9783a90f15c4ec65344c093080efc165302febf0f6cf2cda00fc1d6c2b23e794e2de5d5717149c703d7ddc2b2ee0f2c0ca8d3fb509794ce977fb329ad13fa4ac1bcf82b018e0f48782e27e3e940c6d39e8ce726329e93c9784692f14c20e3e949c6733f19cf40329ec3c8780691f11c4bc633948ce734329e1a329e29643c5dc9786690f15c4ac65342c6730419cf0d643c2792f1dc41c6d3898c671c194f6f329e7bc9780690f1b422e3b98a8ce768329e21643c65643cfbc978aac9782691f17423e379888c672f19cfc5643c6dc978ae23e3f91619cfed643c6792f17426e3194bc6d3978ce71e329e7e643c2dc978ae20e339928ce75c329ec1643ca790f15491f1d492f1f420e379808ca70d19cf85643c5dc878ae21e3398e8ca79c8ce736329ed3c978ee24e3994ac6733e194f0519cf23643c9791f1b423e32925e3b9918ce724329e11643c6793f18c27e339878ca71719cf7d643c29329ed6643c5793f11c43c6732b194f47329ed1643c93c97892643c0f93f15c42c69320e3b99e8ce704329ef3c8788693f19c45c67317194f1f329ee9643cfdc9788ac9782e20e3b9928ce728329e9bc9784e25e31945c633918ca73b19cf83643c1791f11c4ec6732d19cff1643cc3c878ce20e31943c6338d8ca7928ca785c183ff57ef86edd579f9765031fc7fb2ee5cde5eaf4bcac8336275afe23dc3a6eabbcb517ddf0beaa614ccef82fa0afb7bc0f39e239ef70d1ed37709e42b41b39d864d31ee70c4b8d36094f91dc028faed049e9d8e7876193ca6ef12c8f703cdde356c8a71bb23c6770d4699df0e8ca2dfbbc0f3ae239e1d068fe9bb04f28341b36d864d316e75c4b8cd6094f9adc028fa6d039e6d8e78b61b3ca6ef12c80f01cdde316c8a718b23c6770c4699df028ca2df3bc0f38e239ead068fe9bb04f24341b3cd864d316e72c4b8d96094f94dc028fa6d069ecd8e78b6183ca6ef12c80f03cd361a36c5b8c111e3468351e63700a3e8b71178363ae2d964f098be4b203f1c345b6fd814e33a478ceb0d46995f078ca2df7ae059ef886783c163fa2e81fc08d06cad61538c6b1c31ae3518657e0d308a7e6b8167ad239e75068fe9bb04f255a0d96ac3a6185739625c6d30cafc2a6014fd5603cf6a473c6b0c1ed37709e4ab41b395864d31ae70c4b8d26094f915c028faad049e958e7856193ca6ef12c8d780666f1b36c5f89623c6b70d46997f0b1845bfb781e76d473c2b0c1ed37709e4c78066cb0d9b625ce68871b9c128f3cb8051f45b0e3ccb1df1bc65f098be4b205f0b9a2d356c8a718923c6a506a3cc2f0146d16f29f02c75c4b3cce0317d97407e2268f6a661538c8b1d31be6930cafc626014fdde049e371df12c31784cdf25909f049abd61d814e3eb8e18df301865fe756014fdde009e371cf12c36784cdf2590bf116cc2db176cafe97c1fb0bdaaf3bdc1f68acef702dbcb3adf136c2fe97c0fb0bda8f3ddc1f682ce7703dbf33a9f04db733adf156ccfea7c7fb03da3f303c0b648e753605ba8f303c1b640e72f04db7c9dbf086cf374fe62b0cdd5f94bc03647e72f05db6c9dbf0c6cb374fe72b0cdd4f92bc0f6b4ce5f09b6a774fe2ab03da9f35783ed099d1f04b6c775fe1ab03da6f3d782ed519dbf0e6c77ebfcf560bb45e76f00dbc73a7f13d83ed1f99bc1f6a9cedf0ab66febfc6d60fb8ecedf0eb6efeafc1d60fb9ece8f04dbbfe8fc28b07d5fe74783ed073a7f27d87ea8f363c1f6239dbf0b6c3fd6f97160fb89ce8f07db4f757e02d87ea6f393c1f6739d9f02b65fe8fc54b0fd52e7a781ed573a7f0fd83ed3f9e960fbb5cedf0bb6dfe8fc7d60fbadcedf0fb6dfe9fc0360fbbdce3f08b6cf75fe21b07da1f30f83ed0f3a3f036c5feafc2360fba3ce4bbba6dad93fe97c59106f3bfb55503795816ff1a7cafc59e75b1b6564d962287396ee50a89e71a87797a41d967659d9a41d7e0d6cd20ebf0a3669875f019bb4c32f834ddae197c026edf08b609376f805b0493bfc3cd8a41d7e0e6cd20e3f0b3669879f015b4ae717814ddae1856093767801d8a41d9e0f366987e7814ddae1b9609376780ed8a41d9e0d36698767814ddae199609376f869b0493bfc14d8a41d7e126cd20e3f013669871f079bb4c38f814ddae147c126edf0dd609376f816b0c9fef215d8a46dfe186cd2367f0236699b3f059bb4cddf069bb4cddf019bb4cddf059bb4cddf039bb4cdff0236699bbf0f36699b7f0036699b7f0836699b7f0436699b7f0c36699b7f02b6093aff53b049dbfc33b049dbfc73b049dbfc0bb049dbfc4bb049dbfc2bb049dbfc19d8a46dfe35d8a46dfe0dd8a46dfe2dd8a46dfe1dd8a46dfe3dd8a46dfe1c6cd2367f0136699bff00b647745edaea36609367c56a2aff86138ec3d3027c094b2a88b7edc7290579acbb4c95643c73c978c690f1bc44c6730619cf30329ee3c9780e27e379838c672219cf22329ee5643ccbc8785e27e339958c672319cf06329ea3c878de23e3d945c67301194f3119cf6c329e17c878ce22e3194ec6731e19cf09643c09329e05643c4bc9789690f1bc4ac6d3918c673d19cf3a329e63c8787692f1ec20e3694dc6f31519cf4c329e73c8789e23e3399b8c670419cf49643ca5643cedc8782ac878ce27e39947c6f32619cf62329e97c9784e27e3594bc6b3868ca79c8ce738329e77c978b693f17421e36943c6f314194f2d19cf33643c55643ca790f10c26e339978ce748329e96643cfdc8786e21e39943c6f322194f67329e33c9785693f1ac22e3f9928ce75b643cdbc878b692f1b425e3d94bc633898c6721194f3519cf6b643cfbc978cac8788690f11c4dc6d38a8ce763329e59643ccf93f1ac24e35941c6732219cf3b643c5bc8788e20e32921e3994fc65343c6f30a19cf69643c43c9788e25e3398c8ce769329e67c978de26e3798b8ce764329ecd643c9bc878da93f17420e3d94dc6f33e194f11014f023802b0c9ff5b824dbec3b31f6c5fe8fc5eb0c9377cde00dbe73aff08d81eb2d85a58f8846106d8e45dd92fc026f7671e069bbc33f139d8e4bc41fcabf9551d0fe46f01cb889f96167ef4f7b9854bf2b8bd65995410eff6465fa9c0fecdbb2283f150f3bc4fc6b39b8ca703194f7b329e4d643c9bc9784e26e3798b8ce76d329e67c9789e26e3398c8ce758329ea1643ca791f1bc42c65343c6339f8ca7848ce708329e2d643cef90f19c48c6b3828c672519cff3643cb3c8783e26e36945c6733419cf10329e32329efd643caf91f15493f12c24e39944c6b3978ca72d19cf56329e6d643cdf22e3f9928c671519cf6a329e33c9783a93f1bc48c633878ce716329e7e643c2dc9788e24e339978c673019cf29643c55643ccf90f1d492f13c45c6d3868ca70b19cf76329e77c9788e23e32927e35943c6b3968ce774329e97c9781693f1bc49c6338f8ce77c329e0a329e76643ca5643c2791f18c20e3399b8ce739329e73c8786692f17c45c6d39a8c670719cf4e329e63c878d691f1ac27e3e948c6f32a19cf12329ea5643c0bc87812643c2790f19c47c6339c8ce72c329e17c8786693f11493f15c40c6b38b8ce73d329ea3c8783690f16c24e339958ce775329e65643ccbc9781691f14c24e379838ce770329ee3c9788691f19c41c6f31219cf18329eb9643c95643c2d2c3cfb1df1c8b76264dd32bfbf99fbde65f8de5520be7718be771488efed86efed05e27babe17b6b81f8de62f8de5220be3719be371588ef0d86ef0d05e27b9de17b5d81f85e63f85e5320be5719be571588ef1586ef1505e2fb2dc3f75b05e27b99e17b5981f85e62f85e5220be171bbe1717886fe6eb6fd50f57fa2aefd6bf09f87f0530bee18871bfc128f36f00a3d8f07bd4158e78a2aedd2b087c2b2de45e963cf34cc0ff2b81d1554c55188c326f8ba95dc053e98827ea9e4325816fa585bc8b2d7d2a13f07f1c7fd9554c551a8c326f8ba91dc0d3cf114fd4bd927e04be9516f2eeb3bcf39780ffe378ebae62aa9fc128f3b698da0e3c831df144dde3194ce05b6921df0a936fd224e0ff383ea3ab981a6c30cabc2da670fcdc218e78a2ee4d0d21f0adb4906fedca372f13f07f1cbfc9554c0d311865de1653387edc50473c51f7d48612f8565ac8b360f9467b02fe3f0c185dc5d4508351e66d3185e3dd0c73c413752f7018816fa5c5709d973e5609f8ff7060741553c30c4699b7c5d406e019ee8827ea1ee67002df4a8b113a2fef7024e0ff2380d1554c0d371865de1653eb806784239ea87baf23087c2b2daa745edee94fc0ffab80d1554c8d301865de16536b80a7ca114fd43de32a02df4a8b6a9d976fce25e0ff38fefb08478c5506a3cc8f0046b1ad029e6a473c51f7baab097c2b2de4dbfe2bf56f02fe8fe3b1ba8aa96a8351e66d3185e341d738e289ba475f43e05b693146e7654c9804fc7f0c30ba8aa91a8351e66d3185e3578e71c413f56c610c816fa5857c9b6bb9fe4dc0ff6b81d1554c8d311865de1653cb80a7d611cf12836789458b43e55b69217db997eadf04fc7f2230ba8aa95a8351e66d31b50478263ae2897a963391c0b7d242beadfda6fe4dc0ff2701a3ab989a6830cabc2da61603cf24473c51cfa026e5c077d4f3945cf88e7a36900bdf51f7b973e13bea9e6d2e7c47dd7fcc85efa87b69b9f01d755f2817bea3ee71e4c277d4f57a2e7c475d7be6c277d475542e7c475d13e4c277d4f96d2e7c479dabe5c277d479876fcf7d7b1eb7ef4379ee50a8edf9a13c861eca6389bf36f0d706b9f2ed8f25feda2057be0bf5dac0b7e7b96fcfe5faab2888be1e7bcb91ef65866f99c7e72ccb1cf95e62f896797c66b0c491efc5866f99c7fbdf8b1df92e317ccbfce21cf86e67f86e9743df1d0cdf1d2cbe1d6cef6422a87ffd2d0c38a5208f31f0a6032d1cd5b35cad77a95ed7d731aed776dfc6dc5f4aa1cc52d0cf75db21eb36db8e7c64c6b8288acf7779027cc877c9944d9e1fbf063669f75f059bf40b78056c726c7a196cf24cea25b0c933ab17c13646e73f069b3c3bc63efbf2fc7f3bd8aa741efb8a8fd0f9ad6093be54d84759fac36d019bf469c4beb1d22f7513d8a46f31f6c994fee11bc0267dfcb12fa0bca7b10e6cf2ae0df64193f7a5d6806dafce63df27f90ecd2ab0cdd0f99560fb83ceaf00db833a7f0bd87eaff35f81ed773abf186c0fe8fc9b60fbadce2f05dbfd3aff02d87ea3f3cf83ed3e9d7f0e6cf7ea3cbecbf66b9d7f1f6c9fe93cbe43355de77781ed573a8fefeedca3f33bc0f64b9d7f166cd374fe19b04dd5f94560fb85ce2f04dbcf757e01d8a6e8fc7cb0fd4ce7e7816db2cecf05db4f757e0ed826e8fc6cb0fd44e767816dbccecf04db389d7f1a6c3fd6f9a7c0f6239dff126c77e9fc12b0b5d0f96560933123b19f4ab1cebf05b6563a8ffd8fe4fbfe93c07698ce4f045b1b9daf059b7c1b6e0cd8643ce81ab02574be1a6c47e87c15d8e4fc6c04d864fc93e1609373a961606baff343c126e73d43c026e3590e069b7c83b41fd88ed6f94ab0c9b7f52bc076acceef079b8c39f606d8e4bb757bc12663313f0c36f95ef50cb09da8f37f009b8cc3f220d84ed6f9df83ed149dff1dd8e41b9e0f80ad4ce77f0bb68e3a7f3fd84ed3f9df804dc6c8ba0f6c67e8fcbd6093b1837f0d36f9def36760eba4f3d3c176b6ceff0a6c3296c83d6093f1417f09b6ce3a3f0d6cf21deea9603b5fe77f013619efefe760936f0c4f019b8cebf633b075d5f9c9604beafc4fc1d64de72780adbbceff046c3d747e3cd87aeafc38b0f5d2f91f83adb7ceff086c7d745eda19b53fabfd7c9f9e4f05f19d97297f1f06f5a786ae0d840179e23cd72e051ef4b527f6ba27d3e7f5b2dfb7d0eb9518da03be77c7ee3b734df1815e57b15eef6ec3773194395b370e6a3939e6b7d4cbed3596c3fb58b26e59e602b0bf6facbbbdaeef078eeabbdb60126ed441ca9ca799d4b1f1073adf069689912d7d7d2cb116808638a5202f0c6eb44a96e3796f63783e009e3db1f364aed75dc404ee5b715faf9bf771cd582b8532bb41bff71de887fbbaac5be6c59f67f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b667e66c5b34fe7f1b9b294db47c228b63dc0e3e23e3f3e8795f5abe73aef9f5ae7774fec7eeb3fdf6ba5d75b6ed4b918ca7c0dcf9cf6ea7c09fc5fb65bd4b674f09cb0c16d29fe4aa03ef82c689f239e3d06cf1e8b16922f8bcd7772941b8d93e5aadf8a7ac6bed7d0759f455357fbeb1ebdae224353dc5f3f3478f0d96809f07ea47f13b09e8fa00e0ef6f106e342fce1beb4076c92ff10185d6c673c96487b20cfc3f1d9b494f995f15c3cfe6d9f2c77d96ebc07754a0507c6773194f91db47d9feb3cf60dd907bafdc3f27f991a7a4e2dfaa93aef8cbfcee9edbb033853e0077dbf0bac31f9aef70e4d914ee247ecc590ff3bf4e79072a287682dec385e39b29bcb7d682c570a657659ea9f0ae2adff4e8367a7c1acb6c9971067ff80e3bfab366957844617804652660f68b4d711cf1e834738c49f2a23dbbfb55146962d8632ff13da28551769e7a59ed8b7058f01ae8e63e24bd62df3b673e30f80d1aca38a8f41c7d6f1ee899d37bffa7f1d5696f9c5763daefe5fb2eef67a59e1088cf597c3fa85ab75107d6cf9efed5b56b77e97fdcbf61a751616d459cab42bcbfcaa38bb54e7b339d73f54d76d51e7fabb1cf02482fad7de6a6ae8f88ec798f7e0ff52a6fc9b4d5d1dd5b3dc76ec7adfa8532994e904f574701ed3e0bbc03bc1b78b6d8e5ac839d46e438b6228d3b12cf32b6d47948e78adfa414eea92b49e0f965bea22653a95d5d5a50dd8e36472b9ddde853aa9f5eeb1d455ca9c5756a74b179d4fc076c2fb26fd2cff97a9a1f600c7e2d9167f9dd3db772b70a6c00ffa7e075863f25def5b2072be2f7ec45e0cf9cab2bab2524ef410ad855ded23f2ce1fb29bcbed36962b8532db2df54f05f1d67f9bc1b3cd6056dba46b595d5ee2c865bbb93d42a372d048cae0fd6339b6e37b77b6e3fe1e47dc51c7fd3dc068b69b78eee2926dafc166de43b59d0f4a193c2793325795657e553b9bb09435ef0dbbb88f89efa006508fc0a8ab4c18030eae0dbbe3b593b453e2a70bd8f7e8bce8dcc5d0ae18ca0c2ecbfc3a3cefb6debb34afeff09a42b8cd7d0bdffd185a56c78d6327eed1bf2560fb44ff3aba4eeb6ebb67281cb67b8623caead87159e1fad85217f31ab94570e03df5af8db278dfada1e5ccbc390ea5d2f713a39ccd0f5ef3c4f6ae46d7f272646a11d8ef177c68b01705078eb929fb01c69c791fa58bb11ebc8f525b96f99536c92cabb6fdff38ba4e1fd98ea21db62718931f02634ae7cbbfd9d4d5567f99177f8af123a30e6edaaeccfb4ad9dc07de0b3c2eda76476d74391e63dbc4b6de3e55b6e3ff878656397c5e6b3de69bcfdcdb18f9787c27ab6df79f6c5aecb6f0b87a8e12a5c56e8beff8b4e839ca76fcb06991cbbe0f515abc6ff11da3163578dfb3212ddeb3f0b8b817d59016ef597cc7a745aff2869e6ba016bb2c3caeee3d446921feb2657e9f80b98d918fc777f72adb7d329b163b2d3caeae9ba3b4d869f11d9f165d7be23dba86b4d861e189fffe5cc35aecb0f88e4f8bde7df01e5e435abc6be171f54c374a8b772dbe638c8bd1b67b39362db65b78b6e7588bed16df319e1ff6b4dd6bb369b1cdc2e3e0be6b835a6cb3f88e518b9178dfb5212db65a78b6e6588bad16dff16951d5c3764fd8a6c53b161e57f784a3b478c7e23b3e2d46f656beb734428b2d169e2d39d6628bc5778cd750e9b8d8dc082d365b7836e7588bcd16dff169519d3ed7dad4082d36597836e5588b4d16dff169519e3ea66e6c84161b2d3c1b73acc5468bef18e3227d3db9a1115a6cb0f06cc8b1161b2cbe633c8ea4e3627d23b4586fe1599f632dd65b7cc7a7454dfafed3ba4668b1cec2b32ec75aacb3f88ef19e4b3a2ed636428bb5169eb539d662adc5777c5a744b1f53d734428b35169e3539d6628dc5777c5a8c4e3f135bdd082d565b7856e7588bd516df319e77a6db8b558dd062958567558eb55865f11de37967fafec5ca4668b1d2c2b332c75aacb4f88eb1ed4c9f77ae6884162b2c3c2b72acc50a8bef18cf3bd35abcdd082ddeb6f0bc9d632ddeb6f88ef1bc337d1c79ab115abc65e17135064a94166f597cc71817e9b6737923b4586ee1599e632d965b7cc7785f2bdd762e6b8416cb2c3caec66b88d26299c5778cd723e97b7c4b1ba1c5520bcfd21c6bb1d4e23bc66745e973f0258dd062898567498eb55802bef7c6ee3bd39f5b7c485facf30d2d8aa1cc291d33bfd2172b4a475907f62bc3babc197b5d32fdca1647d4e54da88b943903ead226703246517747754dc7cc1b5027b5de8f2c759532e774acd3a5b3ce27609b7c0cbaf5b5fc5fa622633e0579d14fd5f9b5f8eb9c8ed5578133057ed0f72bc01a93efaee8bb4827f123f662c8f7e9585756ca891ea2b5b0ab7de4759d477673b925c672a550e6754bfd5341bcf57fcde079cd604ebff700712671e4a6edca30bd1ea1d1f9a09194c13e7b1f39e231fb100a87f8536564fbb736ca601f4a297321b451d8af54ea99080eec37e9a82deb8aecb26e99177fa560db0b8c661d557c7c067d3f65ac08194742d9645c886eb09e5e864dd5b5b7a3ba8a2f59b7ccf7064619a7a257ee19938d65ec69302a9ebe0e34c3b137646ae878d11778fa38e07154cff471a8c2a8536fa34ea55006df6dac7050cf22f02beb96f90af0ed629ba316724c3ec7d0a218ca8c30ce1fa3749475a8f8ed65a94b7fc77591754bbbd43f07be2b0ddf3d0cdf89a0fe760e8286f7af4a60eee78059ad7740fceb2dc7f3368929f1d303ea34103488ab4eb82e39cf1b68685b0cf969709e27e5a4ac1cbf845dc5b26c4b643797eb6b2c570a65fa5bea9f0ae2adff00836780c1acb6c95d706ee7607f48c7407f8343e67b80760322b4eb0fda49193cfef574a45d3f8347e67b028f9ce354804dce15843f01ffef96036eb3ddabb0708b0dc789eb6961ec113f63fa5ca7a7c128f33d80516cfd80a7d29166e6b63ec7d0078fcbad8d32b26c3194990dc7c684a5acdaef3a15d5d5aba5b6c7f6ee986ed35b3bd00bc7690c409fc0d03000bda49ead1cf0b40deac66a9c32b576f2c83b47df303af3e851d08a0d4cfc2db254a305d830dfd2620b82fa435216834d86a46c05b616862c3814a6949721ed5cc8857ac8ba8b0dce36c012a76f1cce53a68642e730e07111ca2a7464484f1d3ab74c1e3b7534c6472b83b329b1a3fed7b2817251eb72b51dcc7d2205f3660c163bf2df12ea9b8279f1a7b68d0cad3a71e4a8bb074ebe73daf8d113a64e41a1cc1d1bf34541fd0d60fe4609ee6aa7c300c00a63e3d0caa8173618f23fd9306de3e7ec8e63e69ada04e04fa6b6a0dbe10e7453eb97b16f478d1c37eeba6955e3c68eba74da845153c7d64ec0add9c6502e6a4bcbff5b83cdd6c463593561b385cb1e66b1d9261c65b80dd8e4c87538d884a72dd85a425eca9b5bc649b87682f5cb2ea5fea7c469a52b7e58501702723856edaada7fd5a99cfa84ac3a1552431babcda9862e56770cd5d0c4ea2b766ae86135d4b01a5af884203374b01a2af8e4203314b0fada45599019daf7b4203374ef19416668deb380ef3bc07c769039ed5243eb760e3243e7aa5b975d82cc67ded4bbf5eaf45ddd1650a7bcea124f9d7eaad34e7579a16e5fa85b59ea944e9d2eab534175faa62e470668ad0786e9c2305d14a68bc37449982e0dd36561ba3c4c5784e9ca305d15a6abc334284cd784e9da305d17a6ebc37443986e0cd34d416678e79b83ccf0eb6af8e75b83ccd0d0b7059961a36f0f32434adf1164869b1e196486a21e156486a91e1d6486b0be33c80c6f3d36c80c937b7790196a570dc13b21c80c87ad86c956c367ab617ed590c06a486135d4b01a96580d61ac8640564323df1f64865c5643363f1464867d9e11a647c2f468981e0bd3e3617a224c4f0699e1c1d5b0e13383cc30e36af8f1394166b8f2794166787335ecb91a0e5d0d93ae864f57c3aaab61ded5f0ef6a58f817c3f452985e0e328f24d4a318f58842ddfe578fc1d42dea3783ccadf3a541e611b77ae4afba40a82e21aa8bccca20d3854a7529535dec549743d505537549555d74559765d5855b7569575dfcd52b0fea1510f54a8c7a4548bd32a55e2153afd4a9570cd56ba2eab54bf51ab17aad7a4f90b92dbe2fc83c2a55b7c3d5a30175cb5cddbeff344cdf0e3231f9dd307d2f4cff12a6ef87e90761fa619019d6580d77ac864b56432bab6198d590cd6a28673514b41a36fab32033f4b41abafab7416648ecdf87e9f3307d116486d7fe324c7f0cd35761fa5398fe1ca6bf84e9af61fa5b98fe354cff16a67f0fd3dfc3f48f30fd33a81b661b1b921374eba3af60829153a78e1e3f716ad9d4dab2f1d3c64d1d3b71dc7d65d3c74e1d53567bcfe8c935e36aa7e3c2dfd10bcb18e103274f1e795fd9d809d5a3ef2dab9d36b5acb6a6acaa76da84ea7a07f1bfe8854e3ad0e3c8eaea6867fff94d48ff4f139d1eaedb45197dfd8a86eb7644cb260872645316ead9b269159aac8f6072a97b63e63cb86ccab8daa965e56513c2bfe181b776fae8ea2e65f8bf29a1c853a6964d993a72f2d4b29ac9b5e3cbba76c1f53edcb60995f8afb66e60ce3ca169e274d2df596a5288fdf2d42628f01fa7368db475d937206d5bd634a765654da8e1594d59e8ca2612de541629cb94695553278f1c35357ae15bbfc9c27734a59a139a58cd933b36c1d9e94d596860c7a611ded11467b3b27016fc7f01d4c49784550600", "isInternal": false }, { "selector": { "value": 2603445359 }, - "bytecode": "0x1f8b08000000000000ffed9d77741cd775c667d158164b1024c15ea046b3015c2c1a0136b0774a9464f5429004455a24419150b32c4bb224f7debbe516cbbdf758a97612274e1c3b96bbe36e4b2eca3f39ce49cef1c97bb3ef1a1f1e67d658682e78077be79c8b7d73f7eddcdffbe6ce9bd9f766074f054190098a4bb5b18b8273177abfcfbde69fded296e0b6f29c9c99947056a584b33a259c3529e1ac4d09675d4a3827a58473724a38a724c869d9aa82914bd2bc5319744d9a319b324deb53a0692e659a4e4b81a60d413afaa8e929e16c4c09e78c9470ce4c09e7ac947036a58473764a38e7a484736e4a38e7a584737e4a3817a48473614a3817a58473714a3897a484b339259c17a484f3c294705e9412ce8b53c27949829c2b8173a97b7d867b5de65e97bbd715ee953eb3cabdb6b836d6b8f55663ab2d9bb136efbd82b176631dc63abdf7ba8c751b5b63acc7bdd7ecdeeb35b6d6d83a63eb8d6d30b6d1e9b0c9d866635b8c6d35b6cdd876633b8ced34b6cbd86e637b8ced35b6cfd87e63971abbccd80163971bbbc2d895c69e69ec2a63571bbbc6d8b51ecb75c6ae377683b11b8ddd64ec6663078df51b3b64ecb0b123c6068c1d35768bb163c68e1b7b96b15b8d9d3076d2d8296383c64e1bbbcdd81963678d0d19bbddd81dc6ee347697b1bb3dcd9e6dec1e63cf3176afc7f95c63f719bbdfd803c69e67ec41630f197bd8d8f38dbdc0d80b8dbdc8d88b8dbdc4d84b8dbdccd8cb8dbdc2d82b8dbdcad8ab8dbdc6d86b8dbdced8eb8dbdc1d81b8dbdc9d89b8dbdc5d85b8dbdcdb1d081f07663ef30f688b1771a7b97b1771b7b8fb1f71afb0b63ef33f6a8b1f71bfb80b10f1afb90b10f1bfb88b18f1afb98b18f1bfb84b14f1afb94b14f1bfb8cb1cf1afb9cb1cf1bfb82b12f1afb4b635f32f698b1bf32f6d7c6fec6d8df1afb3b637f6feccbc6be62ec1f8cfda3b17f32f65563ff6cec5f8c7dcdd3fc5f8dfd9bb1af1bfb77e7fb867bfda6ab4be362ff61ec5baefcb87bfdb67bfd8e7bfdaef799ef19fbbee7fb81b11f7abe1f19fb4f57feb17bfd897bfda97bfd997bfdb97bfd857bfda57bfd957bfdb57b7dc2bd3ee95e7fe35e7feb5e7fe75e7fef5e9f32765953b13c39185efa8284faa88ea3793ba742e22f0d462e568b6af71ebd363b7f8d5ba757d2aed6add77afe3ab75ee76d67b25b9fecf91bdd7aa3e79fe9d6677afe26b7dee4f9e7b8f5399eff62b77e31f8b3018cb93abff5553b57067c94af55e0ab75be6af0d5d1e6c037c9f96ac147fbb70e7c539c6f12f8a63adf64f0659d6f0a6969acdef9fa82a47225df6fb79b4b7abb6e1e6a5af2bc87ed761b9878a727cf3b60b7dbc8c06bf36386dbd674c89b99ced708be59ce37037cae0bfad331677db39d6f16f8e6385f13f8e63adf6cf0cd73be39e09bef7c73c1b7c0f9e6816fa1f3cd07df22e75b00bec5ceb7107c4b9c6f11f89a9d6f31f82e70be25e0bbd0f99ac147f7b85c00be8b9def42f05de27c17818ffada8bc147d78697389fed272667e033ce4f7d54f819ea9fc1b78cfa66f02da77e197c2ba84f06df4a884dbe55d0af90afc5f9a88fb2eff5ba725f90d43151088f89b5496fd76cd96e777df2db0de7ed3604c35af7419cb5a0d546574ef0dea0368c9d714671c85f03e55d5097ea911e749e21767b3e59e7ca1b4b7caed7fb5c0eeaac8b687f5f906cfbd77b3ceb3de65a683f4fceb617346747bd949db357435d3ff7e89a6722e6ec5ee060c8d92ecdd9512f65e7ec00d4f5738fae7b2762ce5e071c0c39dbcf93b385bce66c718c2c08a2738fbefb4cc49c3d061cc9e76ca7e6ece897b273f601a8ebe71e7dff9d88397b0770249fb3ddfd7a6d30eaa5ec9c7d05d4f5738fc6622662ce3e041c0c393ba0fdeca897b273f66d50d7cf3d1a179c8839fb6ae0483e677b9872b65d733628ce77064174eed118f544ccd9478023f99c3dace3b3a35fcaced9cf435d3ff768be6422e6ec475cd9ce337cc3cd332c04df379d6f11f0269fdb473a9872bba0b95dbc0f2408a27394e6ee26626e3fe6ca368f1f877b0fc8f76de7bb007cdf71be0bc1f75de7bb08dac5700cf4eb3130eaa5ec63e0fb50d7cf659a479e88c7c0d7818321670f6bce8e7a293b679f80ba7eeed13d0d1331677f041c0c393ba0393beaa5ec9cfd03d4f5736f992b4fc49ca5fb4aedf5c28fddf5c20af0fdc4f95682efa7ceb70a7c3f73be16f0fddcf95ac1f70be75b0dbe5f3a5f1e7cbf72be36f0fddaf90ae07bc2f9dac1f7a4f37580ef37ced709bedf3a5f17f87ee77cdde0fbbdf3ad01df53ced7e37c76be8beebdfaaaf3d97d4b1af505c9ee5bbac792b64debabc621768317bb611c63377ab11b2362b730c4ce420c5a32de7a1f945b7879f2b960e4ef3f28d6eae463b5dbb6b706a36ffb6ae0c933b43d0b3146c393079eb6e479c27b7d0bc96f37dcc7ad9ea65988d50aed6a6768570662d1b6699de2e5c087fd777b046347f28c850cc4a26dd37a0730920fcf27745ea7e3c79e0f97668679198ea5f09a88e2d1b3bf886335f8a9ceef670db3ad706cf5f03e9e5bdb3c1f535e867941b168dbb44ef1eaa13d6de3cf58182d63de63e4ea2332108bb6edc7c6e3bd65fc351bd57ecd81ef3cf44985b1f649f5c0361ed72971fb5a4a6c8ef355066250df469a17c04f7566bb1f24d8be6d07f4bb0cc75fa1dceb37ec0f92cfe3421e8febd1f0b4030fc7b1cf74bce6f1bcffc720d95cebf4b46af3b4ca419d0ed0af9341bf52d721144f99955999955999955999955999955999955999955999955999955999955999e533e3fd1738bf49f5560961245f017838c6f9c3e747b96dd1f6edbcce77605e27f9798b421ee72ce91ec3e55e9b6ba0ce9399e1ba3f80f9747f6e10e73457f16a37aafb2cea8373e76239e710e3e681a3e62f9b138b5d38cc35df669fa1629f43d6eae9ba2a425386fb5446689af134c5fb14577a3c364fe7550fb371ccfd953b17895a5139c9b93dbcc78077bf14fb0fca85aa6064ff81e799aec4638f9cc3a4f9f22e2f760dd4f99fccf0bea17b51e9ff1cfaf73cd93adddeb6e933cbc1dfed6dbbc17d96386abdedb7c267a9ceff419ffaf6aae04f9a71dcff81fd72006dc5a50fca386f9efc79b8388fdf5e064f27f070f4334cd71b793c06929ec7eff6b48aba8ea13a5da05f37837e51d7a2b44ef194599995599995599995599995599995599995599995599995599995599995593e33fe569458b350af2084719cee7d08e733e8f92fb47d3baff3d2aae1b8dcf37034e7b4c26b730dd4f95ad570dd57ba727d70eefd0e71fb92613eafe4bea478f5d01e9c0be2fa3d7787c7d311a105959b138b5d9cc74f5ee3e179fc764fd74284a65cc72bceb1a2a678bcb6793c38375a1f9c7b6f4916b6331ef70ec5e505c5c363a9037c54c6df4773ec673c97f8f7f5503c9cbf7ed469db1070edfb429eb3df58036dea0bcecdef1aa8f361e8fb3eeaca780f07de3bf258c4fbb4949aa726fd589e65972fcefbae05ce3e8883b1d7016b42b1db3076c619c5217f0d94bf54355c97ea911ea435b1db63849e0986ecfee7dabccfe5a04e4f44fbfb8264dbdfebf1f47acc769f7c02f2ec3138ff73f5493d311a2d078da80e5e0771dd93e7f791fefd8d78df5e9d5707af59a8ce57a08f8abb7f34ea9e43aef358dc3d8751d7c69dc0e8b7d1bfcfb3d2efd37a1cfa8ba4efd37a1c7208efd30abcedaf80ed13575d107f6ea13adff3b6ef5f93d367f03e30aaf343e82f1adc3d8bf5c1b9d7df78cfd4787cbf8abb4f9ae2e1750d1edb7faeed96790dd4ef4b9019730259f03a81eafccadb67dd31dcab233efb64cc6749ab1657c6ef2fbe7e56871ef84c5f223a148ff95eaf2d94d73dd016aaf35fde3560f2d72dc56bc0e4db3af29a84fa818e88b6529dff8663ed0f708d47fb09bf77d4559ffb3e2da5ae01493fdbe6f17e3e30c696f07ce0daeae1bafe737e49eb729f0fdce57d4ee2f381ff17f2ac0eee43e7eaabd7c568b40234a23af8db203a8fe0b37ca3ce315cf7f6c79d63a29e4189fd7343f5f8b3f9e36a51d70854873e8bd708b31c7383d3d9afeb8f17d2f932c9fb86f1b712ad10177f2bd1caa4671e74eb8375bc2e389fb1f34cb1e39e399d1f87d871cf9c1e8fd88d5eecc6718cad9aabe6923467782672f8fb337c66a95d4a5d9712430e3e579502c6ea1430d6a480b136058c7529609c9402c6c929609c9202c6a92960cc02e3f93cb733e85318ab3e5cfbabd4b506c66e61d2a29cffdfc1fcbf544a5efb606c86ef74a1162dc1e8b5c0ef791ccf7e28f77fbd1003feef821929609c9902c65929606c4a01e3ec1430ce4901e3dc1430ce4b01e3fc14302e4801e3c214302e4a01e3e214302e490163730a182f4801e3852960bc28058c17a780f19214302e55c6441857f23216c6ca687938fee7dfd3f99f630c3cf9a87b4e997e7b52f6ff5b637e3e69db589f1b87f796f0fe4fb8a7f76c3b8e7b47ca7db65da9ffb7cac458182b23d77decf83b9ed1f0e0ef22a37e5bc3c058182b23d7ef5ff0377aa3e1e902cd3a233463602c8c9591eb5eb972efe5c47bfabb223463602c8c9511efab4e9027d4acbb0c9e35a0597784660c8c85b13272dd979c8518a3e1e901cdd64468c6c058182b23d36fdb42cd7acae0c1df80f54468c6c058182ba3e559cba4596f193c6b41b3de08cd2431224fd2cfc9ee8d88c5f19bc172db4e0cc83825058c5353c088f74970f45fa5ee93e8e5d5a730567db8f657a9fb243036c3ef63422df0f7107f4e8bf5bc3c25ef93c0d81b98b4c0dfabfc392d36000fc7ef67b21063343cc49083cfcd4801e3cc1430ce4a0163530a1867a780714e0a18e7a680715e0a18e7a78071410a1817a68071510a1817a78071490a18f1bb2ac3b562c9ef2f1b2678ecb8ef2a133d76dcf792891e5bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73c97143b0d63fcca38f11891a739399e3cb61d63f509687b5f044f86a9ed186b9380b61343da1837a680716d0a1855c7e23d886361b43c9b99783695c1b31978b630f16c2e83670bf06c4d9e27cca92d65f010430e3eb736058c1b53c0a83aaa8e921855c7cad1511995511995f17c30a6a10f57c654e46361ac8c96675bf23ca1665bcbe0d9069ad1e7da78190b6365b43cdb93e70935db5606cf76d06c5b84660c8c85b1325a9e1dc9f3849a6d2f83670768b63d423306c6c258192dcfcee47942cd7694c1b31334db11a119036361ac8c966757f23ca1663bcbe0d9059aed8cd08c81b1305646cbb33b799e50b35d65f0ec06cd764568c6c058182ba3e5d9933c4fa8d9ee3278f68066bb233463602c8c95d1f2ec4d9e27d46c4f193c7b41b33d119a313016c6ca6879f625cf136ab6b70c9e7da0d9de08cda432ae4d01e3c6143032eb58182ba3e5d9cfc4b3af0c9efdc0732913cffe32782e059ecb92e70973ead232788821079f5b9b02c68d2960541d5547498caa63e5e8a88ccaa88ce531f6a58051f7b5324a6564f87e55f23734974ef0d80d5eec860a891df71b9a891e5bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73c9714fb40f2b10be53e63e600f0703cf386a99d79bbddcbddb6fe98a07e56ab2b3cad2ef5b4ca419dcb41bf2b18f4cb405cda36ad53bc72999f2180992976619ad9c614683fc5d8e8e961e35fc9d4f6b8befeca091e3baeaf9fe8b1e3fafa891e5bf35cf3bc12626b9e6b9e57426ccd73cd7329b1b15c1b0c5fb7d3f34fed369ee9ca356e1d59c94f752e9b547c6d08f418e288adc7909e2b2a21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad792e2fcf311faac68127f07882123c1b84f1ec16c6b34318cf1a613c8b85f1740ae3992b8ca7208c6786309eadc278a608e3592e8ca75a18cf26613c79613c7b85f12c11c6b34218cf3c613c3385f14c15c653238c67b3309ed5c278f609e3d9238ca75718cf52613c3dc278b609e3e912c6335f184fbb309e59c278560ae3c90ae36915c6532b8c67a7309e16613ccb84f1ec17c6b34e18cf02613c4dc278ea85f1e484f1d409e3592f8c6797309eedc278ba85f12c14c6d3218c67b6309e55c278a609e36910c6b34518cf24613c8b84f1cc11c6335d184fa3309ec9c278c6e37943e5f06404f06483739f499685f70f80afcafbacedafda9a86dfbfcaf9abe03357bb7275c4b6af021ffd36fcea88cfa24e57415bfa5c39fff49650278cd507eb14af1e38ae16c2734018cf64613c8dc278a60be399238c6791309e49c278b608e36910c6334d18cf2a613cb385f17408e359288ca75b18cf76613cbb84f1ac17c653278c27278ca75e184f93309e05c278d609e3d92f8c6799309e16613c3b85f1d40ae36915c69315c6b35218cf2c613cedc278e60be3e912c6b34d184f8f309ea5c2787a85f1ec11c6b34f18cf6a613c9b85f1d408e3992a8c67a6309e79c2785608e359228c67af309ebc309e4dc278aa85f12c17c6334518cf56613c3384f11484f1cc15c6d3298c67b1309e35c2787608e3d92d8c6783309eaa081e86ff7f19f2d0fd6bb46d5a3f202436c37e08ffefe7354c6dbad66dabd66d97f8295e0dd4b9ce5d18d8fb51f0b3c4e5df6f88f7ce5d0b1a5dcbd416da1f196fff30c72ee07d950130049e3e41040fc7fda84ced1c918709feffd9bcd5ea3a4f2b7fdfe5a0ce35a0df750cfa45e5f69f8e01f79a4666cb43e70e62cd42bd0d4218c977252f4f78dc6e08462ea58edbeb8087a30f636a67787c5defb5694384ee540773f57a8676461d3bb47e3dec87b4315b9e4dae4cac59a8b7490823f9aee5e5098faf4dc1c8a5d4f1753df070f43f4ced0c8faf1bbc366d8ad09dea60aedec0d0cea86387d66f80fd903666cbb3d99589350bf5360b6124df75bc3c1d5968332da58eaf1b8087a3ff616a67787cdde8b5697384ee540773f5468676461d3bb47e23ec076556e62866cb43bf3121d62cd4db2284917cd7b3f274e4b3d0665a4af56337020f473fcfa47bd88fdde4b5694b84ee540773f5268676461d3bb47e5344ece620592d6e1e85163747f0dc3cce5a50bc7299af4921b3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaab35d5467d55975569d9360569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e6396a0b3e5a167c4106b16ea6d15c248be1b7879c2df056d0d462e196fbd0fca3703cf8d0cfa30b533bc87fca0d7a6ad11ba531d3cbe0e32b433ead8a1f583b01f0e96c17c530a9955e7b1315b1e7a562cb166a1de36218ce4bb919727ecc7b605239752fdd841e0e1e8e799da19f663fd5e9bb645e84e75f0f8ea676867d4b143eb144f9995398ed9f2d0ffb021d62cd4db2e84917c37b3f214c2df376e0f462ea5fab17ee03998384fb11f63d03decc70e796dda1ea13bd5c15c3dc4d0cea86387d60fc17e2887f9a61432abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3ea5c393a5b1efadf21c49a857a3b843092ef202b4f7b38efb02318b964bcf53e281f029efec4798af30e0cba87f30e87bd36ed88d09deae0f17598a19d51c70ead1f86fd30d1996f4a21b3e6c6f8306b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7314bc80dcbb3d39589350bf5760a61245f3f2f4ff8dc839dc1c8a5d47d3b8781e710833e4ced0cefdb39e2b5696784ee54078faf230ced8c3a7668fd08ec076556e62866cbb3cb9589350bf576096124df215e9eb01fdb158c5c4af563478087a39f676a67d88f0d786dda15a13bd5c15c1d606867d4b143eb03b01f945999a3982dcf6e5726d62cd4db2d84917c877979c27e6c77307229d58f0d000f473fcfd4ceb01f3beab5697784ee540773f528433ba38e1d5a3f0afb419995398ad9f2ec716562cd42bd3d4218c9778497a7908536d352aa1f3b0a3c1cfd3c533bc37eec16af4d7b2274a73a98abb730b433ead8a1f55b603fa48dd9f2ec756562cd42bdbd4218c937c0cb131e5f7b83914ba9e3eb16e0e1e87f98da191e5fc7bc36ed8dd09dea60ae1e636867d4b143ebc7603fa48dd9f2ec736562cd42bd7d4218c9779497273cbef605239752c7d731e0e1e87f98da191e5fc7bd36ed8bd09dea60ae1e676867d4b143ebc7613fa48dd9f2ec776562cd42bdfd4218c987e78bfd4c3c398f2717a1c5448cdde0c56ea890d88d5eecc60a89ad79ae795e09b135cf35cf2b21b6e6b9e67925c4aed45c53cd2b53f3cc79d43c731e35cfa8e62235ff6372b13bb15fa98258c798da894b1f94717c8e9635c278160be3e914c63357184f4118cf0c613c5384f12c17c6532d8c272f8c6789309e15c278e609e399298c67aa309e1a613cab85f1f40ae3592a8ca747184f97309ef9c278da85f1cc12c6b352184f56184fab309e5a613c2dc2789609e359278c6781309e26613cf5c27872c2780e08e3a913c6b35e184fb7309e85c2783a84f1cc16c6b34a18cf34613c0dc2782609e359248c678e309ee9c2781a85f14c16c69311c0930dcefd3d0afe9ea01a7c747fff7ef03dcb950f80af2a22066de738f868fc94b661fb9b754de73254c1676e8de07a56443c8a736bc467c743778cd507eb14af1e386e15c23359184fa3309ee9c278e608e359248c6792309e06613cd384f1ac12c6335b184f87309e85c278ba85f1ac17c653278ce780309e9c309e7a613c4dc2781608e359278c6799309e16613cb5c2785a85f16485f1ac14c6334b184fbb309ef9c278ba84f1f408e3592a8ca75718cf6a613c35c278a60ae399298c679e309e15c2789608e3c90be3a916c6b35c18cf14613c3384f11484f1cc15c6d3298c67b1309e35c278aa22780e30f1c43d4fe18080d8763d0fbad8250bef8fc7ef000f788cb47e0c18919778f24c3c71cfa0c80b886ddb4fdf25680e2e0befe3efb8b8722aef31d27a544ee17d69ab9978e29edbb15a406cab058d5dd23d0059781f7fb7c09553ab3d465a8fcaa9465e9ef07f4bb404239752f71ae131c7b10f99da99c7e32fc16768443e8bbac5d30a9fa13a1ef7c9c7f507144f9995398ed9f2d0dc05b1e2f96c3c7ef7361ac6a8f32b034fd83fb606239752fde331e0e1387f30b533ecc74e786d6a8dd09dea60ae9e606867d4b143eb2722623707c96a7172145a9c8ce03939ce5a50bc72990fa4905982ce9667952b136b16eaad12c248be3c2f4fd83fae0a462ea5fac793c0c371fe606a67d8279cf2dab42a4277aa83c7d7298676461d3bb47e0af64339cc2752c8ac3a8f8dd9f2d01832b166a15e410823f98eb1f214f25968332da5fab153c0c3d1cf33e91ef663835e9b0a11ba531d3cbe0619da1975ecd0fa20ec076556666556666556666556666556666556666556666556666556666556666596cd6c79e8b78dc49a857aed4218c9779295a738efd01e8c5c4acd3b0c020fc7bc0c93eee1bcc369af4ded11ba531dccd5d30ced8c3a7668fd34ec076556666556666556666556666556666556666556666556666556666556666596cd6c79e899dbc49a857a1d4218c9778a9727fcdd564730722935ef701a7838e66598da19ce3bdce6b5a9234277aa83b97a1b433ba38e1d5abf0df683322b7314b3e5a1675b116b16ea750a6124df202b4f71feb43318b994eac76e031e8e7e9e49f7b01f3be3b5a9334277aa83b97a86a19d51c70ead9f81fd500ef3891432abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3ea5c393a5b1efa9f6bc49a857a5d4218c9779a95a73d9c77e80a462ea5e61dce000fc7bc0c93eee1bcc359af4d5d11ba531d3cbece32b433ead8a1f5b3b01f263af38914326b6e8c0fb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb384dcb03cddae4cac59a8d72d84917cb7f1f284cf3de80e462ea5eedb390b3c6718f4616a6778dfce90d7a6ee08dda90e1e5f430ced8c3a76687d08f683322b7314b3e559e3cac49a857a6b843092ef0c2f4f210b6da6a5543f36043c1cfd3c533bc37eec76af4d6b2274a73a98abb733b433ead8a1f5db613fa48dd9f2f4b832b166a15e8f1046f2e179b9878927e7f1e422b4385fb1ed7aaf2bd7bbd72cbcdf0b8c5cfd618fc748eb98e3c84b3cbd4c3c0d1e4f438416e72bb66dff3a579ee65eb3f0fe3a60e4caa95e8f91d6a372aa0178d631f1347a3c8d115a9cafd8568bf5ae3cddbd66e1fdf5c0c89553eb3c465a8fcaa946e059cfc413d727ad1f87d871c7d778c48ecb95f188ad9aabe6aab96acea979e63c6a9e398f9a675473519a335c4785e3bd142300065cfaa08cdf1538ae3d99da998ffa3eb6de6b137e1fc33187f3f57d439995398e9969dca223ebc5267d028f879621662dc673dcb4d76b531ac64d4b319f4821b3ea3c36661bfb8ee4637764bdd8a44fe0f1d07207b3164ced0cfb833b83688d295e0eea609edec9d0ce0cc4a56dd3fa9db01fca613e914266d5796ccc36f65d89c72e3e4f1e63933e81c743cb5dcc5af0b4b3d81fdc1d446b4cf1725007f3f46e867666202e6d9bd6ef86fda0cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccb2996dec67271ebb387e8fb1499fc0e3a1e5d9cc5af0b4b3387e7f4f10ad31c5cb411ddce7f730b433037169dbb47e0fec076556666556666556666556666556666556666556666556666556666556666596cd6c633f27f9d8e1ef713036e913783cb43c87590ba67686e3f7f706d11a53bc1cd4c17d7e2f433b331097b64debf7c27e5066658e62b6b19f9b78ece27c1ec6267d028f8796e7326bc1d3ce627f705f10ad31c5cb411ddce7f731b433037169dbb47e1fec8772984fa4905975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de39855e7cad1d9c6be3ff1d8ede1f83dc6267d028f8796fb99b5e0696771fcfe81205a638a97833a98a70f30b433037169dbb44ef12a81f9440a993537c68759734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59426ed8d8cf4b3e76f87b768c4dfa041e0f2dcf63d682a99de1fd2f0f06d11a53bc1cd4c13c7d90a19d19884bdba6f507613f28b3324731dbd80f251fbb90f562933e81c743cb43cc5a30b533ec0f1e0ea235a67839a883fbfc61867666202e6d9bd61f86fd903666dc7f99e46287f76d528c2af76a7dcf77e56af0bdc0956bc0f74257ae05df8b5cb90e7c2f76e549e07b09b48d7c2f75e595e07b992baf07dfcb5d791df85ee1cabde07ba52bf780ef55ae3c04be57bbf2ede07b8d2bdf01bed7baf29de07b9d2bdf05bed7bbf2dde07b832b3f1b7c6f74e57bc0f726577e0ef8deeccaf782ef2daefc5cf0bdd595ef03dfdb5cf97ef0bddd951f00df3b5c7929f81e89f0bdd3959f07be77b9f283e07bb72b1f00df7b5c790af8deebca53c1f71750a6d7f7b9723df81e75e51cf8deefcad3c0f701576e00df075d793af83ee4ca8de0fbb02bcf00df475c7926f83eeacab3c0f731576e02dfc75d7936f83ee1ca73c0f749579e0bbe4fb9f23cf07dda95e783ef33aebc007c9f75e585e0fb9c2b2f02dfe75d7931f8bee0ca4bc0f74557c6fdfb97aefc10f8a85f79187cd4af3c1f7cd4afbc007cd4afbc107cd4afbc087cd4afbc187cd4afbc047c94772f051fe5ddcbc04779f772f051debd027c9477af041fe5ddabc04779f76af051debd067c9477af051fe5ddebc04779f77af051debd017c94776f041fe5dd9bc04779f766f051debd057c94776f051fe5dddbc04779f776f051debd037c94778f808ff2ee9de0a3bc7b17f89a5df9dde0bbc095df03be0b5df9bde0bbc895b19fb9d895df07be4b5cf951f0515ff87ef03dc3953f00be65aefc41f02d77e50f816f852b7f187c2b5df923e05be5ca1f055f8b2b7f0c7cadaefc71f0ad76e54f802fefca9f045f9b2b7f0a7c0557fe34f8da5df933e0eb70e5cf82afd3953f07be2e57fe3cf8ba5df90be05be3ca5f041f9dc7a99fb1c7b33d2e4907d2c8faa8cdad116d21df64684b5f90ec351dc5a26dd37a3b30d23e288c3f6361b48c6d1ea3e5e964d00cf38a9652df993a81a7838187a99de177a62eaf4ded5e9b7250e719d0ce2e867666202e6d9bd6bb2036c73e472d6add7697795ad4601d7742b3e7d3523ad2366cfe1622dad2c3dc16da36f54b3de310bbdb8b9df762637f4c4ba9e3ab1b98d73030dbedf626bfddf0f85aebb645394571f2d0a675a041526dc2d819671487fc35509edf345c97ea911e74fe22769bcbb42f91ddff5ca7f7b91cd4e989687f5f906cfb7b3d9e5e8fd9ee9386a6610e86e321cc811e8f83d6f3a05d6f8c763da01dd5c1f35f0b93766b3c1e5a6f011ebac6e9021f5d2b103f5e67b58e03b7dfef75457093af1b185b22180bc93386d73a2d1e23ad1780917c6b80a79b49337f5f2ff3f4c1f3729d57873e5b037556c3b9311b51d71e774b33c3eda2efe07f0c92edd3eb18f4c2f18100f4093c0d03d08bda59cbc03335181e23383b3478a6ff9681cb07fa8f6400adc6c3c4d74c4433aac087e5ea085f108c1c0ac121591a0ac121d92a4f161c82a1faf6ab946d160d370c9c3c3ef4cc5303a70e9fb9fbf4d0c091bd83b72075ad478fa4712d4052f4d13239181eb4e90b929d8ca9f362954a9ec9f03a09dea73af9a7b7b431b5333ce94df1da54e7b52907756ae1bd290cedcc405cda36ad4f89889d6047146a3175145a4c8de0993ace5ae0c037f9f048a5f771f2a4ca6b0b1ed1d8263fcf136d10055c0adbcf3838fb9e3dd86b5d632605c33b9b7a4f7b456b77821d31b5672d3b226a47406d17644738ed88a63da9d9114b3b42694724ed08a41d71b4238c7644d18e20da11433b42d81c144700ed889f1de1b3237a9700db5781d77eabb667483b226747e0ec889bbdb2b25700f66ac45e7ddb2b453bfa61af10ec374b3bca60cfb6f64ac69ea5ed99d55e29da2b447b456faf70ed2cd506631b9dd69b8c6d36b6c5d85663db8c6d37b6c3d84e63bb8ced36b6c7d85e63fb8ced3776a9b1cb82e2e8fae5c6ae3076a5b1671abbcad8d5c6ae3176adb1eb8c5d6fec0663371abbc9d8cdc60e1aeb3776c8d86163478c0d183b6aec1663c78c1d37f62c63b706c53b744e1a3b656cd0d86963b7193b63ec6c509c31b333647646ccce80d9192f3bc36567b4ec0c969db1b233547646cace40dd1f146798ec4c919d19b2b3027616c08efadb51fe1706c5517c3b6aff92a0382a6f47e1eda8bb1d65b7a3ea7614dd8e9adb51723b2a6e47c1eda8b71de5b6a3da7614db8e5adb516a3b2a6d47a1eda8b31d657e24288e22db51633b4a6c4785ed28b01df5b5a3bc8f06c5515c3b6a6b4769eda8ac1d85b5a3ae7694d58eaada51543b6a6a4749eda8a81d05b5a39e7694d38e6ada514c3b6a694729eda8e4978c3d66ecaf8cfdb5b1bf31f6b7c6feced8df1bfbb2b1af18fb0763ff68ec9f82625efeb3b17f31f63563ff6aecdf8c7dddd8bf1bfb86b16f1afb0f63df32f6b8b16f1bfb8eb1ef1afb9eb1ef1bfb81b11f1afb91b1ff34f663633f31f653633f33f67363bf30f64b63bf32f66b634f187bd2d86f8cfdd6d8ef8cfdded853c1f0ec0676227f702b34d2de3f343470f2f450f3d060f3c9db4f0c1d3f7de2eee63b8f0f1d6b1ebc63e0ccd1138377e287dfe7ba2d9a46d874e64cffddcdc74f1d19b8ab79f0f6a1e6c1a3cd87066f3f75e42c7ee8cbee430bcf8dd87fe4487cb06f553d0dd2ef8e31e82fdde768826657e9b63d3116419e1acb8766568fad4197bab30e7d7bbfa278b5db7cf6c4e05073bef994f9db7fc27c66e0486b33be77d6887c76a8f9ec50ff99a1e6a367064f36b7b5e276af9d328646d4348de143ad4da36f79f0ffd2fd24f2250a0400", + "bytecode": "0x1f8b08000000000000ffed9d77741cd5f5c767d55c16ad2cdb722fa2396e9257ab2e37b9778381d08b655bc60eb6656cd142081020bdf74a48851420219514d27b6f04d22b0492c0ef9fdfc9effc7ee7707eefcdbe1b7df5fc66a35de6c977b477ceb9da3777dfcefdbcefdc7933fbdeece8e9200852417ea954767a70e242eff79ad7ecb35b5a62dc56d627672a219c1509e1ac4c0867554238ab13c2599310ce7109e11c9f10ce0931726ab68a60f81237ef440fbac6cd984e98a6a72440d3da84699a4980a6754132faa84909e1ac4f08e7e484704e4908e7d48470362484735a4238a727847346423867268473564238672784734e4238e72684735e4238e72784b331219ca72684f3b484709e9e10ce3312c279668c9c4b807381797d8e795d685e1799d7c5e6953eb3d4bc3699365699f56665cb349bb216ebbd9cb256656dcadaadf73a94752aeb52d66dde6b34eff5285bae6c85b295ca56295b6d7458a36cadb275cad62bdba06ca3b24dca362bdba26cabb26dcab62bdba16ca7b2b3949dad6c97b273949dabec3c65cf5576beb20b945da8ec228be562659728bb54d965ca2e577685b2ddcafa94ed51b657d93e65fdcaf62bbb52d9016507953d4fd955ca0e293bacec88b2016547955dadec98b2e3ca06955da3ec5a65d729bb5ed90d9666cf5776a3b21728bbc9e27ca1b29b95dda2ec56652f52769bb2db95dda1ecc5ca5ea2eca5ca5ea6ece5ca5ea1ec95ca5ea5ecd5ca5ea3ecb5ca5ea7ecf5cadea0ec8dcadea4eccdcadea2ecadcadea6ecedcadea1ec9dcade6558e840b853d9bb95dda5ec3dcadeabec7dcadeafec03ca3ea8ec6e65f728fb90b20f2bfb88b28f2abb57d97dcaee57f631651f57f680b24f28fba4b24f29fbb4b2cf28fbacb207957d4ed9e7957d41d917953da4ec4bcabeacec2bcabeaaec6bcabeaeec1bcabea9ec5bcabeadec3bcabeabec7bcabeafec0796e63f54f623653f56f613e3fba979fd99a94be3623f57f60b537ed8bcfed2bc3e625e1fb53ef32b65bfb67cbf51f65bcbf73b65bf37e53f98d73f9ad73f99d73f9bd7bf98d7bf9ad7c7ccebe3e6f56fe6f509f3faa479fdbb79fd8779fda7797dcabc3eadecec867c797c30b4f40631f5516dfbb37a4e85c45f100c5fb41695e63d7a6d34fe2ab34eafa45db559afb6fc3566bdc6dace78b33edef2d79bf57acb3fc5ac4fb1fc0d66bdc1f24f37ebd32dff1966fd0cf0a7031873357eedab34ae14f8285f2bc0576d7c95e0aba1cd816f9cf155838ff66f0df82618df38f04d34bef1e04b1bdf04d252d929c6d71bc4952bd93ebddddab8b76be6a132f1f3eed5dbadf3c43b297ede7ebddd7a0fbc3a3f269b6d4d82bc99627cf5e09b6a7c93c167baa07f1f73da37cdf8a6826fbaf135806f86f14d03df4ce39b0ebe59c637037cb38d6f26f8e618df2cf0cd35bed9e09b677c73c037dff8e682afd1f8e681ef54e39b0fbed38caf117c748fcba9e03bc3f84e03df99c6773af8a8af3d037c746d78a6f1e97e627c0a3e63fcd447859fa1fe197c0ba96f06df22ea97c1b798fa64f02d81d8e45b0afd0af99a8c8ffa28fd5e8f29f706711d13b9f098581ef776d596f57657c6bfdd70de6e5530a4752fc4590e5aad36e518ef0d6ac1d829631487fc5550de0275a91ee941e71962d7fdfe0a535e5de0733dd6e732506785a3fdbd41bced5f69f1acb498aba1fd7e72b63527393be2a5e89cbd00eadab947d73c633167b70387879ced909c1df15274cef6435d3bf7e8ba772ce6ecc5c0e12167fbfce46c2e2b399b1f230b0277eed1779fb198b3078023fe9c6d979c1df95274cede0a75eddca3efbf633167af058ef873b6b34fae0d46bc149db3af81ba76eed158cc58ccd9db81c343cef64b3f3be2a5e89c7d17d4b5738fc605c762cebe1e38e2cfd96e4f39db2a391be4e73b83c09d7b34463d1673f62ee0883f67f7caf8ecc897a273f641a86be71ecd978cc59cbdcf94f53cc34fcd3cc31cf0fdccf8e6026ffcb9bdafcd536ee724b7f3f78104813b4769ee6e2ce6f643a6acf3f861b8f7807cbf34be53c1f788f19d06be478def7468978763a04f8e81112f451f03bf86ba762ed33cf2583c067e0c1c1e7276afe4ec8897a273f609a86be71eddd3301673f677c0e12167fb256747bc149db3ff82ba76ee2d34e5b198b3745fa9be5ef883b95e580cbe3f1adf12f0fdc9f89682efcfc6d704bebf185f33f8fe6a7ccbc0f798f165c1f7b8f1b580ef6fc69703df13c6d70abe278daf0d7c7f37be76f0fdc3f83ac0f74fe3eb04df53c6d705bea78dafdbf8f43d7974efd5778d4fef5bd2a8378877dfd23d96b46d5a5f3a0ab1ebacd875a318bbde8a5def88dde421761a62d092b2d67ba1dce497279b0986fffe83622d8b3f56ab6e7b7330f2b62f039eac87b6a721c64878b2c0d3123f4f78af6f2efeed86fbb8d9d2340db19aa15dad1eda958258b46d5aa77819f061ffddea606c8b9f31978258b46d5a6f0346f2e1f984ceeb74fce8f3e182d410af876329bc26a278f4ec2fe258067eaaf3d4d421b6c586ad16dec7736b8be5f39497615e502cda36ad53bc5a684fcbe833e646ca98b5187df511298845dbb663e3f1de34fa9a8d68bf66c07712faa45ca97d522db08dc6754ad4bee612dbc7f92a0531a86f23cd73e0a73ad3cc0f1274dfb609fa5d0fc75faed8eb37ec0fe2cfe35c168feb91f0b4028f8f63dfd3f19ac5f3fe3341bcb9d66e69d5626995813a6da05fbb07fd0a5d87503c61166661166661166661166661166661166661166661166661166661166661e6cf8cf75fe0fc26d55bca84917c39e0f131ce1f3e3fca6c8bb6afe7751e81799df8e72d72599cb3a47b0c17596dae823a4fa686eafe06e6d3edb9419cd35cea57bb11dd67511b9c3817eb730e316a1ed8357fd9185becdc5e5ff36dfa1e35fd1cb2664bd7a50e4d3ddca7324cd394a529dea7b8c4e2d1793ab37288cdc7dc5fb17391a81595e39cdbc37b0cfcee977cff41b950110cef3ff03cd3117bece17398345fde61c5ae823aff931ada37742f2afd9f43fb9e275da7d3da367d6611f83bad6d4f329f258e6a6bfbcdf059aaf37fd0a7de5911fc5b331ff77f60bf1c405b71e98532ce9bc77f1ececfe3b716c1d30e3c3efa194fd71b593c06e29ec7efb4b4725dc7509d0ed0afd3837eae6b515aa778c22cccc22cccc22cccc22cccc22cccc22cccc22cccc22cccc22cccc22cccc2cc9f197f2b4aac69a89763c2384af73e84f319f4fc17dabe9ed77965c5505cdff37034e7b4d86a7315d4f941c550ddd79a726d70e2fd0e51fbd2c37c5ec17d49f16aa13d3817e4ebf7dc6d164f9b430b2a37c6163b3f8f1fbfc643f3f8ad96ae3987a6be8e579c63454df1786db178706eb43638f1de92346c6734ee1d8aca0b8a87c7521bf8a88cbf8ff6b19ff15c62dfd743f170fefa1ea3eda4c0d7becf657df61b5dd0a6dee0c4fcae823af742df77bf29e33d1c78efc8438ef76929344f4dfa7979965d363fefbb1c387b210ec65e01ac31c56ec1d829631487fc5550fe62c5505daa477a90d6c4ae8f117a2618b2db9f6bb13e97813add8ef6f706f1b6bfc7e2e9b198f53e7900f2ec2138fffbea93ba23345a041a511dbc0ef2754f9edd47daf737e27d7b35561dbc66a13adf843e2aeafe51d73d87bece6351f71cbaae8ddb81d16ea37d9f67b9dfa7f530f41771dfa7f530e410dea71558db5f0cdb27ae9a20fadc42757e656ddfbe26a7cfe07d6054e7b7d05fd4997b166b8313afbff19ea9d1f87e15759f34c5c3eb1a3cb6ff53db357317d4ef8d9119730259f03a81ea3c6eedb3ce08ee658ecf3e19f159d28a9e4385df5f6cfdb40eddf099de5874c81ff33d565b28afbba12d54e7bfac6bc0f8af5bf2d780f1b775f83509f5036d8eb6529dff8663ed5f708d47fb09bf77d4549ef83e2d85ae01493fdde6d17e3e30c6e6f07ce0eacaa1baf6737e49eb629f0fdc617d8ee3f381ff17f2ac06ee43f7d557af88d06831684475f0b741741ec167f9bace31beeeed8f3ac7b89e4189fd735de5e8b3d9e36aae6b04aa439fc56b84a9867992d1d9ae6b8f17d2f932cefb86f1b712cd10177f2bd1ec49cf2ce8d60beb785d703263673dc58e7ae674761462473d737a3462d75bb1eb4731b6682e9a73d2dcc33391c3df9fe1334bf552e8ba941832f0b98a0430562680b12a018cd50960ac4900e3b804308e4f00e38404304e4c00631a184fe6b9dd833eb952f5f1b5bf0a5d6b606c0fffbb2457ecffeff0fcbf540a5efb606c0fdfe9422d9a82916b81dff37c3cfba1d8fff5420cf8bf0b262780714a0218a72680b121018cd312c0383d018c3312c03833018cb312c0383b018c7312c03837018cf312c0383f018c8d09603c35018ca72580f1f404309e9100c63313c0b8401863615ce29731572aa3e6f1f13fff9ecdff1cf3c09375dd73eae9b72745ffbf35cfcf276d29f5b971786f89dfff09f7ec9e6de7e3de91629f6d57e8ffad7a62cc95cae8eb3e76fc1dcf4878f07791aedfd67860cc95cae8ebf72ff81bbd91f0748066ed0ecd3c30e64a65f475af5cb1f772e23dfd1d0ecd3c30e64a65c4fbaa63e40935eb2c82a70b34eb7468e68131572aa3affb92d31063243cdda0599743330f8cb952193dfdb62dd4acbb081efc0d58b743330f8cb9521935cf724f9af514c1b31c34eb7168c6891179e27e4e768f23968fdf0c16db766240c60909609c980046bc4fc247ff55e83e891ebffae44ad5c7d7fe2a749f04c6f6f0fb98500bfc3dc47fd262a55f9e82f74960ec559eb4c0dfabfc272d56018f8fdfcfa421c648788821039f9b9c00c62909609c9a00c68604304e4b00e3f40430ce4800e3cc0430ce4a00e3ec0430ce4900e3dc0430ce4b00e3fc0430e277550fd78a05bfbfac1ae3b1a3beab8cf5d851df4bc67a6cc973c9f372882d792e795e0eb125cf25cfcb21b6e4b9e47939c4963c973c2f87d892e792e7e5105bf25cf29c53ec248cf10be3d863449ec6f878b2d8768cd5cba0edbd0e9e94a7b663ac350cda4e0c49635c9d00c6e50960141df3f72096c2a879d67ae2595304cf5ae059e789676d113ceb80677dfc3c614ead2b82871832f0b9e509605c9d0046d15174e4c4283a968f8ec2288cc2288c278331097db83026221f73a5326a9e0df1f3849aad2f82670368469f6bf1cb982b9551f36c8c9f27d46c43113c1b41b30d0ecd3c30e64a65d43c9be2e70935db5804cf26d06ca343330f8cb9521935cfe6f87942cd3615c1b31934dbe4d0cc0363ae5446cdb3257e9e50b3cd45f06c01cd363b34f3c0982b9551f36c8d9f27d46c4b113c5b41b32d0ecd3c30e64a65d43cdbe2e70935db5a04cf36d06cab43330f8cb9521935cff6f87942cdb615c1b31d34dbe6d0cc0363ae5446cdb3237e9e50b3ed45f0ec00cdb63b34e3cab83c018cab13c0e859c75ca98c9a67a7279e1d45f0ec049eb33cf1ec2c82e72ce0393b7e9e30a7ce2a82871832f0b9e509605c9d0046d15174e4c4283a968f8ec2288cc2581c636f0218655f0b2357460fdfaf0afe86e6ac311ebbce8a5d5726b1a37e4333d6634b9e4b9e97436cc973c9f372882d792e795e0eb125cf25cfcb21b6e4b9e47939c4963c973c2f87d892e792e7e5105bf25cf2bc1c624b9e4b9e97436cc973c9f372882d792e795e0eb125cf25cfcb21b6e4b9e47939c4963c973c2f87d892e792e7e5105bf25cf2bc1c624b9e4b9e97436cc973c9f372882d792e795e0eb125cf25cfcb21b6e4b9e47939c4963c973c2f87d892e792e79c62ef8a3f76aed867ccec021e1fcfbcf1d4ceacdeee39665bcfc4a89fd6ea5c4babb32cad3250e71cd0ef5c0ffaa5202e6d9bd6295eb1cccf61c0ec29764ef72f13a0fd1463b5a5878e7f9ea7b647f5f5e78df1d8517dfd588f1dd5d78ff5d892e792e7e5105bf25cf2bc1c624b9e4b9e73898de5ea60e8ba9d9e7faab7f15c53ae32ebc84a7eaa73f6b8fceba4408e211fb1e51892734539c4963c973c2f87d892e792e7e5105bf25cf2bc1c624b9e4b9e97436cc973c9f372882d792e795e0eb125cff9e57906deaf18059ec0e2090af0ac62c6b39519cf26663c5dcc78e631e36967c63383194f8e19cf64663ceb99f14c60c6b388194f25339e35cc78b2cc78b633e399cf8c6731339e99cc78a630e399c88ca78a19cf5a663ccb98f1ec60c6b38d194f0f339e05cc78ba99f16c60c6d3c18c6716339e56663c5399f12c61c69366c6d3cc8ca79a19cf66663c4dcc781632e3d9c98c6705339ed9cc781a98f19cc28ca796194f0d339e95cc78b630e3d9c88ca79319cf1c663c6dcc78a631e359ca8c27c38ca78e19cf3a663ce398f1cc65c6339d19cf24663cf5cc78c633e3198de70d15c39362c0930e4e7c26591adedf05be0aebb3babf6a69187aff7ce3af80cf5c60ca958e6d9f0f3efa6df8058ecfa24ee7435b7a4d39fbec9650278cd50beb14af16382e60c2b38b19cf78663cf5cc782631e399ce8c672e339e71cc78d631e3a963c69361c6b39419cf34663c6dcc78e630e3e964c6b39119cf16663c2b99f1d430e3a965c6730a339e06663cb399f1ac60c6b39319cf42663c4dcc783633e3a966c6d3cc8c27cd8c6709339ea9cc785a99f1cc62c6d3c18c6703339e6e663c0b98f1f430e3d9c68c6707339e65cc78d632e3a962c6339119cf14663c3399f12c66c6339f19cf76663c59663c6b98f15432e359c48c6702339ef5cc782633e3c931e399c18ca79d19cf3c663c5dcc783631e3d9ca8c6715339e0a078f87ff7f19f2d0fd6bb46d5adfc524b687fd10fedfcf0b3db5e922b3ad6ab35de2a7785550e7627361a0efafc2cf12977dbf21de3b7711687491a7b6d0fe4859fbc773ec1cde5719004360e91338787cdc8feaa99dc3f230c6ff3f9bd55a5d6c6965efbb0cd4b910f4bbd8837eaedcfef731605e93c8ac79e8dc41ac69a8b78a0923f9cef3cb131eb7ab82e14ba1e3f662e0f1d187796a67787c5d62b569954377aa83b97a898776ba8e1d5abf04f643d29835cf1a5326d634d45bc384917c17f9e5098faf35c1f0a5d0f17509f0f8e87f3cb5333cbe2eb5dab4c6a13bd5c15cbdd4433b5dc70ead5f0afb2169cc9a67ad29136b1aeaad65c248be8bfdf2b4a5a1cdb4143abe2e051e1ffd8fa77686c7d765569bd63a74a73a98ab977968a7ebd8a1f5cb603f08b330bb98350ffdc68458d3506f1d1346f25de295a72d9b8636d352a81fbb0c787cf4f39e740ffbb1cbad36ad73e84e7530572ff7d04ed7b143eb973b623706f16a71c508b4b8c2c173c5286b41f18a65be3081cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a8bce7a119d4567d159748e835974169da3984567d1398a5974169da3984567d1398a5974169da3984567d1398a5974169da3984567d1398a5974169da3984567d1398a5974169da3984567d1398a9983ce9a879e1143ac69a8b79e0923f92ef5cb13fe2e687d307c4959ebbd50be02782ef3a08fa77686f790efb6dab4dea13bd5c1e36bb78776ba8e1d5adf0dfb617711cc97279059742e8d59f3d0b36289350df536306124df657e79c27e6c43307c29d48fed061e1ffdbca77686fd589fd5a60d0edda90e1e5f7d1edae93a76689de209b33047316b1efa1f36c49a867a1b993092ef0aaf3cb9f0f78d1b83e14ba17eac0f7876c7ce93efc73ce81ef6637bac366d74e84e753057f77868a7ebd8a1f53db01f8a61be3c81cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a978fce9a87fe7708b1a6a1de26268ce4dbed95a7359c77d8140c5f52d67a2f94f7004f5fec3cf979070fba87f30e7bad366d72e84e75f0f8daeba19dae6387d6f7c27e18ebcc9727905972637498253784398a59724398a398253784398a59724398a398253784398a59724398a398253784398a59724398a398253784398a59724398a398253784398a59724398a398253784398a59724398a39839e486e6d96ccac49a867a9b993092afcf2f4ff8dc83cdc1f0a5d07d3b7b81678f077d3cb533bc6f679fd5a6cd0edda90e1e5ffb3cb4d375ecd0fa3ed80fc22ccc2e66cdb3c59489350df5b6306124df1ebf3c613fb62518be14eac7f6018f8f7ede533bc37eacdf6ad31687ee540773b5df433b5dc70eadf7c37e10666176316b9eada64cac69a8b7950923f9f6fae509fbb1adc1f0a5503fd60f3c3efa794fed0cfbb1fd569bb63a74a73a98abfb3db4d375ecd0fa7ed80fc22ccc2e66cdb3cd9489350df5b6316124df3ebf3cb934b4999642fdd87ee0f1d1cf7b6a67d88f5d69b5699b4377aa83b97aa58776ba8e1d5abf12f643d29835cf765326d634d4dbce84917cfd7e79c2e36b7b307c29747c5d093c3efa1f4fed0c8faf03569bb63b74a73a98ab073cb4d375ecd0fa01d80f4963d63c3b4c9958d3506f071346f2edf7cb131e5f3b82e14ba1e3eb00f0f8e87f3cb5333cbe0e5a6ddae1d09dea60ae1ef4d04ed7b143eb07613f248d59f3ec3465624d43bd9d4c18c987e78b9d9e786a2d9e5a87166331769d15bbae4c62d75bb1ebcb24b6e4b9e47939c4963c973c2f87d892e792e7e510bb5c734d342f4fcd532751f3d449d43c259ab3d4fc99f862b76782a1a502621df0d44e5c7aa18ce373b47431e399c78ca79d19cf0c663c39663c9399f14c60c6b388194f25339e2c339ef9cc781633e399c98c670a339e89cc78aa98f12c63c6d3c38c6701339e6e663c1dcc786631e36965c6339519cf12663c69663ccdcc78aa99f13431e359c88c6705339ed9cc781a98f19cc28ca79619cf2e663c35cc785632e3e964c63387194f1b339e69cc789632e3c930e3a963c6338e19cf5c663cd399f14c62c653cf8c673c339e14039e7470e2ef51f0f70495e0a3fbfb7782ef79a6bc0b7c158e18b49d83e0a3f153da86ee6f56349cc850019fb9cac1f53c473c8a7395e3b3a3a13bc6ea85758a570b1c5731e119cf8ca79e19cf24663cd399f1cc65c6338e194f1d339e0c339ea5cc78a631e36963c63387194f27339e95cc786a98f1ec62c653cb8ce714663c0dcc786633e359c18c6721339e26663cd5cc789a99f1a499f12c61c63395194f2b339e59cc783a98f17433e359c08ca78719cf32663c55cc782632e399c28c6726339ec5cc78e633e3c932e3a964c6b38819cf04663c9399f1e498f1cc60c6d3ce8c671e339e2e663c150e9e5d9e78a29ea7b08b416c3d8f43e72a1a334cc3fba3f13bc05d1623ad1f0046f2e17da8594f3c51cfa0c83288adb5580665bda4e17dfc1d97af9cca5a8cb4eeca29bc2f6d99279ea8e7762c63105b6b416397740f401adec7df2df8caa9651623adbb72aade2f4ff8bf259a82e14ba17b8df098f3b10f3db5338bc75f8ccfd0703e8bbac9d22a037546e33ef9a8fe80e209b33047316b1e9abb20563c9f8dc6efde46c2e83abf7ae009fbc7e660f852a87f3c003c3ece1f9eda19f66387ac36353b74a73a98ab873cb4d375ecd0fa2147ecc6205e2d0e8f408bc30e9ec3a3ac05c52b967957029939e8ac79e8de36624d43bda54c18c997f5cb13f68f4b83e14ba1fef130f0f8387f786a67d8271cb1dab4d4a13bd5c1e3eb888776ba8e1d5a3f02fba118e6430964169d4b63d63c34864cac69a89763c248be035e7972d934b4999642fdd811e0f1d1cf7bd23decc706ac36e51cba531d3cbe063cb4d375ecd0fa00ec0761166661166661166661166661166661166661166661166661166661166661e6cdac79e8b78dc49a867aad4c18c977d82b4f7edea13518be149a7718009e23b1f3e4e71d3ce81ece3b1cb5dad4ead09dea60ae1ef5d04ed7b143eb47613f08b3300bb3300bb3300bb3300bb3300bb3300bb3300bb3300bb3300bb3300b336f66cd43cfdc26d634d46b63c248be237e79c2df6db505c39742f30e4781c7c7bc8ca77686f30e575b6d6a73e84e753057aff6d04ed7b143eb57c37e10666176316b1e7ab615b1a6a15e3b1346f20d78e5c9cf9fb607c39742fdd8d5c0e3a39ff7a47bd88f1db3dad4eed09dea60ae1ef3d04ed7b143ebc7603f14c37c2881cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a978fce9a87fee71ab1a6a15e071346f21df5cad31ace3b7404c39742f30ec780c7c7bc8c27ddc37987e3569b3a1cba531d3cbe8e7b68a7ebd8a1f5e3b01fc63af3a104324b6e8c0eb3e4863047314b6e087314b3e4863047314b6e087314b3e4863047314b6e087314b3e4863047314b6e087314b3e4863047314b6e087314b3e4863047314b6e087314b3e4863047314b6e0873143387dcd03c9da64cac69a8d7c984917c57fbe5099f7bd0190c5f0addb7731c788e79d0c7533bc3fb7606ad36753a74a73a787c0d7a68a7ebd8a1f541d80fc22ccc2e66cdd365cac49a867a5d4c18c977cc2f4f2e0d6da6a5503f36083c3efa794fed0cfbb16bac36753974a73a98abd77868a7ebd8a1f56b603f248d59f3749b32b1a6a15e371346f2e179b9db134fadc553ebd0e264c5d65af498f229e6350deff700a3affeb0db62a475cc71f2d5024f8f279e3a8ba7cea1c5c98aadb5580165bda4e1fd15c0e82ba77a2c465a77e5541df0acf0c4536ff1d43bb43859b1b5162b4d7992794dc3fb2b81d1574eadb01869dd9553f5c0b3d2134f549fb4721462471d5fa3113b2a574623b6682e9a8be6a2b94fcd532751f3d449d43c259ab3d2dcc3755438de4b310260c0a517caf85dc1c7b5a7a776665ddfc7565a6dc2ef6338e670b2be6f08b33047317b1ab7684b5bb1499fc0e2a165d0b316a3396eda63b52909e3a685980f259059742e8d59c7be36fed86d692b36e913583cb45ceb590b4fed0cfb83eb02b7c6142f0375304faff3d0ce14c4a56dd3fa75b01f8a613e944066d1b934661dfbfad863e79f278fb1499fc0e2a1e57acf5af86967be3fb821706b4cf1325007f3f4060fed4c415cda36addf00fb41988559988559988559988559988559988559988559988559988559988559987933ebd8cf8f3d767efc1e63933e81c543cbf33d6be1a79df9f1fb1b03b7c6142f0375709fdfe8a19d29884bdba6f51b613f08b3300bb3300bb3300bb3300bb3300bb3300bb3300bb3300bb3300bb3300b336f661dfb05f1c70e7f8f83b1499fc0e2a1e5059eb5f0d4ce70fcfea6c0ad31c5cb401ddce7377968670ae2d2b669fd26d80fc22ccc2e661dfb85b1c7cecfe7616cd227b0786879a1672dfcb433df1fdc1cb835a67819a883fbfc660fed4c415cda36addf0cfba118e6430964169d45e72866d159748e62169d45e72866d159748e62169d45e72866d159748e62169d45e72866d159748e62169d45e72866d1b97c74d6b16f893d766b387e8fb1499fc0e2a1e516cf5af869677efcfed6c0ad31c5cb401dccd35b3db433057169dbb44ef1ca81f95002992537468759724398a398253784398a59724398a398253784398a59724398a398253784398a59724398a398253784398a59724398a398253784398a59724398a398253784398a59724398a398253784398a99436ee8d82f8a3f76f87b768c4dfa04160f2d2ff2ac85a77686f7bfdc16b835a67819a883797a9b8776a6202e6d9bd66f83fd20ccc2ec62d6b16f8f3f762e6dc5267d028b8796db3d6be1a99d617f7047e0d698e265a00eeef33b3cb433057169dbb47e07ec87a431e3fe4bc5173bbc6f9362549857ed7bb1295782ef25a65c05be979a7235f85e66ca35e07bb9298f03df2ba06de47ba5292f01dfab4c7925f85e6dca2bc0f71a53ee01df6b4db91b7caf33e541f0bdde94af01df1b4cf95af0bdd194af03df9b4cf97af0bdd9946f00df5b4cf9f9e07bab29df08beb799f20bc0f77653be097cef30e51782ef9da67c33f8de65cab780ef4e53be157cef36e505e0bbcbe17b8f29bf087cef35e5dbc0f73e53de05bef79bf204f07dc0942782ef8350a6d7bb4df914f0dd63cab5e0fb902967c0f76153ae03df474c7912f83e6acaf5e0bbd7942783ef3e539e02befb4d792af83e66ca0de0fbb8294f03df03a63c1d7c9f30e519e0fba429cf04dfa74c7916f83e6dcab3c1f719539e03becf9af25cf03d68caf3c0f739539e0fbecf9b32eedf2f98f2ede0a37ee50ef051bff262f051bff212f051bff252f051bff232f051bff272f051bff20af051debd127c9477af021fe5ddabc14779f71af051debd167c9477af031fe5ddebc14779f706f051debd117c94776f021fe5dd9bc14779f716f051debd157c94776f031fe5dddbc14779f70ef051debd137c9477ef021fe5dd9de0a3bc7b37f828efee021fe5dd7bc04779f75ef0359af2fbc077aa29bf1f7ca799f207c077ba29633f738629df0dbe334df91ef0515ff821f03dc7943f0cbe85a6fc11f02d32e58f826fb129df0bbe25a67c1ff8969af2fde06b32e58f81afd9943f0ebe65a6fc00f8b2a6fc09f0b598f227c19733e54f81afd5943f0dbe3653fe0cf8da4df9b3e0eb30e507c1d769ca9f035f97297f1e7c741ea77e461fcffa18241d4823eda336373bda42bef1d096de20de6b3a8a45dba6f55660a47d901b7dc6dc48195b2c46cdd3ee4133cc2b5a0a7d676a079e360f3c9eda197e67eab0dad46ab52903759e03edecf0d0ce14c4a56dd37a07c4f6b1cf518b6ab3dd8596165558c79cd0f4b9b3908eb40d9dbf39475bba3db785b64dfd52f728c4eeb46267add8d81fd352e8f8ea04e62e0fcc7abb3df16f373cbe969b6d514e519c2cb469056810579b3076ca18c5217f159467350cd5a57aa4079dbf885de732ed4b64b73fd76e7d2e0375ba1dedef0de26d7f8fc5d36331eb7d52d730c4e1e1780873a0dbe2a0f52c68d713a15d37684775f0fcd7e449bb2e8b87d69b8087ae713ac047d70ac48fd759cda3c06df77b1d0e6ef2750263938331173f6378add36431d27a0e18c9d7053c9d9e34b3f7f5424b1f3c2fd75875e8b3555067199c1bd38ebafab85b901a6a177d077f2688b74faff1a0178e0f04a04f606918805ed4ce6a0f3c1383a13182e38303c7faaeec3fa7bf6f5f0ad0aa2c4c7c4d399a51013e2c573a7c41307c2804876469280487642b2c59700886eaebaf52ba5934dcd07ff8e0e0738ff41fd97bec86a383fdfbb60f5c89d4d5163d9246b50049d147cbf86068d0a637887732a6c68a552879c6c3eb38789fea649fddd2e2a99de1496f82d5a61aab4d19a8530def4df0d0ce14c4a56dd3fa0447ec183ba2508b8923d062a28367e2286b8103dfe4c32395dec7c9930aab2d7844639bec3c8fb5411470016c3f65e0f47bfa60af368d19170ced6cea3df588aabeaad53b428f90ea33971e01d55d901ee1d4239afaa4a6472cf508a51e91d423907ac4518f30ea11453d82a8470cf5086163901f01d4237e7a844f8fe89d096cdf055efdad5a9f21f5889c1e81d3236efaca4a5f01e8ab117df5adaf14f5e887be42d0df2cf528833edbea2b197d96d667567da5a8af10f515bdbec2d5b354ab94ad365aaf51b656d93a65eb956d50b651d926659b956d51b655d93665db95ed50b653d959cace0ef2a3ebe7283b57d979ca9eabec7c651728bb50d945ca2e567689b24b955da6ec72655728dbadac4fd91e657b95ed53d6af6cbfb22b951d507650d9f3945d15e4efd039acec88b2016547955dadec98b2e3417ec64ccf90e919313d03a667bcf40c979ed1d233587ac64acf50e919293d03754b909f61d233457a6648cf0ae859003deaaf47f95f1ae447f1f5a8fd2b82fca8bc1e85d7a3ee7a945d8faaeb51743d6aae47c9f5a8b81e05d7a3de7a945b8f6aeb516c3d6aad47a9f5a8b41e85d6a3ce7a94f9ae203f8aac478df528b11e15d6a3c07ad4578ff2de13e44771f5a8ad1ea5d5a3b27a14568fbaea51563daaaa4751f5a8a91e25d5a3a27a14548f7aea514e3daaa94731f5a8a51ea5d4a3925f54f690b22f29fbb2b2af28fbaab2af29fbbab26f28fba6b26f29fbb6b2ef04f9bcfc9eb2ef2bfb81b21f2afb91b21f2bfb89b29f2afb99b29f2bfb85b28795fd52d923ca1e55f62b65bf56f61b65bf55f63b65bf57f607657f54f627657f56f617657f55f698b2c795fd4dd913ca9e54f67765ff50f64f654f297b3a189addc04ee45f668546dafb0607fb0f1f1d6c1c1c683c7ccda1c183470fddd078ddc1c1038d03d7f61fdb7f68e03afcf0dda6dba2698435c78ef5ddd078f0c8befeeb1b07ae196c1cd8dfb867e09a23fb8ee387be613e34e7c4887dfbf64507fb45c5b3207db4c4a08f99cfd104cd96c26d7ba214419e2ee543532a4b6bd059e6ac43dfdecfcd5fed361e3f3430d8986d3ca2fef61d529fe9dfd7dc88ef1d57221f1f6c3c3ed8776cb071ffb181c38d2dcdb8dd8b2694d088aa86123ed4dc30f29607ff0fdefd5461250a0400", "isInternal": false } ], - "packedBytecode": "0x000000028df71de500000047d81f8b08000000000000ffed9d779c14c5baf77b6141647645ccd9c5848ae232647681c19c30a38888b02c2b28b0443163961ccc19094ace02028a80184ecec993f4783ce9de7bcef9dc3fee7bef1b7c6fd74c3d777f5b542f3b6bd7f09b9deacfa776aa9fadeee75bbf7eba3a5577fd330882a22033b50cd319c1fe93fc3fa57fcbbfd9d425c67595bbe42cca13ce1679c2d9324f388bf384b3559e70b6ce13ce43f284b34d9e701e1a23a7626b11d49fe2e66deb40d7b8191379a669491e685a9a679a1e96079ab60bf2a38d3a3c4f38dbe709e71179c279649e701e95279c47e709e73179c2796c9e701e97279cc7e709e70979c279629e709e94279c27e709e72979c2796a9e7096e50967873ce13c2d4f384fcf13ce33f284f3cc3ce13c2b46ce4ec0d951ff9ead7fcfd1bfe7ea5f297b9efe3d5fff76d6752cd6f31728ae30a9873449e37f5dc3d42d4cddc3d4c3f85fcf30f50a53ef30f5d1ff2bd3ffab08536598fa86a95f98fa6b0d0684e9c2305d14a68bc37449982e0dd36561ba3c4c5784e9ca305d15a6abc334304cd784e9da305d17a6ebc37443986e0cd34d611a14a69bc3744b980687e9d6300d31586e0bd3d030dd1ea66161ba234cc3c334224c55611a19a6ea308d0a534d98ee0cd3e8308d09d35d61ba3b4c63c3342e4ce3c3541ba609619a18a649619a1ca629619a1aa67bc2342d4cf786e9be30dd6f68f640981e0cd343617ad8e09c1ea647c2f468981e0bd3e3617a224c4f86e9a9303d1da619619a19a659619a1da639619a1ba679619a1fa605615a18a667c2f46c989e0bd3f3617a214c2f86e9a530bd1ca657c2f46a985e0bd3eb617a43b3c88eb0284c6f8669719896846969989685e9ad30bd1da6e5615a11a695615a15a6d5615a13a6b5615a17a6f561da10a68d61da14a6cd617a274c5bc2b4354cdbc2f46e98b6876947987686e9bd30bd1fa65d61fa204cbbc3b4274c7bc3f46198f685e9a3307d1ca64fc2f46998be15a66f87e93b61fa6e98be17a6ef1b9aff204c3f0cd38fc2f4636dfb89fefda92e2bf7ef7e16a69febfc2ff4ef2ff5efaff4ef67c632bf0ed36f0cdb6fc3f43bc3f6fb307daef35fe8df3fe8df2ff5ef1ff5ef57faf74ffaf7cffaf72ffaf7affaf76ffaf75ff4efbfeadf7fd3bf7fd7bfffd0bfff0cd3e60e997c9ba06e4a0531b551dd6ad2cf7e44fc8e41fd4969d152ff4f7ecbb4bd58cfcbaf68d74acfb732ecadf57c6b633d6df47c1bc3de5ecfb737ec47eaf9230dfbd17afe68c37eac9e3fd6b09fa1e7cf007b22807bc3daae6c2db5a9086c12af2dc0d64adb5a82adb5ac0e6c87685b2bb0c9f66d0db643b5ed10b0b5d5b636604b68dba1a265984ab42d15c4152be523d47a4be35eaf7e5e7658fcbc23d57adb39e23d3c7ede516abded1df0aaf83842afeb70889b23b5ad3dd88ed2b623c076b4b61d09b663b4ed28b01dab6d4783ed386d3b066cc76bdbb1603b41db8e03db89da763cd84ed2b613c076b2b69d08b653b4ed24b09daa6d2783ad4cdb4e019b6e728353c1769ab69581ed746deb00b633b4ed34b09da96da783ed2c6d3b036cd2fe9e0936395f3c4bdb54db7168112ca3edd26ea59791361b6ce7487b0db673a5ad065b2769a7c1761ef816dbf9d0d688adb3b649bba5fed747e753415cfb49b246adb722eef5866b56ebed1bff7ad3cf1cfb05755aa7c04f0568d55fe763ecd7d4057d17e9247ec45e0cf92ba1ac94133de4d823ecea1853a9f3fd1b58ae8fb15c2994a9b4d43f15c45bffbe064f5f83b915e4ddc46cd7ae3e661b3d651db383a1ac197b721ed41c637620703888d99e3e661b3d651db33550d68c3d39176e8e317b1b703888d92a37319b2cf7319bb96f1604f6d893eba1e618b3638023fe98edee63b6f153d631fb189435634fae899b63cc4e038ef863b667953f3768f49475cc2e80b266ecc9fd99e618b34f02878398adf1ed6ca3a7ac63f60d286bc69edc2b6c8e31fb2c70c41fb3bd1dc56c571fb341e6196810d8634fee5b37c7985d0c1cf1c7ec487f7fb6f153d631bb03ca9ab127cf509a63ccaed779f59ce127fa39c34960fba9b69d0cbcf1c776757747b19df4b19de91b1204f61895e779cd31b63fd07915c7bf80fe0862fba5b67500dbafb4ed34b07da66da743bd1cec03557e1f68f494f53ef01b286bc6b23c5b6e8efbc08f80c341cc56fb986df49475ccfe0dca9ab127fd1c9a63ccfe1e381cc46c8d8fd9464f59c7ec7f425933f6ced6f9e618b3d2d7549d2f7ca1cf17ce05db1fb4ad13d8bed4b6f3c0f6476d3b1f6c5f695b67b0fd49db2e00db9fb5ad1c6c7fd1b62e60fbabb625c1f6376deb0ab67fd1b66e60fb576deb0eb67fd3b61e60fbbbb6f504db3fb4ad17d8fea96dbdb54d3def92be5772deda06f85341bcdb56fa5dcaba65be4b0e7cb7337cb7cba1eff686eff616df4907be13e043a622633e05f9a45b9ef252e0415fdde2f7d555d5bd6bd0f8ba77039eee0eea9e001f8de1e90e3c3de2e749f7ffed19ff7ad3dbb8aba169027c75857af57250af22f025eb9679f1570a366c5b7b59187bc7cf982c025fb26e99ef0d8c62c3b65edeb992fd471d0f3b16d5f13ad897d2e744e24fbe5b261cddc02e65aee850c7d649b395c0fff1b8d7c3b0398acb745c882f59b7cc8bbf12a84f8fdc33261bcbd8dd6074d54614812f59b7f75db71d248fc77107d73ad6364d7c57e4c0776fc37737c337b69d3235746ceb0dccb15f73ea635b65fceb2dc7eb13b936143f78fe80d77071d5097dcbb5a1f8117b31e4af29aa2b2be5440f6987855dc5b26c4b643797eb652c570a652a2cf54f05f1d6bfd2e0a93498d536b9088e850ef687740c54181c32df0db4ab8cd0ae02b49332678376aedab33e068fccf7001e69c77a028fab6ba2289e5c5c8f1dc8379ec3e2f5b3fc1fcf035c6daf2e06a3ccdbb6576f60b49dab38b89e69f05ca53b308aad0ff07475a459d476ed4ae2db41aca4db23f121e7e6b2fff600bb94e9ad5fa8536de55dd056ba88118c47991a7bcd1bff764aa6afc1bb67c183dbcec175551747f1588ef76fbe0ee28d35b35dea6e6815758fc7555bded5e09179f1e7993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9e999f199f2761bf2d29d78384d1ecffe6ea3e7ffafb877a5db27ef55ce7ff38ed0f962cc7fe31d20fe25ca3cec550a6b4455dd9ff0ffdc1cce754d847b2875bedd2db12fb63a6605efc615f2bdc960cfd9dca62f39d1ce9ea799bfa0698fa8ea6d9f7b387455317fd9f51d3224353ec8f7f9ec1a3e2b4b2651d9b8b677fd93e8b44ad241fe7b3bdd2c01eebf16f9764bd67d62d82faed071e675cf5df91b65a9e975718be8ba1cc892deab68df4ad923186bb1acb61bf1f59b72c732ed82b8d75b7d3cb0a472b63fd3d615929730ab4a97b5ad469e6a0ad4c66db771d9f9bc77f1cce3cc7ef9a054f17e071d1ce383adf28c77d20eee7f866ff34db798c94c1be7d0efa5536d8df49fc7966cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367e667563ce6b3567cbfb61b09638efa3ea49f67c8b7ca64fde9ef05b7a8f3ebfa399c3c73ea64d419df1dfd678bbab29b75be24d8bfbf43d4b674f57d8aa86d29fef0db33f82cc8c573dd22f025eb4e5ab4907c596cbe33cff15d8c0d21cff1bb1aba76b368ea6a7fc567aca829eeafdd0d1e7c361af56d9fa46173d977282a2ec41fee4b49b0491edf8f76b19df15862f6eb117ff8fcfa3b5adb7681ab6d9f2c77d96ee0775352c1fef18ddf53f921b47d3fd679ecc3817d47beb0fc5fa6869e538b7eaace0ebeaf595e04eb92ed6bfbb6e700608dc977175c57914e030c0d8a21ff798bbab2524eca8ad6c2aef611f9060cb29bcb7537962b8532fd2cf54f05f1d6dffcd66a7f83596d939f419c7d01c77f576d52bf088dce058da48ce36f365afb579afd0ab11d6d6d949165f15b747f85362aaaffa8ed18e0fa3826ebb61dc7cce34263fa79167a3fadff82f622ee7e5aff053184fdb40263fd9d60fdc2d53a883eb64899ff67acdf3c279765b01fd8ffec27f03d97a4ce67734e7eb0aeaf6ce7e4b85c54dd15337e072d152333c604b2e079829469abb5966d5619c1dddbb26c69c4b2a295f9adb092607ffddc7c672db3cff737ea22718ddf20973247425ddc9cb764ce015d7d532e057552f9a4a5ae52e638d8d74ed0f9046c27dc6fcfb1fc5fa686ce01710cf70be3af737afb5e049c29f083be2f06d6987c7741df720e287ec45e0cf9b35bd6959572a287682dec6a1f91f328643797ab30962b8532032cf54f05f1d6ff4283e74283596d939321cece817ee8aedaea01111a75028da40cde53b47d07d476afc3d5fb1b51e752f8fe92797e85c74937e74df6f358f3be9aed1ca193c18fe7083da19d4d58ca9af70be5781967bf617c57a227f8c577255c7dbbb90fe89682793c2f3898be5d7cc756f98b1a33a14f0e7c478d99900bdfed0ddfed73e8db6bee3567d2dcc11804e9f7cff09ba56a6ae8bc14c72590e55a00a38bb11c1241fd6f8f1f8811c77790e55a02a38be343b6df3eef098cb25c3130ba78b714c7df680c237e63188ff3c2e8e05bb15d9afaad58bca7d71a1899ded9c467538700a38bf3e2a6beab87e7f36de0d7d5b8445db3604c02a32c772830bab8378ed7328d61c4eb2259ae2d30ba788695edf84ef8ed79bcb7ec92b1a163bbe3be28c96cefbd54bae569f05c037d3b18d730ad05de673c90167dddf23478ee83be1ddcf74b6b81e30c1e480b7c36e862dcc34450ff39dc8178f0f9a52c770430a61c31f6cf8231058cff73af18180738624c65c1380018c57e14303ab8ff9a661c900523dea794e58e06c68b1c315e9805e345c028cb1d038c2eeea526c06f63182f064659ee5860bcc411e3c559305e028cb2dc71c078a923c64bb260bc141865b9e381f132478c9766c1781930ca722700e3e58e182fcb82f1726094e54e04c62b1c315e9e05e315c028cb9d048c573a62bc220bc62b8151963b1918af72c47865168c5701a32c770a305eed88f1aa2c18af064659ee54601ce888f1ea2c180702a32c57068cd738621c9805e335c028cb7500c66b1d315e9305e3b5c028cb9d068cd73962bc360bc6eb8051963b1d18af77c4785d168cd703a32c770630dee088f1fa2c186f004659ee4c60bcd111e30d5930de088cb2dc59c0789323c61bb360bc09186fb4300e72c47853168c838051963b0f186f8e9f317d2d3d280bc69b81e796f879d29add9c05cf2d6e79d2dfd5bbd9e2ebd6f87da5b7c5e0a0f175bf157886c4cf93de16b766c1230ca5b01c6a765bfc8c69cd8664c1781bf00c8d9f27add96d59f00c05cd6eb368767bfc8c69cd8666c1783bf00c8b9f27add9ed59f00c03cd6eb7687647fc8c69cd8665c17807f00c8f9f27add91d59f00c0fea34bbc3a2d988f819d39a0dcf827104f054c5cf93d66c44163c55a0d9088b6623e3674c6b569505e348e0a98e9f27add9c82c78aa41b39116cd46c5cf98d6ac3a0bc651c053133f4f5ab35159f0d48066a32c9add193f635ab39a2c18ef049ed1f1f3a435bb330b9ed1a0d99d16cdc6c4cf98d66c74168c6380e7aef879d29a8dc982e72ed06c8c45b3bb1d31de9505e3dd169eb8bf937d97c5d73847751f1b34beeec2500acb613f89f18e18c765c1381e186539ec2751eb88717c168cb5c028cb251c3336d44fa2167c4f88df77ba5daa0d1aafcf04b73c0df69340df131d69312168bc1613ddf234d84f027d4f72a4c5c4a0f15a4c029ec90eb448808fc6f00843292c87fd24a638629c9c05e3146094e5b09fc454478c53b2609c0a8cb21cf693b8c711e3d42c18ef0146590efb494c73c4784f168cd3805196c37e12f73a629c9605e3bdc028cb613f89fb1c31de9b05e37dc028cb613f89fb1d31de9705e3fdc028cb613f89071c31de9f05e303c028cb613f89071d313e9005e383c028cb613f89871c313e9805e343c028cb613f89871d313e9405e3c3c028cb613f89e98e181fce82713a30ca72d84fe211478cd3b3607c04186539ec27f1a823c647b2607c141865b9bb1d333674fdf26833f71d75add2dc7d475d973477df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f771cee4fb3107be13e043a622633e0579612885e5eef68ccd9a1179cae2e329c7baa3afc709eafeb885a7c851ddd1d713047517867c637c2c0f18711ff73a369dd1b18ec9a6322a9e271df13c9105cf93c0f394239e27b3e0790a789e8e9f271d534f65c1230ca5b0dcdd79c0f8581e307a1dbd8e4c8c5ec7c2d1d1337a46cfe8190f06633eb4e19e312fe231d95446c533237e9eb4664f67c133033493e56e71cb986c2aa3e299193f4f5ab31959f0cc04cd66583473c0986c2aa3e299153f4f5ab39959f0cc02cd665a3473c0986c2aa3e2991d3f4f5ab35959f0cc06cd66593473c0986c2aa3e299133f4f5ab3d959f0cc01cd665b3473c0986c2aa3e2991b3f4f5ab33959f0cc05cde6583473c0986c2aa3e299173f4f5ab3b959f0cc03cde65a3473c0986c2aa3e2991f3f4f5ab37959f0cc07cde6593473c0986c2aa3e259103f4f5ab3f959f02c00cde65b346365bc3b0f181fcb0346c73a269bcaa878163ae2599005cf42e079c611cfc22c789e019e67e3e749c7d43359f00843292c77771e303e96078c5e47af2313a3d7b17074f48c9ed13366c7f8781e30fa6ded1959191d5c5f35f80ecd33cddc77d43b34cddd77d43b34cdddb78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c33f97e2e7edfc96cbf31f31cf0b8f8e68da37a96abf53eafd7f5758cfa29ad5e30b47ac6d0aa14ca3c0ffabde040bf22f02beb9679f1972d7347026647be938785eb3814ea2f3e1e33f450fe5f7454f7a8b6fec566ee3baaad6feebea3dafae6eedbc7b98ff342f0ede3dcc77921f8f671eee39cc537e65b0575e7edf2fd53b58e9774be58cf4bf9c7c12e65261f92f96d17f87dc8856fbf0ff9634521f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7395f9c633c54e6802730788206781690f14c25e3994dc6339a8c672819cfb5643c1791f13c48c6d38d8c670219cf48329e9bc978ae24e3b9808ca71f19cf34329ede643c73c878ee22e3798a8c671819cff5643c9790f13c4cc69324e39944c6338a8ce756329eabc97852643cf791f1f424e339878c671c19cf5c329eb3c9788693f13c4dc6732319cf61643cedc8782e23e379828ce77c329e0a329e47c878e693f14c21e3b9938ce736329e72329e6bc8783a93f15c48c6f300194f77329e79643cb5643c33c878aac8780691f19c4bc67305194f4b329ebe643c0bc978ee21e3e943c633868ca71319cfed643cd791f15c4cc6f310194f57329e89643c33c978aac9780693f15c45c6d39f8ce75e329e5e643c63c9783a92f1dc41c67303194f2ebe679a0d4f09194f2919cfa5643c8f92f14c27e3e942c633998c6716194f0d19cf10329e81643c03c878ee27e3e941c6339e8c670419cf4d643c4f92f11c4ec6d39e8ce772329e22029e44b0ff182609f8ff73606b612cab3efb3aa743ddff5fd6f616b0cc2b3adfd2b2ee97c126df927dc5b22ceaf432d425a5f3e5df6c4aeb84be52302ffe4a80e315129ecbc978da93f11c4ec6f32419cf4d643c23c878c693f1f420e3b99f8c670019cf40329e21643c35643cb3c8782693f17421e3994ec6f32819cfa5643ca5643c25643ccf91f1dc40c67307194f47329eb1643cbdc878ee25e3e94fc6731519cf60329e6a329e99643c13c978ba92f13c44c6733119cf75643cb793f17422e31943c6d3878ce71e329e85643c7dc9785a92f15c41c6732e19cf20329e2a329e19643cb5643cf3c878ba93f13c40c67321194f67329e6bc878cac9786e23e3b9938c670a19cf7c329e47c8782ac878ce27e379828ce732329e76643c8791f1dc48c6f33419cf70329eb3c978e692f18c23e339878ca72719cf7d643c29329eabc9786e25e31945c633898c2749c6f33019cf25643cd793f10c23e3798a8ce72e329e39643cbdc978a691f1f423e3b9808ce74a329e9bc9784692f14c20e3e946c6f32019cf45643cd792f10c25e3194dc6339b8c672a19cf02329e4a0bcf738e78e47d7759b7cc3f47e2dbc1762857eb7dd5519d5ed3eb6aa5d72bfce2af18ca4c6f9bf955cf3f7059e132bf4f80efe6bc061abde6a82eb23d8a8ced83be5f72e4db1c9f4fe65f6ae6bedb19bedb1588eff686eff605e2dbc7b98ff342f0ede3dcc77921f8f671eee39cc9b7836b83247e274da622633e0579bc5e70f17d3947f5ac779df8758cfa29ad5e37b432afad4aa1ccaba0dfeb0ef4b35d7bcabcf8cb96b9230133c64559106f5cbc117f9d92aadfe1a1a0eb1b86be58af458e348d3a862c6ae6bea38e21cddd77d431a4b9fbf671eee3bc107cfb38f7715e08be7d9cfb3867f2fda6cec778dd588e3ed4f345b91e7813fc2ed1f9a218fdaa752dd6eb2ad6eb168e25609732ff1b9e6bfa7ddeeff371f9f6c7361fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be99e3dccc4b7ff1b381cd557ffea858ccc5bb0407d377542c3677df51b1d8dc7dfb38f771cee47ba903df09f02153437dfc9602cf62073c8eea997eb6b1cca8d373469d4aa10c1ee39739a86711f89575cbfc32e091a912785cc44163b639f22c20e3994ac6339b8c673419cf50329e6bc9782e22e379908ca71b19cf04329e91643c3793f15c49c67301194f3f329e69643cbdc978e690f1dc45c6f31419cf30329eebc9782e21e379988c2749c633898c671419cfad643c5793f1a4c878ee23e3e949c6730e19cf38329eb9643cc3c9789e26e3b9918ce730329e76643c9791f13c41c6733e194f0519cf23643cf3c978a690f1dc49c6731b194f3919cf22329e6bc8783a93f15c48c6f300194f77329e79643cb5643c33c878aac8780691f19c4bc67305194f4b329ebe643c0bc978ee21e3e943c633868ca71319cfed643cd791f15c4cc6f310194f57329e89643c33c978aac9780693f1bc4ec67315194f7f329e7bc9787a91f18c25e3e948c6730719cf0d643c25643ca5643c9792f13c4ac6339d8ca70b19cf64329e59643c35643c43c8780692f10c20e3b99f8ca70719cf78329e11643c3791f13c49c67338194f7b329ecbc9788a087812c1feeffe27e0ffaf834dde517f0e6c6fe9fc62b0b5b0f868a9f3cbc056acf3b28e43c2f46287fdd78d3ab97a2f1f7da5605efc9500c75b243c9793f1b427e3399c8ce749329e9bc8784690f18c27e3e941c6733f19cf00329e81643c43c8786ac8786691f14c26e3e942c6339d8ce751329e4bc9784ac9784ac8786e20e3b9838ca72319cf58329e5e643cf792f1f427e3b98a8ce775329ec1643cd5643c33c9782692f17425e379888ce762329eebc8786e27e3e944c633868ca70f19cf3d643c0bc978fa92f1b424e3b9828ce75c329e41643c55643c33c8786ac978e691f17427e379808ce742329ece643cd790f12c22e32927e3b98d8ce74e329e29643cf3c9781e21e3a920e3399f8ce709329ecbc878da91f11c46c6732319cfd3643cc3c978e692f18c23e339878ca72719cf7d643c29329eabc9786e25e31945c633898c2749c6f33019cf25643cd793f10c23e3798a8ce72e329e39643cbdc978a691f1f423e3b9808ce74a329e9bc9784692f14c20e3e946c6f32019cf45643cd792f10c25e3194dc6339b8c672a19cf02329ecadcf024d5bbedd2d73a002e9c52905f063c8b1ce8e3a89ee5f85d83af635cafd2ea6d43abd70dad4aa1cc52d0ef6d07fa15815f59b7cc8bbf7c64563c8feabced3b108f92308a6d915b9ef47efb68507f6a68bf7d1b785cb46b8eea99debf961b757ad4a2bb94c1585deea09eb67d47e697c376c83766c5f384ce0b6b02ca3d41c228b6656e79d2fbd71341fda9a1fd6b39f0b8687f1cd533bd7fad30eaf48445772983b1bac2413d6dfb8eccaf80ed906fcc8ae7499d17d604947b9284516c6fbbe5e996803acbd4d0feb502785cb43f8eea99debf561a757ad2a2bb94c1585de9a09eb67d47e657c276f0cc9ed9c6ac78e4d98eb026a0dc53248c625bee94a75b7902ea2c5343edd84ae071d1ce3bd23ddd8ead32eaf49445772983b1baca413d6dfb8eccafb2f82e0be2d5627523b4586de1599d632dc45fb6cc4bf390d9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398a994167c523dfae14d604947b9a84516c2bdcf2a4df0b7a3aa83f1519f329c8af069e950ef47154cf741ff235469d9eb6e82e6570ff5ae3a09eb67d47e6d7c076c88679551e327b9d9bc6ac7866e8bcb026a0dc0c1246b1ad74cb936ec76604f5a786dab135c0e3a29d7754cf743bb6d6a8d30c8bee5206f7afb50eea69db77647e2d6c07cfec996dcc8a67a6ce0b6b02cacd246114db6aa73cc9f4fb8d3383fa5343edd85ae071d1ce3bd23ddd8ead33ea34d3a2bb94c1585de7a09eb67d47e6d7c176c88679551e327b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5ee7c2d159f1ccd279614d40b959248c625be394a76bfab9c3aca0fed4d0738775c0b336769ecc730707baa79f3bac37ea34cba2bb94c1fd6bbd837adaf61d995f0fdba1b933afca43661f1bb961f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e6286686d8503cb3755e5813506e3609a3d8d6bae5497ff76076507f6aa8dfce7ae059e7401f47f54cf7dbd960d469b645772983fbd70607f5b4ed3b32bf01b68367f6cc3666c53347e7853501e5e690308a6d9d5b9e743b3627a83f35d48e6d001e17edbca37aa6dbb18d469de65874973218ab1b1dd4d3b6efc8fc46d80e9ed933db9815cf5c9d17d604949b4bc228b6f56e79d2edd8dca0fed4503bb611785cb4f38eea996ec73619759a6bd15dca60ac6e72504fdbbe23f39b603b7866cf6c63563cf3745e5813506e1e09a3d836b8e54926a0ce3235d48e6d021e17edbca37aa6dbb1cd469de65974973218ab9b1dd4d3b6efc8fc66d80ef9c6ac78e6ebbcb026a0dc7c1246b16d74cb93debfe607f5a786f6afcdc0e3a2fd7154cff4fef58e51a7f916dda50cc6ea3b0eea69db7764fe1dd80ef9c6ac7816e8bcb026a0dc021246b16d72cb93debf1604f5a786f6af7780c745fbe3a89ee9fd6b8b51a70516dda50cc6ea1607f5b4ed3b32bf05b643be312b9e853a2fac0928b79084516c78bc58e888a7d4e029b56871b07cabf90a9d2fd1bf09f87f0530ba6a0f171a8c328f318ebcae356b67f0b433343b98be55fd2b75fe30fd8bdbab121819b657bb1c68d6dee0696f6876307d2b2dfaeafce1fa17b7575f6064d85eed81c741fbdc2d61f0a8a9a1f38d2d8ef57154cff4f9c6d6c0ae3b1e87a40c1ebbb73aa8a7ed5c42e6b7c276f0cc9ed9c6ac7806e9bcb026a0dc201246b1e175cab6f879ba250c1e3535d48e6d73ac8fa37aa6dbb17703bbeedb40772983b1faae837a16815f59b7ccbf0bdb211be65579c8ec756e1ab3e219acf3c29a8072834918c5b61578b6c7cfd32d61f0a8a9a1766cbb637d1cd533dd8eed08ecba6f07dda50cee5f3b1cd4b308fccaba657e076c876c9857e521b3d7b969cc8a6788ce0b6b02ca0d216114dbbbc0b333769ecc7840c8a3a686dab19d8ef57153cf4c3bf65e60d77d27e82e6570ff7acf413d8bc0afac5be6df83ede0993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9e999b59f10cd579614d40b9a1248c62db013cefc7ce9379ee803c6a6ae8b9c3fb8ef57153cfcc73875d815df7f741772983b1bacb413d8bc0afac5be677c176f0cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfcccdac7886e9bcb026a0dc301246b1bd073c1fc4cfd32d61f0a8a9a1e70e1f38d6c7513dd3cf1d760776dd3f00dda50cc6ea6e07f52c02bfb26e99df0ddb61b767f6cc1666c5335ce7853501e58693308a6d17f0ec899d27f3fc1479d4d4503bb6c7b13e6eea9969c7f60676ddf780ee52066375af837a16815f59b7ccef85ed900df3aa3c64f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce85a3b3e2a9d279614d40b92a1246b1ed069e0f63e7e95a9e3078d45464cca720ffa1637ddcd433f3dc615f60d7fd43d05dcae0feb5cf413d8bc0afac5be6f7c17668eeccabf290d9c7466e987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398ad9c786678e62f6b1e199a3987d6c78e628661f1b9e398a992136144fb5ce0b6b02ca5593308a6d2ff07c143f4fb784c1a3a622633e05f98f1cebe3a89ee97e3b1f0776dd3f02dda50cee5f1f3ba86711f89575cbfcc7b01d3cb367b6312b9e1a9d17d60494ab216114db3ee0f9247e9e64c2e0515343edd8278ef57154cf743bf66960d7fd13d05dca60ac7eeaa09e45e057d62df39fc276c83766c5335ae7853501e54693308aed63e0711077699e528347e63f21f0ade66b75be44ffe2f6aa054686ed559a03cdda193ced0ccd0ea66f55ff093a7f98fec5ed35011819b657bb1c68d6dee0696f6876307d2b2d26eafce1fa17b7d7446064d85eed73a0d9c16c0f0fe6be7d30e3d46b7ef0342f3a889a171d44cd8bbce6549a3b38be24f1581600034e29c87f0a3cdf8e9f277d5feed32c78be0d3cdf8a9fa78ba37a96abf57e07d8e35aafd2eabb86569f1a5a95421964f8ae03fd8ac0afac5be6c59f67f6cc51cc786e2bac0928f70909a3d8be053c2eda0d55f7f3f5ba64fdadc2f4d951757e5d3c2fc17bc5adf47a8543fc154399896575657fa7d94ae0ffb2dd547df6193647ef3077b13db79379f15712e4ecde6d83f792510b17cf9bb23deeefb3f07c1d1f4f39eee7e86bafa3ba67f3ec6faf8527c6ba77897aeeb927febaa7db8fce7a5db27eb58ffefb514e35ef86fb9eb41f9d8d3a17439981657565ff03da0f5b5be17adf94737273df6c11d4b567c255a6ede633a1afb55dca7d04e5b1cda9d0bfb87f56405d5db58b51f798b05d34db6e97da9bcf254ddfa5a0cb47a49ad99e53a08e9516ee4a026e8cc75cee67b26edb33b24a434736cd705b7f64d1b1af85bb2f0137e37eddd7d0914db303edd7832cdc8308b819f7eb41868e6c9a1d68bf1e6ce11e4cc0cdb85f0f367464d3ec40fbf5100bf710026ec6fd7a88a1239b6607daaf875ab887127033eed7430d1dd9343bd07e3dccc23d8c809b71bf1e66e8c8a6d981f6ebe116eee104dc8cfbf5f0a0be8e6c9a1d68bfaeb27057117033eed755868e6c9a1d68bfaeb67057137033eed7d5868e6c9a1d68bfaeb170d7107033eed735868e6c9a1d68bf1e6de11e4dc0cdb85f37b6df3eeb7e5d6be1ae25e066dcaf6b0d1dd9343bd07e3dc1c23d81809b71bf9e60e8c8a6d981f6eb8916ee8904dc8cfbf544434736cd6cfbb5a37709b37eb7f163a7fa64c698fe380b9e0f81c7454c398a837247fd5cd27d53f7185a7d6c68856377ec05fd1cf48569f09b04e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f337e97119faf48b98f4818c586cfa45cdce75775bf40af4bd6df2a4c038fa9f3bb3776bfc9f222c35f0a38c45f319439e1d4bab2d76bb69260ffed866371e3b6dc1d7b1d32dbd28c7f99177f25509f3dc0e3e0fdfc34cf5e8367af450b7cef341edfc9916e344e96abefe31d1ad46de7dd467d50d30f62f75f5fd32243d30f1cfb4e04f5b7a730e094823cf2b87836eca89ee9b66097512753e35228d311eab9cb413d8bc0afac5be677018f4c2d80c7550c06064f60d147a64a329ea9643ca3c978ce20e3194ac6731c19cfb5643c8792f15c44c6f320194f37329e09643c23c9784e25e3b9998ce748329e2bc9782e20e32926e3e947c6338d8ca73719cf5d643c6791f10c23e3398f8ce704329eebc97812643c9790f13c4cc69324e39944c6338a8ca70319cfad643c4793f15c4dc6d39a8c2745c6731f194f4f329e73c878c691f19c4dc6339c8ce724329e1bc9780e23e36947c6731919cf23643c15643ce793f14c21e3b9938ce774329edbc878cac9788e25e3b9868ca73319cf85643c6dc8781e20e3e94ec6534bc65345c6730a19cf20329e73c9788e20e3b9828ca725194f5f329e7bc878fa90f18c21e3e944c6732619cfed643cc793f15c47c6d3968ce762329e3d643c0f91f17425e39948c6534dc6b38f8ca78c8c673019cf51643c5791f1b422e3e94fc6732f194f2f329eb1643c1dc978ee20e339918ce706329e12329e52329e4bc978a693f17421e3994cc65343c6731a19cf10329e63c8780692f11c42c633808ce77e329e1e643ce3c9784690f19c4cc6731319cfe1643cedc9782e27e32922e04904fb7f8b2901ffdf0b36f966d087606b61599f3ca796f2eab8b8b8c3feeb6e6159f7071606d4e97da84b4ae7cbbfd994d6097da5605efc9500c707243c9793f1b427e3399c8ce726329e93c9784690f18c27e3e941c6733f19cf00329e43c8780692f11c43c633848ce734329e1a329ec9643c5dc878a693f15c4ac6534ac65342c6730319cf89643c7790f17424e3194bc6d38b8ce75e329efe643cadc878ae22e3398a8c6730194f1919cf3e329e6a329e89643c5dc9781e22e3d943c67331194f5b329eebc8788e27e3b99d8ce74c329e4e643c63c878fa90f1dc43c6d3978ca72519cf15643c4790f19c4bc633888ce714329e2a329e5a329eee643c0f90f1b421e3b9908ca73319cf35643cc792f19493f1dc46c6733a19cf9d643c53c878ce27e3a920e379848ce732329e76643c8791f1dc48c6731219cf70329eb3c978c691f19c43c6d3938ce73e329e14194f6b329eabc9788e26e3b9958ca70319cf28329e49643c49329e87c9782e21e34990f15c4fc6730219cf79643cc3c878ce22e3b98b8ca73719cf34329e7e643cc5643c1790f15c49c6732419cfcd643ca792f18c24e39940c6d38d8ce741329e8bc8780e25e3b9968ce738329ea1643c6790f18c26e3994ac65349c6d3c2e0c1ffab77c3f6e8bc7c3ba818fe3f49772e6fa7d72565e419b1ba57f19e6153f5dde9a8beef0575530ae677427d85fd3de079cf11cffb068fe9bb04f295a0d90ec3a618b73b62dc6130cafc766014fd7600cf0e473c3b0d1ed37709e4fb8266ef1a36c5b8cd11e3bb06a3cc6f0346d1ef5de079d711cf7683c7f45d02f941a0d956c3a618b73862dc6a30cafc166014fdb602cf56473cdb0c1ed37709e4078366ef1836c5b8d911e33b06a3cc6f0646d1ef1de079c711cf1683c7f45d02f921a0d926c3a618373a62dc6430cafc466014fd3601cf26473c9b0d1ed37709e48782661b0c9b625cef887183c128f3eb8151f4db003c1b1cf16c34784cdf25901f069aad336c8a71ad23c67506a3ccaf0546d16f1df0ac73c4b3dee0317d97407e3868b6c6b029c6d58e18d7188c32bf1a1845bf35c0b3c611cf5a83c7f45d02f92ad06c9561538c2b1d31ae3218657e25308a7eab806795239ed5068fe9bb04f2d5a0d90ac3a618973b625c6130cafc726014fd5600cf0a473c2b0d1ed37709e46b40b3b70d9b627ccb11e3db06a3ccbf058ca2dfdbc0f3b6239ee5068fe9bb04f2a341b365864d312e75c4b8cc6094f9a5c028fa2d039e658e78de32784cdf2590af05cd961836c5b8d811e3128351e61703a3e8b704789638e2596af098be4b203f01347bd3b029c6458e18df3418657e11308a7e6f02cf9b8e78161b3ca6ef12c84f04cdde306c8af175478c6f188c32ff3a308a7e6f00cf1b8e7816193ca6ef12c8df0836e1ed03b6d774be37d85ed5f95e607b45e77b82ed659def01b69774be3bd85ed4f96e607b41e7bb82ed799d4f82ed399def02b66775be1fd89ed1f9fe605ba8f329b02dd0f901609baff317826d9ece5f04b6b93a7f31d8e6e8fc25609badf397826d96ce5f06b6993a7f39d866e8fc15607b5ae7af04db533a7f15d89ed4f9abc1f684ce0f04dbe33a7f0dd81ed3f96bc1f6a8ce5f07b6bb75fe7ab0dda2f33780ed639dbf096c9fe8fccd60fb54e76f05dbb774fe36b07d5be76f07db7774fe0eb07d57e74780ed7b3a3f126cdfd7f95160fb81cedf09b61feafc18b0fd48e7ef02db8f757e2cd87ea2f3e3c0f6539d1f0fb69fe9fc24b0fd5ce72783ed173a3f056cbfd4f9a960fb95cedf03b6cf747e1ad87eadf3f782ed373a7f1fd87eabf3f783ed773aff00d87eaff30f82ed739d7f086c5fe8fcc360fb83ce4f07db973aff08d8fea8f3d2aea976f64f3a5f16c4dbce7e15d44d65e05bfca9327fd6f9d6461959b618ca9ca53b14aa671cea5ba6d20e4bbbac6cd20ebf063669875f059bb4c3af804ddae197c126edf04b609376f845b0493bfc02d8a41d7e1e6cd20e3f073669879f059bb4c3cf802da5f30bc126edf002b0493b3c1f6cd20ecf039bb4c373c126edf01cb0493b3c1b6cd20ecf029bb4c333c126edf00cb0493bfc34d8a41d7e0a6cd20e3f093669879f009bb4c38f834ddae1c7c026edf0a3609376f86eb0493b7c0bd8647ff90a6cd2367f0c36699b3f019bb4cd9f824ddae66f814ddae66f834ddae6ef804ddae6ef824ddae6ef814ddae6ef834ddae61f804ddae61f824ddae61f814ddae61f836d9cceff046cd236ff146cd236ff0c6cd236ff1c6cd236ff026cd236ff126cd236ff0a6cd2367f0636699b7f0d36699b7f0336699b7f0b36699b7f0736699b7f0f36699b3f079bb4cd5f804ddae63f80ed119d97b6ba0dd8e459b19acabfe184e3f0b4005fc2920ae26dfb714a411eeb2e532519cf1c329ed1643c2f91f19c41c633948ce738329e43c978de20e39940c6b3908c671919cf52329ed7c9784e25e3d940c6b39e8ce748329ef7c8787692f15c40c6534cc6338b8ce705329eb3c8788691f19c47c67302194f828c673e19cf12329ec5643caf92f17420e35947c6b3968ce768329e1d643cdbc9785a93f17c45c633838ce71c329ee7c878ce26e3194ec6731219cf61643cedc8782ac878ce27e3994bc6f32619cf22329e97c9784e27e35943c6b39a8ca79c8ce758329e77c978b691f17426e36943c6f314194f2d19cf33643c55643ca790f10c22e339978ce708329e96643c7dc9786e21e3994dc6f322194f27329e33c9785691f1ac24e3f9928ce778329ead643c5bc878da92f1ec21e39948c6b3808ca79a8ce735329e7d643c65643c83c9788e22e36945c6f33119cf4c329ee7c9785690f12c27e339918ce71d329ecd643c25643ca5643cf3c8786ac8785e21e3398d8c670819cf31643c8790f13c4dc6f32c19cfdb643c6f91f19c4cc6b3898c672319cfe1643cedc9787691f1bc4fc65344c093008e006cf2ff966093eff0ec03db173abf076cf20d9f37c0f6b9ce3f02b6872cb616163e61980e367957f60bb0c9fd9987c126ef4c7c0e36396f10ff6a7e6587fdf95bc032e2a7a5851ffd7d6ee1923c6e6f592615c4bbbdd1572ab07ff3aec8603cd83cef93f1ec22e3694fc6733819cf46329e4d643c2793f1bc45c6f33619cfb3643c4f93f11c42c6730c19cf10329ed3c8785e21e3a921e39947c6534ac65342c6b3998ce71d329e13c9789693f1ac20e3799e8c672619cfc7643cadc8788e22e3194cc65346c6b38f8ce735329e6a329e05643c13c978f690f1b425e3d942c6b3958ce778329e2fc9785692f1ac22e339938ca71319cf8b643cb3c9786e21e3e94bc6d3928ce708329e73c9780691f19c42c65345c6f30c194f2d19cf53643c6dc8783a93f16c23e379978ce758329e72329ed5643c6bc8784e27e379998c671119cf9b643c73c978ce27e3a920e36947c6731819cf49643cc3c978ce26e3798e8ce71c329e19643c5f91f1b426e3d94ec6b3838ce768329eb5643cebc8783a90f1bc4ac6b3988c670919cf7c329e0419cf09643ce791f10c23e3398b8ce705329e59643cc5643c1790f1ec24e3798f8ce748329ef5643c1bc8784e25e3799d8c672919cf32329e85643c13c878de20e339948ce738329ea1643c6790f1bc44c6339a8c670e194f25194f0b0bcf3e473cf2ad1859b7ccef6be6be771abe771688efed86efed05e27b9be17b5b81f8de62f8de5220be371bbe371788ef8d86ef8d05e27bbde17b7d81f85e6bf85e5b20be571bbe571788ef9586ef9505e27bb9e17b7981f87ecbf0fd5681f85e6af85e5a20be171bbe171788ef4586ef4505e29bf9fa5b7d274cfa2aefd2bf09f87f0530bee188719fc128f36f00a3d8f07bd4158e78a2aedd2b087c2b2de45e963cf34cc0ff2b81d1554c55188c326f8ba99dc053e98827ea9e4325816fa585bc8b2d7d2a13f07f1c7fd9554c551a8c326f8ba9edc0d3d7114fd4bd92be04be9516f2eeb3bcf39780ffe378ebae62aaafc128f3b698da063c831cf144dde31944e05b6921df0a936fd224e0ff383ea3ab981a6430cabc2da670fcdcc18e78a2ee4d0d26f0adb4906fedca372f13f07f1cbfc9554c0d361865de1653387edc10473c51f7d48610f8565ac8b360f9467b02fe3f14185dc5d4108351e66d3185e3dd0c75c413752f7028816fa5c5309d973e5609f8ff3060741553430d4699b7c5d47ae019e68827ea1ee63002df4a8be13a2fef7024e0ffc381d1554c0d331865de16536b8167b8239ea87bafc3097c2b2daa747e8dfe4dc0ffab80d1554c0d371865de1653ab81a7ca114fd43de32a02df4a8b6a9d976fce25e0ff38fefb70478c5506a3cc0f0746b1ad049e6a473c51f7baab097c2b2de4dbfe2bf46f02fe8fe3b1ba8aa96a8351e66d3185e341d738e289ba475f43e05b69315ae7654c9804fc7f3430ba8aa91a8351e66d3185e3578e76c413f56c6134816fa5857c9b6b99fe4dc0ff6b81d1554c8d361865de16534b81a7d611cf628367b1458b83e55b69217db997e8df04fc7f0230ba8aa95a8351e66d31b518782638e2897a963381c0b7d242beadfda6fe4dc0ff2702a3ab989a6030cabc2da61601cf44473c51cfa026e6c077d4f3945cf88e7a36900bdf51f7b973e13bea9e6d2e7c47dd7fcc85efa87b69b9f01d755f2817bea3ee71e4c277d4f57a2e7c475d7be6c277d475542e7c475d13e4c277d4f96d2e7c479dabe5c277d479876fcf7d7b1eb7ef8379ee50a8edf9c13c861ecc6389bf36f0d706b9f2ed8f25feda2057be0bf5dac0b7e7b96fcfe5faab2888be1e7bcb91efa5866f99c7e72c4b1df95e6cf896797c66b0d891ef45866f99c7fbdf8b1cf92e357ccbfca21cf86e67f86e9743dfed0ddfed2dbe1d6cef6422a87ffd2d0c38a5208f31f0a6032d1cd5b35cad77895ed7d731aed776dfc6dc5f4aa1cc12d0cf75db21eb36db8e7c64c6b8288acf7779027cc877c9944d9e1fbf063669f75f059bf40b78056c726c7a196cf24cea25b0c933ab17c1365ae73f069b3c3bc63efbf2fc7f1bd8aa741efb8a0fd7f92d6093be54d84759fac36d069bf469c4beb1d22f7523d8a46f31f6c994fee1ebc1267dfcb12fa0bca7b1166cf2ae0df64193f7a556836d8fce63df27f90ecd4ab04dd7f91560fb83ce2f07db833a7f0bd87eaff35f81ed773abf086c0fe8fc9b60fbadce2f01dbfd3aff02d87ea3f3cf83ed3e9d7f0e6cf7ea3cbecbf66b9d7f1f6c9fe93cbe43354de77782ed573a8fefeedca3f3dbc1f64b9d7f166c5375fe19b04dd1f98560fb85ce2f00dbcf757e3ed826ebfc3cb0fd4ce7e7826d92cecf01db4f757e36d8c6ebfc2cb0fd44e767826d9ccecf00db589d7f1a6c3fd6f9a7c0f6239dff126c77e9fc62b0b5d0f9a560933123b19f4ab1cebf05b6563a8ffd8fe4fbfe13c17688ce4f005b1b9daf059b7c1b6e34d8643ce81ab02574be1a6c253a5f0536393f1b0e3619ff6418d8e45c6a28d80ed7f9216093f39ec16093f12c07814dbe41da176c47e97c25d8e4dbfa15603b46e7f7814dc61c7b036cf2ddba3d6093b1981f069b7caf7a3ad84ed4f93f804dc66179106c27ebfcefc1768aceff0e6cf20dcf07c056a6f3bf055b079dbf1f6ca7e9fc6fc0266364dd07b63374fe5eb0c9d8c1bf069b7ceff933b075d4f969603b5be77f0536194be41eb0c9f8a0bf045b279d9f0a36f90ef714b09daff3bf009b8cf7f773b0c9378627834dc675fb19d8bae8fc24b02575fea760ebaaf3e3c1d64de77f02b6ee3a3f0e6c3d747e2cd87aeafc8fc1d64be77f04b6de3a2fed8cda9fd57ebe57cfa782f8cecb94bf0f83fa5343d706c2803c719e6b97020ffada1d7bdd93e9f37ad9ef5be8f54a0ced06dfbb62f79db9a6f840afab58af7797e1bb18ca9cad1b07b59c1cf35beae5f618cbe17d2c59b72c7301d8df37d6dd4ed7f70347f5dd65300937ea2065ced34cead8f8039d6f03cbc4c896be3e96580b40439c52901706375a25cbf1bcb7313c1f00cfeed87932d7eb2e6202f7adb8afd7cdfbb866ac9542995da0dffb0ef4c37d5dd62df3e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333fb3e2d9abf3f85c59caed256114db6ee071719f1f9fc3cafad5739df74fadf3bb3b76bff59fefb5d2eb2d37ea5c0c65be86674e7b74be04fe2fdb2d6a5b3a784ed8e0b6147f25501f7c16b4d711cf6e8367b7450bc997c5e63b39d28dc6c972d597453d63df63e8bad7a2a9abfd75b75e5791a129eeaf1f1a3cf86cb404783fd2bf0958cf47500707fb78837121fe705fda0d36c97f088c2eb6331e4ba43d90e7e1f86c5acafcca782e1effb64f96bb6c37de833aa582fde3bb18cafc0edabecf751efb86ec05ddfe61f9bf4c0d3da716fd549d77c45fe7f4f6dd0e9c29f083bedf05d6987cd77b87a64827f123f662c8ff1dfa734839d143b416761caf1cd9cde53e34962b85323b2df54f05f1d67f87c1b3c36056dbe44b88b37fc0f1df559bb43342a30b402329b31b34dae38867b7c1231ce24f9591eddfda2823cb164399ff056d94aa8bb4f3524fecdb82c70057c731f125eb9679dbb9f107c068d651c5c7c063ea7877c7ce9b5ffdbf0e29cbfc62bb1e57ff2f59773bbdac7004c6facb61fdc2d53a883eb6fccff62dab5bbfcbfe657b8c3a0b0bea2c65da95657e559c5daaf3d99ceb1facebb6a873fd9d0e781241fd6b6f3535747cc763cc7bf07f2953fecda62e8eea596e3b76bd6fd4a914ca74847a3a388f69f05de01de0dbc536472de41c6a97a1453194e95096f995b6234a47bc56fd202775495acf07cb2d7591321dcbeaead206ec7132b9dc6eef429dd47a775bea2a65ce2babd3a5b3ce27603be17d93be96ffcbd4507b8063f16c8dbfcee9edbb053853e0077dbf03ac31f9aef72d1039df173f622f867c65595d5929277a88d6c2aef61179e70fd9cde57619cb9542996d96faa78278ebbfd5e0d96a30ab6dd2a5ac2e2f71e4b2dddc16a15139682465f0feb11cdbf1bd3bdb717fb723eea8e3fe6e6034db4d3c7771c9b6c76033efa1dace07a50c9e934999abca32bfaa9d4d58ca9af7865ddcc7c4775003a84760d455268c0107d786ddf0da49da29f1d319ecbb755e74ee6c68570c650695657e1d9e775bef5d9ad777784d21dce6be85ef7e0c29abe3c6b11377ebdf12b07da27f1d5da775b3dd33140edb3dc3e16575ecb8ac707d6ca98b798ddc22d8ff9efad74659bcefd6d07266de1c8752e9fb8951cee607af79627b57a34b793932b508ecf70b3e34d88b82fdc7dc94fd0063cebc8fd2d9580fde47a92dcbfc4a9b649655dbfedf8faad347b6a36887ed09c6e487c098d2f9f26f3675b1d55fe6c59f62fcc8a8839bb62bf3be5236f781f7008f8bb6dd511b5d8ec7d836b1adb77795edf8ffa1a1550e9fd75a8ff9e633f736463e1edfc96adbfd279b16bb2c3cae9ea34469b1cbe23b3e2d7a8cb41d3f6c5ae4b2ef439416ef5b7cc7a8450ddef76c488bf72c3c2eee4535a4c57b16dff169d1b3bca1e71aa8c54e0b8fab7b0f515a88bf6c99df27606e63e4e3f1ddadca769fcca6c50e0b8fabebe6282d76587cc7a745971e788fae212db65b78e2bf3fd7b016db2dbee3d3a2576fbc87d79016ef5a785c3dd38dd2e25d8bef18e36294ed5e8e4d8b6d169e6d39d6629bc5778ce7873d6cf7da6c5a6cb5f038b8efdaa0165b2dbe63d46204de776d488b2d169e2d39d6628bc5777c5a5475b7dd13b669f18e85c7d53de1282ddeb1f88e4f8b11bd94efcd8dd062b38567738eb5d86cf11de335543a2e3635428b4d169e4d39d66293c5777c5a54a7cfb53636428b8d169e8d39d662a3c5777c5a94a78fa91b1aa1c5060bcf861c6bb1c1e23bc6b8485f4fae6f8416eb2d3ceb73acc57a8bef188f23e9b858d7082dd65978d6e5588b7516dff1695193beffb4b6115aacb5f0accdb1166b2dbe63bce7928e8b358dd0628d85674d8eb55863f11d9f165dd3c7d4d58dd062b58567758eb5586df11d9f16a3d2cfc45635428b55169e5539d66295c5778ce79de9f6626523b45869e15999632d565a7cc778de99be7fb1a2115aacb0f0acc8b1162b2cbe636c3bd3e79dcb1ba1c5720bcff21c6bb1dce23bc6f3ceb4166f37428bb72d3c6fe7588bb72dbe633cef4c1f47de6a84166f59785c8d8112a5c55b16df31c645baed5cd6082d96597896e5588b6516df31ded74ab79d4b1ba1c5520b8fabf11aa2b4586af11de3f548fa1edf924668b1c4c2b324c75a2cb1f88ef15951fa1c7c7123b4586ce1599c632d1683ef3db1fbcef4e7161fd217eb7c438b6228734a87ccaff4c58ad251d681fdcab02e6fc65e974cbfb24511757913ea2265ce80bab4099c8c51d4cd515dd331f306d449adf7234b5da5cc391dea74e9a4f309d8261f836e7d2cff97a9c8984f415ef453757e2dfe3aa763f555e04c811ff4fd0ab0c6e4bb0bfa2ed249fc88bd18f2bd3bd4959572a287682dec6a1f795de791dd5c6eb1b15c299479dd52ff54106ffd5f33785e3398d3ef3d409c491cb969bb324caf4768743e682465b0cfde478e78cc3e84c221fe5419d9fead8d32d88752ca5c086d14f62b957a2682fdfb4d3a6acbba20bbac5be6c55f29d8f600a35947151f9f41df4f192b42c69150361917a22baca7a7615375ede5a8aee24bd62df3bd8051c6a9e8997bc66463197b188c8aa78f03cd70ec0d991a3a5ef4019ede0e781cd5337d1caa30ead4cba8532994c1771b2b1cd4b308fccaba65be027cbbd8e6a8851c93cf31b4288632c38df3c7281d651d2a7e7b5aead2cf715d64ddd22ef5cb81ef4ac37777c37722a8bf9d83a0e1fdab1298fb3a6056ebed1fff7acbf1bc4d624afc74873a0d000de2aa13ae4bcef30618da16437e2a9ce74939292bc72f6157b12cdb12d9cde5fa18cb9542997e96faa78278ebdfdfe0e96f30ab6d72179cdb39d81fd231d0cfe090f9eea05dff08edfa817652068f7f3d1c69d7d7e091f91ec023e7381560937305e14fc0ffbbe680db6cf72a2cdc62c371e27a5818bbc7cf983ed7e96130ca7c7760145b5fe0a974a499b9adcf31f4c1e3726ba38c2c5b0c6566c1b1316129abf6bb8e4575f56aa9edb1bd3ba6dbf4d60ef4c2711a03d02730340c402fa9672b073c6d83bab11a274fa99d34e2ce51378cca3c7a14b46203137f8b2cd5680136ccb7b4d882a0fe9094c5609321295b81ad85210b0e8529e565483b1772a11eb2ee6283b30db0c4e91b87f394a9a1d03904785c84b20a1d19d25387ce2d93c64c1985f1d1cae06c4aeca8ffb56ca05cd4ba5c6d07739f48c1bc1983c58efcb784faa6605efca96d53aaf313468cbc7bc0a43ba78e1b357eca6414cadcb1315f14d4df00e66f94e0ae763a0c00ac30360ead8c7a618321ff930dd3367ece6e3866aea94d00fe646a0bba1dea4037b57e19fb76e488b163af9b5a3576ccc84ba78e1f39654ced78dc9a6d0ce5a2b6b4fcbf35d86c4d3c965513365bb8ec21169b6dc25186db804d8e5c87824d78da82ad25e4a5bcb9659c846b4758bfec52ea7f4a9c56bae287047521208763d5aeaafd577d3e569d06a9a18ed5d0c66a73aaa18bd51d433534b1fa8a9d1a7a580d35ac86163e21c80c1dac860a3e39c80c05acbe7651166486f63d2dc80cdd7b4690199af72ce0fb36309f1d644ebbd4d0ba9d82ccd0b9ead6a57a755d7de64dbd5baf4edfd56d0175caab2ef1d4e9a73aed549717eaf685ba95a54ee9d4e9b23a1554a76fea72a4bfd67a40982e0cd34561ba384c9784e9d2305d16a6cbc3744598ae0cd35561ba3a4c03c3744d98ae0dd37561ba3e4c3784e9c630dd14648677be39c80cbfae867fbe35c80c0d7d5b901936faf62033a4f41d4166b8e911416628ea91416698ea51416608eb3b83ccf0d66382cc30b9770799a176c70599e17ad570d86a986c357cb61ae6570d09ac861456430dab6189d510c66a08643534f2fd4166c8653564f3434166d8e7e9617a244c8f86e9b1303d1ea627c2f46490191e5c0d1b3e23c80c33ae861f9f1d64862b9f1b64863757c39eabe1d0d530e96af87435acba1ae65d0dffae86857f314c2f85e9e520f348423d8a518f28d4ed7ff5184cdda27e33c8dc3a5f12641e71ab47feaa0b84ea12a2bac8ac08325da8549732d5c54e7539545d30559754d545577559565db8559776d5c55fbdf2a05e0151afc4a85784d42b53ea1532f54a9d7ac550bd26aa5ebb54af11abd7aa770799dbe27b83cca352753b5c3d1a50b7ccd5edfb4fc3f4ad201393df09d377c3f4bd307d3f4c3f08d30f83ccb0c66ab863355cb21a5a590dc3ac866c564339aba1a0d5b0d19f0599a1a7d5d0d5bf0d324362ff3e4c9f87e98b2033bcf69761fa6398be0ad39fc2f4e730fd254c7f0dd3dfc2f42f61fad730fd5b98fe1ea67f84e99f41dd30dbd8909ca05b1f7d05138c983265d4b80953caa6d4968d9b3a76ca980963ef2b9b3666cae8b2da7b464daa195b3b0d17feb65e58c6081f3069d288fbcac68caf1e756f59edd42965b5356555b553c757d73b88ff452f74d2fe1e475457473bfbcf6f42fa7f9be8f450dd2ecae8eb57345cb792964d10e488a62cd4a365d32a34491fc1e452f7c6cc7970d9e4b1b553cacacbc6877fc3036fedb451d59dcbf07f934391274f299b3c65c4a4296535936ac79575e98ceb7db86d132af15f6dddc09c7942d3c4e9a8bfb3d4a410fbe5a94d50e03f4e6d1a69ebb26f40dab6ac694ecbca9a50c3b39ab2d0954d24bca92c5296c953aba64c1a31724af4c2b77e9385ef684a35c737b19a27776882b3d39bb2d0800e4d23bca329ce6666e12cf86f5a25cf63845506009b2d6c6f00000028461f8b08000000000000ffed9d77741cd775c667d158164b1024c15ea046b3015c2c1a0136b0774a9464f5429004455a24419150b32c4bb224f7debbe516cbbdf758a97612274e1c3b96bbe36e4b2eca3f39ce49cef1c97bb3ef1a1f1e67d658682e78077be79c8b7d73f7eddcdffbe6ce9bd9f766074f054190098a4bb5b18b8273177abfcfbde69fded296e0b6f29c9c99947056a584b33a259c3529e1ac4d09675d4a3827a58473724a38a724c869d9aa82914bd2bc5319744d9a319b324deb53a0692e659a4e4b81a60d413afaa8e929e16c4c09e78c9470ce4c09e7ac947036a58473764a38e7a484736e4a38e7a584737e4a3817a48473614a3817a58473714a3897a484b339259c17a484f3c294705e9412ce8b53c27949829c2b8173a97b7d867b5de65e97bbd715ee953eb3cabdb6b836d6b8f55663ab2d9bb136efbd82b176631dc63abdf7ba8c751b5b63acc7bdd7ecdeeb35b6d6d83a63eb8d6d30b6d1e9b0c9d866635b8c6d35b6cdd876633b8ced34b6cbd86e637b8ced35b6cfd87e63971abbccd80163971bbbc2d895c69e69ec2a63571bbbc6d8b51ecb75c6ae377683b11b8ddd64ec6663078df51b3b64ecb0b123c6068c1d35768bb163c68e1b7b96b15b8d9d3076d2d8296383c64e1bbbcdd81963678d0d19bbddd81dc6ee347697b1bb3dcd9e6dec1e63cf3176afc7f95c63f719bbdfd803c69e67ec41630f197bd8d8f38dbdc0d80b8dbdc8d88b8dbdc4d84b8dbdccd8cb8dbdc2d82b8dbdcad8ab8dbdc6d86b8dbdced8eb8dbdc1d81b8dbdc9d89b8dbdc5d85b8dbdcdb1d081f07663ef30f688b1771a7b97b1771b7b8fb1f71afb0b63ef33f6a8b1f71bfb80b10f1afb90b10f1bfb88b18f1afb98b18f1bfb84b14f1afb94b14f1bfb8cb1cf1afb9cb1cf1bfb82b12f1afb4b635f32f698b1bf32f6d7c6fec6d8df1afb3b637f6feccbc6be62ec1f8cfda3b17f32f65563ff6cec5f8c7dcdd3fc5f8dfd9bb1af1bfb77e7fb867bfda6ab4be362ff61ec5baefcb87bfdb67bfd8e7bfdaef799ef19fbbee7fb81b11f7abe1f19fb4f57feb17bfd897bfda97bfd997bfdb97bfd857bfda57bfd957bfdb57b7dc2bd3ee95e7fe35e7feb5e7fe75e7fef5e9f32765953b13c39185efa8284faa88ea3793ba742e22f0d462e568b6af71ebd363b7f8d5ba757d2aed6add77afe3ab75ee76d67b25b9fecf91bdd7aa3e79fe9d6677afe26b7dee4f9e7b8f5399eff62b77e31f8b3018cb93abff5553b57067c94af55e0ab75be6af0d5d1e6c037c9f96ac147fbb70e7c539c6f12f8a63adf64f0659d6f0a6969acdef9fa82a47225df6fb79b4b7abb6e1e6a5af2bc87ed761b9878a727cf3b60b7dbc8c06bf36386dbd674c89b99ced708be59ce37037cae0bfad331677db39d6f16f8e6385f13f8e63adf6cf0cd73be39e09bef7c73c1b7c0f9e6816fa1f3cd07df22e75b00bec5ceb7107c4b9c6f11f89a9d6f31f82e70be25e0bbd0f99ac147f7b85c00be8b9def42f05de27c17818ffada8bc147d78697389fed272667e033ce4f7d54f819ea9fc1b78cfa66f02da77e197c2ba84f06df4a884dbe55d0af90afc5f9a88fb2eff5ba725f90d43151088f89b5496fd76cd96e777df2db0de7ed3604c35af7419cb5a0d546574ef0dea0368c9d714671c85f03e55d5097ea911e749e21767b3e59e7ca1b4b7caed7fb5c0eeaac8b687f5f906cfbd77b3ceb3de65a683f4fceb617346747bd949db357435d3ff7e89a6722e6ec5ee060c8d92ecdd9512f65e7ec00d4f5738fae7b2762ce5e071c0c39dbcf93b385bce66c718c2c08a2738fbefb4cc49c3d061cc9e76ca7e6ece897b273f601a8ebe71e7dff9d88397b0770249fb3ddfd7a6d30eaa5ec9c7d05d4f5738fc6622662ce3e041c0c393ba0fdeca897b273f66d50d7cf3d1a179c8839fb6ae0483e677b9872b65d733628ce77064174eed118f544ccd9478023f99c3dace3b3a35fcaced9cf435d3ff768be6422e6ec475cd9ce337cc3cd332c04df379d6f11f0269fdb473a9872bba0b95dbc0f2408a27394e6ee26626e3fe6ca368f1f877b0fc8f76de7bb007cdf71be0bc1f75de7bb08dac5700cf4eb3130eaa5ec63e0fb50d7cf659a479e88c7c0d7818321670f6bce8e7a293b679f80ba7eeed13d0d1331677f041c0c393ba0393beaa5ec9cfd03d4f5736f992b4fc49ca5fb4aedf5c28fddf5c20af0fdc4f95682efa7ceb70a7c3f73be16f0fddcf95ac1f70be75b0dbe5f3a5f1e7cbf72be36f0fddaf90ae07bc2f9dac1f7a4f37580ef37ced709bedf3a5f17f87ee77cdde0fbbdf3ad01df53ced7e37c76be8beebdfaaaf3d97d4b1af505c9ee5bbac792b64debabc621768317bb611c63377ab11b2362b730c4ce420c5a32de7a1f945b7879f2b960e4ef3f28d6eae463b5dbb6b706a36ffb6ae0c933b43d0b3146c393079eb6e479c27b7d0bc96f37dcc7ad9ea65988d50aed6a6768570662d1b6699de2e5c087fd777b046347f28c850cc4a26dd37a0730920fcf27745ea7e3c79e0f97668679198ea5f09a88e2d1b3bf886335f8a9ceef670db3ad706cf5f03e9e5bdb3c1f535e867941b168dbb44ef1eaa13d6de3cf58182d63de63e4ea2332108bb6edc7c6e3bd65fc351bd57ecd81ef3cf44985b1f649f5c0361ed72971fb5a4a6c8ef355066250df469a17c04f7566bb1f24d8be6d07f4bb0cc75fa1dceb37ec0f92cfe3421e8febd1f0b4030fc7b1cf74bce6f1bcffc720d95cebf4b46af3b4ca419d0ed0af9341bf52d721144f99955999955999955999955999955999955999955999955999955999955999e533e3fd1738bf49f5560961245f017838c6f9c3e747b96dd1f6edbcce77605e27f9798b421ee72ce91ec3e55e9b6ba0ce9399e1ba3f80f9747f6e10e73457f16a37aafb2cea8373e76239e710e3e681a3e62f9b138b5d38cc35df669fa1629f43d6eae9ba2a425386fb5446689af134c5fb14577a3c364fe7550fb371ccfd953b17895a5139c9b93dbcc78077bf14fb0fca85aa6064ff81e799aec4638f9cc3a4f9f22e2f760dd4f99fccf0bea17b51e9ff1cfaf73cd93adddeb6e933cbc1dfed6dbbc17d96386abdedb7c267a9ceff419ffaf6aae04f9a71dcff81fd72006dc5a50fca386f9efc79b8388fdf5e064f27f070f4334cd71b793c06929ec7eff6b48aba8ea13a5da05f37837e51d7a2b44ef194599995599995599995599995599995599995599995599995599995599995593e33fe569458b350af2084719cee7d08e733e8f92fb47d3baff3d2aae1b8dcf37034e7b4c26b730dd4f95ad570dd57ba727d70eefd0e71fb92613eafe4bea478f5d01e9c0be2fa3d7787c7d311a105959b138b5d9cc74f5ee3e179fc764fd74284a65cc72bceb1a2a678bcb6793c38375a1f9c7b6f4916b6331ef70ec5e505c5c363a9037c54c6df4773ec673c97f8f7f5503c9cbf7ed469db1070edfb429eb3df58036dea0bcecdef1aa8f361e8fb3eeaca780f07de3bf258c4fbb4949aa726fd589e65972fcefbae05ce3e8883b1d7016b42b1db3076c619c5217f0d94bf54355c97ea911ea435b1db63849e0986ecfee7dabccfe5a04e4f44fbfb8264dbdfebf1f47acc769f7c02f2ec3138ff73f5493d311a2d078da80e5e0771dd93e7f791fefd8d78df5e9d5707af59a8ce57a08f8abb7f34ea9e43aef358dc3d8751d7c69dc0e8b7d1bfcfb3d2efd37a1cfa8ba4efd37a1c7208efd30abcedaf80ed13575d107f6ea13adff3b6ef5f93d367f03e30aaf343e82f1adc3d8bf5c1b9d7df78cfd4787cbf8abb4f9ae2e1750d1edb7faeed96790dd4ef4b9019730259f03a81eafccadb67dd31dcab233efb64cc6749ab1657c6ef2fbe7e56871ef84c5f223a148ff95eaf2d94d73dd016aaf35fde3560f2d72dc56bc0e4db3af29a84fa818e88b6529dff8663ed0f708d47fb09bf77d4559ffb3e2da5ae01493fdbe6f17e3e30c696f07ce0daeae1bafe737e49eb729f0fdce57d4ee2f381ff17f2ac0eee43e7eaabd7c568b40234a23af8db203a8fe0b37ca3ce315cf7f6c79d63a29e4189fd7343f5f8b3f9e36a51d70854873e8bd708b31c7383d3d9afeb8f17d2f932c9fb86f1b712ad10177f2bd1caa4671e74eb8375bc2e389fb1f34cb1e39e399d1f87d871cf9c1e8fd88d5eecc6718cad9aabe6923467782672f8fb337c66a95d4a5d9712430e3e579502c6ea1430d6a480b136058c7529609c9402c6c929609c9202c6a92960cc02e3f93cb733e85318ab3e5cfbabd4b506c66e61d2a29cffdfc1fcbf544a5efb606c86ef74a1162dc1e8b5c0ef791ccf7e28f77fbd1003feef821929609c9902c65929606c4a01e3ec1430ce4901e3dc1430ce4b01e3fc14302e4801e3c214302e4a01e3e214302e490163730a182f4801e3852960bc28058c17a780f19214302e55c6441857f23216c6ca687938fee7dfd3f99f630c3cf9a87b4e997e7b52f6ff5b637e3e69db589f1b87f796f0fe4fb8a7f76c3b8e7b47ca7db65da9ffb7cac458182b23d77decf83b9ed1f0e0ef22a37e5bc3c058182b23d7ef5ff0377aa3e1e902cd3a233463602c8c9591eb5eb972efe5c47bfabb223463602c8c9511efab4e9027d4acbb0c9e35a0597784660c8c85b13272dd979c8518a3e1e901cdd64468c6c058182b23d36fdb42cd7acae0c1df80f54468c6c058182ba3e559cba4596f193c6b41b3de08cd2431224fd2cfc9ee8d88c5f19bc172db4e0cc83825058c5353c088f74970f45fa5ee93e8e5d5a730567db8f657a9fb243036c3ef63422df0f7107f4e8bf5bc3c25ef93c0d81b98b4c0dfabfc392d36000fc7ef67b21063343cc49083cfcd4801e3cc1430ce4a0163530a1867a780714e0a18e7a680715e0a18e7a78071410a1817a68071510a1817a78071490a18f1bb2ac3b562c9ef2f1b2678ecb8ef2a133d76dcf792891e5bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73c97143b0d63fcca38f11891a739399e3cb61d63f509687b5f044f86a9ed186b9380b61343da1837a680716d0a1855c7e23d886361b43c9b99783695c1b31978b630f16c2e83670bf06c4d9e27cca92d65f010430e3eb736058c1b53c0a83aaa8e921855c7cad1511995511995f17c30a6a10f57c654e46361ac8c96675bf23ca1665bcbe0d9069ad1e7da78190b6365b43cdb93e70935db5606cf76d06c5b84660c8c85b1325a9e1dc9f3849a6d2f83670768b63d423306c6c258192dcfcee47942cd7694c1b31334db11a119036361ac8c966757f23ca1663bcbe0d9059aed8cd08c81b1305646cbb33b799e50b35d65f0ec06cd764568c6c058182ba3e5d9933c4fa8d9ee3278f68066bb233463602c8c95d1f2ec4d9e27d46c4f193c7b41b33d119a313016c6ca6879f625cf136ab6b70c9e7da0d9de08cda432ae4d01e3c6143032eb58182ba3e5d9cfc4b3af0c9efdc0732913cffe32782e059ecb92e70973ead232788821079f5b9b02c68d2960541d5547498caa63e5e8a88ccaa88ce531f6a58051f7b5324a6564f87e55f23734974ef0d80d5eec860a891df71b9a891e5bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad79ae795e09b135cf35cf2b21b6e6b9e67925c4d63cd73c9714fb40f2b10be53e63e600f0703cf386a99d79bbddcbddb6fe98a07e56ab2b3cad2ef5b4ca419dcb41bf2b18f4cb405cda36ad53bc72999f2180992976619ad9c614683fc5d8e8e961e35fc9d4f6b8befeca091e3baeaf9fe8b1e3fafa891e5bf35cf3bc12626b9e6b9e57426ccd73cd7329b1b15c1b0c5fb7d3f34fed369ee9ca356e1d59c94f752e9b547c6d08f418e288adc7909e2b2a21b6e6b9e67925c4d63cd73caf84d89ae79ae795105bf35cf3bc12626b9e6b9e57426ccd73cdf34a88ad792e2fcf311faac68127f07882123c1b84f1ec16c6b34318cf1a613c8b85f1740ae3992b8ca7208c6786309eadc278a608e3592e8ca75a18cf26613c79613c7b85f12c11c6b34218cf3c613c3385f14c15c653238c67b3309ed5c278f609e3d9238ca75718cf52613c3dc278b609e3e912c6335f184fbb309e59c278560ae3c90ae36915c6532b8c67a7309e16613ccb84f1ec17c6b34e18cf02613c4dc278ea85f1e484f1d409e3592f8c6797309eedc278ba85f12c14c6d3218c67b6309e55c278a609e36910c6b34518cf24613c8b84f1cc11c6335d184fa3309ec9c278c6e37943e5f06404f06483739f499685f70f80afcafbacedafda9a86dfbfcaf9abe03357bb7275c4b6af021ffd36fcea88cfa24e57415bfa5c39fff49650278cd507eb14af1e38ae16c2734018cf64613c8dc278a60be399238c6791309e49c278b608e36910c6334d18cf2a613cb385f17408e359288ca75b18cf76613cbb84f1ac17c653278c27278ca75e184f93309e05c278d609e3d92f8c6799309e16613c3b85f1d40ae36915c69315c6b35218cf2c613cedc278e60be3e912c6b34d184f8f309ea5c2787a85f1ec11c6b34f18cf6a613c9b85f1d408e3992a8c67a6309e79c2785608e359228c67af309ebc309e4dc278aa85f12c17c6334518cf56613c3384f11484f1cc15c6d3298c67b1309e35c2787608e3d92d8c6783309eaa081e86ff7f19f2d0fd6bb46d5a3f202436c37e08ffefe7354c6dbad66dabd66d97f8295e0dd4b9ce5d18d8fb51f0b3c4e5df6f88f7ce5d0b1a5dcbd416da1f196fff30c72ee07d950130049e3e41040fc7fda84ced1c918709feffd9bcd5ea3a4f2b7fdfe5a0ce35a0df750cfa45e5f69f8e01f79a4666cb43e70e62cd42bd0d4218c977252f4f78dc6e08462ea58edbeb8087a30f636a67787c5defb5694384ee540773f57a8676461d3bb47e3dec87b4315b9e4dae4cac59a8b7490823f9aee5e5098faf4dc1c8a5d4f1753df070f43f4ced0c8faf1bbc366d8ad09dea60aedec0d0cea86387d66f80fd903666cbb3d99589350bf5360b6124df75bc3c1d5968332da58eaf1b8087a3ff616a67787cdde8b5697384ee540773f5468676461d3bb47e23ec076556e62866cb43bf3121d62cd4db2284917cd7b3f274e4b3d0665a4af56337020f473fcfa47bd88fdde4b5694b84ee540773f5268676461d3bb47e5344ece620592d6e1e85163747f0dc3cce5a50bc7299af4921b3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaab35d5467d55975569d9360569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e63569d55e73866d559758e6396a0b3e5a167c4106b16ea6d15c248be1b7879c2df056d0d462e196fbd0fca3703cf8d0cfa30b533bc87fca0d7a6ad11ba531d3cbe0e32b433ead8a1f583b01f0e96c17c530a9955e7b1315b1e7a562cb166a1de36218ce4bb919727ecc7b605239752fdd841e0e1e8e799da19f663fd5e9bb645e84e75f0f8ea676867d4b143eb144f9995398ed9f2d0ffb021d62cd4db2e84917c37b3f214c2df376e0f462ea5fab17ee03998384fb11f63d03decc70e796dda1ea13bd5c15c3dc4d0cea86387d60fc17e2887f9a61432abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3ea5c393a5b1efadf21c49a857a3b843092ef202b4f7b38efb02318b964bcf53e281f029efec4798af30e0cba87f30e87bd36ed88d09deae0f17598a19d51c70ead1f86fd30d1996f4a21b3e6c6f8306b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7314bc80dcbb3d39589350bf5760a61245f3f2f4ff8dc839dc1c8a5d47d3b8781e710833e4ced0cefdb39e2b5696784ee54078faf230ced8c3a7668fd08ec076556e62866cbb3cb9589350bf576096124df215e9eb01fdb158c5c4af563478087a39f676a67d88f0d786dda15a13bd5c15c1d606867d4b143eb03b01f945999a3982dcf6e5726d62cd4db2d84917c877979c27e6c77307229d58f0d000f473fcfd4ceb01f3beab5697784ee540773f528433ba38e1d5a3f0afb419995398ad9f2ec716562cd42bd3d4218c9778497a7908536d352aa1f3b0a3c1cfd3c533bc37eec16af4d7b2274a73a98abb730b433ead8a1f55b603fa48dd9f2ec756562cd42bdbd4218c937c0cb131e5f7b83914ba9e3eb16e0e1e87f98da191e5fc7bc36ed8dd09dea60ae1e636867d4b143ebc7603fa48dd9f2ec736562cd42bd7d4218c9779497273cbef605239752c7d731e0e1e87f98da191e5fc7bd36ed8bd09dea60ae1e676867d4b143ebc7613fa48dd9f2ec776562cd42bdfd4218c987e78bfd4c3c398f2717a1c5448cdde0c56ea890d88d5eecc60a89ad79ae795e09b135cf35cf2b21b6e6b9e67925c4aed45c53cd2b53f3cc79d43c731e35cfa8e62235ff6372b13bb15fa98258c798da894b1f94717c8e9635c278160be3e914c63357184f4118cf0c613c5384f12c17c6532d8c272f8c6789309e15c278e609e399298c67aa309e1a613cab85f1f40ae3592a8ca747184f97309ef9c278da85f1cc12c6b352184f56184fab309e5a613c2dc2789609e359278c6781309e26613cf5c27872c2780e08e3a913c6b35e184fb7309e85c2783a84f1cc16c6b34a18cf34613c0dc2782609e359248c678e309ee9c2781a85f14c16c69311c0930dcefd3d0afe9ea01a7c747fff7ef03dcb950f80af2a22066de738f868fc94b661fb9b754de73254c1676e8de07a56443c8a736bc467c743778cd507eb14af1e386e15c23359184fa3309ee9c278e608e359248c6792309e06613cd384f1ac12c6335b184f87309e85c278ba85f1ac17c653278ce780309e9c309e7a613c4dc2781608e359278c6799309e16613cb5c2785a85f16485f1ac14c6334b184fbb309ef9c278ba84f1f408e3592a8ca75718cf6a613c35c278a60ae399298c679e309e15c2789608e3c90be3a916c6b35c18cf14613c3384f11484f1cc15c6d3298c67b1309e35c278aa22780e30f1c43d4fe18080d8763d0fbad8250bef8fc7ef000f788cb47e0c18919778f24c3c71cfa0c80b886ddb4fdf25680e2e0befe3efb8b8722aef31d27a544ee17d69ab9978e29edbb15a406cab058d5dd23d0059781f7fb7c09553ab3d465a8fcaa9465e9ef07f4bb404239752f71ae131c7b10f99da99c7e32fc16768443e8bbac5d30a9fa13a1ef7c9c7f507144f9995398ed9f2d0dc05b1e2f96c3c7ef7361ac6a8f32b034fd83fb606239752fde331e0e1387f30b533ecc74e786d6a8dd09dea60ae9e606867d4b143eb2722623707c96a7172145a9c8ce03939ce5a50bc72990fa4905982ce9667952b136b16eaad12c248be3c2f4fd83fae0a462ea5fac793c0c371fe606a67d8279cf2dab42a4277aa83c7d7298676461d3bb47e0af64339cc2752c8ac3a8f8dd9f2d01832b166a15e410823f98eb1f214f25968332da5fab153c0c3d1cf33e91ef663835e9b0a11ba531d3cbe0619da1975ecd0fa20ec076556666556666556666556666556666556666556666556666556666556666596cd6c79e8b78dc49a857aed4218c9779295a738efd01e8c5c4acd3b0c020fc7bc0c93eee1bcc369af4ded11ba531dccd5d30ced8c3a7668fd34ec076556666556666556666556666556666556666556666556666556666556666596cd6c79e899dbc49a857a1d4218c9778a9727fcdd564730722935ef701a7838e66598da19ce3bdce6b5a9234277aa83b97a1b433ba38e1d5abf0df683322b7314b3e5a1675b116b16ea750a6124df202b4f71feb43318b994eac76e031e8e7e9e49f7b01f3be3b5a9334277aa83b97a86a19d51c70ead9f81fd500ef3891432abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3eaac3ac731abceaa731cb3ea5c393a5b1efa9f6bc49a857a5d4218c9779a95a73d9c77e80a462ea5e61dce000fc7bc0c93eee1bcc359af4d5d11ba531d3cbece32b433ead8a1f5b3b01f263af38914326b6e8c0fb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb3e68632c7316b6e28731cb384dcb03cddae4cac59a8d72d84917cb7f1f284cf3de80e462ea5eedb390b3c6718f4616a6778dfce90d7a6ee08dda90e1e5f430ced8c3a76687d08f683322b7314b3e559e3cac49a857a6b843092ef0c2f4f210b6da6a5543f36043c1cfd3c533bc37eec76af4d6b2274a73a98abb733b433ead8a1f5db613fa48dd9f2f4b832b166a15e8f1046f2e179b9878927e7f1e422b4385fb1ed7aaf2bd7bbd72cbcdf0b8c5cfd618fc748eb98e3c84b3cbd4c3c0d1e4f438416e72bb66dff3a579ee65eb3f0fe3a60e4caa95e8f91d6a372aa0178d631f1347a3c8d115a9cafd8568bf5ae3cddbd66e1fdf5c0c89553eb3c465a8fcaa946e059cfc413d727ad1f87d871c7d778c48ecb95f188ad9aabe6aab96acea979e63c6a9e398f9a675473519a335c4785e3bd142300065cfaa08cdf1538ae3d99da998ffa3eb6de6b137e1fc33187f3f57d439995398e9969dca223ebc5267d028f879621662dc673dcb4d76b531ac64d4b319f4821b3ea3c36661bfb8ee4637764bdd8a44fe0f1d07207b3164ced0cfb833b83688d295e0eea609edec9d0ce0cc4a56dd3fa9db01fca613e914266d5796ccc36f65d89c72e3e4f1e63933e81c743cb5dcc5af0b4b3d81fdc1d446b4cf1725007f3f46e867666202e6d9bd6ef86fda0cccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaaccccaacccb2996dec67271ebb387e8fb1499fc0e3a1e5d9cc5af0b4b3387e7f4f10ad31c5cb411ddce7f730b433037169dbb47e0fec076556666556666556666556666556666556666556666556666556666556666596cd6c633f27f9d8e1ef713036e913783cb43c87590ba67686e3f7f706d11a53bc1cd4c17d7e2f433b331097b64debf7c27e5066658e62b6b19f9b78ece27c1ec6267d028f8796e7326bc1d3ce627f705f10ad31c5cb411ddce7f731b433037169dbb47e1fec8772984fa4905975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de3985567d5398e5975569de39855e7cad1d9c6be3ff1d8ede1f83dc6267d028f8796fb99b5e0696771fcfe81205a638a97833a98a70f30b433037169dbb44ef12a81f9440a993537c68759734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59734399e398353794398e59426ed8d8cf4b3e76f87b768c4dfa041e0f2dcf63d682a99de1fd2f0f06d11a53bc1cd4c13c7d90a19d19884bdba6f507613f28b3324731dbd80f251fbb90f562933e81c743cb43cc5a30b533ec0f1e0ea235a67839a883fbfc61867666202e6d9bd61f86fd903666dc7f99e46287f76d528c2af76a7dcf77e56af0bdc0956bc0f74257ae05df8b5cb90e7c2f76e549e07b09b48d7c2f75e595e07b992baf07dfcb5d791df85ee1cabde07ba52bf780ef55ae3c04be57bbf2ede07b8d2bdf01bed7baf29de07b9d2bdf05bed7bbf2dde07b832b3f1b7c6f74e57bc0f726577e0ef8deeccaf782ef2daefc5cf0bdd595ef03dfdb5cf97ef0bddd951f00df3b5c7929f81e89f0bdd3959f07be77b9f283e07bb72b1f00df7b5c790af8deebca53c1f71750a6d7f7b9723df81e75e51cf8deefcad3c0f701576e00df075d793af83ee4ca8de0fbb02bcf00df475c7926f83eeacab3c0f731576e02dfc75d7936f83ee1ca73c0f749579e0bbe4fb9f23cf07dda95e783ef33aebc007c9f75e585e0fb9c2b2f02dfe75d7931f8bee0ca4bc0f74557c6fdfb97aefc10f8a85f79187cd4af3c1f7cd4afbc007cd4afbc107cd4afbc087cd4afbc187cd4afbc047c94772f051fe5ddcbc04779f772f051debd027c9477af041fe5ddabc04779f76af051debd067c9477af051fe5ddebc04779f77af051debd017c94776f041fe5dd9bc04779f766f051debd057c94776f051fe5dddbc04779f776f051debd037c94778f808ff2ee9de0a3bc7b17f89a5df9dde0bbc095df03be0b5df9bde0bbc895b19fb9d895df07be4b5cf951f0515ff87ef03dc3953f00be65aefc41f02d77e50f816f852b7f187c2b5df923e05be5ca1f055f8b2b7f0c7cadaefc71f0ad76e54f802fefca9f045f9b2b7f0a7c0557fe34f8da5df933e0eb70e5cf82afd3953f07be2e57fe3cf8ba5df90be05be3ca5f041f9dc7a99fb1c7b33d2e4907d2c8faa8cdad116d21df64684b5f90ec351dc5a26dd37a3b30d23e288c3f6361b48c6d1ea3e5e964d00cf38a9652df993a81a7838187a99de177a62eaf4ded5e9b7250e719d0ce2e867666202e6d9bd6bb2036c73e472d6add7697795ad4601d7742b3e7d3523ad2366cfe1622dad2c3dc16da36f54b3de310bbdb8b9df762637f4c4ba9e3ab1b98d73030dbedf626bfddf0f85aebb645394571f2d0a675a041526dc2d819671487fc35509edf345c97ea911e74fe22769bcbb42f91ddff5ca7f7b91cd4e989687f5f906cfb7b3d9e5e8fd9ee9386a6610e86e321cc811e8f83d6f3a05d6f8c763da01dd5c1f35f0b93766b3c1e5a6f011ebac6e9021f5d2b103f5e67b58e03b7dfef75457093af1b185b22180bc93386d73a2d1e23ad1780917c6b80a79b49337f5f2ff3f4c1f3729d57873e5b037556c3b9311b51d71e774b33c3eda2efe07f0c92edd3eb18f4c2f18100f4093c0d03d08bda59cbc03335181e23383b3478a6ff9681cb07fa8f6400adc6c3c4d74c4433aac087e5ea085f108c1c0ac121591a0ac121d92a4f161c82a1faf6ab946d160d370c9c3c3ef4cc5303a70e9fb9fbf4d0c091bd83b72075ad478fa4712d4052f4d13239181eb4e90b929d8ca9f362954a9ec9f03a09dea73af9a7b7b431b5333ce94df1da54e7b52907756ae1bd290cedcc405cda36ad4f89889d6047146a3175145a4c8de0993ace5ae0c037f9f048a5f771f2a4ca6b0b1ed1d8263fcf136d10055c0adbcf3838fb9e3dd86b5d632605c33b9b7a4f7b456b77821d31b5672d3b226a47406d17644738ed88a63da9d9114b3b42694724ed08a41d71b4238c7644d18e20da11433b42d81c144700ed889f1de1b3237a9700db5781d77eabb667483b226747e0ec889bbdb2b25700f66ac45e7ddb2b453bfa61af10ec374b3bca60cfb6f64ac69ea5ed99d55e29da2b447b456faf70ed2cd506631b9dd69b8c6d36b6c5d85663db8c6d37b6c3d84e63bb8ced36b6c7d85e63fb8ced3776a9b1cb82e2e8fae5c6ae3076a5b1671abbcad8d5c6ae3176adb1eb8c5d6fec0663371abbc9d8cdc60e1aeb3776c8d86163478c0d183b6aec1663c78c1d37f62c63b706c53b744e1a3b656cd0d86963b7193b63ec6c509c31b333647646ccce80d9192f3bc36567b4ec0c969db1b233547646cace40dd1f146798ec4c919d19b2b3027616c08efadb51fe1706c5517c3b6aff92a0382a6f47e1eda8bb1d65b7a3ea7614dd8e9adb51723b2a6e47c1eda8b71de5b6a3da7614db8e5adb516a3b2a6d47a1eda8b31d657e24288e22db51633b4a6c4785ed28b01df5b5a3bc8f06c5515c3b6a6b4769eda8ac1d85b5a3ae7694d58eaada51543b6a6a4749eda8a81d05b5a39e7694d38e6ada514c3b6a694729eda8e4978c3d66ecaf8cfdb5b1bf31f6b7c6feced8df1bfbb2b1af18fb0763ff68ec9f82625efeb3b17f31f63563ff6aecdf8c7dddd8bf1bfb86b16f1afb0f63df32f6b8b16f1bfb8eb1ef1afb9eb1ef1bfb81b11f1afb91b1ff34f663633f31f653633f33f67363bf30f64b63bf32f66b634f187bd2d86f8cfdd6d8ef8cfdded853c1f0ec0676227f702b34d2de3f343470f2f450f3d060f3c9db4f0c1d3f7de2eee63b8f0f1d6b1ebc63e0ccd1138377e287dfe7ba2d9a46d874e64cffddcdc74f1d19b8ab79f0f6a1e6c1a3cd87066f3f75e42c7ee8cbee430bcf8dd87fe4487cb06f553d0dd2ef8e31e82fdde768826657e9b63d3116419e1acb8766568fad4197bab30e7d7bbfa278b5db7cf6c4e05073bef994f9db7fc27c66e0486b33be77d6887c76a8f9ec50ff99a1e6a367064f36b7b5e276af9d328646d4348de143ad4da36f79f0ffd2fd24f2250a0400", + "packedBytecode": "0x000000028df71de500000047d61f8b08000000000000ffed9d779815c5baee7b604064390398b77130a1a2382c3233c0c29c30a38888300c232830443163961ccc19094ace02028a801876383b4777d2ed76a773cedefbb97f9c7bce0ddedbb5567d67de29aa875963d7e25db3aa9fa766557f53dddfafdefeba3a5577fd330882a22033b50cd319c18193fc3fa57fcbbfd9d435c67595bbe42cca13ce1679c2d9324f388bf384b3559e70b6ce13cec3f284b34d9e701e1e23a7626b11d49fe2e66deb40d7b8191379a6e91179a069499e695a9a079ab60bf2a38d6a9f279c1df284f3c83ce13c2a4f388fce13ce63f284f3d83ce13c2e4f388fcf13ce6fe509e70979c279629e709e94279c27e709e72979c2796a9e7096e50967c73ce13c2d4f384fcf13ce33f284f3cc3ce13c2b46cecec0d949ff9ead7fcfd1bfe7ea5f297b9efe3d5fff76d1752cd6f31728ae30a9873449e37fddc2d43d4c3dc2d4d3f85faf30f50e539f30f5d5ff2bd3ffab08536598fa85a97f9806680d0686e9c2305d14a68bc37449982e0dd36561ba3c4c5784e9ca305d15a6abc334284cd784e9da305d17a6ebc37443986e0cd34d611a1ca69bc3744b988684e9d6300d35586e0bd3b030dd1ea6e161ba234c23c234324c55611a15a6ea308d0e534d98ee0cd398308d0dd35d61ba3b4ce3c2343e4c13c2541ba689619a14a6c9619a12a6a9619a16a67bc2343d4cf786e9be30dd6f68f640981e0cd343617ad8e09c11a647c2f468981e0bd3e3617a224c4f86e9a9303d1da699619a15a6d9619a13a6b9619a17a6f9615a10a685615a14a667c2f46c989e0bd3f3617a214c2f86e9a530bd1ca657c2f46a985e0bd3eb617a43b3c88eb0384c6f8669499896866959989687e9ad30bd1da615615a19a655615a1da635615a1ba675615a1fa60d61da18a64d61da1ca62d617a274c5bc3b42d4cdbc3f46e9876846967987685e9bd30bd1fa6dd61fa204c7bc2b4374cfbc2f46198f687e9a3307d1ca64fc2f46998be1da6ef84e9bb61fa5e98fe254cdf3734ff41987e18a61f85e9c7daf613fdfb535d56eedffd2c4c3fd7f95fe8df5feadf5fe9dfcf8c657e1da6df18b6df86e97786edf761fa5ce7bfd0bf7fd0bf5feadf3feadfaff4ef9ff4ef9ff5ef5ff4ef5ff5efdff4efbfeadf7fd3bfffae7fffae7fffa17fff19a62d1d33f93641dd940a626aa3bad7a49ffd88f89d82fa93d2a2a5fe9ffc96697bb19e975fd1ae959e6f65d85bebf9d6c67adae8f93686bd839eef60d88fd2f34719f663f4fc3186fd383d7f9c613f43cf9f01f64400f786b55dd95a6a5311d8245e5b80ad95b6b5045b6b591dd80ed3b6566093eddb1a6c876bdb61606bab6d6dc096d0b6c345cb301da16da920ae58291fa9d65b12f77af5f3b2d2f87947a9f5b673c4db3e7eded16abd1d1cf0aaf83852afab3dc4cd51dad6016c476bdb91603b46db8e02dbb1da7634d88ed3b663c076bcb61d0bb66f69db71603b41db8e07db89daf62db09da46d2780ed646d3b116ca768db49603b55db4e065b99b69d0236dde406a782ed346d2b03dbe9dad6116c6768db69603b53db4e07db59da7606d8a4fd3d136c72be7896b6a9b6e3f0225846dba5dd4a2f236d36d8ce91f61a6ce74a5b0db6ced24e83ed3cf02db6f3a1ad115b176d93764bfdafafcea782b8f693648d5a6f45dceb0dd7acd6db2ffef5a69f39f60feab44e819f0ad06a80cec7d8afa92bfa2ed249fc88bd18f257425929277ac8b147d8d5b1a052e70734b05c5f63b952285369a97f2a88b7fefd0c9e7e06732bc8bb89d96edd7ccc367aca3a6687405933f6e43ca839c6ec20e07010b3bd7ccc367aca3a666ba0ac197b722edc1c63f636e07010b3556e623659ee633673df2c08ecb127d743cd3166c70247fc31dbc3c76ce3a7ac63f631286bc69e5c1337c7989d0e1cf1c76caf2a7f6ed0e829eb985d0865cdd893fb33cd31669f040e07315be3dbd9464f59c7ec1b50d68c3db957d81c63f659e0883f66fb388ad96e3e6683cc33d020b0c79edcb76e8e31bb0438e28fd951fefe6ce3a7ac6376279435634f9ea134c798dda0f3ea39c34ff4738693c0f6536d3b1978e38fedea1e8e623be9633bd3372408ec312acff39a636c7fa0f32a8e7f01fd11c4f64b6deb08b65f69db6960fb4cdb4e877a39d807aafc3ed0e829eb7de03750d68c6579b6dc1cf7811f01878398adf631dbe829eb98fd1b9435634ffa3934c798fd3d703888d91a1fb38d9eb28ed9ff84b266ec9dadf3cd3166a5afa93a5ff8429f2f9c0bb63f685b67b07da96de781ed8fda763ed8bed2b62e60fb93b65d00b63f6b5b39d8fea26d5dc1f6576d4b82ed6fdad60d6cffaa6dddc1f66fdad6036cffae6d3dc1f6776deb05b67f685b6fb0fd53dbfa689beaa7277dafe4bcb50df0a78278b7adf4bb9475cb7cd71cf86e67f86e9743df1d0cdf1d2cbe930e7c27c0874c45c67c0af249b73ce5a5c083bebac7efab9baa7bb7a0f175ef0e3c3d1cd43d013e1ac3d303787ac6cf93eeffdb2bfef5a6b7713743d304f8ea06f5eaeda05e45e04bd62df3e2af146cd8b6f6b630f6899f315904be64dd32df0718c5866dbdbc7325fb8f3a1e762aaae375b02fa5cf89c49f7cb74c38ba835dca5cd1b18eadb3662b81ffe371afa761731497e9b8105fb26e99177f25509f9eb9674c3696b187c1e8aa8d28025fb26eefbb6e3b481e8fe30eae75ac6d9af8aec881ef3e86efee866f6c3b656ae8d8d6079863bfe6d4c7b6caf8d75b8ed727726d287ef0fc01afe1e2aa13fa966b43f123f662c85f53545756ca891ed20e0bbb8a65d996c86e2ed7db58ae14ca5458ea9f0ae2ad7fa5c1536930ab6d72111c0b1dec0fe918a8303864be3b685719a15d05682765ce06ed5cb5677d0d1e99ef093cd28ef5021e57d744513cb9b81e3b986f3c87c5eb67f93f9e07b8da5e5d0d4699b76daf3ec0683b5771703dd3e0b94a0f60145b5fe0e9e648b3a8edda8dc4b7835849b747e243cecd65ffed097629d347bf50a7dacabba0ad741123188f3235f69a37feed944c5f83f7c88207b79d83ebaaae8ee2b11cefdf7c1dc41b6b66bbd4c3d02aea1e8fabb6bc9bc123f3e2cf337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993d333f333e4fc27e5b52ae2709a3d9ffcdd57dfef4f70ff5ba64fdeab9ceff76da1f2c598efd63a41fc4b9469d8ba14c498bbab2ff0ffa8399cfa9b08f644fb7daa5b725f6c74cc1bcf8c3be56b82d19fa3b95c5e63b39cad5f336d5c75a7d47d3ecfbd9d3a2a98bfecfa86991a129f6c73fcfe051715ad9b28ecdc5b3bf6c9f45a256928ff3d95e69608ff5f8b74bb2de33eb1641fdf6038f33aefaef485b2dcfcb2b0cdfc550e6c41675db46fa56c918c3dd8ce5b0df8fac5b963917ec95c6badbeb6585a395b1fe5eb0ac943905dad4bd2dea3473d05626b3edbb8ecfcde33f0e679ee377cb82a72bf0b868671c9d6f94e33e10f7737cb37f9aed3c46ca60df3e07fd2a1becef24fe3cb367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed933f3332b1ef3592bbe5fdb9d8431477d1fd2cf33e45b65b2fef4f7825bd4f975fd1c4e9e397536ea8cef8efeb3455dd92d3a5f121cd8df216a5bbafa3e45d4b6147ff8ed197c16e4e2b96e11f89275272d5a48be2c36df99e7f82ec68690e7f8dd0c5dbb5b3475b5bfe23356d414f7d71e060f3e1b8dfab64fd2b0b9ec3b141517e20ff7a524d8248fef47bbd8ce782c31fbf5883f7c7efd5dad6dfbc0d5b64f96bb6c37f0bb29a9e0c0f8c6efa9fc10dabe1feb3cf6e1c0be235f58fe2f5343cfa9453f556707dfd72c2f8275c9f6b57ddb7320b0c6e4bb2baeab48a7818606c590ffbc455d59292765456b6157fb887c0306d9cde57a18cb954299fe96faa78278eb6f7e6b7580c1acb6c9cf20cebe80e3bfab36a97f8446e7824652c6f1371badfd2bcd7e85d88eb636cac8b2f82dbabf421b15d57fd4760c707d1c9375db8e63e671a131fd3c0bbd9fd67f417b11773fadff8218c27e5a81b1feceb07ee16a1d441f5ba4ccff35d66f9e93cb32d80fecbff713f89e4b52e7b339273f54d757b673725c2eaaee8a19bf83968a9119630259f03c41cab4d55acb36ab8ce0ee6359b6246259d1cafc56584970a07e6ebeb396d9e707187591b8c66f904b99a3a02e6ece5b32e780aebe2997823aa97cd2525729733cec6b27e87c02b613eeb7e758fe2f5343e7803886fb85f1d739bd7d2f02ce14f841df17036b4cbebba26f3907143f622f86fcd92debca4a39d143b41676b58fc87914b29bcb5518cb9542998196faa78278eb7fa1c173a1c1acb6c9c91067e7403f74576df5c0088d3a83465206ef29dabe036abbd7e1eafd8da873297c7fc93cbfc2e3a49bf326fb79ac795fcd768ed0d9e0c773845ed0ce262c65cdfb8572bc8cb3df30be2bd10bfce2bb12aebedddc17744bc13c9e171c4adf2ebe63abfc458d99d03707bea3c64cc885ef0e86ef0e39f4ed35f79a3369ee600c82f4fb67f8cd523535745e8ae312c8722d80d1c5580e89a0feb7c70fc688e33bc8722d81d1c5f121db6f9ff7024659ae18185dbc5b8ae36f348611bf318cc7796174f0add8ae4dfd562cded36b0d8c4cef6ce2b3a9c380d1c5797153dfd5c3f3f936f0eb6a5ca26e5930268151963b1c185ddc1bc76b99c630e275912cd716185d3cc3ca767c27fcf63cde5b76c9d8d0b1dd715f9464b6f75e2addf23478ae81be1d8c6b98d602ef331e4c8b7e6e791a3cf741df0eeefba5b5c071060fa6053e1b7431ee6122a8ff1cee603cf8fc52963b1218538e180764c19802c6ffbe570c8c031d31a6b2601c088c623f1a181ddc7f4d330ecc8211ef53ca72c700e3458e182fcc82f1226094e58e054617f75213e0b7318c1703a32c771c305ee288f1e22c182f014659ee7860bcd411e32559305e0a8cb2dcb780f132478c9766c1781930ca722700e3e58e182fcb82f1726094e54e04c62b1c315e9e05e315c028cb9d048c573a62bc220bc62b8151963b1918af72c47865168c5701a32c770a305eed88f1aa2c18af064659ee54601ce488f1ea2c180701a32c57068cd738621c9405e335c028cb7504c66b1d315e9305e3b5c028cb9d068cd73962bc360bc6eb8051963b1d18af77c4785d168cd703a32c770630dee088f1fa2c186f004659ee4c60bcd111e30d5930de088cb2dc59c0789323c61bb360bc09186fb4300e76c47853168c838151963b0f186f8e9f317d2d3d380bc69b81e796f879d29add9c05cf2d6e79d2dfd5bbd9e2ebd6f87da5b7c590a0f175bf157886c6cf93de16b766c1230ca5b01c6a765bfc8c69cd8666c1781bf00c8b9f27add96d59f00c03cd6eb368767bfc8c69cd8665c1783bf00c8f9f27add9ed59f00c07cd6eb7687647fc8c69cd8667c17807f08c889f27add91d59f08c08ea34bbc3a2d9c8f819d39a8dc8827124f054c5cf93d66c64163c55a0d9488b66a3e2674c6b569505e328e0a98e9f27add9a82c78aa41b35116cd46c7cf98d6ac3a0bc6d1c053133f4f5ab3d159f0d48066a32d9add193f635ab39a2c18ef049e31f1f3a435bb330b9e31a0d99d16cdc6c6cf98d66c4c168c6381e7aef879d29a8dcd82e72ed06cac45b3bb1d31de9505e3dd169eb8bf937d97c5d77847751f1734beeec2500acb613f89098e18c767c13801186539ec2751eb887142168cb5c028cb251c3336d44fa2167c4f8cdf77ba5daa0d1aafcf44b73c0df69340df931c69313168bc1693dcf234d84f027d4f76a4c5a4a0f15a4c069e290eb448808fc6f00843292c87fd24a63a629c9205e3546094e5b09fc434478c53b3609c068cb21cf693b8c711e3b42c18ef0146590efb494c77c4784f168cd3815196c37e12f73a629c9e05e3bdc028cb613f89fb1c31de9b05e37dc028cb613f89fb1d31de9705e3fdc028cb613f89071c31de9f05e303c028cb613f89071d313e9005e383c028cb613f89871c313e9805e343c028cb613f89871d313e9405e3c3c028cb613f89198e181fce82710630ca72d84fe211478c33b2607c04186539ec27f1a823c647b2607c141865b9bb1d333674fdf26833f71d75add2dc7d475d973477df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f771cee4fb3107be13e043a622633e0579612885e5eef68ccd9a1179cae2e329c7baa3afc709eafeb885a7c851ddd1d713047517867c637c2c0f18711ff73a369dd1b18ec9a6322a9e271df13c9105cf93c0f394239e27b3e0790a789e8e9f271d534f65c1230ca5b0dcdd79c0f8581e307a1dbd8e4c8c5ec7c2d1d1337a46cfe8190f05633eb4e19e312fe231d95446c533337e9eb4664f67c133133493e56e71cb986c2aa3e299153f4f5ab39959f0cc02cd665a3473c0986c2aa3e2991d3f4f5ab35959f0cc06cd66593473c0986c2aa3e299133f4f5ab3d959f0cc01cd665b3473c0986c2aa3e2991b3f4f5ab33959f0cc05cde6583473c0986c2aa3e299173f4f5ab3b959f0cc03cde65a3473c0986c2aa3e2991f3f4f5ab37959f0cc07cde6593473c0986c2aa3e259103f4f5ab3f959f02c00cde65b3473c0986c2aa3e259183f4f5ab30559f02c04cd1658346365bc3b0f181fcb0346c73a269bcaa8781639e2599805cf22e079c611cfa22c789e019e67e3e749c7d43359f00843292c77771e303e96078c5e47af2313a3d7b17074f48c9ed13366c7f8781e30fa6ded1959191d5c5f35f80ecd33cddc77d43b34cddd77d43b34cdddb78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c33f97e2e7edfc96cbf31f31cf0b8f8e68da37a96abf53eafd7f5758cfa29ad5e30b47ac6d0aa14ca3c0ffabde040bf22f02beb9679f1972d7327026647be93aa7d391cea2f3e1e33f450fe5f7454f7a8b6fec566ee3baaad6feebea3dafae6eedbc7b98ff342f0ede3dcc77921f8f671eee39cc537e65b0575e7edf2fd53b58e9774be58cf4bf9c7c12e65a61c96f96d1ff87dc8856fbf0ff9634521f8f671eee3bc107cfb38f7715e08be7d9cfb382f04df3ece7d9c17826f1fe73ece0bc1b78f731fe785e0dbc7395f9c97c2ff2b73c013183c41033c0bc978a691f1cc21e31943c6338c8ce75a329e8bc8781e24e3e94ec633918c671419cfcd643c5792f15c40c6d39f8c673a194f1f329eb9643c7791f13c45c6339c8ce77a329e4bc8781e26e34992f14c26e3194dc6732b19cfd5643c29329efbc8787a91f19c43c6339e8c671e19cfd9643c23c8789e26e3b9918ca7948ca71d19cf65643c4f90f19c4fc65341c6f30819cf02329ea9643c7792f1dc46c6534ec6730d194f17329e0bc9781e20e3e941c6339f8ca7968c6726194f1519cf60329e73c978ae20e36949c6d38f8c671119cf3d643c7dc978c692f17426e3b99d8ce73a329e8bc9781e22e3e946c633898c6716194f3519cf10329eabc8780690f1dc4bc6d39b8c671c194f27329e3bc8786e20e3c9c5f74cb3e139828ca7848ce752329e47c9786690f17425e39942c6339b8ca7868c672819cf20329e81643cf793f1f424e39940c633928ce726329e27c978da93f17420e3b99c8ca7888027111c38864902feff1cd85a18cbaacfbeceed58f7ff97b5bd052cf38aceb7b4acfb65b0c9b7645fb12c8b3abd0c7549e97cf9379bd23aa1af14cc8bbf12e0788584e772329e0e643cedc9789e24e3b9898c672419cf04329e9e643cf793f10c24e31944c633948ca7868c673619cf14329eae643c33c8781e25e3b9948ca7848ce708329ee7c8786e20e3b9838ca71319cf38329ede643cf792f10c20e3b98a8c6708194f3519cf2c329e49643cddc8781e22e3b9988ce73a329edbc9783a93f18c25e3e94bc6730f19cf22329e7e643c2dc978ae20e339978c6730194f1519cf4c329e5a329ef9643c3dc8781e20e3b9908ca70b19cf35643ce5643cb791f1dc49c633958c670119cf23643c15643ce793f13c41c67319194f3b329e52329e1bc9789e26e31941c6733619cf3c329ef1643ce790f1f422e3b98f8c2745c6733519cfad643ca3c9782693f124c9781e26e3b9848ce77a329ee1643c4f91f1dc45c633978ca70f19cf74329efe643c1790f15c49c6733319cf28329e89643cddc9781e24e3b9888ce75a329e61643c63c878e690f14c23e35948c65369e179ce118fbcef2eeb96f9e7487c3bd80ee56abdaf3aaad36b7a5dadf47a855ffc154399196d33bfeafd705c56b8ccef13e0bb39af8146af39aa8b6c8f2263fba0ef971cf99677b464dd32ff5233f7ddcef0ddae407c77307c772810df3ece7d9c17826f1fe73ece0bc1b78f731fe74cbe1d5c1b24f13b69321519f329c8e3f5828befcb39aa67bdebc4af63d44f69f5baa195796d550a655e05fd5e77a09fedda53e6c55fb6cc9d0898312eca8278e3e28df8eb9454edd6e1a0eb1b86be58afc58e348d3a862c6ee6bea38e21cddd77d431a4b9fbf671eee3bc107cfb38f7715e08be7d9cfb3867f2fda6cec778dd588e3ed4f345b91e7813fc2ed5f9a218fdaa752dd1eb2ad6eb168ea5609732ff0b9e6bfa7ddeeff371f9f6c7361fe785e0dbc7b98ff342f0ede3dcc77921f8f671eee3bc107cfb38f7715e08be99e3dccc4b7ff1b381cd557ffea858ccc5bb0487d277542c3677df51b1d8dc7dfb38f771cee47b9903df09f02153437dfc9601cf12073c8eea997eb6b1dca8d373469d4aa10c1ee3973ba86711f89575cbfc72e091a912785cc44163b639f22c24e39946c633878c670c19cf30329e6bc9782e22e379908ca73b19cf44329e51643c3793f15c49c67301194f7f329ee9643c7dc878e692f1dc45c6f31419cf70329eebc9782e21e379988c2749c633998c673419cfad643c5793f1a4c878ee23e3e945c6730e19cf78329e79643c23c8789e26e3b9918ca7948ca71d19cf65643c4f90f19c4fc65341c6f30819cf02329ea9643c7792f1dc46c6534ec6b3988ce71a329e2e643c1792f13c40c6d3838c673e194f2d19cf4c329e2a329ec1643ce792f15c41c6d3928ca71f19cf22329e7bc878fa92f18c25e3e94cc6733b19cf75643c1793f13c44c6d38d8c671219cf2c329e6a329e21643caf93f15c45c633808ce75e329ede643ce3c8783a91f1dc41c6730319cf11643c25643c9792f13c4ac633838ca72b19cf14329ed9643c35643c43c9780691f10c24e3b99f8ca72719cf04329e91643c3791f13c49c6d39e8ca70319cfe5643c45043c89e0c077ff13f0ffd7c126efa83f07b6b7747e09d85a587cb4d4f9e5602bd67959c761617ab1e381eb469d5cbd978fbe52302ffe4a80e32d129ecbc9783a90f1b427e379928ce726329e91643c13c8787a92f1dc4fc633908c671019cf50329e1a329ed9643c53c878ba92f1cc20e379948ce752329e12329e23c8786e20e3b9838ca71319cf38329ede643cf792f10c20e3b98a8ce775329e21643cd5643cb3c8782691f17423e379888ce762329eebc8786e27e3e94cc633968ca72f19cf3d643c8bc878fa91f1b424e3b9828ce75c329ec1643c55643c33c9786ac978e693f1f420e379808ce742329e2e643cd790f12c26e32927e3b98d8ce74e329ea9643c0bc8781e21e3a920e3399f8ce709329ecbc878da91f19492f1dc48c6f33419cf08329e79643ce3c978ce21e3e945c6731f194f8a8ce76a329e5bc9784693f14c26e34992f13c4cc6730919cff5643cc3c9789e22e3b98b8c672e194f1f329ee9643cfdc9782e20e3b9928ce766329e51643c13c978ba93f13c48c6731119cfb5643cc3c878c690f1cc21e39946c6b3908ca732373c49f56ebbf4b50e800ba714e49703cf6207fa38aa67397ed7e0eb18d7abb47adbd0ea7543ab5228b30cf47bdb817e45e057d62df3e22f1f9915cfa33a6ffb0ec4a3248c625bec9627bddf3e1ad49f1ada6fdf061e17ed9aa37aa6f7af15469d1eb5e82e6530565738a8a76ddf91f915b01df28d59f13ca1f3c29a80724f90308a6db95b9ef4fef544507f6a68ff5a013c2eda1f47f54cef5f2b8d3a3d61d15dca60acae74504fdbbe23f32b613be41bb3e27952e7853501e59e246114dbdb6e79ba27a0ce3235b47fad041e17ed8fa37aa6f7af55469d9eb4e82e6530565739a8a76ddf91f955b01d3cb367b6312b1e79b623ac0928f71409a3d85638e5e95e9e803acbd4503bb60a785cb4f38e744fb763ab8d3a3d65d15dca60acae76504fdbbe23f3ab2dbecb8278b558d3082dd65878d6e4580bf1972df3b23c64f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e62f63a7b9da398bdce5ee72866afb3d7398ad9ebec758e6266d059f1c8b72b853501e59e266114db4ab73ce9f7829e0eea4f45c67c0af26b806795037d1cd533dd877cad51a7a72dba4b19dcbfd63aa8a76ddf91f9b5b01db2615e9d87cc5ee7a6312b9e993a2fac0928379384516cabdcf2a4dbb19941fda9a1766c2df0b868e71dd533dd8ead33ea34d3a2bb94c1fd6b9d837adaf61d995f07dbc1337b661bb3e299a5f3c29a8072b34818c5b6c6294f32fd7ee3aca0fed4503bb60e785cb4f38e744fb763eb8d3acdb2e82e653056d73ba8a76ddf91f9f5b01db2615e9d87cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7b97074563cb3755e5813506e3609a3d8d63ae5e9967eee303ba83f35f4dc613df0b8782ee348f7f473870d469d665b749732b87f6d70504fdbbe23f31b603b3477e6d579c8ec632337cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5cc101b8a678ece0b6b02cacd216114db3ab73ce9ef1ecc09ea4f0df5dbd9003ceb1de8e3a89ee97e3b1b8d3acdb1e82e6570ffdae8a09eb67d47e637c276f0cc9ed9c6ac78e6eabcb026a0dc5c1246b1ad77cb936ec7e606f5a786dab18dc0e3a29d7754cf743bb6c9a8d35c8bee5206637593837adaf61d99df04dbc1337b661bb3e299a7f3c29a8072f34818c5b6c12d4fba1d9b17d49f1a6ac736018f8b76de513dd3edd866a34ef32cba4b198cd5cd0eea69db77647e336c07cfec996dcc8a67bece0b6b02cacd276114db46b73cc904d459a686dab1cdc0e3a29d7754cf743bb6c5a8d37c8bee520663758b837adaf61d99df02db21df9815cf029d17d604945b40c228b64d6e79d2fbd782a0fed4d0feb505785cb43f8eea99debfde31eab4c0a2bb94c1587dc7413d6dfb8eccbf03db21df9815cf429d17d604945b48c228b6cd6e79d2fbd7c2a0fed4d0fef50ef0b8687f1cd533bd7f6d35eab4d0a2bb94c158ddeaa09eb67d47e6b7c276c83766c5b348e7853501e51691308a0d8f178b1cf194183c25162d0e956fa54585ce1fa17f13f0ff0a6074d51e2e3218651e635c6c2539d0ac9dc1d3ced0ec50fa565a54425e4db8bd2a8191617bb5cb81661d0c9e0e866687d2b7d2a29fceb7d7bfb8bdfa0123c3f6ea003c0edae7ee0983474d0d9d6f6c75ac8fa37aa6cf37b60576ddf1382465f0d8bdcd413d6de71232bf0db68367f6cc3666c53358e7853501e50693308a0daf53b6c7cfd33d61f0a8a9a1766cbb637d1cd533dd8ebd1bd875df0eba4b198cd5771dd4b308fccaba65fe5dd80ed930afce4366af73d39815cf109d17d604941b42c228b66dc0b3237e9eee0983474d0db5633b1cebe3a89ee9766c6760d77d07e82e6570ffdae9a09e45e057d62df33b613b64c3bc3a0f99bdce4d63563c43755e5813506e2809a3d8de059e5db1f364c603421e3535d48eed72ac8f9b7a66dab1f702bbeebb40772983fbd77b0eea59047e65dd32ff1e6c07cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6ccdccc8a6798ce0b6b02ca0d236114db4ee0793f769ecc7307e4515343cf1dde77ac8f9b7a669e3bec0eecbabf0fba4b198cd5dd0eea59047e65dd32bf1bb68367f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b666e66c5335ce7853501e58693308aed3de0f9207e9eee0983474d0d3d77f8c0b13e8eea997eeeb027b0ebfe01e82e653056f738a86711f89575cbfc1ed80e7b3cb367b6302b9e113a2fac0928378284516cbb81676fec3c99e7a7c8a3a686dab1bd8ef57153cf4c3bb62fb0ebbe1774973218abfb1cd4b308fccaba657e1f6c876c9857e721b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec75f63a47317b9dbdce51cc5e67af7314b3d7d9eb1cc5ec752e1c9d154f95ce0b6b02ca5591308a6d0ff07c183b4fb7f284c1a3a622633e05f90f1debe3a69e99e70efb03bbee1f82ee5206f7affd0eea59047e65dd32bf1fb64373675e9d87cc3e3672c3ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc3e363c7314b38f0dcf1cc5ec63c3334731fbd8f0cc51cc0cb1a178aa755e581350ae9a84516cfb80e7a3f879ba270c1e351519f329c87fe4581f47f54cf7dbf938b0ebfe11e82e6570fffad8413d8bc0afac5be63f86ede0993db38d59f1d4e8bcb026a05c0d09a3d8f603cf27f1f32413068f9a1a6ac73e71ac8fa37aa6dbb14f03bbee9f80ee520663f55307f52c02bfb26e99ff14b643be312b9e313a2fac0928378684516c1f038f83b84bf394183c32ff09816fa545adce1fa17f717bd50223c3f62ac98166ed0c9e76866687d2b7d26222e4d584db6b2230326caf7639d0ac83c1d3c1d0ec50fa565a4cd2f9f6fa17b7d7246064d85e1d72a0d9a16c0f0fe5be7d28e3d46b7ee8342f3a849a171d42cd8bbce6549a3b38be24f1581600034e29c87f0a3cdf899f277d5feed32c78be033cdf8e9fa7aba37a96abf57e17d8e35aafd2ea7b86569f1a5a95421964f89e03fd8ac0afac5be6c59f67f6cc51cc786e2bac0928f70909a3d8be0d3c2eda0d55f7f3f5ba64fdadc2f4d9d1757e5d3c2fc17bc5adf47a8543fc154399496575657fa7d94ae0ffb2dd547df61b3647ef3077b53db79379f15712e4ecde6d83f792510b17cf9bb23deeefb7f07c1d1f4f39eee7e86b9fa3ba67f3ec6f9f8527c6ba778d7aeeb937febaa7db8f2e7a5db27eb58ffe8fa39d6ade1df73d693fba18752e863283caeacafe07b41fb6b6c2f5be29e7e4e6bed922a86bcf84ab4cdbcd67425f6bbb94fb08ca639b53a17f71ffac80baba6a17a3ee3161bb68b6dd2eb5379f4b9abe4b41978f4835b33da7401d2b2ddc9504dc188fb9dccf64ddb6676495868e6c9ae1b6fec8a2633f0b773f026ec6fdba9fa1239b6607dbaf075bb807137033eed7830d1dd9343bd87e3dc4c23d84809b71bf1e62e8c8a6d9c1f6eba116eea104dc8cfbf550434736cd0eb65f0fb3700f23e066dcaf87193ab26976b0fd7ab8857b380137e37e3ddcd0914db383edd7232cdc2308b819f7eb11417d1dd9343bd87e5d65e1ae22e066dcafab0c1dd9343bd87e5d6de1ae26e066dcafab0d1dd9343bd87e5d63e1ae21e066dcaf6b0c1dd9343bd87e3dc6c23d86809b71bf6e6cbf7dd6fdbad6c25d4bc0cdb85fd71a3ab26976b0fd7aa2857b220137e37e3dd1d0914db383edd7932cdc9308b819f7eb49868e6c9ad9f66b47ef1266fd6ee3c74ef5c98c31fd71163c1f028f8b98721407e58efab9a4fba6ee35b4fad8d00ac7eed807fa39e80bd3e03709c49f67f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b667e66fc2e233e5f91721f91308a0d9f49b9b8cfafea7e815e97acbf5598061d5be7775fec7e93e54586bf147088bf622873c2a97565afd76c25c181db0dc7e2c66db927f63a64b6a519ff322ffe4aa03e7b81c7c1fbf9699e7d06cf3e8b16f8de693cbe93a3dc689c2c57dfdf393ca8dbce7b8cfaa0a61fc4eebfbea64586a61f38f69d08ea6f4f61c0290579e471f16cd8513dd36dc16ea34ea6c6a550a613d473b7837a16815f59b7ccef061e995a008fab180c0c9ec0a28f4c95643cd3c878c690f19c41c6338c8ce778329e6bc9780e27e3b9888ce741329eee643c13c9784691f19c4ac6733319cf51643c5792f15c40c6534cc6d39f8c673a194f1f329ebbc878ce22e3194ec6731e19cf09643cd793f124c8782e21e379988c2749c633998c6734194f47329e5bc9788e21e3b99a8ca735194f8a8ce73e329e5e643ce790f18c27e3399b8c670419cf49643c3792f19492f1b423e3b98c8ce711329e0a329ef3c978a692f1dc49c6733a19cf6d643ce5643cc791f15c43c6d3858ce742329e36643c0f90f1f420e3a925e3a922e339858c673019cfb9643c4792f15c41c6d3928ca71f19cf3d643c7dc978c692f17426e339938ce776329e6f91f15c47c6d3968ce762329ebd643c0f91f17423e39944c6534dc6b39f8ca78c8c670819cfd1643c5791f1b422e31940c6732f194f6f329e71643c9dc878ee20e339918ce706329e23c8784ac8782e25e39941c6d3958c670a194f0d19cf69643c43c9788e25e31944c6731819cf40329efbc9787a92f14c20e31949c6733219cf4d643cedc9783a90f15c4ec65344c093080efc165302febf0f6cf2cda00fc1d6c2b23e794e2de5d5717149c703d7ddc2b2ee0f2c0ca8d3fb509794ce977fb329ad13fa4ac1bcf82b018e0f48782e27e3e940c6d39e8ce726329e93c9784692f14c20e3e949c6733f19cf40329ec3c8780691f11c4bc633948ce734329e1a329e29643c5dc9786690f15c4ac65342c6730419cf0d643c2792f1dc41c6d3898c671c194f6f329e7bc9780690f1b422e3b98a8ce768329e21643c65643cfbc978aac9782691f17423e379888c672f19cfc5643c6dc978ae23e3f91619cfed643c6792f17426e3194bc6d3978ce71e329e7e643c2dc978ae20e339928ce75c329ec1643ca790f15491f1d492f1f420e379808ca70d19cf85643c5dc878ae21e3398e8ca79c8ce736329ed3c978ee24e3994ac6733e194f0519cf23643c9791f1b423e32925e3b9918ce724329e11643c6793f18c27e339878ca71719cf7d643c29329ed6643c5793f11c43c6732b194f47329ed1643c93c97892643c0f93f15c42c69320e3b99e8ce704329ef3c8788693f19c45c67317194f1f329ee9643cfdc9788ac9782e20e3b9928ce728329e9bc9784e25e31945c633918ca73b19cf83643c1791f11c4ec6732d19cff1643cc3c878ce20e31943c6338d8ca7928ca785c183ff57ef86edd579f9765031fc7fb2ee5cde5eaf4bcac8336275afe23dc3a6eabbcb517ddf0beaa614ccef82fa0afb7bc0f39e239ef70d1ed37709e42b41b39d864d31ee70c4b8d36094f91dc028faed049e9d8e7876193ca6ef12c8f703cdde356c8a71bb23c6770d4699df0e8ca2dfbbc0f3ae239e1d068fe9bb04f28341b36d864d316e75c4b8cd6094f9adc028fa6d039e6d8e78b61b3ca6ef12c80f01cdde316c8a718b23c6770c4699df028ca2df3bc0f38e239ead068fe9bb04f24341b3cd864d316e72c4b8d96094f94dc028fa6d069ecd8e78b6183ca6ef12c80f03cd361a36c5b8c111e3468351e63700a3e8b71178363ae2d964f098be4b203f1c345b6fd814e33a478ceb0d46995f078ca2df7ae059ef886783c163fa2e81fc08d06cad61538c6b1c31ae3518657e0d308a7e6b8167ad239e75068fe9bb04f255a0d96ac3a6185739625c6d30cafc2a6014fd5603cf6a473c6b0c1ed37709e4ab41b395864d31ae70c4b8d26094f915c028faad049e958e7856193ca6ef12c8d780666f1b36c5f89623c6b70d46997f0b1845bfb781e76d473c2b0c1ed37709e4c78066cb0d9b625ce68871b9c128f3cb8051f45b0e3ccb1df1bc65f098be4b205f0b9a2d356c8a718923c6a506a3cc2f0146d16f29f02c75c4b3cce0317d97407e2268f6a661538c8b1d31be6930cafc626014fdde049e371df12c31784cdf25909f049abd61d814e3eb8e18df301865fe756014fdde009e371cf12c36784cdf2590bf116cc2db176cafe97c1fb0bdaaf3bdc1f68acef702dbcb3adf136c2fe97c0fb0bda8f3ddc1f682ce7703dbf33a9f04db733adf156ccfea7c7fb03da3f303c0b648e753605ba8f303c1b640e72f04db7c9dbf086cf374fe62b0cdd5f94bc03647e72f05db6c9dbf0c6cb374fe72b0cdd4f92bc0f6b4ce5f09b6a774fe2ab03da9f35783ed099d1f04b6c775fe1ab03da6f3d782ed519dbf0e6c77ebfcf560bb45e76f00dbc73a7f13d83ed1f99bc1f6a9cedf0ab66febfc6d60fb8ecedf0eb6efeafc1d60fb9ece8f04dbbfe8fc28b07d5fe74783ed073a7f27d87ea8f363c1f6239dbf0b6c3fd6f97160fb89ce8f07db4f757e02d87ea6f393c1f6739d9f02b65fe8fc54b0fd52e7a781ed573a7f0fd83ed3f9e960fbb5cedf0bb6dfe8fc7d60fbadcedf0fb6dfe9fc0360fbbdce3f08b6cf75fe21b07da1f30f83ed0f3a3f036c5feafc2360fba3ce4bbba6dad93fe97c59106f3bfb55503795816ff1a7cafc59e75b1b6564d962287396ee50a89e71a87797a41d967659d9a41d7e0d6cd20ebf0a3669875f019bb4c32f834ddae197c026edf08b609376f805b0493bfc3cd8a41d7e0e6cd20e3f0b3669879f015b4ae717814ddae1856093767801d8a41d9e0f366987e7814ddae1b9609376780ed8a41d9e0d36698767814ddae199609376f869b0493bfc14d8a41d7e126cd20e3f013669871f079bb4c38f814ddae147c126edf0dd609376f816b0c9fef215d8a46dfe186cd2367f0236699b3f059bb4cddf069bb4cddf019bb4cddf059bb4cddf039bb4cdff0236699bbf0f36699b7f0036699b7f0836699b7f0436699b7f0c36699b7f02b6093aff53b049dbfc33b049dbfc73b049dbfc0bb049dbfc4bb049dbfc2bb049dbfc19d8a46dfe35d8a46dfe0dd8a46dfe2dd8a46dfe1dd8a46dfe3dd8a46dfe1c6cd2367f0136699bff00b647745edaea36609367c56a2aff86138ec3d3027c094b2a88b7edc7290579acbb4c95643c73c978c690f1bc44c6730619cf30329ee3c9780e27e379838c672219cf22329ee5643ccbc8785e27e339958c672319cf06329ea3c878de23e3d945c67301194f3119cf6c329e17c878ce22e3194ec6731e19cf09643c09329e05643c4bc9789690f1bc4ac6d3918c673d19cf3a329e63c8787692f1ec20e3694dc6f31519cf4c329e73c8789e23e3399b8c670419cf49643ca5643cedc8782ac878ce27e39947c6f32619cf62329e97c9784e27e3594bc6b3868ca79c8ce738329e77c978b693f17421e36943c6f314194f2d19cf33643c55643ca790f10c26e339978ce748329e96643cfdc8786e21e39943c6f322194f67329e33c9785693f1ac22e3f9928ce75b643cdbc878b692f1b425e3d94bc633898c6721194f3519cf6b643cfbc978cac8788690f11c4dc6d38a8ce763329e59643ccf93f1ac24e35941c6732219cf3b643c5bc8788e20e32921e3994fc65343c6f30a19cf69643c43c9788e25e3398c8ce769329e67c978de26e3798b8ce764329ecd643c9bc878da93f17420e3d94dc6f33e194f11014f023802b0c9ff5b824dbec3b31f6c5fe8fc5eb0c9377cde00dbe73aff08d81eb2d85a58f8846106d8e45dd92fc026f7671e069bbc33f139d8e4bc41fcabf9551d0fe46f01cb889f96167ef4f7b9854bf2b8bd65995410eff6465fa9c0fecdbb2283f150f3bc4fc6b39b8ca703194f7b329e4d643c9bc9784e26e3798b8ce76d329e67c9789e26e3398c8ce758329ea1643ca791f1bc42c65343c6339f8ca7848ce708329e2d643cef90f19c48c6b3828c672519cff3643cb3c8783e26e36945c6733419cf10329e32329efd643caf91f15493f12c24e39944c6b3978ca72d19cf56329e6d643cdf22e3f9928c671519cf6a329e33c9783a93f1bc48c633878ce716329e7e643c2dc9788e24e339978c673019cf29643c55643ccf90f1d492f13c45c6d3868ca70b19cf76329e77c9788e23e32927e35943c6b3968ce774329e97c9781693f1bc49c6338f8ce77c329e0a329e76643ca5643c2791f18c20e3399b8ce739329e73c8786692f17c45c6d39a8c670719cf4e329e63c878d691f1ac27e3e948c6f32a19cf12329ea5643c0bc87812643c2790f19c47c6339c8ce72c329e17c8786693f11493f15c40c6b38b8ce73d329ea3c8783690f16c24e339958ce775329e65643ccbc9781691f14c24e379838ce770329ee3c9788691f19c41c6f31219cf18329eb9643c95643c2d2c3cfb1df1c8b76264dd32bfbf99fbde65f8de5520be7718be771488efed86efed05e27babe17b6b81f8de62f8de5220be3719be371588ef0d86ef0d05e27b9de17b5d81f85e63f85e5320be5719be571588ef1586ef1505e2fb2dc3f75b05e27b99e17b5981f85e62f85e5220be171bbe1717886fe6eb6fd50f57fa2aefd6bf09f87f0530bee18871bfc128f36f00a3d8f07bd4158e78a2aedd2b087c2b2de45e963cf34cc0ff2b81d1554c55188c326f8ba95dc053e98827ea9e4325816fa585bc8b2d7d2a13f07f1c7fd9554c551a8c326f8ba91dc0d3cf114fd4bd927e04be9516f2eeb3bcf39780ffe378ebae62aa9fc128f3b698da0e3c831df144dde3194ce05b6921df0a936fd224e0ff383ea3ab981a6c30cabc2da670fcdc218e78a2ee4d0d21f0adb4906fedca372f13f07f1cbfc9554c0d311865de1653387edc50473c51f7d48612f8565ac8b360f9467b02fe3f0c185dc5d4508351e66d3185e3dd0c73c413752f7018816fa5c5709d973e5609f8ff7060741553c30c4699b7c5d406e019ee8827ea1ee67002df4a8b113a2fef7024e0ff2380d1554c0d371865de1653eb806784239ea87baf23087c2b2daa745edee94fc0ffab80d1554c8d301865de16536b80a7ca114fd43de32a02df4a8b6a9d976fce25e0ff38fefb08478c5506a3cc8f0046b1ad029e6a473c51f7baab097c2b2de4dbfe2bf56f02fe8fe3b1ba8aa96a8351e66d3185e341d738e289ba475f43e05b693146e7654c9804fc7f0c30ba8aa91a8351e66d3185e3578e71c413f56c610c816fa5857c9b6bb9fe4dc0ff6b81d1554c8d311865de1653cb80a7d611cf12836789458b43e55b69217db997eadf04fc7f2230ba8aa95a8351e66d31b50478263ae2897a963391c0b7d242beadfda6fe4dc0ff2701a3ab989a6830cabc2da61603cf24473c51cfa026e5c077d4f3945cf88e7a36900bdf51f7b973e13bea9e6d2e7c47dd7fcc85efa87b69b9f01d755f2817bea3ee71e4c277d4f57a2e7c475d7be6c277d475542e7c475d13e4c277d4f96d2e7c479dabe5c277d479876fcf7d7b1eb7ef4379ee50a8edf9a13c861eca6389bf36f0d706b9f2ed8f25feda2057be0bf5dac0b7e7b96fcfe5faab2888be1e7bcb91ef65866f99c7e72ccb1cf95e62f896797c66b0c491efc5866f99c7fbdf8b1df92e317ccbfce21cf86e67f86e9743df1d0cdf1d2cbe1d6cef6422a87ffd2d0c38a5208f31f0a6032d1cd5b35cad77a95ed7d731aed776dfc6dc5f4aa1cc52d0cf75db21eb36db8e7c64c6b8288acf7779027cc877c9944d9e1fbf063669f75f059bf40b78056c726c7a196cf24cea25b0c933ab17c13646e73f069b3c3bc63efbf2fc7f3bd8aa741efb8a8fd0f9ad6093be54d84759fac36d019bf469c4beb1d22f7513d8a46f31f6c994fee11bc0267dfcb12fa0bca7b10e6cf2ae0df64193f7a5d6806dafce63df27f90ecd2ab0cdd0f99560fb83ceaf00db833a7f0bd87eaff35f81ed773abf186c0fe8fc9b60fbadce2f05dbfd3aff02d87ea3f3cf83ed3e9d7f0e6cf7ea3cbecbf66b9d7f1f6c9fe93cbe43355de77781ed573a8fefeedca3f33bc0f64b9d7f166cd374fe19b04dd5f94560fb85ce2f04dbcf757e01d8a6e8fc7cb0fd4ce7e7816db2cecf05db4f757e0ed826e8fc6cb0fd44e767816dbccecf04db389d7f1a6c3fd6f9a7c0f6239dff126c77e9fc12b0b5d0f96560933123b19f4ab1cebf05b6563a8ffd8fe4fbfe93c07698ce4f045b1b9daf059b7c1b6e0cd8643ce81ab02574be1a6c47e87c15d8e4fc6c04d864fc93e1609373a961606baff343c126e73d43c026e3590e069b7c83b41fd88ed6f94ab0c9b7f52bc076acceef079b8c39f606d8e4bb757bc12663313f0c36f95ef50cb09da8f37f009b8cc3f220d84ed6f9df83ed149dff1dd8e41b9e0f80ad4ce77f0bb68e3a7f3fd84ed3f9df804dc6c8ba0f6c67e8fcbd6093b1837f0d36f9def36760eba4f3d3c176b6ceff0a6c3296c83d6093f1417f09b6ce3a3f0d6cf21deea9603b5fe77f013619efefe760936f0c4f019b8cebf633b075d5f9c9604beafc4fc1d64de72780adbbceff046c3d747e3cd87aeafc38b0f5d2f91f83adb7ceff086c7d745eda19b53fabfd7c9f9e4f05f19d97297f1f06f5a786ae0d840179e23cd72e051ef4b527f6ba27d3e7f5b2dfb7d0eb9518da03be77c7ee3b734df1815e57b15eef6ec3773194395b370e6a3939e6b7d4cbed3596c3fb58b26e59e602b0bf6facbbbdaeef078eeabbdb60126ed441ca9ca799d4b1f1073adf069689912d7d7d2cb116808638a5202f0c6eb44a96e3796f63783e009e3db1f364aed75dc404ee5b715faf9bf771cd582b8532bb41bff71de887fbbaac5be6c59f67f6cc9ed9337b66cfec993db367f6cc9ed9337b66cfec993db367f6cc9ed9337b667e66c5b34fe7f1b9b294db47c228b63dc0e3e23e3f3e8795f5abe73aef9f5ae7774fec7eeb3fdf6ba5d75b6ed4b918ca7c0dcf9cf6ea7c09fc5fb65bd4b674f09cb0c16d29fe4aa03ef82c689f239e3d06cf1e8b16922f8bcd7772941b8d93e5aadf8a7ac6bed7d0759f455357fbeb1ebdae224353dc5f3f3478f0d96809f07ea47f13b09e8fa00e0ef6f106e342fce1beb4076c92ff10185d6c673c96487b20cfc3f1d9b494f995f15c3cfe6d9f2c77d96ebc07754a0507c6773194f91db47d9feb3cf60dd907bafdc3f27f991a7a4e2dfaa93aef8cbfcee9edbb033853e0077dbf0bac31f9aef70e4d914ee247ecc590ff3bf4e79072a287682dec385e39b29bcb7d682c570a657659ea9f0ae2adff4e8367a7c1acb6c9971067ff80e3bfab366957844617804652660f68b4d711cf1e834738c49f2a23dbbfb55146962d8632ff13da28551769e7a59ed8b7058f01ae8e63e24bd62df3b673e30f80d1aca38a8f41c7d6f1ee899d37bffa7f1d5696f9c5763daefe5fb2eef67a59e1088cf597c3fa85ab75107d6cf9efed5b56b77e97fdcbf61a751616d459cab42bcbfcaa38bb54e7b339d73f54d76d51e7fabb1cf02482fad7de6a6ae8f88ec798f7e0ff52a6fc9b4d5d1dd5b3dc76ec7adfa8532994e904f574701ed3e0bbc03bc1b78b6d8e5ac839d46e438b6228d3b12cf32b6d47948e78adfa414eea92b49e0f965bea22653a95d5d5a50dd8e36472b9ddde853aa9f5eeb1d455ca9c5756a74b179d4fc076c2fb26fd2cff97a9a1f600c7e2d9167f9dd3db772b70a6c00ffa7e075863f25def5b2072be2f7ec45e0cf9cab2bab2524ef410ad855ded23f2ce1fb29bcbed36962b8532db2df54f05f1d67f9bc1b3cd6056dba46b595d5ee2c865bbb93d42a372d048cae0fd6339b6e37b77b6e3fe1e47dc51c7fd3dc068b69b78eee2926dafc166de43b59d0f4a193c2793325795657e553b9bb09435ef0dbbb88f89efa006508fc0a8ab4c18030eae0dbbe3b593b453e2a70bd8f7e8bce8dcc5d0ae18ca0c2ecbfc3a3cefb6debb34afeff09a42b8cd7d0bdffd185a56c78d6327eed1bf2560fb44ff3aba4eeb6ebb67281cb67b8623caead87159e1fad85217f31ab94570e03df5af8db278dfada1e5ccbc390ea5d2f713a39ccd0f5ef3c4f6ae46d7f272646a11d8ef177c68b01705078eb929fb01c69c791fa58bb11ebc8f525b96f99536c92cabb6fdff38ba4e1fd98ea21db62718931f02634ae7cbbfd9d4d5567f99177f8af123a30e6edaaeccfb4ad9dc07de0b3c2eda76476d74391e63dbc4b6de3e55b6e3ff878656397c5e6b3de69bcfdcdb18f9787c27ab6df79f6c5aecb6f0b87a8e12a5c56e8beff8b4e839ca76fcb06991cbbe0f515abc6ff11da3163578dfb3212ddeb3f0b8b817d59016ef597cc7a745aff2869e6ba016bb2c3caeee3d446921feb2657e9f80b98d918fc777f72adb7d329b163b2d3caeae9ba3b4d869f11d9f165d7be23dba86b4d861e189fffe5cc35aecb0f88e4f8bde7df01e5e435abc6be171f54c374a8b772dbe638c8bd1b67b39362db65b78b6e7588bed16df319e1ff6b4dd6bb369b1cdc2e3e0be6b835a6cb3f88e518b9178dfb5212db65a78b6e6588bad16dff16951d5c3764fd8a6c53b161e57f784a3b478c7e23b3e2d46f656beb734428b2d169e2d39d6628bc5778cd750e9b8d8dc082d365b7836e7588bcd16dff169519d3ed7dad4082d36597836e5588b4d16dff169519e3ea66e6c84161b2d3c1b73acc5468bef18e3227d3db9a1115a6cb0f06cc8b1161b2cbe633c8ea4e3627d23b4586fe1599f632dd65b7cc7a7454dfafed3ba4668b1cec2b32ec75aacb3f88ef19e4b3a2ed636428bb5169eb539d662adc5777c5a744b1f53d734428b35169e3539d6628dc5777c5a8c4e3f135bdd082d565b7856e7588bd516df319e77a6db8b558dd062958567558eb55865f11de37967fafec5ca4668b1d2c2b332c75aacb4f88eb1ed4c9f77ae6884162b2c3c2b72acc50a8bef18cf3bd35abcdd082ddeb6f0bc9d632ddeb6f88ef1bc337d1c79ab115abc65e17135064a94166f597cc71817e9b6737923b4586ee1599e632d965b7cc7785f2bdd762e6b8416cb2c3caec66b88d26299c5778cd723e97b7c4b1ba1c5520bcfd21c6bb1d4e23bc66745e973f0258dd062898567498eb55802bef7c6ee3bd39f5b7c485facf30d2d8aa1cc291d33bfd2172b4a475907f62bc3babc197b5d32fdca1647d4e54da88b943903ead226703246517747754dc7cc1b5027b5de8f2c759532e774acd3a5b3ce27609b7c0cbaf5b5fc5fa622633e0579d14fd5f9b5f8eb9c8ed5578133057ed0f72bc01a93efaee8bb4827f123f662c8f7e9585756ca891ea2b5b0ab7de4759d477673b925c672a550e6754bfd5341bcf57fcde079cd604ebff700712671e4a6edca30bd1ea1d1f9a09194c13e7b1f39e231fb100a87f8536564fbb736ca601f4a297321b451d8af54ea99080eec37e9a82deb8aecb26e99177fa560db0b8c661d557c7c067d3f65ac08194742d9645c886eb09e5e864dd5b5b7a3ba8a2f59b7ccf7064619a7a257ee19938d65ec69302a9ebe0e34c3b137646ae878d11778fa38e07154cff471a8c2a8536fa34ea55006df6dac7050cf22f02beb96f90af0ed629ba316724c3ec7d0a218ca8c30ce1fa3749475a8f8ed65a94b7fc77591754bbbd43f07be2b0ddf3d0cdf89a0fe760e8286f7af4a60eee78059ad7740fceb2dc7f3368929f1d303ea34103488ab4eb82e39cf1b68685b0cf969709e27e5a4ac1cbf845dc5b26c4b643797eb6b2c570a65fa5bea9f0ae2adff00836780c1acb6c95d706ee7607f48c7407f8343e67b80760322b4eb0fda49193cfef574a45d3f8347e67b028f9ce354804dce15843f01ffef96036eb3ddabb0708b0dc789eb6961ec113f63fa5ca7a7c128f33d80516cfd80a7d29166e6b63ec7d0078fcbad8d32b26c3194990dc7c684a5acdaef3a15d5d5aba5b6c7f6ee986ed35b3bd00bc7690c409fc0d03000bda49ead1cf0b40deac66a9c32b576f2c83b47df303af3e851d08a0d4cfc2db254a305d830dfd2620b82fa435216834d86a46c05b616862c3814a6949721ed5cc8857ac8ba8b0dce36c012a76f1cce53a68642e730e07111ca2a7464484f1d3ab74c1e3b7534c6472b83b329b1a3fed7b2817251eb72b51dcc7d2205f3660c163bf2df12ea9b8279f1a7b68d0cad3a71e4a8bb074ebe73daf8d113a64e41a1cc1d1bf34541fd0d60fe4609ee6aa7c300c00a63e3d0caa8173618f23fd9306de3e7ec8e63e69ada04e04fa6b6a0dbe10e7453eb97b16f478d1c37eeba6955e3c68eba74da845153c7d64ec0add9c6502e6a4bcbff5b83cdd6c463593561b385cb1e66b1d9261c65b80dd8e4c87538d884a72dd85a425eca9b5bc649b87682f5cb2ea5fea7c469a52b7e58501702723856edaada7fd5a99cfa84ac3a1552431babcda9862e56770cd5d0c4ea2b766ae86135d4b01a5af884203374b01a2af8e4203314b0fada45599019daf7b4203374ef19416668deb380ef3bc07c769039ed5243eb760e3243e7aa5b975d82cc67ded4bbf5eaf45ddd1650a7bcea124f9d7eaad34e7579a16e5fa85b59ea944e9d2eab534175faa62e470668ad0786e9c2305d14a68bc37449982e0dd36561ba3c4c5784e9ca305d15a6abc334284cd784e9da305d17a6ebc37443986e0cd34d416678e79b83ccf0eb6af8e75b83ccd0d0b7059961a36f0f32434adf1164869b1e196486a21e156486a91e1d6486b0be33c80c6f3d36c80c937b7790196a570dc13b21c80c87ad86c956c367ab617ed590c06a486135d4b01a96580d61ac8640564323df1f64865c5643363f1464867d9e11a647c2f468981e0bd3e3617a224c4f0699e1c1d5b0e13383cc30e36af8f1394166b8f2794166787335ecb91a0e5d0d93ae864f57c3aaab61ded5f0ef6a58f817c3f452985e0e328f24d4a318f58842ddfe578fc1d42dea3783ccadf3a541e611b77ae4afba40a82e21aa8bccca20d3854a7529535dec549743d505537549555d74559765d5855b7569575dfcd52b0fea1510f54a8c7a4548bd32a55e2153afd4a9570cd56ba2eab54bf51ab17aad7a4f90b92dbe2fc83c2a55b7c3d5a30175cb5cddbeff344cdf0e3231f9dd307d2f4cff12a6ef87e90761fa619019d6580d77ac864b56432bab6198d590cd6a28673514b41a36fab32033f4b41abafab7416648ecdf87e9f3307d116486d7fe324c7f0cd35761fa5398fe1ca6bf84e9af61fa5b98fe354cff16a67f0fd3dfc3f48f30fd33a81b661b1b921374eba3af60829153a78e1e3f716ad9d4dab2f1d3c64d1d3b71dc7d65d3c74e1d53567bcfe8c935e36aa7e3c2dfd10bcb18e103274f1e795fd9d809d5a3ef2dab9d36b5acb6a6acaa76da84ea7a07f1bfe8854e3ad0e3c8eaea6867fff94d48ff4f139d1eaedb45197dfd8a86eb7644cb260872645316ead9b269159aac8f6072a97b63e63cb86ccab8daa965e56513c2bfe181b776fae8ea2e65f8bf29a1c853a6964d993a72f2d4b29ac9b5e3cbba76c1f53edcb60995f8afb66e60ce3ca169e274d2df596a5288fdf2d42628f01fa7368db475d937206d5bd634a765654da8e1594d59e8ca2612de541629cb94695553278f1c35357ae15bbfc9c27734a59a139a58cd933b36c1d9e94d596860c7a611ded11467b3b27016fc7f01d4c497845506009b2d6c6f000000284b1f8b08000000000000ffed9d77741cd5f5c767d55c16ad2cdb722fa2396e9257ab2e37b9778381d08b655bc60eb6656cd142081020bdf74a48851420219514d27b6f04d22b0492c0ef9fdfc9effc7ee7707eefcdbe1b7df5fc66a35de6c977b477ceb9da3777dfcefdbcefdc7933fbdeece8e9200852417ea954767a70e242eff79ad7ecb35b5a62dc56d627672a219c1509e1ac4c0867554238ab13c2599310ce7109e11c9f10ce0931726ab68a60f81237ef440fbac6cd984e98a6a72440d3da84699a4980a6754132faa84909e1ac4f08e7e484704e4908e7d48470362484735a4238a727847346423867268473564238672784734e4238e72684735e4238e72784b331219ca72684f3b484709e9e10ce3312c279668c9c4b807381797d8e795d685e1799d7c5e6953eb3d4bc3699365699f56665cb349bb216ebbd9cb256656dcadaadf73a94752aeb52d66dde6b34eff5285bae6c85b295ca56295b6d7458a36cadb275cad62bdba06ca3b24dca362bdba26cabb26dcab62bdba16ca7b2b3949dad6c97b273949dabec3c65cf5576beb20b945da8ec228be562659728bb54d965ca2e577685b2ddcafa94ed51b657d93e65fdcaf62bbb52d9016507953d4fd955ca0e293bacec88b2016547955dadec98b2e3ca06955da3ec5a65d729bb5ed90d9666cf5776a3b21728bbc9e27ca1b29b95dda2ec56652f52769bb2db95dda1ecc5ca5ea2eca5ca5ea6ece5ca5ea1ec95ca5ea5ecd5ca5ea3ecb5ca5ea7ecf5cadea0ec8dcadea4eccdcadea2ecadcadea6ecedcadea1ec9dcade6558e840b853d9bb95dda5ec3dcadeabec7dcadeafec03ca3ea8ec6e65f728fb90b20f2bfb88b28f2abb57d97dcaee57f631651f57f680b24f28fba4b24f29fbb4b2cf28fbacb207957d4ed9e7957d41d917953da4ec4bcabeacec2bcabeaaec6bcabeaeec1bcabea9ec5bcabeadec3bcabeabec7bcabeafec0796e63f54f623653f56f613e3fba979fd99a94be3623f57f60b537ed8bcfed2bc3e625e1fb53ef32b65bfb67cbf51f65bcbf73b65bf37e53f98d73f9ad73f99d73f9bd7bf98d7bf9ad7c7ccebe3e6f56fe6f509f3faa479fdbb79fd8779fda7797dcabc3eadecec867c797c30b4f40631f5516dfbb37a4e85c45f100c5fb41695e63d7a6d34fe2ab34eafa45db559afb6fc3566bdc6dace78b33edef2d79bf57acb3fc5ac4fb1fc0d66bdc1f24f37ebd32dff1966fd0cf0a7031873357eedab34ae14f8285f2bc0576d7c95e0aba1cd816f9cf155838ff66f0df82618df38f04d34bef1e04b1bdf04d252d929c6d71bc4952bd93ebddddab8b76be6a132f1f3eed5dbadf3c43b297ede7ebddd7a0fbc3a3f269b6d4d82bc99627cf5e09b6a7c93c167baa07f1f73da37cdf8a6826fbaf135806f86f14d03df4ce39b0ebe59c637037cb38d6f26f8e618df2cf0cd35bed9e09b677c73c037dff8e682afd1f8e681ef54e39b0fbed38caf117c748fcba9e03bc3f84e03df99c6773af8a8af3d037c746d78a6f1e97e627c0a3e63fcd447859fa1fe197c0ba96f06df22ea97c1b798fa64f02d81d8e45b0afd0af99a8c8ffa28fd5e8f29f706711d13b9f098581ef776d596f57657c6bfdd70de6e5530a4752fc4590e5aad36e518ef0d6ac1d829631487fc5550de0275a91ee941e71962d7fdfe0a535e5de0733dd6e732506785a3fdbd41bced5f69f1acb498aba1fd7e72b63527393be2a5e89cbd00eadab947d73c633167b70387879ced909c1df15274cef6435d3bf7e8ba772ce6ecc5c0e12167fbfce46c2e2b399b1f230b0277eed1779fb198b3078023fe9c6d979c1df95274cede0a75eddca3efbf633167af058ef873b6b34fae0d46bc149db3af81ba76eed158cc58ccd9db81c343cef64b3f3be2a5e89c7d17d4b5738fc605c762cebe1e38e2cfd96e4f39db2a391be4e73b83c09d7b34463d1673f62ee0883f67f7caf8ecc897a273f641a86be71ecd978cc59cbdcf94f53cc34fcd3cc31cf0fdccf8e6026ffcb9bdafcd536ee724b7f3f78104813b4769ee6e2ce6f643a6acf3f861b8f7807cbf34be53c1f788f19d06be478def7468978763a04f8e81112f451f03bf86ba762ed33cf2583c067e0c1c1e7276afe4ec8897a273f609a86be71eddd3301673f677c0e12167fb256747bc149db3ff82ba76ee2d34e5b198b3745fa9be5ef883b95e580cbe3f1adf12f0fdc9f89682efcfc6d704bebf185f33f8fe6a7ccbc0f798f165c1f7b8f1b580ef6fc69703df13c6d70abe278daf0d7c7f37be76f0fdc3f83ac0f74fe3eb04df53c6d705bea78dafdbf8f43d7974efd5778d4fef5bd2a8378877dfd23d96b46d5a5f3a0ab1ebacd875a318bbde8a5def88dde421761a62d092b2d67ba1dce497279b0986fffe83622d8b3f56ab6e7b7330f2b62f039eac87b6a721c64878b2c0d3123f4f78af6f2efeed86fbb8d9d2340db19aa15dad1eda958258b46d5aa77819f061ffddea606c8b9f31978258b46d5a6f0346f2e1f984ceeb74fce8f3e182d410af876329bc26a278f4ec2fe258067eaaf3d4d421b6c586ad16dec7736b8be5f39497615e502cda36ad53bc5a684fcbe833e646ca98b5187df511298845dbb663e3f1de34fa9a8d68bf66c07712faa45ca97d522db08dc6754ad4bee612dbc7f92a0531a86f23cd73e0a73ad3cc0f1274dfb609fa5d0fc75faed8eb37ec0fe2cfe35c168feb91f0b4028f8f63dfd3f19ac5f3fe3341bcb9d66e69d5626995813a6da05fbb07fd0a5d87503c61166661166661166661166661166661166661166661166661166661166661e6cf8cf75fe0fc26d55bca84917c39e0f131ce1f3e3fca6c8bb6afe7751e81799df8e72d72599cb3a47b0c17596dae823a4fa686eafe06e6d3edb9419cd35cea57bb11dd67511b9c3817eb730e316a1ed8357fd9185becdc5e5ff36dfa1e35fd1cb2664bd7a50e4d3ddca7324cd394a529dea7b8c4e2d1793ab37288cdc7dc5fb17391a81595e39cdbc37b0cfcee977cff41b950110cef3ff03cd3117bece17398345fde61c5ae823aff931ada37742f2afd9f43fb9e275da7d3da367d6611f83bad6d4f329f258e6a6bfbcdf059aaf37fd0a7de5911fc5b331ff77f60bf1c405b71e98532ce9bc77f1ececfe3b716c1d30e3c3efa194fd71b593c06e29ec7efb4b4725dc7509d0ed0afd3837eae6b515aa778c22cccc22cccc22cccc22cccc22cccc22cccc22cccc22cccc22cccc22cccc2cc9f197f2b4aac69a89763c2384af73e84f319f4fc17dabe9ed77965c5505cdff37034e7b4d86a7315d4f941c550ddd79a726d70e2fd0e51fbd2c37c5ec17d49f16aa13d3817e4ebf7dc6d164f9b430b2a37c6163b3f8f1fbfc643f3f8ad96ae3987a6be8e579c63454df1786db178706eb43638f1de92346c6734ee1d8aca0b8a87c7521bf8a88cbf8ff6b19ff15c62dfd743f170fefa1ea3eda4c0d7becf657df61b5dd0a6dee0c4fcae823af742df77bf29e33d1c78efc8438ef76929344f4dfa7979965d363fefbb1c387b210ec65e01ac31c56ec1d829631487fc5550fe62c5505daa477a90d6c4ae8f117a2618b2db9f6bb13e97813add8ef6f706f1b6bfc7e2e9b198f53e7900f2ec2138fffbea93ba23345a041a511dbc0ef2754f9edd47daf737e27d7b35561dbc66a13adf843e2aeafe51d73d87bece6351f71cbaae8ddb81d16ea37d9f67b9dfa7f530f41771dfa7f530e410dea71558db5f0cdb27ae9a20fadc42757e656ddfbe26a7cfe07d6054e7b7d05fd4997b166b8313afbff19ea9d1f87e15759f34c5c3eb1a3cb6ff53db357317d4ef8d9119730259f03a81ea3c6eedb3ce08ee658ecf3e19f159d28a9e4385df5f6cfdb40eddf099de5874c81ff33d565b28afbba12d54e7bfac6bc0f8af5bf2d780f1b775f83509f5036d8eb6529dff8663ed5f708d47fb09bf77d4549ef83e2d85ae01493fdde6d17e3e30c6e6f07ce0eacaa1baf6737e49eb629f0fdc617d8ee3f381ff17f2ac06ee43f7d557af88d06831684475f0b741741ec167f9bace31beeeed8f3ac7b89e4189fd735de5e8b3d9e36aae6b04aa439fc56b84a9867992d1d9ae6b8f17d2f932cefb86f1b712cd10177f2bd1ec49cf2ce8d60beb785d703263673dc58e7ae674761462473d737a3462d75bb1eb4731b6682e9a73d2dcc33391c3df9fe1334bf552e8ba941832f0b98a0430562680b12a018cd50960ac4900e3b804308e4f00e38404304e4c00631a184fe6b9dd833eb952f5f1b5bf0a5d6b606c0fffbb2457ecffeff0fcbf540a5efb606c0fdfe9422d9a82916b81dff37c3cfba1d8fff5420cf8bf0b262780714a0218a72680b121018cd312c0383d018c3312c03833018cb312c0383b018c7312c03837018cf312c0383f018c8d09603c35018ca72580f1f404309e9100c63313c0b8401863615ce29731572aa3e6f1f13fff9ecdff1cf3c09375dd73eae9b72745ffbf35cfcf276d29f5b971786f89dfff09f7ec9e6de7e3de91629f6d57e8ffad7a62cc95cae8eb3e76fc1dcf4878f07791aedfd67860cc95cae8ebf72ff81bbd91f0748066ed0ecd3c30e64a65f475af5cb1f772e23dfd1d0ecd3c30e64a65c4fbaa63e40935eb2c82a70b34eb7468e68131572aa3affb92d31063243cdda0599743330f8cb952193dfdb62dd4acbb081efc0d58b743330f8cb9521935cf724f9af514c1b31c34eb7168c6891179e27e4e768f23968fdf0c16db766240c60909609c980046bc4fc247ff55e83e891ebffae44ad5c7d7fe2a749f04c6f6f0fb98500bfc3dc47fd262a55f9e82f74960ec559eb4c0dfabfc272d56018f8fdfcfa421c648788821039f9b9c00c62909609c9a00c68604304e4b00e3f40430ce4800e3cc0430ce4a00e3ec0430ce4900e3dc0430ce4b00e3fc0430e277550fd78a05bfbfac1ae3b1a3beab8cf5d851df4bc67a6cc973c9f372882d792e795e0eb125cf25cfcb21b6e4b9e47939c4963c973c2f87d892e792e7e5105bf25cf29c53ec248cf10be3d863449ec6f878b2d8768cd5cba0edbd0e9e94a7b663ac350cda4e0c49635c9d00c6e50960141df3f72096c2a879d67ae2595304cf5ae059e789676d113ceb80677dfc3c614ead2b82871832f0b9e509605c9d0046d15174e4c4283a968f8ec2288cc2288c278331097db83026221f73a5326a9e0df1f3849aad2f82670368469f6bf1cb982b9551f36c8c9f27d46c43113c1b41b30d0ecd3c30e64a65d43c9be2e70935db5804cf26d06ca343330f8cb9521935cfe6f87942cd3615c1b31934dbe4d0cc0363ae5446cdb3257e9e50b3cd45f06c01cd363b34f3c0982b9551f36c8d9f27d46c4b113c5b41b32d0ecd3c30e64a65d43cdbe2e70935db5a04cf36d06cab43330f8cb9521935cff6f87942cdb615c1b31d34dbe6d0cc0363ae5446cdb3237e9e50b3ed45f0ec00cdb63b34e3cab83c018cab13c0e859c75ca98c9a67a7279e1d45f0ec049eb33cf1ec2c82e72ce0393b7e9e30a7ce2a82871832f0b9e509605c9d0046d15174e4c4283a968f8ec2288cc2581c636f0218655f0b2357460fdfaf0afe86e6ac311ebbce8a5d5726b1a37e4333d6634b9e4b9e97436cc973c9f372882d792e795e0eb125cf25cfcb21b6e4b9e47939c4963c973c2f87d892e792e7e5105bf25cf2bc1c624b9e4b9e97436cc973c9f372882d792e795e0eb125cf25cfcb21b6e4b9e47939c4963c973c2f87d892e792e7e5105bf25cf2bc1c624b9e4b9e97436cc973c9f372882d792e795e0eb125cf25cfcb21b6e4b9e47939c4963c973c2f87d892e792e79c62ef8a3f76aed867ccec021e1fcfbcf1d4ceacdeee39665bcfc4a89fd6ea5c4babb32cad3250e71cd0ef5c0ffaa5202e6d9bd6295eb1cccf61c0ec29764ef72f13a0fd1463b5a5878e7f9ea7b647f5f5e78df1d8517dfd588f1dd5d78ff5d892e792e7e5105bf25cf2bc1c624b9e4b9e73898de5ea60e8ba9d9e7faab7f15c53ae32ebc84a7eaa73f6b8fceba4408e211fb1e51892734539c4963c973c2f87d892e792e7e5105bf25cf2bc1c624b9e4b9e97436cc973c9f372882d792e795e0eb125cff9e57906deaf18059ec0e2090af0ac62c6b39519cf26663c5dcc78e631e36967c63383194f8e19cf64663ceb99f14c60c6b388194f25339e35cc78b2cc78b633e399cf8c6731339e99cc78a630e399c88ca78a19cf5a663ccb98f1ec60c6b38d194f0f339e05cc78ba99f16c60c6d3c18c6716339e56663c5399f12c61c69366c6d3cc8ca79a19cf66663c4dcc781632e3d9c98c6705339ed9cc781a98f19cc28ca796194f0d339e95cc78b630e3d9c88ca79319cf1c663c6dcc78a631e359ca8c27c38ca78e19cf3a663ce398f1cc65c6339d19cf24663cf5cc78c633e3198de70d15c39362c0930e4e7c26591adedf05be0aebb3babf6a69187aff7ce3af80cf5c60ca958e6d9f0f3efa6df8058ecfa24ee7435b7a4d39fbec9650278cd50beb14af16382e60c2b38b19cf78663cf5cc782631e399ce8c672e339e71cc78d631e3a963c69361c6b39419cf34663c6dcc78e630e3e964c6b39119cf16663c2b99f1d430e3a965c6730a339e06663cb399f1ac60c6b39319cf42663c4dcc783633e3a966c6d3cc8c27cd8c6709339ea9cc785a99f1cc62c6d3c18c6703339e6e663c0b98f1f430e3d9c68c6707339e65cc78d632e3a962c6339119cf14663c3399f12c66c6339f19cf76663c59663c6b98f15432e359c48c6702339ef5cc782633e3c931e399c18ca79d19cf3c663c5dcc783631e3d9ca8c6715339e0a078f87ff7f19f2d0fd6bb46d5adfc524b687fd10fedfcf0b3db5e922b3ad6ab35de2a7785550e7627361a0efafc2cf12977dbf21de3b7711687491a7b6d0fe4859fbc773ec1cde5719004360e91338787cdc8feaa99dc3f230c6ff3f9bd55a5d6c6965efbb0cd4b910f4bbd8837eaedcfef731605e93c8ac79e8dc41ac69a8b78a0923f9cef3cb131eb7ab82e14ba1e3f662e0f1d187796a67787c5d62b569954377aa83b97a898776ba8e1d5abf04f643d29835cf1a5326d634d45bc384917c17f9e5098faf35c1f0a5d0f17509f0f8e87f3cb5333cbe2eb5dab4c6a13bd5c15cbdd4433b5dc70ead5f0afb2169cc9a67ad29136b1aeaad65c248be8bfdf2b4a5a1cdb4143abe2e051e1ffd8fa77686c7d765569bd63a74a73a98ab977968a7ebd8a1f5cb603f08b330bb98350ffdc68458d3506f1d1346f25de295a72d9b8636d352a81fbb0c787cf4f39e740ffbb1cbad36ad73e84e7530572ff7d04ed7b143eb973b623706f16a71c508b4b8c2c173c5286b41f18a65be3081cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a8bce7a119d4567d159748e835974169da3984567d1398a5974169da3984567d1398a5974169da3984567d1398a5974169da3984567d1398a5974169da3984567d1398a5974169da3984567d1398a9983ce9a879e1143ac69a8b79e0923f92ef5cb13fe2e687d307c4959ebbd50be02782ef3a08fa77686f790efb6dab4dea13bd5c1e36bb78776ba8e1d5adf0dfb617711cc97279059742e8d59f3d0b36289350df536306124df657e79c27e6c43307c29d48fed061e1ffdbca77686fd589fd5a60d0edda90e1e5f7d1edae93a76689de209b33047316b1efa1f36c49a867a1b993092ef0aaf3cb9f0f78d1b83e14ba17eac0f7876c7ce93efc73ce81ef6637bac366d74e84e753057f77868a7ebd8a1f53db01f8a61be3c81cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a978fce9a87fe7708b1a6a1de26268ce4dbed95a7359c77d8140c5f52d67a2f94f7004f5fec3cf979070fba87f30e7bad366d72e84e75f0f8daeba19dae6387d6f7c27e18ebcc9727905972637498253784398a59724398a398253784398a59724398a398253784398a59724398a398253784398a59724398a398253784398a59724398a398253784398a59724398a398253784398a59724398a39839e486e6d96ccac49a867a9b993092afcf2f4ff8dc83cdc1f0a5d07d3b7b81678f077d3cb533bc6f679fd5a6cd0edda90e1e5ffb3cb4d375ecd0fa3ed80fc22ccc2e66cdb3c59489350df5b6306124df1ebf3c613fb62518be14eac7f6018f8f7ede533bc37eacdf6ad31687ee540773b5df433b5dc70eadf7c37e10666176316b9eada64cac69a8b7950923f9f6fae509fbb1adc1f0a5503fd60f3c3efa794fed0cfbb1fd569bb63a74a73a98abfb3db4d375ecd0fa7ed80fc22ccc2e66cdb3cd9489350df5b6316124df3ebf3cb934b4999642fdd87ee0f1d1cf7b6a67d88f5d69b5699b4377aa83b97aa58776ba8e1d5abf12f643d29835cf765326d634d4dbce84917cfd7e79c2e36b7b307c29747c5d093c3efa1f4fed0c8faf03569bb63b74a73a98ab073cb4d375ecd0fa01d80f4963d63c3b4c9958d3506f071346f2edf7cb131e5f3b82e14ba1e3eb00f0f8e87f3cb5333cbe0e5a6ddae1d09dea60ae1ef4d04ed7b143eb07613f248d59f3ec3465624d43bd9d4c18c987e78b9d9e786a2d9e5a87166331769d15bbae4c62d75bb1ebcb24b6e4b9e47939c4963c973c2f87d892e792e7e510bb5c734d342f4fcd532751f3d449d43c259ab3d4fc99f862b76782a1a502621df0d44e5c7aa18ce373b47431e399c78ca79d19cf0c663c39663c9399f14c60c6b388194f25339e2c339ef9cc781633e399c98c670a339e89cc78aa98f12c63c6d3c38c6701339e6e663c1dcc786631e36965c6339519cf12663c69663ccdcc78aa99f13431e359c88c6705339ed9cc781a98f19cc28ca79619cf2e663c35cc785632e3e964c63387194f1b339e69cc789632e3c930e3a963c6338e19cf5c663cd399f14c62c653cf8c673c339e14039e7470e2ef51f0f70495e0a3fbfb7782ef79a6bc0b7c158e18b49d83e0a3f153da86ee6f56349cc850019fb9cac1f53c473c8a7395e3b3a3a13bc6ea85758a570b1c5731e119cf8ca79e19cf24663cd399f1cc65c6338e194f1d339e0c339ea5cc78a631e36963c63387194f27339e95cc786a98f1ec62c653cb8ce714663c0dcc786633e359c18c6721339e26663cd5cc789a99f1a499f12c61c63395194f2b339e59cc783a98f17433e359c08ca78719cf32663c55cc782632e399c28c6726339ec5cc78e633e3c932e3a964c6b38819cf04663c9399f1e498f1cc60c6d3ce8c671e339e2e663c150e9e5d9e78a29ea7b08b416c3d8f43e72a1a334cc3fba3f13bc05d1623ad1f0046f2e17da8594f3c51cfa0c83288adb5580665bda4e17dfc1d97af9cca5a8cb4eeca29bc2f6d99279ea8e7762c63105b6b416397740f401adec7df2df8caa9651623adbb72aade2f4ff8bf259a82e14ba17b8df098f3b10f3db5338bc75f8ccfd0703e8bbac9d22a037546e33ef9a8fe80e209b33047316b1e9abb20563c9f8dc6efde46c2e83abf7ae009fbc7e660f852a87f3c003c3ece1f9eda19f66387ac36353b74a73a98ab873cb4d375ecd0fa2147ecc6205e2d0e8f408bc30e9ec3a3ac05c52b967957029939e8ac79e8de36624d43bda54c18c997f5cb13f68f4b83e14ba1fef130f0f8387f786a67d8271cb1dab4d4a13bd5c1e3eb888776ba8e1d5a3f02fba118e6430964169d4b63d63c34864cac69a89763c248be035e7972d934b4999642fdd811e0f1d1cf7bd23decc706ac36e51cba531d3cbe063cb4d375ecd0fa00ec0761166661166661166661166661166661166661166661166661166661166661e6cdac79e8b78dc49a867aad4c18c977d82b4f7edea13518be149a7718009e23b1f3e4e71d3ce81ece3b1cb5dad4ead09dea60ae1ef5d04ed7b143eb47613f08b3300bb3300bb3300bb3300bb3300bb3300bb3300bb3300bb3300bb3300b336f66cd43cfdc26d634d46b63c248be237e79c2df6db505c39742f30e4781c7c7bc8ca77686f30e575b6d6a73e84e753057aff6d04ed7b143eb57c37e10666176316b1e7ab615b1a6a15e3b1346f20d78e5c9cf9fb607c39742fdd8d5c0e3a39ff7a47bd88f1db3dad4eed09dea60ae1ef3d04ed7b143ebc7603f14c37c2881cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a8bce51cca2b3e81cc52c3a978fce9a87fee71ab1a6a15e071346f21df5cad31ace3b7404c39742f30ec780c7c7bc8c27ddc37987e3569b3a1cba531d3cbe8e7b68a7ebd8a1f5e3b01fc63af3a104324b6e8c0eb3e4863047314b6e087314b3e4863047314b6e087314b3e4863047314b6e087314b3e4863047314b6e087314b3e4863047314b6e087314b3e4863047314b6e087314b3e4863047314b6e0873143387dcd03c9da64cac69a8d7c984917c57fbe5099f7bd0190c5f0addb7731c788e79d0c7533bc3fb7606ad36753a74a73a787c0d7a68a7ebd8a1f541d80fc22ccc2e66cdd365cac49a867a5d4c18c977cc2f4f2e0d6da6a5503f36083c3efa794fed0cfbb16bac36753974a73a98abd77868a7ebd8a1f56b603f248d59f3749b32b1a6a15e371346f2e179b9db134fadc553ebd0e264c5d65af498f229e6350deff700a3affeb0db62a475cc71f2d5024f8f279e3a8ba7cea1c5c98aadb5580165bda4e1fd15c0e82ba77a2c465a77e5541df0acf0c4536ff1d43bb43859b1b5162b4d7992794dc3fb2b81d1574eadb01869dd9553f5c0b3d2134f549fb4721462471d5fa3113b2a574623b6682e9a8be6a2b94fcd532751f3d449d43c259ab3d2dcc3755438de4b310260c0a517caf85dc1c7b5a7a776665ddfc7565a6dc2ef6338e670b2be6f08b33047317b1ab7684b5bb1499fc0e2a165d0b316a3396eda63b52909e3a685980f259059742e8d59c7be36fed86d692b36e913583cb45ceb590b4fed0cfb83eb02b7c6142f0375304faff3d0ce14c4a56dd3fa75b01f8a613e944066d1b934661dfbfad863e79f278fb1499fc0e2a1e57acf5af86967be3fb821706b4cf1325007f3f4060fed4c415cda36addf00fb41988559988559988559988559988559988559988559988559988559988559987933ebd8cf8f3d767efc1e63933e81c543cbf33d6be1a79df9f1fb1b03b7c6142f0375709fdfe8a19d29884bdba6f51b613f08b3300bb3300bb3300bb3300bb3300bb3300bb3300bb3300bb3300bb3300b336f661dfb05f1c70e7f8f83b1499fc0e2a1e5059eb5f0d4ce70fcfea6c0ad31c5cb401ddce7377968670ae2d2b669fd26d80fc22ccc2e661dfb85b1c7cecfe7616cd227b0786879a1672dfcb433df1fdc1cb835a67819a883fbfc660fed4c415cda36addf0cfba118e6430964169d45e72866d159748e62169d45e72866d159748e62169d45e72866d159748e62169d45e72866d159748e62169d45e72866d1b97c74d6b16f893d766b387e8fb1499fc0e2a1e516cf5af869677efcfed6c0ad31c5cb401dccd35b3db433057169dbb44ef1ca81f95002992537468759724398a398253784398a59724398a398253784398a59724398a398253784398a59724398a398253784398a59724398a398253784398a59724398a398253784398a59724398a398253784398a99436ee8d82f8a3f76f87b768c4dfa04160f2d2ff2ac85a77686f7bfdc16b835a67819a883797a9b8776a6202e6d9bd66f83fd20ccc2ec62d6b16f8f3f762e6dc5267d028b8796db3d6be1a99d617f7047e0d698e265a00eeef33b3cb433057169dbb47e07ec87a431e3fe4bc5173bbc6f9362549857ed7bb1295782ef25a65c05be979a7235f85e66ca35e07bb9298f03df2ba06de47ba5292f01dfab4c7925f85e6dca2bc0f71a53ee01df6b4db91b7caf33e541f0bdde94af01df1b4cf95af0bdd194af03df9b4cf97af0bdd9946f00df5b4cf9f9e07bab29df08beb799f20bc0f77653be097cef30e51782ef9da67c33f8de65cab780ef4e53be157cef36e505e0bbcbe17b8f29bf087cef35e5dbc0f73e53de05bef79bf204f07dc0942782ef8350a6d7bb4df914f0dd63cab5e0fb902967c0f76153ae03df474c7912f83e6acaf5e0bbd7942783ef3e539e02befb4d792af83e66ca0de0fbb8294f03df03a63c1d7c9f30e519e0fba429cf04dfa74c7916f83e6dcab3c1f719539e03becf9af25cf03d68caf3c0f739539e0fbecf9b32eedf2f98f2ede0a37ee50ef051bff262f051bff212f051bff252f051bff232f051bff272f051bff20af051debd127c9477af021fe5ddabc14779f71af051debd167c9477af031fe5ddebc14779f706f051debd117c94776f021fe5dd9bc14779f716f051debd157c94776f031fe5dddbc14779f70ef051debd137c9477ef021fe5dd9de0a3bc7b37f828efee021fe5dd7bc04779f75ef0359af2fbc077aa29bf1f7ca799f207c077ba29633f738629df0dbe334df91ef0515ff821f03dc7943f0cbe85a6fc11f02d32e58f826fb129df0bbe25a67c1ff8969af2fde06b32e58f81afd9943f0ebe65a6fc00f8b2a6fc09f0b598f227c19733e54f81afd5943f0dbe3653fe0cf8da4df9b3e0eb30e507c1d769ca9f035f97297f1e7c741ea77e461fcffa18241d4823eda336373bda42bef1d096de20de6b3a8a45dba6f55660a47d901b7dc6dc48195b2c46cdd3ee4133cc2b5a0a7d676a079e360f3c9eda197e67eab0dad46ab52903759e03edecf0d0ce14c4a56dd37a07c4f6b1cf518b6ab3dd8596165558c79cd0f4b9b3908eb40d9dbf39475bba3db785b64dfd52f728c4eeb46267add8d81fd352e8f8ea04e62e0fcc7abb3df16f373cbe969b6d514e519c2cb469056810579b3076ca18c5217f159467350cd5a57aa4079dbf885de732ed4b64b73fd76e7d2e0375ba1dedef0de26d7f8fc5d36331eb7d52d730c4e1e1780873a0dbe2a0f52c68d713a15d37684775f0fcd7e449bb2e8b87d69b8087ae713ac047d70ac48fd759cda3c06df77b1d0e6ef2750263938331173f6378add36431d27a0e18c9d7053c9d9e34b3f7f5424b1f3c2fd75875e8b3555067199c1bd38ebafab85b901a6a177d077f2688b74faff1a0178e0f04a04f606918805ed4ce6a0f3c1383a13182e38303c7faaeec3fa7bf6f5f0ad0aa2c4c7c4d399a51013e2c573a7c41307c2804876469280487642b2c59700886eaebaf52ba5934dcd07ff8e0e0738ff41fd97bec86a383fdfbb60f5c89d4d5163d9246b50049d147cbf86068d0a637887732a6c68a552879c6c3eb38789fea649fddd2e2a99de1496f82d5a61aab4d19a8530def4df0d0ce14c4a56dd3fa0447ec183ba2508b8923d062a28367e2286b8103dfe4c32395dec7c9930aab2d7844639bec3c8fb5411470016c3f65e0f47bfa60af368d19170ced6cea3df588aabeaad53b428f90ea33971e01d55d901ee1d4239afaa4a6472cf508a51e91d423907ac4518f30ea11453d82a8470cf5086163901f01d4237e7a844f8fe89d096cdf055efdad5a9f21f5889c1e81d3236efaca4a5f01e8ab117df5adaf14f5e887be42d0df2cf528833edbea2b197d96d667567da5a8af10f515bdbec2d5b354ab94ad365aaf51b656d93a65eb956d50b651d926659b956d51b655d93665db95ed50b653d959cace0ef2a3ebe7283b57d979ca9eabec7c651728bb50d945ca2e567689b24b955da6ec72655728dbadac4fd91e657b95ed53d6af6cbfb22b951d507650d9f3945d15e4efd039acec88b2016547955dadec98b2e3417ec64ccf90e919313d03a667bcf40c979ed1d233587ac64acf50e919293d03754b909f61d233457a6648cf0ae859003deaaf47f95f1ae447f1f5a8fd2b82fca8bc1e85d7a3ee7a945d8faaeb51743d6aae47c9f5a8b81e05d7a3de7a945b8f6aeb516c3d6aad47a9f5a8b41e85d6a3ce7a94f9ae203f8aac478df528b11e15d6a3c07ad4578ff2de13e44771f5a8ad1ea5d5a3b27a14568fbaea51563daaaa4751f5a8a91e25d5a3a27a14548f7aea514e3daaa94731f5a8a51ea5d4a3925f54f690b22f29fbb2b2af28fbaab2af29fbbab26f28fba6b26f29fbb6b2ef04f9bcfc9eb2ef2bfb81b21f2afb91b21f2bfb89b29f2afb99b29f2bfb85b28795fd52d923ca1e55f62b65bf56f61b65bf55f63b65bf57f607657f54f627657f56f617657f55f698b2c795fd4dd913ca9e54f67765ff50f64f654f297b3a189addc04ee45f668546dafb0607fb0f1f1d6c1c1c683c7ccda1c183470fddd078ddc1c1038d03d7f61fdb7f68e03afcf0dda6dba2698435c78ef5ddd078f0c8befeeb1b07ae196c1cd8dfb867e09a23fb8ee387be613e34e7c4887dfbf64507fb45c5b3207db4c4a08f99cfd104cd96c26d7ba214419e2ee543532a4b6bd059e6ac43dfdecfcd5fed361e3f3430d8986d3ca2fef61d529fe9dfd7dc88ef1d57221f1f6c3c3ed8776cb071ffb181c38d2dcdb8dd8b2694d088aa86123ed4dc30f29607ff0fdefd5461250a0400", "privateFunctions": [ { "selector": { @@ -37,8 +37,8 @@ exports[`ContractClass creates a contract class from a contract compilation arti "isInternal": false } ], - "id": "0x13d35e4219fbca20acd2fe6e4d4077b2dfd7d61da6262e9fb0c4e60f2f7928e3", + "id": "0x2b204535bad7ad2b193e66285f35db0cc949b6b347708de3c1abd21ba16d27e8", "privateFunctionsRoot": "0x2dc1f38d7be98a8e72227d6f8aec393c60db813a1819c9c86b02a00cc18f6687", - "publicBytecodeCommitment": "0x1340525ead90736bb961f723384e234d2a74e81e37f6e1a6959cc750fbb27ec3" + "publicBytecodeCommitment": "0x00c4330981e8510563774a7d45622321e5d6bd670947ce83adbfa6a95ac4d604" }" `; diff --git a/yarn-project/protocol-contracts/src/gas-token/__snapshots__/index.test.ts.snap b/yarn-project/protocol-contracts/src/gas-token/__snapshots__/index.test.ts.snap index 8107be7d43ce..9652418d50a2 100644 --- a/yarn-project/protocol-contracts/src/gas-token/__snapshots__/index.test.ts.snap +++ b/yarn-project/protocol-contracts/src/gas-token/__snapshots__/index.test.ts.snap @@ -2,10 +2,10 @@ exports[`GasToken returns canonical protocol contract 1`] = ` { - "address": AztecAddress<0x1d331783f36e24c4c692b4fa48ef8722797087a860641691baa70f4714f59905>, + "address": AztecAddress<0x24cda70da9b61ec6dd82d663afd9a3cd7fc32e229b38e5d4f19a8a5046351265>, "instance": { - "address": AztecAddress<0x1d331783f36e24c4c692b4fa48ef8722797087a860641691baa70f4714f59905>, - "contractClassId": Fr<0x0e4083b228e62201ad0460ca654736a259f51c64a26bf64e7e1fae0b6f0d2301>, + "address": AztecAddress<0x24cda70da9b61ec6dd82d663afd9a3cd7fc32e229b38e5d4f19a8a5046351265>, + "contractClassId": Fr<0x06e3607c7710259f69c13ca1695c322f90da9f7af0fc97eb4dda0a58551a1d10>, "deployer": AztecAddress<0x0000000000000000000000000000000000000000000000000000000000000000>, "initializationHash": Fr<0x0000000000000000000000000000000000000000000000000000000000000000>, "portalContractAddress": EthAddress<0x0000000000000000000000000000000000000000>, @@ -19,10 +19,10 @@ exports[`GasToken returns canonical protocol contract 1`] = ` exports[`GasToken returns canonical protocol contract 2`] = ` { "artifactHash": Fr<0x18af4bb0ca6fe07d0ae6da493b2c7b1af038ee904721dbba9b6e571e6d495726>, - "id": Fr<0x0e4083b228e62201ad0460ca654736a259f51c64a26bf64e7e1fae0b6f0d2301>, + "id": Fr<0x06e3607c7710259f69c13ca1695c322f90da9f7af0fc97eb4dda0a58551a1d10>, "privateFunctions": [], "privateFunctionsRoot": Fr<0x15d28cad4c0736decea8997cb324cf0a0e0602f4d74472cd977bce2c8dd9923f>, - "publicBytecodeCommitment": Fr<0x01cbb57f7449ea71aabbf6b5b69d9d5ab7d82c640c751cf13ce9e850db32a66b>, + "publicBytecodeCommitment": Fr<0x1504b1b5559e997743863102399666e0427271cf5c8c8da097c0a7a1c353b742>, "version": 1, } `; From e1a22364df248e9d70a2b1b900d07d50a44da466 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Tue, 19 Mar 2024 16:00:25 +0000 Subject: [PATCH 3/4] chore: try to use compiled bb for noir tests --- noir/Dockerfile.native-test | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/noir/Dockerfile.native-test b/noir/Dockerfile.native-test index 5a77869060b7..e60094a211d7 100644 --- a/noir/Dockerfile.native-test +++ b/noir/Dockerfile.native-test @@ -1,6 +1,11 @@ +FROM aztecprotocol/barretenberg-x86_64-linux-clang-assert as bb + FROM rust:bullseye +COPY --from=bb /usr/src/barretenberg/cpp/build /usr/src/barretenberg/cpp/build + ARG COMMIT_HASH ENV COMMIT_HASH=${COMMIT_HASH} +ENV NARGO_BACKEND_PATH=/usr/src/barretenberg/cpp/build/bin/bb RUN apt update && apt install -y libc++1 WORKDIR /usr/src/noir COPY . . From 0b21678d36d52872f750d56755af4ee3f0ee0e65 Mon Sep 17 00:00:00 2001 From: sirasistant Date: Tue, 19 Mar 2024 16:04:01 +0000 Subject: [PATCH 4/4] chore: skip cargo test that needs built bb --- noir/Dockerfile.native-test | 5 ----- noir/scripts/test_native.sh | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/noir/Dockerfile.native-test b/noir/Dockerfile.native-test index e60094a211d7..5a77869060b7 100644 --- a/noir/Dockerfile.native-test +++ b/noir/Dockerfile.native-test @@ -1,11 +1,6 @@ -FROM aztecprotocol/barretenberg-x86_64-linux-clang-assert as bb - FROM rust:bullseye -COPY --from=bb /usr/src/barretenberg/cpp/build /usr/src/barretenberg/cpp/build - ARG COMMIT_HASH ENV COMMIT_HASH=${COMMIT_HASH} -ENV NARGO_BACKEND_PATH=/usr/src/barretenberg/cpp/build/bin/bb RUN apt update && apt install -y libc++1 WORKDIR /usr/src/noir COPY . . diff --git a/noir/scripts/test_native.sh b/noir/scripts/test_native.sh index e8c3f27b4b79..636665d44e1e 100755 --- a/noir/scripts/test_native.sh +++ b/noir/scripts/test_native.sh @@ -14,4 +14,4 @@ RUSTFLAGS=-Dwarnings cargo clippy --workspace --locked --release ./.github/scripts/cargo-binstall-install.sh cargo-binstall cargo-nextest --version 0.9.67 -y --secure -cargo nextest run --locked --release -E '!test(hello_world_example)' +cargo nextest run --locked --release -E '!test(hello_world_example) & !test(simple_verifier_codegen)' \ No newline at end of file