比较提交

...
此合并请求有变更与目标分支冲突。
/config/ppo/PushBlock.yaml
/Project/Packages/manifest.json
/Project/ProjectSettings/TagManager.asset
/Project/ProjectSettings/GraphicsSettings.asset
/Project/Assets/ML-Agents/Examples/WallJump/Scripts/WallJumpAgent.cs
/Project/Assets/ML-Agents/Examples/Crawler/Scripts/CrawlerAgent.cs
/Project/Assets/ML-Agents/Examples/Hallway/Scripts/HallwayAgent.cs
/Project/Assets/ML-Agents/Examples/Hallway/Prefabs/SymbolFinderArea.prefab
/Project/Assets/ML-Agents/Examples/Soccer/Scenes/SoccerTwos.unity
/Project/Assets/ML-Agents/Examples/Soccer/Prefabs/SoccerFieldTwos.prefab
/com.unity.ml-agents/Editor/BehaviorParametersEditor.cs
/com.unity.ml-agents/Runtime/Policies/BehaviorParameters.cs
/ml-agents/mlagents/trainers/ghost/trainer.py
/ml-agents/mlagents/trainers/optimizer/torch_optimizer.py
/ml-agents/mlagents/trainers/agent_processor.py
/ml-agents/mlagents/trainers/behavior_id_utils.py
/ml-agents/mlagents/trainers/policy/torch_policy.py
/ml-agents/mlagents/trainers/ppo/optimizer_torch.py
/ml-agents/mlagents/trainers/ppo/trainer.py
/ml-agents/mlagents/trainers/tests/test_buffer.py
/ml-agents/mlagents/trainers/buffer.py
/ml-agents/mlagents/trainers/torch/layers.py
/ml-agents/mlagents/trainers/torch/attention.py
/ml-agents/mlagents/trainers/torch/components/bc/module.py
/ml-agents/mlagents/trainers/torch/utils.py
/ml-agents/mlagents/trainers/torch/networks.py
/ml-agents/mlagents/trainers/torch/encoders.py
/ml-agents/mlagents/trainers/trajectory.py
/Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/CollisionCallbacks.cs
/Project/Assets/ML-Agents/Examples/PushBlock/Scripts/GoalDetectTrigger.cs
/Project/Assets/ML-Agents/Examples/PushBlock/Scripts/SimpleNPC.cs
/Project/Assets/ML-Agents/Examples/PushBlock/Scripts/SimpleNPC.cs.meta
/Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/CollisionCallbacks.cs.meta
/Project/Assets/ML-Agents/Examples/PushBlock/TFModels/PushBlockCollab.onnx
/Project/Assets/ML-Agents/Examples/PushBlock/Scenes/PushBlockCollab.unity
/Project/Assets/ML-Agents/Examples/PushBlock/Scripts/PushBlockEnvController.cs
/Project/Assets/ML-Agents/Examples/PushBlock/Scripts/PushAgentCollab.cs
/Project/Assets/ML-Agents/Examples/PushBlock/TFModels/PushBlockCollab.onnx.meta

1 次代码提交

作者 SHA1 备注 提交日期
HH a29ce02c train 4 env 4 年前
共有 79 个文件被更改,包括 15919 次插入152 次删除
  1. 2
      com.unity.ml-agents/Editor/BehaviorParametersEditor.cs
  2. 9
      com.unity.ml-agents/Runtime/Policies/BehaviorParameters.cs
  3. 35
      ml-agents/mlagents/trainers/behavior_id_utils.py
  4. 71
      ml-agents/mlagents/trainers/buffer.py
  5. 14
      ml-agents/mlagents/trainers/ghost/trainer.py
  6. 47
      ml-agents/mlagents/trainers/agent_processor.py
  7. 28
      ml-agents/mlagents/trainers/optimizer/torch_optimizer.py
  8. 5
      ml-agents/mlagents/trainers/policy/torch_policy.py
  9. 5
      ml-agents/mlagents/trainers/ppo/optimizer_torch.py
  10. 7
      ml-agents/mlagents/trainers/ppo/trainer.py
  11. 29
      ml-agents/mlagents/trainers/tests/test_buffer.py
  12. 8
      ml-agents/mlagents/trainers/torch/attention.py
  13. 2
      ml-agents/mlagents/trainers/torch/components/bc/module.py
  14. 25
      ml-agents/mlagents/trainers/torch/encoders.py
  15. 17
      ml-agents/mlagents/trainers/torch/layers.py
  16. 171
      ml-agents/mlagents/trainers/torch/networks.py
  17. 12
      ml-agents/mlagents/trainers/torch/utils.py
  18. 7
      ml-agents/mlagents/trainers/trajectory.py
  19. 3
      Project/ProjectSettings/TagManager.asset
  20. 1
      Project/ProjectSettings/GraphicsSettings.asset
  21. 2
      Project/ProjectSettings/UnityConnectSettings.asset
  22. 1
      Project/Packages/manifest.json
  23. 13
      Project/Assets/ML-Agents/Examples/Crawler/Scripts/CrawlerAgent.cs
  24. 8
      Project/Assets/ML-Agents/Examples/Soccer/Prefabs/SoccerFieldTwos.prefab
  25. 146
      Project/Assets/ML-Agents/Examples/Soccer/Scenes/SoccerTwos.unity
  26. 22
      Project/Assets/ML-Agents/Examples/WallJump/Scripts/WallJumpAgent.cs
  27. 2
      Project/Assets/ML-Agents/Examples/Hallway/Scenes/Hallway.unity.meta
  28. 932
      Project/Assets/ML-Agents/Examples/Hallway/Prefabs/SymbolFinderArea.prefab
  29. 23
      Project/Assets/ML-Agents/Examples/Hallway/Scripts/HallwayAgent.cs
  30. 2
      config/ppo/PushBlock.yaml
  31. 50
      Project/Assets/ML-Agents/Examples/WallJump/Scripts/WallAreaScoring.cs
  32. 11
      Project/Assets/ML-Agents/Examples/WallJump/Scripts/WallAreaScoring.cs.meta
  33. 11
      Project/Assets/ML-Agents/Examples/WallJump/Scripts/WallJumpCollabAgent.cs.meta
  34. 67
      Project/Assets/ML-Agents/Examples/WallJump/Scripts/WallJumpCollabAgent.cs
  35. 7
      Project/Assets/ML-Agents/Examples/WallJump/Scenes/WallJumpCollab.unity.meta
  36. 1001
      Project/Assets/ML-Agents/Examples/WallJump/Scenes/WallJumpCollab.unity
  37. 7
      Project/Assets/ML-Agents/Examples/WallJump/Prefabs/WallJumpCollabArea.prefab.meta
  38. 1001
      Project/Assets/ML-Agents/Examples/WallJump/Prefabs/WallJumpCollabArea.prefab
  39. 11
      Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/CollisionCallbacks.cs.meta
  40. 143
      Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/CollisionCallbacks.cs
  41. 7
      Project/Assets/ML-Agents/Examples/Hallway/Scenes/HallwayCollab.unity.meta
  42. 1001
      Project/Assets/ML-Agents/Examples/Hallway/Scenes/HallwayCollab.unity
  43. 566
      Project/Assets/ML-Agents/Examples/Hallway/TFModels/HallwayCollab.onnx
  44. 14
      Project/Assets/ML-Agents/Examples/Hallway/TFModels/HallwayCollab.onnx.meta
  45. 11
      Project/Assets/ML-Agents/Examples/Hallway/Scripts/HallwayCollabAgent.cs.meta
  46. 194
      Project/Assets/ML-Agents/Examples/Hallway/Scripts/HallwayCollabAgent.cs
  47. 7
      Project/Assets/ML-Agents/Examples/PushBlock/Prefabs/PushBlockCollabArea.prefab.meta
  48. 1001
      Project/Assets/ML-Agents/Examples/PushBlock/Prefabs/PushBlockCollabArea.prefab
  49. 7
      Project/Assets/ML-Agents/Examples/PushBlock/Prefabs/ZombiePushBlockCollabArea.prefab.meta
  50. 1001
      Project/Assets/ML-Agents/Examples/PushBlock/Prefabs/ZombiePushBlockCollabArea.prefab
  51. 1001
      Project/Assets/ML-Agents/Examples/PushBlock/TFModels/PushBlockCollab.onnx
  52. 14
      Project/Assets/ML-Agents/Examples/PushBlock/TFModels/PushBlockCollab.onnx.meta
  53. 1001
      Project/Assets/ML-Agents/Examples/PushBlock/TFModels/PushBlockCC.onnx
  54. 14
      Project/Assets/ML-Agents/Examples/PushBlock/TFModels/PushBlockCC.onnx.meta
  55. 1001
      Project/Assets/ML-Agents/Examples/PushBlock/TFModels/PushBlockMaster.onnx
  56. 14
      Project/Assets/ML-Agents/Examples/PushBlock/TFModels/PushBlockMaster.onnx.meta
  57. 9
      Project/Assets/ML-Agents/Examples/PushBlock/Scenes/PushBlockCollab.unity.meta
  58. 969
      Project/Assets/ML-Agents/Examples/PushBlock/Scenes/PushBlockCollab.unity
  59. 997
      Project/Assets/ML-Agents/Examples/PushBlock/Scenes/ZombiePushBlock.unity
  60. 9
      Project/Assets/ML-Agents/Examples/PushBlock/Scenes/ZombiePushBlock.unity.meta
  61. 1001
      Project/Assets/ML-Agents/Examples/PushBlock/Scenes/1ZombieVs2AgentsPushBlock.unity
  62. 1001
      Project/Assets/ML-Agents/Examples/PushBlock/Scenes/2ZombieVs3AgentsPushBlock.unity
  63. 9
      Project/Assets/ML-Agents/Examples/PushBlock/Scenes/2ZombieVs3AgentsPushBlock.unity.meta
  64. 9
      Project/Assets/ML-Agents/Examples/PushBlock/Scenes/1ZombieVs2AgentsPushBlock.unity.meta
  65. 12
      Project/Assets/ML-Agents/Examples/PushBlock/Scripts/PushAgentCollab.cs.meta
  66. 11
      Project/Assets/ML-Agents/Examples/PushBlock/Scripts/PushBlockEnvController.cs.meta
  67. 60
      Project/Assets/ML-Agents/Examples/PushBlock/Scripts/GoalDetectTrigger.cs
  68. 11
      Project/Assets/ML-Agents/Examples/PushBlock/Scripts/GoalDetectTrigger.cs.meta
  69. 236
      Project/Assets/ML-Agents/Examples/PushBlock/Scripts/PushBlockEnvController.cs
  70. 116
      Project/Assets/ML-Agents/Examples/PushBlock/Scripts/PushAgentCollab.cs
  71. 289
      Project/Assets/ML-Agents/Examples/PushBlock/Scripts/ZombiePushBlockEnvController.cs
  72. 11
      Project/Assets/ML-Agents/Examples/PushBlock/Scripts/ZombiePushBlockEnvController.cs.meta
  73. 45
      Project/Assets/ML-Agents/Examples/PushBlock/Scripts/SimpleNPC.cs
  74. 11
      Project/Assets/ML-Agents/Examples/PushBlock/Scripts/SimpleNPC.cs.meta
  75. 11
      Project/Assets/ML-Agents/Examples/PushBlock/Scripts/ZombiePushBlockDeathEnvController.cs.meta
  76. 325
      Project/Assets/ML-Agents/Examples/PushBlock/Scripts/ZombiePushBlockDeathEnvController.cs
  77. 63
      config/ppo/WallJumpCollab.yaml
  78. 26
      config/ppo/HallwayCollab.yaml
  79. 28
      config/ppo/PushBlockZombie.yaml

2
com.unity.ml-agents/Editor/BehaviorParametersEditor.cs


const string k_InferenceDeviceName = "m_InferenceDevice";
const string k_BehaviorTypeName = "m_BehaviorType";
const string k_TeamIdName = "TeamId";
const string k_GroupIdName = "GroupId";
const string k_UseChildSensorsName = "m_UseChildSensors";
const string k_ObservableAttributeHandlingName = "m_ObservableAttributeHandling";

}
needPolicyUpdate = needPolicyUpdate || EditorGUI.EndChangeCheck();
EditorGUILayout.PropertyField(so.FindProperty(k_GroupIdName));
EditorGUILayout.PropertyField(so.FindProperty(k_TeamIdName));
EditorGUI.BeginDisabledGroup(!EditorUtilities.CanUpdateModelProperties());
{

9
com.unity.ml-agents/Runtime/Policies/BehaviorParameters.cs


/// </summary>
[HideInInspector, SerializeField, FormerlySerializedAs("m_TeamID")]
public int TeamId;
/// <summary>
/// The group ID for this behavior.
/// </summary>
[HideInInspector, SerializeField]
[Tooltip("Assign the same Group ID to all Agents in the same Area.")]
public int GroupId;
// TODO properties here instead of Agent
[FormerlySerializedAs("m_useChildSensors")]

/// </summary>
public string FullyQualifiedBehaviorName
{
get { return m_BehaviorName + "?team=" + TeamId; }
get { return m_BehaviorName + "?team=" + TeamId + "&group=" + GroupId; }
}
internal IPolicy GeneratePolicy(ActionSpec actionSpec, HeuristicPolicy.ActionGenerator heuristic)

35
ml-agents/mlagents/trainers/behavior_id_utils.py


from typing import NamedTuple
from typing import NamedTuple, Optional
from urllib.parse import urlparse, parse_qs

behavior_id: str
brain_name: str
team_id: int
group_id: int
Parses a name_behavior_id of the form name?team=0
Parses a name_behavior_id of the form name?team=0&group=0
group_id: int = 0
if "group" in ids:
group_id = int(ids["group"][0])
behavior_id=name_behavior_id, brain_name=name, team_id=team_id
behavior_id=name_behavior_id,
brain_name=name,
team_id=team_id,
group_id=group_id,
def create_name_behavior_id(name: str, team_id: int) -> str:
def create_name_behavior_id(
name: str, team_id: Optional[int] = None, group_id: Optional[int] = None
) -> str:
"""
Reconstructs fully qualified behavior name from name and team_id
:param name: brain name
:param team_id: team ID
:return: name_behavior_id
Reconstructs fully qualified behavior name from name and team_id
:param name: brain name
:param team_id: team ID
:return: name_behavior_id
"""
return name + "?team=" + str(team_id)
final_name = name
if team_id is not None:
final_name += f"?team={team_id}"
if group_id is not None:
final_name += f"&group={group_id}"
return final_name
def get_global_agent_id(worker_id: int, agent_id: int) -> str:

71
ml-agents/mlagents/trainers/buffer.py


import numpy as np
import h5py
from typing import List, BinaryIO
from typing import List, BinaryIO, Any
import itertools
from mlagents_envs.exception import UnityException

class AgentBufferField(list):
"""
AgentBufferField is a list of numpy arrays. When an agent collects a field, you can add it to its
AgentBufferField with the append method.
AgentBufferField is a list of data, usually numpy arrays. When an agent collects a field,
you can add it to its AgentBufferField with the append method.
"""
def __init__(self):

def __str__(self):
return str(np.array(self).shape)
def append(self, element: np.ndarray, padding_value: float = 0.0) -> None:
def append(self, element: Any, padding_value: Any = 0.0) -> None:
Adds an element to this list. Also lets you change the padding
Adds an element to this AgentBuffer. Also lets you change the padding
type, so that it can be set on append (e.g. action_masks should
be padded with 1.)
:param element: The element to append to the list.

self.padding_value = padding_value
def extend(self, data: np.ndarray) -> None:
"""
Adds a list of np.arrays to the end of the list of np.arrays.
:param data: The np.array list to append.
def set(self, data: List[Any]) -> None:
self += list(np.array(data, dtype=np.float32))
def set(self, data):
"""
Sets the list of np.array to the input data
:param data: The np.array list to be set.
Sets the AgentBuffer to the provided list
:param data: The list to be set.
dtype = None
if data is not None and len(data) and isinstance(data[0], float):
dtype = np.float32
self[:] = list(np.array(data, dtype=dtype))
self[:] = data
def get_batch(
self,

) -> np.ndarray:
) -> List[Any]:
from the list of np.array
from the AgentBuffer.
:param batch_size: The number of elements to retrieve. If None:
All elements will be retrieved.
:param training_length: The length of the sequence to be retrieved. If

)
if batch_size * training_length > len(self):
padding = np.array(self[-1], dtype=np.float32) * self.padding_value
return np.array(
[padding] * (training_length - leftover) + self[:],
dtype=np.float32,
)
return [padding] * (training_length - leftover) + self[:]
return np.array(
self[len(self) - batch_size * training_length :],
dtype=np.float32,
)
return self[len(self) - batch_size * training_length :]
else:
# The sequences will have overlapping elements
if batch_size is None:

tmp_list: List[np.ndarray] = []
for end in range(len(self) - batch_size + 1, len(self) + 1):
tmp_list += self[end - training_length : end]
return np.array(tmp_list, dtype=np.float32)
return tmp_list
def reset_field(self) -> None:
"""

return len(next(iter(self.values())))
else:
return 0
@staticmethod
def obs_list_to_obs_batch(obs_list: List[List[np.ndarray]]) -> List[np.ndarray]:
"""
Converts a List of obs (an obs itself consinsting of a List of np.ndarray) to
a List of np.ndarray, with the observations batchwise.
"""
# Transpose and convert List of Lists
new_list = list(map(lambda x: np.asanyarray(list(x)), zip(*obs_list)))
return new_list
@staticmethod
def obs_list_list_to_obs_batch(
obs_list_list: List[List[List[np.ndarray]]]
) -> List[List[np.ndarray]]:
"""
Convert a List of List of obs, where one of the dimension is time and the other is number (e.g. in the
case of a variable number of critic observations) to a List of obs, where time is in the batch dimension
of the obs, and the List is the variable number of agents.
"""
new_list = list(
map(
lambda x: AgentBuffer.obs_list_to_obs_batch(list(x)),
zip(*obs_list_list),
)
)
return new_list

14
ml-agents/mlagents/trainers/ghost/trainer.py


:param parsed_behavior_id: Behavior ID that the policy should belong to.
:param policy: Policy to associate with name_behavior_id.
"""
name_behavior_id = parsed_behavior_id.behavior_id
self._name_to_parsed_behavior_id[name_behavior_id] = parsed_behavior_id
name_behavior_id = create_name_behavior_id(
parsed_behavior_id.brain_name, team_id=parsed_behavior_id.team_id
)
# Add policy only based on the team id, not the group id
self._name_to_parsed_behavior_id[
parsed_behavior_id.behavior_id
] = parsed_behavior_id
self.policies[name_behavior_id] = policy
def get_policy(self, name_behavior_id: str) -> Policy:

:return: Policy associated with name_behavior_id
"""
# Get policy based on team id, but not group id
parsed_behavior_id = BehaviorIdentifiers.from_name_behavior_id(name_behavior_id)
name_behavior_id = create_name_behavior_id(
parsed_behavior_id.brain_name, team_id=parsed_behavior_id.team_id
)
return self.policies[name_behavior_id]
def _save_snapshot(self) -> None:

47
ml-agents/mlagents/trainers/agent_processor.py


import sys
import numpy as np
from typing import List, Dict, TypeVar, Generic, Tuple, Any, Union
from collections import defaultdict, Counter
import queue

:param stats_category: The category under which to write the stats. Usually, this comes from the Trainer.
"""
self.experience_buffers: Dict[str, List[AgentExperience]] = defaultdict(list)
self.last_experience: Dict[str, AgentExperience] = {}
# current_obs is used to collect the last seen obs of all the agents, and assemble the next_collab_obs.
self.current_obs: Dict[str, List[np.ndarray]] = {}
# last_take_action_outputs stores the action a_t taken before the current observation s_(t+1), while
# grabbing previous_action from the policy grabs the action PRIOR to that, a_(t-1).
self.last_take_action_outputs: Dict[str, ActionInfoOutputs] = {}

self._process_step(
terminal_step, global_id, terminal_steps.agent_id_to_index[local_id]
)
for terminal_step in terminal_steps.values():
local_id = terminal_step.agent_id
global_id = get_global_agent_id(worker_id, local_id)
self._assemble_trajectory(terminal_step, global_id)
self.current_obs.clear()
# Clean the last experience dictionary for terminal steps
for terminal_step in terminal_steps.values():
local_id = terminal_step.agent_id
global_id = get_global_agent_id(worker_id, local_id)
self._safe_delete(self.last_experience, global_id)
# Iterate over all the decision steps
for ongoing_step in decision_steps.values():
local_id = ongoing_step.agent_id

)
for ongoing_step in decision_steps.values():
local_id = ongoing_step.agent_id
global_id = get_global_agent_id(worker_id, local_id)
self._assemble_trajectory(ongoing_step, global_id)
self.current_obs.clear()
for _gid in action_global_agent_ids:
# If the ID doesn't have a last step result, the agent just reset,

prev_action = self.policy.retrieve_previous_action([global_id])[0, :]
experience = AgentExperience(
obs=obs,
collab_obs=[],
reward=step.reward,
done=done,
action=action_tuple,

interrupted=interrupted,
memory=memory,
)
self.current_obs[global_id] = step.obs
self.last_experience[global_id] = experience
def _assemble_trajectory(
self, step: Union[TerminalStep, DecisionStep], global_id: str
) -> None:
if global_id in self.last_experience:
experience = self.last_experience[global_id]
terminated = isinstance(step, TerminalStep)
# Add remaining shared obs to AgentExperience
for _id, _exp in self.last_experience.items():
if _id == global_id:
continue
else:
self.last_experience[global_id].collab_obs.append(_exp.obs)
# Add the value outputs if needed
self.experience_buffers[global_id].append(experience)
self.episode_rewards[global_id] += step.reward

len(self.experience_buffers[global_id]) >= self.max_trajectory_length
or terminated
):
# Make next AgentExperience
next_collab_obs = []
for _id, _exp in self.current_obs.items():
if _id == global_id:
continue
else:
next_collab_obs.append(_exp)
next_collab_obs=next_collab_obs,
behavior_id=self.behavior_id,
)
for traj_queue in self.trajectory_queues:

28
ml-agents/mlagents/trainers/optimizer/torch_optimizer.py


)
def get_trajectory_value_estimates(
self, batch: AgentBuffer, next_obs: List[np.ndarray], done: bool
self,
batch: AgentBuffer,
next_obs: List[np.ndarray],
next_critic_obs: List[List[np.ndarray]],
done: bool,
) -> Tuple[Dict[str, np.ndarray], Dict[str, float]]:
n_obs = len(self.policy.behavior_spec.sensor_specs)
current_obs = ObsUtil.from_buffer(batch, n_obs)

next_obs = [obs.unsqueeze(0) for obs in next_obs]
critic_obs_np = AgentBuffer.obs_list_list_to_obs_batch(batch["critic_obs"])
critic_obs = [
ModelUtils.list_to_tensor_list(_agent_obs) for _agent_obs in critic_obs_np
]
next_critic_obs = [
ModelUtils.list_to_tensor_list(_list_obs) for _list_obs in next_critic_obs
]
# Expand dimensions of next critic obs
next_critic_obs = [
[_obs.unsqueeze(0) for _obs in _list_obs] for _list_obs in next_critic_obs
]
memory = torch.zeros([1, 1, self.policy.m_size])
current_obs, memory, sequence_length=batch.num_experiences
current_obs,
memory,
sequence_length=batch.num_experiences,
critic_obs=critic_obs,
next_obs, next_memory, sequence_length=1
next_obs, next_memory, sequence_length=1, critic_obs=next_critic_obs
)
for name, estimate in value_estimates.items():

5
ml-agents/mlagents/trainers/policy/torch_policy.py


masks: Optional[torch.Tensor] = None,
memories: Optional[torch.Tensor] = None,
seq_len: int = 1,
critic_obs: Optional[List[List[torch.Tensor]]] = None,
) -> Tuple[AgentAction, ActionLogProbs, torch.Tensor, torch.Tensor]:
"""
:param obs: List of observations.

masks: Optional[torch.Tensor] = None,
memories: Optional[torch.Tensor] = None,
seq_len: int = 1,
critic_obs: Optional[List[List[torch.Tensor]]] = None,
obs, actions, masks, memories, seq_len
obs, actions, masks, memories, seq_len, critic_obs
)
return log_probs, entropies, value_heads

memories = torch.as_tensor(self.retrieve_memories(global_agent_ids)).unsqueeze(
0
)
run_out = {}
with torch.no_grad():
action, log_probs, entropy, memories = self.sample_actions(

5
ml-agents/mlagents/trainers/ppo/optimizer_torch.py


current_obs = ObsUtil.from_buffer(batch, n_obs)
# Convert to tensors
current_obs = [ModelUtils.list_to_tensor(obs) for obs in current_obs]
critic_obs_np = AgentBuffer.obs_list_list_to_obs_batch(batch["critic_obs"])
critic_obs = [
ModelUtils.list_to_tensor_list(_agent_obs) for _agent_obs in critic_obs_np
]
act_masks = ModelUtils.list_to_tensor(batch["action_mask"])
actions = AgentAction.from_dict(batch)

masks=act_masks,
actions=actions,
memories=memories,
critic_obs=critic_obs,
seq_len=self.policy.sequence_length,
)
old_log_probs = ActionLogProbs.from_dict(batch).flatten()

7
ml-agents/mlagents/trainers/ppo/trainer.py


value_estimates, value_next = self.optimizer.get_trajectory_value_estimates(
agent_buffer_trajectory,
trajectory.next_obs,
trajectory.next_collab_obs,
trajectory.done_reached and not trajectory.interrupted,
)

n_sequences = max(
int(self.hyperparameters.batch_size / self.policy.sequence_length), 1
)
advantages = self.update_buffer["advantages"].get_batch()
# Normalize advantages
advantages = np.array(self.update_buffer["advantages"].get_batch())
(advantages - advantages.mean()) / (advantages.std() + 1e-10)
list((advantages - advantages.mean()) / (advantages.std() + 1e-10))
)
num_epoch = self.hyperparameters.num_epoch
batch_update_stats = defaultdict(list)

29
ml-agents/mlagents/trainers/tests/test_buffer.py


b = AgentBuffer()
for step in range(9):
b["vector_observation"].append(
[
100 * fake_agent_id + 10 * step + 1,
100 * fake_agent_id + 10 * step + 2,
100 * fake_agent_id + 10 * step + 3,
]
np.array(
[
100 * fake_agent_id + 10 * step + 1,
100 * fake_agent_id + 10 * step + 2,
100 * fake_agent_id + 10 * step + 3,
],
dtype=np.float32,
)
[100 * fake_agent_id + 10 * step + 4, 100 * fake_agent_id + 10 * step + 5]
np.array(
[
100 * fake_agent_id + 10 * step + 4,
100 * fake_agent_id + 10 * step + 5,
],
dtype=np.float32,
)
)
return b

a = agent_1_buffer["vector_observation"].get_batch(
batch_size=2, training_length=1, sequential=True
)
assert_array(np.array(a), np.array([[171, 172, 173], [181, 182, 183]]))
assert len(a) == 2
assert_array(
np.array(a), np.array([[171, 172, 173], [181, 182, 183]], dtype=np.float32)
)
a = agent_2_buffer["vector_observation"].get_batch(
batch_size=2, training_length=3, sequential=True
)

[261, 262, 263],
[271, 272, 273],
[281, 282, 283],
]
],
dtype=np.float32,
),
)
a = agent_2_buffer["vector_observation"].get_batch(

8
ml-agents/mlagents/trainers/torch/attention.py


self.self_size = 0
self.ent_encoders = torch.nn.ModuleList(
[
LinearEncoder(self.self_size + ent_size, 1, embedding_size)
LinearEncoder(
self.self_size + ent_size,
1,
embedding_size,
kernel_init=Initialization.Normal,
kernel_gain=(0.125 / embedding_size) ** 0.5,
)
for ent_size in self.entity_sizes
]
)

2
ml-agents/mlagents/trainers/torch/components/bc/module.py


from mlagents.trainers.policy.torch_policy import TorchPolicy
from mlagents.trainers.demo_loader import demo_to_buffer
from mlagents.trainers.buffer import AgentBuffer
from mlagents.trainers.buffer import AgentBuffer
class BCModule:

25
ml-agents/mlagents/trainers/torch/encoders.py


return height, width
class VectorInput(nn.Module):
class InputProcessor:
def copy_normalization(self, other_input: "InputProcessor") -> None:
pass
def update_normalization(self, inputs: torch.Tensor) -> None:
pass
class VectorInput(nn.Module, InputProcessor):
def __init__(self, input_size: int, normalize: bool = False):
super().__init__()
self.normalizer: Optional[Normalizer] = None

inputs = self.normalizer(inputs)
return inputs
def copy_normalization(self, other_input: "VectorInput") -> None:
if self.normalizer is not None and other_input.normalizer is not None:
self.normalizer.copy_from(other_input.normalizer)
def copy_normalization(self, other_input: "InputProcessor") -> None:
if isinstance(other_input, VectorInput):
if self.normalizer is not None and other_input.normalizer is not None:
self.normalizer.copy_from(other_input.normalizer)
def update_normalization(self, inputs: torch.Tensor) -> None:
if self.normalizer is not None:

class SmallVisualEncoder(nn.Module):
class SmallVisualEncoder(nn.Module, InputProcessor):
"""
CNN architecture used by King in their Candy Crush predictor
https://www.researchgate.net/publication/328307928_Human-Like_Playtesting_with_Deep_Learning

return self.dense(hidden)
class SimpleVisualEncoder(nn.Module):
class SimpleVisualEncoder(nn.Module, InputProcessor):
def __init__(
self, height: int, width: int, initial_channels: int, output_size: int
):

return self.dense(hidden)
class NatureVisualEncoder(nn.Module):
class NatureVisualEncoder(nn.Module, InputProcessor):
def __init__(
self, height: int, width: int, initial_channels: int, output_size: int
):

return input_tensor + self.layers(input_tensor)
class ResNetVisualEncoder(nn.Module):
class ResNetVisualEncoder(nn.Module, InputProcessor):
def __init__(
self, height: int, width: int, initial_channels: int, output_size: int
):

17
ml-agents/mlagents/trainers/torch/layers.py


Linear layers.
"""
def __init__(self, input_size: int, num_layers: int, hidden_size: int):
def __init__(
self,
input_size: int,
num_layers: int,
hidden_size: int,
kernel_init: Initialization = Initialization.KaimingHeNormal,
kernel_gain: float = 1.0,
):
kernel_init=Initialization.KaimingHeNormal,
kernel_gain=1.0,
kernel_init=kernel_init,
kernel_gain=kernel_gain,
)
]
self.layers.append(Swish())

hidden_size,
hidden_size,
kernel_init=Initialization.KaimingHeNormal,
kernel_gain=1.0,
kernel_init=kernel_init,
kernel_gain=kernel_gain,
)
)
self.layers.append(Swish())

171
ml-agents/mlagents/trainers/torch/networks.py


from mlagents.trainers.torch.encoders import VectorInput
from mlagents.trainers.buffer import AgentBuffer
from mlagents.trainers.trajectory import ObsUtil
from mlagents.trainers.torch.attention import ResidualSelfAttention, EntityEmbeddings
ActivationFunction = Callable[[torch.Tensor], torch.Tensor]

return encoding, memories
# NOTE: this class will be replaced with a multi-head attention when the time comes
class MultiInputNetworkBody(nn.Module):
def __init__(
self,
sensor_specs: List[SensorSpec],
network_settings: NetworkSettings,
encoded_act_size: int = 0,
num_obs_heads: int = 1,
):
super().__init__()
self.normalize = network_settings.normalize
self.use_lstm = network_settings.memory is not None
# Scale network depending on num agents
self.h_size = network_settings.hidden_units
self.m_size = (
network_settings.memory.memory_size
if network_settings.memory is not None
else 0
)
self.processors, _input_size = ModelUtils.create_input_processors(
sensor_specs,
self.h_size,
network_settings.vis_encode_type,
normalize=self.normalize,
)
# Modules for self-attention
self.entity_encoder = EntityEmbeddings(
sum(_input_size), [sum(_input_size)], self.h_size
)
self.self_attn = ResidualSelfAttention(self.h_size)
encoder_input_size = self.h_size
total_enc_size = encoder_input_size + encoded_act_size
self.linear_encoder = LinearEncoder(
total_enc_size, network_settings.num_layers, self.h_size
)
if self.use_lstm:
self.lstm = LSTM(self.h_size, self.m_size)
else:
self.lstm = None # type: ignore
@property
def memory_size(self) -> int:
return self.lstm.memory_size if self.use_lstm else 0
def update_normalization(self, buffer: AgentBuffer) -> None:
obs = ObsUtil.from_buffer(buffer, len(self.processors))
for vec_input, enc in zip(obs, self.processors):
if isinstance(enc, VectorInput):
enc.update_normalization(torch.as_tensor(vec_input))
def copy_normalization(self, other_network: "NetworkBody") -> None:
if self.normalize:
for n1, n2 in zip(self.processors, other_network.processors):
if isinstance(n1, VectorInput) and isinstance(n2, VectorInput):
n1.copy_normalization(n2)
def forward(
self,
all_net_inputs: List[List[torch.Tensor]],
actions: Optional[torch.Tensor] = None,
memories: Optional[torch.Tensor] = None,
sequence_length: int = 1,
) -> Tuple[torch.Tensor, torch.Tensor]:
concat_encoded_obs = []
x_self = None
self_encodes = []
inputs = all_net_inputs[0]
for idx, processor in enumerate(self.processors):
obs_input = inputs[idx]
processed_obs = processor(obs_input)
self_encodes.append(processed_obs)
x_self = torch.cat(self_encodes, dim=-1)
# Get the self encoding separately, but keep it in the entities
concat_encoded_obs = [x_self]
for inputs in all_net_inputs[1:]:
encodes = []
for idx, processor in enumerate(self.processors):
obs_input = inputs[idx]
processed_obs = processor(obs_input)
encodes.append(processed_obs)
concat_encoded_obs.append(torch.cat(encodes, dim=-1))
concat_entites = torch.stack(concat_encoded_obs, dim=1)
encoded_entity = self.entity_encoder(x_self, [concat_entites])
encoded_state = self.self_attn(
encoded_entity, EntityEmbeddings.get_masks([concat_entites])
)
if len(concat_encoded_obs) == 0:
raise Exception("No valid inputs to network.")
# Constants don't work in Barracuda
if actions is not None:
inputs = torch.cat([encoded_state, actions], dim=-1)
else:
inputs = encoded_state
encoding = self.linear_encoder(inputs)
if self.use_lstm:
# Resize to (batch, sequence length, encoding size)
encoding = encoding.reshape([-1, sequence_length, self.h_size])
encoding, memories = self.lstm(encoding, memories)
encoding = encoding.reshape([-1, self.m_size // 2])
return encoding, memories
class ValueNetwork(nn.Module):
def __init__(
self,

return output, memories
class CentralizedValueNetwork(ValueNetwork):
def __init__(
self,
stream_names: List[str],
observation_shapes: List[Tuple[int, ...]],
network_settings: NetworkSettings,
encoded_act_size: int = 0,
outputs_per_stream: int = 1,
):
# This is not a typo, we want to call __init__ of nn.Module
nn.Module.__init__(self)
self.network_body = MultiInputNetworkBody(
observation_shapes, network_settings, encoded_act_size=encoded_act_size
)
if network_settings.memory is not None:
encoding_size = network_settings.memory.memory_size // 2
else:
encoding_size = network_settings.hidden_units
self.value_heads = ValueHeads(stream_names, encoding_size, outputs_per_stream)
def forward(
self,
inputs: List[List[torch.Tensor]],
actions: Optional[torch.Tensor] = None,
memories: Optional[torch.Tensor] = None,
sequence_length: int = 1,
) -> Tuple[Dict[str, torch.Tensor], torch.Tensor]:
encoding, memories = self.network_body(
inputs, actions, memories, sequence_length
)
output = self.value_heads(encoding)
return output, memories
class Actor(abc.ABC):
@abc.abstractmethod
def update_normalization(self, buffer: AgentBuffer) -> None:

masks: Optional[torch.Tensor] = None,
memories: Optional[torch.Tensor] = None,
sequence_length: int = 1,
critic_obs: Optional[List[List[torch.Tensor]]] = None,
) -> Tuple[
AgentAction, ActionLogProbs, torch.Tensor, Dict[str, torch.Tensor], torch.Tensor
]:

masks: Optional[torch.Tensor] = None,
memories: Optional[torch.Tensor] = None,
sequence_length: int = 1,
critic_obs: Optional[List[List[torch.Tensor]]] = None,
) -> Tuple[ActionLogProbs, torch.Tensor, Dict[str, torch.Tensor]]:
encoding, memories = self.network_body(
inputs, memories=memories, sequence_length=sequence_length

sensor_specs, network_settings, action_spec, conditional_sigma, tanh_squash
)
self.stream_names = stream_names
self.critic = ValueNetwork(stream_names, sensor_specs, network_settings)
self.critic = CentralizedValueNetwork(
stream_names, sensor_specs, network_settings
)
@property
def memory_size(self) -> int:

inputs: List[torch.Tensor],
memories: Optional[torch.Tensor] = None,
sequence_length: int = 1,
critic_obs: List[List[torch.Tensor]] = None,
all_net_inputs = [inputs]
if critic_obs is not None:
all_net_inputs.extend(critic_obs)
inputs, memories=critic_mem, sequence_length=sequence_length
all_net_inputs, memories=critic_mem, sequence_length=sequence_length
)
if actor_mem is not None:
# Make memories with the actor mem unchanged

masks: Optional[torch.Tensor] = None,
memories: Optional[torch.Tensor] = None,
sequence_length: int = 1,
critic_obs: Optional[List[List[torch.Tensor]]] = None,
) -> Tuple[ActionLogProbs, torch.Tensor, Dict[str, torch.Tensor]]:
actor_mem, critic_mem = self._get_actor_critic_mem(memories)
encoding, actor_mem_outs = self.network_body(

all_net_inputs = [inputs]
if critic_obs is not None:
all_net_inputs.extend(critic_obs)
inputs, memories=critic_mem, sequence_length=sequence_length
all_net_inputs, memories=critic_mem, sequence_length=sequence_length
)
return log_probs, entropies, value_outputs

masks: Optional[torch.Tensor] = None,
memories: Optional[torch.Tensor] = None,
sequence_length: int = 1,
critic_obs: Optional[List[List[torch.Tensor]]] = None,
) -> Tuple[
AgentAction, ActionLogProbs, torch.Tensor, Dict[str, torch.Tensor], torch.Tensor
]:

)
action, log_probs, entropies = self.action_model(encoding, masks)
all_net_inputs = [inputs]
if critic_obs is not None:
all_net_inputs.extend(critic_obs)
inputs, memories=critic_mem, sequence_length=sequence_length
all_net_inputs, memories=critic_mem, sequence_length=sequence_length
)
if self.use_lstm:
mem_out = torch.cat([actor_mem_outs, critic_mem_outs], dim=-1)

12
ml-agents/mlagents/trainers/torch/utils.py


return torch.as_tensor(np.asanyarray(ndarray_list), dtype=dtype)
@staticmethod
def list_to_tensor_list(
ndarray_list: List[np.ndarray], dtype: Optional[torch.dtype] = torch.float32
) -> torch.Tensor:
"""
Converts a list of numpy arrays into a list of tensors. MUCH faster than
calling as_tensor on the list directly.
"""
return [
torch.as_tensor(np.asanyarray(_arr), dtype=dtype) for _arr in ndarray_list
]
@staticmethod
def to_numpy(tensor: torch.Tensor) -> np.ndarray:
"""
Converts a Torch Tensor to a numpy array. If the Tensor is on the GPU, it will

7
ml-agents/mlagents/trainers/trajectory.py


from typing import List, NamedTuple
import attr
import numpy as np
from mlagents.trainers.buffer import AgentBuffer

class AgentExperience(NamedTuple):
@attr.s(auto_attribs=True)
class AgentExperience:
collab_obs: List[List[np.ndarray]]
reward: float
done: bool
action: ActionTuple

next_obs: List[
np.ndarray
] # Observation following the trajectory, for bootstrapping
next_collab_obs: List[List[np.ndarray]]
agent_id: str
behavior_id: str

for i in range(num_obs):
agent_buffer_trajectory[ObsUtil.get_name_at(i)].append(obs[i])
agent_buffer_trajectory[ObsUtil.get_name_at_next(i)].append(next_obs[i])
agent_buffer_trajectory["critic_obs"].append(exp.collab_obs)
if exp.memory is not None:
agent_buffer_trajectory["memory"].append(exp.memory)

3
Project/ProjectSettings/TagManager.asset


- symbol_O_Goal
- purpleAgent
- purpleGoal
- blockLarge
- blockSmall
- zombie
layers:
- Default
- TransparentFX

1
Project/ProjectSettings/GraphicsSettings.asset


- {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0}
m_PreloadedShaders: []
m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,

2
Project/ProjectSettings/UnityConnectSettings.asset


UnityConnectSettings:
m_ObjectHideFlags: 0
serializedVersion: 1
m_Enabled: 1
m_Enabled: 0
m_TestMode: 0
m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
m_EventUrl: https://cdp.cloud.unity3d.com/v1/events

1
Project/Packages/manifest.json


"dependencies": {
"com.unity.ads": "2.0.8",
"com.unity.analytics": "3.2.3",
"com.unity.barracuda": "1.2.1-preview",
"com.unity.collab-proxy": "1.2.15",
"com.unity.ml-agents": "file:../../com.unity.ml-agents",
"com.unity.ml-agents.extensions": "file:../../com.unity.ml-agents.extensions",

13
Project/Assets/ML-Agents/Examples/Crawler/Scripts/CrawlerAgent.cs


CrawlerDynamic,
CrawlerDynamicVariableSpeed,
CrawlerStatic,
CrawlerStaticVariableSpeed
CrawlerStaticVariableSpeed,
CrawlerDynamicVariableSpeedCustomTarget
}
[Tooltip(

//The direction an agent will walk during training.
[Header("Target To Walk Towards")] public Transform dynamicTargetPrefab; //Target prefab to use in Dynamic envs
public Transform staticTargetPrefab; //Target prefab to use in Static envs
private Transform m_Target; //Target the agent will walk towards during training.
public Transform m_Target; //Target the agent will walk towards during training.
[Header("Body Parts")] [Space(10)] public Transform body;
public Transform leg0Upper;

var behaviorParams = GetComponent<Unity.MLAgents.Policies.BehaviorParameters>();
switch (typeOfCrawler)
{
case CrawlerAgentBehaviorType.CrawlerDynamicVariableSpeedCustomTarget:
{
behaviorParams.BehaviorName = "CrawlerDynamicVariableSpeed"; //set behavior name
if (crawlerDyVSModel)
behaviorParams.Model = crawlerDyVSModel; //assign the model
m_RandomizeWalkSpeedEachEpisode = true; //randomize m_TargetWalkingSpeed during training
break;
}
case CrawlerAgentBehaviorType.CrawlerDynamic:
{
behaviorParams.BehaviorName = "CrawlerDynamic"; //set behavior name

8
Project/Assets/ML-Agents/Examples/Soccer/Prefabs/SoccerFieldTwos.prefab


m_BehaviorType: 0
m_BehaviorName: SoccerTwos
TeamId: 1
GroupId: 0
m_UseChildActuators: 1
m_ObservableAttributeHandling: 0
--- !u!114 &114492261207303438
MonoBehaviour:

m_BehaviorType: 0
m_BehaviorName: SoccerTwos
TeamId: 0
GroupId: 0
m_UseChildActuators: 1
m_ObservableAttributeHandling: 0
--- !u!114 &114850431417842684
MonoBehaviour:

m_BehaviorType: 0
m_BehaviorName: SoccerTwos
TeamId: 1
GroupId: 0
m_UseChildActuators: 1
m_ObservableAttributeHandling: 0
--- !u!114 &5320024511406682322
MonoBehaviour:

m_BehaviorType: 0
m_BehaviorName: SoccerTwos
TeamId: 0
GroupId: 0
m_UseChildActuators: 1
m_ObservableAttributeHandling: 0
--- !u!114 &5379409612883756837
MonoBehaviour:

146
Project/Assets/ML-Agents/Examples/Soccer/Scenes/SoccerTwos.unity


propertyPath: m_RootOrder
value: 8
objectReference: {fileID: 0}
- target: {fileID: 114387866097048300, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 4
objectReference: {fileID: 0}
- target: {fileID: 114734187185382186, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 4
objectReference: {fileID: 0}
- target: {fileID: 3316085536305919483, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 4
objectReference: {fileID: 0}
- target: {fileID: 8577361778124631730, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 4
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3}
--- !u!1001 &774084574

propertyPath: m_RootOrder
value: 11
objectReference: {fileID: 0}
- target: {fileID: 114387866097048300, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 7
objectReference: {fileID: 0}
- target: {fileID: 114734187185382186, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 7
objectReference: {fileID: 0}
- target: {fileID: 3316085536305919483, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 7
objectReference: {fileID: 0}
- target: {fileID: 8577361778124631730, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 7
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3}
--- !u!1001 &1177695920

propertyPath: m_RootOrder
value: 5
objectReference: {fileID: 0}
- target: {fileID: 114387866097048300, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 1
objectReference: {fileID: 0}
- target: {fileID: 114734187185382186, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3316085536305919483, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8577361778124631730, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3}
--- !u!1001 &1325062279

propertyPath: m_RootOrder
value: 7
objectReference: {fileID: 0}
- target: {fileID: 114387866097048300, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 3
objectReference: {fileID: 0}
- target: {fileID: 114734187185382186, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 3
objectReference: {fileID: 0}
- target: {fileID: 3316085536305919483, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 3
objectReference: {fileID: 0}
- target: {fileID: 8577361778124631730, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 3
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3}
--- !u!1001 &1348885204

m_Name:
m_EditorClassIdentifier:
gravityMultiplier: 1
monitorVerticalOffset: 0
reuseCollisionCallbacks: 1
--- !u!114 &1574236051
MonoBehaviour:
m_ObjectHideFlags: 0

blueMaterial: {fileID: 2100000, guid: c9fa44c2c3f8ce74ca39a3355ea42631, type: 2}
randomizePlayersTeamForTraining: 0
agentRunSpeed: 2
strikerPunish: -0.1
strikerReward: 1
goaliePunish: -1
goalieReward: 0.1
--- !u!1001 &1606160104
PrefabInstance:
m_ObjectHideFlags: 0

propertyPath: m_RootOrder
value: 9
objectReference: {fileID: 0}
- target: {fileID: 114387866097048300, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 5
objectReference: {fileID: 0}
- target: {fileID: 114734187185382186, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 5
objectReference: {fileID: 0}
- target: {fileID: 3316085536305919483, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 5
objectReference: {fileID: 0}
- target: {fileID: 8577361778124631730, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 5
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3}
--- !u!1001 &1748755984

propertyPath: m_RootOrder
value: 10
objectReference: {fileID: 0}
- target: {fileID: 114387866097048300, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 6
objectReference: {fileID: 0}
- target: {fileID: 114734187185382186, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 6
objectReference: {fileID: 0}
- target: {fileID: 3316085536305919483, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 6
objectReference: {fileID: 0}
- target: {fileID: 8577361778124631730, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 6
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3}
--- !u!1001 &2043067438

- target: {fileID: 4558743310993102, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3}
propertyPath: m_RootOrder
value: 6
objectReference: {fileID: 0}
- target: {fileID: 114387866097048300, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 2
objectReference: {fileID: 0}
- target: {fileID: 114734187185382186, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 2
objectReference: {fileID: 0}
- target: {fileID: 3316085536305919483, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 2
objectReference: {fileID: 0}
- target: {fileID: 8577361778124631730, guid: 54f3340298537426e96a6cc530e2d5d8,
type: 3}
propertyPath: GroupId
value: 2
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 54f3340298537426e96a6cc530e2d5d8, type: 3}

22
Project/Assets/ML-Agents/Examples/WallJump/Scripts/WallJumpAgent.cs


public class WallJumpAgent : Agent
{
// Depending on this value, the wall will have different height
int m_Configuration;
protected int m_Configuration;
// Brain to use when no wall is present
public NNModel noWallBrain;
// Brain to use when a jumpable wall is present

public GameObject ground;
public GameObject spawnArea;
Bounds m_SpawnAreaBounds;
protected Bounds m_SpawnAreaBounds;
Rigidbody m_ShortBlockRb;
Rigidbody m_AgentRb;
Material m_GroundMaterial;
Renderer m_GroundRenderer;
WallJumpSettings m_WallJumpSettings;
protected Rigidbody m_ShortBlockRb;
protected Rigidbody m_AgentRb;
protected Material m_GroundMaterial;
protected Renderer m_GroundRenderer;
protected WallJumpSettings m_WallJumpSettings;
public float jumpingTime;
public float jumpTime;

string m_SmallWallBehaviorName = "SmallWallJump";
string m_BigWallBehaviorName = "BigWallJump";
EnvironmentParameters m_ResetParams;
protected EnvironmentParameters m_ResetParams;
public override void Initialize()
{

/// <returns>The Enumerator to be used in a Coroutine.</returns>
/// <param name="mat">The material to be swapped.</param>
/// <param name="time">The time the material will remain.</param>
IEnumerator GoalScoredSwapGroundMaterial(Material mat, float time)
protected IEnumerator GoalScoredSwapGroundMaterial(Material mat, float time)
{
m_GroundRenderer.material = mat;
yield return new WaitForSeconds(time); //wait for 2 sec

}
// Detect when the agent hits the goal
void OnTriggerStay(Collider col)
protected virtual void OnTriggerStay(Collider col)
{
if (col.gameObject.CompareTag("goal") && DoGroundCheck(true))
{

/// If 1: Small wall and smallWallBrain.
/// Other : Tall wall and BigWallBrain.
/// </param>
void ConfigureAgent(int config)
protected virtual void ConfigureAgent(int config)
{
var localScale = wall.transform.localScale;
if (config == 0)

2
Project/Assets/ML-Agents/Examples/Hallway/Scenes/Hallway.unity.meta


fileFormatVersion: 2
guid: d6d6a33ed0e18459a8d61817d600978a
guid: 71d1487c63f604ff6985cc2f23c7afbf
DefaultImporter:
externalObjects: {}
userData:

932
Project/Assets/ML-Agents/Examples/Hallway/Prefabs/SymbolFinderArea.prefab
文件差异内容过多而无法显示
查看文件

23
Project/Assets/ML-Agents/Examples/Hallway/Scripts/HallwayAgent.cs


public GameObject symbolO;
public GameObject symbolX;
public bool useVectorObs;
Rigidbody m_AgentRb;
Material m_GroundMaterial;
Renderer m_GroundRenderer;
HallwaySettings m_HallwaySettings;
int m_Selection;
StatsRecorder m_statsRecorder;
protected Rigidbody m_AgentRb;
protected Material m_GroundMaterial;
protected Renderer m_GroundRenderer;
protected HallwaySettings m_HallwaySettings;
protected int m_Selection;
public override void Initialize()
{

m_GroundMaterial = m_GroundRenderer.material;
m_statsRecorder = Academy.Instance.StatsRecorder;
// m_statsRecorder = Academy.Instance.StatsRecorder;
}
public override void CollectObservations(VectorSensor sensor)

}
}
IEnumerator GoalScoredSwapGroundMaterial(Material mat, float time)
protected IEnumerator GoalScoredSwapGroundMaterial(Material mat, float time)
{
m_GroundRenderer.material = mat;
yield return new WaitForSeconds(time);

{
SetReward(1f);
StartCoroutine(GoalScoredSwapGroundMaterial(m_HallwaySettings.goalScoredMaterial, 0.5f));
m_statsRecorder.Add("Goal/Correct", 1, StatAggregationMethod.Sum);
// m_statsRecorder.Add("Goal/Correct", 1, StatAggregationMethod.Sum);
m_statsRecorder.Add("Goal/Wrong", 1, StatAggregationMethod.Sum);
// m_statsRecorder.Add("Goal/Wrong", 1, StatAggregationMethod.Sum);
}
EndEpisode();
}

symbolXGoal.transform.position = new Vector3(7f, 0.5f, 22.29f) + area.transform.position;
symbolOGoal.transform.position = new Vector3(-7f, 0.5f, 22.29f) + area.transform.position;
}
m_statsRecorder.Add("Goal/Correct", 0, StatAggregationMethod.Sum);
m_statsRecorder.Add("Goal/Wrong", 0, StatAggregationMethod.Sum);
// m_statsRecorder.Add("Goal/Correct", 0, StatAggregationMethod.Sum);
// m_statsRecorder.Add("Goal/Wrong", 0, StatAggregationMethod.Sum);
}
}

2
config/ppo/PushBlock.yaml


gamma: 0.99
strength: 1.0
keep_checkpoints: 5
max_steps: 2000000
max_steps: 6000000 #2000000
time_horizon: 64
summary_freq: 60000
threaded: true

50
Project/Assets/ML-Agents/Examples/WallJump/Scripts/WallAreaScoring.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WallAreaScoring : MonoBehaviour
{
public GameObject[] agents;
WallJumpSettings m_WallJumpSettings;
Renderer m_GroundRenderer;
Material m_GroundMaterial;
protected IEnumerator GoalScoredSwapGroundMaterial(Material mat, float time)
{
m_GroundRenderer.material = mat;
yield return new WaitForSeconds(time); //wait for 2 sec
m_GroundRenderer.material = m_GroundMaterial;
}
public void Start()
{
m_WallJumpSettings = FindObjectOfType<WallJumpSettings>();
m_GroundRenderer = GetComponent<Renderer>();
m_GroundMaterial = m_GroundRenderer.material;
}
public void WinCondition()
{
foreach (var agent in agents)
{
WallJumpCollabAgent agentScript = agent.GetComponent<WallJumpCollabAgent>();
agentScript.SetReward(1f);
agentScript.EndEpisode();
}
StartCoroutine(
GoalScoredSwapGroundMaterial(m_WallJumpSettings.goalScoredMaterial, 1f));
}
public void LoseCondition()
{
foreach (var agent in agents)
{
WallJumpCollabAgent agentScript = agent.GetComponent<WallJumpCollabAgent>();
agentScript.SetReward(-1f);
agentScript.EndEpisode();
}
StartCoroutine(
GoalScoredSwapGroundMaterial(m_WallJumpSettings.failMaterial, .2f));
}
}

11
Project/Assets/ML-Agents/Examples/WallJump/Scripts/WallAreaScoring.cs.meta


fileFormatVersion: 2
guid: ad7213222795741f5b6ca2b332f16da9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

11
Project/Assets/ML-Agents/Examples/WallJump/Scripts/WallJumpCollabAgent.cs.meta


fileFormatVersion: 2
guid: 2cdbc0d9a64fe4b12a3ed4b81a151117
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

67
Project/Assets/ML-Agents/Examples/WallJump/Scripts/WallJumpCollabAgent.cs


//Put this script on your blue cube.
using System.Collections;
using UnityEngine;
using Unity.MLAgents;
using Unity.Barracuda;
using Unity.MLAgents.Actuators;
using Unity.MLAgents.Sensors;
using Unity.MLAgentsExamples;
public class WallJumpCollabAgent : WallJumpAgent
{
Vector3 m_InitialPosition;
WallAreaScoring m_Scoring;
public override void Initialize()
{
m_WallJumpSettings = FindObjectOfType<WallJumpSettings>();
m_Scoring = ground.GetComponent<WallAreaScoring>();
m_Configuration = 5;
m_AgentRb = GetComponent<Rigidbody>();
// m_ShortBlockRb = shortBlock.GetComponent<Rigidbody>();
m_SpawnAreaBounds = spawnArea.GetComponent<Collider>().bounds;
m_GroundRenderer = ground.GetComponent<Renderer>();
m_GroundMaterial = m_GroundRenderer.material;
m_InitialPosition = transform.localPosition;
spawnArea.SetActive(false);
m_ResetParams = Academy.Instance.EnvironmentParameters;
}
public override void OnEpisodeBegin()
{
transform.localPosition = m_InitialPosition;
m_Configuration = 5;
m_AgentRb.velocity = default(Vector3);
}
public override void OnActionReceived(ActionBuffers actionBuffers)
{
MoveAgent(actionBuffers.DiscreteActions);
if (!Physics.Raycast(m_AgentRb.position, Vector3.down, 20))
{
m_Scoring.LoseCondition();
}
}
protected override void ConfigureAgent(int config)
{
var localScale = wall.transform.localScale;
var height = m_ResetParams.GetWithDefault("big_wall_height", 9);
localScale = new Vector3(
localScale.x,
height,
localScale.z);
wall.transform.localScale = localScale;
}
// Detect when the agent hits the goal
protected override void OnTriggerStay(Collider col)
{
if (col.gameObject.CompareTag("goal") && DoGroundCheck(true))
{
m_Scoring.WinCondition();
}
}
}

7
Project/Assets/ML-Agents/Examples/WallJump/Scenes/WallJumpCollab.unity.meta


fileFormatVersion: 2
guid: 136090e065a8f48bfb97ea3083893d8a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Project/Assets/ML-Agents/Examples/WallJump/Scenes/WallJumpCollab.unity
文件差异内容过多而无法显示
查看文件

7
Project/Assets/ML-Agents/Examples/WallJump/Prefabs/WallJumpCollabArea.prefab.meta


fileFormatVersion: 2
guid: ff1a5743be49d43f08378dcd76451821
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Project/Assets/ML-Agents/Examples/WallJump/Prefabs/WallJumpCollabArea.prefab
文件差异内容过多而无法显示
查看文件

11
Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/CollisionCallbacks.cs.meta


fileFormatVersion: 2
guid: 506de7b261f374159a5cdfdb0ff48c0c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

143
Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/CollisionCallbacks.cs


using UnityEngine;
using Random = UnityEngine.Random;
using Unity.MLAgents;
using UnityEngine.Events;
namespace Unity.MLAgentsExamples
{
/// <summary>
/// Utility class to allow target placement and collision detection with an agent
/// Add this script to the target you want the agent to touch.
/// Callbacks will be triggered any time the target is touched with a collider tagged as 'tagToDetect'
/// </summary>
public class CollisionCallbacks : MonoBehaviour
{
// [System.Serializable] public class BoolEvent : UnityEvent<bool> { }
// [SerializeField] BoolEvent boolEvent = new BoolEvent();
// public void OnBoolEvent(bool value)
// {
// Debug.Log($"OnBoolEvent {value}");
// }
[Header("Collider Tag To Detect")]
public string tagToDetect = "agent"; //collider tag to detect
// [Header("Target Placement")]
// public float spawnRadius; //The radius in which a target can be randomly spawned.
// public bool respawnIfTouched; //Should the target respawn to a different position when touched
//
// [Header("Target Fell Protection")]
// public bool respawnIfFallsOffPlatform = true; //If the target falls off the platform, reset the position.
// public float fallDistance = 5; //distance below the starting height that will trigger a respawn
//
//
// private Vector3 m_startingPos; //the starting position of the target
// private Agent m_agentTouching; //the agent currently touching the target
[System.Serializable]
// public class TriggerEvent : UnityEvent<string>
public class TriggerEvent : UnityEvent<Collider>
{
}
[Header("Trigger Callbacks")]
public TriggerEvent onTriggerEnterEvent = new TriggerEvent();
public TriggerEvent onTriggerStayEvent = new TriggerEvent();
public TriggerEvent onTriggerExitEvent = new TriggerEvent();
[System.Serializable]
public class CollisionEvent : UnityEvent<Collision, Transform>
{
}
[Header("Collision Callbacks")]
public CollisionEvent onCollisionEnterEvent = new CollisionEvent();
public CollisionEvent onCollisionStayEvent = new CollisionEvent();
public CollisionEvent onCollisionExitEvent = new CollisionEvent();
// // Start is called before the first frame update
// void OnEnable()
// {
// m_startingPos = transform.position;
// if (respawnIfTouched)
// {
// MoveTargetToRandomPosition();
// }
// }
// void Update()
// {
// if (respawnIfFallsOffPlatform)
// {
// if (transform.position.y < m_startingPos.y - fallDistance)
// {
// Debug.Log($"{transform.name} Fell Off Platform");
// MoveTargetToRandomPosition();
// }
// }
// }
// /// <summary>
// /// Moves target to a random position within specified radius.
// /// </summary>
// public void MoveTargetToRandomPosition()
// {
// var newTargetPos = m_startingPos + (Random.insideUnitSphere * spawnRadius);
// newTargetPos.y = m_startingPos.y;
// transform.position = newTargetPos;
// }
private void OnCollisionEnter(Collision col)
{
if (col.transform.CompareTag(tagToDetect))
{
onCollisionEnterEvent.Invoke(col, transform);
// if (respawnIfTouched)
// {
// MoveTargetToRandomPosition();
// }
}
}
private void OnCollisionStay(Collision col)
{
if (col.transform.CompareTag(tagToDetect))
{
onCollisionStayEvent.Invoke(col, transform);
}
}
private void OnCollisionExit(Collision col)
{
if (col.transform.CompareTag(tagToDetect))
{
onCollisionExitEvent.Invoke(col, transform);
}
}
private void OnTriggerEnter(Collider col)
{
if (col.CompareTag(tagToDetect))
{
onTriggerEnterEvent.Invoke(col);
}
}
private void OnTriggerStay(Collider col)
{
if (col.CompareTag(tagToDetect))
{
onTriggerStayEvent.Invoke(col);
}
}
private void OnTriggerExit(Collider col)
{
if (col.CompareTag(tagToDetect))
{
onTriggerExitEvent.Invoke(col);
}
}
}
}

7
Project/Assets/ML-Agents/Examples/Hallway/Scenes/HallwayCollab.unity.meta


fileFormatVersion: 2
guid: d6d6a33ed0e18459a8d61817d600978a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Project/Assets/ML-Agents/Examples/Hallway/Scenes/HallwayCollab.unity
文件差异内容过多而无法显示
查看文件

566
Project/Assets/ML-Agents/Examples/Hallway/TFModels/HallwayCollab.onnx


pytorch1.7:��
Q
vector_observation22Slice_0"Slice*
axes@�*
ends@i�*
starts@�
Q
vector_observation23Slice_1"Slice*
axes@�*
ends@o�*
starts@i�
4
22
2324Concat_2"Concat*
axis����������
�
24
/network_body.linear_encoder.seq_layers.0.weight
-network_body.linear_encoder.seq_layers.0.bias25Gemm_3"Gemm*
alpha�?�*
beta�?�*
transB�

2526 Sigmoid_4"Sigmoid

25
2627Mul_5"Mul
�
27
/network_body.linear_encoder.seq_layers.2.weight
-network_body.linear_encoder.seq_layers.2.bias28Gemm_6"Gemm*
alpha�?�*
beta�?�*
transB�

2829 Sigmoid_7"Sigmoid

28
2930Mul_8"Mul
K
action_masks31Slice_9"Slice*
axes@�*
ends@�*
starts@�
L
action_masks32Slice_10"Slice*
axes@�*
ends@�*
starts@�
�
30
5action_model._discrete_distribution.branches.0.weight
3action_model._discrete_distribution.branches.0.bias33Gemm_11"Gemm*
alpha�?�*
beta�?�*
transB�
134 Constant_12"Constant*
value*J���

31
3435Mul_13"Mul
136 Constant_14"Constant*
value*J�?�

35
3637Add_15"Add

33
3138Mul_16"Mul
139 Constant_17"Constant*
value*J ��L�

37
3940Mul_18"Mul

38
4041Sub_19"Sub
*
4142
Softmax_20"Softmax*
axis�
�
30
5action_model._discrete_distribution.branches.1.weight
3action_model._discrete_distribution.branches.1.bias43Gemm_21"Gemm*
alpha�?�*
beta�?�*
transB�
144 Constant_22"Constant*
value*J���

32
4445Mul_23"Mul
146 Constant_24"Constant*
value*J�?�

45
4647Add_25"Add

43
3248Mul_26"Mul
149 Constant_27"Constant*
value*J ��L�

47
4950Mul_28"Mul

48
5051Sub_29"Sub
*
5152
Softmax_30"Softmax*
axis�
153 Constant_31"Constant*
value*J���3�

42
5354Add_32"Add

5455Log_33"Log
156 Constant_34"Constant*
value*J���3�

52
5657Add_35"Add

5758Log_36"Log
:
55
58discrete_actions Concat_37"Concat*
axis�
0
55
58action Concat_38"Concat*
axis�
< memory_size Constant_39"Constant*
value*
J�torch-jit-export*OB3action_model._discrete_distribution.branches.0.biasJ��� ��;ۺ���#�;�U<*��B5action_model._discrete_distribution.branches.0.weightJ�`�����=�}{<�'0���_];�{�:��*�����鼦G <>�ջ���� �ܗ��P��C�_<Yj����ֺǟ����;��w���ʼr�O��y�<���e��;��케X�<Bhļ8d�;�+<����滯����d���V�ê�<Vp��s ����;�^6�"X�|��G;D<��4�����kB�;�5k���$=����
e<�V��<�D;<�[^;d=*��r����m<13�]m߼}5[�v������� ��֝<��ϼ�Jռ��<�]�����<����C)�eж��R�n��3G<̲X�Lz׼$uǻ���<�5n��;λ5�;����q��T��������94׼&�����t!�<Y��==F���;B>���6���x��{�:��뺁S���%�뼛�=�,�<�༘�ۼ&��$����v�;@�:��D<:c��ŗ��?Ĝ<� ���� �::AԼW_*���6�>��o��:V�߼��������<�%�hD����=<+-�=�ۄ��G=ͣ<| =��=��= �����v�<� �=���==Ͻ�Wy�݆ʼ�׻��=UbI=���=`)�<�Ѡ��5���{�<�҉=��J=��(�I�E=�of���=OK=��q;��p���g�t��=��?=�8o��K�<[k�;fs �RT��]�׉c<s���R��]����=����> =����y1 ���м�`D=��
=vU��A(=AQ�=ԚJ= ���!��� >h�ἐlۼEॽ�a)=ڒ�����<wؘ=����f�p0�<��5=� h��Ț�K�������� =|�<�!�=�
&�~6�=mO����j<|Tg�#f|=��(�4�=�.�#<�7[>���D�<#낽:�����˼ӭ<qq��}�����=����+Դ�6:��i7�f$5=(P;�S< �K�{�=�w���h�W]����=_jg�%y=�V=L+<���<�Ӏ=�������<z=迼=+�=�<�k�����=�R��d˃�MRu��y�T��<����k�;<罻���<^ͼg2<�q���:t�;����&�<{��<C2?�����m��^�Sc��*���H��������<2�U���k��R�'\3<Q�H=B;��伓�H��b<U��P���`��,�<�)
�if��o"�<��Ҽr3�:��ֻ��f<���:���=<?�=�R���9�;p*�<]Y.���������4d�3r�G������۬���`��\�0<����>=#��;= �|<��K�X�Ir4�sd¼�*<��'c=�)�<G<7��<�>���o=�,���=jo'�po�<#��^v< ��;;��<�
6��`e�l�<oJ�?��<%��<c���pIo=g���>���m�<���;������<�/�eG+�D�J=d
<�.{<�z¼�ؼ���`�<~��<$'����^� ���;�5�������̼���<rT`�D�|;r\<R2��@A$���>��0ͻځ���1�,��;�B=�F<��
�;��=�#���굼��;ת=z|`= �=��»�U����F=�ʊ��m�=�$�<C�H�2�p���M=��qC��}���i��Bک<֣?�DH<�S���r6���o�H��=v�׽^����(m�B
�=�Pټꧽ�^�{��=���1�[=O��=�+�=�O�=��e<'(6�2��;����m�<j��=H��<Yf�=���=�i^=J=� ω���9:��l�<�d�=�-�=Jwr��K����=Xy����}=����A�=(�p=�"��J꒽���<����HЍ��҄=r�>��=���=���=M�=�M���=(���8s=�;��=E�����=)���2Ľ�]e=T�
��|=G��=}���C�<�<�=�懽�\ >�%=X ��gAN=�}��]��Ǡa=�?<��S<��<)'f<}�x<r�'=s ==�ɺ�@l��0X�#���ׄ4��W���á=ө�����=��n<r�N=�S0����_=����r,�$w�=߹�; �_��j��ܛ��7�^=[�-<d���A{ǽI8��[�P�][�=V=�<�Ґ�)�A��~���/�V@>=�ʪ=< �,3o=��:����,�=Be�=��׼-V��>H=��)= � ��H�#z�;�U<ӌ=c���QҦ=��*�p�h=`i*�Q�=�փ<?+���ݎ��Ô<%�<t�4=*Uq=`,�=ߢ������nR��t�<96�<{���U@�:i0"=��=���=� `�*ڽ����i�q=�Ƽ��Q�;o�=�!��C6=����A������`X�=�H=��=2D�=6:���u�d���YF̼�,��)VŽ�!ǽHI1�`Nz�z�I��~:=f��z��n�"�e>:���=v���ܑ�
��􎔽|%�=8�=[ap���x=��|��� =TZ���̠�ͱ�=��=��8�J|��?�]�<))k="T��0o��/���q�=$=N�=��C=�E�=�f=���T=Uj>�� ���ཐ&��� μsb����==rk��J��*CB3action_model._discrete_distribution.branches.1.biasJЕ?�Е?<*��B5action_model._discrete_distribution.branches.1.weightJ����f�<�m����;øP<��<��;�x����;�#����<��<1�� �軝
���Ԗ<�4<�� ��( ����;�V��"}{<j�~��ze���A=s���,<C ��G"=��?�mu<Q~�<NU�<a���\�� (?<���;��޹Q?;��ڼ��/<Y7N;��~��|�����<bE�;4E��$D���D��ɰ<�6��j�����;�������!�;o*<=��������3k�<䍖;ӑ;��v<{����~<������#;F�������":��+5;�/&��<� <W�x<�^Y<Y��FOm<�J�<�� �~�=�ą��nѻWoϹ6xl:%�<��<�꼻=��<+��<�Z����_<1����0&߼L�G��_��(�l��Q�<<1'���!��+�����<�oǼ\�;ל�;�!�f_�����;Vx<��;�L�:9)�<%Z�;�&��Ѡ<D�r;D[漨�F<���#~�<�r�;��$<?���Mژ�-*���.�;[�?��;���<���5)�T`Ѽ]�<Jd< ��;e�ü������W<m��;&2+�K����,�8��`ѱ� X�;�\߻Ӱ�;[�;�J�<�<���*�9s7�� ������L�s��A�ټ/AѼ���<���;���˷�L��P�;�ܫ<��Z�<O��:$<�.W;����z�<����e�A�;��� R��c6z<��X<�����"; �!<)/�0>1<������x<��<�/���޻j�:�+����;�懼�z/=_<Z�<p+Լ��]<������$>�:����a��+�<�B�;,���Q�W�@<f��0��;�X��҄���w�򻥼ɯ�� �<����kn��^X��{��E�<�==�^�<@x�<v��9r����P����U<�5�<Rސ<G��� =�ja;b ���.<�O�<� ;������U�;���8򰼘6 =�k��i���y�<[?���;8J��]j����`�<���<U�<*Baction_output_shapeJ�@*(Bdiscrete_action_output_shapeJ�@*!Bis_continuous_controlJ*��B-network_body.linear_encoder.seq_layers.0.biasJ�B�#=ŌE=��<�$c=�U=g�1<��V=C�=��9=h�=Űn��N <C� =�r=B.K=g袺~G)=t–<�!�;_z%;T < �Y��G=���<��*�cf;���<�S:<�["=�Z�<�N�<��$=`��<ɷ�<; �<�#t<���;�k�� %#=!A=��H<^b�<l�ݻ�=�a%<�R�<��<�����3=(�<R@�Y�*<ɨ1<tDH;e[�< �< >�<�'�<��=�'�;�hM<��&=��Z<I��<ٳ� �=��;� #=�&�<� �<�����x�k�>=��<=�>�<�~Q<.�<���:Nj�<�j<� �<>��<���<c�=oC=�˻��=E\�@2.<��;97=�&J��W1<PÕ<���;��<_j�;+!=U��<��<�8�<>�=���<7�<1<Z2+<��C<|�=<�}}<�6���m�<��};#��<9��<l ;�=��;i�=��q<9�$<�&=���<O�H<G�=&�p<�_=>�;=���;*���oB/network_body.linear_encoder.seq_layers.0.weightJ��s5>�J)�I��@G&=c��=1��=�] �Y��=�����5;�3/���A=�����h�<H�=���#tܼ��,�S�]�����ٮ<IM<�ݜ=E��_L�<�ཽ�y���?>Kis�\h7<������T>q�����=��}<�yg>B��<��=.�dž��W#����= &�=� �<��̽=8��9c�<R�T>�y�=�\h>��[���p�P��=�(H>X�,>�ܑ=�=�M4>� >��;T��� ��> �J�x��=dX>I�����=<� >�����=_0�>�2m�{f�@
P�I��đ���o=.�;;?#=��?����=�.�=��.= ��<�(�<с/�gOļ#* ��e�=���ĺY=����mtE>��]=A��=%�e==��<}ξ��Ž��C>�M>��ȼ�ɽx��� 4>H6&>��r��2>��ʼ��h�<�f>1��;>�AF>~cͼ-8,>�����<'@S�(��!��<�<=@�ۼ��=�hN<Cԗ�Wx㼭�;=�A=���= ˍ����>�*�=�8P�t��F�=�s����=�ގ�F���C��<W�(=�k�=2��z�>ʁ�<�
/���4=�y>�*�T���4w=��>Pd�g�W��-���!��B�">��=�k۽�Q�=(�l��6�=������=��ݽ-�(>�†����=k*��������нj�b�D!�'Ƨ���=%�%�l񘽮�/>o㜼YS��q#=�F�=&c<��\=���0`�=6�>B�#�SX<>ؽ�s��0/>�zV=�Ǒ�WJ�=���=+�R=��=yuʽ���={S�>L,��$[4�jy;�+�5����>��1���5>D��:�\�<CBZ=����R��)����8>w���q��?k�=����l ��!e��n�0A=h{�N�>5I=��[=�
�8/�=@�w=]VY=[Q;Oo�=r>n=0���$�='Љ�Jp��e�߽��˼�q�<���Ch>#��/>�jL<�2׽�����0>sC�=�?�=�̽KK�<�� �A5>�����E>@�;a��;e��<j�=�6�<���=�`V=_��*%�<�ټ=�=��%=��}=��l>�;d= �E��=��&�ས8>0��=2� �����t�]=� ��������=������>�v���\y=�>��Y>��/��<h=L� ��3�;�x=:MC=ޥF>k ����d>����� �Ѥ{<��=��H� �+��o:>���=ޝ���{��
�<;�R>����cV>�
�=�vV=�2z<�Wi��?��">�0���e>=� ��@�=_��<t�We �ݑ�=F5��i��[' >:�G����<;F>����=˯e<#�!�ʊ,N�"r�>�ev��'�=� ����8١<T��=���>�����[=5�|����=��=+-��T �΢V��?�=��b�.p<wm>�|W>F�6=M�L�c>���:���=R���?/f>DE�=m�E����=�L=��=gظ����=������L>0D�=�q[��{��'>�%^>xX����@=w)�f�]�($>�=ֽr;�=D���n>2}=˒�����=��P<�nV>@2�(�W����<��4� J<��ľS@�=���;�Ӈ>�I>���<��=B�&�7�F>
�����6�=�_������N8�=� �>�ԗ=����\�>H�;=�Z���h�=V>������6��=%�<���>)��=6X�ge�=�7��Z��=�<=���=0XE��"�_�
�����_I��w~+;���N��>w��*/���/�&�� �=�$>���=�f*������n\���Ͻ�Y'>D�9>��>/�������wb�=lW�= lj��y�< %+>?eA=��>Դ=�0M�~��<��->;^ջ4�����2�q9w�>�g���c��OR�'�>�Gӽ��=���=m���8 �b���`>�f:�g�!=j,Q���;;Q3=��>
��`^�`́<e�>ޕ�<�<�PK��P�< p�=��; �����(�J����=̭�'�=8��<�9住0����>�����s�铂��!�=�t�=9��=&~˽�(���0>����?�6< ��=�$����/��=b�������4n= lY������W>t "�J(�=�F�=>7Q�Ā=Hot��R��?(>KD�=��=6���!���7�>+<���yR�5�<t�=��E>Q�i=�i�;}���1�y=�ɘ�H�=��=ʈ�<��O>���Zz�=JW�M��q�P>sٝ=��;��B=S!b>�_(�Y�Z= G�=8�]=�Qa�q ���H<}�ڼ��K=l��=�N�=�`m;���=t��=���� �@=�;�=KQ��u/���9>-֍>���=�����&G=#Ҡ�f(�~}O<���=�8�����;h>����:5H�<>�=������I�������覽���:���r�=>��=��*>����>l�>���=I�8=��Z�bw����V�k�����X������<4菽T�X�Y��=���= ��;��𽗳�=e��Ĥw=�䅽h'��1��<�;��h`+��4��� J��N����=����A��<���=�=$cq9rkże�:>#�E=�D>�Є=���<��;=�ٮ<Ͼ����'=� �=w�9����=�}�<ĭf=�U>�-1��~�=���="�������ż��.>X�׽;2_��É;�7�;ߍ�=���<�v�<�=rΚ<x
�=�Q�=Ԍ��my=��A<�蛽OI�;tni=ˉR>�թ�<��<ϖ�<d��0[˻-�[=�}����м�D6>��G�7�S=�b�<�����I��=VJ>�q�=��l�α>{c�������=C�$��%���>j�d���˼�^=R�q=;3=��k���<�fK=��ڽG�&=���:߭����=8�轡��=S��=�I���F�=`��>T�>�G;��ZY;>��=U ѽE����[>a ��6T=�y@��0���M;&73>Z֏=�'� ���9ގ=_r^>7J�]d�=?yt>�?>>O��>F;�H_)��C�;x��r�Ǽ/��=?��<p�=�!ǻ�� �q��<��=� >�4=��;Kec=�bq>.b>:���?���6E=��P<O�I=�������=��^=9�=p暽���=��>�#��>>�� �{>Ws\�Ok�������=�?= �>Ҥo<<�=�-�<��=YlȽ��U=�>D�'�>@�>��ӽ�����[>?������W���\J���E�h�m=昝=�J�<��a<h�l�5��=A�n=MD�pn�="���0'Ӽ�)I=��?={P�=q�Ƚ>�+=>�=r\�=E&>;>s�S>�k�=�V�,���V8���W>�߽��; R�>�F2�$:=6���L����"t�MЊ�o� ��i">�r�<��=�ok���X>���=��O>WH ��W��厼�L�=܇���l�=�Q�R{)>j{��V�z����'8�=��O�� �=WV9>��(= ]J�_==>�zE=i,�=���=��~��>�V0>���=ړU�D%>d-f���>^�����;�Hl��ߚ<����s�A;F�Ǽ����`Z�@�b��B<�Z����=��G;)w>N����>>���� Y��[X����=z��=d^�<�wB>K�=ph� =轋��8��=. z==T����=�v�=�́>S 6=��W���z���f=�G��$F�Z1�=�� =$y�<��%�)�ν�ȍ>�د���=�d=������=�� >�غ��� ����>z�����W��:=���<���=yW/�[�d�ƒR���F����Fƒ�Q4�= 2=�B>���=�ʳ�`�=n> ���b3:>a�d����=€!>��"������J<bF<�ţ=|B���fҽ�<�*�=��]�J.�=]E�=Ґ �E,<�u^���M�?�=��7���e��� ���#=n����e��>D��=��;a,�=���r0�<��=Y䣽H���ӏ=��==p^�]礽Ko/>��ĽO�=1�>Gg���$��|�<���=Z� >7<׎<� �����=�6s�� �<�H��D'�<Ӯ�=�<�r���pZv=7Ĝ=�����1���:� =۱�����="߆=�C�<y����e�=����W�y<�p���b.>]�нC�&>޴z=lk����=�1>^��>Z�p���'���=��:=1~߽ԁ��]� >��4=Ɋ��qFa>�Ž�����Y� ��:�e� ����=��鼀�"����~x޼�}ڽҸ�=ڹ'>�+= �ӽj.���R�=�Z˽TW�{@e=y�|V$���=��>�c��o^����=r�G���2AV��W=G���ǰ<)�Q>�Ҧ=�^�=M�'>t����N=򶩸$�3>��q���=3ei�x�-�1 >�A�<su併 ;=mUٽ���<4�:�e��:(�<>׿ڼ�`9��~����v�,�:,��1ҽbC��2P�������=i���m"�x >�a�9��x���N5�)X�<%>n�<�'�ny��N>��=Z%���Ƚ�>�S=����%29=���=K�2�f{�Ƽ�=s)�=)�
��̑��.�=+ =y8p�n-#>�d������$ʠ={ >fi>�.=����$�S=~I)���սp��=��-��"������E�B�#@t=V��}F��>}杼�����<��w���m� �<B��=u�ݻ�#;Δ'=M���*¼N�=���<H��O'�=����y� ��>��-%�=��:���`����=�H*�ײ�<����Q22=�p����=�i���7_�J�i�8Zi=���1̽}b��_��=�妼o�2>t��<P�f=2�û.를��c<��4�V%���>Z�Z>-�<��%=�V��u(D>�+�<[��[6�]�\�� *�,�y=Ѡ�F����T�k�&��ʥ=�����=��<�>v�X�8�<�2H��0�q�=�޺=:z-�'����=pn�=�+�=�\8�/�p=x�ȼq�����=v��=M ���&>���<kn�=ac:��`$=�D=š黎u>ܺ#�(���� >��> Qм"g��}��< �H�x�i=xn.�\�=�L�C����>��@ܽЃ���޽�hy=#^b=�NN=��l=9>��l��a޻�)=��]=���<��ٽ�`=> �=��Ľ��>L��<'�½�����jv=|(Q��c>:���)>�.��`���E�<kϸ=�q��L,�󏙽���=���{ə=�$Ͻ��9�4��� M=k�=��<f*��3@��4>�O)��1r��`�<7�=r���� >ن�<*&=�=4pY>�9@�J����>���n鼟��=�=j�<j��''=/��`[��γ'>�@���X>�)�԰�=BH�<y,��4q=V >:fg�M���F�>G�<s7=�5����=�~����������ID=���<Si(>�Y>���M_.>z�>.|���>x���t =��ĽϜO���t�
}=�>#>$>���|�=��3>||�=��{�ь�<HP���݀<6���轎>;=N5���������=�G=��=C⧾n�>��|=!�.>���=n/����=I�5> ����m��q���g<��C�Y��=ݑy�Gq,=�lν8S����=>2ơ� �=�÷= �ڽgi�ˎ�=�짽1kh=�O2>�z��-�< ��=�=�Q�>�e�==�q�m۽�s����8����<�r���,=f�޽1@ >S���Ƙ�<rf=l#����=�Y7��(�ಧ=� /=�Y=�O=}�q<�[�9w��=�K�=^6$�IY,= �<ɟ&>�`���3ܽ�������=�}r=�0=��ѽ������ս^' >�:= ��;�쇽�ǽǕԽ��=V��<�vL>��:k��=P"f>��� L=��?= �=o*�=F�E��O���>̟����%>�#��by3>�<�=��>Cݸ�a���od���F��\�����>A�=��X>D�=�]����0�e R�A�仩�K�X�(�cS=-S��]G�=X�ս��]� �>DVͽ�[���ּ#g9��qR>ھ?>o������<.� ����%=Dݻ=z�J�V�8>s:�������=�Zm����=�$�=�Zľy����#�c�=U9�=S��=��=_p9<�{D;d ��ν�I��t�=/Kr>c6�=y��=���=ɡ��:�%��<[�>>���<�o���R$��=P��jݪ;V�U>�9
����<�Xp���U=U��
}����琐=BO�=�+�:$K�<�V>�ܼ��}>?�<b$�<��3=�O=��ͼ%Џ;[��=�h�o_c�����CgI=� ׽7��=��=��=�%<�1�=@�=o=
��;�ݔ>/�G=ɛ�"&>�m]�3w?<�5>��p��5<\�|=���=H�>�ͳ�
�F�2�)>|�>4��=��E<��'>N�ڽv��=g)>�l[=��F<�8"���#=!�>DY�=�� =>��=W��;� μ�8�<�����н� �=����-i'�n����N � �>��;��D��Iǻd�<>3og�+"]=�늽vY�b��=K� <��G=��&�νv��=�h����>��<ˑ�=�v9��RM>�i��K�ȼ���<�3A��Bt��a�T|�88_���ܼf*�=�ځ��/:���;B1ܽn��=A�*�� �<����o
F<�P���]=OY�=cC>!+8�������2>���<��߼��U�������6��Pۼ�Լ/=�g���=yf��O��<G(�=
�{=��T;��)�ZD5�a����M=o=���=3\Ͻ����\z��x��9
2:>ʨ@=h��<R��=P޽���4��>�(�/�f�If�=/�n��½Z���������t ���e8�i�E=��̽f����v���%=�d>��<z>.����T��k�ֽ[���&�>Q��6�ý�>܃�<�{<7�Z<��e=RS=���<�|<>w�=��>1,������h�=q,��6�w���=B���~�>Β�.�7��̄�^����Ī���뽎<E��L5��y�=.����=�_պJ^6<!>��b<ܕ�=S�O����=g�Q>���PvѽO�=`��u�>Ub�=�H_=��<UW�9g�꽳@>Z�>:��y\>��7$U�(:=)�<X�=uN�=��=lOa��8=���=��{Z��Wi�>s�=�r�����6�<w��=�Ў=�Y�=~Fu�L��3���H<)�����X��!�I�y=Αu=�����
>sy> 2�=��a>ٖ=Q�:?a=s���gi=x��<����9�=-F��>b��==����ɼd��=����q�V��`��=��=���>��<X1�;�Y��ܽ� �=t��<�y�id��e��cr��hp�9��!�C��<�����'�Sv�~=�1�A��=;n�=If�^{F=��=�i =g��``=Ͷ��~t�<���u�����b���(��l\ >�xG�����
]��u��3���H󶼬&>.�=���=����\��=�l=cG>?V>���R�>�;Ľ�H=�P<Mc�=���)� >a��9;���+v=XCO�}��%��=θ�:\r�=�X�<�=�F=�e�=t���=䓽�V~=gм��> ,�=�:�������<���<���=�ŽK��:A߽YJt=[�~���=h��=��d>��>8י�4�<=�0��V��u�=��=@�����=�jнQ'�<�yy>��=a��=��w>j��w>
=J�����ӽ��J�υ�=���=W9Y����;?+"=��>�=����>y<�=��=�g=~��=$w�0�==%��<肝>
�=��ֽͰ���ҽ����#��=籤��C�=����t,]<@m>En�H�S>g%�;��#�(�d�q�O�l����],<U�A=�!��x��<�a@>�=,=��?=�S=�Fl=ca3�b�.��%���86�.�D>Zwc�-bL=��<��R�gx߽G�<�໼��;�i����~>`����L='>�bԼRR�=7Ȩ��l�=�b�
�%����Lv����=|�м�M2>�Ei��z���H>Po��fP4>�f���R>JJ��} h>�����y�k�=��<�o,>6ڴ<�c�=��,>?E�D�ƽ7M��K��=
o���v�;S5�=��0�v>�=�->�c���� >��e_���=d�=�<���c��W��� �:aϽF <��=�8K���=�o���YP���>gZ��j�=\��=����)3�Ie#��L=����J�y�Խ{"�=�]�<8^���?=i<��� ���/�=�Q ��=j���B<������:>���=��=i<��j��=q��=#�޼���%v�=kq���.�z1x�+zg=��=��,���ؼ#B���)���7Q>o,�=Hʕ=r�z=��<���=q�̻�|=r�����y@=�]�=�j%��c7����=U���=i��=��5����Q��">���=� ��T��=\<�I�"�~/��K[ϽR.��=Ͻ������<� ���]-��і�{���� >���=����/��<kp��E�K�����N �1d׽\�� +>�ܻ����=�A�x&������Mм����p�iT����{����=0g����=+�׼:�=񟽌Fs=vc�;��=���{+F=�9E>�g=g@�鬿=�<>����=x��Q�<zl>��=u5�����=�;=_;c�s�%�� �(e�������L���>{8>�\�����
)e:�׌�Z��=%��=f �;��⽺�
=�z����
=�޽�����5�=w¥�& ���V�Nm���*>%��=gE5=#M�;�i>�½H>Z ����� ���t0�>�>F-r<q�=�g�=5iA�4���
ؙ�a�>�i)��ϽE��<���%N��5>c('<�X<� $=���=G�����=�o
=�����'� )> ���.�V��=L ��`�)�VV뽔FT>�h�uUX�Z��<�� =��#=(ѵ=Q���s�l��/S<�w�֘����,>� =`Լ�W�>�r���8�����=��*=��*�;>N)�|��;ȅ�=*L��fh�����t�^>�D�=��������>N=ZP�<k|�=ּ�=�:=�<>�yZ��$�;ɤ뽤��=Pˊ=�-t;y 7�Mb�<�l����>4P�Wtw�e����W���S�=}���Z�����r�=%������=P��<5ۭ<A�̼�Yh>(�< �%�E�]=�$@=x;�=Mi���=g�0=�a�=%� �e�V����=� g�ۺ<pJ�qi�=��߹_>G��=0�6>��e����<NH��.�P<y�=<��՟�=�ҝ��%����g<�w1=��=aUϽ�!��I ��O�U��;������=uM�=�>,_<���=���=��h��c��n���̒�����$
��Y�=�l�u\q<��x=o�><��?
�=]�=RyP�MG�=�t��2����=5�e>��=Z��bA(=�YH� �2>�ʘ=sн�;$��d�=�d��+c}� �~>rZ��X^g�вR��!>�8˽ ;>?
���^=� ;�S<<Ӊ��ϼ���=����W��=��<q���.]>*=���=3 �ΰ켦�~=dr�*�>R:�<�� =�Y��n@>q�%���m�ӊ�;7A�<r=�d(�Rr>f���ͼ���= �=P7>�O8�|�;e����*��a x��/ӽ^_/=$�����Լ0t>��r���=��;��a=9(��M�*��~��JK���z���<G�I=
�>��0�}��=.�����>���V*=,��T3�=M@O=�}>�>�t =.�D>�松 -���8ý�)����н��=e���}�=�0�?��>\y���ކ�x��=���=�s��_���*<������`��->Vq�� �<9�=��z�;�cݻw���[> >�,w>sa�=��H��>�P�=~.����=O�=��]�&Bb=�g><���,6��^�<>%4O���=4��=|6 >�x >���=���;��o>�=�R_����=oZ���ݤ=��V�_J�K>��=\֜�� =n��=b���պ�=��H�>=�Ҝ<G>�V��7.���J;��:���S>�½ՠ==-�6�[ >%"�=1�佦h->��I=~^׽ux=`�=��>���=���k.�=��?9�<�`��Zj&>o���(��=J@D�k��<��W=���>Lx�=]��=e˜�Ң+�u�罫��=8�>��N�ܷA�O$�w�F�H��=rc=���=y��=�)e����=��<P �
�����b>J ��=�{��͌��H=�� � M�a&>PLj�*5��Q]��������=�w���z�LJ�=������>������u=���>�ܽ��=i�ʽ�햽pW>����X|���R=��<�ϗ=f�=U���Z[�=a��ӓ��������=�` = "%>��<�����> ��^'>�(>)��=[6��\bW=�$�:��%���9> ���!>*��=�a�@<H=��h<����%��,h�;Is<�ф=�`��w��=F��<�[�?���i˽�d2���X>s�y=��->j]�=]��=Ԅ�b��=X��=X븺[<��Ĭ��L.�k�=�q5�Q��=�����sx�f<��cK�=`xK�y��<j�.</X/� c���Hּ�Z�=Ǣ���y�� >R�����2����;�k�:����r�h���>�.�=�J�=t���[��_������<��I=��=��Ͻ�h���)�MW4>%e ����<c�0��j����(>UE��͠'�p��;�l�J��=Ǎ���?�:�>D�+�� �;#\q=���=��[>�z=�%>b6 > �n�����*��g�Q=���=�]w�r�(��>-,=� �=\�����=���=�9�=ͼ��ҥ����R�R<���=�;�=��߽�������<-�`��>2$�=����}��=1�>1�C�%I���ͼ�w�0�e�����f�=�{A��
���]
�B�&>J&ƾ��`=8^�=�===��9�X!=�铺n�(<�ۉ�m�^��=
��_D[������mq<�y���ѿ=�!�S��=��Ӽ�t>>��� ���&&>�Q/ ;+�ռʞH�F$�=G�7>B'�<�F�= �; <�����!��>�s��&_=R�<�⫼�>e̮=Ŷ�<�mm=ct=(��=��(�� �<�@�Ae���䎽Z�>E< V�;A}���>pj=��#�)�����o��Y
�s�}�����>�=��=�����zw>�ܼ�T$>oʔ�#�=n��<����4>��=�7>�0+>h\?>��w=�ڽ�� >�2��؎|=���Rzнv)���9�S|=�����1`�D3D>&!���� =�Q=���<�OD>S�:�\!'=^�>&��<M�D=ƚ�����=�i�=�
�=2���'���v;�Ȇ=�e�<��0=I��t5h� ֽ��ü&��n�=L�=�'Խ����9)=�� ��䯽��e=���=q|#>Z�F=� u�"vֽR��<��<#�ӽ��>�I�=�i=�Z>� �=��\����=�z�=K�[���ֽ��<��<<�S:�M��<t��=s��C�I=ƒ��X�=�D1� �=�=<�K= �Խ;1.>؍��~�>Xe��|r�=�E�<������=:=�n������ia=���<���:=mE��Sq=r��;k>�4�=1BM�y�b��=��3�I�M�z�ʽ[��=� �<� �;y��=/��=��¼)�r>e�߽�&�<�,k�m�V���Y��[�<�@���=�����
>���~m�=���=�yּ�\�=����ᆽP�=�>���=�s=�c���:>���<j@�>p}�=j�Ƽ�sO�/�� a�=1��t_�������Z>��#>�>+�+>�ۗ������=2�>��h���~= ̈��< >����X<�@�=����p*��:�<�>���=X�Y�s��='@�>d7����>e>� �n$O>k��> �=Np=��U���<D�=X}Ž��l�okQ��<">���<x��=��e=���=��>���*�G������U��0���=MѼ{� =�W��^.�=3�=j�=�������+=5��;S~>�[ͼ놾=K>��>���<g�@<Ӡ�=BO�����=; �����{Ҽ�Z����=���=�2�>裏�����|g8�өw=+0�uc�|��=aNX=���� yr>�<�;��=,%���ji������H��HH�5:$���4=&�}��=X�����=���������=�f�=v����=%ܛ=�1I�� ��9f���*u>���<n��>m�=A��fU$��ļ�̻�<�)=p�M><�J=%#���6��4�ǽ Lj���)�奊> o��Xd�;�] �V>������[{�=�I��b̽2�>�<#����֦�DDx>m�>=
z<0(E�ʄ�<&T�<�D(=��Ͻ�S�=i|\���:���w=VD�OŢ=���=��ټ����5�漢�>#�=���=��-� =�oS=_ >�c="�=Ƕ�=T][>T�(=Q�8Ƽ��<P ��L�=�8�>��=���X�\���漙5�=�*��,���\=>^�m@>L0E>� -����=C��>Ї�;�d�[q���f<g$@� �>u\����>UTҼx�`�6�=��=���]:�ލ.>��J�t����>��Ҽu�v=d�>��T�,`�=���> z�=rE������O�4�s<^�_.p;���ýL�n55<���=��;���P;�(�O�=��y<��-;Z��<H��<�$:>�H�����
���6u<%D�[��=�=���.(��}�W>]ԅ�.��<QAV��9��@�9��42>�>G�L��Nڽ��%���6�Jք;�����=V��F�@�}����iO=bV������c_=�tI��ƣ=��tdh<B/�<����\����:=r���.��0f�=g�d=|`>e[=贍;�9f�D/k� ����$�=���=��=�@V�n�6=�H�=���>� >�e�3�=i�R>J���漯p;=�R��$Ž�I���'T���X=�1b�Kc_>M��;� 1��!>u,�>ASF�)�ļ�-Ƚ�C>Z) >;�&=�\ ��~���ϽWԈ���'��*�=�F=���>(�=�c{���,���lx=ӂ���9�=�����4 =�� >��< ަ������=>�i>�?\=�S�=���< b=�LW=�I5�s���!x�^�=>|潧j�[���]O�.�<K �=����揟<���<� �a &� �˺8���������<,C�HD�=Q��=�,���=�p�<�=<;=j�wR�=�?=���=�L7>��!�p~�m>��\>q4Y�������<̈́����<���z���>�����<�w�7�8إ��3 ��>J� ��5��+��=�c{�?����ݽls��`��= ���=�.>��<�q�e�w�K���T�3�H�D=�_P=��|�������>[N�<t�=���!
�=���=6T�=S�;l�Y=_,?>�Ž��;�j =�8߼���&�I����=�9#>��[>�u>�R�>TT+=o3��U��l�<e����(�;�k����޽����)᥽*��=����s\�=hJ�>��#>,}�>^k�,�ں�K2=�Y,>��=��f�p���Z[>ƅ�-�.<+��=W��<=���=D ���׳�(M�X�Խ���=��;��=F�<Q9P�u%����=E��>�����"=�ܼ�5J=š>P5�<U��=�5�b�E>驷=yn<\��=�—� �=�RνoT>��_�=\��?�=6��=��T>_�W=�g���� I>v����=����*>��^��^|<�4>'Ӣ=�`=?\?�~ƽ7�="�= T�}8����C_!>���= �T�1��= s<っ�e?�=w
Ӽlp��)���(6w�)���o^C��U=���u�)>9`�s���AԽ�+>(R9�b�½�Y�='1���0�>K(>
����}�=�1>�o�=�\>z�Ժ�<��0w=�JR��Zǽr9��#+�<.���\��=mL�ߦ�[��'4>�!�=�Џ�U�|���Z=w o��n���nv����=����u�=�)=#%޽��𻨏T>.��<����_��=@t��R��K��c�b>�9�=ٌ�=~qE>w�����;��;A>�V= �_�>�L>�^���,���@�6Ի ������=�^�=���=�R����`�:o��U-��p��}�Lo$>!�>��>����g�=�*�=pE�<qD.�4����L=��&=}�v��O=�_�&�!����#;>h�u=�T�^�>t\0��1=�!���t�=su>>��;��Լ���=@��1��=�P�=�h=��!=�M�;��#�5����gI���id���}�����a�8�.���m�j����’�
�=+�\=^�o=���>=�S>5q����z�<���=nV�I�?>�.W��E��j>7֫��\������8���D�>�䗼ԗ<�e3��^�<l�j�Q�ս'E�i�����;=�^�=,�*>�=��I<0�S=��ֽI��=���=�A'��c/;D�n>Y�>)���.�k=MA�=��<�&��Ր=J�۽� >sD>������&<��)���.�qv�=x:,���=D�;���θ�Y[Z=�>��-=�\>T,��tͽ�� ����=��s�T��;]�0=K�T=��9���>eRڽg�=�Nj� XB>c/�=-��:y����/��<����g�i=����'=��<���=�]���m�lW,����=BF��\<=�� �&LA��Cr�514>F�P�q�CU&=��b�c�^>�ǎ��b��KVb�)�>��(=���=�<.�=OV�����v/=�X�=gg)<^.�=Ŧ����<��=!�j<a|�>Q��< �=:&*>p��+���E2>}�=�ӌ��ֽ�5<��ս�[=e� > =ݬ9��EG�I|=�3y=.�л��=��>�* �,ɼ���~#��ܧ ����<��=^�%��B^=�\�e�j�=��9�La��Q��OC�<�a�=�7$:>.<�ü=���<8S�����<9���?4�����t��=M5��9F=H[� >�8;i9�<��=�vH��i���V=�Z�� �=~-�=+������:E�V��,�=1R�=81��/Pͻr2�2(��Ee=x���
����ʽ �D<���>͗�=%}B�I�.> >o٦�rp<~����G>� ��->$}�;���Z�<�a�V��=�.t�n+/����Zj=w����`!>��=}}��J:=�T�<���=&����q?:<�I�#놽��^=� c�*k{�Cح=FU ���>���<6国.��=a�%�7|>-�5=���� ��]=q��<��<K�>S�6>a���EW�f�X�LBP���&�4Ʒ����=��= C;;�&�9y���R\>���=jɽ�`T>U�5>�����=���=�>=��ؽ�f <l뒼����p��;��p��4�=���>���Z�=|�Z���=���=@-q����2� �U �<��׽'�=��0��1�,=���;�m�<���=:A>�:�=��2>#�_>��=������=_��=�N%<��p=K�J��� =A>׽%B5��_�=O�ݽ��V�f��=��=�N6<{�F=%�8� m�=��U>���=�C޽��:_�j��?<1� �%O(�s�|>���=�h �"x">�P4��@ҽ�d >cu��M?>3O3=��\��g>A�=e64>BW=Y�����=�J=T#�n:�=y� =�8�<&�B=&M�="�&=">��\>q^� �=='<��p��V�=$#�����<�D� ,�<�ޛ�,}W=�� >��<cl3=�>�P>^����1���#--�sKʽXc�*�<S�>3��<L�`=r�=<xM>8<��8nK�7�W=Jq�>M�f=E/P=K� =H�<0=,��t=޾��Wm<,�ɽ�i ��l)>�8}�� ���7��!�>p�#<��W>�=���������<C�U=ݤ> �����=�b��G�+=�[�=/B>ت����c>�s(<E��<��=� ���� �7ճ���-=��$���%���� 9_�����v��=�������j] >U�>>Ҳ2��>�E= �x>��= �d��߷=M;��`��dN�;=�0�T6��2w��~�=�o��ij��4.<�G=Q7t=�h=>���=� ~=�$��=��缱��>� >��>����>=�>,�]�*n��"聽�`I<:�<S2�= ��>���k>*BO>�1�;���=��">Ь�=��^������⽱e�<��t��2;>��XH<����&�$��2&�)�[>���=��μ�Ù�4�1=XRȼ$����K�*�����p��,��r�K��E�=��K<�[�����=[�m�ֳ���_F=R��=������/��x�=r�L>oxҽs8� �?<]L���U=X>I<`�s<c�����;��ҽ}�:>)�I<k����<ˏ��Q>�d<�
��uԽ�Z�=(�=��?��� ���C���7=�M<�ַ�f��Y�<Pݢ�& �<T�J�(�ܢ;�N�8>��ν��&�j�?=4��<qǽpn >y������=� >�"w���=f��@g\<��=�Pm>��_��J�;���=;&�=.�k�aʃ<z� >�M8=������Hu�����܁��ژ=)n`>�-�8ڀ=0O�d"<�0ļ9L�=����ã�myH=Ղ>��4��N<��k����=��7�ߑ��o���5�<! ��s��^(����>�a���ؐ�Gf�=� �=S�4>� �:�窽a^l���C=�F0��� =ˍ�=�>&1����t>�� ���P=A��=�ߚ<u$C��y��;}��%�B�6}��CC�����i���8[� �ج�s5.=���=��=�q���f�<,_(>�έ�f��=��4=ジ;�ּ�䁽�r���=�#��}�=�V�徊��g�=Mݐ=�=�2>�U�=Xۻ��=C��ݜ;�:>)!����> ��/z>M� >!��<;����Z���мeu6���c��̅��[������&��x�>>���=NjU��,ǻ�܅���-�y��;�|��T����_������ ��v��=�����E=�S6���>8.C>{g�=����8�U:s��=�$�=q��<C5<�7�=�{!>X�{=@k�=��=���=����>u>�=7��=Ec#��|�=S����<OC=�pH>$���=�_��mܼ�d��7��;�UR>=I�[�=���=U�ҽVA>W k>+�<����ǒ�:�>p���MZӽ�,��}0>���=d���nV<�A@����93���W8���j�=�B'�R�v=���=�b>�G>,pM=�.��R�����2<5�� ��;��Ƚ�%>� �<�Jj>���=L��=��p��s�>��t=�sg�A����=(�=��{����<И>����T:=��8��9[�/vj��7����O���x�<�=���<H�`=�����
�=�ʀ�7b<��E>�$d=t)νm�h��=d7��F����9>��׽&c�=��:=GMS>:��=���= ����A�=5�&>��<�>��޽�s>�#��,J<����Ƀ=���
q������_����:%��{e&=w�>�KH� >�H�;�/l�.V>��q��b>�ټ��Ǽ��� �8�N����>Mr=� �=A)�=+�,�zJ0=u>ܨ>��|r�__����y=e齁1,=uCA��σ>&CP>��S��|o<� [<�};} V��ӕ��A�=�aW�g|���
d=��?>Om�>�~���ངWҽ�=��K�>� ��D��=7S�6χr�G�=���k�=n��<�%T=�_>�Ё���Z��bE=�m�<{,'��/> �_>�ý��H�'�=Ѻ��� ;�ʺ� �=�">����~X��9���i���o=LZ�;sB�=Hw@����ؽ�Wy>�lԼGi�>~�*�������f T=2vk>��K�9G�=�I�=�^=�]=��L�;��=S#a=�Z=�p�=�ߺ<���=�v��<�=�������<u��9iS=�(�Y�=ْ/>Nb3��P;��!>>QݽM�<^�f�U�'>)-�=*��[=�u��a�>�>�:;>�1(=P�E>C+<�8�=#Tн���<'�u>�d�� a >+��;�/��� �=�E���<���~)0��~��&.�<�8+����<0���׊<�=�<�(��;�g�0�D=I��͑�=%� >�J�=�o>0�:=��'>�♽�R}���Q�ز$��^�=���=��_�y9�F�.>N�=J��=&c=��ܽ@�߽�t�<d齇f��\�0=׎a=!#=�d�<���7Ѧ�p�p�5����:� ��KDH=
�=��g>��ֽ%x�����t�=����سR=^kн{�;��ֽ ?�<BDS=���:=v��=�� >�=�N�;&O%�dS���<(�Ϛc���\�ܲI��#o=$N=��"��R�<���=$
�<��.>�7Ӽ��>�ҩ=#�=��;���6����=j�=��7���'=i�k>)="�*>_f�<�o�����S=���<Z��g�Żb����=��$=]'%=R��<I��~�:�J$=2�ɽQf������ ���k��%d<!����K���=y(6<:��>��u��*[=4�����f�S���>~f4=�%+<ٿ��Ş&�t�=�q�Y;C���Q����Y�#=����К�������=��������_S=^��` =Ph^�Y@��V����r=3>8=jȷ��Ʌ=g�<X+5�D=5>�S���nN��oW><=��ü�>�=�g��)�P=֔ҼJ}���ά���=`;ڼ��=�d]�(?�����L�� Ƙ<LI�=�.�=�b������0T=��d�D=(���!����y6�ݐ/�d���Go�f�t=���q/|��<���� �=k齿���q|=�!��S��b�>���>�ר�T�<��j=��%>|%\>�WH=p=�z:;��˽$?O���>�=�,�����=a�������њ<�^i=c������D�D<��A>h)�<��t�1=l�=>q^�=���n��#E �6�G��F�<��ٻ��<��f<2��`u>(\>��z�=nd��<5#=�T�=�
��ו�Oh]=J7��&=�S�aG~��$5�]W>O > ��r�=o=2���]>vk�=$� �;Yڽv��P�,��G��sY�=� <��ۼ�;'�社2��<��6�L�������v�ar�=mp��^+=�+��=(!>�?�ڼ�"D>�Z>�&5>�]��y<�r��m&���z���=��<Y�t=�p��Rb�<��Խ�G���kȼ>q��
Ѫ=��=��ܼ�I"���+>����]��� ���˼נ����=?=����Y��E>�cV�|W�G��CӲ=D� ��p��Og�=b�>찻�}�<p%��0���=^d>l9�����������A>+�j=9R��7>��B�yS�=+;���N=.��=>�z=�y��@��=e7�<k�I���/>�*�!3�K�����=����Q >:6�ţ��}�<����[��zs(>v ڻI�=(��q��6-���ם��t ��s8��e�;�<g<Cc�=�|��ҽ_|��yX �:*�<l̼�߽��f<��?>��Z�ʛ�=ۉ�<�D��̆���m�=좽�6l�� P>�Ƚ3�=ȸ+�𹬽&�Z�I���z�������K�<�<����nw�w6�=���=N�ʻE��<�n�<p��=�_I=oc��g������ =���e����=�$9=�Q
�g��=HЬ='�����<=���=>2R�7Փ����e��=^n�K��<�/��&��=o�w<�
�U�= _-�6伽���<B�=+�f�É=�p!�
c�B�ؽ~v�;{�<"X6<���5�>>�"6��!@�����2>Kg�= -�=Uކ>��;μ=n]>� �=&�w��h���R�<�!��Tw�=�,�,��;�;=��?�m�^>��L��u�=VG�w<��=��=>�~�3=�2O=���=Cʧ=���<)_=��G=!�\=��7����� �q�/>h��=��d<���=�X���%=z�>�ܢ<�]����L>f�:�<�!��g�5=������\>S�?�y3ٽ46:����Iv��D)��B,��5���`�=��>Xk��en,�k��=a�]=�A>���e�U><����\�<��ͽ�ܰ<�
'�P�
��ۖ=�=�/�=�S�i�<>�i����g�m� �՝�җR���W<�$�R�f�r�Q<#�
?+��U=����:o#�_�D>�ݼ82�=X/[�~�=s��=B&���yK>�g�=�F&��fƼ)0g<��ʽ(ݩ��t�;���=���=�P�U�|>��n>YL<}E=�2=���<��_��u
���j<�ta�c����N�6��>�Cr� 2�<����h��� >IN��QE�0�=!(=����f��;���;Bq�=r0;=��v��w�;�㙽|����7#>%)�<㖽l&�=�v�~��:�%н�^=�d�=f������=�� ���b>���=o7��l��A�p�>�bR=+>d0��,��=� �<�=WS�=op� #��1ħ�2 �=�@;=v��� L�t4�<�a ;�9ݹ��!>� D>���=�w0>�~>}�`�Qd);��'<�n����;�ȇ��s�n-�=)�*�L�F��=��>ɞ"=���k��=p8ʻY[�=�U�� *m�*&���.��a=����(kb���>Y�3��!R>!�=��μ�OV��ђ=���=��'��D����1<n��=1g�<�� =��ͽsz����'��<�=���=l��=�^�L,�<�;�>�0�=���P��=@�=r�3=�0>c��=a��<3S-�D�����=�1�=X>��.=�˜<�*@���=>~�P��Q
��4z�QȎ����G�����"��=�w���y����=�P=�8�|�=�B�=��=MZ����=���=Ưk=�ٟ=y)�ǘ'��]=*��=��7=�*���\>+��=��%><f��b��=���=�U>Y���X�l��H%>� �,΢��<���$>���+��=h�'>��Խ�8->�a>���Bn���������=�O=�����=� ���D��-@���6���=��=;���1�9)�S<>PrX�5.>e_�=|$~����=+=�E>�A���dp< O&=��(��خ=HT<�����Պ��^�<F��=����j�k=�+�q�0�>)p=��.>���/l=C�jt>8w����d=�Qg�60!>!��J��؛�=[}�>����#��=̆=��X=���=��=��F>�ɹ=��<b�=[���U=d�:>TF��}����<>�m��5v=" E=�%d��ү=��8=�\�<�“��u?>躣��t�=:HP�Y��<f>�8<>&�B�0c��1�C�d��>3�p<���=�5���~=Y"� �->��ý�n>G�Ѽ8߻=���=1����=��=X۸;�R�=?��= �`h�J]��̆�s%��pF���m�=��߼yȽ��D� ���&=M�;$ָ=i=ш߼.Uv���������=>��=�G��!f<���A�*�%�>>�{J=�n�<}{��1�">�3�� �4Qj=��;� ҽTl>%���Dzu��e ���Һ-q�<IR�=�a��3,{k�*i��Ųb����=e'�<�.�NnF��9�=�WJ�+sϻ �=��Ǽ�Q�<J?%���;�w3��/�={��=v"W��=^!G=fs>C��<򛽱x���m�u��=��<SG�iӽ���=����">]�]=P��=���>�2x�.�X��=t�C�D£�b�潷n= �-��}���7�Kٽ��=�<���„�؇E�î ���ؽI���Žr�<i�@=�>�=(��<iT�=�B���c�<��';5Ȭ�tn��"�����=K��=0�˽9���ڠ=�3�=���$f>�\�v)>����[V<B���c]>_E== n-�3����۽C�|=r��;�-q�c�=WΥ=5��=��w<೰<����S<#>q)H�Gs���.�8Uj�u2A=UC��)Ap<} ���9۽��=��d�V�q���;�W���<���=�Z�; !��TK�����;�d=}@���[<A��=@ư��U6>�^=7ɽ/�<������m��~�=�솽��k���B��}�=0J=1����zn�<]�:g����%L��x����3�����d����V:�����@��j��]��=��<=�B=�o���/��@���-�@��=t\����=�k'=�RĽ���<%
#=��=(��3o߽��=�f�=��齷�<�2���;r>e�<b;=��4=�� >m�=�(��Q� >QT��O��=��}�M�h���=�FS��� ��g@<�Rj�����K|����ɽ����:�
>3����o��O{<��b=�y���q��?��M�����6=(E�=u]O=m��=�\���=>��<������= �n=�I�>en2�eL;-Zj=�!���I��;�<�[=��JQ>� �=�O��v����I=7>�9�����>)��=�S=�� ���=�����r�=���<2�;�Q�=6� >�e ���f��Q$=��>��>��ս�nO�)��>�a��� >R�z�$`[�ԩ= �">/�o<_��=Z>rit=�\>>�`:��H�=��X>i ��+G=��B�Ъn>p�W>� �=bd.�u5 �\�8��'����k�O>���Y ��+!<ؤ�>[%�= ڵ���㼻��=@�ἋXk��n�=6>��G=� �C���N =��j>�l�=J'K��ؑ<��4<'���l� ��Mn>v��<�����<Ѐ����@>�YɽV�P>��R>$>L�-=���=�˄=R۞��.�<����_�������W�=ҜM=� =Z�:�l�<����؈:> ����o�� T����̸ؼ)+�=��߽�B6��=���T`=b��=��V�o� ����=�$ �G�%=`N4���>%lM�S���H�E�z^ƽ��o����53>�Rl;`��,�C��!��<�<]q=y��=���2:U=8E�=������e=�1��U$�=��E=T��=�j�=�/ܽa�����>�)F�i����Ͷ;kF���;G�;�+�����;!l=ۻz��>���;�>3x�=�X!��z=��o<#U��C�������Ձ>��̽x�ؼW�M>1 Ƚ���=޿5>~J*��B�O>�
ּ�<ѽ��4���=�}b�ގ��R���6=��>�N=
*,��
你��л2>��½��-<�ө�"%�=��==�&=����$�J-$;?�=�̽=m���wU>�=�'��Ͱ����̽�_c�����^�;���+<�3�=n��=<h�=�~��"��s���|���aO�=���=���
/��y=03=t�����C�\���ؠ�>v�\���c�}�N��=�3>��T>�-Y���ͽLi
��>k^��� �=+B�<^T�����{�<�>̹W>cS>�|��J1>>ݬ�Ѱ7>���{�����=b>�^/��% <Q�����=|��;`��=��(=�Qk>p�E��.���>E�= �=��=�#��lq��.����<�[���!�<� �<��F��c�;��2��'ӽu��=�=D���">�<Y:]g7�R�=ԁ >nC��[�><����ܻo��9@��Qm>`� �{�k=e�>Mӯ<"%�)5��3.�ʸ4���՛�<A�/=(i����C��`���)��@��=�q�=d�1�I���S�~H%=��w>/�%��D��tN�=����t)>���;n���E���=��=��=|�� <�d|��E�>��r�3��:8V�=n:=�Z����=�߼ɢ�=�j�=��>�O=�mw��2ͽ`�b�#�>��@=� �<#���a�����=�Q0>L�%�af�lI�< ��=��I�h���"D�=`u>�̼U�����=,������=?E>�Y=
bǼp�i�=y �<��;=��j)F=��=��_$�=��a��=h�j�+׽C��>^��`�'��U��eE�� �=?\4����=���>��T=�*2<�}����>Z@�=�;=�w�<�S���B>rD��b8��w閼�i�==�&E�u�=I�&�^��=�X=��"=�_�=���=�F���1�=�ъ���m=��\>�{>=�d�=Z��=8 �S#<p�>���<��9=��>��۽׋3�ݪ��:��=���Nx�-�;�=1={���~��=+8�= ���B=�?����=h��=�����_������µ�&ҽ�s�>w���P���@A�L��e<��=��Y��=�vq��y��Q�[=(��"�s=��Ͼ�F�=��=�M\���>J ��y��t�>�C>��a=� ý��;�-�K�b�F>�s� =�=�1=�a#>ӗ�=����61=|~�=<�u�%��&p�����˒>���=�s�=X��xɼ;S���_�=�Z�=��>��=Ϯ=�Y*=�'�="h�=��#�KY>/A�=[�=\��6�~>,ͧ�U�����=���=X�>������=��&�+z��ˁ>B p��߽����� h���۽=��;>�諼� �=�U�=4j@=��>o��>���(�ͽ����c�)>�x�<X��C�+<E�3>�I���#ӼM���H�M�����ku��/�=�a��U ����ɼ(a�=�T�=lG>��R=�z��B̦�`w=K���ľ�� ���ն=� ���V�<l >��Ld�=�+;>�j�v��<.���`l����|=a$l=���<���{>42��հ������#<>?P��!��>��=��s>u*>Y���a<>�΅>~�k�δ �[:���Ǩ�~j��~ች^g���S��:B�=S�2��>�<������=��W>�V+�(��=^�=V[1���F=e*���ý��o==?���7=���������<\����]>~> >��R��h=�.�=�6e���W��-k=��=�c=���<�sQ>����@���=K�>iW<��k���y=�F>`a1=�1��(�};�����w>���r�=Ą~=Ŋ�<��'��� >E2�=*��=I]=��z>kR>�=����`=�����6��zR"��|3=��=���$�� � >7�=��ϼҸ���G>χ�D�>�kM��r�=~^��M�=�H=�Tڽ�cۼ^O$=� :��2>��U��Y�>�bY=��j��s��EH>�����;x_ >¢x���a�a�@�:L>&�<ŗ<a�=A7�= )=G��p&Ƚ*��<����']�=�I=������=�d+>��ں*ۮ=�I���.���������4d�����Ǩ�"��5���l��n�=Z#P=b'p=�6����"����;�4�:�F}������0�C�.�.ĸ�0����-�5�K=�N>ζ��JV�����<���=�WC��#=��ͧ� �B�WL�=LL�`�!���=���=�3�=~a+�]�=b�=i\����Q�C=LG> Q�=�T�=+s�=熽b�=��4�m�=����Y�>i����ku=W�J��8����T<���bT�=��=
��/�=���4ż��S=���=ՍD�D=���cY>0��}�ǽ:����:���꼲�3��܆���f=���;#��=��>I��<'�>DM����>ʅ=�?���1�&��հ��sO=���� ���p�<�r��} ��II >�Dj������vڽ�P�<��=�[P�����ǰ=�3l���F>ƀ~��� q8=�M���U��%>C��<�q=n&�=U�=�^�=�~�=CO�>$ ,���A=Ʃ����� $�� <<�Ʊ=VY��D���߽78�_7`��9~��=�7���C?j=`ۀ>�H�<�#=�+>��p<���"Kz=��3��=0>�8x�a֮=g���H�-��?�=I� �>�ȶ�r�&���E���p�;�\=���������>ɼ�=� I�mt��">꩒=�wV�KV�=�J�=#uC<&C =R�<'iY�'�8>bk�<�r>���:H���֫,=F� >� �o��P����Q�w�=]Q=��e=ࢩ�׋�:�L��h��=nv<����dƽ���+C �O%=-;_=0�=�hԽ�4W<{(��Jy�=����=%.=�
<���=�6 ��X�=�Tx=��>�n >*��v�������ra�;���=vT�<������=�Ð=���<N5=���;*�;>H(�N����=�c�=nd�=�'U�� ��ibѽ�f����=-�,���Z=Uǽ����]O=8*H�v8>(ڏ�a>�ף=F>Y��<$+L��\����;[
�<�I��:����7=ʘp�0�M���Y���.��K���vS������=��<��6=lʃ����<� =ѳ��oY,��4����ʽ���>+-1�W:��uL<��O�=<�={ /�*�<�Ѽ��U��z�<~���hK�=^
:��f>��ý[N��%��=���<\�=(1�=����ݺ�>)+>۽����N<~��f�Y������<:�R=c��;�!��Ug&�� >='=<�w:��S=�9>` ����7W<�+��c �Xg�<v����Q��O�=�$M���F��Q�=F�;���=�/>ji����������t�e��=5@ ��N2��O�<�z�<v�+���*���r��):��g���'9���Ĭ$;��>�� ��;��r= �n��
��׶��-��g*=��D���(=�9�� ν(������:�{C� ��=�V>�W>�=�����<K?>�@��$��=���<%?=s�J>�i�=�o����=��Ͻ h5=�[�=w,>H�>f�T����Y"c�:���P�Z> c7� -��6*�>��"����=�� ��u�'�>q�n���_��T��`��<��V=1�^=6�<�>���>r����H�A>���{E�����\�PL��EIǽ-����ׇ�t3���==i�%��+=w�N>���=�@�=|O�=.�⼿>T�3��� >C�A=&�۽v��=\2�=݅վ9�Q>Ξ=�yǻ�r��(=p���'6�>>���EЩ�$��= 2Y=�4#���>��Y�:�[�<:�;�;�=By�=z!��'XT��z��y�a;�ߐ�u�9�7�>��p������}\��h�="�N���=Д�S>U׮=�D=�'�yM�'�=akZ=��<�Q��wd>��p=
�>]C8��i4<���O=>�Y�<�� >�;V�\8��5�5=��O=k�>�&��$��P��=�F=eؚ=Gg4>C͌���Ͻ�rS���#��&:�o=��={%%�6���b��F��ߙ�=H�:>�Y�=f8�@�Kn���A<ܙ�;��!���=6��=M>����׋Ž�ƛ=���<3^"�n%ȼb��=G�e�B@>��>����߯>U�H�����~����J�x� >��b>i��>�Q���(>RJM�_K;�>Ԫ�=~��!==�gD>�F�=��=�`���g{=�e�>I ������f�'xW���=a�>��#=��=�|�<}=��/<#4Z�#�=11�=$p!��q-��)�:��J4>O�D=~��=y6��r�=��7=����2�=��<>���< o�=�/���;y�8=��%������M�;p2�=ϔ �ۘ�=Y)�p{V�ٍ���_!=� !=��=9^;�ƽ�(�<f= �=d5�<9�f>ޟ�<�5=2I�==_��<�6c��7�r�>�l����N|D��5�=�C�����<�dH>��=�P> k�=�H��i������NF>}����=xk@��c�=Y1��r!�=3Һ�T1Q���=��<�K�[�#��~��X���R����(� �(>�.<���Q@m���R>�Q�@�"�V�!����<�8v��"�;��=�"#������Ͻ0����+*�+V�<���ɽ��(� 氽�L�=��=Y�>�G��¼������5�(=ڽt�e=/�<����J#���>����<�����<��f8M^<���=qE�=*==�񗽅��;VK�-�+=e
_���M�8�s�mE�=&�"<��)�� ������[̼w��;Ѯ�=�}<�Ԟ�U =eɽ@k=>��� C���/�=Y�=�|��.���=4��ͽ�c�=��>n�+�dH�T�a=2�q�����"|޽�]��޻��X"=C=X����2��w[=7�ݽ�v��*�U=z�Y�rs⼑h)���F=]��=�q�Bn���h������€=\��=��y;� e�nF>0�˽�\��q0==�ꏽ�'_���r��y@���<.� >���m�=չi�9��<7A>~�0����d����v>n�нݧB>k����;��O���켛�S��O\=�u�=C�.=ť�<Y�m�I��=���;=���T�ļ���=����w@>D�.��:<��'�NQ<Xq)>F�ڼ�v����=��=���=<R���I�=Pe]�� ڽu)�=��"��T_�ձ8�el1>�#��b�=���������3#>��U=z������{���<���=��<l{�=DS=,ʌ�Q�`�B=�:����=�V�H��=;>�y>�b>��c>U�>��T�=�J>�)w��t>a��9�^��N�=rx��C�Y>Vt���!=7��뫒�dΦ����=` �=��h<Ť5>�)�dF�;qK��^Ə=Ku*>M���/�z>���TH>p >Y��=��_��)>~�S��-6>�p>mb��o�j>iVg>��%��r�<�nw=�<��
̽/�=�&�>���m7ڽ���=?Z��3{=��t>��[=j� �����y�pg�;
��H��=��>]�>�S�a̐�9~�;��=~�!>�N��^>B %>�f>�N�=j|=��]�V=� ܽ;��=Js =4��=���=��=�O��;߅#�-�U)�<,S���ɬ�-Lнͫ���=�p=�=�<x�����>��j=�<�V;���>:%��!�ƽ,9>���=��Ȼ�x���@�=�>�Q������5���:2�$��=Lcr=�彡��=��^�Vq���ف���=FI>���>�<���+���4Y�Y;����(>�>���eȽHV�x�\�há����=0��;���<�=;��ȳ=�`����={�j��E����[� ˆ=�g̻R�(>$�Ž\Ң>�����ѼL-�=�<�P<��&X���J<��q��~��F�/>�,�<��+>�Dٽc��$��=wq��{?�=�N�<�k=PY(>,h�#��=v˕���=���=s���?6�:�|�=u'W���(��1��s�<+��������=�,K�a+g�{�<�>��cӹ:��\���e���=#�y=���L|/���t��鸼 �z�<U�=LuO=Ι`��ԼA�)���л��=>qυ��ۺ-Sn=1����ͽ�!�=u�9�� )>�&@>��\��<�@=��.>8u~�$��=�P�=@=��1�Rܽ�Q ��X<��彪�!=�-�=Sp >Mv���)8>0�;^��<^!;��N�K+��f�3�B��<gx�<8`��p�=?�X���r�>={ ���;������ =-�Y�P�=�O�=�u��؏=� �=9]�q�5<7Z�<�pJ�g%�eN�=>c���>0�����\��Qs��i=�=>̍W>V����v�t���(�0>]�>����Q ��=�3=Vb����ӽ�S6>�C>O���C�[����;��/<��'>�%����=�K �)<�=�� �b�@>4Ŷ=��3�W�F�ۈ���?��սׁ=|�>�"�2=D�F��n}�k��ݱ���0>�S�=��>.�=��=���=�է�n� :w@<֮=�λMh�=�춼1%=��=i���g��=���=-�<�W��<CF=i"�<��@&\=Z��: NR�������=_7�L��=��=��;����D�<V�&��� =?S��7>�uX>Q�Խbs.�1'� ��>���軻��<
z'�Ue@>��T=� ��Xm=��>8���@C�=�g�=W��=���=nn>�B�<¬�=���I�<��;Vdѽ�>���=4vz�kID=���=TY��Xv=�8=e"k<cO����g�kh�=Jf> �>u�}�6����ƽv�7=�=L��<i=^�l�n��=�=V݇<�~ս��=��\>x?��ɘ��.�>��ҽd,*=m0�=����f��<�G�j��3��=?d��$`�<�>9w�=Jj��f�<� ��4Q|=���=��� �=�����OD;j�R�Oٗ=����3_��=h�!����<,���M�<Qֽg�d��<�����=L�m=Hw����L>�0>��+���<F.�<��U'<=��'���>��<�"&= �A>^h>G&���c�>M�<Nh�=�$�<��<�xC>��\>���=ce�����=|�*=��={A��k�>&&I��=5:�22=t�O�E��=`��Y��;�aV>Q���i�z~����=���=��n>�IT�,tf�e�;;T��;�}ͼ
��=��P>>�k�q�ӽ��R���=h��4� � /1>sjz�åx��'��-S_�1PȽ{#���3�V��y=�C=���#�F>�B@��P'���w=����4ŽW���q%
=����>� 9�{�,=N셽 ���ʺ`^;=q��=c5�<��=h =���<��>��ؽ���;�כ=[��=���=�顼�B��g��=�Ix=(��;t);��[�^B�=��r���Y����;�(;�s����=����Ǽ/> ��;�<r=� �;���=uI>)ED=����#�p�=<�>�2��]��=�O���>�(Q����=^��*��<�D���X����ѽ�=s��O�=�6��huX�u
<Ƚc>L�;>�c�<��N=��k����=BŽMw<�v��Bsu�%ټ���=9*0���Ͻ^��=�8>,��=�6�=�od<u�弽�<֍���S=m��>�����z$���3ս��=��;��t�l\>��<�P=<�9�c}���
�<Y���)�d��N�{餽ʏ_�"��㙽K�ʽA�>¶ռl��;y�= 5�=��N��C��a>��V>d�>��ǽ�˃�m����<3 >�lR��]F>Ҽ�A�������<�У�׊�=���=�=�޼=4��>
5Y;�-^>����
�<r��fW<�<p�3=�<)�����a>k���A�V�z����Y'�H]C��t��C��xjk�cH�<�8�=j�<�����I��
�.>j�6�о/<�������5g�=h�->�����ɽ�r���X��_G��e�=�� ����v>Iƽ=�ƽ��۽`�=Ӌ���L��+�>Ri����^�^| ���
��T<�:w�>�<��I�����7'�< Jf=����(=�����<�:��틖��=�Gd�.�����<�B��au����=9����<(у=�g=��[>��8<E��<��:���������0ʼ#7/��4�>7�>/���@K=T�X�|�����Z��\{��l�=�>=͎�����=0��<{�޽с>60O>�������>9��N*����=���#��|�>I���2�=��"�p�=/A�A~<�0=��<�AG��O����
� V�;�=o�#>� �={'�=�{Q>��"���#=��@��������
�<gU��T>��Al�Dݗ�"�E=�s�<�s>����$^1>���=i�i;��=Kz�<�3���>A7M���s����=�o�����<�������Y">!��;#>PZ>�9i=�$$=^�=Q���4ϕ=?�=�VV���_�=���4^<����n���:>��Ž�ݙ�/�i��0�=�3= *޽�(#>V�To�=� a>w��]���l�ո�������;=ZKu��N<B<;`�h��2 =(<(<-��r�V>�l���?@����=������=RI�=�6%�(|>5�V�٣�<�z>�EL�/3ڼ�Uo������4�=��};��~�c�D>��d>��T>�����ֽb��� � ��Pt>��7>�{s=�#:t�X=�G�z=|U�<�SO>��½/_R=�{�<��>����y,��|���Ր=6��pM6�Uw��q��=��]>���=�9�<'�=�;%=�<q�hV^���">����Y8�`'"����iA��Ƌ�<�w>&�:���y�ʼ<߼>�k=� =��<��[�vS����<ܗ-<vB$=-���4�=�;����}o� X�����[2=������\>������=o>��)=1݁>w�>M�1=(��<C�/=o�=s��=xR@���/>��<PRƽ~��=�b��Ђ�FB6>D��銈��N\<I]�=@Jb=S��<X7��cQ >F:�=��"� ק��|��a,>�d̻n��$>y���8��>�=�g&��@>��>�-TD�!���ޜ��C=���8�O�=(��<�F�_Df��Z >-�;��M=CY��CY�>���;���B�=3񶼶#�=���=1�Q;o!=IJo=�>>�������=���ĝ>�Ƚ1�A>�����2Q=7t���3���@F���=~@c�u.>�T4��-�>�x�=f��=��%>�%�=��`=��ֽ8w7�G��o�>*#�,<L>>�1>�I7=C��aR>�$Ƚ�Y<�����x��<75U=���=w�����_>U����I�n���u#���=���<[�=.W=2<ȽҝS=θ����=�<�;�ձ=9��׶M�k2L>q�>�T�=���y!�>]4�Nn���2E=B\�<��1�YX'>'����/>P�,�ȽռT�=Yv5=yμ =�=~ `� Ѽ=�9>}�>Uc����!>Gɽ�p�=9���$$>�l��Ua�=ȟ=�:�=���N�R��=��{=��蚻�4<=�x�;<��}��<�d]>b�m�����w��=��������6�d=����x�����=�����H>qz<���=B�[>/���</ �ð)��/B��k4���c=T���*��sU=j���,��]�M�t4E=p�T��'$����ui�=f� >gG�=��㼈V�=CM�b�a��n&>�h:,zS>śS=����b��SJ>��>=L�K%�P����G�=_/S;�Y�ZD��Jý�<>�;�>1@����U`U�L�+=-��=��>�����+X�1��o!�a�P��!+>��<�ȳ<Ԟ�>�T�VF{=@m]���:ƾ.>��:=K�Z�a�=#�>� ����e�?Ю=\. =<+I=H���۽潁ظ0ě;ډ=���=��=�|�;�&��9�Y=%�C�4>y ����l�l">ș��f�=!���-۬<��^��
> �o�$<\/�����=)�\=�Z��"�]��=G��<V�G�sj7=��x��|D��ԍ�>�?�_�M>B蘽�#���\�<n4��-�=v��ʇ��䑽ŭ��E;8>s�)��D�=.��X� �z|�'��=��>@μS�¼�~�>�v#>R���m��<lW���d9���,h�=�K">1b>�V��*�]��U �m�$>qN�=�8>�k� lǼa�<ɰսq9h�K_���8k={OǼ��%�� =�k���ey;���/���K��>����8𼇿���ü���ǰ�& �=�OͽM$�<kN�<��5=z|��
�����h��=̍�e*=�fk=m�>����=B >�-�Hc}�w�v�zA�l�꽖v��x��= i���θ�9սZ�!�Xk=Ѡ������ýj3=[� �A�>+����= �=#�]=�+�=<咽z��<�� ��J����>����l��=m�D=�O&��Vѽ��X=��ֽ�>��t<���3>�@=���<��T�qb>>k��}�_]�=��B<��(�1�u=��F�0�=x�=�u >����j�7=,��=�g�<�U>9ν��{�]�2<$�,>�v�=�I��7��=�5����z���:�����=q�v>fJ<B�g=I9;=M�Լ���<��+<�q%=�y�=���=��=O�$=�3��lp:>�ؼ<�W��Bn�>m���n5>�9���OV<Ht,>F�=�����=�@�< ^>��� ���O=���=��:���H�Z�Z��S�����=�Q<"��jݏ�$��;{a��[Ђ=�n=�:�=�C3>�= 7=�n�=jTU���>�Ͼ��{P=�^�<G�;XG>���<;�F>U/��/ޟ<W�1=���=��t>�
-�X��=UY��<��7p����C����=<$�B�0��=���<}�'�pĞ� �:���=��^�V�T>K�=��&>���<[��:E7�=޲9>2���o->!��v�O>��=��#<o$>pد=إ�<>�=8�������(>��b<��{=�f�=�"~��F�T�E�q��;�.F��K=�[��=<� �[Z뽹�>t�A=���=���=�-�=�C۽���� }>�!k=���(����=s%+>p�[������=���=�{�>>P�<� p<��f=2�=M�㽢_W<�~�=0�P=�0Ƚ���ɨ<Z�>��C�aR6���x>�6�j0��i7`�US����<�ؑ>g6��ky=�'�=P�Y>T3>%�¼�]�sM0=K�ֻ#�����a>H�}����k0>�T4��b ��2��;> <��S���{�Klv�6 9����:�†=�{7>8'>S���k�=�-�;u�E[n<��.�d�&=>�>�{�<���=�����=���=yG<��(�~�3<?����P�<�/�<8ӿ�Xߡ��כ=�@<���U>~�.=��1=p ����W=^eb�q�@��+�G��=��ܱe<��C>���=������cV<��]�U��=2�Q�1��=�y��ݙ�� 0=\��y���m����;=�HD�Y��=h��/t��˽�<�����N>P� �M����<V���H�<U �<aJ���p= �<�>|��<XI�=Z�>qN>�6*=1�><�;N��{�=n=�Ժ��8�=e���[=��4>�-f�F��=�'i>ו���K����c�=u�>,V~�O���އ
>8� �Lg7=P9S=��l�X��y*>�|= K>���=ۖ��I�'>˨=;�#=Rk
���>E��<��b=�u:=ts>��->v˳�Oe�b� <�F�=&�<.�K>.����H��i�=(\ ����=��*>�Ӟ>����>����i��=:1�<���j�=����>�=騍=cm ������>\?����=���ה�=7��=�:��.�=�VF>M��=��>k"6�� 7=)�-њ<jQ=��>e/ >����o��<��k=x5>\ڻN��\0>�OH=:�F��=�=�_��� <���<=�p���9����ì�=�[���Z�J����=O$>=�b=��:�� /��X>�&_<��@�=E�>@���DWý�l4�?G2>��=�C�>\H�������r����;��Ͻ+x}��f�Y_8�� �����;�6��?0
>ſ�=NQ�C��;�z�=j=-�Q<d�=�=H>@z��AM�=�근�u;���=�G��<�r�=�>�=��<���=p0R<7�������
�u^
=b=�nM��lL>pe=�6� �>� C�{�������Iv<�o�=����aY4;5Z�= v=��>�d=
n?��6.> 7�0��=���<fKp;QT&>�|>#LD=�d>y��=�J���-����=L��=��I�|���G=/�=V��<��=" >�)ν��y�‘#>���X}}=��>��='a =��7=V1>.=��=��Y�i�z��{�=c≯>2*ὼ���~5<B�ʼ���:�=���<!�D<��t>�b>ȡ>(&�=]���[��&7�`��<��4���F<0�-=�R�=�M =v���%���B>�� ��p�������>_�>4��=�D���=`0=GN:����<�:����b�ZB=�ͭ���*���@>S�= ����x�=�����7����M>䁊�ɾ��t��=z#�>Y
�=�-��Q4�*=9`��7��(o>Y۾<�\ѻ�ٽ<��=K۽[�.�!����T=>�=�N=<�|�j=���M�f�-��1�;}�=�)��HN��a1<�G-Z�b0���G�8�F�O�=>ʍY>��p>���=���=L��>�=�Sl�#ڔ=�����[=ﮏ�>��=�u㽐�O<�����>��* >�!��N�*=N��3�����;@:�=l����n�<��B���9<!2>�O���)��Խ >�i>0�������ׄ=7��<Rj��%2:>�M��)=�н �<�g���� ����<gς>���=K?�=�ޔ=�C$���z�n=#=,?S�=����������=G2���1<�WP>��=�>��༃:��)*z= h�=0\�����I|
>��<� �;��=�V�=F3�<���=�7޻�u�=it�=F���+���()�H�<f�-�/.�<���N|_=}�>�I�K��=c�ڽ�$�� %�<���> P�<����2�Kk��U9��ҡ��{�q�>�������=�L�=�0>>P+����9>��=�|�=�� �©�=8ֽ����0�>�/��S���F=K� ���T�鯾<U��|m�=ګ�&����5#> m$>�h-=� I=�{������=<N�={�.�g՗=Z�W���=���=;�;�~8=$�5=#X�?a:�#4>~�Ѽ��R>���=��[���<镧>3
��E�ܔ���a@=�7�=�A>��>8�>��^&=n�=>b�=��u=�[D>�*s��^+����=��[���û���>�{��GY>��sU޽�H:��WX�wn?�du<�{>!�<���=�����~���=i��=����[;}p���[d��_@�u����<P�m�Q��<VU>=�G=�'=����e'��T
=C����V>^�;��n<ӊ>%���J�9�;A��=?ˣ���`��8]�]�4<���<gւ<��-��G�= �>�*�����6����<<�A���_~=�x�滄=�_������<�V>�̽�M�㲏����>�㩽���=_�$>�$�< S�J>0*�=�܀�{L��1w���"B��g�==�r�Z>��< ]w���>$ ���>��s>���<�6�=���=w_�X蝽�tS�,$�� >��v���g��)���>86<9� ��<a>"�[��Ed>�
�<�H��i�=[�=�}��M�j=�Z7��ߩ=ÿa�Rn���⑾�
Խ�->���<�N�;n���3��<h9|>������=GQƽe��<��V;{��=&��=ȉ>6��e��-P��vc���K��9��<��>n,=���a�=�IM���-��̼+欼QM��� x;�f���f�=K�ռ��3�|���b���<?����<Y�>g�:>5�=� �������T<d���E_G�Y��=_��={�ؽꚁ=�>:$>t+㽛�>�"���>�j�;<�q-<I���ρ=80�=�=9��<����ֻ� ��h�=p襽FL�=�O>��Lt�B��=�8�=���=d�;)`n=���l�$��&�=����ޭ�=b�=��ٸJ���>� 㽼����(>�Q�>�Na�* `��r˽C���������l�'�#��^^���{��1��=��l��->p��(I��� �c?�_�%>e��=� ��s7�=ؠ�=�` :�d�=�o=A� �M��;�-�=e5�=�8��]��=�\J����=�>Y=�=��(�g���i�=%�;>��=��F=�:����^��=>��YS���=�(�;A����8 ���-<�=d<z��<)��>JC�A<�;�����=��"=�J>q�!��@>�����?�v��=��E>�ꁻ?#0����=3M"���c�������n��9���!=[>,���c>��w={������;� >t >��=�5;={߆��Zڽ�d�=P�=��;��<N�=������+��=�g�=��>�X��ۺ=�n��٭�����=��?>ei��(�x>+�d��,R�֩���)˽�F����>^�8>�Č��%�=�,���.��8�=�AI>�+H�p�����=Ma1<���=�M�=���WN�= � �Rm�<
�^=���=B�`��Q�>�+�=o�C�fa�=IkԻs�=�ݪ=\�O�Ճ >%��=M�x>L�3=��<*��=`rK>}��>ҭ;n�߽���=�������ncU��p����=��}�&�%����M=���=���%m�<�%P=�hx=î5�:�6�ޢ�=
�O��<p=�� ��$��4�=�y���eg=2�K�=l���V�=k�⽛na�C��=���;-C��䠽{;�C�=�s6�=��������0C=+����V���iA�ѻ���U�=y&�%d�<2������1�4��=>��<�?�� ٽ+�H��1����ҽ;�V#�<��ý�%�<�����J<�<��}�=_*�=%~�=B1^=��A��==#���=�.9�>D�>a�H=�K�����Ӕ��u����=<!�D����)�ԙ��퇽���=��B< �@��}<jR{;�1;=��>�=p?���l������,���սZР�u��~��=<n=�5�=_���+
�<�*��NB&>������=����^�8=�����X�=��9=�h���q��{���\"��a>�=d� >im����.�2��=F���^)���1b>5���� ���=�Ǽ�e���ׄ�"R>2ɼ=8�{�[��<.͒���1<�h�����ἵvr=X��<oS�����=���;\+;��T>=.� ��5�=���<���=&�:׽ݽ�Ů=����=��>�ɕ)�rUr=-[="N���酽�7=����x�<�,�=gkK>�q�=�+����t���U� -����p>`�=��νV��>�B=�w#����=��=Ia��a�)=���;��E�X�Q�]�:�K;��LC���l>�^�x >�ϝ=
�TYG>���<b$��E�A�;j?>�z���׉<u*�� �>�y>R">������=�v�<Y����U�^=�Z*>��$��Nk=R�;� ��|�'�J,�=x ;{�=ذt����<!����'0�E>���=�pQ����������=���ҡ�=�]��>�%'=��8>`�>+����G��=uV>�����d��p��.5>+}8��N���j�<wV ��n>��
<D�M>orػ�ft���>.5>& ��t�=�g�u�̽���= �,=K�Ἥ����Ƚ��;i���8"c���=?)o=�r���]������͓�f �=�P�YP��V�W��)2��| >�J��<��`=_y>�Y�=���=ퟚ<G�,�ɔ<�&�����=o�K>��彌{��$���!e�=�m�=� \=v?����<� >��d=u1�<�ܰ=re��4�R<�ZJ��)�a$=&�U�n{�=L�r> \�8�4=W�M>3/����=񑏽i Խ�'�=Rr��E8�6=K=�=�Q��G�<��><+p��uμ��ٽ;�?>��{������?���y�1 2��ˌ=4��=��g=��<��� =w�6��<7!3=�&��>T[�<���;��5��;���=���8��� �<�&>�:K�L�=g���1A�ҫ�8�q>N�����d;y��= #=�
�=��N�Z�ؼ�K0��><�߄>[�,=�[B�2a:>�y���C�=oaF�����Z���C�=�H��:>������ �]= ^>� ҽ��ý��>pH�=�ؕ����= �=M�N=�2p��{>�D �S =��(�i�$=���=�܆=i
s<x��Z# =R�=�(=�r`=r#)��=$e>��]�?s=LИ=�����)>8ʽ-Y���~�=�H>\J>���;����Q�A=�S�=�^�C΂�j��v����y�M�`=W�S�Ru�=b�a����=y>��ȶ�>���=ٙ><2J=���=)����!=���<$�Q�6��=ǟͽ�@����=��ޢ=4��n�����>>�/>���=p��=��l=�ܽ�%�=�z�4��<���!Ac=�n��
�=���\�=E[���KT�2:P>bt��_��=�l���L��[˺�t�o�D��<Y�>����� >1��
�ؽ�����m>|�ͽU�=Hqg�ٍ=�<�M>���Ѐ8>����~%>t�{��Yx=�e�����=��=Sƭ=P�,���"�^�:'��=j�Y�j;�'}���߽u�B>|���crʽ@��=�fh��殽���;�=m�9T�d���ڳ����=����6���Y>@p��@<WL˽�k���w5��mR��.>Cdн�~�=Np����ɪ��Bښ�9R��B<�~�Y�X\��2����W�=�ug��+,>��������2�d<dk=l�5�R��=cj��K� �0��g��gW��Z�;���=jB��Ħ�/����?�}2[=�ڥ;�E�<60�=�p��r��=|�>��><�=Z5�)�C>n+��́=��'�=u�>4��̍=z�����s=ŧ�Us�k���)<:��=���Q7;Pp �����R��7�*>�5V��6�>q'�=n�><�8�[J*�ߌ����=�\>���|�����=��,=��6��c>��=���;�c>�����Q�j>ɘ!>�T��e�ǽ �>"�r=�������=�C½�y��8(=C��;�@��������<��q��ͽ�j�����=9�v=���xQ�<�Z����<f���-��F=��=]��=�Aw�b���̼a�Խ1� ;�����G=1b����AH{�ƍ�=�>R��0�8����
>�0�<�{>?��=�E\<� Ỿ��< <~���߽���F8=�y����=�e�fo^<��4>��Ӽ�f1>'+�<K��8�=:���\�I���>�
X>Z�C>r�>xJ'=�f>���;4e�<߳$=��e�[Y��n�=QgؽG~'��1!��A��Q�<�e�=��C>����-�rcs;��4=zb��;S½�
ӽ�=�;>pU���!>��ýR�= �
=N��< �.��*��k>��>�T�=e�(��C�]���=���P��b'<T���3t���=���=KR=��&>�ZC=�����=�9���|�=���<���>�1����<�Q>�M=����\g>CL=> \>��>��'=�n��Z�c>���<����x�~R��5�ݼ��\�&�F��>?��=ڢ�=4Y>+ȼ���w}}=ȡ��Ύ��^ >�ߤ<��=���<�0�=d>�����U;=�]��NƇ>��;}=4����^=/[���>G��p;<��.=ed�;��罉H������l�=e����@#>���;}_4�1��=���=�ݼ<��=(� �۠�=���1=�i[�M�G��#5������Q1���!�D0��Tϻ��� w�=��F<'R���1q�F�=H_��_�������f߽��=����c,~=8�����L���ļa�o��ı��� �\�=�U�<Z"�s�A=�s�($��w��r��`z��(u���`(�pKC����= �4<��=6u�=����i��T�=�<(_(>�"�2 x=�����=
�����<�<��,�-׽
�<�c��Z�<x
.>u��<�=�?=�A�<E5�=Xu�=-��=�� >|�=̶��� >7���n�н:��>!A�qZ9<��=�̙=^��<+�v<�[3=zIG�s�<��������>kȲ� S
=|��=����_=�M"�\�=P�{��
���Ԁ��Y�ov�=h�o�� >A�9�y����
=bh#> ��=�֢� �t=�Pv�#n> ���p�����q��ҼtG����>�~��3�=�V(=�ޯ�k���E�\>��J�y�<�i`�<�~��I�=yFѾ�*>��'��X�=�s�U�滊H=�և�z�=A�׽r�<W~����V=�#G=��V�l��=긽�/S� �p=Hْ�����ÏH>�@>���=P�`��F����Խ���=�d��KW@>7��=Pkʽ��=ˀ*9���=`1��$�=>���=q�E=�Cc>SR���:u<,��<�\>�t��Ƚ�z���k�g� <^���`�>�5���4��N�=e�
=��'�ȴ�<�U������¦��P>� K�N����d��މ�<)�U�h�_>BI�=N�L���;ޖ=�z���~���o����Ow�=�"[=�_X�gC/�\
����=?�=b���C!=8��<5-����*�����,��H˽:A�0s���&���9=�v�=��+=tŽ E>�o�=]%�� 1����� !��u��|���}�>�$���a=�!�=b`P>�w:=��U��<t�J>8=��&=`����W�<;��=�ow��@�}���8= 鲼�0$�N���²<9>|X9�rws=�5��Y��0>?�I>�+�����;{�<^�X����
*����_��ѽ�_�����=|��=mq��C�����&>��K�+w ����>R0���{�[��=�l�=�-!>�!�� �߼�m�=HH>�G"���>>�f>�½�w#>��J=;O�<���==��<P W��7�� j����<��Ľ���=l�<�ӣ��'0>�>uO�<�D�<{�\=�39����1>.AS=�R�y =�5G=�uu��������=ˠ��t�=�D�=�����& =u�t<1���,������>T�ۿW=t~޽ǭ��6#q=�q�=�]�=�"O>�?�=��&�� >�o,�����F q�6= ��<Mҙ���Ľ�9> z��eUD<gW�=~r=<r�S��� Ҽ�����T��/�=ֱ=�jj<.��=��=��y�*�/>m R=A��<yۼ��”:v��|�T�٩>>�3>��*=m P��_ܽ��E>�Bļ�[F>���>�+���E�\`�s�|=�ȷ�d�Լ��.=���;NS=Q��׆=
*� ��={�=��=��7=���<M�}=ȬT=���?�<�6k=��<Ż=��<�zy߼����j#=�Ҍ;��J=�Q&=��;>���=�=�S�;έ=괱<��b�;�x��v�<4!|<�pJ����{lY=�>���0>=g�k�ĩ=�^<>�&�<W���,:;���=\� ���=��ut�� ���t>���=�+&>�s.�Ԩ=���<'=Z �<W�>ҹ���[6>���}�O<�I!=�ꎽ֢��cֽ��<���={u=�uǽ�gn�� !=��>���4��=j~���@�=ڠ�=gŽ���H���< �W=���=T�Hp�=ƒ:�Hdž>���=�m1��_ռd��Ӽ�=^�)>|��;WKh�2�'>V� ��5�=��W���=;L�^Q>�0>�b�=j��=�Sd�ڌ�<8N�=/d!=6m=��:q}v�R�3���=:���s�<,�m= >u-=�e�=F�=gb}>��������û�4�<h��<�x�l�������(=�W�f㶽� �=WP_=m��,���t��=<Y����J�ս�-(�e�(>����"�-��ir>^yD�H7�=,[���m� �v��� <�%=U�=c)>pk��)^�=����<*"0��_��oL���/�;�%���ʵ=W/��@D\<��J���ٻnۡ��m�;䓒�H��� ��D*=m(S���]�.A�<��޽yt�@Q����>�,��&�%�B�;�A�=�V�=,��f�+=\v<��*�Z,=7��=$�\=^ZE��KD�������=����gD�#�l=�'��( ��wE�mؽ��I.����Ҽ*:½��=L�9��Ծa�)>f�<�A2=򳕻�u|<G)�<��0>��><�>�WS)���ν\�>ӯ3=�� �Q�Q>��=DN!>䝱�����@�=�|>6���v�"꽇��8P7�<���=������f5�iȽ�}#>*�>f�S�V�G=��<� \�O^�����=[Q�=�[���ܽ����)�7Y>����CQh=],)>�Ps=��нq����Z��HlM��<�;�d�>��ռ�<�;b�6������?��F��++}���">5�'>�5g���y=�u��(����>siB>��;�T>>)���٬ܽ-�B>xS1>C�\�BCA�A��=�T��=1"��t����}�~Ҷ������m=�֐�>臼Q�L>E�˽�=^�&�ӹ%}����='�8>5� �5>6>��>�jO�*(9>�o=�/�;��U�9-�=���;jyH>"��<�g>y��=��{>u+ļ�!4=��Y�=~�q=>���K<�}��{�;�%��M=u����<��/:�=񊆾l��-d�>x�=���=r��=}E�=��>z�=�ʻ=�T=�!����}�et����J��.��[��$
��{���V�'�u�= }��̌>����l��=*͝�&B>��#�O-�=E�<�q�����"-�
O.>�W�<V��<~���!>Zf�=��}��Τ>�"���0>VJ�;��=x%�<^��=�=>|]>hh)�\�>������A<��Q<_1ս��T=SS��[X�>p��=�c���H<o�7>%Y>��>=�R;ˈ�=�N�=�%���;��DJ>`�Q=Z�ؼ��.;�R|� J"�e�>>s�;U���ۼ�<��Ž֌>�
>6[ֽj�m=�;�=���=ڰ�={��cý����֓�=����
>��>ߣF=� =�P�>͛���=�y��>�2������ =�)��Y=f>��ѽ��E=6>�o>)I<ogT>�c���1����=8�X=T�.>�E �92��e>���=>o��ŏ��W�=.�����=>n��>\�ý ��<� W>�҈=K�Ȼo�G>%��=[�>�� =���=2w>=7Yҽx�D>6<�^&>���= ���0 >m�:�k��[%;>Z��;8nн�L��3<�<Ҧ'�VFd=Y�s��_L>} ���s���}>�Q�����=Z��f=ڊ�=Dz��w��=4aU>�
;.��P6�=OYk��Q�=�� �%˃=��=RO�<n�k=ٻ/�� �=69�:�C�=eFX��p>(���r���
�2�':B�WӍ<m*>3�=Ш=꽵�$>y��>7=~����. �� ;G�˼���=����SMh�
����<u�<��(=��;�–Y��-�]m�=��v>E >o���u�<�I�=�y�= (�=ݲw=@=x���&>�؋�i >h�g�~�3�=]5ァj"=��>HX8��d>�}�<�轒s�g8���E���9��B��I�3�m=�tn�|ؽx�K�E!W<���=M-��d+;������=,�������&<;,Ƚ��=�ɖ=6S�>��Ž2�a=K���h�S=���� �>����m��ܼ��N���B=��6��7�=���=ת�=d��=mf�=X��=e&�<�:�����=�7l��Ae=�Y�=}]�=���= 1>��N�?�U=��9�4�6�%���<">�>=�=��=�:-�������<$��<�cǽ@�<1��=,�F���<��f>~W�='2=.�w���$<��� i��g(<� >�<ν�U�=��s�|U���7�=��p=����Ж>sz���A=F��=�k��Γ��ǻ����<!��;wj==1j�����|��>�����\q�L�=���=���=��>���=UoG=Օ>��>�l �Ž8>��=*|�=�*�=p������=5UٽBڸ����ZD�=0�>�=�vR><߭6>fDZ<�k�hc��C6�N۟���K��=�]���#>�h�= x޽@�(>.(�;���<Ljk�t)ӽXc<���D♼ ý-�e��d=�*g�i �rUx�3��p�cn>��;��=Q���=!q�=�61>dƍ�}���{�$�KS�=����Y'V>ܺн�1ƽ���>?�4�c*������t>��4<�о��<wŽ=��=��> =>�͂�U��=AP���>�=�K�%�ߊ���fI=q��=� �=�0����3�-��=�� �&�&>�}���=�荽�m����TB>&�6����<V�[=��@>/F-<X� ��i�=���= 2�=3� �]�=XԽ`X�=`_���>��=#X���VS�� @�Ҧ��n�5>Ş)��غ��G�=y0�=���=�L>�D�f�=�g)�C���f=]��=��>��9=�oڼ8U>�/ļ��#=|a>�d�=��t��=)=ҼE=6y!>IȀ=��2�Z<1)=4�W=5>��x���h����=�p��sн��������d�la�;�ν��g=��>}��=��L>gc�����ˬ>�0>�ч<�ך<�!��j<���=�W�=�R
=��AP�<���={$ҹ��:��9�*>��D��a=���<84��h����=�@>��'��v����K=�Y۽��Z�q2b�/>i<��#=�E�<$&<�ҷ��J ��q�=aB>İ�����=^���o�fA�=������'��ȟ�8��=�3�:�#<����uJ>#8�;�D˽/�<L�T=]WH=e88>������/���pѽSy`�,�u=����b�>1Ex>��i��w>?��=������8=|T��.��
K>^.�=�3= ʦ<���������=���=�v<�Թ��E�=H;�����=hv����n���#U���h>>4���\2>N��<��=/ͼ5]m=��>Oj^;ax>e�"=��������=>��1=���;j�*���<O�C<��=��<&h�=�(?�+��A>��r=�8 >d~���\�>Xi�;��*=3�u��jԽ����(m+���>ԑ��p'Y>�dܽ���=�����Ol=|�v<�� ��૽�V�=�M���֘�ˮ[�'&9=�h�� �c� ���n��]%=Ƌ�='�f���=>�w��s�Z>��A�]��<���5�>>ɀ�[������(�����Լ;佽�[<)����H�2a��lR���u�6b4>یg�\�D<Gl��÷�= Ym=�SP�x=]�MH>Ϻ�= �Q<�YB�VX >N���Ȯw=N@����#>�nL>�">/d¼�1��PL�2-��� >��#�)��=Z������d����=C��=��=�'>*�ؼ5 �=��8��/�=T|;�Ҡ��Ђ=��J�\�6�?D�={J>2U���׵�_�2>���;JE<<A�g��<wt��ͫ>���=�z =�!�<�\(>�K�<��{����.�P�=L����[b���E>m�q�].>�Gҽм�=�BE�)9����8>NX�=z���F��D���Z�=��(>��<=ܓ�=v���%��;��^=a ����0����=�� >tR$<:�+=�t=��<1'E>R�j���=�1:��Ǽ}z����=Ъ�����>�gb�9��{Q%>�x�=�0�=�T������t ���7>��=�3�=T�d>+�=9�=�-9������됽�����>�ս�>�k)<�%��tY^=e��<+絽o��=f��<�G��#,=�н<�z#���=� �=� +���=��>����%����Э�IaV=,�ν�_�=`�%=���g(<u�t<|>>�v��t���WA>���=�<�=8�z���=J]�]����>:j>4��<����+>��Ͻ��>��>���=\�=J4�=��=�����ad�=���}��|�+�P�x9#>l�3>{���'���䵠���=Ks���w6��%���M/��s|������V%���v>�p&>��2����
���l7���_��V����9>����/>��KE�=}�9dY=)�a>6�ý7S`=S7h�u�A��,�=h�;,����ڻI�����C<JH0>�[Ƹ��[�01�Q>z n�p��_%�=��=�a�=�w���d>��:�^����P�<�(��T��=������=��<��:�;�<�������=���=}�f�1�����>���=�ۀ�Bk�tSF�Z��l��=�v<�m�=?I�=o'D����r~�=.t=��=IF<��7����;��5�O��?���۽��=�����W=_�2�`ˢ��+\�J�"�l<7�K��HK��j�����=�/Z=9���q�ܠ�{�W�Y��x��� ���%�4��=�6�<��x�A����<A�+��=��Q>m���������ռ���=��>Ŕ_��M"=�g=�ڤ<ƽ������p��=1gݽ�ߞ=�z��ʡ��z������<�ۜ=���=�飼�%=wo=SIo�;��=�z2���G<���x��<��ֽ�C�<�@弲+8�pp�=82>L��������<�q�<���=�& ��V����1� ��Z[�=�Z���r���ݼ�-��Z=㮢��/���X>�W=]�=�*�?1>�.(<����_>n���D�=NVZ=EV��e�V�^{���:����<P��=z�=0�>���<n�;����=��1z=���< ��=� #>��M= �ڽ��#�kV �nCC>M*�=)ҽy� >z{ >M����.<��K��<�U=���=�r�X>������<Ĵq<�7> =�<A�Q�[�x=�C[=1J�=�E:>�K�<#|�<�ϸ��G}<�����nB�=��G>�PA= �
<��=o��=�"=o��x�������\=��;�=*k���qA�`v�==�ʼϣy������ѷ=�����j�����<xǢ<`<,>^�~<T�!=޻�
�>����s��X��%�J��nI�N�������S��H��=����ڄ�<�7��Ђ>W�={��[<{+d=_>�=k4��F+��^; ���@��cd�����%�b=�sB�m �]�ƽ�缈愼��<p��=[��<t��kj �<�<E# >���<�%&>�tp���1=W;�c��=>����sE=Ґl=+��<^���)E= -��)�L3=� #=�v轂���q�=,��=s�f�|<G7�<�U>� �=��>������5ɼz��O2۽%��u��=��?>e�����<��A<����.Q���5=F�6>p߄=S�8=l�$���<O����)+>!a���<2�G��V�=���3��� �~=��2>QI�=�U��I2�L>|�"��X#=�>�}�̿�=J�潆L=���޻��3���=���ch ��8���c����=���=p@=�-`� !�<Z-���D���˽ydf��l�9�lN=ܷ�=�Y�<O&u���<ŵ�=� ���>���=���=��>�…�x�S=�yv�3�= |ͽ-�I�h�L�`�=qNO�6g>;�5�?�c]3�7�z�"��;�1R�����5\=�b.=�7����O>�!���V����=��8��8>�{�`*D>��=��z=|K#=�n,�k�#�齡U>^4->p�����<�H1=�R�=�4��M��<�F�=�y>���=�� ���>�e��<V��=0l���w�: w
=�ڊ�v��<V?ڽ�@>�@@=���=L�>���}���Q ��x�=ޱ��2,<Nj��V��> =��[<XLO>ӹK��r[��>����BW�3u�����=�q�=|H�x�7>�����x��!»��^>"�<���=k��<ոH��S�.����٣=,+��������:�)q��扽d�����<h��:"ŭ<��ֽ��#�i�S�
s">�Y�.���$�B��?=&k=ԛ�=;;^���#=(�=�$��㼫��d��� >���<Q�>8ñ����=���=z�~����=+��<х >}��=@>���tq<��<�ҡ=�X���I�=��=��> w�/�-��,>~n�f�)<j�=�R�k����P���Ἐ ݽ�ҵ=;{>o��=M ���V�x���ؽ�P�T�)=���~p��Z�=~��:��=�NF<�]��ȋ=�u6�tp��߉= l>���=htR�]U�<՜{�Xoн%%�=�Q�F=����4>�&>�F����;��\>&��=��=֟��NPU���a>n�ڽ�Tm�t�>]���D�M>����vϽ&Z�����6��=�]�=��=�s@=A꽐�@���%=�;ֻ\��=G+>������;>����2n���xA���/��+=5>�\�H���>4#>=[�~���_=�>��y8���l>e�"�O��<���=��Ƚ'O�='���aiP�ֳ�<����A���lv���%/>�&d��į=��}=�.=9J��)iu�67y�U�E>��c����=5�g=W��:��<H�-=������=��L>�p���0>[�<��!>�7�=Sp+=�%y=�݃=U7�<[�>A�-=�������0��멍�8$�=eL �i���h�= (�=]��=L��]A��5u�=���=e�0>;� =��>��Y=@
�=���=��C>؎��\<���=���PK;��=O���B=���=E�#=,G>�n�a@�<�6���r>w��=��;C��<;|U�������J���{�=V��Id=�M��BJ��֪�b~>��^�ڶ~=��� b��!��p�`�j΂��ɽ=�>�u?=�T�<<��O@�����;�9�=|m�=�!���ݽSَ�n9�UN��%����z���'=y.��{����=�v,�y�;��=�V=]㮼ʔ����1H�="�����=�5Ľߞ=$+<-#W=�S�L�ȼ� v=���J��=b��>��(>�?�=M��=����- X��2=�ʧ�fՠ;kLj���=��>� �0=5Lý���==Z��r�=&�=v��=\�=1� >�<"r����=�y��jV��(c˽4��=�`>��N�E6<^��=�O�و�S��7��= ��=E�=;N���~��Y��<���>ǃ<(*�<����= v>�z��b�o� �_>�]��!�����!>��/��"�r^>PS�=U�=
�'�0,#>�Л���0����<%ʿ=D�d<"���p��=��S�4.��������=S��<����>��yF��aJ*=Y�#>cى�9eڼ�[ݽ�۫=^'?��½r0��=�>g��f/��"��<kP�<�D ���>�E]�@�X�ܫ�� >+��<E�I=�뒽�F�=�r�=��=4�=�b�=�-q=�6Z�<a�=O�g�;��=�'ʼ�o��+�_>E+��3̸�� ż#^)�u�=�Q;�_��<���� �@��Ә=�v=���V�=ٍ�=�x���G>*Q���녾tL>En�=���= 3�������>��8>׊�������T=Y�b�c�=�t.��#=~=�4���o=�q=ĉ��:���i���>�$����=�^s=$�l�Z� >|�<����k�9o(�=���=>�<������^> S�����=Fߞ=��ν_N9����=�]̼����� 4>�U8>�7ͼ14L�y8>�4[�&Ѐ�.��^�JEW=��J<�@ �'Z���;��N�� ���Ѽ[y >� �=:�=�<�qj=�O��P���fm��`>�-J����=�3=E��5|��� <����<1�;�Z< �c�}�2�]r>���E >q|��Z#P�}ġ��a= a[�+-ҽ�K�J+ν��<<��<�?@>�!Y�&��;d��=<��=o��=q�?>:h�����;RU�=t=W�F=�U>=�m�<-6����<�j�<�]��;i><���X٢=(`�>@(��B�C=���o�Y�F����`>��j>&��=�)u���:��.��I>K��: ��# ܼ%׫�ݾ�=�E>�b=>Q> V�����(D��8��<Ow�<����W��=�����f>��D����T������%>��<�T#���l=
�>K@@�-׽~ǯ>���͑=#�W�/0=&���>p�t=� �=c�R>ܚ
�ü�=t5�=59>ac>�3�� �k�tb��������<R�=�Q);�
��!�=2ּ�'>W���� )���%��3���I;=�Ӟ=��>C}��ʗ>��Q>$Q���QW>�k>��>>L�����Z����=G�:���?�>@�P�-�D�O�ھ���<%��;x���P�zc
���y<�ʋ��YO>z������]LT>���;����L��=��;�}������=*>ОO=�]C>5�=������!�|�s���<x���k>�M��">�N=gw��F`<�y7= >ÄJ��)o>�&��se=�=�c�u{=�����&�;g���E�Y9>���;0�X=�J����>�'�H�����>���> �>F+�)��M��ڧ�������<�J��"C>������9�5�< �����Ϡ�o�=���q�ټf�=�,O>�޽+��>�g�=.#+�T[Q;�ƽ4��
���}¾l>�=��;=}>�*#�6^p=&�+��=6<<ӫ�w��bC��P�9������{��+�=J5���=*=��`>�\�=��X�| =͹L����<j���hཌྷ�d��ԥ��-\="�!�������O�Or��i�"��e`���0>Ks�;&c����%>���=��r>�s��܊�=Y/�=��>�x������n>�TK�3��=L
�<�-���̸=���A��\��I��=[=>��=���<�L̽%>k��=���CN���콌z�=�s>��<>V��=���tzz=0Q�������4�2>>D6����=������=��U;W���uf$�/C�=� =iW�=�����{½�_ʼ��P���=��0>��b��K=�=���=S��� 闼���=SH�1�=����F��=� ��`3ѽ�2i<-"�=f�5��%.=�z�<FV>�x�� 3��S��=>�=�=cd��;��k���&=�� ��e������ϸ��h"�<��6=�[�P�t=���=�J*=�>�?��UT�Q�A��*#>t8+��4����=֯�T䙽  �+���0� =ԓ&<��S�� ��dh�=Tު�����3D=p;>&���K>
d���ݝ<��P=6 =��|�����l�>s\F��p�=� �=��=�΃=����kF��Q�=��,>1f��1�O����>�k.�'B溭[�����>y��@�=� ��2�޽�%�=}��;G��=Ç>�����>#���x=g�O>O|��G=�$�<�j,=v���찿=��'>��&>Z'Ľ"pI=�t��p$>;͔���wv=5�= 9����)�>�?�=�����齜bi=��=��=� ��P�B�_�'�ٔ���6>ez~=S�S�H��=)+\�Rkt=��$=8с=Y���٩�=5�.���j� ?M�I����j=�V�=�}E�o=x�ɺ�L;� �oͳ<� \�C�>��I�;L�D>���=��Z>����EԽz�8�7#>�y>�I&�J�>�.�Y2W=$���ɛ=� �S]�+=j �; Y��w��Rpw>֥=���>�}�=G��<�cϽ��߽V�=�~�K���^!�=a-�=�C�<�Ï=�A�=�n\��F.�T���/�^��+Z�0��&�>�\Z��%���>����b�;~u��f��.�`���t���ق����<B@[�� �=���<㪽��$>h�=0_��,;�<� �oۼ������=��u=��e�B|����k>�J���>!��=0���_ڒ=0�4��c>��K���>Q�D�]�w�} >�!�=8����}g��0<�5�R=O�s��z�=Ԧ����$>��䞀�4'�=+�Y<\����>���\�=���T�>��<�b��>K�=)��;�Mt=1q>�;��Z����;ٸ=��+� �{�.��=(T,�� ����A�½^0��O�o�Q�>�z����W`>d �<<_�����m��<����jjw=}�½��y���;B��=�.+<�����D#<�̬�3���o=<H�= �=��ཬ����4��|�M>Q�y=�GB=ѧ��Q�s�yt ��e����ŝb�鿖����=+��;g
�3�=�;���۽��:�Vt�=(PD>}�_������]o>nC!��j�� �=.s �M� ���L=Ʋ=stʽ���.yr��́��B=˚���6���\ͼ�����o7>y���rHw�%�O�7���X�L<t)l��t�������_�=M7���=>%�t�`b9�-�/�~ֽ>��<w ��"�����<=���(��<]�6>��1��kd=\��=S��������4s�=⦟=<�Ҽ�ֽ$�o�k�F��c��@a> �"��,��ʵy="�½T���*==z�9<�״��n<i9��w ����= �>(��=�� >|/b�,�=�ֽES�<�%�A`h>H�%>�N�=��j�st=�=�[��=�R=}->^�K�B��=_.ڽ��f=%%u>��;u���#K��`&n> mB��;>~�f���>�*��1���3ļ�T��s�w=��>��>'섽�耽1o[>&V��v��=��(�Fc�
��ҋ��%�p���<�ʼ�R=��M>(���rٽ_�x� E�=)��=2�z>����w=��=h!Y>եt=��>�R��t�>�r=���=9K'��&�� ��=>a��[E�=�� ����,�� y�=}=0���5*6>o�0�N�>���=N}��hsS=�=>�m$<��=\��=�q=G��<��r>RRk���:���\����=l�>;a���$+�87)>��c>n>��y�ٹ�=O��=R�m��=��.�=6 P�2�:>��<���׽"�l�)��<�=�oý)?=�X�$=j�[��Ls�bL�ֲ�=��g��J˼Z� >��i=���=oŽ��%U<''�=��=��3>�Έ�Ԑӽ� =� ��?,�=A<N�ܼ���=~�>"�ܽ�l>R\���>�+3< �/�;��=��>26>d>�=��M����K�8>���=�X7=� z=��3>���=�Rk����S{G�����C\=P���2�=&ؑ=�{�:#:����=/��<Ȗ!<���FO����=SW�=� �Ɛ'�Vzh���`��8�=q��=�W��O>-(>�*�;��e;[���z��U��;Еu��ن>=���<�Z=Obe�I���=��=���Bb�<� �=�X<>��=��1�r&�=;}7>(��=�'>�n�=��*���Z=�$��o���ڼ=��=� >����Ì�;��d5>G/^���<�i&=��Ƚ�h<�+Q=�`��2!>�����z��x��2>���]-����<��˽䵇<Uy�=��=��M>V��=q S���>K�>=% ��s�����<�G ��^<����=����]ټISν��=��!�3��=�D�=�q��_��<���=u��<�(�<�_���Տ=f��+<���J��=_V �-��=~Y�<ù�e�>�׽{(��
o����<r1>2>�mӼ�1��ۺ�<`Z�=U��1�9>��{=�b���0�2� >�+=; (>�y�;�>M �=2��=�)>{u�=�ԣ�� �(Q��Hܽ�:���H����=4S���,�Ni=y��<"K:S��s���f�J�@�:>!@�<2?=�ɼ{o��>ȨT=�̢= 0�>d����,�S� =���<�!=�&�#�Z�=��=��=�1ʽ (:>8�D=�y���ٺˢ<h�0�(��h�>.�9��n�� ߺ���>?�¼.ϕ<=��=>f⽧Sj�_[�>���=� =�ῼ��="���+���'���1>'���H
E�����=ƽEe��|��<���==]���I ��� =���=�m=![q="@`>#88�
g��*k=����t��0�( >>��=qw�=m��= ��F=o�&>1˩:P�۽ �� ���[n�=}X,=2Y�>�1 ����<Q����^�<����.��=������;>�ʊ����=,��=N����;=;�=h�u�`�B�Ē�����<��g�~y:>nI��ID�8v=5C>�a|��!>Ί�<���=�ٍ�1�M=g?J>䕻#N�;�l+>��=��<.�˽ya=]��=��.=��T<D%
=�x�������=0�=��$�Z{$>�&�?��=BoڻR+���>��2��?%��'�<X"S=���=�� �gN*>�R�=~��=�S�����=�Z\� ��=96%=�3���P�9�<���=(e%=r^�=+���Ī >�L��(o��i�<�6>���$;�KPм��=BٽX6=:&
<���:���=M$�� "���=O������=$.Ӽ����i�5�<a e��㺼�������<_'~���<�4ͼ������>�=���;ˡ7=�>K?
�~L~��,�=��_=u �<5����R�=��=>��W��=�ë���T�̢>���;zL�1h+>4�D�Л�<���=��=�"��U�=C�<�ܰ��v���<�-=��%�hB_=�ʂ��'=]�>�/Ž �⽃�����#�֤�7��"������<2H-�)��*��B-network_body.linear_encoder.seq_layers.2.biasJ��s?:�\�;]�<���< .=��^;��z��>�<���<��C<�3�<�^z;�v�<���<���;��_�<�F;ە�<�S�<' =��=�-ƻ�
�<B"=Av��e��;�p�<_�6�o����<u+<�ç:KӋ<���<9V�<�=fl;<�]�<9$�<���<��<�ߓ<nMZ<��P7�ȻB�-<�ř;K�=%� =U�V;��)< ��<���;H��<��;�&8=�%�<�Y?<&8�<�$#=�{�;���<e�=�{�<k=o�;� =�b�<�ˁ<�_�<u��+��<���<��<���<�a<��i<��:=Dκ���;�ǻ<&��`��<�B&�3/�<���C?=ms�<�q=y+;M` =�^�;S�w;�R�<?�\<�N�<���<\�=���<�a�<�=�<��<2��<o�=�;�u�;�L<Ѷ�<0̂<��/;R��<9�=�X�<OW�<�k<���<C�<u�=�Q<Jب<�<Pb�<8_c;�S*<s��;R��<�~<0�<*����B/network_body.linear_encoder.seq_layers.2.weightJ�����ݣ��+���m��Z住�>���<�� >�-�=1�%�rV@���>�� �!�<��6���3<9{=-��]���ʻ�M�</*���
=I�=4ˋ>Y �<&�=ڝN��!�=�4=@��;)'=��O=~zN=��1��Wj���=���<,�����z�<y���:���a�<@��;��<)�=��=�O#�2@"�V#ϼ����k�|<L"�<֡���Ƚ×<C��$��=��S=��=qڬ=�r潖�;��<2NH=RE="���m&�������p>�ܸ=fO3=�F�=>ʁ�=?���,�=O�мK1>��?����<d�9�nU;��ʽ�:����=�XL;]K�=›�=�-z=&�5���}=`񱽙��<:o�<���=Lk >��|�ѽ;�|����tü.�d=���(�:�B��u[��ش�d�<�Pi�����û�tݏ=���T��=��Ƽ�³��Q�-��
� =�'h=�ެ=i�*=�R
��K!>�4&=X��g�<��J�P>C�^�BQ>��`�i��V����
�Wg���7�|������=��l� ���w=!B=X�o=�h*�&�ƻG�f=�E,��ϐ;E�E�ݠ�=�����h�<��:�(�=�H�= �ʽ�/��V���J��E< �v�ƹ7=K1�<��>�ܽ:c�=reR��"j�Ԉ������q��=��O>��ԽE��<��7=��<j=&��Z�<)�׽��5=��!>u��=l�\��n���i�?��="GO��=_]���bN�m�e����}<5�S�ޞ=�)���ҽ�>>A���>�Ҽo�O��6>����@@���.:z9(<�S��\���^<k �=���<o?�=qS>$y�3�E�P���<���c��C�����<d��M=-�=l#8=-�<��>=2;U� �����R>��2��2~=�$�=�t>��s=ߢR���=� >>H�<��<��ڼ����>qk뻭g���U�=��ҽ��S>����Z����=��N>��a<e��;��$�\��c[���2=�=�S,��YҼ$d4=�������=��%=d�>6.m�6{z��=V��=��G�,}�P��=���Eצ=�8�<(�׽5����H>|��=�V�;S��)� >�E=�ׁ�Z�(>NA���WM=�i�= � �X�ʼ�]\<� j�{�=� ��<�D�3=����v=p�=�A�<�E�=�+��޽V���QٽgoC=�1��qw��N[<]?���<q5�=:r�%>��ۼta�=�:s>[��=r�����]�~���́���<=f�ּ55н��::L(��t��wv>>�.I=R4�< ߹9L��Fн��H>$�����<|�>[1=��w���彘_�� 钽�����5>�c�=7!��T����[=�0������=�c>�Y�<�™=B?߽��4<��[�d� �R���ֈ��BҦ<�>���=M;n�ԽkQĽ~��<�'�Y�$��{�^Ş=������e=�jZ=o��=Y�2���=�aٽ���s�8>[�/�x��=rR����=CD�t>���,:>_,���~���&>��>��=]�>�Թ=QB�;��q�!ȭ=ׄO�t�L>a��Wz����)='D9>B���y�����k������R;=�Eq���>��&=��=�f,=4�p3����=�m��/!>%�_��y�=� ?�,��;�p >����{�7�L7�=�=�';Z�ý�����=P@>= ��<:ξ=�e�=�v^>0О<�/�=#�z ->Q��=��e�C����=�ɽ`�'>e+>9ϵ=�,�����=���<$�:���=a&>l �=����c��� ����k_m�L���� ݽE_���\=�|�=��|�=�=����_\=�.0>@I<-;>�~�\y�=��=6C�<�W��0zz��\��
�����l9��@%����=)U�=LG�;D�=�T���'��jxO;���
���ԯ-�#"A�<\w���D��g=*�>-C���=6u�(?V����=H%齛y�������-���=�Й= �Y=�_=_<���@=6a�����=������3��@��"���i>p}�<<#�)M�N���]�o�4h'9�ʽ�g�ϼU{_=6}�;dk}=�I�=�g�<j�>�g��,������<������mն�-0�=�y�<����*r�hXμ���<��3�ʽ�_�=j����ؼ���=`n<��=�:���?<�*���Бp���Ἦ�>/�I=��=�
��U��y�@�=���J��u��<��>�=����=��C=c\e�/#���6 ��l>��]�Lv���m�=�><"ݽ��༿��=w�)>�>�h�=�a>K%�q�o=b!>��
�3J9='н,t={߽93�:^�=��2;~q�|K<[U>��U=��Q���*���&����=}3�=�8�7!Z��5��=Ġ���J��R=��3�>]ք�*��=N7f��^�=���Í=ZFi>���_��=6�p=�|<�σ�P���hU�=<� >L�J=�+��A1 =�/ٽ����z~������ф�=���=��~Ӑ<�KH��;I�Ѧ=�@�=�������=@�h�J=�%�;H� =~��=�L�=��=钭�ƂY�)�"�E=*���F�h+g���)>�X�=�T����=��/=�^=6�>ܑ��$)���a���E�!��<�н�=2y��;Ľ�@���iS�iP<~�^<B�=������g��=��l;��%��=�v����/==5>�}�.�u�4P����=�g�=��<�ȕ<݅�� 7�V���D/i�Kl&�y�@=bWS�|r>� s=�����
���v���(��� ��"���=a=,ܤ�1��|{<�� ��[=�wt�0w��2OѼ�;���J�<[�'='_)>�N��?��<�@>zT�=˭��*׽���g�=_n�=s���N��j���m���=�ނ=z��<7��%��Ծ�=q}�jG�=[t�=v�> y��\���O���R
�<��,>O�����ٽa|��&�d�=�Q��"�=�y彛�ܻr+���r�=������=dj���=z��=7��=�� �Ա4��0<�^i���%<e⽡�F�M\��HΘ=�Ͱ:<K�:�׈�S�=�8<&�����������+M��D">�m�1����R;���ܽ��z=�1��ļ�G'��ؼ�H�B�8,�$���G9��<�_˽+, ����xw��gi��&��<�i�>�O�=�ゼ�d���7>h�;̇A=��=���:=p��h=�=�A,>+k<:�#=� 9���>9�Ƚ&ZD�:5�=�����>�$����k>0�=6=�����='AY�"dG=�@ �O��j�G��_I���'��S:�#䆽Պ/<�%=�_2= G6�j�ǽ��;>y|��>v뻡o7=�=� �=�4���������FC>7�Ͻ<JW<�X(�D��=���=��B=�5.���>Ԥ >ղ��dE����w=njE=f�R>l�׽�'=�4&=Mj��`_7��J��n���V��'�<�[�8���'��i��}��2
��~ =�Vb=��!>X4�;��n=!�&��\��u���2�>�^= ׽�x��c;r��\�p �=��`<:@�:��=���=��=��D<a���� �7U�=��<L��Ej�~D�=���<g�>����0���>7N��{@>�@��ߡ��`�=5�>}�Q�xC-��sr���=E3��%�=�^�;�6c���#<^� >��8��ަ=�n��ouԽ�D
�z~> �z}�<7��<x����t3����=��=M�F���
>0�3<5��>Xe���?��u�<)��<װ�<,�S�><�B>���<7� �)9����;��\=짭<گ>{a�=*ȣ��i4>\�q�չ?�(��=�v|�B=�=*۽�LN>l5
��s�o-���a��^z�#���2�=9ٚ=�jJ�(�H>�o+=�j����<@��|)����=m{K�|�}<������нK�=&F�<��*� >���=V
>Y@��`zK<��½tż=( �:#x���K�;˚��◝�.�=T��>T>��D>��=�����S�<�ڥ=��!>��> ��<�2X����;8��=X�Y�&� >{�=�����=��<�i�=�[ ���=x8�:e��=I< �#�󾼏� >.�=���<�.=�.5���=x�q� XŽ�w>���w�8Q�=��� ��=ٝ��d�
�c4!�}���EH=�X�=�&>G� =Iy�=�ļ��>�-��M��pk�=
k�<�N_��섽@��l��=���0�>���>�:+>� ������N>ha�<�k0��;o=���^��� �>5i�=� �>��� ��=�u$�ɏ=��޻�t˽g�(>`��=�!F=.�=�V�� ����=�c5�w�F>����ً�v+����i��F=�#p�Tp���m���i��Qv�;����vN�=,� ���(<� >!b[�~˅����=d��<�n�~�=�*(>IԹ=�� =(S>\� =Z�U=#R�=�C>k8����#��-�=C��<�������=�*=�t��s�=b��<��)�ľ
>�� =T��=ם6��:=F:%>��q= c=��D�@���u>}� >��'>�a2�x�D�y��=���;���j�<{<>p��=��=���ʹ/��0�=�GM�(����S�T��;���2�B��~�|����y=�\K�&�y=���=b c� �R=?�D�����p��<�>&tɽG-�=��<��u=b\��l������A<J�����<B���=�E�<>�Y�w���� >�n�=:>s
=�M�ʚ<�S>gUĽ��=┍�hq��c�4��[�=��;�&���"V=y�=�6C��M>����TlO����=&3u��Z��j!��B�g����a��=#�R�����I������=|�ἆ֧;M渽�0�=wiͽ�g`�N��<�r=!��<�J̽�M-�N�=�� =�Π�J�f��������;���<=���fh=L���q�Y��}($=�b�����= {��UX���I��E�<p��<R�� �=%$S=�Ic���ݻ��#� ��<Ŋ=�d�=.B�=`�:�Z�=U��b4��A=C�2=ۜ)�Ԥ߼��$�/�1=5��;4���ȷ�;3O�a[һ�,�=��>+H�h�D�����}�=�j��i����-��o=J��=����#�+�j>8 z=�0>o��,+H��t��Xt;>p��Y�<�0[;���=^�̽kB>^��=��;>�K�K��B�=�D�=�O�=TD��L����:�;ͻ�<k=a�K>N� �`���4ܼ"�ռ����t�=�[�h�d<a<ὲm!��@<Iݼ�'?�U�Y�ECM��ž����; vM=զd���|>0=�|��v=�p�;�+'�� >O^��S��Y��X�4>�����=�<M���q���Z?>�5�=?�սv�=ȼڽ�v�=H�]��Ǝ���=�zz=����%��ς>1/>���5���@�����۴��B=�=��W>�\�<ιc=�3Y=XVn���#����=w �<1�=�L,>�w]= �p<�w�=�m> % =���=P/d�t,=C=<,
�=��ƼC�<��;��$=Մ����󒶼�,X�|��Rab;�i����֗>����;j=%�=�w��=������;��=)Ľnd=�2��[>F��< Od<�S�~�U�@_�=a�$�B�(=�1���f�U��=�����#h=+c�<�c=Ԉc=iQ��G�=,�:=�� =��i�HV=ڐ=�ӽ���=�.�����=ym��B���փ�������o��<r��=E���p4���i>E���p�q=�8�%��<#�=F=��r*>�s��d�_� ���!^K�{��=E��<����<�=�|Z<.,<3�������5����<Ix�=�sg��@�����<F;�<>_ �m@=�����z�w������.�n���>�S�<]�^�}=�(=Y�_>�����νГ�=��=��(�����M�ݽ7p���j=b@���O����<B���t�,R�=��ϻ��x=�
��o)>��Q�� W��H>�k=��8=�y�ǝ׽��H>��=ld���e�_�޽Z���r�=1���H��"{�=�"���/>�8>����<p#�3�E�2����5>&7 =��=�����{F=��:���='�ѼK�/��{�=�'�,���1c <聂����;�m�vg�=��U<���=_��=��5��k=>��ý���@��=?�>��=�"1��>��9�� �0W��o���o;<ģG=����U�����=2�V=��D>�9�=wӈ>!V=$s=�t>�d���=G����=/R�L�>>х>�[w=Ko�<�qf���>�C��^/���0�=e�}�
Վ<膣;W�½N�A<���=n���m^�=M%�<Lx =��Խ(��=�7�=��=yA&���o=�v�J�=Xl�=t{�
0&=.�=[��=K=��ƽ�ƾ��-�����S<��0>��;G�x=$
ڽɧ5�����n����:>S#�f2 �|��=��[����o�p>W��=Z4���̘�x�=*K)�Rع; L/<J���O:��CM�Wl�<�V}>�����伈
i��Zս���=U�1�=CJ��*G>���=���= yջS��<&3ʽsw>_f�>�Y�<�t&�΄9>xY>rH>�O�ʳ�;�[e>�ہ<�I�| ��W�F=c]�=y����h�<'bj=C=�<\�=ׁT�-�����;e��=��>}G�=���<&���5�>��νhmI>a� �:���R�<�߭��%�����=1)��0`4���:��?ؼ���6X���m>��m����<ȯI=��P=��S=_K��Q?&���=��E������ ��'=��;>�5�=�fB=F�;l�5>��>�Y,>��h� y�<�@p����=�^.<u52��<�<Λ�*h.>a5�= <=��@=�[=�� ����֡+>+#;>����=j��� ��=�8=a̡�"[ܼ��.�����N]>qؽ,q>����Q<�ѫ=X�B�TY����L=�>����޽���<����[>Z{ѽ2����>��a��瞽��8>�>J�>}��;�\u��Q�>_½��x>�5{�6Y�=-$�=�Â<���=A1^<>c�<w�߽~��b�Q=���<�=�G�����<�<�a{9L�u>0�"�frн����xJ/> �>��Җ=���<���=Zܪ=V�;Iy�����9�X�=�� ��A> J�U7��]�<x悼n��<��8>�?#�Gz��|Q��"�=�W��y�=kz��SH<���<��:~[�9(��;���Q l>@�=�a�;��8����=��&>P�[��'�o��=_���Z>�a�=�*p=�/�<Q��v>�I2�����Ҋ��<o<��Ӽ�=�z�<�-Ͻ�3��Tʼ�S���oƽ)�=8�[=��=Oq>��BD�m=�<�^o����<̊&>C��=հ1�`) �4~i=�Zs=�����;��n;#�e������b�������>��F��$5=�l^���U=Nĩ��bp�6�[>j�1�R�u=�J�<���<��x=�g�=\9r=��=-
h=*�>4��=�~�����������i;��R<>�%�������P�L��=8����ȟ��U�<��c>p䑽j1��L@=Ђ>��X��V�=�q>O��7=O��"<@���%9���a ��-[>�a�=��<��<�ι=��7:Z���l����>ʪ˽�͉�i/L�*u�=ߧ��*d=88>�;ތ�=�B=C�ʽ}Խ�Ƭ=Xd��SI���=2έ�I�=�=|��=� �=>n$o>5Gu<�l�<(��;z�d=E;:>DnN�s{��:�μ�AU�񬉽Z)��ݔl�XI�=�J���LǼ�L�=@`�ƀ<:xA:;�E>������
�y^=���:̓� Q�<m��<qN�=����.Z=!� ��co=_f��%V���ƽ���</Ժ$A���2
��{��E��=�5�=�S��O��=+�>�<�=8�=�v(<� B�"8+=� ����㩸=*"μ*qT���A<�[O> ������=��3>,M�ׄ�� ��;�A�=�~<SP<��=$�J;����[>����H=����l
���qY�LL9=�e=f�f�����?��f���Ì�=��1�-Y|=6= >�©�z�=���=ٽ�#>�!�Gpּ�g�;�Z�=ؾH<Rq�=�/>+sH���$�T�����+����=l�ڽ4�0=n� �� �rD��d�����=��[=ե)�G�ĽN�/=� ���W�=�=���<�u�#�R<�q���y���v>o������q#>���=l�����<�84>�N�=;9���qؼ�6=1����R�<��L<y�ͽ������sG,=/CL<:�=c����Z�T��!A=�&5��'��2�<��<C�vuX��,ٽ8�=������VK��3R�!� =
e�����=Ã�=󠼔�B�E���L햻W�н��9��⁽H�ý�޶��H-�� -=BfB>Ye�=�eb<�Q�<Ӂ>�����j��a=vsj���<�#3>y��=�*���,=����.Y����=4*&�'U�+�Ϭ�<|6ý����&|>�'=9�<�[6��,�fI�<���=���;}F�Y%�#�<��9�ȧ�<��<ڈ;��(ؼa.A�Λf=|D��==/
�= ���m�>�5A��fェ�J<<�컎ce>�>����9��?�nd�=��)>�yV>��༠�ʽP\�=6T�=v��=P�ּ���=��*<ꢗ<���ð<q��;�b�<Pn]=5��;�i�<���� ��>�g�=%���:�� ��l���j�����5��Ȍ<��8�0mf�g&�=Fb>�u����N<2y<D�E�����1!�>��=�_���.��ݨ<b%>��<7`(��KK�%>s��=6�;> ۷��Õ��r=ۃ
�q��=�T��1Q׽̏r�
���ϼ_f�>jG>��ɼ��;�]�;��/�<��b��=vڤ=�ݎ�����*������<]��<k�q=��'=x���M11>]������=w4f>vD�R��=�*�YaĻ�,W�Sq�:���*'�=m�=�,>�H�={; ��i>̰>��6>�2ɽ�F,����%��>�02>ޕܽrJ��!vѽ�6?�@�<� =B1>-� ��=δ=>N�=�qx=(B��2�m<��>Ni潄���L��[�Ǽ�l=w��=�%O�#G>\xz=\�<P�Լh�=Tt>��s>ѿ�=����7�>�/�1x:=��V��;)>��<=u�6�=>�%>��&=��;��[=݁��<�#�=�窼������=�ݮ<��a�|�@=\KO>p���!C ��2�=_>�g$�����݈=� =�P���$���LŽ8�u>y� ��½���Z�=�?�U���m�=f�<��"=��>W.��cӽh1_>�Լ�j>���<&�Z> ����k=�Bx>߷��W��W��>���=��� W�=P�=ua���<£��oC"���=?@���޽5���B��=c�s���ý�=�_>��f<-C&=n5�=C�,�ڑ���oO=���Pw�<��v�q���B��]�w=��B>D >�X8:��)�T��=���<�o-<�o�<p�^>L�x��~�=�z_����A����*�����U�<w��껁��=�
�WR�<��V������+>>B�=<R�= ��=�=5mh>���;5�<K�����='����TE>�=N�����2%���>��a>8��)�6�$�^�����!=�U}�:�¼�
�=JL:�1<sJ��P�=��"=]N�=�=۽���>N?I���>S�e��xB��9нxs����軝��;��D�?��=唽�Kӽ3D�=]�=5�>Z�'��R<�a�=u�M���˽:@�=Uݖ=��0>=Mf=�je> �>�w>���=6��;�н���;���Ժ�=q��2i�Gډ� �!>���8� >��<��=�Ye����:}��eZ>���;~/7�~�<^�t���`��U�=��>�6��?->g�\�~�)-�����9��?>|Ǖ���=�: >��ý3�^=�Q>rk
>B�����f� >��=����qT�=�"7�v)�=벽=��ѻ�ڽ=pZ��)�>�n���F=W�#=�>�<�{���h���d= i�� Am��Pg<�_ʼ�NX��V4���=1�ʽח�=��佊�нbJL��>�<dU�>��X��ڡ=�@�����(��W�/�P>���<����ݾ2�{��<�6�=��'������q�<E&��P`���">�p�=®=UZý�q==m�ƽ��=����>�(=�w��Z;> ��=�0������F�x��rn=O� =������=˖Ž������*�=߉g=&�
�=H��t�>J#�N簽ReC���l�NzX=��>|f<>�A�=ܟo>O�S>�#W��"��O�=�1��v�)�c�<x��n7���^?>�Ԥ=̺��sl׽������ ��j�=ws>]���빙�R��=]#J=m�=�9P�����
��=��,�/�=&�e��u����������m�s"�=�SD=��޽j�=�&н�t�=� M��g�=Q>��Ͻ���򳼽1�='=(W< ���@�+��=#2g=�U">M����m��!�=�ͥ�<�<�GڽF����Y�/�d�W�V<�U@=�����<)��!�WU��5T6��D=ԝ:>��H=8��=spD�y�|=�B= 1���7�&��<����L>�V��~�<"�%�b{�=���<����$�������B�=�3��=��R=���>.�]���;�1 �m�I�2bK�ȑ�<򫿽r��=$H>�`�<���|���Z�=1𧺞僻Y
=�w���q!<�:齔�����-L�=����е9�+*=�j���sý� =˱���Գ=x��;LK=R����*½�ko=�4=���Zկ���->��<l��%�=Sz=��=���<�^�}�>����=->�Ü�Ӵk���>�*�=�?H>�k<�M}=w��<z��=�vE<�Z�<Ϥ˽ޤ
>�n�lP<>V,м�j,=S��y2<N߸<�n�<�!�� �#��ܐ�m��=�{7�����U��&.c��Wq=�LP�cga��qQ>2S>)|�;^�E;�s����;á=ڭ�:q�T�/ż!�׽�bY=�3��ݤ���<- /�/�=��m�(.v���V�X����P�G� =H� >1���� ����%<.�ݺ�w3=&V�=�K�=f2I�,�o=���� _��œ�=�)��<�=���<�p�����by�=z �V�.>'!�Z���������:�$J><"#> *O=�MF�Qˇ<"։=�6������ �=l�������HB��6�z=����?4@>wu�=�)���{�<�ڽ�RL�$ ~�1���=P���3�>m:�=6�/>H u����<d)�=�u���Z>��5>���j{ �tS����l�_�������?��S��������<�hs> �=={g�@�˼�i�=q���A�<$�@��-)=�1�/Rüԩ�=���=�����I4� �$<GC�< �^">��><��;�� <��L<���<A@=C�,=�k�;2��=W��=t�����<"u�;� ��a�^=����!�9>�h�=���=���c�=�5O=0\�=�B[>�佋��>;��=�21>-"=T�)�� '��W>� ��b:>�m���л=�ˋ=���=b��=A��: O���,��슽Ƚ�K��/[���y=�Z�=��z<>��=� �<��>��4��� ����>� &=���=e��<ώ3=S8�_m�=Y�����=�p>�8���-��A=#�k��� ���K=Bt彥*h�yC�=镬= �����8N�=�н�->=SF�;�"=�;����=߽{�<6^[=��g��ļ2��;\�>��On2=A[e�|�f=���=�������=��Q>�s�<����&��2�1?$����=�Xk��"�<�<11w�D�?>�{:���I=���Ú�=Ck�<aH���u�=tPK���>���<S}��u#>�x��m =���=`�)�%̗=��.=R$�;k <�*I�m�>���>㭍=?{�=̏�=E�%���u=�4�=��`>�2�� Ё���B>�Kl����<T�?=I� �ߔ�=j� >�;��>$m�=��M��˕�h�������~>�@=���z'=�`?=�����=H/>��=j�<�ü��=07����<v2@��%����^��=';�:^U,���Ǽ"��;�4�}b =����f�ٓ!=�]<���<��M<;��֎=HZ�=�Nӽ|{L<֘���4=8�>Z��C����<�[ý����wȸ<��W<�&� p+=#b4�ݓؽ�#���3=7��c��=�Խ��A>Hn�=�;�=T>���e"� 9<��f���Ip��F�l( ��y�<9-:��N>�v�<)1��9���M�*q��8 �n�I�����=������db��/�=��B��Z���L=�� =������=��_�2�=W)��JH>���<.K�<E*�(9|<�,�:*��= v=���=!;�:V=|[�J��=?䉼�X���s:= �ɽɽO�y��eI���i/��?߽Va��I��=� >J>e��᡽���=B�f=꽅>ݶ>U�=ި>��)$�'��:]�=�#��-����Q=��$>��>4o��9��<�7�����=��U=���=}\�=Dl�����V���6�>k讽ݱ<���<�i=��yo�a��>�>R�>�M��L���I9=F��< ��;S��~`ʽ�Y����b���3�x=��n<�m�� �ͽr ����4E����(�u���;U��<>��=<\��_�<i���s�N>Z��r�>= �=�i,�:;�==����*��=iX)��;�<ת=�w�=�[��p:�ľ�=����N���=l��=�����˳=l�@>-���,b>�5�=y%E��I:>��s;*�;Z҉��� >ϲ߽��׽%7��*����<A0��ɼ���3?<� ���qn�;T�<�B�<������=�(�,��<�a�=�~�=�����=��=�L��� >%Y�=_�x=� J��븺^�<:�#�~�L>��������!=E�=�j�*=�p����6>��o+/>C��;ޙ����=������U>� ��ݽ�=1@�<><��.e>H��<�1 =(���D��=�n=?{j����=E����7�#���>=K��=c�H⁽��k=�<a^��ϲ������p >ea_>3��;�K��?������=�C�=�!���1�<�~;�\� �4|�=d`(>����ڥ��0<��eڼ5�=�I�=x�ͺڀf<��$���=�7V��~T=�� �8n�TB��=U��T�=�����v=B3��&��<U�@�we�<*2�;���=@5=<U�=*s=�'���D�Z���#�9=��l=���=�2L>,> �.>".> '�<���<�� �<�ݽ�ι�jP8�쥽��>�ͤ� Μ>��>�>!{��oG��>I�=��}=��$<�ނ<���<�u> #�=v�=���}��4��'�=;�q=qX=�Ὄ� >��F=�]=���=L��t��f��=Xj�=>{��=KH
���B=Y%=�td=�����%B�.�X=w���%�=Mp��t>���=�Z�<�g.=uH��S�}�,�?;h;��|=~��<@赼�m=;�K���߼}�7<���=���=!�=W�=�dͽX��� 7�;WNv�R�=�~2���`�<V�=B�+�]$=� �I��<F������n>�}>>����<S|�S��=��t<3�T��О=��E�~�f=_jj���x=�"/��9=�p��(k��S>�ZR>�>J�ӷL�C~�=���]�2=�3ͽ��V�fޮ=#J�5����%�>X8>~+T< Z<�7�=��y=Z[-��)<J_r="�=,=9>�l�=H���%]��޻�>����X����O�l��;\L>�f����ý�>,8׽��̽�֐=�ȳ=1�?=8�f� F���J�;;e̽�淽�̪=mM6����=���
u>4���@�j=99:��8����3h�c���>�^�<�%���C>l��=�\��;1�� �8�z�>���=���=�VX=xp߻y$�=S~�<pS�=;h�<�k>+)Q>F�u=gA=\Oܽ �n�>�ܽ�M(>?5��@̽�tF<B?=�e�=��<��S<6at=]�����|�L��=��=s�>��b�&M�<"�˽���=o��_;���B>�\<�0=���� �r >Lt<��6�7��=�˄=�Q��-�ϼUY��� w=*�N��;<���=��i=�N4;��V� ��;n\=[�i��<���<%�?>�;*=J��=�l�)��=Dr�<nS���Z>��u�b�M��ɼ7=�!�<����|?^=��=C���ҵ��p��rX��H�>�J|����f���L=��> zP;�{+��}߽����Ҕ����<.��hk�=D;;��="��<��"=���=�Å��6�=���<�:I���=���q>�����O�#5�=N�:�[�3>�]�їʽ����#ۧ=%
a=�j=Àk�}8>�,�o</�>iś�4�=y�$�,���mu��ֺ=�нO6)��� >�U�=�齾(��BO�=�[1�p������<�{[>���Ǐ=��罅V��-�<�8�<�*��<�;��,>= ?�4G���|ѽ���";���)b=kB=�u������+->�>�=��-�����{�b�D�ؼ��N=�����g>�t ���Ƽq�����=r�>Hw���v�<,@(=P �=���=6}罒�����=���<�� ��#��촼� >�׌��>���<�>4T=�C���w�o5)=��='Ĉ>U�(>~�'���H��;>-;{�`T�=����1�q�Ğ��ʧ�=���= 6�=ř�=�Y>�s->�����e��w<��4�=KM����n�
�~��=i�>3����B >)g�# �=2�V�Z>�e�=+��=�2��?.�� =>0#/�
��=mu�ݩ��o���h)�z�i�N~7���6��K*� ��=q�<��I���к��a�V�����T����N^��m�Q�^^d=-�R�r ��+β�)�����ܽ������ :��[�|�Ǽ��T>�R׽�Ɠ=�4�=m�; R><#T=غ=%���䈼��a� ٻ\Q�VfؽӠq�ˢ��ң�=�c�<� 佶 ؽ�-(��?=�y�:�>|�g<��齁`�=�q�=�`y=98����=_W0<t��=��3ٞ=:��=�XJ=���HB���f>f;>���n����V�ۙ����]Б= ($>�E>�򒽘�U>�H4�����\=�f�=Re8���>������'=�t@�ڤ�<p�罔�>�1K>z}�:�8@=`罔E>*@ �#H��*>�ś=2��=��c=��;��� �z��[|V=��>���I�<�8>b=�=���=���FM�=,���Pv;�[�<�뉽Ɓ��d�=��9��4>�/����1>��>�-)>��L�w���P$ռ���=�6˼a�K��=d���TF=Va��ު;>�k߽�����Kt=���dp�#UJ<t6<��={�=�I���A��X��<�?x���Խ!y�=Z2�<����=KX�A�>>C�=X�D�W:y�bB�<~��=����i�,>�='=HD=>�8��������m��=;n=����ڣ=���<9v�=��>���='�=p���b�<����i=���"=�j�=o���Iؽ�3>ɐH�!�=�c��渣��fM;5wY=:h�<0����/��%�h=ų(�e��=��޽�:;�����O=~C�=�.;M���h��Y䗽�>.=��>�ȶ���(=ћ�;ɦ=�g��\>�M��50�O�V��|�������~�8>2��L0=����yC��0�=���=Z�x�'�w�X8�<������Β��b�L=���=�Z�<�����=�93=GӰ���6���8=x��=/8:�7���7w�å��Ł=b�=�s���> ƥ=;⽸����U��L >�Ҁ>i��=b!L>�=��>� �=�����-�G:_=)H�=W�;`tg<�V=��=^Ӿ=3ױ<���=�>ӽ���ٚ=~��=Xsz=��=O��_ل�d&='�|�^� =��3�4��=��缮r=���=�x�<��=gY+>\v�=���w�d�ǭ�oΩ��μ�ݽ"v��8��=� ��-�<���<ML��N>�=�Ќ=J�p�z9�<�9i�^&�;eR���F=\�����=��M<^��;�T3=7#)����A3�=5�����=Х�*pB���\���G��I$=�嗽�e�=��">�y �j�˽83�<�G2>|ٽW�1>�S��o�y=s�c=�x=9HU;:5<F�9�@#?��S������= $��� �?�V�Y���E'��Ux�=
4 >��
���8=Y�;�Ƚ�@���=Tqü��>���=Ջz=�v�=�]%=�R~�A���t=CY�;M�#�rT�<Pڗ=K(_����=Xg����3=yʧ=���;5���.�ݽ�1o���~���<�<��0�=�==�����%=�� =Hci��*@�UB����>�-�����=�J�=�Q�eT>�l:J ��z檽�ߦ�C�὇s�3�¼�q>9�¼��L�F^���J�=ǀ$���>ds-�;_g:���=�c���?V=z�o>wx����=��>�b>F�/����;t�>R��=5��<o靽JnK>Y�Y>b��>O�=`�.<�Kݽ�W>���=�C���L>Se>��<@w½
��=ק>���������C��c��ro_��w��T�n=�k<k����=^�~=rN�<�ŽuV>�
>3w<���>4Z�f9>Ź�j�=�&;�(J0�? 3=�|==����a��m�=��νُ
���E>�o�M��=a�>N�T=���� ��ω�<�;�=kl,�_�a>���<&_L;5���n4�ы������+�<�VڽX!N=���<��0�_� � ��=�?�<���=�b�i��=�*��?!+=���d�{;�%a<�r=F79=����I���І�=C(/��L�;5�> V�<l���f=�o�==l����6=���V���0�<����F�rz��4� �3�=���<@wq�]̽*N>m��<B�>>z��<���<���=N�5�/�=i�0>�I
�1�#�N��,C�=�Ю=����i��|��<J�R=���=�k�� ���o�=��P=��>��B>d=��dOO���<ԙ$�b.�=��ؼ5� =e��;m�=��a��^��3��g�=9!R<2�x:�
�.M��]L>�gx=��\�L* �U�����>��q�#�=񒪽��=��,���>@��<-�H=&*<�g���ڶ=�H�=�!=�|��u�{�����_2[=���O��;���=�
W���w�X1��[6�=u;���'�<~��<� �=�%�=������={��=z��<��Žns3� �9=Jpg=0��bc=�k�=�n�;�u�=j�T�����[�:���=L��<�>L����5�%� > �>�� �J����E=��2=`�K<"��=��<mOm����=�q�����=��>U�>�m�Q�=����=�@�q�,=hd?>������=��>��h�+����&>��E�;���N��=z�=15�<rw�;G�i=_��=&m!�ำ�ϟL=�>[�=�������0=X��+1���˽�U�������=̔!>��s��D�<��5=̦�=*f���>�D=��!�����KW>���Z�½(ۏ<� z>��>M�
jO�[��=�h >)=��!%<B>qw1>�ɠ�AMu=+����Ҽ� �=�q&>������ ��l�<�&��` ��XH>Nð��=�
�k�==� ����VM^=+�x� �'���:�1�{=orE<8�<{8 =���w�>�`��Jܕ>SM��C��2�>=��<��S=dk��8互C�=��-=��r�O��=��=&{�=�Dg��-2��b>H� ��;[+�z��':�,%=��t;E����߽�� =>`>����Ͼý���=� x>�ŷ����>rܼ�� >�n�<��*=����HL���3�=w�=�d���D�����<=��5p�< ���!c��jw��5�8�Ƞ;�a>F^ڽ����1�6<�ю�GM=��f��<��]��=f�=,M9>�僽 �b>N��=���
��=��Y�Y0�^+$>Y�s;~虾b��<~o�U�{=�N��7�=}����n�=�p�;�����.�z�x>����&�<;{�;�ګ;5.ݽ}�=����I����=H7���=Q��<��<h|=iK�=`���l�<!5<�>��2V�=�н�\�<V� �oK�:}̼�Z�=Z����g>)cj��+��q��Dh=���+���C���=ZJ�_f="�a�N�$������� >�pڽ�2F�{�;S���W"��׆�= �.>� �=e>�¶�;��=�2g>���������D��-������� �j������3M�^;3��T �aF =��=��j=���:dG9���ǽ�7k=:Ys>n�3�F�=��=?��=���=Ӫ+>�—=���<�*'�^��'�>��<�w >���=Y >Aq@=圼6�G=�֛�e�x�ڭ��]�k>�=4+H>�[�:���~<��m����ym����<�����#>0L�=S#���ĽX��9l5�՚�=�
5�'�>��=��=��J=uc��� �=I"p�E>e��;����JW>�~�=)���lνF�ͽN����lD>�6�=Bb='��=6���� >�r��������=?2=�>c$M�{�W>2�H=�������=5��<G�����=�h�=|��� >�q>��6���2=n0a��u�=V
I=37�<��6��A�=����]؄=( N=�=�=?���q��=(�ȼj�!��k�=]4�<r��k~体��=W(�;s�=>İ=���=�\$>����1�s����<�A����<kf�;�8� 1�9���&=���<�E�F�
>��=�������,�H���ys���=(a+>�(�= ��=�,�Y7�<��Y=+b =�c9��< �;<ix�����=2�N���;�J�<@R�=�.�Ĭ�=4@�<s¼�� �� �����nW��+@>6�~�t�Z=���F7�s�>�3W��i��� Ӽ1B&>�f�>1�>�|s;Ff�� ���xL��C=reY��r�����V5/>N�Y���>=��ɼ�+w=4��=uCp=P6X��q�=d�=�6]=<O�D5�=�$>˽ʨ����;r����=+QT�Pb<_�0>���1��<�Fj���>>�zX���=��!���]���<.=�}���@=��w�Ғ ����઼�c+��$@>�)���>n =<�Ứ��<� ��^��e�{���=����`�P+
>��s���)=��f=j`3�S7�=���=� ��)������͓�2>x��=53;�-�<ɯ"<�=T>s)]>Ğ�=I�X::��=�D�=`����都*���b�$�po>Ӱ�<�~��=n"�=_� >��5�[���yw�<C񼡭���7K�~��=N�B>��ƹ�b�=�E> �-�oz�=dz�J.>��L��̗=��>KtM�F?�;��!>���ou��q �=�;�=6y�=ϸʽڏM>5&�=M���Y' �.{��ͭ=���=������=��:S.>��?�=��=L-�<3";=0#2<�C�=�-�;J��-u,=��˼��A������J������8>���=�����=`l>;}{��K����<�#���Ͻ�?��p{=e��=3t�<���=������>�D��΃�ϟ��V<.D��M�==v�=V蠽V��;�����=v)>��A=@��Մt������*f=��|� ས!�*��;g�T���:kB��g&�!|��;�6>o=���s��=M<)>����*�����>�H�=@�=��C>4��g0>���=B�=�����r��+�6����:U��<\�$>g�s=ʍ��}>�=ۛ�����"��<�('>��)>W�=�O��Q�y=�:=>�����k��n@��r�>�2B=��=e���6� ��n�=�`G��b{=�/t<���n�V��bG��²�vٶ���>= g6�uoz<�&��k�=Ǝ��r�<j��=�6�:�>>ܼн�K<jR.����=�,>M,=O�V���4>(�k;+�5=Y (>�aɼ��ѽ�/7>�n�=N� >7�&=�Ϭ��-\�w��E�<�N��D���ɓ=�t'>:��G�=t�< �;�l�:���)�<'^r��=b���d[�j꽘��<��4�G=h�=�UK<��T��<MJ'�7�ҽ����g�/�5� �K��<(�½�W�C�Ƚ�o8>�ce�zA����=��=�m���Q輔��=/=�秽�>�춽���=�_��ԋ=mH�=O��<O弽�H+>z&.�O�= #>�-�=��>��=� �=�;���k �l6;�n�<�ڥ=�
>"���[�<���A|=���=��=���=.�m>  >b������=5�<n�5��>���1�Ħ�<} =�Ԥ=���X.=�TF��B�<|�ڽ�4 =���C��5=}��=ͬ�:��R��#d=+&q<�^?����ɀ�`?%�� ���Z>���xY��*��̙��ܕ=�0�<��E�->���[�%õ=���N��>�4=&}��u
*>Q$�; ������=�]�=#P�=�u�=�@y=Iȉ�kT�=�l,>F.��/�Q=C��=B�=!B>螩�����#��&(=���=�_�<~��=���B��<�� ����=AU`>��ӽq�<7�A>��ڼ�ķ<�d/����=�����������"5� ��=ʹ�=��<� �D>�e�=�=h<�=�����g<$i��'D���`p� w ��բ�M2_>*��=H���Tp�<[�>F˽���=O�漉c�=`���� 9!>_�1>�����|M=��ݻ�f��ʹq� ;=N��<'�<�z�<uL=��Z<���=����a��I>�� >�5�=�s���� ��)�<�z=��0��^��>���9>q��=⁩<H�i��֤=��߽C�s�L��X2��z(� �D=���FDA<�`��k̽�%�<���<�z���>z�h�fI�<�B>hG>)b*<�Q��8����� �9>v?_�,9�=$*��i�=��H���c>i��<���>���=�D>��=D!�����<v��=%x=sS�<��J�u��p�c�]DB��t�����=�&H�i��=� �oۃ=a>�J������ �=�x&>���= ?s�� <N�ܼ�;>nwĽ��->�~=���= OL���=7�J>��=ڿ�=gȊ=p���u=Qᢽ���=�>x��=0�=#�ؽ� ��=`!���>��^�Eo�����v�=$�2��!
=|�̼��=ɠ�H:��^!��A=&�p=N��=�wܽ�!C� ��=S0��TL�;鞇=Ki�=�R�����F�8��`�=.@�S}�=��Q���
>yr>Ȱ)��)���)��^s'>�E#>���=�_��Q��=~G��I��������^���<���=��1���;�|>h>�������G0>� ����z�=Տ9�����S�=�E�����=u'�=��=ڼ�=Ȉ�=�lR=T@�;�=���80>�!>;v�7��ꝼK��=z"�<�x�����=��&��->�^��nN�����=�竽�̈́<W��=|>�1V=<ի���<��F�`m<�2b�����z�=N��=z{��T� =��N��� � �3��籽�B������W�����<�P �Ȼ�=ޱ=��V��$�=]^=Ƃ$�>=��G�� #ʽ�"�<�<��=ѽP�=3�=B�>pD� D�����M�=+1T=wv�F1 >��=UG6=0 ��F�=z �����m�.>����6�>�mw��O��=}/~=���>4�=�Q=>�����a<�_&=S^=�.>Mڟ=$�=�L��G�=[k���~�Qz��µ�=}�<�0Y>��|=P͠�>�>�S�W��hME=4�3=w6 �����5�=%}��T�O�i��<o�������U���v��L躜=��?���V�<���F �;~�)��A�������̽������=Iuý$�}�*q�k[����<8�(�`�=4:=���;N��=�D=�����=���%�Z= Vƽ朢=d����=�2�=�O̻�+<�zSl�[; �;���<* �V;�<`���j >n��=.����?*����=L=�-=(�:>v%X��8Լ����wW�=�[����`�,�=�����p�=-��$�=����n���C ��ȏ��71>
�#:�Dҽz㻼j�e>�> )j:s�R=���=|!%=�=�5�‘��Pl=��[�p�k���ڽJ;m��e �7<^��9c�|���5>�f���}�=�RX��:�=aյ��\�� �=&��:�}d�/Qd�V�C>h�
>oV>At��j�=�D �}��9���M�='���p;���L�A>�d <���=@C�<~����|<n��+���r����=���=��輾q�����9���>��`�B�/�=�����=�b�F� =m�>|�>w�><�.=Q��=q���P�N%�<��#=��[=7�=5Ee������ܽ��,>ᇭ<��=���=:)=1̚���O<{i=u�,��&�1i�9
>7$ �fJ>ȗ�D>,���G��-�����=Am=�q���z:R��&�<�:<?�[=|�Y�K�+>E�<�<��>߽'1)��O�<�>J<B��<afo��
|=1�>v��<S��<!��s"���'>d2w<g׽�a=g�>�V�,`�< x�;�u��k�=�ч�G@>>�w�)?>�!�<Ma�-#<��;{�=�5��>w���S<�����=>=J�= �=6C�=I#�� ���.�?���*�����=K�<��>p�X;cYl<�sx��� >��=�l9�*�*����<YG=K=껊�#�¶��,�HL �^���i%�=y
��څ�޿-�<�֏;�[� ����n���x�<e5`�Jd>P�a=Z���1>�<3�a=�%�L�>�ʂ<�i>=�ʓ=�C�=/��G�v=���=��=^��g\G�j9��P�=���jw=����X|��Gv=�u���0�;��=��{=�#�=�����T� �<���=�������x�;�y>�Y�=��%>�=}��k�b=Xg�<,�= S�<eF�=8n��uu6�W���DZ��,�޽ ;%=������=�wƻG|�=�E+=T��z�T=����*>���=�W��Q>�@:���=�^�:�񈾝�o>/��=S=�=,n�=t��`3��,�x��-�=���<.wS<��=��0��G�<�ʼё��D=�up�Vh>7�.>�m�>�7M=(k�]� ��m�zK.<o'�ݶ%�B�����������#��/H�HTl<1��. <�X>K��=�� �(*>_������=�.w<]Z�=6�U=�X#=+�,>9ʽ���=�NG�O� >����}9��b�<
��F��*H���>��<�&�=�a�=��G=��>�����Ҍ������ཨ��<D��=������S��̮=��޽P�d={�=պ�=Q�>�����-<�K����<<{��:Ln�����=���=���=t���f�=n�;0�W=�=Q0������*��i)�<���=�M�=s�<��J��,���>>�eX=UĻ爜�F=.e�=��y=s_T=�W^=YѼ�>��ڼlV[�BH�=z���p+�=B��=� ��k� ��Ꮍ9Ѵ=m��<�a^�U
><\>��"�<A���B�=@�|>���=�H�=����#Z���<=o=�ɐ�Ë|��㽱i�������=<��=ۘ��rC���n$�)������켽<�6��Z���ڍ�;�ິ����B �3h)�A����>?� =3��=+������<k��;5�F=��;/>1�?�$�K�=$�>�� ��0����q#>y��K��=�&�=b�>mWE>R4�=��)<�F���N�>�]��<�#��k�e��;)��=Z�/��z�=?�~��?��j>���u�=��x�����=(�Ժ�a;>��<��h������f��\l=ۇ �Ҍɽ[��=�����qŽ���=�}>7��<+&���Pཱ���� �d�">M#t�n�T�!G��Q�=���� >��?�/�����8>( �;�l=�E;a�r��\�=���=� >��w��%>ٓ1�� N>���=5޽�U;����=���=[�ν�=
(�;=�<�[=~t[������;=;$< _���;���=�q=G�><�1�=�c>�}�=H����p=�E~<4����ݽc��Ð=ۉ�Y�Z>
���r=0���~���!z�; >�:�����y>�(�)ߐ��ع�7H�=l��� �<IaC��d����q��>B�=��:=6���=1��= �=G>�<d�=�t��K(��cb=�����q�<$��=*��=���N�U=��z���N.���q�=���=6�ֽ�{X=wCJ< ���0�8� =y�L�K���p� <y. >����N�@��8��%�ã�=��\�f<���. �0#�=�}��\߽i� �x��<��P���)����%2�=
A2�d=�θ=���VW%�2�J���>�8�<YЕ�ڮ���E.�%�bBὺ>�g=�H$���g��=���=]45<����9=V�ʽ�C �I,=�~ѽ��<��=)Q!>��5=��S=L�\=�'�c��<�:����佪fR<���p��<�K>�|d��0�2�&��-��U����=u�?�~��ވ�=��ɼİ�5�D=>��=��>0{,�$2�=������=V������;!�޽����AU�U[=�f�=_�>�)C<��e=��0>W��<���r,<�ߠ����=��!>� �����=/Z����=E��=��<�á�j`�=G��=&�-���>���=э�=4���)������弊X����<����>w=!:Z>��.=�6=�nG>4�h���=Cm:��= N��]��<�������μA=��&=j��<�Q���'���Ƚ����u�">_O�s��=�\�=ť�� =�5"�a�=��E=�� ��?� �G;�)=9I�A&:=�����>Lj�:��s�1d;=��=��y=�����U�'������S�e�(�潣&�;z�ֺ�����=�� �*:>@�Q�o%d>�x=�
��i�=�>��=�ҥ=���=K��=B<�|�e<_��L�=!!>o�=�w&>�>�W<
%=����=A�oD�����=;�=��j�Jٽ4 M=�x->-Й<��Q�����<�m�=�`A=(M���_&>Q#���{�=���ԑ ��y[�S2�=<2�������U�0;噺=�i�=��Ǽ��>�=����o�������v��-+>��=�1�=$���ؽ4θ�X����%<���=}���P*<^u> ��=dC��3-��+I�=Y
��t�=�S����Z�.uO=H�h=�=�����<�ա=����v��<:l_=CS��I��<�����r >LJT=�ّ��,车�,���W=A/>�Z<�O.��3нvW�}�
=v?;��W�=�x��Ӛ���X�����={i��*m_>"�I;v�D�Y�S= ���'A=� �&K�=4��=�<=!�1=�oѽU��=㋲��� >�˽)!>�ֺ�L��=�=;2�=�Y������C��l/ټ Qʽƞ=���<���=�l�=� >iE��_=�g��>�d,<F�9�}�0��c�\��<Z�<�P�e�zf >g=2�޼|�>�'�+��N׻���wo2=��9<fxq>���0�����<<��X'.>F��=����"���>`�E>�y�=%q�W���&i7�?=X���W�=�g`��=��)<Sʘ>� >�$=�-��#�D�k��=�Q>],��Я���=12<(���X5�= �`���>�����g�श=�qǽ��N=�O�=��s�v��<䍕���ԽP-�<�H�Yd���Ƚ1 ���.�=1e>B<�^�= �~�X��;�ӭ�|��=>��<�a$a�i�<\깼��b=ث�=f�o�۽k�>�
���'<<9/>6�����"��}���L���\���"���:=����jR=�ϴ<^i��.�=;N�=֊=l>K��$*����CE`> +��>� ��b�(��#�<�?>�֗�����}&z=,T�� ��=� h�`›<����#�˼W�|=3��= ���6�3=.�d<�"�=��=�u���">�X�=�Ju=��ͼYt�$�J��~��}�D��񣽞���W�&>�r)��<+�x�=����$>~=�ha��������=YC,=)���`&t�Xd =��=���;��c=�X�=�����=�w�<��Pἇ��=ה�:��=��9�œн��h7 =���<^q���J�b�
>��H>�(=K�x=�C�=�/��^Aョ{T=(�i=����#=z�>�{b�!��������<?�<���=y�9���н�'!>��*��Vu��F�<����g���< �;K�b=W$�<�g>vzL=q؍=�q߽�4�=h��;Ҧ=�5�=o�U>���^������x!��$=�h^�
��=�i��!�Q= �ż��R=/Y�=wu�=�G�<c��=���<?�g=�{�=�g^������qa>(7����N�S����b�X�����=)�=/zW=�6�<�Խ=���=D�Z�.~>W�y>�mn>Ur�=�5�������U=���R��=sT�=�kx����k>^��<ti>�:�������>�"B�dֺ���=����O���$�<!�*=��=�m�.=:�=�&1�����������a��, >S����ռ���=���=T��<��ܽ��>p|�=$�=�W=�P�<l�#�F��;�_����=��,�W\=�8w�]��<�g�u��Ԡ�0�S�ث�=��s=��Q>�n��c.����p⇽=S���ǽ5h��0��=��>Gԙ��Q޽j�����=�x�=�� ��v�>>��<�i�=�]���M��7'J>u���,��� �� �1;b#D<K%)=U����Wʊ�� �=����`��Q✽��>ݬ�=�<3��3)>�&1���<!RT�4�`|C=uE ����=W*��u֏�Gk�=��>i
�=�6��F�>�1 ��N�2�&=��<췽/wa=0ΰ���7=��O<�H���+>)'�(zY�m}#=�ė=��/���=Y��<��q�=��=�=<����U�����F>��O2)�i�彴�=-�;=�e<�>5� >">���=o� >�Y-=�>�o{=���=vy>���=��O=U���~��pL<�����]�=�ꏽo �=�>����Zş�W����m��P�F���(=GN�<�P"�^�н0J�=����@*=�P>��� �+�^��=ÁB�C�*<|a�=/v��TX��1w车6�=��=+�G>�3½� t�{�J=�ؽJ9t=ny�=0�9<��=� =d��2=hX�=\��=f->�A(=��<ft~=��@>��=�/0���h$i<��j�����(�(����@'��"B��r��>Á����=��U�������==㽺�0��Ka=*�>ͣ�=�����S>�:E=� ���e�=J>���%����<�d=)��=�t <� >�p��/��Vk=�v� ��= ����J���,>�__��ou=�2�<������u>�P�� ��= ����"��j��=�=Ü�=Pu0��3�=ؒd=1=;�����L��{�=��">k�=��>Rb+����;=�>�׫=4�"=�bI�֞�=�&�����^�;Wá�Eg>g�;a.�<�c�����:B�t=(s�<����۾�>i��<L�G�F�$��^�=(z��d�=a07=�B��2����л(�(>�m����<Y��=��6�%��==�6 >)������=��9�s�(������tq>`\�=�(��=��~��V�o��K�<o�=~���K;�\]>�&Ľ����ּ=�JW=ͦ=��'�� �Q� >�����������|��| ��5�� CE=����/��3�<��%>�Ԛ=�b�<�q�<����eǽ���<���c�*���'>PYO<�;��-��<:�=rY��b��=�
�z#�=�zL���:��$=��̽��{��/G>��=e(0=�C��:��%�b=�U�=bQC>GI ��@J��N=ꣾ��3��\?>9�]>0��> ��<^��=�!��p<�p ��aB�ڷ>�oK�\c^>7�=L� ;l䧽2�B��z��/�'=m9��x% �A��k�*�k�����>ȇ�=f�7>�=�>�=�=�l����߽=�ǵ<���=(]��x_y=�p�=���= <*�������r'=�4>�<�<�kQ��ἂ��9Z^�<��=G�4=���=�u ����Z��EM��f����<�<�o�S;��
=�������<
�ʽ��ټb����\���6<�:>��R=ʓ��B�>��s=���: �!��pk=�>i���n�f>�IL>���=�Np=�0��Ͻ�=�pa�c�{�"Yʽ����O=�u�P���>m�`�c��=�t#�i�)�8��=�=�>�3<겂<i"5>T�=ƒ�� �<b�E>��<7��Z�y=��=M?=
�>��=b�S>�4>E>zƊ��T���A�=����?�Ko>�$�;+D=>��н��w<%��9��/��,<���7� =���<h�n>�j����[�4���!� �~�����=v��=�����KN=9�<έ�<i���n�u�[=:�M=i?=�á�>^���8�!/ =��>�ϵ�4���
�|=��m>G�>�mp>�y�<�ª����=�~����l=I?�=����� �¯���}&��+ � �V>x��=x��;�n'�v���}5�k��;��{<�=�f@=���=6��=K��=�A=� A�ϗ�;HM>�b*>sg+�.�"���0����d\1�+�=���=�]����^��c
>�4�vS��:��u
=�����޼�1=���=Uz!�,�=d�{��1�<-�
=��N��Ӹ=�}a=^�=���<����,�a>]�b��� �=+�=��鼶�����S��d�=�s>�t�=7d>nx1������*>i5�%�<
>9;��<�x!���S��E��{�y�����=�@:= '��Y_=%���$��!=�%�<E܀=~���^��kl ���#>�M��8�/$<>m���I�=�n<�n3>3@�<�� =������.<>�Ӌ>6T�;Wbߺ.f >�LD>�o��hڀ=_B�� Z�<�=�=�� <��������Sz���=_�#��s��c���Y�=E����b�޻ŋ������l8�����}hA=Y�½X< �>����=s=j6>C�f�mb���"2>e(���'���v�3�< I>��"<6m>&m����_�U>i�����<��<��{�wp�="�����/>jR9=��
�M�d=�C�;��ýr ���=]���Y7���1�������]�Wཬ�E= �W�z�0�� *=*4�;Dt><
�=I���F>Gx=r��=���8�=�U�=���o�{��ii�a=4����H���=5�� T�=�>f�˽!H����=�#��� ���%��ا�!>[�s�� j���Ѽ����m� �������c�-�I6O=��== �����=��=�h*>�2X�1��=| ��*�G>�y�=�v�=�6��N =�V�=�; >�s>O�=lj;���=�
�=��=�����=�;vI=���<ک⼞�����=�V3���J>
�=�&�=�t�:��:�XȾ<����#>����t2���ٗ<Ǝ%>����=���j�>A�p�o��<�g=i����Y�==���># [��. =���.���r�=��=[-%=l�<6=f>4<���,>�#<{@0=3�-=���;X�)��&>��=)�j=����ط�>���=�7>�'��A�=�(=�;(���A>��H=��>~�\>��=1:=�q[=�G���%�=���� �<l�u���Ƚb�ȼ�T=˅o=�:��8�=G��>/���Lm�=I��=���<h�g���[����=���=��=b$�="+j��y(>`��=���=��J� ��=9����1�����3���S��=�����>R�G�k�:��=��ߑ�,���Xc>/4>�7���X<O��<���K�=WJ ��-<�������S;��wӖ==[�>4j;>�Nw=�>\�<�9��6��=f�%�=R �=��7;$)��%�ͽ���X7ڽ��5=�W=���}�������둽 �>�6�Bg��=
t;�~�<"#=z��=Q.޽����?=��L=~��;�':���3�ȇ��s0�b=��8�.�<��2�
i<>�⋽��D=�h�<*���'>|7U����;x�=؁�B����F=�e8���J=��=J�ļ4$��J�ĵ�=Q��<�C�&�=���6�o=~�y=�H��U�6<�7 >m���*:�t+��Z!���R��� >)`3=�ĽC���4�=��==�>j��@�=Ay���*�:
��<��5� ��=��=�|b�ש�=��A>H�=�<�;Bx<4|=Kp���+8Tlx=J���}u9�]T�l�J>�=��*>;5���#��ד=f�=�p��1>� ==��J����:�z<�~��4 >jH�=�T>���<�U����v��}ۼNdѽ>��>l =D{>NCJ��&c��V���49>�6>�!�;qd�v����(��=C�&����=F���|=�$e>׳e=��`=�����J�<4���.�>�-��s�J�D>�M�= V�=XO��� <��>\�S�o�w��Wȼ�U(>��޽�$D����B�>Έd=zƂ�[� �ݽ����� �=�L�=��x*=dzϼ�2�=�d��8�V=q��<x&5�w�?�=<�=^=ַ��m����V��<�>J=��p��+F=������a=m4"� ���C<�=�N=`�����KH=@��D���R�=Pf>ǭ>�x4>�/� a�=*$�=���q��U�;ɘ�P|;@���� ����=���<;킽��D=�G=��A=���=�'��P�;��=(�>������=&r�o>��>m����<����$�= �*�׬t=�sf=%t�:W�@�*�=Z�=x��<&5=:r/>-V���=�^*��o���C ���W;�e�� WL>E�u<=�#>˪��M<ۼ=�%�=em��:�������f���=�,=���=d^)��� ��sq>qW=��X�o�]=G�F�z�D�0>�#�(4���*U�`>���=V������=LD=�wԽ�2���H=�!_2=�V�=Ӡ�<��I���<�K�D�l���">%�?<�{���׽����������e�Z=��h��\�3�2>\ J��">jf���<$>L.ڽ�-y<"RT=�Ƕ��9'<d>d%>·=���=�>����
Q�=F>�%>Ic����<�{W>�_����u� �y=f!0=����X#=�A��+�<������<;�4��G�������{�r� >{�,=�+�=[��=���Uk1=�m"����<u(��z`��T��k�1>cR��F�ǽ���<+p>�Ô��)�~��5�A<�D�=R�=�(���5��~�< ��wɞ=� M=���&ש���X>@��=��?��)>�=�_z=����=>fm �����`�X>�`���t��^���>�f��̧=1�8�%�8=axR=��/>���=]����/���a�<3�P>�,=��
��5�O0k��#�= ���aq伝- �<��=�����FC<�Yc�� ��T>8��<-�>��=�P���=�)C�o�>�᷽-"5>�;�=X�= 8�=EJ>�d��_m�<ni�:���C��k,=�o����,���J=�d0��;>�.�c��\ ��� >�B�� �����<�9A�L�D=�7�=�� =;W�< ����(�è/=���D <��<Q=�={xu�S�I=,V��?��p�=�C۽\�>��5�����9>���<x�)��KC>��=ڈ=t�����<��޽߶�T�=0�ֻ��2�J��=���=���=�E%��?6���S<4 ����;>[�ʼ�l��̐{=�f>h��P�<;��>o��������
<�����ځ� ��=7G�=���<��v=f�I=��� � >%�O>2Tq��t>��=.�A=��=�֙<:f*=��A>�_]=07�=�㮉=Hލ���4��ˈ=z��= �ʽ��{���m=�}Z=#��61-=�@�;�1A=I�J=�a���J>� ��j>�
����<J�=x��q��|㻹�p>�}$�Ω`=�@Q><z�=���<p!�Uk=�jY���B�4`=T�ӽ��>k��<��=��;>D�:��t=Y>��=`7�C�˽=��=f��<���KFܻ�=�=�m���#�>ހ�<r4>!e=�>{=5�?��)ټ�����"� ����N<v�>��?>.>=�༸� >m����
�<��Y�R=��^=�e@=�?�l���ɶ�<z ���=��p��b��<mz�=[ ���ɶ�+DQ>�d�KL��*ׇ=�Z>�� �8�>%��=��n=ڦ�;�-v��w=�>է]�/�-=xݡ�T9�.d�<(=6�B����<��'>o�u�t�?=ߪo�r�:�����e��.>W.=�;>��I<�zؽV��ux;C8.�":(=n��=b��<m~��(����<g�=��w�䠭=��>L�k=܈>��;���)�(/c��Ň=���<�>�v�=�[�=1�>a��}ҼPʁ:xg=� �=j>�����<0�-=r1>��1<��n;� �=��G=5y���E��\�D��<���=�M��5H�~v8>�4>��=���=Sm�Ҳ2��s=�;��"҂�$;>��)t����A=�
��o6�Z]�u�&��1]�s�"�k�=s׸<�m-�Fbڼ��B=��Q<+<b��DŽ=�½*o��/��>=��z>��}<,��=u��=v�k� ���‾�n۽󦼒���,�=
�!>�>s\�=@в��il��;�=@�\�N@�����)ݽ��� �-=���=^��=l=-U;���<����) =��4�Y&��3;� �=�z�=�S���$-=a��=/�-��Ͱ�gf��^��=q*�%o]�x>�p�=|>��~� }=�D!<�Ix�l$j����=���<�Q[=�]�=D����O%����>�V=��H>W�ɼ��ȽL�v=����������+4�=���=�~�>i�6>�^L�Of>r:/<��F>�h��������>�G����<۲=b=(�=�.�f�m���<>��.=�ߠ�s� ��`=4[�;Ҍ%�𦏼Hu:0m
>��\;Yx���ļj��ɓ�=�� �`��;�Y���*=�����l�X��<NUN=���= '/=G��=��,>(����8=��Q��F�<�:>",���=���<L�&��H=DX"�l�=�%�=n�=&�������<��=Lm�<Ʉ>v�v>Q��� ��o���6�su��ǻ�~�\���ɽ��D<�н=W��4爻O)���p=J�l>���=�c�;�H�;TN�m�ֽ2�;�ј�>,��=/ �=CA=��= 
=M������&=����*U���<���ϻ�s�=�y�<�E�;h%�=�M��ZA>q��=jU�o���oM�=��������`��<g&>(�=M���"<'V�=�Д=��=�<�=�:�<β�iP�=/)�=h��|<����u[>Uț=xB'=��]=x>L,>�,�=Y�1=�ވ�3,��d��=��<� ջrɯ=�Zۼ������I=��g=ć�=y�=5&�=t��=���=zd�<���J�˽L�>]$`=i��=���<�h����.�=������P�Ɔ�=�<���=)_>},��L+�=��Ἒ}�=���[b�;��׼�ds�"����=�n��&�=��:=58�=1s���#>�v��~���q��=ǒ�<x����^=��=�w>R�޽g�X��2�;o.�7��˕>%Te=1*:�Q���\�Y=e�=jH%�S�i=�Ҩ�ۗս������XG=�D�qV;=�p��E9ڽ��}�?<���=�V�=L�=���=�A���򇽈*��Ş���޼=�LE�/�����i�7���/=����|=�գ< ����<�ؼ(���v�=�?>@���V�-�<���<�8�=�Q �o(���)>�H�=�������=L
�<��=Ϫ�����=7
s������<#K� ?�=Hc�~�>��g�`�=�hV>�y]��x7>#����j��.>W��>�[�����<��<H��=K�q>�C�!M
�*�
>D;\��I����<}�>@�->�<��9���A�=��7=A��Ȟֽ(�=V��ՙ,<�M$>G�o����=��]<��|=79�=�����܋��"9=rM=� �=܀��vNe>���Γ$��]��h1> �U��y\>���>e���[�̽&Y�܀��&�>aP�= d/=wv�=��>R�̽\Z5����=\�T>Y��=����#>S� �܋\>?*���,��>Q�q��,= �h=Pջo��-�@=M��=Wݩ9�n0�"¡=�k>�vs�s)����=v��>��:�;F>>�A>g#>�>.鱽��X�[і�����' ��m��&.`=C�ҽ���;�
м�%��l�ὐh��kI=H?=6�$��f=r�4�G���(=����5���ﵽ�H���=��>�!�<�ۮ�ahq=Yvҽ��< �Q�D�<ʊ<��2k��s�=& L�r�;���=d�=s�R<���=M�1>��꽻�D��� H>g_�t�;��>4�=�e>H_�<��:=����=�1S�Ӻ5���c���z>NU7>�7/>+� >�P���>�����%=q��<f�2����.��<oR��*Oݺϵ�m���P�>=��=GN�<h߂������~�Z�C�61��C9=��/�1C��z�=�T�;_{�Ц��
�-�S.0�\S4�x5����H>l���*���mP>��=o�;!�=��_=ޛ�<��ӽ�W>܂ѽ���s�:���R՝�.�����ҽЩ=�����P*� ��==�3>��l>@=�d>)˨�D�=-Յ��� =�>"�C�r��Z�=��q=P/�<3=���x><��=��=/�=�F_>"�<@�=�L=4�>T�̽��='��=~PA= Y���q�=V��<��L<Ƿ�=lD:=�Tn>���=��>� ����S����=GGZ=^o�=��=.�=�� ���ƺ)'�2`=>�ѽ'S'>�>ٽ��4> #C�����f_@��u�<�]> Gc�� $;q �=��F�53m�-�/<, �<����h6>4y���ys=�v�={͝=JU>3T���b=dQ�=��<���=kC��;.8���3=جN�H�=���|��=��A�4ރ��Ho<��i>zϺ�;���=�r=4�<\��r�\���=ݾ�=��=�l�?
�<�ͯ��_=Tf�=� F���=3�w�?Ρ���>�bd>��u<E�=T�����DŽC<���/ =�s�=�ǩ�7��� �����=EQg=��K�C��ie=���z!>���>�����M+���=��<�2Q��F>~{�=6����֔�cOm=��S�v��=:ỵm �k�<�5��&�<��=�Q,�N
49>�֑̽�=4m�����E g����=� �=���=�ݰ<i�R>�Ľ=�g���q� 9%���;{�=��>l�D=���=ҝ��'��!��QɈ�*��k���h*�ɏ���s���1;���=��;�=է��D!���M,�ͅQ���a>�][=%�<K�>S^�<t��=Ϥ+����ɹ?<��->QE>��e��1F��+�<��>��ѽ����/�;I�-� =ȩ,>;[�������N�=`�=��/R����eP�=����k�>#sI�󰼸4��R=�z��R���f ���=�W�<5����̼][������m�ý8$�=�#��㾩�����a/>���<���Q�����<X
>���=��=�% <�v�}!�=�N�=8��;�q�d���t�; s��O� =5z½�gƻ᧼������p�M�>��>�g+��ѯ�|ʞ=1?@�z5_��>>�� > � =u>��[=m
�=���:���"��=���� 4�</�I>)�=��v=�ڴ=D��Z =�>�=�a>l9�=0��=�*�=کs>(E���<-��='=q�[=���>�2M>��=L�=2���N��=o�>;���{<n½g�5>�}��bo=����µ�fz3>,�=H���� �����=\�������u�=��]>}��<=�;=�1�>���<os����b=;�n=E#< :����C=�=� ��St>��=޸�����=4�E��*1>���=����R��ƽ$���6O��P`�=�/�6L>�1M������<2�D=���u
� �;<��<�.�=`d*��½y�<\���6@�+(���w�7��e���l��J3>B�x�ģ����^�Km�=&��=��,>}K�����=�
�=�!=T�m�
�<��<uҬ=��
���D�o��W��>�C>D@�=�<&>�=5�Q�4>ռ�a�4��=L�>����8n={ѣ=���=���=���=� �=p+>4�>=譛���ż�u��';׭<�6>==�'E;���<���=�c�=�Yh�;> ��C�<7>�=n�0> �2��$�=�eF>oш=��>�`<�.���"$���'>M�l=��b����<�]>��P=(��=�{��s���x���ɶ���/=P��<4� >���=v�<>��;G��=;�9=�)л��'�-@���+>�� �t[&�d�L>����ԩ�����h��i��9�=q����)?�sN(>�ĵ���=t�g��B�����֔�=@����=�*�x�<Ii�޻<�Z�ٽ+��=^:���b�=-׫=��>奜�?b�=��q=��=?,ŽL�:>'�'>5�_=�`�=��0����=�GK=�S#>����i���B�l�>������=3<�j,+=�c�<i����V��n�<�P�>�=���ҋ=e=`���9�����<�w1�I���������a<�F==ϔ��N��=����۝<u��=-�*<J*�;
�����=��J����ũ/�9S-=��=�нG>�z�����=6�����m= �m=��A<B=K��<��b�L]���ǽ$��,�C���S���� =�M<Y�I>ٓ�(�=���k����\<ѧ�=������{>��L>{\�=��H=�OȽ��=DiW=�)!���������d��=.��Q�ڴ��ы:��=�I��� ���r�Y`�<��>��=I=qqA=�����ph=�>}�J>G.=����$w2=�*�=L�B��ޮ=�%�����s�1���
>M�H=�;<���=��K� *>�T�<g���?��B� >�G����߽��w?.>��9<I��_Z�0M<$�j�N�>��z>�u�=��ʽ��=�\�=�ˇ=�t��wB�<��������=�0��`>>z@=�4"�:P����׼��#���=�r׼��=�5 = �N>�.�=L�½{��$�����*���3k�=c�=� =r������H>nV<w�������"���������<}F���T��i��Qߡ�x��=�e�� �=GUý�PἋ>=\��<�;>���������?����=����iA^>��
�r�/���U����=�ս���=��Z>u0 � n �\�O��C0�=S?>��=��p=�`һ[�P����:Q(�d�Ƚ2nz=^=П=�!�<��N=<���<n�,��fG�I�9��c�<�t�f����>6�=9U��#@�� j=6=�����=Sm�=S��`�<Dɵ�嘭=`]
>�o>�h��ߘ7=��ս�l<<塓<۵�=-��<4�=>������=���= h2��x�=[��=>d��
@�=,�Ƽ8�'{ ����=��C=G��=���؛=��&��">���]��=8=�XD�=�I޼ ���j��.c>������l4�@��nu���Q<�?-��ɬ��H��<L�Ի�½3�>a���/�꼁��Vt��w(x�Y+g��K�= 2>�Q=��ĺ<�=qĐ��G�Tg�=vm��X���|2�����=Q�ͻ��_���=*N =U<c��< �=�Ȫ���>`ю<4��!`;Je��^ >���=򨻽W0V����=�D1>��e�\h>���;�A�=��=T>~�N�-���=��o�->a���(4����+=��=�]����&����s0��j�
U�<�&��Y���P=.M�=jk��B�B�1B�Y};=e�>�˳;=f�=���<�X��Λ>�R?>&a>��뽳�;�4��>��2�Zِ=rҽ&냽�a�Rj�V�ý�R>��½�} >��n<]��<�tn;���=MBڽHX�<�=���:����=�>���<d�8>�|�=;���`�:���=y�ӻ�d5�E�������p$>�FѼ��j<�\4�!
�sw���R���&=��g��Խ��i��!�֏�=��#�0�= ���� ѻy�=�9O>�{C��]Ļ*�=MlF���o�&#>cs���v�>�k@>�ˈ��"��^��=���p^�u���G;`>8����3=�t^=�X�=�j�l���mkh>�x���v�.�B=�2> o3>R�ֽ�>u솽krҽ�e= ��;X�v<�u�%�m���L>ԅn>��>�_A��$½�W-��.d>��X� �=R =6T���z=���=@2>s�j=M�<i*f=P��=�.�� �E� �����=9>'#]�O�=�l���
>���<�� >���=ʌ���y>*g�7��;��x=�׽PR�=8u�<���=�lK�j^&�X�q�tTr��f�=!���j�����=�RU�z?�=��<�O߽j�>�㽼�]�<#qѽ�+<�"%�����?�/��7[<�9�;o��om�=�,����>f>��i�u�;1w>��>�1�;����q>a+>�Q��]ټ�Ì�?�3��о=)�۽�Π=�=I ��Z�<��KZ��ML>��;��qf=g�O�=\
O��G=�E�<���<��@�;w�&��=�43>*��=
�:O l=��=��">z�ټ�� ���=��w=�!�Ic���� ���*A= ��=�,��E�;���=ҿ�=���e����L��z����ͼo;�O<=@)���+��^��=�}9=�y�= ]M=�>�<�����!>�}�>j�=� �<���m��`򊽫�>�5>�z=��$�J��=gZR>!A'�݉>������D>¾�;���<�O�=�]��@a>��x����r��׼�=n���ܼ = ���{$>����^6>}�� �����;���;P����,�� ͌<"�O�J��=�#�%�='�P�Y�<��=��1>�l�*�>̲C=r���<wf:>g'�<�ܿ=��d>�G[�,���i�e= �=8��<D�o=7��<�bf>��<T��<LA~���=K,ӽh�>��׽T��=`�x���&��k���0�=��T=���;%ᔽ�����=��:D�=��ٽ����'Q��ʽ����?��=��`4˽>0���_=-1����t�$ڋ���=�}g=���E$��\�Y=�,��"3���S����=��=3��LE�=ԛ��+��=�/�=y��=dw'�����ׂ<���������!��98="�����y�)�ý>/�=y�1>�'f=���"a��=j<. 7>��>"�2=����9��u�
��U���G���+;$0U<�M���?<>
<��<=���:hXu=]$>t's=�󏽮n����;�R�=̌S�e ��:����l�=��`�<'��=����_����~�a���xN=t��=~��{Q���9�}��d� <���>a
�=���>����r�=��Ul�=���= ��<d�4��f>��>���&I��V<��=�,�;4�5>�'��]K>�b �-���SN��:�C�7><F�=A���p�#>��=���ؽb��F�ݻ����.�=J��=�*�<��X>8y<p�g�ϳ�<�
x<j"�=���=��*>(��Ͻ���ݗ�Pbz�q'��%:=��1���6�\Y����&>�8 =[7��8��=o�Ļ5r����=�?�#:�=���<��>���<z��=�>�\���='��=e��=���=��=p,���H7%=�'=l�=���q�>��F�@� ��Aż�*�礵=&��=���<a�A��1=,�>Z�Žj޷�`��=�6�>_�S;=��> %>=f=6�=�p�:C�=WK=���>n��=��N��0>�����oA<�1<��P�/�+>O�)���=<��{;t<�><U�=m C���7�;�y�*>�!�=/�P��N>l����c�=Ƅ=h������V�������Y ��=�;���=���<��=-�=����2=�:=�� ��f��U|=:��;)2\���
����=�u�w����N�;�e#>�!8�%f���#�=�@�<͂ =�H=�3��%�=�`*��I�������=�_s=+��=S���W�f9�=� �=H ü�xl��>5��<u��\�v��ߊ��^��jy��<Hn���ʽ^O��&=<j+�=g�Ὀ���ay���;�=�!��c焼wM-����X觽E�=�3���)�=�� >�<O���=O�����=7�ҽA.�;�J8���W�1��=eؽ����g�=���Qٽ�*-�v`��=��=���=�*�=_�A�):�=�T��w�y�=��A�����[�(W��▥= *��E�𼋸���~׽�>v;�/={���)<�����#=��&� =�����=x�Z]�=�8 ��t �Q�< �=�����߽��ҽ6���aɼưq��m���oZ�7�<��W=��&>�p�<r�[=N�������[���^=ݧp=o��9܅���>?��=M�=<6T��h> ���FK=-�<����Z�ؼ��>D>vR�=�Y�<�G=K��<G����F=�Qb=�ɼ����'�=�V�=Or*����=Y�����=�ȍ=�=��M����=Re��!?��*k�<���;�B�<�+�<92�=_���d#d>�Aݼ^����?Ͻ���;I����={r�=�SƼ��;��=��t>��R�gUڽ�۷;�ͣ=�DZ=��=�T�CJ�=�4�=nX�<��ۼ��B����=c�'�������ýV�ż4Iս=i���<o� ��� �=��+��6>�$��xȑ=�J��K@2���ʻΔ�=iټ۰�=5>��=�m��-=\p���l���W�<��;�V�ڼ��g������ (>3?�=��#��������)Q+>�>�=s�=�䧽­�����Ig=)��=H{�=�]&>��M�7#0�����kI���>;���Ž�k��r��=`�<��4�����+I=���=�)�=H��=㨅=�� ��݋=���;Q >�X=��>+v��)⎽���{�C=`U�=TAս>���}�=���=a�?�W�=����"f��ݰ����=���<"�S=��/;`�P��7��}��������V=^u�=A�-����<������=7��<BԂ����=���:�G��d�/��������FӽK �<0ӽM��P6>�>��&�ط���͟��5�]�>< �
�T�[�rg"��>�+��9� ���>%�:�� e�u{�=�_��D>T� �d�r=��y>#A=�j�<�����Tƽ�63�]-=���=��;%�=>6Do��G�<��0��½�8��i�S��f�<���=��v>Vソ�`��銽�Խ�k��������X��G��k�`�=���=���<!�=���T=�b��f�^=�7��o��=�����&��D>������:����=����`�*��P���=D�=�b��X��<�'����=&*)<��;�ч�æ̽�B�:]�=lȽ='}�=�i�<@�<���]=V�3�_���Ry><w�:@�Žq�z�CF.>���i���D2j��Ϋ<VA��g�= SQ<�\����=)o��c>��9�E�����=G۪=�6��O׽��,����=��޼����l��=h�=����aU<��:�ϻ��>�NR�ڒ^>-��=��ڽG�޽!=<�q�<j�]����=������=c3V=��=3��<�"�=9��;+xż��,��;�����=B��=���=�U(>K�W�4����\&�xU��� �=F��=;���0���<�ߋ<k�0��会��>�Sa�"��=S��<�ݽ�D>`6~�\��h� ���Q��k�5�@=�W�= I ����=�a��1���Pս��9��c>B�;>Q�;�|�='��=�����ݿu��z>Q��=ݮ�<�kz�ܴ�=(�>R�8ý����'�;i1��^��ɕw��F�=t ����2�r
w����� ='(������ݛؽ�[[� /�=� z=�w�=��ݻ1N>�8�/_='{�=�2c==�=���;v�`�(}D�e�ҽ"���$'�=���=�Gd�)�
=�H�R�罚�L�k���2��aP�I<>��ҽ�=��-�<��������M�Z�R��=9�2>)�)=ٻ<y;_<�ۯ�� �>Р��Mx*=��=Ӄ=����&|�=�ݩ=� @>X$>m�5�w�'�N�=�>m�4>\���Ǵ��7��e�<f>�T�=��R=5!>�Y8>*�>E �=lu1>���=�g�=�)�!��:�����2=�=ԋ�=���=��=F�ӽ�, >0�<�sp=y ��ZП�JH�<���=�3�< ��<u��<�P�=v1�#j��(2F�w�=�~���x�6>o=�=[a_=��O�n�>Ԅ�=�&2=ݑY�ѱT��D=q�>�Ǡ<�>��y=�3O=R���`��r>�6�;�R7�'�-�h��;���no>��V������=�[��8ώ���w�� ���[��U�=:7����Ͻ��=Ǔ�= �=�����彳6�����6x� �~<�7�=ճ�=���>s��<S�=q!ν�; �E�='J=��Y>���klR��H���([<j� O6��c���b����H�?�<��s��f�~��=a�����`��.>셊��Ղ=x�� ig��z׽[��=�u =1��=e��<�9(<Քn�B#�G H��G���w=*缽��>��(�]� ��UI�+4�S����4�xo^>���v���搽��n>�r~� �����=˶�=s���aRt�� l �L��;N���֫���7=§�=VΊ� ->���="��=M�"���=1�=Slȼ���;��=�ar;�m=`�9=�ҳ=~A�<�@�<S�����>z8�n��nn�=�P���,�=:�'� ��=r��A2!=��4��¥�!�=y���R!=�F�<n� >��t8(#�;��>��k�=���=��
>��=�<>�i@�t�>��<���=�7�=ΐ<<G��=2ǽ��)�&��=�q�<�K�=����DA >�����Ƚ!+=_6�=$��nq�=�g��޹�������Z=��=5������=�z�)\���Q�=x&>Ҽgի��.ý$�L�nc���J����Ⰷ=3齘�x=γ7�*h��##>)�>�7���p�=l[+>�dh>�=޽�[=�ci�jg�=5 ��+ߪ����<C(*��%������<AV>��7�N>�] ����`�������[=m�H�
$�=�=-�����=N�������Y����a��Dǽ�>��1<7���W����A�\��<� ���>.�\=U�F�c+;�7e'�/�?�J��=l�<��m>a�h<�A������:���������i�)<�\����L� !>>'6�<d}�=�[����_���i��<L����*M<���=�4�=c�=�]��W$������<�y�v�����nE�<q>�p>�4�3Y�=̃3>��콴�=h���hB<�?�`�o>�h*<iO
=�-ֽV=�=�;�<����Kս�Z��:�����<nI >�К=VN��QMD��E��Z=���=/��=w�>� �Es۽"� ��i!�o�w>[�����9s���sU><=�w<E%
>�k�=�$=��:;<h=�I=��>>gaP������W�=[�2<��K>�}=1�=��G��O�=��<=� $��� ��;����WP=��G_>�V>��>d?�<Aƶ=]7>.�S=� ���)��
����y�;V��ׇ���I����=�J(=5Ѽe)�=��==���= l��v�Ľœ�YƓ=�T!�k4F�ʲ�=D��<�ܒ<)����>͊�=�ց>{s���fŽ�妽8�D���1>�a��/;$�~c0� S˼*��m��=Ar�`�⽅m>��=(Mڽ��ʽ�d潭�6>���=�-��pߺ<1 �5�P��X$��?[>��=*œ��F�;_K�� �]>��������˽l5v���<S�=M�(�b���27����=�T��ی����&<�[w=��m>�@��l�<�S��$>���=D�0>9�6�1Y<���G =�T�<���=���B �D�м*ν�=�����=V�M=��=B!���N<ݎI>sܽ��;���<�.�=!�>@�+s������S=�XF>
����B�QL>�m��<����W?��t �}>#�=m�+�/�>�[Q>s�4=����<(�= �J��F��Ma ���=%tv:@I2�n�'>�e6>e �=
���>�<�� =��+��lI;��>4��<@��=zm�=�=�Gϻ\��=AQ�;T? >dq5<�<�<�f>���<4d��s�(=�J����{%���+��
��;� >r�=bo���U��-m��l=g�]�M�>��;>��]<B�w=�tG;���=A��=�|<Z�w<�+ ��t9>~��K�(�`�w=�Ӽi�>���K��2=߃o=B;0>�$ټ|���P�=�"��~�������4����� �N�Z �<o�
����
>�
>�N-�Ҥ�����=�-O=ҫ��
����[���\)=��}=�J8>.>��(=ٟu<x�<dO��r��=[h�<�W<��u�U3=�ԕ=3�4������n���/㽱���ӟ�=��=e?�=��b�R������t=v<�=E�ؽ�CT����='c�w��=��D>��<?(�K2ۼ�d�=�q6>W.ڽ���<E\�={Fڽo�P=
K�=;��S�Ƽ�gF���=�����<�
5Y�:��������=�X >3�S��X�=���<FF�=IJ�=������:��T>T��=K��=� �xP⽆��>W�<|7���”���5>P_&�����s��=�w =�a=q�C>�O�=�v�<vb^>2��=N�����I���,�>�>��i�@K>)A�������>)����v� 4�P�,>d���f�m=��4>�)�=ڬ>_9�1G����=��2��s�<��ӽܙ��q^=���=9�f�(�=�A�=5݀�n茽x��؄׽���<X��=���=$����$;�>��" �=��5<�J ����=�ɽ#�>�{J�jo��� Ͻ�U�<�q��14�=��>���=��\=���=^���:>�C�����=}`1��$�U�h�:F=��u6M�����1�˽����v`�<�]�<���=��V=�^���>VYZ=P���?Gp����;�5�� ���)�7�>�Rg=/�[���(>��>����'f�٫V=">�WM�$Mv=����t�=vq���� ����(ҟ<�=x���,tG=�R�����+��=��<}�<�%:��P�<�8�ۼ� ��=/>{Tb�m����r>K���]��������>�<h����%��:&�=���"���i�=�M���49=%�U>��>�a��T[a��� ���X=����hM=�M����<�>7>pW\=ϻ�=~��ޮ���<�Aս�b�=m�+��ོk�n=��ٻ8�=�;Ƚs�V=���<a09>��8� k��ط��)ֽ�j����˽T���B�<d9�=b�Q=\��;�L����;�C��G�=��V=�$�<?$��D�=c�T<M�>�ݕ<���<xN��# >� �̖�=�Ǚ��>��W�5L=����=���;k-�<�d�<���P7����>���=�轮������&���B��<�('��>1<ٌν
v��H<�qq<W��=����h����v��;7�=k9<B�콎��� �M>�h�����=Т�:.~���_�=�����~��%�=�B_�l(ʼ�A��@�=��O=��(=�=��|>����n�=���-f��d:����=� >��8=�� ��oV�b���>7�=�q����;�>�=&��;Ʒ+�aC(��ج=:y>G <�UN��c�=L��M����@>�U>n����׉�غ'=�᲻ ��_e�a�1�}��=b-�=����p���)ʹ��=*.��v����-=�g��� �=3ڼ暽Yk=P;���½V�;>\�=����<� � L��Z6�����\z� �i;13<訆�.�9 �=����ւ>=Q =
b>�-9=��=�(�.n>��9�1�3�&���=#f/>�_��L�O<��=!��= 락s���#V=��]; A�=E��=�[=����7����Ž�� >��!�쬼�!>�>�=Lԧ=����$y�r�{=X7�=K�=�,#>��>t.p<�Y�\���>m��H3�=�+^�2�뽡瀽��P>:��=�3��I=851>k-�$+�����=�`=m�x=�L���\<�@�=�=��7�!�=�!���\�=E��<��>���l=��> i��CC����ټyF�X����D)��C,�;������=��ս�l>\��=���=)'=7`=�z�<�>�}�=T��VM��
D��� Ǽ}�H���;S�7��є=s,�=Fh5>�`j�$Y�DM����=��7>ЈZ��F+��}Q���<��=Q ǽ��X��j���C��W�=Y������'>� >�(�=���=��=�bB=-�Ľ���=?i ;���^5�<�5��:5�0���T@>�lS=���=�2{>��i�Uѽ�Zֽ%xi�g<���D��N ���!�
�ػ]3���>ഩ=X�+����=�4=]�=��o=h��b�E=CQ<V^���q���`�=y��=�3�B��=yI��Yp���B=c�=duٽx ,< 舼.؄=��,�f.�F�ؽ}��;3^�KP>��
==�\=^=�>�=`f�x���ɒ��vŽ�Q>Kb�=BA~<r��<�?�У � i�� ���1�<u�!>a͋�<8>����FR=񩬽���=cB�����=���=��=���|�=��N>�m�=omJ��F>�������=��=�t�=����yE<��u>�, >���^�N=�=�;�=�*�=D�'=BE����\=� >$G1>(6�d��=Zt]<6�U�lQ,=��I=o�?>�6��X�:��>>��>h? =�j���.
>�ѽC�����<|[<�D=> ���6=��=GY;��U>�
����=���7� ��!���W�=��Z>�B�=��p����Xf=�,8=��>e�K=�|����N<�f�=�伿�j�> �=�ὈZ˽Z�d>K���%�׽��>9x<��= w=$�<o � >
X�=�U潛'����1��V�5�r�v.��9B]=E>�=�N=���3=o�=ښ���!�A3>���: I���Q�R~>wR.<�{�<`YV="Q�<\X&>�A���ý�ʽ�/>H��A��<8JV;�'��Լ�y�����=��=i�<������:���)�ڼN���x�<�D὎����(R=��]��[�v��<(�����=<��U���}>�5F<ط�=]�w�O�G�T:#�,�H<F#!>�R�=ʶ�=]r��_c>�">8�ν9�~���>i��=�p�0L ����=�.$=\8Ҽ%9H�cL���w��|�<8QA��\�m�W��0��c���1<[���-\p=g�S<��==Ͱ9=&V��Dx=�e*�>�`����"��1;>��ٽb��=d��=��=�g>҂���-�=ݿa���O>�� � 7c=DG���0=\��?Ľ[��i{=
�>�v��e=עF=�򭽸‚<� >�C�=��������j��<`ew���w<C�Y>\��=bj=��=�
���={ü2�+�u�=md�w4�C�>z��<�)=���<���= Ѽx>� ����>������[f�=^�>W6>�W=t�)���<�]ƽg[G�'q%�ZF��8�T���O<�6��K=��u=��U�e*�<��H��.=Up��h��=�p��VL���S�5fɼu�n�$]j>A|�=9��=y���S>�
> �%�YVY�:�o>U]
�U�1>�H¼����%os=h��M8= ����ك�^풽�c軓v,�B��!�0=���=���Aғ��'2�6��|�/>�w�=�}:�7���m��=&�Ny߽��+>HP�;�⩽<<�)����=����Ԙ�<$�>������<�N}�0�=bι=p@��5�=8�z���w<p+�����=�^h<��%�K7����$=��(:�׊�N�r<{Y���J���9,��� �������8�=�:��7���Q>� �=�.��n_���9=Q^>���R�=�~�<���=�3�=gc_��"e=�p��Ƣ=�m�=�>;e��@�x�"dؽ�]�<� ż�[t�����e�������H�<+�R�l; ��=g�<�J
��7I�����M >r�R�A�a���'�f��=�
�D @=s~�;�K�=���=M$<���=n7��?J�kX�=�\g����FF�=��2�<E#<�l�=Gs>�/�>��r���o<��=�H�%xA��Z�>�0=x�>�����>�=ع4=�ν_6�=���:���< �>��=ƃ$>X޼�{w9�4���>K��=�㔼Kt%>�g�<m�=�$�����>iCݽ�^���T�1��c�\= �'�F�z=X��f�v>bo��3��:����=T�@>}Yl<� �����Տ���6S=.Bڽ��bĽϞc��kA=R��;V����->A~m�O�>� ̽T'L>�[-����=����T��=�u�;ڧ�=!�����=�A^����>��^=�ǟ:���9B������.�L��d6>�D<�qG�=m��=-�=�{���8�{コ���.�*���׽���d�m��9<򧐻B]��<m��Og�;�A7>�G��k�1�2=1���m�C�⽣H7>�z�=��`<��D�nط��N�=kWK=^�p�BgS�;��=@L����=��I��I`�� }=��w=۫�=�]���r�= 'i<�5��C����%=zG�=�z���f�<�&�<��=(�<���=��=��׽�!�= ��=� /�@��< >��<Г��KU>�L�=hJ�ޢ���JD>Z��=��P=f���� �aC���Ww=�%��u��=
Q�=�cK=|����Y=�'�!��r������'=��K�:�����<1v�=����&O=����Ɏn="8>V�Խ�.<��6>�>��=b���^�+=����WU���싽Ǎ�<��= ����S��B��=X���Ke<���=LǪ�k�L=}F�=ţ��*�=�6��3k�=� �:$I_���q�������=�k�== ��p�޼ӽ�=1�=�V�y9=�;>�[�=J|��׬<I.o�󄧽�
1��4 �j|�=��&=���<w�s=)��1&u=�s��.�=��;<���������5'��h�=��%>ڑ�=���=�������u��p�~;�׆�=Y<`=BL=#K�='��<�1ͽ�´V�L<W��=�`6>�=��=�J(��$>��<OR�=�Ӆ��MI>Q�='>4=�>f��=��y����=�0g�ңƼ�K�څ ��`ǽ@p�=�`�>2 ^=������>���=8� ��5�ζJ�P3v��m�b��=���cx=�|�z�=���l�A>}l��
��!|��/�>� �=��ɽ�>=v>�s�=��<Wa<��<�� >Q�X���,��>�=��>=�s�$ї�!�N�ߊ;��3�:<�=J�2>-#��$
H��E�LՐ<���f]��g�=3�@��6"<����,��ϡ=ݏ�:_���_ ļ�J_<�!��Y��>��Ž��/<����o�x���<��U=0߽���=�n�=X"���!���J=�;>3��=u�u�4��=�F�=��>�mj>1B�<�خ=�O<�^�<A�<�%�����=� ;/W=�� � _�[z>GgA�x٧=wa�.w>��B>$ѽ����K
�=�o>F>�N=+�=^zP���x>�u����=&HI��9��.=[��<���=X;5�;
<6����̜�>��<#��� �/F��*=��-=� �7�i�^=�z�8�)��R=Q��'�ս}@�b�<�����'=��< R>6��=�c���\������T��2������u��h3=�P�Y�p��;C��}�=Gɀ�#�<,G�=�Y=!�޽�t >�$˼�`
>grؽښf��-Ӽ}μ*0>�I<<>j>:�(��Y׼�=� ���<`���<�=6]V��<��"�/�����4ꊽ�|�<`�����=D�Y=W�I> <�=���=\���VQ<���=.�=s��;֣>��ҽ�#:�X��p]�<�K��Da�<m �,��C> >�`�;Y�ؽF>�=L� �t�s��<K�k�=�&�uQ�=q�
��T>�V�=��x<��Ͻ�6<Z�8�!U�<����8��[���b���V�8!��ǰ�=0y��R >� >6X1>G�<\?=��<Y���$�@>�^�<�5ͽT$�;�<��Rh=�<�=zi��J�=��="��=!�U� �>�=�&!�}���� >i�A��#���3����݅>+3�;_u���<�#��z��=SN���Gz��Aw=��1�u��=��)<JӠ=�i��f�!>iLj>��S=��F=�'���v�=Ǿ/=��I:��=PS/�| $=�p<��z=m��=f���GTF>���=_�e>�Y3�:�׽�wV�A�8=m�[�&�=P��=�==vޫ=`��=��Z����=d(޼�%9��+��v]<�ǽv̽����G=��>Ξ!�S M�Y���kl�<$�*�j�w�>��!��e+���>e��=���*pq<3񺼍������x j��]+>7�q=�ʼ^Խ��h>8tU=!M�yZ
>�9>ReU>u�+>2������=q\/�4,�<ćν>��<砽6i���Q!��<.+e>��>�>���<��
��'W=B�Ȼ�|�<�K����<���=����D.�H�J�ۀ��s�����;��>|�ýW��=���h�8>2l��������<R;��ٽiYI>q�I<��,<Ӑ=MO��0� =������EN&>�O >B�H��\c����cٽ v�=$�='G�;��=E��=1�=m�N<���= ��Ф�=�Fh�B��=�����%ν1����r��N<>�H��7�u��)�7׽N�>����=<z >4��:1DA��D�<Xݫ=�|=A��9�j�=>9ʮ�2~��k8�A����;���� ��5=v�}<�X>R1=�����<!=s�t=�O�=�a�<�N�S�>��-=����;��=C�=����3UU=��B>S��N�=��ĥ�=��=(�<��>d]M�aQ�>^��=�J�=�e�>9��=ZT=� B��٩=0��=��5��*�����=;�<��;�=�;@��E���"�$���<^��=9誼�)� �5=�j!�؄z�b�׼��Ҽ? �=� >�?�l������=k�>�4=�#¼=���!�=/{�=�N��&�">j�:>*�I=ό>��Ƽ˂=�m�<�܇�˼
> gм�m�=��<�l׽�%=�>�e$>GD�=aܒ���v�-�4=^Vd��b����Ľ���<?�O=5>��+>za=">�<
�=��<�0$�Ҩ ���[=�F1<��>TS�S*û��j���ht���R=vIR�}S��'��\�a=~]�=BG�<h����+>�r ����=�0
�J���.>�DZ=N�_>��/��<Ӽ��<Ok+�pg�=n*������^�<��t�V<�νTl=�즽W��<�?�L��뽰���<6���X��\R�=��= �a�-�=�=� >���!�7����=�=6) ;�u>���<���=6�=��<�߽�q���창z�"={z����L>����ET�<1d�<&��=�� ��T��3���=��
�`���1�#���4�=X8|=`0�=����T���n��y �$�<�b��.���Y�=�a��{.*�$��:����nY��&h=̓�=����p8�<�v��&T�=o��; /����?=W�+��֦�"��<���=�8R=/7�=���=�&�+�_��d%�Y4��E�����>�/��P�8� �is3��U��n��(�\=���=����k�,>QN�=��n8\
>��<(:W=�v�=�����c������7��*>��a��
K=�m����=+��:�����;.�<���5=B��=C=��x�<����d{� �>�?�=��E;P��<y�q=fb���z<�&=�@0<}&�=�AV���D� ���S�;�u$=�;�<-����`g=5Ǽ��>"= T >}~*��o+=��e=�'<�LT�|�-<z�>��!=ֲN�~��=�1�)��=�J|���ӽ�R��˻+�ʽ��� ;����=���ӽ��;�I<+�L>�F%<�0���
��CS��E���J޽ �=����G?�5 '�cY�=��[�A٪=��鼄��<W=�u��5r=��> b6��3Y;�n��� <����,ҽ�玽$�;,��<�!;��3>B᜼h�!<1j�=��`��}��YL��k)���)�E��=�#�YMz;/^���L�bR���h=���<�����B!�y�� ��=���Ē������;��E�iE�=*+C>�<;d���Ӓ=7���&c��`>ծ�� �2>��<���=��=�¼���=�x���*�����T ���� �P��<~,&�.���2.������m�J;�K�|�@�[t�;4��W�;����}�=\��=����T��=E��=��=���=Bbv=�9v<Le���=q�8��-�=��I<-���!K>��h���t=Iò�Ȍ=�̸��"<��`�=v�l=.�g�̳=J��;0�;� Y>��>�q�=��O��2���M���r��m�<zH=}S;�;����u=V�<�C =~M���a��H�� S�=�c��$x��!6^�u��/R��e�}=T��MJq��8�=\o��� ���E�ܗ<p[�=���=�(�<@�M=jK��{�r�m����o=��=^�Ƚ^�*��/����ܽ]]= �>��H�<����
I)>�c�=������軍�:����2��� [=V�<��@���S����=:��=���=� <�=7��X-�=되����bI�</��;]��/�=�iϼ}Hl=�n&���˽��=O�ĽЫ��„%��HI>�M�=��0;._>:����<��j=��>��_������I�Id�;���6�エ8$=ؓ:���;;�=f��"v=M} �S�i��>߬s=j �<��Q�ØV>��=� ���5[=��=5q=�f>�u�ѽ|�O=���� >��� V�=Y�V=4��;*|g=J>��m=���r'�=��E�e���C����eZ�� ������=��s�==о�=��m;P\5��z�=�|����^=Y/�=�Pd=q�=�K <�U>�����<�O��Ȣ�=�uc�#�μGC0�����:L�<I`">�`B���]>��4>@�ʽ7Tؼ>+]� ��/�̼��޽ݢQ=-��=�@�=���=’D=4���� =�����H�<�ϝ= �>��]=�^`��T�<�ԽU�=2yҽ-�&<���<��>����(�0>J��41����潿����è=C�$=ԮG��a�=�w>n��=� ս7&<1��=�\�=:� >nI`>�!���<1v>3+=�y�=@ᘽ��= 2>}=>�d��H�=v_�=�m��>���l��ULl���b�Ȼ������:�=���=��=��׽O��=�LJ�0=6=]ֽ�5<=xe��FG=��ϻ��འ��;|�Z���r�ء����ܻ�2;�d�<Lk9�٦.>�К�Ȱ��/�=�6>'�}=��J����=?�k�:�E=f��=��#=qнά= V���(�= �~�M������=��(��|]=��|=]���Ϛ��~^>8�m��n���V=)��<�QO�F�<B�#�O��=θt=3@��N����>�K�����9�=��:���H�K�=#�;Le��鸽P:M�b= ��~��<����M����u>1]����=8�*>� >]�
�����ܧZ<��<\��=!�=��=vlh�l�>��>d3��E�պㇷ<O��9=�=�L>W����ֽ
���`.=��=�G�鮜=��"=Q��=�&������5!�&=>q�����=f>�3�=���=�߻=O����d>E��=��'�=4>��~>뛶�����:H<�6m�mxN�2���x>�q�=����� �h�]�E6,�Wx=�� >�y<C� >!!A>c>B��K����ɽ����ͱ�<Ǫ���P=���<߱���h;q� =��>�M�=!8�=W�>=?#
>=<=�-�<��O>�X��H:�<��!�=���~0>-;�X=�d�� �K>|z���=���=�VӼs�o��L�1����;�y(=��ν$,�=��l�nF��q�7�4<�O>1N�;�#��ã<�1>X>SA��p=�b�>I��=�"=㍹�j��Rː=g����4W=�_L>��r=� 齣�9�"�82�<�H!��A�=�څ=��Z���齭(�<5h��SSƽ{C
=�e�����<ױo��U�=h⽃�j������Dɼ`{)�џ ���=Nӌ=v���_=��ս��>�e�=f�&>�ؽ�s�����."=L>.�*�O<M��=�қ�T�`;�p�<���+��<{U�=�"��D�V;�'�=I�]� ���9aٽRJ���
B��-�7wڼ0�<>�Eżm���#�x�0����P�w��!�>�R=�?Ͻx“���1=���=��"�=aH<���<�&@=�H�=P
�=q�;�lj�d��<2�� �q<)I�=��S=1�>=- ��i>$�==�C�=�ߴ��4<�9��(�=ЖT=�&��+�= �E�.75����<�ȕ=�z���dN��E�=�&�F�:.��oI>F%�=�C���g�= ��=\�>��ѽ$���[�<0�=l�/<P�����=��=(m�=��ּ>=Cմ=���6+˼=½4��896��� �Jv�<��Z>�s�;��c=���*��<&CJ����=�ㄽ�7>�l�O_���s޽W�ۼ�̽"��=� ҽ�
�=�Mv�%D6=j���9�Ž�->>W����B=�o�:=e>�'�=K���������=�><A���9=�茽|}z�EҎ=���Y�����< |�^+<6�n=���]�M���޽�ZνO�B��5>@m]<x�o��v=� =A�;���*�;�DZ=\�a���6�ѴX�� {<� �<d�������1 ; �=��<v�=M��< }���4=�<�=�N�=�␽�:��l��r G< 꼥�2> #�g��=�rb<`��=%J�ÇL��Tս�E>�n>Q�'�>5=?a��">�<��1���м�FA>.�\��l�<��=7��=�|�=�L��J��}=d���=ʼnw�XSN���o=�>�}ּ��5=� ���<f��o�Ͻx=:�=n���ͥ�K��=��=��ǽ2�=QE�.�c��Z���"��{��:o�/h=�������+>a������q��=S;�i >�l���R����<V�/���F�e�>N�=5����� ��=�0��e��/���T��=}��=�oɽ�s�;8%����=bp�<�J= �J��H|�c�4>�I��K�0�u�����=��o=f��=�' >�. ����=�o3��
>J��=j]�<�xE>)ڼ��@=Ph���½�(=K���쐄=Z�g����<G��=6<Cy��3��=�5 >n&�¨ �cQ�=�Y�=�ݼ<���Gٴ=�� ��ý1j!=���:~���*��=�jH>�I��md�<.��<r<!7���Z$���1�I���2V�.�J>���;7=����>�ߝ��s��ɏ����"=Z<+��>P���U!�={�������.��=�g�N����K>ϸ�=����������<�������� И�a�>��<���<Dr>-��<M��;�j�=��Ļ���=%�ɽ�P=�r��ޖ=ر�<�����冼�8J�z��=zb =s�ԕ�=�oH=���pU@>�}+=Y>�����2=xn��G>Fy���n���W~=���<��k;q� =Tz�=��;Q�x������=�3^=S%x=��#=�� ��MA>��<���p���48?��G]>���=������=��=����g�0�‘���Ѽ�r�gv}����= 5>瞻�ᄑfY������ǽ!����w���r#>����/�<����1�= >?b�<C�m��5ڼ��q:C�{>ү9;Q֦�$=��e1�=������ϼF�= ��=��-><@�^B�� e�<�P=/ʽ�&:eJ�<����;Di���t�=T�y��lS�;BQ~=�f=���;��'�F�<P8>yJ�����`�ͼ/�<�Ǽ˄:*�b>I>����;>z��@g��;*=�,��x�=~�]�&������|\Y=���<Gd����=_��=Wk�=�9p�+�G�A�ĺc.P=���a������=[��=FQ�<����fT=eX%>���>�<Y��$߼���Y��=�L��Ux�=��>$�=�{X��)�=���=�;��ˋ�=��<�"�=+��=�9��{����޽��/� ��=G�=,��=]���Z��=Α<�:�b> H>)��2����[<l,�=u�9�x���5?���W<*�z=���=G�`���B�S��s����:T�;>��=o�>J���4� >o��<T�*�:�>�D�=�]�=02���� ����=̗�=m�����J=Cc=�(j;:Z,>#������.�7冼
>Î7=�Q=D�o���&�&�>�<>�\">���#b
�خt���K���w�v>�<�oI�X16=G���@�l�T��=M�.�C�-�l�}<% ->�hؽ�.�=����A :=0�Ƚ�RK>>`=�Hɽe��<��u��1Y>�;�>�ʽr����N�=Q���_R<:�����=洐=��>�g�>~`2>�ܒ���"�o�����<Z��=��T>����JY�=��&��J4�l�$>dpn����&���}���!�=�(����L=���>����_�1=�,,>�>O=���=���=ID>�<�>�`�=a4 =�Cw����=|xH�ا��A�� �=���:��e��<����9 >6��=Y=�;Վ�;�U�:�gV>��7a�<�^����,Y>�=r�(]���n$��7�=�ͷ��J�<��߽�״��Ǐ=�[�E%<�-�=� ��/�5<�_*���n>i�*< �W>j�j��5�7��x�=�`=�R<�l�=���=$k<Tz�>"Ø�:s/<tio��=��}�=����0p=-=�+�<!�������ڥ�&��={��ˬ=3M^��-����<�9wz�v3m�S��=M����q=�4->�~!;� �<УU=_�ҽ�5��
�����=Z��=K�->�<�w�=�� >RZ�=� �ң ��������<9�(�ƽ��I=L��=St�=\���=A��=pR@=#x=���=�k,>i�<����Z��<ʹ>��=�
��d�6��=I� �h�=]��|)��J���+���[C=+&�&1>�$��J�~�����
Խ��>YR=��
���B<*�=��A�0�5��&E����s�ټ)�<���=�N���Υ=�˕=/*���������=Ʋ���S���g>3
��2v�ղ<=���=⡼�έ�B��=1\����=�"ֽ�[=��=?Y�<]��<����?�:��*�RxU��y*��x�=v�>����j���}UX:��w�[3f��,'>)@;��W�=x�X�Է>�>�ZO��d2= 蹼���<J�������д�=�*=��L�?8>~�ڽ �n=M t=c����t=���<�Qy>��A��S�=�m=€�;�۔�(���=/=&���뉽|Wl�-5���]=�M��4N�=N'�=j+�4+>�PV���K=G�>_��=Cc���:�<�������;�&>�8��h�>�? ���)�)�&��.>�ۦ�t�=ɮ�O��vgн��j>3�J=`�|<9�)>���>�C��F@o>B =r�</L�ȕ��9�1>�P"�wa� ��>Q�>���=��'=����r���=��=�j�<�p��F轄c�����=]-�=�ؽ>���}Ӈ=idw=�W >-�k�ʟ���޽���=�����;,�w�*�ソO��&��&��=#\>�;=��������]9��C�=��=h�����: ��z�=W����˻Vi�=���G��F"�=���=���=�1=�Ἅ�`�m�ɼ�yK>�sH���D�b��=��E��˘=4�彫x˽���<3�'��� ����<���=��<c�\�A�J�̤=V�&���>r�<:q'�L���ؤ�=�V�=���=�Ն�=�_�����=�*'����� ��� r�=�����S>�g =r�>M�A����=�,½�y�=~n>)�J<Kб;j+���/�P��=,��}���Xܵ<��3>"�A>������d��h��=R�����=�����0��۔=��m��P�<�g��K/�=���=M�=P�=�!��{ɽWƼ)D�<��>��B<��2=�N<=Spo>+�伷u(>G���q�Y=er>_�[=p��T4�9�{��J�}�(��=7�=����{���>�X�=�d'�4#��,�c=|�O���=l�>���;]ن=sY�=���=lI%�����N*���"T���<�38<���=�޽UΡ=JT��̭�=9��<�+��� >u���x=M�¼�^4�����%��=�p;����1��m�ͽͿ�=�`��ˬP<
�^=�� �6-�=P�
>�N;�[����=>���� ~����=ۯ�=ȮD� �>�9�Rw����:�q @>X�-=�;��_Xýr��=ht<����`M�=�=v���=e؀�n=x��=PE��po����\0���� ��Q����=5��=ZQѻ�Q�=��2��r=!��=����!)���G+=��>>�Ѫ����<����� �>��t����!_>v��=�����ǀ�t�>��j<i[
=��E�DL���Ȏ<���P_�-y��u���� %>,v��xE�S
=0<=�~�<�����:�S/7���N>������^tn=�~�=�2�<Q�ɽ4ī�;��=pr���A���M����=T�b=h�.�W��=Ⱥż�(ټe�y�]��D½�b)��$\=p�=.\弿�0=r,��|s��Z��=��M�kG"�N&?=�$%�b*(>~�[=?ل=KP==��=�@ =�t>?����8�;���^e�=�>����ܼc�q=��3=�+F:�i�<d����A,�ź=��=�ʼy�=��ڤ�=�~����<6썽K4 >�����y>�ȧ�d�,>�����"a��1=�[=�Q>e�W�����`�k.�<2\���=�>J�?=N&<_�=Q��;�^���b=a�>|�?=�D���6��JM>.$>C��:�����5?>`Ԗ��,<�&JS�))���̽p2<{�<Z = x">��hK>&���ey���;>�%S>��8�A��<�>N3->h�=�X�;�f <�9�_��=��^��"> ���<��s�=u >��D>f���t��;z�<=c�>�M5�i�!='�ܽ�ƚ; !>����XR�;�,2=�>�=ۭ>�>�=����>������ �9=���<=B�<où����>$Z�<�Y�[ �=ږ���5W<YJ�fL�<�t=p�=Y��^͂=Ub���
>�x�<I6t�֨9�}3�>s��:`�j=9t���`<�j=�1l�3��?�۽|L�=S6�=a��<���=׻?>5�=Jw]��{B��A=[�<%��=iK��D�\=�J�=}l�����=?�}���>�ur;���Ÿ>�q��73�=J��=&6>�"����w�Xh�<���=��=kn�+0�=��~�'u��[�>ǧ$>��C<��.=R۽=�qG�򒤻�(�v)n�� h���A���f<Xx>�L>�?�=��9;?�1=�c2�I�>d��=5ǎ��a��y�A���ν��к��>5g�=̭�=�4Ƚg5��RHU>�T=�� �y2;����e��<g��= KS�*����J��A���H���-<dn��Ο=bˣ=����+��=jL>�\0���O��e!>��1��T��Y�k�Q�]�U�h>�^ ="NZ��%=��=�� >�&���G=G]��<�ؽA�5=I-j>o>ZO�=k0<>�'��4�=ǡ���]��^_��u)=�ګ=������:'>=��н�צ=�$�=!żU�b��Ɵ=��+=�g
>�
��|N�<��}=ǃ\=�t�=/6��[V�N�7���W=�H��&�Yv=Iн�f�=���=����"<��Q=�Mν ڧ=Dr�=�>ݻ���<��=F*�G`>A��dv���_��k�$=�w:<�AB�Q��<�j5�o���n=���=���9W���_��X=)�&�=F��<S3�;����BX"��_<).�<� ��%�$P�=\sf=��<=2n��� �=Y��� ��->�߯=�U[�� �Ͱ�/��=9紽KZ�=4����B��P���(+B��$r=��ؽ�� =0�轀���\�:ɞ=��<�Ii>�X����ֻ�gd>��<����*�<�0=��<<l�m=���=-�f��6��)4뼋p޼]?�=K�>#VF>������*��=���=}�=T�H�S��o���4��������i=宑���f����>��=>V�%�˽`ͽ i1���>sHq=�
��8� Ƽ�0�����=b="HU�7 �=%����<��=�S>�#>˚�=�ͅ���y� ��=�b��@���c~>
&��6.;�(�<�Z�=��=�wC=�7/�Y�������N>x�=�'����%'�=��*>6�=���F�=����~�a�U�=a=u>JW��q��3�� >9-��!��<��ǽ�4>d��=���=#Z�;�㙻Wb�=>���&�=@�2=�W9>x6e<��7��i����>�V���)V=Ef�<���=$�7���U:I��V�����"]��t4>�1 =x!Q=��� >Z��<e V>O��;j��<y_>䳽>��<n����0�=\𐽥������"�>̱��� =Tm�=��=�mb�f�G>E�;�]�d�Sɔ�0Ѩ����=eM-��E >���=�������}t�H�z�PȨ�,�z=��c>������<�p�-=��`�Q�:<0R���=U*5�'B|����=�Jż�u�=Ѐ�=�i�=�
6�1_>�G��[xi��D<�q<ћ=L6�=���;|�>Zh��m��M=I���DO�=!�<��=��\=52n��\޽�),�`�(��\�$H׽f9�>=�� ��=����t��;��ѽ�`>r�l<<�c=d���L��<�ힽ�6>]O彌u�=N絽T.S����<v7�=���=�=L a��GA>��`=���=�w���"<�Δ+>��I=��=Ԉ�=@��<a6���\�<f� >���=n�=I~=^�L>7�̽|
(>��<^�ǽD�_��k!�fG�=e����>V��8�'�,*��
�=�=>�j�*�T]>9�2>��=>�R=!@��=�<��=��d=��G=$���0=�5�=2x�o���ω���d�=�f�?�i>�J<g������=���ͱ��"vP=�Ľ�����=Du�<��=������=�} �H� =O�!=�]�=���>�a ��C�=���)o����3�:�|�H=Պt�q�=ۉ�=���=� ��L�L�c( �`I.<z��<�<�u��m�?��h�=T��= ���>=jE�=�����<
>�Le=��=5ǽ�� ���=�]�=#T��TD:�q�ɏŽ"A>'�x=�\&>�X
<<c�<#�c�QB_�v����k�=�J�=�$8=�4����;�t>�Gs��ҏ�)�+��7N���u�� >S:@>��i:o�\=��6�]߼��=��>��t<���=�޺��Xʼ���0R��=J�Q��>.�?�Q=��!=ک���<$��#���z|>f]Ƽ�U��5m �q�>Eg=��%;K�ʖ=tcu=��=^�Ⱥ��=S�V<'����̚=�d?=���;6"�=��Ž�e�=}�>��(��=�<|�������Aȴ�_�)R�b�W=�� ��<�'̼o�)=�Qy=�~�7���ǂ�<�A���g=�綠�q�=m(O=���s ҽD��<q2/=��?=@����G���A��廟��= LY�� �=n8�<�����U�Qv:���μ���5�>�=T=�'�=KJQ=�+��@����g���o��h���B�_ \>��(>��=_�3=�~���k�<tǼn��<��4��u'�N>L����u&<=�=��#=�O=�GV�=�!��'6�����sl>f� =z} �|O �M@h=��>��U>`����>}�=J_��̭=���q�3�����Y!>0��W/a���=�. >�s9;ϝ�=��=O� >��=*��l����
=u2�=��K=S��=0}A����=?�4>3��=�5�=޿>��=',m�ܛ==���=��)���/�ΗE=g�'��伽Ԑ$���h��$>�<¯>#|9�b�[���4>��V=��*��c��,�=�M=�c���z�=$(*>�޼�(��9�z���ͬ���'>��>��;�P���k�*{���VE;� ��������S=�1�hW����=�~>�ѽd���=`Ď=�W>zH�=KI�����=e"_��==^�Lwv��f�<�+a=��������=-�:<(�$� ! =#n�<�ϼ� �� >I�<@B#>��\>��8����<���:�r�=jo�lj����S=��J=@B>��8>q��=�,��lr[��ƨ;k��=ӻ�=���<K��4Q���$�vi>X���H�������4V=AuԽ���=��!>�Y�
+���N���=E)=&�)��g�=ݍ�� �<� �=r����>=���l�� �>g<�<�ϡ��v⹳ˇ=�^ϼv�ƽ���=�����Ͻh=L��������=�Z1=���<y~����>��޽n����.�<����Ѝ�����7ï< �5\���W.�Q���a?����=7�m��?r>�$�< n�=Q$;U<X=�����޽sV�=��ra��6�=c ��쿼�SY=�����d�=�����^����<���3G@>< >
m�<%5��]Ҽ��=�ş=���=�[�:�R������(������l!��Dp=�?��_��=O��= �Ƚ����H��x��g�X>��=n�=K(���ē<��e�S7�=�%/�W���G>-4��Ƚ��a6�=�Md���W>�1 ���6��n=�_��3!=��r+=Q�)��ӽ�7b�)�����6='b=>�V�Y��=e�k������n�<rz��ՌY� �9>&߉=���=���;%��'�ƽi������9>�<��U>�+�2}�;8�=So�;輽�;��,X�Q��= ��:е�F&�=���;�6�R�>h=aG>��7>Ia>��X<�}���!�=���=�K6>���jn�=�;��P�=qU�=x�>����xA=�u�u9ս�����=>o>�Φ���|�B��;K>���=iW켺��~�ҽ �=���<о�="5��Q[�� �<1�h=��<t�:����;��t���Ž\K��v �=���=B<ͺ>Ė�<�Z�<T.�=
; <;��=����qĽJG=Y����������6=�M�΄�=G��>�����G�Tͥ=��=��%�����ސ=T����'>\�ŽΗ�RJg=ȽI<��A��ր=��<��o���=�I=Q�B�N =��7�/m�=��9>u� >�
\= [d��*�<1[?�q)>���=MfU�Z\k<�p���;�;=t�=O��<��>�h��� <<�Rҽ�ϻ�Ar����R$<�ɻ�=φؽ�c�>y�^>i�-������>+��<]̗�؃�=�<���=��d�J >Y�[>�}�<h��#�T=R1X=ؼ���� ��[��N�@��=��->a���.�a<s�=�cE;?J!>HY=�31=Mb齘��=�B>��9��aڽS����s�h�+<2�B=pH��B���n>����8">7G �y!��a��� ��>&�w������=�d��(����U���ͼ���<sD<�a >>@>ʬl���>Z�&���G=|�<= �>��+R����*Bversion_numberJ@Z)
vector_observation

batch
oZ#
action_masks

batch
b
version_number

b
memory_size

b'
discrete_actions

batch
b*
discrete_action_output_shape

b
action

batch
b#
is_continuous_control

b!
action_output_shape

B

14
Project/Assets/ML-Agents/Examples/Hallway/TFModels/HallwayCollab.onnx.meta


fileFormatVersion: 2
guid: 24bf45e63f29d458f812c1702e665803
ScriptedImporter:
fileIDToRecycleName:
11400000: main obj
11400002: model data
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3}
optimizeModel: 1
forceArbitraryBatchSize: 1
treatErrorsAsWarnings: 0

11
Project/Assets/ML-Agents/Examples/Hallway/Scripts/HallwayCollabAgent.cs.meta


fileFormatVersion: 2
guid: f7451777d89fd47418f0e1c3e2511919
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

194
Project/Assets/ML-Agents/Examples/Hallway/Scripts/HallwayCollabAgent.cs


using System.Collections;
using UnityEngine;
using Unity.MLAgents;
using Unity.MLAgents.Actuators;
using Unity.MLAgents.Sensors;
public class HallwayCollabAgent : HallwayAgent
{
public GameObject symbolSGoal;
public GameObject symbolS;
public HallwayCollabAgent teammate;
public bool isSpotter = true;
int m_Message = 0;
[HideInInspector]
public int selection = 0;
public override void OnEpisodeBegin()
{
m_Message = -1;
var agentOffset = 10f;
if (isSpotter)
{
agentOffset = -15;
}
if (!isSpotter)
{
transform.position = new Vector3(0f + Random.Range(-3f, 3f),
1f, agentOffset + Random.Range(-5f, 5f))
+ ground.transform.position;
transform.rotation = Quaternion.Euler(0f, Random.Range(0f, 360f), 0f);
}
else
{
transform.position = new Vector3(0f,
1f, agentOffset)
+ ground.transform.position;
transform.rotation = Quaternion.Euler(0f, 0f, 0f);
}
// Remove the randomness
m_AgentRb.velocity *= 0f;
if (isSpotter)
{
var blockOffset = -9f;
// Only the Spotter has the correct selection
selection = Random.Range(0, 3);
if (selection == 0)
{
symbolO.transform.position =
new Vector3(0f, 2f, blockOffset)
+ ground.transform.position;
symbolX.transform.position =
new Vector3(0f, -1000f, blockOffset + Random.Range(-5f, 5f))
+ ground.transform.position;
symbolS.transform.position =
new Vector3(0f, -1000f, blockOffset + Random.Range(-5f, 5f))
+ ground.transform.position;
}
else if (selection == 1)
{
symbolO.transform.position =
new Vector3(0f, -1000f, blockOffset + Random.Range(-5f, 5f))
+ ground.transform.position;
symbolX.transform.position =
new Vector3(0f, 2f, blockOffset)
+ ground.transform.position;
symbolS.transform.position =
new Vector3(0f, -1000f, blockOffset + Random.Range(-5f, 5f))
+ ground.transform.position;
}
else
{
symbolO.transform.position =
new Vector3(0f, -1000f, blockOffset + Random.Range(-5f, 5f))
+ ground.transform.position;
symbolX.transform.position =
new Vector3(0f, -1000f, blockOffset)
+ ground.transform.position;
symbolS.transform.position =
new Vector3(0f, 2f, blockOffset)
+ ground.transform.position;
}
var goalPos = Random.Range(0, 7);
if (goalPos == 0)
{
symbolOGoal.transform.position = new Vector3(7f, 0.5f, 22.29f) + area.transform.position;
symbolXGoal.transform.position = new Vector3(0f, 0.5f, 22.29f) + area.transform.position;
symbolSGoal.transform.position = new Vector3(-7f, 0.5f, 22.29f) + area.transform.position;
}
else if (goalPos == 1)
{
symbolOGoal.transform.position = new Vector3(7f, 0.5f, 22.29f) + area.transform.position;
symbolXGoal.transform.position = new Vector3(-7f, 0.5f, 22.29f) + area.transform.position;
symbolSGoal.transform.position = new Vector3(0f, 0.5f, 22.29f) + area.transform.position;
}
else if (goalPos == 2)
{
symbolOGoal.transform.position = new Vector3(-7f, 0.5f, 22.29f) + area.transform.position;
symbolXGoal.transform.position = new Vector3(7f, 0.5f, 22.29f) + area.transform.position;
symbolSGoal.transform.position = new Vector3(0f, 0.5f, 22.29f) + area.transform.position;
}
else if (goalPos == 3)
{
symbolOGoal.transform.position = new Vector3(-7f, 0.5f, 22.29f) + area.transform.position;
symbolXGoal.transform.position = new Vector3(0f, 0.5f, 22.29f) + area.transform.position;
symbolSGoal.transform.position = new Vector3(7f, 0.5f, 22.29f) + area.transform.position;
}
else if (goalPos == 4)
{
symbolOGoal.transform.position = new Vector3(0f, 0.5f, 22.29f) + area.transform.position;
symbolXGoal.transform.position = new Vector3(-7f, 0.5f, 22.29f) + area.transform.position;
symbolSGoal.transform.position = new Vector3(7f, 0.5f, 22.29f) + area.transform.position;
}
else
{
symbolOGoal.transform.position = new Vector3(0f, 0.5f, 22.29f) + area.transform.position;
symbolXGoal.transform.position = new Vector3(7f, 0.5f, 22.29f) + area.transform.position;
symbolSGoal.transform.position = new Vector3(-7f, 0.5f, 22.29f) + area.transform.position;
}
}
}
public override void CollectObservations(VectorSensor sensor)
{
if (useVectorObs)
{
sensor.AddObservation(StepCount / (float)MaxStep);
}
sensor.AddObservation(toOnehot(m_Message));
}
float[] toOnehot(int message)
{
float[] onehot = new float[3];
if (message < 0 || message >= 3)
{
return onehot;
}
onehot[message] = 1f;
return onehot;
}
public void tellAgent(int message)
{
m_Message = message;
}
public override void OnActionReceived(ActionBuffers actionBuffers)
{
AddReward(-1f / MaxStep);
if (!isSpotter)
{
MoveAgent(actionBuffers.DiscreteActions);
}
int comm_act = actionBuffers.DiscreteActions[1];
teammate.tellAgent(comm_act);
// if (isSpotter) // Test
// {
// teammate.tellAgent(selection);
// }
}
void OnCollisionEnter(Collision col)
{
if (col.gameObject.CompareTag("symbol_O_Goal") || col.gameObject.CompareTag("symbol_X_Goal") || col.gameObject.CompareTag("symbol_S_Goal"))
{
if (!isSpotter)
{
// Check the ground truth
if ((teammate.selection == 0 && col.gameObject.CompareTag("symbol_O_Goal")) ||
(teammate.selection == 1 && col.gameObject.CompareTag("symbol_X_Goal")) ||
(teammate.selection == 2 && col.gameObject.CompareTag("symbol_S_Goal")))
{
SetReward(1f);
teammate.SetReward(1f);
StartCoroutine(GoalScoredSwapGroundMaterial(m_HallwaySettings.goalScoredMaterial, 0.5f));
}
else
{
SetReward(-0.1f);
teammate.SetReward(-0.1f);
StartCoroutine(GoalScoredSwapGroundMaterial(m_HallwaySettings.failMaterial, 0.5f));
}
EndEpisode();
teammate.EndEpisode();
}
}
}
}

7
Project/Assets/ML-Agents/Examples/PushBlock/Prefabs/PushBlockCollabArea.prefab.meta


fileFormatVersion: 2
guid: 8689a8cfb0ac742bfa27214909ebb1e8
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Project/Assets/ML-Agents/Examples/PushBlock/Prefabs/PushBlockCollabArea.prefab
文件差异内容过多而无法显示
查看文件

7
Project/Assets/ML-Agents/Examples/PushBlock/Prefabs/ZombiePushBlockCollabArea.prefab.meta


fileFormatVersion: 2
guid: 4efb4d72c7b94469ca38276842875f65
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Project/Assets/ML-Agents/Examples/PushBlock/Prefabs/ZombiePushBlockCollabArea.prefab
文件差异内容过多而无法显示
查看文件

1001
Project/Assets/ML-Agents/Examples/PushBlock/TFModels/PushBlockCollab.onnx
文件差异内容过多而无法显示
查看文件

14
Project/Assets/ML-Agents/Examples/PushBlock/TFModels/PushBlockCollab.onnx.meta


fileFormatVersion: 2
guid: a051c5abff78d40c586086c42e713e18
ScriptedImporter:
fileIDToRecycleName:
11400000: main obj
11400002: model data
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3}
optimizeModel: 1
forceArbitraryBatchSize: 1
treatErrorsAsWarnings: 0

1001
Project/Assets/ML-Agents/Examples/PushBlock/TFModels/PushBlockCC.onnx
文件差异内容过多而无法显示
查看文件

14
Project/Assets/ML-Agents/Examples/PushBlock/TFModels/PushBlockCC.onnx.meta


fileFormatVersion: 2
guid: 9a4ea4894b7fb49859cfa9c16652b207
ScriptedImporter:
fileIDToRecycleName:
11400000: main obj
11400002: model data
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3}
optimizeModel: 1
forceArbitraryBatchSize: 1
treatErrorsAsWarnings: 0

1001
Project/Assets/ML-Agents/Examples/PushBlock/TFModels/PushBlockMaster.onnx
文件差异内容过多而无法显示
查看文件

14
Project/Assets/ML-Agents/Examples/PushBlock/TFModels/PushBlockMaster.onnx.meta


fileFormatVersion: 2
guid: 76af036f6a9b94e3c988951e6315dab4
ScriptedImporter:
fileIDToRecycleName:
11400000: main obj
11400002: model data
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3}
optimizeModel: 1
forceArbitraryBatchSize: 1
treatErrorsAsWarnings: 0

9
Project/Assets/ML-Agents/Examples/PushBlock/Scenes/PushBlockCollab.unity.meta


fileFormatVersion: 2
guid: b9c81cbb0f0ac40649eddfef0971e81b
timeCreated: 1506808980
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

969
Project/Assets/ML-Agents/Examples/PushBlock/Scenes/PushBlockCollab.unity


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.8, g: 0.8, b: 0.8, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 3
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 11
m_GIWorkflowMode: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 1
m_LightmapEditorSettings:
serializedVersion: 10
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 0
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVRBounces: 2
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVRFilteringMode: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ShowResolutionOverlay: 1
m_LightingDataAsset: {fileID: 112000002, guid: 03723c7f910c3423aa1974f1b9ce8392,
type: 2}
m_UseShadowmask: 1
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &255077123
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 255077126}
- component: {fileID: 255077125}
- component: {fileID: 255077124}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &255077124
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 255077123}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalAxis: Horizontal
m_VerticalAxis: Vertical
m_SubmitButton: Submit
m_CancelButton: Cancel
m_InputActionsPerSecond: 10
m_RepeatDelay: 0.5
m_ForceModuleActive: 0
--- !u!114 &255077125
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 255077123}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 5
--- !u!4 &255077126
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 255077123}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &318490716
GameObject:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 318490717}
m_Layer: 0
m_Name: UnityEngine-Recorder
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &318490717
Transform:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 318490716}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 365376271}
- {fileID: 1265651286}
m_Father: {fileID: 0}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &365376270
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 365376271}
m_Layer: 0
m_Name: Settings
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &365376271
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 365376270}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 1257687049}
m_Father: {fileID: 318490717}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &502449554
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalPosition.x
value: 106.38621
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalPosition.y
value: 38.840767
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalPosition.z
value: 34.72934
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalRotation.x
value: 0.31598538
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalRotation.y
value: -0.3596048
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalRotation.z
value: 0.13088542
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalRotation.w
value: 0.8681629
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_RootOrder
value: 4
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
--- !u!1001 &687199677
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 2313762877161590336, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: GroupId
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalPosition.x
value: 50
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_RootOrder
value: 7
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2416678558414254088, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_Name
value: PushBlockCollabArea (1)
objectReference: {fileID: 0}
- target: {fileID: 2416809913911815199, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: GroupId
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 8689a8cfb0ac742bfa27214909ebb1e8, type: 3}
--- !u!1001 &768746187
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 2313762877161590336, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: GroupId
value: 3
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalPosition.x
value: 150
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_RootOrder
value: 9
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2416678558414254088, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_Name
value: PushBlockCollabArea (3)
objectReference: {fileID: 0}
- target: {fileID: 2416809913911815199, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: GroupId
value: 3
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 8689a8cfb0ac742bfa27214909ebb1e8, type: 3}
--- !u!1 &1009000883
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1009000884}
- component: {fileID: 1009000887}
m_Layer: 0
m_Name: SingleCam
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1009000884
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1009000883}
m_LocalRotation: {x: 0.5, y: 0, z: 0, w: 0.8660254}
m_LocalPosition: {x: 0, y: 20, z: -15}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 60, y: 0, z: 0}
--- !u!20 &1009000887
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1009000883}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.46666667, g: 0.5647059, b: 0.60784316, a: 1}
m_projectionMatrixMode: 1
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_GateFitMode: 2
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 56.2
orthographic: 0
orthographic size: 6.98
m_Depth: 2
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!1001 &1219049691
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 2313762877161590336, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: GroupId
value: 4
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalPosition.x
value: 200
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_RootOrder
value: 10
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2416678558414254088, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_Name
value: PushBlockCollabArea (4)
objectReference: {fileID: 0}
- target: {fileID: 2416809913911815199, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: GroupId
value: 4
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 8689a8cfb0ac742bfa27214909ebb1e8, type: 3}
--- !u!1 &1257687048
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1257687049}
m_Layer: 0
m_Name: 50bfc0f4c3d6f46df98d3c66ceb89209
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1257687049
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1257687048}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 365376271}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1265651285
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1265651286}
m_Layer: 0
m_Name: RecordingSessions
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1265651286
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1265651285}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 318490717}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1558468742
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 2313762877161590336, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: GroupId
value: 2
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalPosition.x
value: 100
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_RootOrder
value: 8
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2416678558414254088, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_Name
value: PushBlockCollabArea (2)
objectReference: {fileID: 0}
- target: {fileID: 2416809913911815199, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: GroupId
value: 2
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 8689a8cfb0ac742bfa27214909ebb1e8, type: 3}
--- !u!1 &1574236047
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1574236049}
- component: {fileID: 1574236050}
- component: {fileID: 1574236048}
m_Layer: 0
m_Name: PushBlockSettings
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1574236048
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1574236047}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3}
m_Name:
m_EditorClassIdentifier:
gravityMultiplier: 1.5
fixedDeltaTime: 0.02
maximumDeltaTime: 0.33333334
solverIterations: 6
solverVelocityIterations: 1
reuseCollisionCallbacks: 1
--- !u!4 &1574236049
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1574236047}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1574236050
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1574236047}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e5ed63dbfa25542ecb8bc013adfba183, type: 3}
m_Name:
m_EditorClassIdentifier:
agentRunSpeed: 3
agentRotationSpeed: 15
spawnAreaMarginMultiplier: 0.5
goalScoredMaterial: {fileID: 2100000, guid: df32cc593804f42df97464dc455057b8, type: 2}
failMaterial: {fileID: 2100000, guid: a1daf31cdf41e484ca9ac33a5c6f524a, type: 2}
--- !u!1001 &1900462655
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_RootOrder
value: 3
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_Pivot.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_Pivot.y
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3}
--- !u!1001 &2416809913901764614
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_RootOrder
value: 5
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2415063656827223864, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2416678558414254088, guid: 8689a8cfb0ac742bfa27214909ebb1e8,
type: 3}
propertyPath: m_Name
value: PushBlockCollabArea
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 8689a8cfb0ac742bfa27214909ebb1e8, type: 3}

997
Project/Assets/ML-Agents/Examples/PushBlock/Scenes/ZombiePushBlock.unity


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.8, g: 0.8, b: 0.8, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 3
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 11
m_GIWorkflowMode: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 1
m_LightmapEditorSettings:
serializedVersion: 10
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 0
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVRBounces: 2
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVRFilteringMode: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ShowResolutionOverlay: 1
m_LightingDataAsset: {fileID: 112000002, guid: 03723c7f910c3423aa1974f1b9ce8392,
type: 2}
m_UseShadowmask: 1
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1001 &185397489
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 7252038608842613995, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: GroupId
value: 2
objectReference: {fileID: 0}
- target: {fileID: 7252038610261898582, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: GroupId
value: 2
objectReference: {fileID: 0}
- target: {fileID: 7252929719452920129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_Name
value: ZombiePushBlockCollabArea (2)
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalPosition.x
value: 50
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_RootOrder
value: 9
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7292016560317339401, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: GroupId
value: 2
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 4efb4d72c7b94469ca38276842875f65, type: 3}
--- !u!1 &255077123
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 255077126}
- component: {fileID: 255077125}
- component: {fileID: 255077124}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &255077124
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 255077123}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalAxis: Horizontal
m_VerticalAxis: Vertical
m_SubmitButton: Submit
m_CancelButton: Cancel
m_InputActionsPerSecond: 10
m_RepeatDelay: 0.5
m_ForceModuleActive: 0
--- !u!114 &255077125
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 255077123}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 5
--- !u!4 &255077126
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 255077123}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &318490716
GameObject:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 318490717}
m_Layer: 0
m_Name: UnityEngine-Recorder
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &318490717
Transform:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 318490716}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 365376271}
- {fileID: 1265651286}
m_Father: {fileID: 0}
m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &323272729
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 7252038608842613995, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: GroupId
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7252038608842613995, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_Model
value:
objectReference: {fileID: 11400000, guid: 9a4ea4894b7fb49859cfa9c16652b207,
type: 3}
- target: {fileID: 7252038610261898582, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: GroupId
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7252038610261898582, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_Model
value:
objectReference: {fileID: 11400000, guid: 9a4ea4894b7fb49859cfa9c16652b207,
type: 3}
- target: {fileID: 7252929719452920129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_Name
value: ZombiePushBlockCollabArea (1)
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalPosition.x
value: -50
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_RootOrder
value: 8
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7292016560317339401, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: GroupId
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7292016560317339401, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_Model
value:
objectReference: {fileID: 11400000, guid: 9a4ea4894b7fb49859cfa9c16652b207,
type: 3}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 4efb4d72c7b94469ca38276842875f65, type: 3}
--- !u!1 &365376270
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 365376271}
m_Layer: 0
m_Name: Settings
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &365376271
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 365376270}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 1257687049}
m_Father: {fileID: 318490717}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &394216286
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 7430253518223459950, guid: ff2999c8614d848f8a7e55e3a6fb9282,
type: 3}
propertyPath: m_Name
value: WormBasePrefab
objectReference: {fileID: 0}
- target: {fileID: 7430253518223459950, guid: ff2999c8614d848f8a7e55e3a6fb9282,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7430253518223459951, guid: ff2999c8614d848f8a7e55e3a6fb9282,
type: 3}
propertyPath: m_LocalPosition.x
value: -9.25
objectReference: {fileID: 0}
- target: {fileID: 7430253518223459951, guid: ff2999c8614d848f8a7e55e3a6fb9282,
type: 3}
propertyPath: m_LocalPosition.y
value: 1.1849128
objectReference: {fileID: 0}
- target: {fileID: 7430253518223459951, guid: ff2999c8614d848f8a7e55e3a6fb9282,
type: 3}
propertyPath: m_LocalPosition.z
value: 0.6859223
objectReference: {fileID: 0}
- target: {fileID: 7430253518223459951, guid: ff2999c8614d848f8a7e55e3a6fb9282,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7430253518223459951, guid: ff2999c8614d848f8a7e55e3a6fb9282,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7430253518223459951, guid: ff2999c8614d848f8a7e55e3a6fb9282,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7430253518223459951, guid: ff2999c8614d848f8a7e55e3a6fb9282,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7430253518223459951, guid: ff2999c8614d848f8a7e55e3a6fb9282,
type: 3}
propertyPath: m_RootOrder
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7430253518223459951, guid: ff2999c8614d848f8a7e55e3a6fb9282,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7430253518223459951, guid: ff2999c8614d848f8a7e55e3a6fb9282,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7430253518223459951, guid: ff2999c8614d848f8a7e55e3a6fb9282,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: ff2999c8614d848f8a7e55e3a6fb9282, type: 3}
--- !u!1001 &502449554
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalPosition.x
value: 106.38621
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalPosition.y
value: 38.840767
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalPosition.z
value: 34.72934
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalRotation.x
value: 0.31598538
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalRotation.y
value: -0.3596048
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalRotation.z
value: 0.13088542
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalRotation.w
value: 0.8681629
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_RootOrder
value: 4
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
--- !u!1001 &714209662
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 7252038608842613995, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: GroupId
value: 3
objectReference: {fileID: 0}
- target: {fileID: 7252038610261898582, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: GroupId
value: 3
objectReference: {fileID: 0}
- target: {fileID: 7252929719452920129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_Name
value: ZombiePushBlockCollabArea (3)
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalPosition.x
value: 100
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_RootOrder
value: 10
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7292016560317339401, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: GroupId
value: 3
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 4efb4d72c7b94469ca38276842875f65, type: 3}
--- !u!1 &1009000883
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1009000884}
- component: {fileID: 1009000887}
m_Layer: 0
m_Name: SingleCam
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1009000884
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1009000883}
m_LocalRotation: {x: 0.5, y: 0, z: 0, w: 0.8660254}
m_LocalPosition: {x: 0, y: 20, z: -15}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 60, y: 0, z: 0}
--- !u!20 &1009000887
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1009000883}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.46666667, g: 0.5647059, b: 0.60784316, a: 1}
m_projectionMatrixMode: 1
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_GateFitMode: 2
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 56.2
orthographic: 0
orthographic size: 6.98
m_Depth: 2
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!1 &1257687048
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1257687049}
m_Layer: 0
m_Name: 50bfc0f4c3d6f46df98d3c66ceb89209
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1257687049
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1257687048}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 365376271}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1265651285
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1265651286}
m_Layer: 0
m_Name: RecordingSessions
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1265651286
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1265651285}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 318490717}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1574236047
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1574236049}
- component: {fileID: 1574236050}
- component: {fileID: 1574236048}
m_Layer: 0
m_Name: PushBlockSettings
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1574236048
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1574236047}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3}
m_Name:
m_EditorClassIdentifier:
gravityMultiplier: 1.5
fixedDeltaTime: 0.01333
maximumDeltaTime: 0.33333334
solverIterations: 12
solverVelocityIterations: 12
reuseCollisionCallbacks: 1
--- !u!4 &1574236049
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1574236047}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1574236050
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1574236047}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e5ed63dbfa25542ecb8bc013adfba183, type: 3}
m_Name:
m_EditorClassIdentifier:
agentRunSpeed: 3
agentRotationSpeed: 15
spawnAreaMarginMultiplier: 0.5
goalScoredMaterial: {fileID: 2100000, guid: df32cc593804f42df97464dc455057b8, type: 2}
failMaterial: {fileID: 2100000, guid: a1daf31cdf41e484ca9ac33a5c6f524a, type: 2}
--- !u!1001 &1900462655
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_RootOrder
value: 2
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_Pivot.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_Pivot.y
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3}
--- !u!1001 &7252038610051467599
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 7252929719452920129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_Name
value: ZombiePushBlockCollabArea
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_RootOrder
value: 6
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7253705700397590129, guid: 4efb4d72c7b94469ca38276842875f65,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 4efb4d72c7b94469ca38276842875f65, type: 3}

9
Project/Assets/ML-Agents/Examples/PushBlock/Scenes/ZombiePushBlock.unity.meta


fileFormatVersion: 2
guid: be1201eb6253541c38e8258fceae65cb
timeCreated: 1506808980
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Project/Assets/ML-Agents/Examples/PushBlock/Scenes/1ZombieVs2AgentsPushBlock.unity
文件差异内容过多而无法显示
查看文件

1001
Project/Assets/ML-Agents/Examples/PushBlock/Scenes/2ZombieVs3AgentsPushBlock.unity
文件差异内容过多而无法显示
查看文件

9
Project/Assets/ML-Agents/Examples/PushBlock/Scenes/2ZombieVs3AgentsPushBlock.unity.meta


fileFormatVersion: 2
guid: 473dc7cfdb610468983d530a0fb29bdc
timeCreated: 1506808980
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

9
Project/Assets/ML-Agents/Examples/PushBlock/Scenes/1ZombieVs2AgentsPushBlock.unity.meta


fileFormatVersion: 2
guid: bd81f203c716d4c88af4b47f450907b2
timeCreated: 1506808980
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

12
Project/Assets/ML-Agents/Examples/PushBlock/Scripts/PushAgentCollab.cs.meta


fileFormatVersion: 2
guid: d94a85eca2e074578943301959c555ba
timeCreated: 1506829537
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

11
Project/Assets/ML-Agents/Examples/PushBlock/Scripts/PushBlockEnvController.cs.meta


fileFormatVersion: 2
guid: 4bb2bb36bb51d452ab58d30a868dfab3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

60
Project/Assets/ML-Agents/Examples/PushBlock/Scripts/GoalDetectTrigger.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class GoalDetectTrigger : MonoBehaviour
{
[Header("Trigger Collider Tag To Detect")]
public string tagToDetect = "goal"; //collider tag to detect
[Header("Goal Value")]
public float GoalValue = 1;
private Collider m_col;
[System.Serializable]
public class TriggerEvent : UnityEvent<Collider, float>
{
}
[Header("Trigger Callbacks")]
public TriggerEvent onTriggerEnterEvent = new TriggerEvent();
public TriggerEvent onTriggerStayEvent = new TriggerEvent();
public TriggerEvent onTriggerExitEvent = new TriggerEvent();
private void OnTriggerEnter(Collider col)
{
if (col.CompareTag(tagToDetect))
{
onTriggerEnterEvent.Invoke(m_col, GoalValue);
}
}
private void OnTriggerStay(Collider col)
{
if (col.CompareTag(tagToDetect))
{
onTriggerStayEvent.Invoke(m_col, GoalValue);
}
}
private void OnTriggerExit(Collider col)
{
if (col.CompareTag(tagToDetect))
{
onTriggerExitEvent.Invoke(m_col, GoalValue);
}
}
// Start is called before the first frame update
void Awake()
{
m_col = GetComponent<Collider>();
}
// Update is called once per frame
void Update()
{
}
}

11
Project/Assets/ML-Agents/Examples/PushBlock/Scripts/GoalDetectTrigger.cs.meta


fileFormatVersion: 2
guid: 9dcea692df32b46b4a884cfcc150aef7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

236
Project/Assets/ML-Agents/Examples/PushBlock/Scripts/PushBlockEnvController.cs


using System.Collections;
using System.Collections.Generic;
using Unity.MLAgents;
using UnityEngine;
public class PushBlockEnvController : MonoBehaviour
{
[System.Serializable]
public class AgentInfo
{
public PushAgentCollab Agent;
[HideInInspector]
public Vector3 StartingPos;
[HideInInspector]
public Quaternion StartingRot;
[HideInInspector]
public Rigidbody Rb;
}
[System.Serializable]
public class BlockInfo
{
public Transform T;
[HideInInspector]
public Vector3 StartingPos;
[HideInInspector]
public Quaternion StartingRot;
[HideInInspector]
public Rigidbody Rb;
}
/// <summary>
/// Max Academy steps before this platform resets
/// </summary>
/// <returns></returns>
[Header("Max Environment Steps")] public int MaxEnvironmentSteps = 25000;
private int m_ResetTimer;
/// <summary>
/// The area bounds.
/// </summary>
[HideInInspector]
public Bounds areaBounds;
/// <summary>
/// The ground. The bounds are used to spawn the elements.
/// </summary>
public GameObject ground;
public GameObject area;
Material m_GroundMaterial; //cached on Awake()
/// <summary>
/// We will be changing the ground material based on success/failue
/// </summary>
Renderer m_GroundRenderer;
public List<AgentInfo> AgentsList = new List<AgentInfo>();
public List<BlockInfo> BlocksList = new List<BlockInfo>();
public bool UseRandomAgentRotation = true;
public bool UseRandomAgentPosition = true;
public bool UseRandomBlockRotation = true;
public bool UseRandomBlockPosition = true;
PushBlockSettings m_PushBlockSettings;
private int m_NumberOfRemainingBlocks;
void Start()
{
// Get the ground's bounds
areaBounds = ground.GetComponent<Collider>().bounds;
// Get the ground renderer so we can change the material when a goal is scored
m_GroundRenderer = ground.GetComponent<Renderer>();
// Starting material
m_GroundMaterial = m_GroundRenderer.material;
m_PushBlockSettings = FindObjectOfType<PushBlockSettings>();
foreach (var item in BlocksList)
{
item.StartingPos = item.T.transform.position;
item.StartingRot = item.T.transform.rotation;
item.Rb = item.T.GetComponent<Rigidbody>();
}
foreach (var item in AgentsList)
{
item.StartingPos = item.Agent.transform.position;
item.StartingRot = item.Agent.transform.rotation;
item.Rb = item.Agent.GetComponent<Rigidbody>();
}
ResetScene();
}
// Update is called once per frame
void FixedUpdate()
{
m_ResetTimer += 1;
if (m_ResetTimer > MaxEnvironmentSteps)
{
ResetScene();
}
}
/// <summary>
/// Use the ground's bounds to pick a random spawn position.
/// </summary>
public Vector3 GetRandomSpawnPos()
{
var foundNewSpawnLocation = false;
var randomSpawnPos = Vector3.zero;
while (foundNewSpawnLocation == false)
{
var randomPosX = Random.Range(-areaBounds.extents.x * m_PushBlockSettings.spawnAreaMarginMultiplier,
areaBounds.extents.x * m_PushBlockSettings.spawnAreaMarginMultiplier);
var randomPosZ = Random.Range(-areaBounds.extents.z * m_PushBlockSettings.spawnAreaMarginMultiplier,
areaBounds.extents.z * m_PushBlockSettings.spawnAreaMarginMultiplier);
randomSpawnPos = ground.transform.position + new Vector3(randomPosX, 1f, randomPosZ);
if (Physics.CheckBox(randomSpawnPos, new Vector3(2.5f, 0.01f, 2.5f)) == false)
{
foundNewSpawnLocation = true;
}
}
return randomSpawnPos;
}
/// <summary>
/// Resets the block position and velocities.
/// </summary>
void ResetBlock(BlockInfo block)
{
// Get a random position for the block.
block.T.position = GetRandomSpawnPos();
// Reset block velocity back to zero.
block.Rb.velocity = Vector3.zero;
// Reset block angularVelocity back to zero.
block.Rb.angularVelocity = Vector3.zero;
}
/// <summary>
/// Swap ground material, wait time seconds, then swap back to the regular material.
/// </summary>
IEnumerator GoalScoredSwapGroundMaterial(Material mat, float time)
{
m_GroundRenderer.material = mat;
yield return new WaitForSeconds(time); // Wait for 2 sec
m_GroundRenderer.material = m_GroundMaterial;
}
/// <summary>
/// Called when the agent moves the block into the goal.
/// </summary>
public void ScoredAGoal(Collider col, float score)
{
//Decrement the counter
m_NumberOfRemainingBlocks--;
//Are we done?
bool done = m_NumberOfRemainingBlocks == 0;
//Disable the block
col.gameObject.SetActive(false);
//Give Agent Rewards
foreach (var item in AgentsList)
{
item.Agent.AddReward(score);
}
// Swap ground material for a bit to indicate we scored.
StartCoroutine(GoalScoredSwapGroundMaterial(m_PushBlockSettings.goalScoredMaterial, 0.5f));
if (done)
{
//Reset assets
ResetScene();
}
}
Quaternion GetRandomRot()
{
return Quaternion.Euler(0, Random.Range(0.0f, 360.0f), 0);
}
void ResetScene()
{
m_ResetTimer = 0;
//Random platform rot
var rotation = Random.Range(0, 4);
var rotationAngle = rotation * 90f;
area.transform.Rotate(new Vector3(0f, rotationAngle, 0f));
//End Episode
foreach (var item in AgentsList)
{
if (!item.Agent)
{
return;
}
item.Agent.EndEpisode();
}
//Reset Agents
foreach (var item in AgentsList)
{
var pos = UseRandomAgentPosition ? GetRandomSpawnPos() : item.StartingPos;
var rot = UseRandomAgentRotation ? GetRandomRot() : item.StartingRot;
item.Agent.transform.SetPositionAndRotation(pos, rot);
item.Rb.velocity = Vector3.zero;
item.Rb.angularVelocity = Vector3.zero;
}
//Reset Blocks
foreach (var item in BlocksList)
{
var pos = UseRandomBlockPosition ? GetRandomSpawnPos() : item.StartingPos;
var rot = UseRandomBlockRotation ? GetRandomRot() : item.StartingRot;
item.T.transform.SetPositionAndRotation(pos, rot);
item.Rb.velocity = Vector3.zero;
item.Rb.angularVelocity = Vector3.zero;
item.T.gameObject.SetActive(true);
}
//Reset counter
m_NumberOfRemainingBlocks = BlocksList.Count;
// m_NumberOfRemainingBlocks = 2;
}
}

116
Project/Assets/ML-Agents/Examples/PushBlock/Scripts/PushAgentCollab.cs


//Put this script on your blue cube.
using System.Collections;
using UnityEngine;
using Unity.MLAgents;
using Unity.MLAgents.Actuators;
using Unity.MLAgents.Sensors;
public class PushAgentCollab : Agent
{
PushBlockSettings m_PushBlockSettings;
// Rigidbody m_BlockRb; //cached on initialization
Rigidbody m_AgentRb; //cached on initialization
public bool useVectorObs = true;
void Awake()
{
m_PushBlockSettings = FindObjectOfType<PushBlockSettings>();
}
public override void Initialize()
{
// Cache the agent rigidbody
m_AgentRb = GetComponent<Rigidbody>();
}
/// <summary>
/// Moves the agent according to the selected action.
/// </summary>
public void MoveAgent(ActionSegment<int> act)
{
var dirToGo = Vector3.zero;
var rotateDir = Vector3.zero;
var action = act[0];
switch (action)
{
case 1:
dirToGo = transform.forward * 1f;
break;
case 2:
dirToGo = transform.forward * -1f;
break;
case 3:
rotateDir = transform.up * 1f;
break;
case 4:
rotateDir = transform.up * -1f;
break;
case 5:
dirToGo = transform.right * -0.75f;
break;
case 6:
dirToGo = transform.right * 0.75f;
break;
}
transform.Rotate(rotateDir, Time.fixedDeltaTime * 200f);
m_AgentRb.AddForce(dirToGo * m_PushBlockSettings.agentRunSpeed,
ForceMode.VelocityChange);
}
public override void CollectObservations(VectorSensor sensor)
{
if (useVectorObs)
{
sensor.AddObservation(StepCount / (float)MaxStep);
}
}
/// <summary>
/// Called every step of the engine. Here the agent takes an action.
/// </summary>
public override void OnActionReceived(ActionBuffers actionBuffers)
{
// Move the agent using the action.
MoveAgent(actionBuffers.DiscreteActions);
// Penalty given each step to encourage agent to finish task quickly.
AddReward(-1f / MaxStep);
}
public override void Heuristic(in ActionBuffers actionsOut)
{
var discreteActionsOut = actionsOut.DiscreteActions;
discreteActionsOut[0] = 0;
if (Input.GetKey(KeyCode.D))
{
discreteActionsOut[0] = 3;
}
else if (Input.GetKey(KeyCode.W))
{
discreteActionsOut[0] = 1;
}
else if (Input.GetKey(KeyCode.A))
{
discreteActionsOut[0] = 4;
}
else if (Input.GetKey(KeyCode.S))
{
discreteActionsOut[0] = 2;
}
}
/// <summary>
/// In the editor, if "Reset On Done" is checked then AgentReset() will be
/// called automatically anytime we mark done = true in an agent script.
/// </summary>
public override void OnEpisodeBegin()
{
}
}

289
Project/Assets/ML-Agents/Examples/PushBlock/Scripts/ZombiePushBlockEnvController.cs


using System.Collections;
using System.Collections.Generic;
using Unity.MLAgents;
using UnityEngine;
public class ZombiePushBlockEnvController : MonoBehaviour
{
[System.Serializable]
public class AgentInfo
{
public PushAgentCollab Agent;
[HideInInspector]
public Vector3 StartingPos;
[HideInInspector]
public Quaternion StartingRot;
[HideInInspector]
public Rigidbody Rb;
public Collider Col;
}
[System.Serializable]
public class ZombieInfo
{
public SimpleNPC Agent;
[HideInInspector]
public Vector3 StartingPos;
[HideInInspector]
public Quaternion StartingRot;
[HideInInspector]
public Rigidbody Rb;
public Collider Col;
}
[System.Serializable]
public class BlockInfo
{
public Transform T;
[HideInInspector]
public Vector3 StartingPos;
[HideInInspector]
public Quaternion StartingRot;
[HideInInspector]
public Rigidbody Rb;
}
/// <summary>
/// Max Academy steps before this platform resets
/// </summary>
/// <returns></returns>
[Header("Max Environment Steps")] public int MaxEnvironmentSteps = 25000;
private int m_ResetTimer;
/// <summary>
/// The area bounds.
/// </summary>
[HideInInspector]
public Bounds areaBounds;
/// <summary>
/// The ground. The bounds are used to spawn the elements.
/// </summary>
public GameObject ground;
public GameObject area;
Material m_GroundMaterial; //cached on Awake()
/// <summary>
/// We will be changing the ground material based on success/failue
/// </summary>
Renderer m_GroundRenderer;
public List<AgentInfo> AgentsList = new List<AgentInfo>();
public List<ZombieInfo> ZombiesList = new List<ZombieInfo>();
public List<BlockInfo> BlocksList = new List<BlockInfo>();
public bool UseRandomAgentRotation = true;
public bool UseRandomAgentPosition = true;
public bool UseRandomBlockRotation = true;
public bool UseRandomBlockPosition = true;
PushBlockSettings m_PushBlockSettings;
private int m_NumberOfRemainingBlocks;
void Start()
{
// Get the ground's bounds
areaBounds = ground.GetComponent<Collider>().bounds;
// Get the ground renderer so we can change the material when a goal is scored
m_GroundRenderer = ground.GetComponent<Renderer>();
// Starting material
m_GroundMaterial = m_GroundRenderer.material;
m_PushBlockSettings = FindObjectOfType<PushBlockSettings>();
foreach (var item in BlocksList)
{
item.StartingPos = item.T.transform.position;
item.StartingRot = item.T.transform.rotation;
item.Rb = item.T.GetComponent<Rigidbody>();
}
foreach (var item in AgentsList)
{
item.StartingPos = item.Agent.transform.position;
item.StartingRot = item.Agent.transform.rotation;
item.Rb = item.Agent.GetComponent<Rigidbody>();
item.Col = item.Agent.GetComponent<Collider>();
}
foreach (var item in ZombiesList)
{
item.StartingPos = item.Agent.transform.position;
item.StartingRot = item.Agent.transform.rotation;
item.Col = item.Agent.GetComponent<Collider>();
}
ResetScene();
}
// Update is called once per frame
void FixedUpdate()
{
m_ResetTimer += 1;
if (m_ResetTimer > MaxEnvironmentSteps)
{
ResetScene();
}
}
//Kill/disable an agent
public void KillAgent(Collider col)
{
}
/// <summary>
/// Use the ground's bounds to pick a random spawn position.
/// </summary>
public Vector3 GetRandomSpawnPos()
{
var foundNewSpawnLocation = false;
var randomSpawnPos = Vector3.zero;
while (foundNewSpawnLocation == false)
{
var randomPosX = Random.Range(-areaBounds.extents.x * m_PushBlockSettings.spawnAreaMarginMultiplier,
areaBounds.extents.x * m_PushBlockSettings.spawnAreaMarginMultiplier);
var randomPosZ = Random.Range(-areaBounds.extents.z * m_PushBlockSettings.spawnAreaMarginMultiplier,
areaBounds.extents.z * m_PushBlockSettings.spawnAreaMarginMultiplier);
randomSpawnPos = ground.transform.position + new Vector3(randomPosX, 1f, randomPosZ);
if (Physics.CheckBox(randomSpawnPos, new Vector3(2.5f, 0.01f, 2.5f)) == false)
{
foundNewSpawnLocation = true;
}
}
return randomSpawnPos;
}
/// <summary>
/// Resets the block position and velocities.
/// </summary>
void ResetBlock(BlockInfo block)
{
// Get a random position for the block.
block.T.position = GetRandomSpawnPos();
// Reset block velocity back to zero.
block.Rb.velocity = Vector3.zero;
// Reset block angularVelocity back to zero.
block.Rb.angularVelocity = Vector3.zero;
}
/// <summary>
/// Swap ground material, wait time seconds, then swap back to the regular material.
/// </summary>
IEnumerator GoalScoredSwapGroundMaterial(Material mat, float time)
{
m_GroundRenderer.material = mat;
yield return new WaitForSeconds(time); // Wait for 2 sec
m_GroundRenderer.material = m_GroundMaterial;
}
/// <summary>
/// Called when the agent moves the block into the goal.
/// </summary>
public void ScoredAGoal(Collider col, float score)
{
// //Decrement the counter
// m_NumberOfRemainingBlocks--;
//
// //Are we done?
// bool done = m_NumberOfRemainingBlocks == 0;
//
// //Disable the block
// col.gameObject.SetActive(false);
//Give Agent Rewards
foreach (var item in AgentsList)
{
item.Agent.AddReward(score);
}
// Swap ground material for a bit to indicate we scored.
StartCoroutine(GoalScoredSwapGroundMaterial(m_PushBlockSettings.goalScoredMaterial, 0.5f));
// if (done)
// {
//Reset assets
ResetScene();
// }
}
public void ZombieTouchedBlock()
{
//Give Agent Rewards
foreach (var item in AgentsList)
{
item.Agent.AddReward(-1);
}
// Swap ground material for a bit to indicate we scored.
StartCoroutine(GoalScoredSwapGroundMaterial(m_PushBlockSettings.failMaterial, 0.5f));
ResetScene();
}
Quaternion GetRandomRot()
{
return Quaternion.Euler(0, Random.Range(0.0f, 360.0f), 0);
}
void ResetScene()
{
m_ResetTimer = 0;
//Random platform rot
var rotation = Random.Range(0, 4);
var rotationAngle = rotation * 90f;
area.transform.Rotate(new Vector3(0f, rotationAngle, 0f));
//End Episode
foreach (var item in AgentsList)
{
if (!item.Agent)
{
return;
}
item.Agent.EndEpisode();
}
//Reset Agents
foreach (var item in AgentsList)
{
var pos = UseRandomAgentPosition ? GetRandomSpawnPos() : item.StartingPos;
var rot = UseRandomAgentRotation ? GetRandomRot() : item.StartingRot;
item.Agent.transform.SetPositionAndRotation(pos, rot);
item.Rb.velocity = Vector3.zero;
item.Rb.angularVelocity = Vector3.zero;
}
//Reset Blocks
foreach (var item in BlocksList)
{
var pos = UseRandomBlockPosition ? GetRandomSpawnPos() : item.StartingPos;
var rot = UseRandomBlockRotation ? GetRandomRot() : item.StartingRot;
item.T.transform.SetPositionAndRotation(pos, rot);
item.Rb.velocity = Vector3.zero;
item.Rb.angularVelocity = Vector3.zero;
item.T.gameObject.SetActive(true);
}
//End Episode
foreach (var item in ZombiesList)
{
if (!item.Agent)
{
return;
}
// item.Agent.EndEpisode();
item.Agent.transform.SetPositionAndRotation(item.StartingPos, item.StartingRot);
item.Agent.SetRandomWalkSpeed();
}
//Reset counter
m_NumberOfRemainingBlocks = BlocksList.Count;
// m_NumberOfRemainingBlocks = 2;
}
}

11
Project/Assets/ML-Agents/Examples/PushBlock/Scripts/ZombiePushBlockEnvController.cs.meta


fileFormatVersion: 2
guid: 5e113b4a4dbb24eea8d143f2b168e161
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

45
Project/Assets/ML-Agents/Examples/PushBlock/Scripts/SimpleNPC.cs


// using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SimpleNPC : MonoBehaviour
{
public Transform target;
private Rigidbody rb;
public float walkSpeed = 1;
// public ForceMode walkForceMode;
private Vector3 dirToGo;
// private Vector3 m_StartingPos;
// Start is called before the first frame update
void Awake()
{
rb = GetComponent<Rigidbody>();
// m_StartingPos = transform.position;
}
// Update is called once per frame
void Update()
{
}
void FixedUpdate()
{
dirToGo = target.position - transform.position;
dirToGo.y = 0;
rb.rotation = Quaternion.LookRotation(dirToGo);
// rb.AddForce(dirToGo.normalized * walkSpeed * Time.fixedDeltaTime, walkForceMode);
// rb.MovePosition(rb.transform.TransformDirection(Vector3.forward * walkSpeed * Time.deltaTime));
// rb.MovePosition(rb.transform.TransformVector() (Vector3.forward * walkSpeed * Time.deltaTime));
rb.MovePosition(transform.position + transform.forward * walkSpeed * Time.deltaTime);
}
public void SetRandomWalkSpeed()
{
walkSpeed = Random.Range(1f, 7f);
}
}

11
Project/Assets/ML-Agents/Examples/PushBlock/Scripts/SimpleNPC.cs.meta


fileFormatVersion: 2
guid: 9685bac759362440ea71765cdece3305
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

11
Project/Assets/ML-Agents/Examples/PushBlock/Scripts/ZombiePushBlockDeathEnvController.cs.meta


fileFormatVersion: 2
guid: 7df9fa4d08b7d4d198d5165b07ddd47e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

325
Project/Assets/ML-Agents/Examples/PushBlock/Scripts/ZombiePushBlockDeathEnvController.cs


using System.Collections;
using System.Collections.Generic;
using Unity.MLAgents;
using UnityEngine;
public class ZombiePushBlockDeathEnvController : MonoBehaviour
{
[System.Serializable]
public class AgentInfo
{
public PushAgentCollab Agent;
[HideInInspector]
public Vector3 StartingPos;
[HideInInspector]
public Quaternion StartingRot;
[HideInInspector]
public Rigidbody Rb;
[HideInInspector]
public Collider Col;
}
[System.Serializable]
public class ZombieInfo
{
public SimpleNPC Agent;
[HideInInspector]
public Vector3 StartingPos;
[HideInInspector]
public Quaternion StartingRot;
[HideInInspector]
public Rigidbody Rb;
[HideInInspector]
public Collider Col;
}
[System.Serializable]
public class BlockInfo
{
public Transform T;
[HideInInspector]
public Vector3 StartingPos;
[HideInInspector]
public Quaternion StartingRot;
[HideInInspector]
public Rigidbody Rb;
}
/// <summary>
/// Max Academy steps before this platform resets
/// </summary>
/// <returns></returns>
[Header("Max Environment Steps")] public int MaxEnvironmentSteps = 25000;
private int m_ResetTimer;
/// <summary>
/// The area bounds.
/// </summary>
[HideInInspector]
public Bounds areaBounds;
/// <summary>
/// The ground. The bounds are used to spawn the elements.
/// </summary>
public GameObject ground;
public GameObject area;
Material m_GroundMaterial; //cached on Awake()
/// <summary>
/// We will be changing the ground material based on success/failue
/// </summary>
Renderer m_GroundRenderer;
public List<AgentInfo> AgentsList = new List<AgentInfo>();
public List<ZombieInfo> ZombiesList = new List<ZombieInfo>();
public List<BlockInfo> BlocksList = new List<BlockInfo>();
public bool UseRandomAgentRotation = true;
public bool UseRandomAgentPosition = true;
public bool UseRandomBlockRotation = true;
public bool UseRandomBlockPosition = true;
PushBlockSettings m_PushBlockSettings;
private int m_NumberOfRemainingBlocks;
void Start()
{
// Get the ground's bounds
areaBounds = ground.GetComponent<Collider>().bounds;
// Get the ground renderer so we can change the material when a goal is scored
m_GroundRenderer = ground.GetComponent<Renderer>();
// Starting material
m_GroundMaterial = m_GroundRenderer.material;
m_PushBlockSettings = FindObjectOfType<PushBlockSettings>();
foreach (var item in BlocksList)
{
item.StartingPos = item.T.transform.position;
item.StartingRot = item.T.transform.rotation;
item.Rb = item.T.GetComponent<Rigidbody>();
}
foreach (var item in AgentsList)
{
item.StartingPos = item.Agent.transform.position;
item.StartingRot = item.Agent.transform.rotation;
item.Rb = item.Agent.GetComponent<Rigidbody>();
item.Col = item.Agent.GetComponent<Collider>();
}
foreach (var item in ZombiesList)
{
item.StartingPos = item.Agent.transform.position;
item.StartingRot = item.Agent.transform.rotation;
item.Col = item.Agent.GetComponent<Collider>();
}
ResetScene();
}
// Update is called once per frame
void FixedUpdate()
{
m_ResetTimer += 1;
if (m_ResetTimer > MaxEnvironmentSteps)
{
ResetScene();
}
}
//Kill/disable an agent
public void KillAgent(Collision col, Transform t)
{
print($"zombie {t.name} ate {col.collider.name}");
//End Episode
foreach (var item in AgentsList)
{
if (!item.Agent)
{
return;
}
item.Agent.EndEpisode();
}
//Disable killed Agent
foreach (var item in AgentsList)
{
if (item.Col == col.collider)
{
item.Col.gameObject.SetActive(false);
break;
}
}
//End Episode
foreach (var item in ZombiesList)
{
if (item.Agent.transform == t)
{
item.Agent.gameObject.SetActive(false);
break;
}
}
}
/// <summary>
/// Use the ground's bounds to pick a random spawn position.
/// </summary>
public Vector3 GetRandomSpawnPos()
{
var foundNewSpawnLocation = false;
var randomSpawnPos = Vector3.zero;
while (foundNewSpawnLocation == false)
{
var randomPosX = Random.Range(-areaBounds.extents.x * m_PushBlockSettings.spawnAreaMarginMultiplier,
areaBounds.extents.x * m_PushBlockSettings.spawnAreaMarginMultiplier);
var randomPosZ = Random.Range(-areaBounds.extents.z * m_PushBlockSettings.spawnAreaMarginMultiplier,
areaBounds.extents.z * m_PushBlockSettings.spawnAreaMarginMultiplier);
randomSpawnPos = ground.transform.position + new Vector3(randomPosX, 1f, randomPosZ);
if (Physics.CheckBox(randomSpawnPos, new Vector3(2.5f, 0.01f, 2.5f)) == false)
{
foundNewSpawnLocation = true;
}
}
return randomSpawnPos;
}
/// <summary>
/// Resets the block position and velocities.
/// </summary>
void ResetBlock(BlockInfo block)
{
// Get a random position for the block.
block.T.position = GetRandomSpawnPos();
// Reset block velocity back to zero.
block.Rb.velocity = Vector3.zero;
// Reset block angularVelocity back to zero.
block.Rb.angularVelocity = Vector3.zero;
}
/// <summary>
/// Swap ground material, wait time seconds, then swap back to the regular material.
/// </summary>
IEnumerator GoalScoredSwapGroundMaterial(Material mat, float time)
{
m_GroundRenderer.material = mat;
yield return new WaitForSeconds(time); // Wait for 2 sec
m_GroundRenderer.material = m_GroundMaterial;
}
/// <summary>
/// Called when the agent moves the block into the goal.
/// </summary>
public void ScoredAGoal(Collider col, float score)
{
// //Decrement the counter
// m_NumberOfRemainingBlocks--;
//
// //Are we done?
// bool done = m_NumberOfRemainingBlocks == 0;
//
// //Disable the block
// col.gameObject.SetActive(false);
//Give Agent Rewards
foreach (var item in AgentsList)
{
if (item.Agent.gameObject.activeInHierarchy)
{
print($"{item.Agent.name} scored");
item.Agent.AddReward(score);
}
}
// Swap ground material for a bit to indicate we scored.
StartCoroutine(GoalScoredSwapGroundMaterial(m_PushBlockSettings.goalScoredMaterial, 0.5f));
// if (done)
// {
//Reset assets
ResetScene();
// }
}
public void ZombieTouchedBlock()
{
//Give Agent Rewards
foreach (var item in AgentsList)
{
item.Agent.AddReward(-1);
}
// Swap ground material for a bit to indicate we scored.
StartCoroutine(GoalScoredSwapGroundMaterial(m_PushBlockSettings.failMaterial, 0.5f));
ResetScene();
}
Quaternion GetRandomRot()
{
return Quaternion.Euler(0, Random.Range(0.0f, 360.0f), 0);
}
void ResetScene()
{
m_ResetTimer = 0;
//Random platform rot
var rotation = Random.Range(0, 4);
var rotationAngle = rotation * 90f;
area.transform.Rotate(new Vector3(0f, rotationAngle, 0f));
//End Episode
foreach (var item in AgentsList)
{
if (!item.Agent)
{
return;
}
item.Agent.EndEpisode();
}
//Reset Agents
foreach (var item in AgentsList)
{
var pos = UseRandomAgentPosition ? GetRandomSpawnPos() : item.StartingPos;
var rot = UseRandomAgentRotation ? GetRandomRot() : item.StartingRot;
item.Agent.transform.SetPositionAndRotation(pos, rot);
item.Rb.velocity = Vector3.zero;
item.Rb.angularVelocity = Vector3.zero;
item.Agent.gameObject.SetActive(true);
}
//Reset Blocks
foreach (var item in BlocksList)
{
var pos = UseRandomBlockPosition ? GetRandomSpawnPos() : item.StartingPos;
var rot = UseRandomBlockRotation ? GetRandomRot() : item.StartingRot;
item.T.transform.SetPositionAndRotation(pos, rot);
item.Rb.velocity = Vector3.zero;
item.Rb.angularVelocity = Vector3.zero;
item.T.gameObject.SetActive(true);
}
//End Episode
foreach (var item in ZombiesList)
{
if (!item.Agent)
{
return;
}
// item.Agent.EndEpisode();
item.Agent.transform.SetPositionAndRotation(item.StartingPos, item.StartingRot);
item.Agent.SetRandomWalkSpeed();
item.Agent.gameObject.SetActive(true);
}
//Reset counter
m_NumberOfRemainingBlocks = BlocksList.Count;
// m_NumberOfRemainingBlocks = 2;
}
}

63
config/ppo/WallJumpCollab.yaml


behaviors:
SmallWallJump:
trainer_type: ppo
hyperparameters:
batch_size: 128
buffer_size: 2048
learning_rate: 0.0003
beta: 0.005
epsilon: 0.2
lambd: 0.95
num_epoch: 3
learning_rate_schedule: linear
network_settings:
normalize: false
hidden_units: 256
num_layers: 2
vis_encode_type: simple
reward_signals:
extrinsic:
gamma: 0.99
strength: 1.0
keep_checkpoints: 5
max_steps: 15000000
time_horizon: 128
summary_freq: 20000
threaded: true
environment_parameters:
big_wall_height:
curriculum:
- name: Lesson0
completion_criteria:
measure: progress
behavior: SmallWallJump
signal_smoothing: true
min_lesson_length: 100
threshold: 0.1
value: 3
- name: Lesson1
completion_criteria:
measure: progress
behavior: SmallWallJump
signal_smoothing: true
min_lesson_length: 100
threshold: 0.3
value: 5
- name: Lesson2
completion_criteria:
measure: progress
behavior: SmallWallJump
signal_smoothing: true
min_lesson_length: 100
threshold: 0.5
value: 8
- name: Lesson3
completion_criteria:
measure: progress
behavior: SmallWallJump
signal_smoothing: true
min_lesson_length: 100
threshold: 0.7
value: 9
- name: Lesson4
value: 9

26
config/ppo/HallwayCollab.yaml


behaviors:
HallwayCollab:
trainer_type: ppo
hyperparameters:
batch_size: 128
buffer_size: 1024
learning_rate: 0.0003
beta: 0.01
epsilon: 0.2
lambd: 0.95
num_epoch: 3
learning_rate_schedule: linear
network_settings:
normalize: false
hidden_units: 128
num_layers: 2
vis_encode_type: simple
reward_signals:
extrinsic:
gamma: 0.99
strength: 1.0
keep_checkpoints: 5
max_steps: 10000000
time_horizon: 64
summary_freq: 10000
threaded: true

28
config/ppo/PushBlockZombie.yaml


behaviors:
PushBlock:
trainer_type: ppo
hyperparameters:
batch_size: 128
buffer_size: 2048
learning_rate: 0.0003
beta: 0.01
epsilon: 0.2
lambd: 0.95
num_epoch: 3
learning_rate_schedule: linear
network_settings:
normalize: false
hidden_units: 256
num_layers: 2
vis_encode_type: simple
reward_signals:
extrinsic:
gamma: 0.99
strength: 1.0
keep_checkpoints: 5
max_steps: 6000000 #2000000
time_horizon: 64
summary_freq: 60000
threaded: true
env_settings:
num_envs: 4
正在加载...
取消
保存