From e89b06e57b135a2182441b83f9bb6261616293ef Mon Sep 17 00:00:00 2001 From: Martin Regen Date: Wed, 14 Jun 2023 09:47:21 +0200 Subject: [PATCH 1/5] Add metadata to fast data and event callbacks notification. (#2176) - if `DisableMonitoredItemCache` is set, the sequencenumber and publish time are unavailable. Add helpers to NotificationData to get the information in the fast data and event callbacks. - new fast callback for keep alive messages --- .../ConsoleReferenceClient/ClientSamples.cs | 22 +++++- Libraries/Opc.Ua.Client/Subscription.cs | 68 ++++++++++++++++--- .../Types/BuiltIn/NotificationData.cs | 41 +++++++++++ 3 files changed, 122 insertions(+), 9 deletions(-) create mode 100644 Stack/Opc.Ua.Core/Types/BuiltIn/NotificationData.cs diff --git a/Applications/ConsoleReferenceClient/ClientSamples.cs b/Applications/ConsoleReferenceClient/ClientSamples.cs index 67a9e3413..f9ad77ad8 100644 --- a/Applications/ConsoleReferenceClient/ClientSamples.cs +++ b/Applications/ConsoleReferenceClient/ClientSamples.cs @@ -878,9 +878,11 @@ public async Task SubscribeAllValuesAsync( KeepAliveCount = keepAliveCount, SequentialPublishing = true, RepublishAfterTransfer = true, + DisableMonitoredItemCache = true, MaxNotificationsPerPublish = 1000, MinLifetimeInterval = (uint)session.SessionTimeout, FastDataChangeCallback = FastDataChangeNotification, + FastKeepAliveCallback = FastKeepAliveNotification, }; session.AddSubscription(subscription); @@ -959,6 +961,22 @@ public static string FormatValueAsJson( #endregion #region Private Methods + /// + /// The fast keep alive notification callback. + /// + private void FastKeepAliveNotification(Subscription subscription, NotificationData notification) + { + try + { + m_output.WriteLine("Keep Alive : Id={0} PublishTime={1} SequenceNumber={2}.", + subscription.Id, notification.PublishTime, notification.SequenceNumber); + } + catch (Exception ex) + { + m_output.WriteLine("FastKeepAliveNotification error: {0}", ex.Message); + } + } + /// /// The fast data change notification callback. /// @@ -966,7 +984,9 @@ private void FastDataChangeNotification(Subscription subscription, DataChangeNot { try { - m_output.WriteLine("Notification: Id={0} Items={1}.", subscription.Id, notification.MonitoredItems.Count); + m_output.WriteLine("Notification: Id={0} PublishTime={1} SequenceNumber={2} Items={3}.", + subscription.Id, notification.PublishTime, + notification.SequenceNumber, notification.MonitoredItems.Count); } catch (Exception ex) { diff --git a/Libraries/Opc.Ua.Client/Subscription.cs b/Libraries/Opc.Ua.Client/Subscription.cs index d0f8a48b3..989d6bbb1 100644 --- a/Libraries/Opc.Ua.Client/Subscription.cs +++ b/Libraries/Opc.Ua.Client/Subscription.cs @@ -114,6 +114,7 @@ public Subscription(Subscription template, bool copyEventHandlers) m_publishStatusChanged = template.m_publishStatusChanged; m_fastDataChangeCallback = template.m_fastDataChangeCallback; m_fastEventCallback = template.m_fastEventCallback; + m_fastKeepAliveCallback = template.m_fastKeepAliveCallback; } // copy the list of monitored items. @@ -454,6 +455,19 @@ public FastEventNotificationEventHandler FastEventCallback set => m_fastEventCallback = value; } + /// + /// Gets or sets the fast keep alive callback. + /// + /// The keep alive change callback. + /// + /// Only one callback is allowed at a time but it is more efficient to call than an event. + /// + public FastKeepAliveNotificationEventHandler FastKeepAliveCallback + { + get => m_fastKeepAliveCallback; + set => m_fastKeepAliveCallback = value; + } + /// /// The items to monitor. /// @@ -1903,6 +1917,9 @@ private async Task OnMessageReceived() // get list of new messages to process. List messagesToProcess = null; + // get list of new messages to process. + List keepAliveToProcess = null; + // get list of new messages to republish. List messagesToRepublish = null; @@ -1910,8 +1927,18 @@ private async Task OnMessageReceived() { for (LinkedListNode ii = m_incomingMessages.First; ii != null; ii = ii.Next) { + // process keep alive messages + if (ii.Value.Message == null && !ii.Value.Processed) + { + if (keepAliveToProcess == null) + { + keepAliveToProcess = new List(); + } + keepAliveToProcess.Add(ii.Value); + } + // update monitored items with unprocessed messages. - if (ii.Value.Message != null && !ii.Value.Processed && + else if (ii.Value.Message != null && !ii.Value.Processed && // If sequential publishing is enabled, only release messages in perfect sequence. (!m_sequentialPublishing || ii.Value.SequenceNumber <= m_lastSequenceNumberProcessed + 1)) { @@ -1971,25 +1998,41 @@ private async Task OnMessageReceived() } } + // process new keep alive messages. + FastKeepAliveNotificationEventHandler keepAliveCallback = m_fastKeepAliveCallback; + if (keepAliveToProcess != null && keepAliveCallback != null) + { + foreach (IncomingMessage message in keepAliveToProcess) + { + var keepAlive = new NotificationData { + PublishTime = message.Timestamp, + SequenceNumber = message.SequenceNumber + }; + keepAliveCallback(this, keepAlive); + } + } + // process new messages. if (messagesToProcess != null) { + int noNotificationsReceived; FastDataChangeNotificationEventHandler datachangeCallback = m_fastDataChangeCallback; FastEventNotificationEventHandler eventCallback = m_fastEventCallback; - int noNotificationsReceived = 0; - for (int ii = 0; ii < messagesToProcess.Count; ii++) + foreach (NotificationMessage message in messagesToProcess) { - NotificationMessage message = messagesToProcess[ii]; noNotificationsReceived = 0; try { - for (int jj = 0; jj < message.NotificationData.Count; jj++) + foreach (ExtensionObject notificationData in message.NotificationData) { - DataChangeNotification datachange = message.NotificationData[jj].Body as DataChangeNotification; + var datachange = notificationData.Body as DataChangeNotification; if (datachange != null) { + datachange.PublishTime = message.PublishTime; + datachange.SequenceNumber = message.SequenceNumber; + noNotificationsReceived += datachange.MonitoredItems.Count; if (!m_disableMonitoredItemCache) @@ -2003,10 +2046,13 @@ private async Task OnMessageReceived() } } - EventNotificationList events = message.NotificationData[jj].Body as EventNotificationList; + var events = notificationData.Body as EventNotificationList; if (events != null) { + events.PublishTime = message.PublishTime; + events.SequenceNumber = message.SequenceNumber; + noNotificationsReceived += events.Events.Count; if (!m_disableMonitoredItemCache) @@ -2020,7 +2066,7 @@ private async Task OnMessageReceived() } } - StatusChangeNotification statusChanged = message.NotificationData[jj].Body as StatusChangeNotification; + StatusChangeNotification statusChanged = notificationData.Body as StatusChangeNotification; if (statusChanged != null) { @@ -2476,6 +2522,7 @@ private IncomingMessage FindOrCreateEntry(DateTime utcNow, uint sequenceNumber) private bool m_disableMonitoredItemCache; private FastDataChangeNotificationEventHandler m_fastDataChangeCallback; private FastEventNotificationEventHandler m_fastEventCallback; + private FastKeepAliveNotificationEventHandler m_fastKeepAliveCallback; private int m_outstandingMessageWorkers; private SemaphoreSlim m_messageWorkersSemaphore; private bool m_sequentialPublishing; @@ -2569,6 +2616,11 @@ public enum SubscriptionChangeMask /// public delegate void FastEventNotificationEventHandler(Subscription subscription, EventNotificationList notification, IList stringTable); + /// + /// The delegate used to receive keep alive notifications via a direct function call instead of a .NET Event. + /// + public delegate void FastKeepAliveNotificationEventHandler(Subscription subscription, NotificationData notification); + #region SubscriptionStateChangedEventArgs Class /// /// The event arguments provided when the state of a subscription changes. diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/NotificationData.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/NotificationData.cs new file mode 100644 index 000000000..89ae50a3d --- /dev/null +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/NotificationData.cs @@ -0,0 +1,41 @@ +/* Copyright (c) 1996-2023 The OPC Foundation. All rights reserved. + The source code in this file is covered under a dual-license scenario: + - RCL: for OPC Foundation Corporate Members in good-standing + - GPL V2: everybody else + RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ + GNU General Public License as published by the Free Software Foundation; + version 2 of the License are accompanied with this source code. See http://opcfoundation.org/License/GPLv2 + This source code is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +*/ + +using System; + +namespace Opc.Ua +{ + public partial class NotificationData + { + /// + /// Helper variable for a client to pass the sequence number + /// of the publish response for the data and the event change notification + /// to a client application which subscribes to subscription notifications. + /// + /// + /// A value of 0 indicates that the sequence number is not known. + /// A KeepAlive notification contains the sequence number of the next + /// notification. + /// + public uint SequenceNumber { get; set; } + + /// + /// Helper variable for a client to pass the publish time + /// of the publish response for the data and the event change notification + /// to a client application which subscribes to subscription notifications. + /// + /// + /// A value of MinTime indicates that the time is not known. + /// + public DateTime PublishTime { get; set; } + } +} From c81b6b01038c7bfbc65364a9ac5c9cc724db6a1b Mon Sep 17 00:00:00 2001 From: Suciu Mircea Adrian Date: Tue, 20 Jun 2023 07:05:30 +0300 Subject: [PATCH 2/5] Added newly modified model compiler generated code for v1.04 (#2195) Update the model compiler generated files with latest modifications which fix the embedded initializers of the generated classes. --- .../Model/Opc.Ua.Gds.Classes.cs | 1597 ++- .../Model/Opc.Ua.Gds.PredefinedNodes.uanodes | Bin 27461 -> 29312 bytes .../Model/Opc.Ua.Gds.PredefinedNodes.xml | 708 +- Stack/Opc.Ua.Core/Schema/Opc.Ua.NodeSet2.xml | 9056 ++++++++-------- Stack/Opc.Ua.Core/Schema/Opc.Ua.Types.xsd | 18 +- Stack/Opc.Ua.Core/Schema/UANodeSet.xsd | 6 +- .../Stack/Generated/Opc.Ua.Classes.cs | 8447 +++++++++++---- .../Stack/Generated/Opc.Ua.DataTypes.cs | 1854 +--- .../Stack/Generated/Opc.Ua.Gds.DataTypes.cs | 8 - .../Generated/Opc.Ua.PredefinedNodes.uanodes | Bin 763886 -> 764338 bytes .../Generated/Opc.Ua.PredefinedNodes.xml | 9199 ++++++++--------- 11 files changed, 17062 insertions(+), 13831 deletions(-) diff --git a/Libraries/Opc.Ua.Gds.Server.Common/Model/Opc.Ua.Gds.Classes.cs b/Libraries/Opc.Ua.Gds.Server.Common/Model/Opc.Ua.Gds.Classes.cs index b43029735..26bad1f9d 100644 --- a/Libraries/Opc.Ua.Gds.Server.Common/Model/Opc.Ua.Gds.Classes.cs +++ b/Libraries/Opc.Ua.Gds.Server.Common/Model/Opc.Ua.Gds.Classes.cs @@ -1,5 +1,5 @@ /* ======================================================================== - * Copyright (c) 2005-2020 The OPC Foundation, Inc. All rights reserved. + * Copyright (c) 2005-2022 The OPC Foundation, Inc. All rights reserved. * * OPC Foundation MIT License 1.00 * @@ -38,44 +38,33 @@ namespace Opc.Ua.Gds { #region FindApplicationsMethodState Class #if (!OPCUA_EXCLUDE_FindApplicationsMethodState) - /// - /// Stores an instance of the FindApplicationsMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class FindApplicationsMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public FindApplicationsMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new FindApplicationsMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -94,9 +83,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public FindApplicationsMethodStateMethodCallHandler OnCall; #endregion @@ -104,9 +91,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -118,7 +103,7 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; string applicationUri = (string)_inputArguments[0]; @@ -126,7 +111,7 @@ protected override ServiceResult Call( if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, @@ -136,7 +121,7 @@ protected override ServiceResult Call( _outputArguments[0] = applications; - return result; + return _result; } #endregion @@ -144,14 +129,12 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult FindApplicationsMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, string applicationUri, ref ApplicationRecordDataType[] applications); #endif @@ -159,44 +142,33 @@ public delegate ServiceResult FindApplicationsMethodStateMethodCallHandler( #region RegisterApplicationMethodState Class #if (!OPCUA_EXCLUDE_RegisterApplicationMethodState) - /// - /// Stores an instance of the RegisterApplicationMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class RegisterApplicationMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public RegisterApplicationMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new RegisterApplicationMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -215,9 +187,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public RegisterApplicationMethodStateMethodCallHandler OnCall; #endregion @@ -225,9 +195,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -239,7 +207,7 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; ApplicationRecordDataType application = (ApplicationRecordDataType)ExtensionObject.ToEncodeable((ExtensionObject)_inputArguments[0]); @@ -247,7 +215,7 @@ protected override ServiceResult Call( if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, @@ -257,7 +225,7 @@ protected override ServiceResult Call( _outputArguments[0] = applicationId; - return result; + return _result; } #endregion @@ -265,14 +233,12 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult RegisterApplicationMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, ApplicationRecordDataType application, ref NodeId applicationId); #endif @@ -280,44 +246,33 @@ public delegate ServiceResult RegisterApplicationMethodStateMethodCallHandler( #region UpdateApplicationMethodState Class #if (!OPCUA_EXCLUDE_UpdateApplicationMethodState) - /// - /// Stores an instance of the UpdateApplicationMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class UpdateApplicationMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public UpdateApplicationMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new UpdateApplicationMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -334,9 +289,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public UpdateApplicationMethodStateMethodCallHandler OnCall; #endregion @@ -344,9 +297,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -358,20 +309,20 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; ApplicationRecordDataType application = (ApplicationRecordDataType)ExtensionObject.ToEncodeable((ExtensionObject)_inputArguments[0]); if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, application); } - return result; + return _result; } #endregion @@ -379,58 +330,45 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult UpdateApplicationMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, ApplicationRecordDataType application); #endif #endregion #region UnregisterApplicationMethodState Class #if (!OPCUA_EXCLUDE_UnregisterApplicationMethodState) - /// - /// Stores an instance of the UnregisterApplicationMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class UnregisterApplicationMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public UnregisterApplicationMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new UnregisterApplicationMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -447,9 +385,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public UnregisterApplicationMethodStateMethodCallHandler OnCall; #endregion @@ -457,9 +393,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -471,20 +405,20 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; NodeId applicationId = (NodeId)_inputArguments[0]; if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, applicationId); } - return result; + return _result; } #endregion @@ -492,58 +426,45 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult UnregisterApplicationMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, NodeId applicationId); #endif #endregion #region GetApplicationMethodState Class #if (!OPCUA_EXCLUDE_GetApplicationMethodState) - /// - /// Stores an instance of the GetApplicationMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class GetApplicationMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public GetApplicationMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new GetApplicationMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -562,9 +483,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public GetApplicationMethodStateMethodCallHandler OnCall; #endregion @@ -572,9 +491,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -586,7 +503,7 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; NodeId applicationId = (NodeId)_inputArguments[0]; @@ -594,7 +511,7 @@ protected override ServiceResult Call( if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, @@ -604,7 +521,7 @@ protected override ServiceResult Call( _outputArguments[0] = application; - return result; + return _result; } #endregion @@ -612,14 +529,12 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult GetApplicationMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, NodeId applicationId, ref ApplicationRecordDataType application); #endif @@ -627,44 +542,33 @@ public delegate ServiceResult GetApplicationMethodStateMethodCallHandler( #region QueryApplicationsMethodState Class #if (!OPCUA_EXCLUDE_QueryApplicationsMethodState) - /// - /// Stores an instance of the QueryApplicationsMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class QueryApplicationsMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public QueryApplicationsMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new QueryApplicationsMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -688,9 +592,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public QueryApplicationsMethodStateMethodCallHandler OnCall; #endregion @@ -698,9 +600,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -712,7 +612,7 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; uint startingRecordId = (uint)_inputArguments[0]; uint maxRecordsToReturn = (uint)_inputArguments[1]; @@ -724,11 +624,11 @@ protected override ServiceResult Call( DateTime lastCounterResetTime = (DateTime)_outputArguments[0]; uint nextRecordId = (uint)_outputArguments[1]; - ApplicationDescription[] applications = (ApplicationDescription[])_outputArguments[2]; + Opc.Ua.ApplicationDescription[] applications = (Opc.Ua.ApplicationDescription[])_outputArguments[2]; if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, @@ -748,7 +648,7 @@ protected override ServiceResult Call( _outputArguments[1] = nextRecordId; _outputArguments[2] = applications; - return result; + return _result; } #endregion @@ -756,14 +656,12 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult QueryApplicationsMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, uint startingRecordId, uint maxRecordsToReturn, string applicationName, @@ -773,50 +671,39 @@ public delegate ServiceResult QueryApplicationsMethodStateMethodCallHandler( string[] capabilities, ref DateTime lastCounterResetTime, ref uint nextRecordId, - ref ApplicationDescription[] applications); + ref Opc.Ua.ApplicationDescription[] applications); #endif #endregion #region QueryServersMethodState Class #if (!OPCUA_EXCLUDE_QueryServersMethodState) - /// - /// Stores an instance of the QueryServersMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class QueryServersMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public QueryServersMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new QueryServersMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -839,9 +726,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public QueryServersMethodStateMethodCallHandler OnCall; #endregion @@ -849,9 +734,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -863,7 +746,7 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; uint startingRecordId = (uint)_inputArguments[0]; uint maxRecordsToReturn = (uint)_inputArguments[1]; @@ -873,11 +756,11 @@ protected override ServiceResult Call( string[] serverCapabilities = (string[])_inputArguments[5]; DateTime lastCounterResetTime = (DateTime)_outputArguments[0]; - ServerOnNetwork[] servers = (ServerOnNetwork[])_outputArguments[1]; + Opc.Ua.ServerOnNetwork[] servers = (Opc.Ua.ServerOnNetwork[])_outputArguments[1]; if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, @@ -894,7 +777,7 @@ protected override ServiceResult Call( _outputArguments[0] = lastCounterResetTime; _outputArguments[1] = servers; - return result; + return _result; } #endregion @@ -902,14 +785,12 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult QueryServersMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, uint startingRecordId, uint maxRecordsToReturn, string applicationName, @@ -917,57 +798,46 @@ public delegate ServiceResult QueryServersMethodStateMethodCallHandler( string productUri, string[] serverCapabilities, ref DateTime lastCounterResetTime, - ref ServerOnNetwork[] servers); + ref Opc.Ua.ServerOnNetwork[] servers); #endif #endregion #region DirectoryState Class #if (!OPCUA_EXCLUDE_DirectoryState) - /// - /// Stores an instance of the DirectoryType ObjectType. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class DirectoryState : FolderState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public DirectoryState(NodeState parent) : base(parent) { } - /// - /// Returns the id of the default type definition node for the instance. - /// + /// protected override NodeId GetDefaultTypeDefinitionId(NamespaceTable namespaceUris) { return Opc.Ua.NodeId.Create(Opc.Ua.Gds.ObjectTypes.DirectoryType, Opc.Ua.Gds.Namespaces.OpcUaGds, namespaceUris); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the instance with a node. - /// + /// protected override void Initialize(ISystemContext context, NodeState source) { InitializeOptionalChildren(context); base.Initialize(context, source); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -1175,11 +1045,7 @@ public QueryServersMethodState QueryServers #endregion #region Overridden Methods - /// - /// Populates a list with the children that belong to the node. - /// - /// The context for the system being accessed. - /// The list of children to populate. + /// public override void GetChildren( ISystemContext context, IList children) @@ -1226,10 +1092,8 @@ public override void GetChildren( base.GetChildren(context, children); } - - /// - /// Finds the child with the specified browse name. - /// + + /// protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, @@ -1439,51 +1303,40 @@ protected override BaseInstanceState FindChild( #region ApplicationRegistrationChangedAuditEventState Class #if (!OPCUA_EXCLUDE_ApplicationRegistrationChangedAuditEventState) - /// - /// Stores an instance of the ApplicationRegistrationChangedAuditEventType ObjectType. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class ApplicationRegistrationChangedAuditEventState : AuditUpdateMethodEventState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public ApplicationRegistrationChangedAuditEventState(NodeState parent) : base(parent) { } - /// - /// Returns the id of the default type definition node for the instance. - /// + /// protected override NodeId GetDefaultTypeDefinitionId(NamespaceTable namespaceUris) { return Opc.Ua.NodeId.Create(Opc.Ua.Gds.ObjectTypes.ApplicationRegistrationChangedAuditEventType, Opc.Ua.Gds.Namespaces.OpcUaGds, namespaceUris); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the instance with a node. - /// + /// protected override void Initialize(ISystemContext context, NodeState source) { InitializeOptionalChildren(context); base.Initialize(context, source); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -1525,44 +1378,33 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region StartSigningRequestMethodState Class #if (!OPCUA_EXCLUDE_StartSigningRequestMethodState) - /// - /// Stores an instance of the StartSigningRequestMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class StartSigningRequestMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public StartSigningRequestMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new StartSigningRequestMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -1583,9 +1425,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public StartSigningRequestMethodStateMethodCallHandler OnCall; #endregion @@ -1593,9 +1433,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -1607,7 +1445,7 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; NodeId applicationId = (NodeId)_inputArguments[0]; NodeId certificateGroupId = (NodeId)_inputArguments[1]; @@ -1618,7 +1456,7 @@ protected override ServiceResult Call( if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, @@ -1631,7 +1469,7 @@ protected override ServiceResult Call( _outputArguments[0] = requestId; - return result; + return _result; } #endregion @@ -1639,14 +1477,12 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult StartSigningRequestMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, NodeId applicationId, NodeId certificateGroupId, NodeId certificateTypeId, @@ -1657,44 +1493,33 @@ public delegate ServiceResult StartSigningRequestMethodStateMethodCallHandler( #region StartNewKeyPairRequestMethodState Class #if (!OPCUA_EXCLUDE_StartNewKeyPairRequestMethodState) - /// - /// Stores an instance of the StartNewKeyPairRequestMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class StartNewKeyPairRequestMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public StartNewKeyPairRequestMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new StartNewKeyPairRequestMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -1717,9 +1542,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public StartNewKeyPairRequestMethodStateMethodCallHandler OnCall; #endregion @@ -1727,9 +1550,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -1741,7 +1562,7 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; NodeId applicationId = (NodeId)_inputArguments[0]; NodeId certificateGroupId = (NodeId)_inputArguments[1]; @@ -1755,7 +1576,7 @@ protected override ServiceResult Call( if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, @@ -1771,7 +1592,7 @@ protected override ServiceResult Call( _outputArguments[0] = requestId; - return result; + return _result; } #endregion @@ -1779,14 +1600,12 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult StartNewKeyPairRequestMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, NodeId applicationId, NodeId certificateGroupId, NodeId certificateTypeId, @@ -1800,44 +1619,33 @@ public delegate ServiceResult StartNewKeyPairRequestMethodStateMethodCallHandler #region FinishRequestMethodState Class #if (!OPCUA_EXCLUDE_FinishRequestMethodState) - /// - /// Stores an instance of the FinishRequestMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class FinishRequestMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public FinishRequestMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new FinishRequestMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -1858,9 +1666,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public FinishRequestMethodStateMethodCallHandler OnCall; #endregion @@ -1868,9 +1674,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -1882,7 +1686,7 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; NodeId applicationId = (NodeId)_inputArguments[0]; NodeId requestId = (NodeId)_inputArguments[1]; @@ -1893,7 +1697,7 @@ protected override ServiceResult Call( if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, @@ -1908,7 +1712,7 @@ protected override ServiceResult Call( _outputArguments[1] = privateKey; _outputArguments[2] = issuerCertificates; - return result; + return _result; } #endregion @@ -1916,14 +1720,12 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult FinishRequestMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, NodeId applicationId, NodeId requestId, ref byte[] certificate, @@ -1934,44 +1736,33 @@ public delegate ServiceResult FinishRequestMethodStateMethodCallHandler( #region GetCertificateGroupsMethodState Class #if (!OPCUA_EXCLUDE_GetCertificateGroupsMethodState) - /// - /// Stores an instance of the GetCertificateGroupsMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class GetCertificateGroupsMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public GetCertificateGroupsMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new GetCertificateGroupsMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -1990,9 +1781,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public GetCertificateGroupsMethodStateMethodCallHandler OnCall; #endregion @@ -2000,9 +1789,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -2014,7 +1801,7 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; NodeId applicationId = (NodeId)_inputArguments[0]; @@ -2022,7 +1809,7 @@ protected override ServiceResult Call( if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, @@ -2032,7 +1819,7 @@ protected override ServiceResult Call( _outputArguments[0] = certificateGroupIds; - return result; + return _result; } #endregion @@ -2040,14 +1827,12 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult GetCertificateGroupsMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, NodeId applicationId, ref NodeId[] certificateGroupIds); #endif @@ -2055,44 +1840,33 @@ public delegate ServiceResult GetCertificateGroupsMethodStateMethodCallHandler( #region GetTrustListMethodState Class #if (!OPCUA_EXCLUDE_GetTrustListMethodState) - /// - /// Stores an instance of the GetTrustListMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class GetTrustListMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public GetTrustListMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new GetTrustListMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -2112,9 +1886,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public GetTrustListMethodStateMethodCallHandler OnCall; #endregion @@ -2122,9 +1894,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -2136,7 +1906,7 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; NodeId applicationId = (NodeId)_inputArguments[0]; NodeId certificateGroupId = (NodeId)_inputArguments[1]; @@ -2145,7 +1915,7 @@ protected override ServiceResult Call( if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, @@ -2156,7 +1926,7 @@ protected override ServiceResult Call( _outputArguments[0] = trustListId; - return result; + return _result; } #endregion @@ -2164,14 +1934,12 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult GetTrustListMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, NodeId applicationId, NodeId certificateGroupId, ref NodeId trustListId); @@ -2180,44 +1948,33 @@ public delegate ServiceResult GetTrustListMethodStateMethodCallHandler( #region RevokeCertificateMethodState Class #if (!OPCUA_EXCLUDE_RevokeCertificateMethodState) - /// - /// Stores an instance of the RevokeCertificateMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class RevokeCertificateMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public RevokeCertificateMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new RevokeCertificateMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -2235,9 +1992,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public RevokeCertificateMethodStateMethodCallHandler OnCall; #endregion @@ -2245,9 +2000,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -2259,14 +2012,14 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; NodeId applicationId = (NodeId)_inputArguments[0]; byte[] certificate = (byte[])_inputArguments[1]; if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, @@ -2274,7 +2027,7 @@ protected override ServiceResult Call( certificate); } - return result; + return _result; } #endregion @@ -2282,14 +2035,12 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult RevokeCertificateMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, NodeId applicationId, byte[] certificate); #endif @@ -2297,44 +2048,33 @@ public delegate ServiceResult RevokeCertificateMethodStateMethodCallHandler( #region GetCertificateStatusMethodState Class #if (!OPCUA_EXCLUDE_GetCertificateStatusMethodState) - /// - /// Stores an instance of the GetCertificateStatusMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class GetCertificateStatusMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public GetCertificateStatusMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new GetCertificateStatusMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -2354,9 +2094,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public GetCertificateStatusMethodStateMethodCallHandler OnCall; #endregion @@ -2364,9 +2102,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -2378,7 +2114,7 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; NodeId applicationId = (NodeId)_inputArguments[0]; NodeId certificateGroupId = (NodeId)_inputArguments[1]; @@ -2388,7 +2124,7 @@ protected override ServiceResult Call( if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, @@ -2400,7 +2136,7 @@ protected override ServiceResult Call( _outputArguments[0] = updateRequired; - return result; + return _result; } #endregion @@ -2408,14 +2144,12 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult GetCertificateStatusMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, NodeId applicationId, NodeId certificateGroupId, NodeId certificateTypeId, @@ -2423,53 +2157,259 @@ public delegate ServiceResult GetCertificateStatusMethodStateMethodCallHandler( #endif #endregion + #region GetCertificatesMethodState Class + #if (!OPCUA_EXCLUDE_GetCertificatesMethodState) + /// + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] + public partial class GetCertificatesMethodState : MethodState + { + #region Constructors + /// + public GetCertificatesMethodState(NodeState parent) : base(parent) + { + } + + /// + public new static NodeState Construct(NodeState parent) + { + return new GetCertificatesMethodState(parent); + } + + #if (!OPCUA_EXCLUDE_InitializationStrings) + /// + protected override void Initialize(ISystemContext context) + { + base.Initialize(context); + Initialize(context, InitializationString); + InitializeOptionalChildren(context); + } + + /// + protected override void InitializeOptionalChildren(ISystemContext context) + { + base.InitializeOptionalChildren(context); + } + + #region Initialization String + private const string InitializationString = + "AQAAACAAAABodHRwOi8vb3BjZm91bmRhdGlvbi5vcmcvVUEvR0RTL/////8EYYIKBAAAAAEAGQAAAEdl" + + "dENlcnRpZmljYXRlc01ldGhvZFR5cGUBASsAAC8BASsAKwAAAAEB/////wIAAAAXYKkKAgAAAAAADgAA" + + "AElucHV0QXJndW1lbnRzAQEsAAAuAEQsAAAAlgIAAAABACoBARwAAAANAAAAQXBwbGljYXRpb25JZAAR" + + "/////wAAAAAAAQAqAQEhAAAAEgAAAENlcnRpZmljYXRlR3JvdXBJZAAR/////wAAAAAAAQAoAQEAAAAB" + + "AAAAAAAAAAEB/////wAAAAAXYKkKAgAAAAAADwAAAE91dHB1dEFyZ3VtZW50cwEBLQAALgBELQAAAJYB" + + "AAAAAQAqAQEbAAAADAAAAENlcnRpZmljYXRlcwAP/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB////" + + "/wAAAAA="; + #endregion + #endif + #endregion + + #region Event Callbacks + /// + public GetCertificatesMethodStateMethodCallHandler OnCall; + #endregion + + #region Public Properties + #endregion + + #region Overridden Methods + /// + protected override ServiceResult Call( + ISystemContext _context, + NodeId _objectId, + IList _inputArguments, + IList _outputArguments) + { + if (OnCall == null) + { + return base.Call(_context, _objectId, _inputArguments, _outputArguments); + } + + ServiceResult _result = null; + + NodeId applicationId = (NodeId)_inputArguments[0]; + NodeId certificateGroupId = (NodeId)_inputArguments[1]; + + byte[] certificates = (byte[])_outputArguments[0]; + + if (OnCall != null) + { + _result = OnCall( + _context, + this, + _objectId, + applicationId, + certificateGroupId, + ref certificates); + } + + _outputArguments[0] = certificates; + + return _result; + } + #endregion + + #region Private Fields + #endregion + } + + /// + /// + public delegate ServiceResult GetCertificatesMethodStateMethodCallHandler( + ISystemContext _context, + MethodState _method, + NodeId _objectId, + NodeId applicationId, + NodeId certificateGroupId, + ref byte[] certificates); + #endif + #endregion + + #region CheckRevocationStatusMethodState Class + #if (!OPCUA_EXCLUDE_CheckRevocationStatusMethodState) + /// + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] + public partial class CheckRevocationStatusMethodState : MethodState + { + #region Constructors + /// + public CheckRevocationStatusMethodState(NodeState parent) : base(parent) + { + } + + /// + public new static NodeState Construct(NodeState parent) + { + return new CheckRevocationStatusMethodState(parent); + } + + #if (!OPCUA_EXCLUDE_InitializationStrings) + /// + protected override void Initialize(ISystemContext context) + { + base.Initialize(context); + Initialize(context, InitializationString); + InitializeOptionalChildren(context); + } + + /// + protected override void InitializeOptionalChildren(ISystemContext context) + { + base.InitializeOptionalChildren(context); + } + + #region Initialization String + private const string InitializationString = + "AQAAACAAAABodHRwOi8vb3BjZm91bmRhdGlvbi5vcmcvVUEvR0RTL/////8EYYIKBAAAAAEAHwAAAENo" + + "ZWNrUmV2b2NhdGlvblN0YXR1c01ldGhvZFR5cGUBAS4AAC8BAS4ALgAAAAEB/////wIAAAAXYKkKAgAA" + + "AAAADgAAAElucHV0QXJndW1lbnRzAQEvAAAuAEQvAAAAlgEAAAABACoBARoAAAALAAAAQ2VydGlmaWNh" + + "dGUAD/////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRB" + + "cmd1bWVudHMBATYAAC4ARDYAAACWAgAAAAEAKgEBIAAAABEAAABDZXJ0aWZpY2F0ZVN0YXR1cwAT////" + + "/wAAAAAAAQAqAQEdAAAADAAAAFZhbGlkaXR5VGltZQEAJgH/////AAAAAAABACgBAQAAAAEAAAAAAAAA" + + "AQH/////AAAAAA=="; + #endregion + #endif + #endregion + + #region Event Callbacks + /// + public CheckRevocationStatusMethodStateMethodCallHandler OnCall; + #endregion + + #region Public Properties + #endregion + + #region Overridden Methods + /// + protected override ServiceResult Call( + ISystemContext _context, + NodeId _objectId, + IList _inputArguments, + IList _outputArguments) + { + if (OnCall == null) + { + return base.Call(_context, _objectId, _inputArguments, _outputArguments); + } + + ServiceResult _result = null; + + byte[] certificate = (byte[])_inputArguments[0]; + + StatusCode certificateStatus = (StatusCode)_outputArguments[0]; + DateTime validityTime = (DateTime)_outputArguments[1]; + + if (OnCall != null) + { + _result = OnCall( + _context, + this, + _objectId, + certificate, + ref certificateStatus, + ref validityTime); + } + + _outputArguments[0] = certificateStatus; + _outputArguments[1] = validityTime; + + return _result; + } + #endregion + + #region Private Fields + #endregion + } + + /// + /// + public delegate ServiceResult CheckRevocationStatusMethodStateMethodCallHandler( + ISystemContext _context, + MethodState _method, + NodeId _objectId, + byte[] certificate, + ref StatusCode certificateStatus, + ref DateTime validityTime); + #endif + #endregion + #region CertificateDirectoryState Class #if (!OPCUA_EXCLUDE_CertificateDirectoryState) - /// - /// Stores an instance of the CertificateDirectoryType ObjectType. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class CertificateDirectoryState : DirectoryState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public CertificateDirectoryState(NodeState parent) : base(parent) { } - /// - /// Returns the id of the default type definition node for the instance. - /// + /// protected override NodeId GetDefaultTypeDefinitionId(NamespaceTable namespaceUris) { return Opc.Ua.NodeId.Create(Opc.Ua.Gds.ObjectTypes.CertificateDirectoryType, Opc.Ua.Gds.Namespaces.OpcUaGds, namespaceUris); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the instance with a node. - /// + /// protected override void Initialize(ISystemContext context, NodeState source) { InitializeOptionalChildren(context); base.Initialize(context, source); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -2763,11 +2703,7 @@ public GetCertificateStatusMethodState GetCertificateStatus #endregion #region Overridden Methods - /// - /// Populates a list with the children that belong to the node. - /// - /// The context for the system being accessed. - /// The list of children to populate. + /// public override void GetChildren( ISystemContext context, IList children) @@ -2814,10 +2750,8 @@ public override void GetChildren( base.GetChildren(context, children); } - - /// - /// Finds the child with the specified browse name. - /// + + /// protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, @@ -3027,51 +2961,40 @@ protected override BaseInstanceState FindChild( #region CertificateRequestedAuditEventState Class #if (!OPCUA_EXCLUDE_CertificateRequestedAuditEventState) - /// - /// Stores an instance of the CertificateRequestedAuditEventType ObjectType. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class CertificateRequestedAuditEventState : AuditUpdateMethodEventState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public CertificateRequestedAuditEventState(NodeState parent) : base(parent) { } - /// - /// Returns the id of the default type definition node for the instance. - /// + /// protected override NodeId GetDefaultTypeDefinitionId(NamespaceTable namespaceUris) { return Opc.Ua.NodeId.Create(Opc.Ua.Gds.ObjectTypes.CertificateRequestedAuditEventType, Opc.Ua.Gds.Namespaces.OpcUaGds, namespaceUris); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the instance with a node. - /// + /// protected override void Initialize(ISystemContext context, NodeState source) { InitializeOptionalChildren(context); base.Initialize(context, source); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -3142,11 +3065,7 @@ public PropertyState CertificateType #endregion #region Overridden Methods - /// - /// Populates a list with the children that belong to the node. - /// - /// The context for the system being accessed. - /// The list of children to populate. + /// public override void GetChildren( ISystemContext context, IList children) @@ -3163,10 +3082,8 @@ public override void GetChildren( base.GetChildren(context, children); } - - /// - /// Finds the child with the specified browse name. - /// + + /// protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, @@ -3244,51 +3161,40 @@ protected override BaseInstanceState FindChild( #region CertificateDeliveredAuditEventState Class #if (!OPCUA_EXCLUDE_CertificateDeliveredAuditEventState) - /// - /// Stores an instance of the CertificateDeliveredAuditEventType ObjectType. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class CertificateDeliveredAuditEventState : AuditUpdateMethodEventState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public CertificateDeliveredAuditEventState(NodeState parent) : base(parent) { } - /// - /// Returns the id of the default type definition node for the instance. - /// + /// protected override NodeId GetDefaultTypeDefinitionId(NamespaceTable namespaceUris) { return Opc.Ua.NodeId.Create(Opc.Ua.Gds.ObjectTypes.CertificateDeliveredAuditEventType, Opc.Ua.Gds.Namespaces.OpcUaGds, namespaceUris); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the instance with a node. - /// + /// protected override void Initialize(ISystemContext context, NodeState source) { InitializeOptionalChildren(context); base.Initialize(context, source); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -3359,11 +3265,7 @@ public PropertyState CertificateType #endregion #region Overridden Methods - /// - /// Populates a list with the children that belong to the node. - /// - /// The context for the system being accessed. - /// The list of children to populate. + /// public override void GetChildren( ISystemContext context, IList children) @@ -3380,10 +3282,8 @@ public override void GetChildren( base.GetChildren(context, children); } - - /// - /// Finds the child with the specified browse name. - /// + + /// protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, @@ -3459,53 +3359,103 @@ protected override BaseInstanceState FindChild( #endif #endregion + #region KeyCredentialManagementFolderState Class + #if (!OPCUA_EXCLUDE_KeyCredentialManagementFolderState) + /// + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] + public partial class KeyCredentialManagementFolderState : FolderState + { + #region Constructors + /// + public KeyCredentialManagementFolderState(NodeState parent) : base(parent) + { + } + + /// + protected override NodeId GetDefaultTypeDefinitionId(NamespaceTable namespaceUris) + { + return Opc.Ua.NodeId.Create(Opc.Ua.Gds.ObjectTypes.KeyCredentialManagementFolderType, Opc.Ua.Gds.Namespaces.OpcUaGds, namespaceUris); + } + + #if (!OPCUA_EXCLUDE_InitializationStrings) + /// + protected override void Initialize(ISystemContext context) + { + base.Initialize(context); + Initialize(context, InitializationString); + InitializeOptionalChildren(context); + } + + /// + protected override void Initialize(ISystemContext context, NodeState source) + { + InitializeOptionalChildren(context); + base.Initialize(context, source); + } + + /// + protected override void InitializeOptionalChildren(ISystemContext context) + { + base.InitializeOptionalChildren(context); + } + + #region Initialization String + private const string InitializationString = + "AQAAACAAAABodHRwOi8vb3BjZm91bmRhdGlvbi5vcmcvVUEvR0RTL/////8EYIACAQAAAAEAKQAAAEtl" + + "eUNyZWRlbnRpYWxNYW5hZ2VtZW50Rm9sZGVyVHlwZUluc3RhbmNlAQE3AAEBNwA3AAAA/////wAAAAA="; + #endregion + #endif + #endregion + + #region Public Properties + #endregion + + #region Overridden Methods + #endregion + + #region Private Fields + #endregion + } + #endif + #endregion + #region KeyCredentialServiceState Class #if (!OPCUA_EXCLUDE_KeyCredentialServiceState) - /// - /// Stores an instance of the KeyCredentialServiceType ObjectType. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class KeyCredentialServiceState : BaseObjectState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public KeyCredentialServiceState(NodeState parent) : base(parent) { } - /// - /// Returns the id of the default type definition node for the instance. - /// + /// protected override NodeId GetDefaultTypeDefinitionId(NamespaceTable namespaceUris) { return Opc.Ua.NodeId.Create(Opc.Ua.Gds.ObjectTypes.KeyCredentialServiceType, Opc.Ua.Gds.Namespaces.OpcUaGds, namespaceUris); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the instance with a node. - /// + /// protected override void Initialize(ISystemContext context, NodeState source) { InitializeOptionalChildren(context); base.Initialize(context, source); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -3647,11 +3597,7 @@ public KeyCredentialRevokeMethodState Revoke #endregion #region Overridden Methods - /// - /// Populates a list with the children that belong to the node. - /// - /// The context for the system being accessed. - /// The list of children to populate. + /// public override void GetChildren( ISystemContext context, IList children) @@ -3683,10 +3629,8 @@ public override void GetChildren( base.GetChildren(context, children); } - - /// - /// Finds the child with the specified browse name. - /// + + /// protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, @@ -3830,44 +3774,33 @@ protected override BaseInstanceState FindChild( #region KeyCredentialStartRequestMethodState Class #if (!OPCUA_EXCLUDE_KeyCredentialStartRequestMethodState) - /// - /// Stores an instance of the KeyCredentialStartRequestMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class KeyCredentialStartRequestMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public KeyCredentialStartRequestMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new KeyCredentialStartRequestMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -3888,9 +3821,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public KeyCredentialStartRequestMethodStateMethodCallHandler OnCall; #endregion @@ -3898,9 +3829,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -3912,7 +3841,7 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; string applicationUri = (string)_inputArguments[0]; byte[] publicKey = (byte[])_inputArguments[1]; @@ -3923,7 +3852,7 @@ protected override ServiceResult Call( if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, @@ -3936,7 +3865,7 @@ protected override ServiceResult Call( _outputArguments[0] = requestId; - return result; + return _result; } #endregion @@ -3944,14 +3873,12 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult KeyCredentialStartRequestMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, string applicationUri, byte[] publicKey, string securityPolicyUri, @@ -3962,44 +3889,33 @@ public delegate ServiceResult KeyCredentialStartRequestMethodStateMethodCallHand #region KeyCredentialFinishRequestMethodState Class #if (!OPCUA_EXCLUDE_KeyCredentialFinishRequestMethodState) - /// - /// Stores an instance of the KeyCredentialFinishRequestMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class KeyCredentialFinishRequestMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public KeyCredentialFinishRequestMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new KeyCredentialFinishRequestMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -4021,9 +3937,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public KeyCredentialFinishRequestMethodStateMethodCallHandler OnCall; #endregion @@ -4031,9 +3945,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -4045,7 +3957,7 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; NodeId requestId = (NodeId)_inputArguments[0]; bool cancelRequest = (bool)_inputArguments[1]; @@ -4058,7 +3970,7 @@ protected override ServiceResult Call( if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, @@ -4077,7 +3989,7 @@ protected override ServiceResult Call( _outputArguments[3] = securityPolicyUri; _outputArguments[4] = grantedRoles; - return result; + return _result; } #endregion @@ -4085,14 +3997,12 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult KeyCredentialFinishRequestMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, NodeId requestId, bool cancelRequest, ref string credentialId, @@ -4105,44 +4015,33 @@ public delegate ServiceResult KeyCredentialFinishRequestMethodStateMethodCallHan #region KeyCredentialRevokeMethodState Class #if (!OPCUA_EXCLUDE_KeyCredentialRevokeMethodState) - /// - /// Stores an instance of the KeyCredentialRevokeMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class KeyCredentialRevokeMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public KeyCredentialRevokeMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new KeyCredentialRevokeMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -4159,9 +4058,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public KeyCredentialRevokeMethodStateMethodCallHandler OnCall; #endregion @@ -4169,9 +4066,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -4183,20 +4078,20 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; string credentialId = (string)_inputArguments[0]; if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, credentialId); } - return result; + return _result; } #endregion @@ -4204,65 +4099,52 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult KeyCredentialRevokeMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, string credentialId); #endif #endregion #region KeyCredentialRequestedAuditEventState Class #if (!OPCUA_EXCLUDE_KeyCredentialRequestedAuditEventState) - /// - /// Stores an instance of the KeyCredentialRequestedAuditEventType ObjectType. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class KeyCredentialRequestedAuditEventState : KeyCredentialAuditEventState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public KeyCredentialRequestedAuditEventState(NodeState parent) : base(parent) { } - /// - /// Returns the id of the default type definition node for the instance. - /// + /// protected override NodeId GetDefaultTypeDefinitionId(NamespaceTable namespaceUris) { return Opc.Ua.NodeId.Create(Opc.Ua.Gds.ObjectTypes.KeyCredentialRequestedAuditEventType, Opc.Ua.Gds.Namespaces.OpcUaGds, namespaceUris); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the instance with a node. - /// + /// protected override void Initialize(ISystemContext context, NodeState source) { InitializeOptionalChildren(context); base.Initialize(context, source); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -4305,51 +4187,40 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region KeyCredentialDeliveredAuditEventState Class #if (!OPCUA_EXCLUDE_KeyCredentialDeliveredAuditEventState) - /// - /// Stores an instance of the KeyCredentialDeliveredAuditEventType ObjectType. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class KeyCredentialDeliveredAuditEventState : KeyCredentialAuditEventState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public KeyCredentialDeliveredAuditEventState(NodeState parent) : base(parent) { } - /// - /// Returns the id of the default type definition node for the instance. - /// + /// protected override NodeId GetDefaultTypeDefinitionId(NamespaceTable namespaceUris) { return Opc.Ua.NodeId.Create(Opc.Ua.Gds.ObjectTypes.KeyCredentialDeliveredAuditEventType, Opc.Ua.Gds.Namespaces.OpcUaGds, namespaceUris); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the instance with a node. - /// + /// protected override void Initialize(ISystemContext context, NodeState source) { InitializeOptionalChildren(context); base.Initialize(context, source); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -4392,51 +4263,40 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region KeyCredentialRevokedAuditEventState Class #if (!OPCUA_EXCLUDE_KeyCredentialRevokedAuditEventState) - /// - /// Stores an instance of the KeyCredentialRevokedAuditEventType ObjectType. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class KeyCredentialRevokedAuditEventState : KeyCredentialAuditEventState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public KeyCredentialRevokedAuditEventState(NodeState parent) : base(parent) { } - /// - /// Returns the id of the default type definition node for the instance. - /// + /// protected override NodeId GetDefaultTypeDefinitionId(NamespaceTable namespaceUris) { return Opc.Ua.NodeId.Create(Opc.Ua.Gds.ObjectTypes.KeyCredentialRevokedAuditEventType, Opc.Ua.Gds.Namespaces.OpcUaGds, namespaceUris); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the instance with a node. - /// + /// protected override void Initialize(ISystemContext context, NodeState source) { InitializeOptionalChildren(context); base.Initialize(context, source); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -4477,53 +4337,103 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endif #endregion + #region AuthorizationServicesFolderState Class + #if (!OPCUA_EXCLUDE_AuthorizationServicesFolderState) + /// + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] + public partial class AuthorizationServicesFolderState : FolderState + { + #region Constructors + /// + public AuthorizationServicesFolderState(NodeState parent) : base(parent) + { + } + + /// + protected override NodeId GetDefaultTypeDefinitionId(NamespaceTable namespaceUris) + { + return Opc.Ua.NodeId.Create(Opc.Ua.Gds.ObjectTypes.AuthorizationServicesFolderType, Opc.Ua.Gds.Namespaces.OpcUaGds, namespaceUris); + } + + #if (!OPCUA_EXCLUDE_InitializationStrings) + /// + protected override void Initialize(ISystemContext context) + { + base.Initialize(context); + Initialize(context, InitializationString); + InitializeOptionalChildren(context); + } + + /// + protected override void Initialize(ISystemContext context, NodeState source) + { + InitializeOptionalChildren(context); + base.Initialize(context, source); + } + + /// + protected override void InitializeOptionalChildren(ISystemContext context) + { + base.InitializeOptionalChildren(context); + } + + #region Initialization String + private const string InitializationString = + "AQAAACAAAABodHRwOi8vb3BjZm91bmRhdGlvbi5vcmcvVUEvR0RTL/////8EYIACAQAAAAEAJwAAAEF1" + + "dGhvcml6YXRpb25TZXJ2aWNlc0ZvbGRlclR5cGVJbnN0YW5jZQEB6QABAekA6QAAAP////8AAAAA"; + #endregion + #endif + #endregion + + #region Public Properties + #endregion + + #region Overridden Methods + #endregion + + #region Private Fields + #endregion + } + #endif + #endregion + #region AuthorizationServiceState Class #if (!OPCUA_EXCLUDE_AuthorizationServiceState) - /// - /// Stores an instance of the AuthorizationServiceType ObjectType. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class AuthorizationServiceState : BaseObjectState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public AuthorizationServiceState(NodeState parent) : base(parent) { } - /// - /// Returns the id of the default type definition node for the instance. - /// + /// protected override NodeId GetDefaultTypeDefinitionId(NamespaceTable namespaceUris) { return Opc.Ua.NodeId.Create(Opc.Ua.Gds.ObjectTypes.AuthorizationServiceType, Opc.Ua.Gds.Namespaces.OpcUaGds, namespaceUris); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the instance with a node. - /// + /// protected override void Initialize(ISystemContext context, NodeState source) { InitializeOptionalChildren(context); base.Initialize(context, source); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -4670,11 +4580,7 @@ public RequestAccessTokenMethodState RequestAccessToken #endregion #region Overridden Methods - /// - /// Populates a list with the children that belong to the node. - /// - /// The context for the system being accessed. - /// The list of children to populate. + /// public override void GetChildren( ISystemContext context, IList children) @@ -4706,10 +4612,8 @@ public override void GetChildren( base.GetChildren(context, children); } - - /// - /// Finds the child with the specified browse name. - /// + + /// protected override BaseInstanceState FindChild( ISystemContext context, QualifiedName browseName, @@ -4853,44 +4757,33 @@ protected override BaseInstanceState FindChild( #region GetServiceDescriptionMethodState Class #if (!OPCUA_EXCLUDE_GetServiceDescriptionMethodState) - /// - /// Stores an instance of the GetServiceDescriptionMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class GetServiceDescriptionMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public GetServiceDescriptionMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new GetServiceDescriptionMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -4909,9 +4802,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public GetServiceDescriptionMethodStateMethodCallHandler OnCall; #endregion @@ -4919,9 +4810,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -4933,15 +4822,15 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; string serviceUri = (string)_outputArguments[0]; byte[] serviceCertificate = (byte[])_outputArguments[1]; - UserTokenPolicy[] userTokenPolicies = (UserTokenPolicy[])_outputArguments[2]; + Opc.Ua.UserTokenPolicy[] userTokenPolicies = (Opc.Ua.UserTokenPolicy[])_outputArguments[2]; if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, @@ -4954,7 +4843,7 @@ protected override ServiceResult Call( _outputArguments[1] = serviceCertificate; _outputArguments[2] = userTokenPolicies; - return result; + return _result; } #endregion @@ -4962,60 +4851,47 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult GetServiceDescriptionMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, + ISystemContext _context, + MethodState _method, + NodeId _objectId, ref string serviceUri, ref byte[] serviceCertificate, - ref UserTokenPolicy[] userTokenPolicies); + ref Opc.Ua.UserTokenPolicy[] userTokenPolicies); #endif #endregion #region RequestAccessTokenMethodState Class #if (!OPCUA_EXCLUDE_RequestAccessTokenMethodState) - /// - /// Stores an instance of the RequestAccessTokenMethodType Method. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class RequestAccessTokenMethodState : MethodState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public RequestAccessTokenMethodState(NodeState parent) : base(parent) { } - /// - /// Constructs an instance of a node. - /// - /// The parent. - /// The new node. + /// public new static NodeState Construct(NodeState parent) { return new RequestAccessTokenMethodState(parent); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); @@ -5035,9 +4911,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Event Callbacks - /// - /// Raised when the the method is called. - /// + /// public RequestAccessTokenMethodStateMethodCallHandler OnCall; #endregion @@ -5045,9 +4919,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #endregion #region Overridden Methods - /// - /// Invokes the method, returns the result and output argument. - /// + /// protected override ServiceResult Call( ISystemContext _context, NodeId _objectId, @@ -5059,16 +4931,16 @@ protected override ServiceResult Call( return base.Call(_context, _objectId, _inputArguments, _outputArguments); } - ServiceResult result = null; + ServiceResult _result = null; - UserIdentityToken identityToken = (UserIdentityToken)ExtensionObject.ToEncodeable((ExtensionObject)_inputArguments[0]); + Opc.Ua.UserIdentityToken identityToken = (Opc.Ua.UserIdentityToken)ExtensionObject.ToEncodeable((ExtensionObject)_inputArguments[0]); string resourceId = (string)_inputArguments[1]; string accessToken = (string)_outputArguments[0]; if (OnCall != null) { - result = OnCall( + _result = OnCall( _context, this, _objectId, @@ -5079,7 +4951,7 @@ protected override ServiceResult Call( _outputArguments[0] = accessToken; - return result; + return _result; } #endregion @@ -5087,15 +4959,13 @@ protected override ServiceResult Call( #endregion } - /// - /// Used to receive notifications when the method is called. - /// + /// /// public delegate ServiceResult RequestAccessTokenMethodStateMethodCallHandler( - ISystemContext context, - MethodState method, - NodeId objectId, - UserIdentityToken identityToken, + ISystemContext _context, + MethodState _method, + NodeId _objectId, + Opc.Ua.UserIdentityToken identityToken, string resourceId, ref string accessToken); #endif @@ -5103,51 +4973,40 @@ public delegate ServiceResult RequestAccessTokenMethodStateMethodCallHandler( #region AccessTokenIssuedAuditEventState Class #if (!OPCUA_EXCLUDE_AccessTokenIssuedAuditEventState) - /// - /// Stores an instance of the AccessTokenIssuedAuditEventType ObjectType. - /// + /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class AccessTokenIssuedAuditEventState : AuditUpdateMethodEventState { #region Constructors - /// - /// Initializes the type with its default attribute values. - /// + /// public AccessTokenIssuedAuditEventState(NodeState parent) : base(parent) { } - /// - /// Returns the id of the default type definition node for the instance. - /// + /// protected override NodeId GetDefaultTypeDefinitionId(NamespaceTable namespaceUris) { return Opc.Ua.NodeId.Create(Opc.Ua.Gds.ObjectTypes.AccessTokenIssuedAuditEventType, Opc.Ua.Gds.Namespaces.OpcUaGds, namespaceUris); } #if (!OPCUA_EXCLUDE_InitializationStrings) - /// - /// Initializes the instance. - /// + /// protected override void Initialize(ISystemContext context) { + base.Initialize(context); Initialize(context, InitializationString); InitializeOptionalChildren(context); } - /// - /// Initializes the instance with a node. - /// + /// protected override void Initialize(ISystemContext context, NodeState source) { InitializeOptionalChildren(context); base.Initialize(context, source); } - /// - /// Initializes the any option children defined for the instance. - /// + /// protected override void InitializeOptionalChildren(ISystemContext context) { base.InitializeOptionalChildren(context); diff --git a/Libraries/Opc.Ua.Gds.Server.Common/Model/Opc.Ua.Gds.PredefinedNodes.uanodes b/Libraries/Opc.Ua.Gds.Server.Common/Model/Opc.Ua.Gds.PredefinedNodes.uanodes index 1db5f77c3ec57191279d605389c585da31f70333..2a7acbe8fb24f10fb0a514bb2602f19602453309 100644 GIT binary patch delta 798 zcmb`DO=uHA6vy9ewx;>C3Q0q1G1=67*(947Oo>T7SVRwoU>ZTOm^InrLd?cZQuL&P zpyI{ypf{=YAQkZ-IeJiNt)M3_Uh74$wzL)aNBnA$0=Kk_dGL{EO zF!sa5;QKh8q5mFF>Z;tgaik1vw4aq*YDcTeWrwCPRsx8_6ckFh$hmPQY{q-SKIap| zN(x{{7WCmeVZVJ@FVHhVVHxmaBmW^}e?VI4X236N4&u0JbiN5_4X2%3#+4LcFG?;qJ`0c9 zw{;9#1aKR$H{!;E#bwpp!iYYHyS1ZI8bWUWP+c_A4W)A6+6D|Rl| tm8$;Sl+>2(T%ziOnmGN3=D==W~Qdbri={AlM8vpH|I0?Gcx^Un0$bF;^a^k z`^hs{)HWYtQInnQs;0@rV7s|Ut&DZ@OI>vkTSV`LHB$iF=6{(ojGG^2&tn4s0OcIL diff --git a/Libraries/Opc.Ua.Gds.Server.Common/Model/Opc.Ua.Gds.PredefinedNodes.xml b/Libraries/Opc.Ua.Gds.Server.Common/Model/Opc.Ua.Gds.PredefinedNodes.xml index 42a82631f..599deca6b 100644 --- a/Libraries/Opc.Ua.Gds.Server.Common/Model/Opc.Ua.Gds.PredefinedNodes.xml +++ b/Libraries/Opc.Ua.Gds.Server.Common/Model/Opc.Ua.Gds.PredefinedNodes.xml @@ -1,6 +1,6 @@ diff --git a/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.Classes.cs b/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.Classes.cs index 2539fdf87..f6af7018d 100644 --- a/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.Classes.cs +++ b/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.Classes.cs @@ -1161,7 +1161,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) private const string InitializationString = "//////////8EYIACAQAAAAAAHgAAAFNlcnZlckNhcGFiaWxpdGllc1R5cGVJbnN0YW5jZQEA3QcBAN0H" + - "3QcAAP////8PAAAAF2CJCgIAAAAAABIAAABTZXJ2ZXJQcm9maWxlQXJyYXkBAN4HAC4ARN4HAAAADAEA" + + "3QcAAP////8OAAAAF2CJCgIAAAAAABIAAABTZXJ2ZXJQcm9maWxlQXJyYXkBAN4HAC4ARN4HAAAADAEA" + "AAABAAAAAAAAAAEB/////wAAAAAXYIkKAgAAAAAADQAAAExvY2FsZUlkQXJyYXkBAOAHAC4AROAHAAAB" + "ACcBAQAAAAEAAAAAAAAAAQH/////AAAAABVgiQoCAAAAAAAWAAAATWluU3VwcG9ydGVkU2FtcGxlUmF0" + "ZQEA4QcALgBE4QcAAAEAIgH/////AQH/////AAAAABVgiQoCAAAAAAAbAAAATWF4QnJvd3NlQ29udGlu" + @@ -1174,17 +1174,15 @@ protected override void InitializeOptionalChildren(ISystemContext context) "AAAAFWCJCgIAAAAAABMAAABNYXhCeXRlU3RyaW5nTGVuZ3RoAQBuMgAuAERuMgAAAAf/////AQH/////" + "AAAAAARggAoBAAAAAAAPAAAAT3BlcmF0aW9uTGltaXRzAQAfLQAvAQAsLR8tAAD/////AAAAAARggAoB" + "AAAAAAAOAAAATW9kZWxsaW5nUnVsZXMBAOMHAC8APeMHAAD/////AAAAAARggAoBAAAAAAASAAAAQWdn" + - "cmVnYXRlRnVuY3Rpb25zAQDCCgAvAD3CCgAA/////wAAAAAVYMkKAgAAABwAAABWZW5kb3JDYXBhYmls" + - "aXR5X1BsYWNlaG9sZGVyAAASAAAAPFZlbmRvckNhcGFiaWxpdHk+AQAqLQAvAQBZCCotAAAAGP////8B" + - "Af////8AAAAABGCACgEAAAAAAAcAAABSb2xlU2V0AQCnPwAvAQD3PKc/AAD/////AgAAAARhggoEAAAA" + - "AAAHAAAAQWRkUm9sZQEAqD8ALwEAfT6oPwAAAQH/////AgAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1" + - "bWVudHMBAKk/AC4ARKk/AACWAgAAAAEAKgEBFwAAAAgAAABSb2xlTmFtZQAM/////wAAAAAAAQAqAQEb" + - "AAAADAAAAE5hbWVzcGFjZVVyaQAM/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAXYKkK" + - "AgAAAAAADwAAAE91dHB1dEFyZ3VtZW50cwEAqj8ALgBEqj8AAJYBAAAAAQAqAQEZAAAACgAAAFJvbGVO" + - "b2RlSWQAEf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAAAoAAABSZW1v" + - "dmVSb2xlAQCrPwAvAQCAPqs/AAABAf////8BAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEA" + - "rD8ALgBErD8AAJYBAAAAAQAqAQEZAAAACgAAAFJvbGVOb2RlSWQAEf////8AAAAAAAEAKAEBAAAAAQAA" + - "AAAAAAABAf////8AAAAA"; + "cmVnYXRlRnVuY3Rpb25zAQDCCgAvAD3CCgAA/////wAAAAAEYIAKAQAAAAAABwAAAFJvbGVTZXQBAKc/" + + "AC8BAPc8pz8AAP////8CAAAABGGCCgQAAAAAAAcAAABBZGRSb2xlAQCoPwAvAQB9Pqg/AAABAf////8C" + + "AAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEAqT8ALgBEqT8AAJYCAAAAAQAqAQEXAAAACAAA" + + "AFJvbGVOYW1lAAz/////AAAAAAABACoBARsAAAAMAAAATmFtZXNwYWNlVXJpAAz/////AAAAAAABACgB" + + "AQAAAAEAAAAAAAAAAQH/////AAAAABdgqQoCAAAAAAAPAAAAT3V0cHV0QXJndW1lbnRzAQCqPwAuAESq" + + "PwAAlgEAAAABACoBARkAAAAKAAAAUm9sZU5vZGVJZAAR/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB" + + "/////wAAAAAEYYIKBAAAAAAACgAAAFJlbW92ZVJvbGUBAKs/AC8BAIA+qz8AAAEB/////wEAAAAXYKkK" + + "AgAAAAAADgAAAElucHV0QXJndW1lbnRzAQCsPwAuAESsPwAAlgEAAAABACoBARkAAAAKAAAAUm9sZU5v" + + "ZGVJZAAR/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAA="; #endregion #endif #endregion @@ -2272,68 +2270,10 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8EYIACAQAAAAAAJgAAAFNlc3Npb25zRGlhZ25vc3RpY3NTdW1tYXJ5VHlwZUluc3RhbmNl" + - "AQDqBwEA6gfqBwAA/////wMAAAAXYIkKAgAAAAAAFwAAAFNlc3Npb25EaWFnbm9zdGljc0FycmF5AQDr" + + "AQDqBwEA6gfqBwAA/////wIAAAAXYIkKAgAAAAAAFwAAAFNlc3Npb25EaWFnbm9zdGljc0FycmF5AQDr" + "BwAvAQCUCOsHAAABAGEDAQAAAAEAAAAAAAAAAQH/////AAAAABdgiQoCAAAAAAAfAAAAU2Vzc2lvblNl" + "Y3VyaXR5RGlhZ25vc3RpY3NBcnJheQEA7AcALwEAwwjsBwAAAQBkAwEAAAABAAAAAAAAAAEB/////wAA" + - "AAAEYMAKAQAAABYAAABDbGllbnROYW1lX1BsYWNlaG9sZGVyAAAMAAAAPENsaWVudE5hbWU+AQBBLwAv" + - "AQDtB0EvAAD/////AwAAABVgiQoCAAAAAAASAAAAU2Vzc2lvbkRpYWdub3N0aWNzAQBCLwAvAQCVCEIv" + - "AAABAGED/////wEB/////ysAAAAVYIkKAgAAAAAACQAAAFNlc3Npb25JZAEAQy8ALwA/Qy8AAAAR////" + - "/wEB/////wAAAAAVYIkKAgAAAAAACwAAAFNlc3Npb25OYW1lAQBELwAvAD9ELwAAAAz/////AQH/////" + - "AAAAABVgiQoCAAAAAAARAAAAQ2xpZW50RGVzY3JpcHRpb24BAEUvAC8AP0UvAAABADQB/////wEB////" + - "/wAAAAAVYIkKAgAAAAAACQAAAFNlcnZlclVyaQEARi8ALwA/Ri8AAAAM/////wEB/////wAAAAAVYIkK" + - "AgAAAAAACwAAAEVuZHBvaW50VXJsAQBHLwAvAD9HLwAAAAz/////AQH/////AAAAABdgiQoCAAAAAAAJ" + - "AAAATG9jYWxlSWRzAQBILwAvAD9ILwAAAQAnAQEAAAABAAAAAAAAAAEB/////wAAAAAVYIkKAgAAAAAA" + - "FAAAAEFjdHVhbFNlc3Npb25UaW1lb3V0AQBJLwAvAD9JLwAAAQAiAf////8BAf////8AAAAAFWCJCgIA" + - "AAAAABYAAABNYXhSZXNwb25zZU1lc3NhZ2VTaXplAQBKLwAvAD9KLwAAAAf/////AQH/////AAAAABVg" + - "iQoCAAAAAAAUAAAAQ2xpZW50Q29ubmVjdGlvblRpbWUBAEsvAC8AP0svAAABACYB/////wEB/////wAA" + - "AAAVYIkKAgAAAAAAFQAAAENsaWVudExhc3RDb250YWN0VGltZQEATC8ALwA/TC8AAAEAJgH/////AQH/" + - "////AAAAABVgiQoCAAAAAAAZAAAAQ3VycmVudFN1YnNjcmlwdGlvbnNDb3VudAEATS8ALwA/TS8AAAAH" + - "/////wEB/////wAAAAAVYIkKAgAAAAAAGgAAAEN1cnJlbnRNb25pdG9yZWRJdGVtc0NvdW50AQBOLwAv" + - "AD9OLwAAAAf/////AQH/////AAAAABVgiQoCAAAAAAAdAAAAQ3VycmVudFB1Ymxpc2hSZXF1ZXN0c0lu" + - "UXVldWUBAE8vAC8AP08vAAAAB/////8BAf////8AAAAAFWCJCgIAAAAAABEAAABUb3RhbFJlcXVlc3RD" + - "b3VudAEAUC8ALwA/UC8AAAEAZwP/////AQH/////AAAAABVgiQoCAAAAAAAYAAAAVW5hdXRob3JpemVk" + - "UmVxdWVzdENvdW50AQBRLwAvAD9RLwAAAAf/////AQH/////AAAAABVgiQoCAAAAAAAJAAAAUmVhZENv" + - "dW50AQBSLwAvAD9SLwAAAQBnA/////8BAf////8AAAAAFWCJCgIAAAAAABAAAABIaXN0b3J5UmVhZENv" + - "dW50AQBTLwAvAD9TLwAAAQBnA/////8BAf////8AAAAAFWCJCgIAAAAAAAoAAABXcml0ZUNvdW50AQBU" + - "LwAvAD9ULwAAAQBnA/////8BAf////8AAAAAFWCJCgIAAAAAABIAAABIaXN0b3J5VXBkYXRlQ291bnQB" + - "AFUvAC8AP1UvAAABAGcD/////wEB/////wAAAAAVYIkKAgAAAAAACQAAAENhbGxDb3VudAEAVi8ALwA/" + - "Vi8AAAEAZwP/////AQH/////AAAAABVgiQoCAAAAAAAZAAAAQ3JlYXRlTW9uaXRvcmVkSXRlbXNDb3Vu" + - "dAEAVy8ALwA/Vy8AAAEAZwP/////AQH/////AAAAABVgiQoCAAAAAAAZAAAATW9kaWZ5TW9uaXRvcmVk" + - "SXRlbXNDb3VudAEAWC8ALwA/WC8AAAEAZwP/////AQH/////AAAAABVgiQoCAAAAAAAWAAAAU2V0TW9u" + - "aXRvcmluZ01vZGVDb3VudAEAWS8ALwA/WS8AAAEAZwP/////AQH/////AAAAABVgiQoCAAAAAAASAAAA" + - "U2V0VHJpZ2dlcmluZ0NvdW50AQBaLwAvAD9aLwAAAQBnA/////8BAf////8AAAAAFWCJCgIAAAAAABkA" + - "AABEZWxldGVNb25pdG9yZWRJdGVtc0NvdW50AQBbLwAvAD9bLwAAAQBnA/////8BAf////8AAAAAFWCJ" + - "CgIAAAAAABcAAABDcmVhdGVTdWJzY3JpcHRpb25Db3VudAEAXC8ALwA/XC8AAAEAZwP/////AQH/////" + - "AAAAABVgiQoCAAAAAAAXAAAATW9kaWZ5U3Vic2NyaXB0aW9uQ291bnQBAF0vAC8AP10vAAABAGcD////" + - "/wEB/////wAAAAAVYIkKAgAAAAAAFgAAAFNldFB1Ymxpc2hpbmdNb2RlQ291bnQBAF4vAC8AP14vAAAB" + - "AGcD/////wEB/////wAAAAAVYIkKAgAAAAAADAAAAFB1Ymxpc2hDb3VudAEAXy8ALwA/Xy8AAAEAZwP/" + - "////AQH/////AAAAABVgiQoCAAAAAAAOAAAAUmVwdWJsaXNoQ291bnQBAGAvAC8AP2AvAAABAGcD////" + - "/wEB/////wAAAAAVYIkKAgAAAAAAGgAAAFRyYW5zZmVyU3Vic2NyaXB0aW9uc0NvdW50AQBhLwAvAD9h" + - "LwAAAQBnA/////8BAf////8AAAAAFWCJCgIAAAAAABgAAABEZWxldGVTdWJzY3JpcHRpb25zQ291bnQB" + - "AGIvAC8AP2IvAAABAGcD/////wEB/////wAAAAAVYIkKAgAAAAAADQAAAEFkZE5vZGVzQ291bnQBAGMv" + - "AC8AP2MvAAABAGcD/////wEB/////wAAAAAVYIkKAgAAAAAAEgAAAEFkZFJlZmVyZW5jZXNDb3VudAEA" + - "ZC8ALwA/ZC8AAAEAZwP/////AQH/////AAAAABVgiQoCAAAAAAAQAAAARGVsZXRlTm9kZXNDb3VudAEA" + - "ZS8ALwA/ZS8AAAEAZwP/////AQH/////AAAAABVgiQoCAAAAAAAVAAAARGVsZXRlUmVmZXJlbmNlc0Nv" + - "dW50AQBmLwAvAD9mLwAAAQBnA/////8BAf////8AAAAAFWCJCgIAAAAAAAsAAABCcm93c2VDb3VudAEA" + - "Zy8ALwA/Zy8AAAEAZwP/////AQH/////AAAAABVgiQoCAAAAAAAPAAAAQnJvd3NlTmV4dENvdW50AQBo" + - "LwAvAD9oLwAAAQBnA/////8BAf////8AAAAAFWCJCgIAAAAAACIAAABUcmFuc2xhdGVCcm93c2VQYXRo" + - "c1RvTm9kZUlkc0NvdW50AQBpLwAvAD9pLwAAAQBnA/////8BAf////8AAAAAFWCJCgIAAAAAAA8AAABR" + - "dWVyeUZpcnN0Q291bnQBAGovAC8AP2ovAAABAGcD/////wEB/////wAAAAAVYIkKAgAAAAAADgAAAFF1" + - "ZXJ5TmV4dENvdW50AQBrLwAvAD9rLwAAAQBnA/////8BAf////8AAAAAFWCJCgIAAAAAABIAAABSZWdp" + - "c3Rlck5vZGVzQ291bnQBAGwvAC8AP2wvAAABAGcD/////wEB/////wAAAAAVYIkKAgAAAAAAFAAAAFVu" + - "cmVnaXN0ZXJOb2Rlc0NvdW50AQBtLwAvAD9tLwAAAQBnA/////8BAf////8AAAAAFWCJCgIAAAAAABoA" + - "AABTZXNzaW9uU2VjdXJpdHlEaWFnbm9zdGljcwEAbi8ALwEAxAhuLwAAAQBkA/////8BAf////8JAAAA" + - "FWCJCgIAAAAAAAkAAABTZXNzaW9uSWQBAG8vAC8AP28vAAAAEf////8BAf////8AAAAAFWCJCgIAAAAA" + - "ABUAAABDbGllbnRVc2VySWRPZlNlc3Npb24BAHAvAC8AP3AvAAAADP////8BAf////8AAAAAF2CJCgIA" + - "AAAAABMAAABDbGllbnRVc2VySWRIaXN0b3J5AQBxLwAvAD9xLwAAAAwBAAAAAQAAAAAAAAABAf////8A" + - "AAAAFWCJCgIAAAAAABcAAABBdXRoZW50aWNhdGlvbk1lY2hhbmlzbQEAci8ALwA/ci8AAAAM/////wEB" + - "/////wAAAAAVYIkKAgAAAAAACAAAAEVuY29kaW5nAQBzLwAvAD9zLwAAAAz/////AQH/////AAAAABVg" + - "iQoCAAAAAAARAAAAVHJhbnNwb3J0UHJvdG9jb2wBAHQvAC8AP3QvAAAADP////8BAf////8AAAAAFWCJ" + - "CgIAAAAAAAwAAABTZWN1cml0eU1vZGUBAHUvAC8AP3UvAAABAC4B/////wEB/////wAAAAAVYIkKAgAA" + - "AAAAEQAAAFNlY3VyaXR5UG9saWN5VXJpAQB2LwAvAD92LwAAAAz/////AQH/////AAAAABVgiQoCAAAA" + - "AAARAAAAQ2xpZW50Q2VydGlmaWNhdGUBAHcvAC8AP3cvAAAAD/////8BAf////8AAAAAF2CJCgIAAAAA" + - "ABwAAABTdWJzY3JpcHRpb25EaWFnbm9zdGljc0FycmF5AQB4LwAvAQB7CHgvAAABAGoDAQAAAAEAAAAA" + - "AAAAAQH/////AAAAAA=="; + "AAA="; #endregion #endif #endregion @@ -5790,16 +5730,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8EYIACAQAAAAAAFgAAAE5hbWVzcGFjZXNUeXBlSW5zdGFuY2UBAH0tAQB9LX0tAAD/////" + - "AQAAAARgwAoBAAAAHwAAAE5hbWVzcGFjZUlkZW50aWZpZXJfUGxhY2Vob2xkZXIAABUAAAA8TmFtZXNw" + - "YWNlSWRlbnRpZmllcj4BAH4tAC8BAGAtfi0AAP////8HAAAAFWCJCgIAAAAAAAwAAABOYW1lc3BhY2VV" + - "cmkBAH8tAC4ARH8tAAAADP////8BAf////8AAAAAFWCJCgIAAAAAABAAAABOYW1lc3BhY2VWZXJzaW9u" + - "AQCALQAuAESALQAAAAz/////AQH/////AAAAABVgiQoCAAAAAAAYAAAATmFtZXNwYWNlUHVibGljYXRp" + - "b25EYXRlAQCBLQAuAESBLQAAAA3/////AQH/////AAAAABVgiQoCAAAAAAARAAAASXNOYW1lc3BhY2VT" + - "dWJzZXQBAIItAC4ARIItAAAAAf////8BAf////8AAAAAF2CJCgIAAAAAABEAAABTdGF0aWNOb2RlSWRU" + - "eXBlcwEAgy0ALgBEgy0AAAEAAAEBAAAAAQAAAAAAAAABAf////8AAAAAF2CJCgIAAAAAABgAAABTdGF0" + - "aWNOdW1lcmljTm9kZUlkUmFuZ2UBAIQtAC4ARIQtAAABACMBAQAAAAEAAAAAAAAAAQH/////AAAAABVg" + - "iQoCAAAAAAAZAAAAU3RhdGljU3RyaW5nTm9kZUlkUGF0dGVybgEAhS0ALgBEhS0AAAAM/////wEB////" + - "/wAAAAA="; + "AAAAAA=="; #endregion #endif #endregion @@ -11594,7 +11525,7 @@ protected override void Initialize(ISystemContext context, NodeState source) /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class ServerStatusState : BaseDataVariableState + public partial class ServerStatusState : BaseDataVariableState { #region Constructors /// @@ -11620,7 +11551,7 @@ protected override int GetDefaultValueRank() return ValueRanks.Scalar; } - #if (!OPCUA_EXCLUDE_InitializationStrings) + #if (!OPCUA_EXCLUDE_InitializationStrings) /// protected override void Initialize(ISystemContext context) { @@ -11658,7 +11589,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) "AAAVYIkKAgAAAAAAEwAAAFNlY29uZHNUaWxsU2h1dGRvd24BAMAKAC8AP8AKAAAAB/////8BAf////8A" + "AAAAFWCJCgIAAAAAAA4AAABTaHV0ZG93blJlYXNvbgEAwQoALwA/wQoAAAAV/////wEB/////wAAAAA="; #endregion - #endif + #endif #endregion #region Public Properties @@ -11815,7 +11746,7 @@ public override void GetChildren( base.GetChildren(context, children); } - + /// protected override BaseInstanceState FindChild( ISystemContext context, @@ -12024,60 +11955,54 @@ private void Initialize(ServerStatusState variable) variable.Value = m_value; variable.OnReadValue = OnReadValue; - variable.OnSimpleWriteValue = OnWriteValue; + variable.OnWriteValue = OnWriteValue; BaseVariableState instance = null; List updateList = new List(); updateList.Add(variable); instance = m_variable.StartTime; - instance.OnReadValue = OnRead_StartTime; - instance.OnSimpleWriteValue = OnWrite_StartTime; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_StartTime; + instance.OnWriteValue = OnWrite_StartTime; + updateList.Add(instance); + } instance = m_variable.CurrentTime; - instance.OnReadValue = OnRead_CurrentTime; - instance.OnSimpleWriteValue = OnWrite_CurrentTime; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CurrentTime; + instance.OnWriteValue = OnWrite_CurrentTime; + updateList.Add(instance); + } instance = m_variable.State; - instance.OnReadValue = OnRead_State; - instance.OnSimpleWriteValue = OnWrite_State; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_State; + instance.OnWriteValue = OnWrite_State; + updateList.Add(instance); + } instance = m_variable.BuildInfo; - instance.OnReadValue = OnRead_BuildInfo; - instance.OnSimpleWriteValue = OnWrite_BuildInfo; - updateList.Add(instance); - instance = m_variable.BuildInfo.ProductUri; - instance.OnReadValue = OnRead_BuildInfo_ProductUri; - instance.OnSimpleWriteValue = OnWrite_BuildInfo_ProductUri; - updateList.Add(instance); - instance = m_variable.BuildInfo.ManufacturerName; - instance.OnReadValue = OnRead_BuildInfo_ManufacturerName; - instance.OnSimpleWriteValue = OnWrite_BuildInfo_ManufacturerName; - updateList.Add(instance); - instance = m_variable.BuildInfo.ProductName; - instance.OnReadValue = OnRead_BuildInfo_ProductName; - instance.OnSimpleWriteValue = OnWrite_BuildInfo_ProductName; - updateList.Add(instance); - instance = m_variable.BuildInfo.SoftwareVersion; - instance.OnReadValue = OnRead_BuildInfo_SoftwareVersion; - instance.OnSimpleWriteValue = OnWrite_BuildInfo_SoftwareVersion; - updateList.Add(instance); - instance = m_variable.BuildInfo.BuildNumber; - instance.OnReadValue = OnRead_BuildInfo_BuildNumber; - instance.OnSimpleWriteValue = OnWrite_BuildInfo_BuildNumber; - updateList.Add(instance); - instance = m_variable.BuildInfo.BuildDate; - instance.OnReadValue = OnRead_BuildInfo_BuildDate; - instance.OnSimpleWriteValue = OnWrite_BuildInfo_BuildDate; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_BuildInfo; + instance.OnWriteValue = OnWrite_BuildInfo; + updateList.Add(instance); + } instance = m_variable.SecondsTillShutdown; - instance.OnReadValue = OnRead_SecondsTillShutdown; - instance.OnSimpleWriteValue = OnWrite_SecondsTillShutdown; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SecondsTillShutdown; + instance.OnWriteValue = OnWrite_SecondsTillShutdown; + updateList.Add(instance); + } instance = m_variable.ShutdownReason; - instance.OnReadValue = OnRead_ShutdownReason; - instance.OnSimpleWriteValue = OnWrite_ShutdownReason; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ShutdownReason; + instance.OnWriteValue = OnWrite_ShutdownReason; + updateList.Add(instance); + } SetUpdateList(updateList); } @@ -12106,19 +12031,7 @@ protected ServiceResult OnReadValue( } } - private ServiceResult OnWriteValue(ISystemContext context, NodeState node, ref object value) - { - lock (Lock) - { - m_value = (ServerStatusDataType)Write(value); - } - - return ServiceResult.Good; - } - - #region StartTime Access Methods - /// - private ServiceResult OnRead_StartTime( + private ServiceResult OnWriteValue( ISystemContext context, NodeState node, NumericRange indexRange, @@ -12129,68 +12042,59 @@ private ServiceResult OnRead_StartTime( { lock (Lock) { - DoBeforeReadProcessing(context, node); - - if (m_value != null) + ServerStatusDataType newValue; + if (value is ExtensionObject extensionObject) { - value = m_value.StartTime; + newValue = (ServerStatusDataType)extensionObject.Body; + } + else + { + newValue = (ServerStatusDataType)value; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); - } - } - - /// - private ServiceResult OnWrite_StartTime(ISystemContext context, NodeState node, ref object value) - { - lock (Lock) - { - m_value.StartTime = (DateTime)Write(value); + if (!Utils.IsEqual(m_value, newValue)) + { + UpdateChildrenChangeMasks(context, ref newValue, ref statusCode, ref timestamp); + Timestamp = timestamp; + m_value = (ServerStatusDataType)Write(newValue); + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + } } return ServiceResult.Good; } - #endregion - #region CurrentTime Access Methods - /// - private ServiceResult OnRead_CurrentTime( - ISystemContext context, - NodeState node, - NumericRange indexRange, - QualifiedName dataEncoding, - ref object value, - ref StatusCode statusCode, - ref DateTime timestamp) + private void UpdateChildrenChangeMasks(ISystemContext context, ref ServerStatusDataType newValue, ref StatusCode statusCode, ref DateTime timestamp) { - lock (Lock) - { - DoBeforeReadProcessing(context, node); - - if (m_value != null) - { - value = m_value.CurrentTime; - } + if (!Utils.IsEqual(m_value.StartTime, newValue.StartTime)) UpdateChildVariableStatus(m_variable.StartTime, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.CurrentTime, newValue.CurrentTime)) UpdateChildVariableStatus(m_variable.CurrentTime, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.State, newValue.State)) UpdateChildVariableStatus(m_variable.State, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.BuildInfo, newValue.BuildInfo)) UpdateChildVariableStatus(m_variable.BuildInfo, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.SecondsTillShutdown, newValue.SecondsTillShutdown)) UpdateChildVariableStatus(m_variable.SecondsTillShutdown, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.ShutdownReason, newValue.ShutdownReason)) UpdateChildVariableStatus(m_variable.ShutdownReason, ref statusCode, ref timestamp); + } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); - } + private void UpdateParent(ISystemContext context, ref StatusCode statusCode, ref DateTime timestamp) + { + Timestamp = timestamp; + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + m_variable.ClearChangeMasks(context, false); } - /// - private ServiceResult OnWrite_CurrentTime(ISystemContext context, NodeState node, ref object value) + private void UpdateChildVariableStatus(BaseVariableState child, ref StatusCode statusCode, ref DateTime timestamp) { - lock (Lock) + if (child == null) return; + child.StatusCode = statusCode; + if (timestamp == DateTime.MinValue) { - m_value.CurrentTime = (DateTime)Write(value); + timestamp = DateTime.UtcNow; } - - return ServiceResult.Good; + child.Timestamp = timestamp; } - #endregion - #region State Access Methods + #region StartTime Access Methods /// - private ServiceResult OnRead_State( + private ServiceResult OnRead_StartTime( ISystemContext context, NodeState node, NumericRange indexRange, @@ -12203,30 +12107,37 @@ private ServiceResult OnRead_State( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.StartTime; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { - value = m_value.State; + value = m_value.StartTime; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); - } - } + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); - /// - private ServiceResult OnWrite_State(ISystemContext context, NodeState node, ref object value) - { - lock (Lock) - { - m_value.State = (ServerState)Write(value); - } + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } - return ServiceResult.Good; + return result; + } } - #endregion - #region BuildInfo Access Methods /// - private ServiceResult OnRead_BuildInfo( + private ServiceResult OnWrite_StartTime( ISystemContext context, NodeState node, NumericRange indexRange, @@ -12237,32 +12148,18 @@ private ServiceResult OnRead_BuildInfo( { lock (Lock) { - DoBeforeReadProcessing(context, node); - - if (m_value != null) - { - value = m_value.BuildInfo; - } - - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); - } - } - - /// - private ServiceResult OnWrite_BuildInfo(ISystemContext context, NodeState node, ref object value) - { - lock (Lock) - { - m_value.BuildInfo = (BuildInfo)Write(value); + UpdateChildVariableStatus(m_variable.StartTime, ref statusCode, ref timestamp); + m_value.StartTime = (DateTime)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; } #endregion - #region BuildInfo_ProductUri Access Methods + #region CurrentTime Access Methods /// - private ServiceResult OnRead_BuildInfo_ProductUri( + private ServiceResult OnRead_CurrentTime( ISystemContext context, NodeState node, NumericRange indexRange, @@ -12275,30 +12172,37 @@ private ServiceResult OnRead_BuildInfo_ProductUri( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CurrentTime; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { - value = m_value.BuildInfo.ProductUri; + value = m_value.CurrentTime; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); - } - } + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); - /// - private ServiceResult OnWrite_BuildInfo_ProductUri(ISystemContext context, NodeState node, ref object value) - { - lock (Lock) - { - m_value.BuildInfo.ProductUri = (string)Write(value); - } + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } - return ServiceResult.Good; + return result; + } } - #endregion - #region BuildInfo_ManufacturerName Access Methods /// - private ServiceResult OnRead_BuildInfo_ManufacturerName( + private ServiceResult OnWrite_CurrentTime( ISystemContext context, NodeState node, NumericRange indexRange, @@ -12309,32 +12213,18 @@ private ServiceResult OnRead_BuildInfo_ManufacturerName( { lock (Lock) { - DoBeforeReadProcessing(context, node); - - if (m_value != null) - { - value = m_value.BuildInfo.ManufacturerName; - } - - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); - } - } - - /// - private ServiceResult OnWrite_BuildInfo_ManufacturerName(ISystemContext context, NodeState node, ref object value) - { - lock (Lock) - { - m_value.BuildInfo.ManufacturerName = (string)Write(value); + UpdateChildVariableStatus(m_variable.CurrentTime, ref statusCode, ref timestamp); + m_value.CurrentTime = (DateTime)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; } #endregion - #region BuildInfo_ProductName Access Methods + #region State Access Methods /// - private ServiceResult OnRead_BuildInfo_ProductName( + private ServiceResult OnRead_State( ISystemContext context, NodeState node, NumericRange indexRange, @@ -12347,30 +12237,37 @@ private ServiceResult OnRead_BuildInfo_ProductName( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.State; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { - value = m_value.BuildInfo.ProductName; + value = m_value.State; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); - } - } + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); - /// - private ServiceResult OnWrite_BuildInfo_ProductName(ISystemContext context, NodeState node, ref object value) - { - lock (Lock) - { - m_value.BuildInfo.ProductName = (string)Write(value); - } + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } - return ServiceResult.Good; + return result; + } } - #endregion - #region BuildInfo_SoftwareVersion Access Methods /// - private ServiceResult OnRead_BuildInfo_SoftwareVersion( + private ServiceResult OnWrite_State( ISystemContext context, NodeState node, NumericRange indexRange, @@ -12381,32 +12278,18 @@ private ServiceResult OnRead_BuildInfo_SoftwareVersion( { lock (Lock) { - DoBeforeReadProcessing(context, node); - - if (m_value != null) - { - value = m_value.BuildInfo.SoftwareVersion; - } - - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); - } - } - - /// - private ServiceResult OnWrite_BuildInfo_SoftwareVersion(ISystemContext context, NodeState node, ref object value) - { - lock (Lock) - { - m_value.BuildInfo.SoftwareVersion = (string)Write(value); + UpdateChildVariableStatus(m_variable.State, ref statusCode, ref timestamp); + m_value.State = (ServerState)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; } #endregion - #region BuildInfo_BuildNumber Access Methods + #region BuildInfo Access Methods /// - private ServiceResult OnRead_BuildInfo_BuildNumber( + private ServiceResult OnRead_BuildInfo( ISystemContext context, NodeState node, NumericRange indexRange, @@ -12419,30 +12302,37 @@ private ServiceResult OnRead_BuildInfo_BuildNumber( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.BuildInfo; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { - value = m_value.BuildInfo.BuildNumber; + value = m_value.BuildInfo; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); - } - } + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); - /// - private ServiceResult OnWrite_BuildInfo_BuildNumber(ISystemContext context, NodeState node, ref object value) - { - lock (Lock) - { - m_value.BuildInfo.BuildNumber = (string)Write(value); - } + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } - return ServiceResult.Good; + return result; + } } - #endregion - #region BuildInfo_BuildDate Access Methods /// - private ServiceResult OnRead_BuildInfo_BuildDate( + private ServiceResult OnWrite_BuildInfo( ISystemContext context, NodeState node, NumericRange indexRange, @@ -12453,23 +12343,9 @@ private ServiceResult OnRead_BuildInfo_BuildDate( { lock (Lock) { - DoBeforeReadProcessing(context, node); - - if (m_value != null) - { - value = m_value.BuildInfo.BuildDate; - } - - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); - } - } - - /// - private ServiceResult OnWrite_BuildInfo_BuildDate(ISystemContext context, NodeState node, ref object value) - { - lock (Lock) - { - m_value.BuildInfo.BuildDate = (DateTime)Write(value); + UpdateChildVariableStatus(m_variable.BuildInfo, ref statusCode, ref timestamp); + m_value.BuildInfo = (BuildInfo)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -12491,21 +12367,50 @@ private ServiceResult OnRead_SecondsTillShutdown( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SecondsTillShutdown; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SecondsTillShutdown; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SecondsTillShutdown(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SecondsTillShutdown( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SecondsTillShutdown, ref statusCode, ref timestamp); m_value.SecondsTillShutdown = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -12527,21 +12432,50 @@ private ServiceResult OnRead_ShutdownReason( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ShutdownReason; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ShutdownReason; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ShutdownReason(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ShutdownReason( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ShutdownReason, ref statusCode, ref timestamp); m_value.ShutdownReason = (LocalizedText)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -12559,11 +12493,11 @@ private ServiceResult OnWrite_ShutdownReason(ISystemContext context, NodeState n #endregion #region BuildInfoVariableState Class -#if (!OPCUA_EXCLUDE_BuildInfoVariableState) + #if (!OPCUA_EXCLUDE_BuildInfoVariableState) /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class BuildInfoVariableState : BaseDataVariableState + public partial class BuildInfoVariableState : BaseDataVariableState { #region Constructors /// @@ -12973,7 +12907,7 @@ public BuildInfoVariableState Variable /// public BuildInfo Value { - get { return m_value; } + get { return m_value; } set { m_value = value; } } #endregion @@ -12988,36 +12922,54 @@ private void Initialize(BuildInfoVariableState variable) variable.Value = m_value; variable.OnReadValue = OnReadValue; - variable.OnSimpleWriteValue = OnWriteValue; + variable.OnWriteValue = OnWriteValue; BaseVariableState instance = null; List updateList = new List(); updateList.Add(variable); instance = m_variable.ProductUri; - instance.OnReadValue = OnRead_ProductUri; - instance.OnSimpleWriteValue = OnWrite_ProductUri; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ProductUri; + instance.OnWriteValue = OnWrite_ProductUri; + updateList.Add(instance); + } instance = m_variable.ManufacturerName; - instance.OnReadValue = OnRead_ManufacturerName; - instance.OnSimpleWriteValue = OnWrite_ManufacturerName; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ManufacturerName; + instance.OnWriteValue = OnWrite_ManufacturerName; + updateList.Add(instance); + } instance = m_variable.ProductName; - instance.OnReadValue = OnRead_ProductName; - instance.OnSimpleWriteValue = OnWrite_ProductName; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ProductName; + instance.OnWriteValue = OnWrite_ProductName; + updateList.Add(instance); + } instance = m_variable.SoftwareVersion; - instance.OnReadValue = OnRead_SoftwareVersion; - instance.OnSimpleWriteValue = OnWrite_SoftwareVersion; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SoftwareVersion; + instance.OnWriteValue = OnWrite_SoftwareVersion; + updateList.Add(instance); + } instance = m_variable.BuildNumber; - instance.OnReadValue = OnRead_BuildNumber; - instance.OnSimpleWriteValue = OnWrite_BuildNumber; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_BuildNumber; + instance.OnWriteValue = OnWrite_BuildNumber; + updateList.Add(instance); + } instance = m_variable.BuildDate; - instance.OnReadValue = OnRead_BuildDate; - instance.OnSimpleWriteValue = OnWrite_BuildDate; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_BuildDate; + instance.OnWriteValue = OnWrite_BuildDate; + updateList.Add(instance); + } SetUpdateList(updateList); } @@ -13046,16 +12998,67 @@ protected ServiceResult OnReadValue( } } - private ServiceResult OnWriteValue(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWriteValue( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { - m_value = (BuildInfo)Write(value); + BuildInfo newValue; + if (value is ExtensionObject extensionObject) + { + newValue = (BuildInfo)extensionObject.Body; + } + else + { + newValue = (BuildInfo)value; + } + + if (!Utils.IsEqual(m_value, newValue)) + { + UpdateChildrenChangeMasks(context, ref newValue, ref statusCode, ref timestamp); + Timestamp = timestamp; + m_value = (BuildInfo)Write(newValue); + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + } } return ServiceResult.Good; } + private void UpdateChildrenChangeMasks(ISystemContext context, ref BuildInfo newValue, ref StatusCode statusCode, ref DateTime timestamp) + { + if (!Utils.IsEqual(m_value.ProductUri, newValue.ProductUri)) UpdateChildVariableStatus(m_variable.ProductUri, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.ManufacturerName, newValue.ManufacturerName)) UpdateChildVariableStatus(m_variable.ManufacturerName, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.ProductName, newValue.ProductName)) UpdateChildVariableStatus(m_variable.ProductName, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.SoftwareVersion, newValue.SoftwareVersion)) UpdateChildVariableStatus(m_variable.SoftwareVersion, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.BuildNumber, newValue.BuildNumber)) UpdateChildVariableStatus(m_variable.BuildNumber, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.BuildDate, newValue.BuildDate)) UpdateChildVariableStatus(m_variable.BuildDate, ref statusCode, ref timestamp); + } + + private void UpdateParent(ISystemContext context, ref StatusCode statusCode, ref DateTime timestamp) + { + Timestamp = timestamp; + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + m_variable.ClearChangeMasks(context, false); + } + + private void UpdateChildVariableStatus(BaseVariableState child, ref StatusCode statusCode, ref DateTime timestamp) + { + if (child == null) return; + child.StatusCode = statusCode; + if (timestamp == DateTime.MinValue) + { + timestamp = DateTime.UtcNow; + } + child.Timestamp = timestamp; + } + #region ProductUri Access Methods /// private ServiceResult OnRead_ProductUri( @@ -13071,21 +13074,50 @@ private ServiceResult OnRead_ProductUri( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ProductUri; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ProductUri; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ProductUri(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ProductUri( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ProductUri, ref statusCode, ref timestamp); m_value.ProductUri = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -13107,21 +13139,50 @@ private ServiceResult OnRead_ManufacturerName( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ManufacturerName; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ManufacturerName; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ManufacturerName(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ManufacturerName( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ManufacturerName, ref statusCode, ref timestamp); m_value.ManufacturerName = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -13143,21 +13204,50 @@ private ServiceResult OnRead_ProductName( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ProductName; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ProductName; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ProductName(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ProductName( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ProductName, ref statusCode, ref timestamp); m_value.ProductName = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -13179,21 +13269,50 @@ private ServiceResult OnRead_SoftwareVersion( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SoftwareVersion; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SoftwareVersion; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SoftwareVersion(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SoftwareVersion( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SoftwareVersion, ref statusCode, ref timestamp); m_value.SoftwareVersion = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -13215,21 +13334,50 @@ private ServiceResult OnRead_BuildNumber( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.BuildNumber; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.BuildNumber; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_BuildNumber(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_BuildNumber( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.BuildNumber, ref statusCode, ref timestamp); m_value.BuildNumber = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -13251,21 +13399,50 @@ private ServiceResult OnRead_BuildDate( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.BuildDate; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.BuildDate; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_BuildDate(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_BuildDate( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.BuildDate, ref statusCode, ref timestamp); m_value.BuildDate = (DateTime)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -13287,7 +13464,7 @@ private ServiceResult OnWrite_BuildDate(ISystemContext context, NodeState node, /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class ServerDiagnosticsSummaryState : BaseDataVariableState + public partial class ServerDiagnosticsSummaryState : BaseDataVariableState { #region Constructors /// @@ -13980,7 +14157,7 @@ public ServerDiagnosticsSummaryState Variable /// public ServerDiagnosticsSummaryDataType Value { - get { return m_value; } + get { return m_value; } set { m_value = value; } } #endregion @@ -13995,60 +14172,96 @@ private void Initialize(ServerDiagnosticsSummaryState variable) variable.Value = m_value; variable.OnReadValue = OnReadValue; - variable.OnSimpleWriteValue = OnWriteValue; + variable.OnWriteValue = OnWriteValue; BaseVariableState instance = null; List updateList = new List(); updateList.Add(variable); instance = m_variable.ServerViewCount; - instance.OnReadValue = OnRead_ServerViewCount; - instance.OnSimpleWriteValue = OnWrite_ServerViewCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ServerViewCount; + instance.OnWriteValue = OnWrite_ServerViewCount; + updateList.Add(instance); + } instance = m_variable.CurrentSessionCount; - instance.OnReadValue = OnRead_CurrentSessionCount; - instance.OnSimpleWriteValue = OnWrite_CurrentSessionCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CurrentSessionCount; + instance.OnWriteValue = OnWrite_CurrentSessionCount; + updateList.Add(instance); + } instance = m_variable.CumulatedSessionCount; - instance.OnReadValue = OnRead_CumulatedSessionCount; - instance.OnSimpleWriteValue = OnWrite_CumulatedSessionCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CumulatedSessionCount; + instance.OnWriteValue = OnWrite_CumulatedSessionCount; + updateList.Add(instance); + } instance = m_variable.SecurityRejectedSessionCount; - instance.OnReadValue = OnRead_SecurityRejectedSessionCount; - instance.OnSimpleWriteValue = OnWrite_SecurityRejectedSessionCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SecurityRejectedSessionCount; + instance.OnWriteValue = OnWrite_SecurityRejectedSessionCount; + updateList.Add(instance); + } instance = m_variable.RejectedSessionCount; - instance.OnReadValue = OnRead_RejectedSessionCount; - instance.OnSimpleWriteValue = OnWrite_RejectedSessionCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_RejectedSessionCount; + instance.OnWriteValue = OnWrite_RejectedSessionCount; + updateList.Add(instance); + } instance = m_variable.SessionTimeoutCount; - instance.OnReadValue = OnRead_SessionTimeoutCount; - instance.OnSimpleWriteValue = OnWrite_SessionTimeoutCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SessionTimeoutCount; + instance.OnWriteValue = OnWrite_SessionTimeoutCount; + updateList.Add(instance); + } instance = m_variable.SessionAbortCount; - instance.OnReadValue = OnRead_SessionAbortCount; - instance.OnSimpleWriteValue = OnWrite_SessionAbortCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SessionAbortCount; + instance.OnWriteValue = OnWrite_SessionAbortCount; + updateList.Add(instance); + } instance = m_variable.CurrentSubscriptionCount; - instance.OnReadValue = OnRead_CurrentSubscriptionCount; - instance.OnSimpleWriteValue = OnWrite_CurrentSubscriptionCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CurrentSubscriptionCount; + instance.OnWriteValue = OnWrite_CurrentSubscriptionCount; + updateList.Add(instance); + } instance = m_variable.CumulatedSubscriptionCount; - instance.OnReadValue = OnRead_CumulatedSubscriptionCount; - instance.OnSimpleWriteValue = OnWrite_CumulatedSubscriptionCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CumulatedSubscriptionCount; + instance.OnWriteValue = OnWrite_CumulatedSubscriptionCount; + updateList.Add(instance); + } instance = m_variable.PublishingIntervalCount; - instance.OnReadValue = OnRead_PublishingIntervalCount; - instance.OnSimpleWriteValue = OnWrite_PublishingIntervalCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_PublishingIntervalCount; + instance.OnWriteValue = OnWrite_PublishingIntervalCount; + updateList.Add(instance); + } instance = m_variable.SecurityRejectedRequestsCount; - instance.OnReadValue = OnRead_SecurityRejectedRequestsCount; - instance.OnSimpleWriteValue = OnWrite_SecurityRejectedRequestsCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SecurityRejectedRequestsCount; + instance.OnWriteValue = OnWrite_SecurityRejectedRequestsCount; + updateList.Add(instance); + } instance = m_variable.RejectedRequestsCount; - instance.OnReadValue = OnRead_RejectedRequestsCount; - instance.OnSimpleWriteValue = OnWrite_RejectedRequestsCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_RejectedRequestsCount; + instance.OnWriteValue = OnWrite_RejectedRequestsCount; + updateList.Add(instance); + } SetUpdateList(updateList); } @@ -14077,16 +14290,73 @@ protected ServiceResult OnReadValue( } } - private ServiceResult OnWriteValue(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWriteValue( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { - m_value = (ServerDiagnosticsSummaryDataType)Write(value); + ServerDiagnosticsSummaryDataType newValue; + if (value is ExtensionObject extensionObject) + { + newValue = (ServerDiagnosticsSummaryDataType)extensionObject.Body; + } + else + { + newValue = (ServerDiagnosticsSummaryDataType)value; + } + + if (!Utils.IsEqual(m_value, newValue)) + { + UpdateChildrenChangeMasks(context, ref newValue, ref statusCode, ref timestamp); + Timestamp = timestamp; + m_value = (ServerDiagnosticsSummaryDataType)Write(newValue); + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + } } return ServiceResult.Good; } + private void UpdateChildrenChangeMasks(ISystemContext context, ref ServerDiagnosticsSummaryDataType newValue, ref StatusCode statusCode, ref DateTime timestamp) + { + if (!Utils.IsEqual(m_value.ServerViewCount, newValue.ServerViewCount)) UpdateChildVariableStatus(m_variable.ServerViewCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.CurrentSessionCount, newValue.CurrentSessionCount)) UpdateChildVariableStatus(m_variable.CurrentSessionCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.CumulatedSessionCount, newValue.CumulatedSessionCount)) UpdateChildVariableStatus(m_variable.CumulatedSessionCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.SecurityRejectedSessionCount, newValue.SecurityRejectedSessionCount)) UpdateChildVariableStatus(m_variable.SecurityRejectedSessionCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.RejectedSessionCount, newValue.RejectedSessionCount)) UpdateChildVariableStatus(m_variable.RejectedSessionCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.SessionTimeoutCount, newValue.SessionTimeoutCount)) UpdateChildVariableStatus(m_variable.SessionTimeoutCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.SessionAbortCount, newValue.SessionAbortCount)) UpdateChildVariableStatus(m_variable.SessionAbortCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.CurrentSubscriptionCount, newValue.CurrentSubscriptionCount)) UpdateChildVariableStatus(m_variable.CurrentSubscriptionCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.CumulatedSubscriptionCount, newValue.CumulatedSubscriptionCount)) UpdateChildVariableStatus(m_variable.CumulatedSubscriptionCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.PublishingIntervalCount, newValue.PublishingIntervalCount)) UpdateChildVariableStatus(m_variable.PublishingIntervalCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.SecurityRejectedRequestsCount, newValue.SecurityRejectedRequestsCount)) UpdateChildVariableStatus(m_variable.SecurityRejectedRequestsCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.RejectedRequestsCount, newValue.RejectedRequestsCount)) UpdateChildVariableStatus(m_variable.RejectedRequestsCount, ref statusCode, ref timestamp); + } + + private void UpdateParent(ISystemContext context, ref StatusCode statusCode, ref DateTime timestamp) + { + Timestamp = timestamp; + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + m_variable.ClearChangeMasks(context, false); + } + + private void UpdateChildVariableStatus(BaseVariableState child, ref StatusCode statusCode, ref DateTime timestamp) + { + if (child == null) return; + child.StatusCode = statusCode; + if (timestamp == DateTime.MinValue) + { + timestamp = DateTime.UtcNow; + } + child.Timestamp = timestamp; + } + #region ServerViewCount Access Methods /// private ServiceResult OnRead_ServerViewCount( @@ -14102,21 +14372,50 @@ private ServiceResult OnRead_ServerViewCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ServerViewCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ServerViewCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ServerViewCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ServerViewCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ServerViewCount, ref statusCode, ref timestamp); m_value.ServerViewCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -14138,21 +14437,50 @@ private ServiceResult OnRead_CurrentSessionCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CurrentSessionCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CurrentSessionCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CurrentSessionCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CurrentSessionCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CurrentSessionCount, ref statusCode, ref timestamp); m_value.CurrentSessionCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -14174,21 +14502,50 @@ private ServiceResult OnRead_CumulatedSessionCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CumulatedSessionCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CumulatedSessionCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CumulatedSessionCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CumulatedSessionCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CumulatedSessionCount, ref statusCode, ref timestamp); m_value.CumulatedSessionCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -14210,21 +14567,50 @@ private ServiceResult OnRead_SecurityRejectedSessionCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SecurityRejectedSessionCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SecurityRejectedSessionCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SecurityRejectedSessionCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SecurityRejectedSessionCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SecurityRejectedSessionCount, ref statusCode, ref timestamp); m_value.SecurityRejectedSessionCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -14246,21 +14632,50 @@ private ServiceResult OnRead_RejectedSessionCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.RejectedSessionCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.RejectedSessionCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_RejectedSessionCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_RejectedSessionCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.RejectedSessionCount, ref statusCode, ref timestamp); m_value.RejectedSessionCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -14282,21 +14697,50 @@ private ServiceResult OnRead_SessionTimeoutCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SessionTimeoutCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SessionTimeoutCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SessionTimeoutCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SessionTimeoutCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SessionTimeoutCount, ref statusCode, ref timestamp); m_value.SessionTimeoutCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -14318,21 +14762,50 @@ private ServiceResult OnRead_SessionAbortCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SessionAbortCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SessionAbortCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SessionAbortCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SessionAbortCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SessionAbortCount, ref statusCode, ref timestamp); m_value.SessionAbortCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -14354,21 +14827,50 @@ private ServiceResult OnRead_CurrentSubscriptionCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CurrentSubscriptionCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CurrentSubscriptionCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CurrentSubscriptionCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CurrentSubscriptionCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CurrentSubscriptionCount, ref statusCode, ref timestamp); m_value.CurrentSubscriptionCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -14390,21 +14892,50 @@ private ServiceResult OnRead_CumulatedSubscriptionCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CumulatedSubscriptionCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CumulatedSubscriptionCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CumulatedSubscriptionCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CumulatedSubscriptionCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CumulatedSubscriptionCount, ref statusCode, ref timestamp); m_value.CumulatedSubscriptionCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -14426,21 +14957,50 @@ private ServiceResult OnRead_PublishingIntervalCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.PublishingIntervalCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.PublishingIntervalCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_PublishingIntervalCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_PublishingIntervalCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.PublishingIntervalCount, ref statusCode, ref timestamp); m_value.PublishingIntervalCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -14462,21 +15022,50 @@ private ServiceResult OnRead_SecurityRejectedRequestsCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SecurityRejectedRequestsCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SecurityRejectedRequestsCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SecurityRejectedRequestsCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SecurityRejectedRequestsCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SecurityRejectedRequestsCount, ref statusCode, ref timestamp); m_value.SecurityRejectedRequestsCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -14498,21 +15087,50 @@ private ServiceResult OnRead_RejectedRequestsCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.RejectedRequestsCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.RejectedRequestsCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_RejectedRequestsCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_RejectedRequestsCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.RejectedRequestsCount, ref statusCode, ref timestamp); m_value.RejectedRequestsCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -14534,7 +15152,7 @@ private ServiceResult OnWrite_RejectedRequestsCount(ISystemContext context, Node /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class SamplingIntervalDiagnosticsArrayState : BaseDataVariableState + public partial class SamplingIntervalDiagnosticsArrayState : BaseDataVariableState { #region Constructors /// @@ -14585,13 +15203,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8XYIkCAgAAAAAALAAAAFNhbXBsaW5nSW50ZXJ2YWxEaWFnbm9zdGljc0FycmF5VHlwZUlu" + - "c3RhbmNlAQB0CAEAdAh0CAAAAQBYAwEAAAABAAAAAAAAAAEB/////wEAAAAVYIkKAgAAAAAAGwAAAFNh" + - "bXBsaW5nSW50ZXJ2YWxEaWFnbm9zdGljcwEA6zEALwEAdQjrMQAAAQBYA/////8BAf////8EAAAAFWCJ" + - "CgIAAAAAABAAAABTYW1wbGluZ0ludGVydmFsAQDsMQAvAD/sMQAAAQAiAf////8BAf////8AAAAAFWCJ" + - "CgIAAAAAABoAAABTYW1wbGVkTW9uaXRvcmVkSXRlbXNDb3VudAEA7TEALwA/7TEAAAAH/////wEB////" + - "/wAAAAAVYIkKAgAAAAAAHQAAAE1heFNhbXBsZWRNb25pdG9yZWRJdGVtc0NvdW50AQDuMQAvAD/uMQAA" + - "AAf/////AQH/////AAAAABVgiQoCAAAAAAAjAAAARGlzYWJsZWRNb25pdG9yZWRJdGVtc1NhbXBsaW5n" + - "Q291bnQBAO8xAC8AP+8xAAAAB/////8BAf////8AAAAA"; + "c3RhbmNlAQB0CAEAdAh0CAAAAQBYAwEAAAABAAAAAAAAAAEB/////wAAAAA="; #endregion #endif #endregion @@ -14613,7 +15225,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class SamplingIntervalDiagnosticsState : BaseDataVariableState + public partial class SamplingIntervalDiagnosticsState : BaseDataVariableState { #region Constructors /// @@ -14930,7 +15542,7 @@ public SamplingIntervalDiagnosticsState Variable /// public SamplingIntervalDiagnosticsDataType Value { - get { return m_value; } + get { return m_value; } set { m_value = value; } } #endregion @@ -14945,16 +15557,19 @@ private void Initialize(SamplingIntervalDiagnosticsState variable) variable.Value = m_value; variable.OnReadValue = OnReadValue; - variable.OnSimpleWriteValue = OnWriteValue; + variable.OnWriteValue = OnWriteValue; BaseVariableState instance = null; List updateList = new List(); updateList.Add(variable); instance = m_variable.SamplingInterval; - instance.OnReadValue = OnRead_SamplingInterval; - instance.OnSimpleWriteValue = OnWrite_SamplingInterval; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SamplingInterval; + instance.OnWriteValue = OnWrite_SamplingInterval; + updateList.Add(instance); + } SetUpdateList(updateList); } @@ -14983,16 +15598,62 @@ protected ServiceResult OnReadValue( } } - private ServiceResult OnWriteValue(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWriteValue( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { - m_value = (SamplingIntervalDiagnosticsDataType)Write(value); + SamplingIntervalDiagnosticsDataType newValue; + if (value is ExtensionObject extensionObject) + { + newValue = (SamplingIntervalDiagnosticsDataType)extensionObject.Body; + } + else + { + newValue = (SamplingIntervalDiagnosticsDataType)value; + } + + if (!Utils.IsEqual(m_value, newValue)) + { + UpdateChildrenChangeMasks(context, ref newValue, ref statusCode, ref timestamp); + Timestamp = timestamp; + m_value = (SamplingIntervalDiagnosticsDataType)Write(newValue); + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + } } return ServiceResult.Good; } + private void UpdateChildrenChangeMasks(ISystemContext context, ref SamplingIntervalDiagnosticsDataType newValue, ref StatusCode statusCode, ref DateTime timestamp) + { + if (!Utils.IsEqual(m_value.SamplingInterval, newValue.SamplingInterval)) UpdateChildVariableStatus(m_variable.SamplingInterval, ref statusCode, ref timestamp); + } + + private void UpdateParent(ISystemContext context, ref StatusCode statusCode, ref DateTime timestamp) + { + Timestamp = timestamp; + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + m_variable.ClearChangeMasks(context, false); + } + + private void UpdateChildVariableStatus(BaseVariableState child, ref StatusCode statusCode, ref DateTime timestamp) + { + if (child == null) return; + child.StatusCode = statusCode; + if (timestamp == DateTime.MinValue) + { + timestamp = DateTime.UtcNow; + } + child.Timestamp = timestamp; + } + #region SamplingInterval Access Methods /// private ServiceResult OnRead_SamplingInterval( @@ -15008,21 +15669,50 @@ private ServiceResult OnRead_SamplingInterval( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SamplingInterval; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SamplingInterval; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SamplingInterval(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SamplingInterval( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SamplingInterval, ref statusCode, ref timestamp); m_value.SamplingInterval = (double)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -15044,7 +15734,7 @@ private ServiceResult OnWrite_SamplingInterval(ISystemContext context, NodeState /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class SubscriptionDiagnosticsArrayState : BaseDataVariableState + public partial class SubscriptionDiagnosticsArrayState : BaseDataVariableState { #region Constructors /// @@ -15095,40 +15785,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8XYIkCAgAAAAAAKAAAAFN1YnNjcmlwdGlvbkRpYWdub3N0aWNzQXJyYXlUeXBlSW5zdGFu" + - "Y2UBAHsIAQB7CHsIAAABAGoDAQAAAAEAAAAAAAAAAQH/////AQAAABVgiQoCAAAAAAAXAAAAU3Vic2Ny" + - "aXB0aW9uRGlhZ25vc3RpY3MBAPAxAC8BAHwI8DEAAAEAagP/////AQH/////HwAAABVgiQoCAAAAAAAJ" + - "AAAAU2Vzc2lvbklkAQDxMQAvAD/xMQAAABH/////AQH/////AAAAABVgiQoCAAAAAAAOAAAAU3Vic2Ny" + - "aXB0aW9uSWQBAPIxAC8AP/IxAAAAB/////8BAf////8AAAAAFWCJCgIAAAAAAAgAAABQcmlvcml0eQEA" + - "8zEALwA/8zEAAAAD/////wEB/////wAAAAAVYIkKAgAAAAAAEgAAAFB1Ymxpc2hpbmdJbnRlcnZhbAEA" + - "9DEALwA/9DEAAAEAIgH/////AQH/////AAAAABVgiQoCAAAAAAARAAAATWF4S2VlcEFsaXZlQ291bnQB" + - "APUxAC8AP/UxAAAAB/////8BAf////8AAAAAFWCJCgIAAAAAABAAAABNYXhMaWZldGltZUNvdW50AQD2" + - "MQAvAD/2MQAAAAf/////AQH/////AAAAABVgiQoCAAAAAAAaAAAATWF4Tm90aWZpY2F0aW9uc1BlclB1" + - "Ymxpc2gBAPcxAC8AP/cxAAAAB/////8BAf////8AAAAAFWCJCgIAAAAAABEAAABQdWJsaXNoaW5nRW5h" + - "YmxlZAEA+DEALwA/+DEAAAAB/////wEB/////wAAAAAVYIkKAgAAAAAACwAAAE1vZGlmeUNvdW50AQD5" + - "MQAvAD/5MQAAAAf/////AQH/////AAAAABVgiQoCAAAAAAALAAAARW5hYmxlQ291bnQBAPoxAC8AP/ox" + - "AAAAB/////8BAf////8AAAAAFWCJCgIAAAAAAAwAAABEaXNhYmxlQ291bnQBAPsxAC8AP/sxAAAAB///" + - "//8BAf////8AAAAAFWCJCgIAAAAAABUAAABSZXB1Ymxpc2hSZXF1ZXN0Q291bnQBAPwxAC8AP/wxAAAA" + - "B/////8BAf////8AAAAAFWCJCgIAAAAAABwAAABSZXB1Ymxpc2hNZXNzYWdlUmVxdWVzdENvdW50AQD9" + - "MQAvAD/9MQAAAAf/////AQH/////AAAAABVgiQoCAAAAAAAVAAAAUmVwdWJsaXNoTWVzc2FnZUNvdW50" + - "AQD+MQAvAD/+MQAAAAf/////AQH/////AAAAABVgiQoCAAAAAAAUAAAAVHJhbnNmZXJSZXF1ZXN0Q291" + - "bnQBAP8xAC8AP/8xAAAAB/////8BAf////8AAAAAFWCJCgIAAAAAABsAAABUcmFuc2ZlcnJlZFRvQWx0" + - "Q2xpZW50Q291bnQBAAAyAC8APwAyAAAAB/////8BAf////8AAAAAFWCJCgIAAAAAABwAAABUcmFuc2Zl" + - "cnJlZFRvU2FtZUNsaWVudENvdW50AQABMgAvAD8BMgAAAAf/////AQH/////AAAAABVgiQoCAAAAAAAT" + - "AAAAUHVibGlzaFJlcXVlc3RDb3VudAEAAjIALwA/AjIAAAAH/////wEB/////wAAAAAVYIkKAgAAAAAA" + - "HAAAAERhdGFDaGFuZ2VOb3RpZmljYXRpb25zQ291bnQBAAMyAC8APwMyAAAAB/////8BAf////8AAAAA" + - "FWCJCgIAAAAAABcAAABFdmVudE5vdGlmaWNhdGlvbnNDb3VudAEABDIALwA/BDIAAAAH/////wEB////" + - "/wAAAAAVYIkKAgAAAAAAEgAAAE5vdGlmaWNhdGlvbnNDb3VudAEABTIALwA/BTIAAAAH/////wEB////" + - "/wAAAAAVYIkKAgAAAAAAFwAAAExhdGVQdWJsaXNoUmVxdWVzdENvdW50AQAGMgAvAD8GMgAAAAf/////" + - "AQH/////AAAAABVgiQoCAAAAAAAVAAAAQ3VycmVudEtlZXBBbGl2ZUNvdW50AQAHMgAvAD8HMgAAAAf/" + - "////AQH/////AAAAABVgiQoCAAAAAAAUAAAAQ3VycmVudExpZmV0aW1lQ291bnQBAAgyAC8APwgyAAAA" + - "B/////8BAf////8AAAAAFWCJCgIAAAAAABoAAABVbmFja25vd2xlZGdlZE1lc3NhZ2VDb3VudAEACTIA" + - "LwA/CTIAAAAH/////wEB/////wAAAAAVYIkKAgAAAAAAFQAAAERpc2NhcmRlZE1lc3NhZ2VDb3VudAEA" + - "CjIALwA/CjIAAAAH/////wEB/////wAAAAAVYIkKAgAAAAAAEgAAAE1vbml0b3JlZEl0ZW1Db3VudAEA" + - "CzIALwA/CzIAAAAH/////wEB/////wAAAAAVYIkKAgAAAAAAGgAAAERpc2FibGVkTW9uaXRvcmVkSXRl" + - "bUNvdW50AQAMMgAvAD8MMgAAAAf/////AQH/////AAAAABVgiQoCAAAAAAAcAAAATW9uaXRvcmluZ1F1" + - "ZXVlT3ZlcmZsb3dDb3VudAEADTIALwA/DTIAAAAH/////wEB/////wAAAAAVYIkKAgAAAAAAEgAAAE5l" + - "eHRTZXF1ZW5jZU51bWJlcgEADjIALwA/DjIAAAAH/////wEB/////wAAAAAVYIkKAgAAAAAAFwAAAEV2" + - "ZW50UXVldWVPdmVyZmxvd0NvdW50AQAPMgAvAD8PMgAAAAf/////AQH/////AAAAAA=="; + "Y2UBAHsIAQB7CHsIAAABAGoDAQAAAAEAAAAAAAAAAQH/////AAAAAA=="; #endregion #endif #endregion @@ -15150,7 +15807,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class SubscriptionDiagnosticsState : BaseDataVariableState + public partial class SubscriptionDiagnosticsState : BaseDataVariableState { #region Constructors /// @@ -16736,7 +17393,7 @@ public SubscriptionDiagnosticsState Variable /// public SubscriptionDiagnosticsDataType Value { - get { return m_value; } + get { return m_value; } set { m_value = value; } } #endregion @@ -16751,132 +17408,222 @@ private void Initialize(SubscriptionDiagnosticsState variable) variable.Value = m_value; variable.OnReadValue = OnReadValue; - variable.OnSimpleWriteValue = OnWriteValue; + variable.OnWriteValue = OnWriteValue; BaseVariableState instance = null; List updateList = new List(); updateList.Add(variable); instance = m_variable.SessionId; - instance.OnReadValue = OnRead_SessionId; - instance.OnSimpleWriteValue = OnWrite_SessionId; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SessionId; + instance.OnWriteValue = OnWrite_SessionId; + updateList.Add(instance); + } instance = m_variable.SubscriptionId; - instance.OnReadValue = OnRead_SubscriptionId; - instance.OnSimpleWriteValue = OnWrite_SubscriptionId; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SubscriptionId; + instance.OnWriteValue = OnWrite_SubscriptionId; + updateList.Add(instance); + } instance = m_variable.Priority; - instance.OnReadValue = OnRead_Priority; - instance.OnSimpleWriteValue = OnWrite_Priority; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_Priority; + instance.OnWriteValue = OnWrite_Priority; + updateList.Add(instance); + } instance = m_variable.PublishingInterval; - instance.OnReadValue = OnRead_PublishingInterval; - instance.OnSimpleWriteValue = OnWrite_PublishingInterval; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_PublishingInterval; + instance.OnWriteValue = OnWrite_PublishingInterval; + updateList.Add(instance); + } instance = m_variable.MaxKeepAliveCount; - instance.OnReadValue = OnRead_MaxKeepAliveCount; - instance.OnSimpleWriteValue = OnWrite_MaxKeepAliveCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_MaxKeepAliveCount; + instance.OnWriteValue = OnWrite_MaxKeepAliveCount; + updateList.Add(instance); + } instance = m_variable.MaxLifetimeCount; - instance.OnReadValue = OnRead_MaxLifetimeCount; - instance.OnSimpleWriteValue = OnWrite_MaxLifetimeCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_MaxLifetimeCount; + instance.OnWriteValue = OnWrite_MaxLifetimeCount; + updateList.Add(instance); + } instance = m_variable.MaxNotificationsPerPublish; - instance.OnReadValue = OnRead_MaxNotificationsPerPublish; - instance.OnSimpleWriteValue = OnWrite_MaxNotificationsPerPublish; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_MaxNotificationsPerPublish; + instance.OnWriteValue = OnWrite_MaxNotificationsPerPublish; + updateList.Add(instance); + } instance = m_variable.PublishingEnabled; - instance.OnReadValue = OnRead_PublishingEnabled; - instance.OnSimpleWriteValue = OnWrite_PublishingEnabled; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_PublishingEnabled; + instance.OnWriteValue = OnWrite_PublishingEnabled; + updateList.Add(instance); + } instance = m_variable.ModifyCount; - instance.OnReadValue = OnRead_ModifyCount; - instance.OnSimpleWriteValue = OnWrite_ModifyCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ModifyCount; + instance.OnWriteValue = OnWrite_ModifyCount; + updateList.Add(instance); + } instance = m_variable.EnableCount; - instance.OnReadValue = OnRead_EnableCount; - instance.OnSimpleWriteValue = OnWrite_EnableCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_EnableCount; + instance.OnWriteValue = OnWrite_EnableCount; + updateList.Add(instance); + } instance = m_variable.DisableCount; - instance.OnReadValue = OnRead_DisableCount; - instance.OnSimpleWriteValue = OnWrite_DisableCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_DisableCount; + instance.OnWriteValue = OnWrite_DisableCount; + updateList.Add(instance); + } instance = m_variable.RepublishRequestCount; - instance.OnReadValue = OnRead_RepublishRequestCount; - instance.OnSimpleWriteValue = OnWrite_RepublishRequestCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_RepublishRequestCount; + instance.OnWriteValue = OnWrite_RepublishRequestCount; + updateList.Add(instance); + } instance = m_variable.RepublishMessageRequestCount; - instance.OnReadValue = OnRead_RepublishMessageRequestCount; - instance.OnSimpleWriteValue = OnWrite_RepublishMessageRequestCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_RepublishMessageRequestCount; + instance.OnWriteValue = OnWrite_RepublishMessageRequestCount; + updateList.Add(instance); + } instance = m_variable.RepublishMessageCount; - instance.OnReadValue = OnRead_RepublishMessageCount; - instance.OnSimpleWriteValue = OnWrite_RepublishMessageCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_RepublishMessageCount; + instance.OnWriteValue = OnWrite_RepublishMessageCount; + updateList.Add(instance); + } instance = m_variable.TransferRequestCount; - instance.OnReadValue = OnRead_TransferRequestCount; - instance.OnSimpleWriteValue = OnWrite_TransferRequestCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_TransferRequestCount; + instance.OnWriteValue = OnWrite_TransferRequestCount; + updateList.Add(instance); + } instance = m_variable.TransferredToAltClientCount; - instance.OnReadValue = OnRead_TransferredToAltClientCount; - instance.OnSimpleWriteValue = OnWrite_TransferredToAltClientCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_TransferredToAltClientCount; + instance.OnWriteValue = OnWrite_TransferredToAltClientCount; + updateList.Add(instance); + } instance = m_variable.TransferredToSameClientCount; - instance.OnReadValue = OnRead_TransferredToSameClientCount; - instance.OnSimpleWriteValue = OnWrite_TransferredToSameClientCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_TransferredToSameClientCount; + instance.OnWriteValue = OnWrite_TransferredToSameClientCount; + updateList.Add(instance); + } instance = m_variable.PublishRequestCount; - instance.OnReadValue = OnRead_PublishRequestCount; - instance.OnSimpleWriteValue = OnWrite_PublishRequestCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_PublishRequestCount; + instance.OnWriteValue = OnWrite_PublishRequestCount; + updateList.Add(instance); + } instance = m_variable.DataChangeNotificationsCount; - instance.OnReadValue = OnRead_DataChangeNotificationsCount; - instance.OnSimpleWriteValue = OnWrite_DataChangeNotificationsCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_DataChangeNotificationsCount; + instance.OnWriteValue = OnWrite_DataChangeNotificationsCount; + updateList.Add(instance); + } instance = m_variable.EventNotificationsCount; - instance.OnReadValue = OnRead_EventNotificationsCount; - instance.OnSimpleWriteValue = OnWrite_EventNotificationsCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_EventNotificationsCount; + instance.OnWriteValue = OnWrite_EventNotificationsCount; + updateList.Add(instance); + } instance = m_variable.NotificationsCount; - instance.OnReadValue = OnRead_NotificationsCount; - instance.OnSimpleWriteValue = OnWrite_NotificationsCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_NotificationsCount; + instance.OnWriteValue = OnWrite_NotificationsCount; + updateList.Add(instance); + } instance = m_variable.LatePublishRequestCount; - instance.OnReadValue = OnRead_LatePublishRequestCount; - instance.OnSimpleWriteValue = OnWrite_LatePublishRequestCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LatePublishRequestCount; + instance.OnWriteValue = OnWrite_LatePublishRequestCount; + updateList.Add(instance); + } instance = m_variable.CurrentKeepAliveCount; - instance.OnReadValue = OnRead_CurrentKeepAliveCount; - instance.OnSimpleWriteValue = OnWrite_CurrentKeepAliveCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CurrentKeepAliveCount; + instance.OnWriteValue = OnWrite_CurrentKeepAliveCount; + updateList.Add(instance); + } instance = m_variable.CurrentLifetimeCount; - instance.OnReadValue = OnRead_CurrentLifetimeCount; - instance.OnSimpleWriteValue = OnWrite_CurrentLifetimeCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CurrentLifetimeCount; + instance.OnWriteValue = OnWrite_CurrentLifetimeCount; + updateList.Add(instance); + } instance = m_variable.UnacknowledgedMessageCount; - instance.OnReadValue = OnRead_UnacknowledgedMessageCount; - instance.OnSimpleWriteValue = OnWrite_UnacknowledgedMessageCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_UnacknowledgedMessageCount; + instance.OnWriteValue = OnWrite_UnacknowledgedMessageCount; + updateList.Add(instance); + } instance = m_variable.DiscardedMessageCount; - instance.OnReadValue = OnRead_DiscardedMessageCount; - instance.OnSimpleWriteValue = OnWrite_DiscardedMessageCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_DiscardedMessageCount; + instance.OnWriteValue = OnWrite_DiscardedMessageCount; + updateList.Add(instance); + } instance = m_variable.MonitoredItemCount; - instance.OnReadValue = OnRead_MonitoredItemCount; - instance.OnSimpleWriteValue = OnWrite_MonitoredItemCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_MonitoredItemCount; + instance.OnWriteValue = OnWrite_MonitoredItemCount; + updateList.Add(instance); + } instance = m_variable.DisabledMonitoredItemCount; - instance.OnReadValue = OnRead_DisabledMonitoredItemCount; - instance.OnSimpleWriteValue = OnWrite_DisabledMonitoredItemCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_DisabledMonitoredItemCount; + instance.OnWriteValue = OnWrite_DisabledMonitoredItemCount; + updateList.Add(instance); + } instance = m_variable.MonitoringQueueOverflowCount; - instance.OnReadValue = OnRead_MonitoringQueueOverflowCount; - instance.OnSimpleWriteValue = OnWrite_MonitoringQueueOverflowCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_MonitoringQueueOverflowCount; + instance.OnWriteValue = OnWrite_MonitoringQueueOverflowCount; + updateList.Add(instance); + } instance = m_variable.NextSequenceNumber; - instance.OnReadValue = OnRead_NextSequenceNumber; - instance.OnSimpleWriteValue = OnWrite_NextSequenceNumber; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_NextSequenceNumber; + instance.OnWriteValue = OnWrite_NextSequenceNumber; + updateList.Add(instance); + } SetUpdateList(updateList); } @@ -16905,16 +17652,91 @@ protected ServiceResult OnReadValue( } } - private ServiceResult OnWriteValue(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWriteValue( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { - m_value = (SubscriptionDiagnosticsDataType)Write(value); + SubscriptionDiagnosticsDataType newValue; + if (value is ExtensionObject extensionObject) + { + newValue = (SubscriptionDiagnosticsDataType)extensionObject.Body; + } + else + { + newValue = (SubscriptionDiagnosticsDataType)value; + } + + if (!Utils.IsEqual(m_value, newValue)) + { + UpdateChildrenChangeMasks(context, ref newValue, ref statusCode, ref timestamp); + Timestamp = timestamp; + m_value = (SubscriptionDiagnosticsDataType)Write(newValue); + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + } } return ServiceResult.Good; } + private void UpdateChildrenChangeMasks(ISystemContext context, ref SubscriptionDiagnosticsDataType newValue, ref StatusCode statusCode, ref DateTime timestamp) + { + if (!Utils.IsEqual(m_value.SessionId, newValue.SessionId)) UpdateChildVariableStatus(m_variable.SessionId, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.SubscriptionId, newValue.SubscriptionId)) UpdateChildVariableStatus(m_variable.SubscriptionId, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.Priority, newValue.Priority)) UpdateChildVariableStatus(m_variable.Priority, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.PublishingInterval, newValue.PublishingInterval)) UpdateChildVariableStatus(m_variable.PublishingInterval, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.MaxKeepAliveCount, newValue.MaxKeepAliveCount)) UpdateChildVariableStatus(m_variable.MaxKeepAliveCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.MaxLifetimeCount, newValue.MaxLifetimeCount)) UpdateChildVariableStatus(m_variable.MaxLifetimeCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.MaxNotificationsPerPublish, newValue.MaxNotificationsPerPublish)) UpdateChildVariableStatus(m_variable.MaxNotificationsPerPublish, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.PublishingEnabled, newValue.PublishingEnabled)) UpdateChildVariableStatus(m_variable.PublishingEnabled, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.ModifyCount, newValue.ModifyCount)) UpdateChildVariableStatus(m_variable.ModifyCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.EnableCount, newValue.EnableCount)) UpdateChildVariableStatus(m_variable.EnableCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.DisableCount, newValue.DisableCount)) UpdateChildVariableStatus(m_variable.DisableCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.RepublishRequestCount, newValue.RepublishRequestCount)) UpdateChildVariableStatus(m_variable.RepublishRequestCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.RepublishMessageRequestCount, newValue.RepublishMessageRequestCount)) UpdateChildVariableStatus(m_variable.RepublishMessageRequestCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.RepublishMessageCount, newValue.RepublishMessageCount)) UpdateChildVariableStatus(m_variable.RepublishMessageCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.TransferRequestCount, newValue.TransferRequestCount)) UpdateChildVariableStatus(m_variable.TransferRequestCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.TransferredToAltClientCount, newValue.TransferredToAltClientCount)) UpdateChildVariableStatus(m_variable.TransferredToAltClientCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.TransferredToSameClientCount, newValue.TransferredToSameClientCount)) UpdateChildVariableStatus(m_variable.TransferredToSameClientCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.PublishRequestCount, newValue.PublishRequestCount)) UpdateChildVariableStatus(m_variable.PublishRequestCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.DataChangeNotificationsCount, newValue.DataChangeNotificationsCount)) UpdateChildVariableStatus(m_variable.DataChangeNotificationsCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.EventNotificationsCount, newValue.EventNotificationsCount)) UpdateChildVariableStatus(m_variable.EventNotificationsCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.NotificationsCount, newValue.NotificationsCount)) UpdateChildVariableStatus(m_variable.NotificationsCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LatePublishRequestCount, newValue.LatePublishRequestCount)) UpdateChildVariableStatus(m_variable.LatePublishRequestCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.CurrentKeepAliveCount, newValue.CurrentKeepAliveCount)) UpdateChildVariableStatus(m_variable.CurrentKeepAliveCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.CurrentLifetimeCount, newValue.CurrentLifetimeCount)) UpdateChildVariableStatus(m_variable.CurrentLifetimeCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.UnacknowledgedMessageCount, newValue.UnacknowledgedMessageCount)) UpdateChildVariableStatus(m_variable.UnacknowledgedMessageCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.DiscardedMessageCount, newValue.DiscardedMessageCount)) UpdateChildVariableStatus(m_variable.DiscardedMessageCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.MonitoredItemCount, newValue.MonitoredItemCount)) UpdateChildVariableStatus(m_variable.MonitoredItemCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.DisabledMonitoredItemCount, newValue.DisabledMonitoredItemCount)) UpdateChildVariableStatus(m_variable.DisabledMonitoredItemCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.MonitoringQueueOverflowCount, newValue.MonitoringQueueOverflowCount)) UpdateChildVariableStatus(m_variable.MonitoringQueueOverflowCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.NextSequenceNumber, newValue.NextSequenceNumber)) UpdateChildVariableStatus(m_variable.NextSequenceNumber, ref statusCode, ref timestamp); + } + + private void UpdateParent(ISystemContext context, ref StatusCode statusCode, ref DateTime timestamp) + { + Timestamp = timestamp; + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + m_variable.ClearChangeMasks(context, false); + } + + private void UpdateChildVariableStatus(BaseVariableState child, ref StatusCode statusCode, ref DateTime timestamp) + { + if (child == null) return; + child.StatusCode = statusCode; + if (timestamp == DateTime.MinValue) + { + timestamp = DateTime.UtcNow; + } + child.Timestamp = timestamp; + } + #region SessionId Access Methods /// private ServiceResult OnRead_SessionId( @@ -16930,21 +17752,50 @@ private ServiceResult OnRead_SessionId( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SessionId; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SessionId; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SessionId(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SessionId( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SessionId, ref statusCode, ref timestamp); m_value.SessionId = (NodeId)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -16966,21 +17817,50 @@ private ServiceResult OnRead_SubscriptionId( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SubscriptionId; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SubscriptionId; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SubscriptionId(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SubscriptionId( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SubscriptionId, ref statusCode, ref timestamp); m_value.SubscriptionId = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17002,21 +17882,50 @@ private ServiceResult OnRead_Priority( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.Priority; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.Priority; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_Priority(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_Priority( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.Priority, ref statusCode, ref timestamp); m_value.Priority = (byte)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17038,21 +17947,50 @@ private ServiceResult OnRead_PublishingInterval( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.PublishingInterval; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.PublishingInterval; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_PublishingInterval(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_PublishingInterval( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.PublishingInterval, ref statusCode, ref timestamp); m_value.PublishingInterval = (double)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17074,21 +18012,50 @@ private ServiceResult OnRead_MaxKeepAliveCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.MaxKeepAliveCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.MaxKeepAliveCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_MaxKeepAliveCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_MaxKeepAliveCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.MaxKeepAliveCount, ref statusCode, ref timestamp); m_value.MaxKeepAliveCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17110,21 +18077,50 @@ private ServiceResult OnRead_MaxLifetimeCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.MaxLifetimeCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.MaxLifetimeCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_MaxLifetimeCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_MaxLifetimeCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.MaxLifetimeCount, ref statusCode, ref timestamp); m_value.MaxLifetimeCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17146,21 +18142,50 @@ private ServiceResult OnRead_MaxNotificationsPerPublish( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.MaxNotificationsPerPublish; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.MaxNotificationsPerPublish; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_MaxNotificationsPerPublish(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_MaxNotificationsPerPublish( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.MaxNotificationsPerPublish, ref statusCode, ref timestamp); m_value.MaxNotificationsPerPublish = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17182,21 +18207,50 @@ private ServiceResult OnRead_PublishingEnabled( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.PublishingEnabled; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.PublishingEnabled; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_PublishingEnabled(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_PublishingEnabled( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.PublishingEnabled, ref statusCode, ref timestamp); m_value.PublishingEnabled = (bool)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17218,21 +18272,50 @@ private ServiceResult OnRead_ModifyCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ModifyCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ModifyCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ModifyCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ModifyCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ModifyCount, ref statusCode, ref timestamp); m_value.ModifyCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17254,21 +18337,50 @@ private ServiceResult OnRead_EnableCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.EnableCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.EnableCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_EnableCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_EnableCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.EnableCount, ref statusCode, ref timestamp); m_value.EnableCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17290,21 +18402,50 @@ private ServiceResult OnRead_DisableCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.DisableCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.DisableCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_DisableCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_DisableCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.DisableCount, ref statusCode, ref timestamp); m_value.DisableCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17326,21 +18467,50 @@ private ServiceResult OnRead_RepublishRequestCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.RepublishRequestCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.RepublishRequestCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_RepublishRequestCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_RepublishRequestCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.RepublishRequestCount, ref statusCode, ref timestamp); m_value.RepublishRequestCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17362,21 +18532,50 @@ private ServiceResult OnRead_RepublishMessageRequestCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.RepublishMessageRequestCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.RepublishMessageRequestCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_RepublishMessageRequestCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_RepublishMessageRequestCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.RepublishMessageRequestCount, ref statusCode, ref timestamp); m_value.RepublishMessageRequestCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17398,21 +18597,50 @@ private ServiceResult OnRead_RepublishMessageCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.RepublishMessageCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.RepublishMessageCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_RepublishMessageCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_RepublishMessageCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.RepublishMessageCount, ref statusCode, ref timestamp); m_value.RepublishMessageCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17434,21 +18662,50 @@ private ServiceResult OnRead_TransferRequestCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.TransferRequestCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.TransferRequestCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_TransferRequestCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_TransferRequestCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.TransferRequestCount, ref statusCode, ref timestamp); m_value.TransferRequestCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17470,21 +18727,50 @@ private ServiceResult OnRead_TransferredToAltClientCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.TransferredToAltClientCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.TransferredToAltClientCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_TransferredToAltClientCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_TransferredToAltClientCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.TransferredToAltClientCount, ref statusCode, ref timestamp); m_value.TransferredToAltClientCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17506,21 +18792,50 @@ private ServiceResult OnRead_TransferredToSameClientCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.TransferredToSameClientCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.TransferredToSameClientCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_TransferredToSameClientCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_TransferredToSameClientCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.TransferredToSameClientCount, ref statusCode, ref timestamp); m_value.TransferredToSameClientCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17542,21 +18857,50 @@ private ServiceResult OnRead_PublishRequestCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.PublishRequestCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.PublishRequestCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_PublishRequestCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_PublishRequestCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.PublishRequestCount, ref statusCode, ref timestamp); m_value.PublishRequestCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17578,21 +18922,50 @@ private ServiceResult OnRead_DataChangeNotificationsCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.DataChangeNotificationsCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.DataChangeNotificationsCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_DataChangeNotificationsCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_DataChangeNotificationsCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.DataChangeNotificationsCount, ref statusCode, ref timestamp); m_value.DataChangeNotificationsCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17614,21 +18987,50 @@ private ServiceResult OnRead_EventNotificationsCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.EventNotificationsCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.EventNotificationsCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_EventNotificationsCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_EventNotificationsCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.EventNotificationsCount, ref statusCode, ref timestamp); m_value.EventNotificationsCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17650,21 +19052,50 @@ private ServiceResult OnRead_NotificationsCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.NotificationsCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.NotificationsCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_NotificationsCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_NotificationsCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.NotificationsCount, ref statusCode, ref timestamp); m_value.NotificationsCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17686,21 +19117,50 @@ private ServiceResult OnRead_LatePublishRequestCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LatePublishRequestCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LatePublishRequestCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LatePublishRequestCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LatePublishRequestCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LatePublishRequestCount, ref statusCode, ref timestamp); m_value.LatePublishRequestCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17722,21 +19182,50 @@ private ServiceResult OnRead_CurrentKeepAliveCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CurrentKeepAliveCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CurrentKeepAliveCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CurrentKeepAliveCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CurrentKeepAliveCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CurrentKeepAliveCount, ref statusCode, ref timestamp); m_value.CurrentKeepAliveCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17758,21 +19247,50 @@ private ServiceResult OnRead_CurrentLifetimeCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CurrentLifetimeCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CurrentLifetimeCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CurrentLifetimeCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CurrentLifetimeCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CurrentLifetimeCount, ref statusCode, ref timestamp); m_value.CurrentLifetimeCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17794,21 +19312,50 @@ private ServiceResult OnRead_UnacknowledgedMessageCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.UnacknowledgedMessageCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.UnacknowledgedMessageCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_UnacknowledgedMessageCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_UnacknowledgedMessageCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.UnacknowledgedMessageCount, ref statusCode, ref timestamp); m_value.UnacknowledgedMessageCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17830,21 +19377,50 @@ private ServiceResult OnRead_DiscardedMessageCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.DiscardedMessageCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.DiscardedMessageCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_DiscardedMessageCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_DiscardedMessageCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.DiscardedMessageCount, ref statusCode, ref timestamp); m_value.DiscardedMessageCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17866,21 +19442,50 @@ private ServiceResult OnRead_MonitoredItemCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.MonitoredItemCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.MonitoredItemCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_MonitoredItemCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_MonitoredItemCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.MonitoredItemCount, ref statusCode, ref timestamp); m_value.MonitoredItemCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17902,21 +19507,50 @@ private ServiceResult OnRead_DisabledMonitoredItemCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.DisabledMonitoredItemCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.DisabledMonitoredItemCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_DisabledMonitoredItemCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_DisabledMonitoredItemCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.DisabledMonitoredItemCount, ref statusCode, ref timestamp); m_value.DisabledMonitoredItemCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17938,21 +19572,50 @@ private ServiceResult OnRead_MonitoringQueueOverflowCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.MonitoringQueueOverflowCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.MonitoringQueueOverflowCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_MonitoringQueueOverflowCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_MonitoringQueueOverflowCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.MonitoringQueueOverflowCount, ref statusCode, ref timestamp); m_value.MonitoringQueueOverflowCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -17974,21 +19637,50 @@ private ServiceResult OnRead_NextSequenceNumber( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.NextSequenceNumber; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.NextSequenceNumber; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_NextSequenceNumber(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_NextSequenceNumber( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.NextSequenceNumber, ref statusCode, ref timestamp); m_value.NextSequenceNumber = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -18010,7 +19702,7 @@ private ServiceResult OnWrite_NextSequenceNumber(ISystemContext context, NodeSta /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class SessionDiagnosticsArrayState : BaseDataVariableState + public partial class SessionDiagnosticsArrayState : BaseDataVariableState { #region Constructors /// @@ -18061,53 +19753,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8XYIkCAgAAAAAAIwAAAFNlc3Npb25EaWFnbm9zdGljc0FycmF5VHlwZUluc3RhbmNlAQCU" + - "CAEAlAiUCAAAAQBhAwEAAAABAAAAAAAAAAEB/////wEAAAAVYIkKAgAAAAAAEgAAAFNlc3Npb25EaWFn" + - "bm9zdGljcwEAEDIALwEAlQgQMgAAAQBhA/////8BAf////8rAAAAFWCJCgIAAAAAAAkAAABTZXNzaW9u" + - "SWQBABEyAC8APxEyAAAAEf////8BAf////8AAAAAFWCJCgIAAAAAAAsAAABTZXNzaW9uTmFtZQEAEjIA" + - "LwA/EjIAAAAM/////wEB/////wAAAAAVYIkKAgAAAAAAEQAAAENsaWVudERlc2NyaXB0aW9uAQATMgAv" + - "AD8TMgAAAQA0Af////8BAf////8AAAAAFWCJCgIAAAAAAAkAAABTZXJ2ZXJVcmkBABQyAC8APxQyAAAA" + - "DP////8BAf////8AAAAAFWCJCgIAAAAAAAsAAABFbmRwb2ludFVybAEAFTIALwA/FTIAAAAM/////wEB" + - "/////wAAAAAXYIkKAgAAAAAACQAAAExvY2FsZUlkcwEAFjIALwA/FjIAAAEAJwEBAAAAAQAAAAAAAAAB" + - "Af////8AAAAAFWCJCgIAAAAAABQAAABBY3R1YWxTZXNzaW9uVGltZW91dAEAFzIALwA/FzIAAAEAIgH/" + - "////AQH/////AAAAABVgiQoCAAAAAAAWAAAATWF4UmVzcG9uc2VNZXNzYWdlU2l6ZQEAGDIALwA/GDIA" + - "AAAH/////wEB/////wAAAAAVYIkKAgAAAAAAFAAAAENsaWVudENvbm5lY3Rpb25UaW1lAQAZMgAvAD8Z" + - "MgAAAQAmAf////8BAf////8AAAAAFWCJCgIAAAAAABUAAABDbGllbnRMYXN0Q29udGFjdFRpbWUBABoy" + - "AC8APxoyAAABACYB/////wEB/////wAAAAAVYIkKAgAAAAAAGQAAAEN1cnJlbnRTdWJzY3JpcHRpb25z" + - "Q291bnQBABsyAC8APxsyAAAAB/////8BAf////8AAAAAFWCJCgIAAAAAABoAAABDdXJyZW50TW9uaXRv" + - "cmVkSXRlbXNDb3VudAEAHDIALwA/HDIAAAAH/////wEB/////wAAAAAVYIkKAgAAAAAAHQAAAEN1cnJl" + - "bnRQdWJsaXNoUmVxdWVzdHNJblF1ZXVlAQAdMgAvAD8dMgAAAAf/////AQH/////AAAAABVgiQoCAAAA" + - "AAARAAAAVG90YWxSZXF1ZXN0Q291bnQBAB4yAC8APx4yAAABAGcD/////wEB/////wAAAAAVYIkKAgAA" + - "AAAAGAAAAFVuYXV0aG9yaXplZFJlcXVlc3RDb3VudAEAHzIALwA/HzIAAAAH/////wEB/////wAAAAAV" + - "YIkKAgAAAAAACQAAAFJlYWRDb3VudAEAIDIALwA/IDIAAAEAZwP/////AQH/////AAAAABVgiQoCAAAA" + - "AAAQAAAASGlzdG9yeVJlYWRDb3VudAEAITIALwA/ITIAAAEAZwP/////AQH/////AAAAABVgiQoCAAAA" + - "AAAKAAAAV3JpdGVDb3VudAEAIjIALwA/IjIAAAEAZwP/////AQH/////AAAAABVgiQoCAAAAAAASAAAA" + - "SGlzdG9yeVVwZGF0ZUNvdW50AQAjMgAvAD8jMgAAAQBnA/////8BAf////8AAAAAFWCJCgIAAAAAAAkA" + - "AABDYWxsQ291bnQBACQyAC8APyQyAAABAGcD/////wEB/////wAAAAAVYIkKAgAAAAAAGQAAAENyZWF0" + - "ZU1vbml0b3JlZEl0ZW1zQ291bnQBACUyAC8APyUyAAABAGcD/////wEB/////wAAAAAVYIkKAgAAAAAA" + - "GQAAAE1vZGlmeU1vbml0b3JlZEl0ZW1zQ291bnQBACYyAC8APyYyAAABAGcD/////wEB/////wAAAAAV" + - "YIkKAgAAAAAAFgAAAFNldE1vbml0b3JpbmdNb2RlQ291bnQBACcyAC8APycyAAABAGcD/////wEB////" + - "/wAAAAAVYIkKAgAAAAAAEgAAAFNldFRyaWdnZXJpbmdDb3VudAEAKDIALwA/KDIAAAEAZwP/////AQH/" + - "////AAAAABVgiQoCAAAAAAAZAAAARGVsZXRlTW9uaXRvcmVkSXRlbXNDb3VudAEAKTIALwA/KTIAAAEA" + - "ZwP/////AQH/////AAAAABVgiQoCAAAAAAAXAAAAQ3JlYXRlU3Vic2NyaXB0aW9uQ291bnQBACoyAC8A" + - "PyoyAAABAGcD/////wEB/////wAAAAAVYIkKAgAAAAAAFwAAAE1vZGlmeVN1YnNjcmlwdGlvbkNvdW50" + - "AQArMgAvAD8rMgAAAQBnA/////8BAf////8AAAAAFWCJCgIAAAAAABYAAABTZXRQdWJsaXNoaW5nTW9k" + - "ZUNvdW50AQAsMgAvAD8sMgAAAQBnA/////8BAf////8AAAAAFWCJCgIAAAAAAAwAAABQdWJsaXNoQ291" + - "bnQBAC0yAC8APy0yAAABAGcD/////wEB/////wAAAAAVYIkKAgAAAAAADgAAAFJlcHVibGlzaENvdW50" + - "AQAuMgAvAD8uMgAAAQBnA/////8BAf////8AAAAAFWCJCgIAAAAAABoAAABUcmFuc2ZlclN1YnNjcmlw" + - "dGlvbnNDb3VudAEALzIALwA/LzIAAAEAZwP/////AQH/////AAAAABVgiQoCAAAAAAAYAAAARGVsZXRl" + - "U3Vic2NyaXB0aW9uc0NvdW50AQAwMgAvAD8wMgAAAQBnA/////8BAf////8AAAAAFWCJCgIAAAAAAA0A" + - "AABBZGROb2Rlc0NvdW50AQAxMgAvAD8xMgAAAQBnA/////8BAf////8AAAAAFWCJCgIAAAAAABIAAABB" + - "ZGRSZWZlcmVuY2VzQ291bnQBADIyAC8APzIyAAABAGcD/////wEB/////wAAAAAVYIkKAgAAAAAAEAAA" + - "AERlbGV0ZU5vZGVzQ291bnQBADMyAC8APzMyAAABAGcD/////wEB/////wAAAAAVYIkKAgAAAAAAFQAA" + - "AERlbGV0ZVJlZmVyZW5jZXNDb3VudAEANDIALwA/NDIAAAEAZwP/////AQH/////AAAAABVgiQoCAAAA" + - "AAALAAAAQnJvd3NlQ291bnQBADUyAC8APzUyAAABAGcD/////wEB/////wAAAAAVYIkKAgAAAAAADwAA" + - "AEJyb3dzZU5leHRDb3VudAEANjIALwA/NjIAAAEAZwP/////AQH/////AAAAABVgiQoCAAAAAAAiAAAA" + - "VHJhbnNsYXRlQnJvd3NlUGF0aHNUb05vZGVJZHNDb3VudAEANzIALwA/NzIAAAEAZwP/////AQH/////" + - "AAAAABVgiQoCAAAAAAAPAAAAUXVlcnlGaXJzdENvdW50AQA4MgAvAD84MgAAAQBnA/////8BAf////8A" + - "AAAAFWCJCgIAAAAAAA4AAABRdWVyeU5leHRDb3VudAEAOTIALwA/OTIAAAEAZwP/////AQH/////AAAA" + - "ABVgiQoCAAAAAAASAAAAUmVnaXN0ZXJOb2Rlc0NvdW50AQA6MgAvAD86MgAAAQBnA/////8BAf////8A" + - "AAAAFWCJCgIAAAAAABQAAABVbnJlZ2lzdGVyTm9kZXNDb3VudAEAOzIALwA/OzIAAAEAZwP/////AQH/" + - "////AAAAAA=="; + "CAEAlAiUCAAAAQBhAwEAAAABAAAAAAAAAAEB/////wAAAAA="; #endregion #endif #endregion @@ -18129,7 +19775,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class SessionDiagnosticsVariableState : BaseDataVariableState + public partial class SessionDiagnosticsVariableState : BaseDataVariableState { #region Constructors /// @@ -20279,7 +21925,7 @@ public SessionDiagnosticsVariableState Variable /// public SessionDiagnosticsDataType Value { - get { return m_value; } + get { return m_value; } set { m_value = value; } } #endregion @@ -20294,184 +21940,313 @@ private void Initialize(SessionDiagnosticsVariableState variable) variable.Value = m_value; variable.OnReadValue = OnReadValue; - variable.OnSimpleWriteValue = OnWriteValue; + variable.OnWriteValue = OnWriteValue; BaseVariableState instance = null; List updateList = new List(); updateList.Add(variable); instance = m_variable.SessionId; - instance.OnReadValue = OnRead_SessionId; - instance.OnSimpleWriteValue = OnWrite_SessionId; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SessionId; + instance.OnWriteValue = OnWrite_SessionId; + updateList.Add(instance); + } instance = m_variable.SessionName; - instance.OnReadValue = OnRead_SessionName; - instance.OnSimpleWriteValue = OnWrite_SessionName; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SessionName; + instance.OnWriteValue = OnWrite_SessionName; + updateList.Add(instance); + } instance = m_variable.ClientDescription; - instance.OnReadValue = OnRead_ClientDescription; - instance.OnSimpleWriteValue = OnWrite_ClientDescription; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ClientDescription; + instance.OnWriteValue = OnWrite_ClientDescription; + updateList.Add(instance); + } instance = m_variable.ServerUri; - instance.OnReadValue = OnRead_ServerUri; - instance.OnSimpleWriteValue = OnWrite_ServerUri; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ServerUri; + instance.OnWriteValue = OnWrite_ServerUri; + updateList.Add(instance); + } instance = m_variable.EndpointUrl; - instance.OnReadValue = OnRead_EndpointUrl; - instance.OnSimpleWriteValue = OnWrite_EndpointUrl; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_EndpointUrl; + instance.OnWriteValue = OnWrite_EndpointUrl; + updateList.Add(instance); + } instance = m_variable.LocaleIds; - instance.OnReadValue = OnRead_LocaleIds; - instance.OnSimpleWriteValue = OnWrite_LocaleIds; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LocaleIds; + instance.OnWriteValue = OnWrite_LocaleIds; + updateList.Add(instance); + } instance = m_variable.ActualSessionTimeout; - instance.OnReadValue = OnRead_ActualSessionTimeout; - instance.OnSimpleWriteValue = OnWrite_ActualSessionTimeout; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ActualSessionTimeout; + instance.OnWriteValue = OnWrite_ActualSessionTimeout; + updateList.Add(instance); + } instance = m_variable.MaxResponseMessageSize; - instance.OnReadValue = OnRead_MaxResponseMessageSize; - instance.OnSimpleWriteValue = OnWrite_MaxResponseMessageSize; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_MaxResponseMessageSize; + instance.OnWriteValue = OnWrite_MaxResponseMessageSize; + updateList.Add(instance); + } instance = m_variable.ClientConnectionTime; - instance.OnReadValue = OnRead_ClientConnectionTime; - instance.OnSimpleWriteValue = OnWrite_ClientConnectionTime; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ClientConnectionTime; + instance.OnWriteValue = OnWrite_ClientConnectionTime; + updateList.Add(instance); + } instance = m_variable.ClientLastContactTime; - instance.OnReadValue = OnRead_ClientLastContactTime; - instance.OnSimpleWriteValue = OnWrite_ClientLastContactTime; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ClientLastContactTime; + instance.OnWriteValue = OnWrite_ClientLastContactTime; + updateList.Add(instance); + } instance = m_variable.CurrentSubscriptionsCount; - instance.OnReadValue = OnRead_CurrentSubscriptionsCount; - instance.OnSimpleWriteValue = OnWrite_CurrentSubscriptionsCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CurrentSubscriptionsCount; + instance.OnWriteValue = OnWrite_CurrentSubscriptionsCount; + updateList.Add(instance); + } instance = m_variable.CurrentMonitoredItemsCount; - instance.OnReadValue = OnRead_CurrentMonitoredItemsCount; - instance.OnSimpleWriteValue = OnWrite_CurrentMonitoredItemsCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CurrentMonitoredItemsCount; + instance.OnWriteValue = OnWrite_CurrentMonitoredItemsCount; + updateList.Add(instance); + } instance = m_variable.CurrentPublishRequestsInQueue; - instance.OnReadValue = OnRead_CurrentPublishRequestsInQueue; - instance.OnSimpleWriteValue = OnWrite_CurrentPublishRequestsInQueue; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CurrentPublishRequestsInQueue; + instance.OnWriteValue = OnWrite_CurrentPublishRequestsInQueue; + updateList.Add(instance); + } instance = m_variable.TotalRequestCount; - instance.OnReadValue = OnRead_TotalRequestCount; - instance.OnSimpleWriteValue = OnWrite_TotalRequestCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_TotalRequestCount; + instance.OnWriteValue = OnWrite_TotalRequestCount; + updateList.Add(instance); + } instance = m_variable.UnauthorizedRequestCount; - instance.OnReadValue = OnRead_UnauthorizedRequestCount; - instance.OnSimpleWriteValue = OnWrite_UnauthorizedRequestCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_UnauthorizedRequestCount; + instance.OnWriteValue = OnWrite_UnauthorizedRequestCount; + updateList.Add(instance); + } instance = m_variable.ReadCount; - instance.OnReadValue = OnRead_ReadCount; - instance.OnSimpleWriteValue = OnWrite_ReadCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ReadCount; + instance.OnWriteValue = OnWrite_ReadCount; + updateList.Add(instance); + } instance = m_variable.HistoryReadCount; - instance.OnReadValue = OnRead_HistoryReadCount; - instance.OnSimpleWriteValue = OnWrite_HistoryReadCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_HistoryReadCount; + instance.OnWriteValue = OnWrite_HistoryReadCount; + updateList.Add(instance); + } instance = m_variable.WriteCount; - instance.OnReadValue = OnRead_WriteCount; - instance.OnSimpleWriteValue = OnWrite_WriteCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_WriteCount; + instance.OnWriteValue = OnWrite_WriteCount; + updateList.Add(instance); + } instance = m_variable.HistoryUpdateCount; - instance.OnReadValue = OnRead_HistoryUpdateCount; - instance.OnSimpleWriteValue = OnWrite_HistoryUpdateCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_HistoryUpdateCount; + instance.OnWriteValue = OnWrite_HistoryUpdateCount; + updateList.Add(instance); + } instance = m_variable.CallCount; - instance.OnReadValue = OnRead_CallCount; - instance.OnSimpleWriteValue = OnWrite_CallCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CallCount; + instance.OnWriteValue = OnWrite_CallCount; + updateList.Add(instance); + } instance = m_variable.CreateMonitoredItemsCount; - instance.OnReadValue = OnRead_CreateMonitoredItemsCount; - instance.OnSimpleWriteValue = OnWrite_CreateMonitoredItemsCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CreateMonitoredItemsCount; + instance.OnWriteValue = OnWrite_CreateMonitoredItemsCount; + updateList.Add(instance); + } instance = m_variable.ModifyMonitoredItemsCount; - instance.OnReadValue = OnRead_ModifyMonitoredItemsCount; - instance.OnSimpleWriteValue = OnWrite_ModifyMonitoredItemsCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ModifyMonitoredItemsCount; + instance.OnWriteValue = OnWrite_ModifyMonitoredItemsCount; + updateList.Add(instance); + } instance = m_variable.SetMonitoringModeCount; - instance.OnReadValue = OnRead_SetMonitoringModeCount; - instance.OnSimpleWriteValue = OnWrite_SetMonitoringModeCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SetMonitoringModeCount; + instance.OnWriteValue = OnWrite_SetMonitoringModeCount; + updateList.Add(instance); + } instance = m_variable.SetTriggeringCount; - instance.OnReadValue = OnRead_SetTriggeringCount; - instance.OnSimpleWriteValue = OnWrite_SetTriggeringCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SetTriggeringCount; + instance.OnWriteValue = OnWrite_SetTriggeringCount; + updateList.Add(instance); + } instance = m_variable.DeleteMonitoredItemsCount; - instance.OnReadValue = OnRead_DeleteMonitoredItemsCount; - instance.OnSimpleWriteValue = OnWrite_DeleteMonitoredItemsCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_DeleteMonitoredItemsCount; + instance.OnWriteValue = OnWrite_DeleteMonitoredItemsCount; + updateList.Add(instance); + } instance = m_variable.CreateSubscriptionCount; - instance.OnReadValue = OnRead_CreateSubscriptionCount; - instance.OnSimpleWriteValue = OnWrite_CreateSubscriptionCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CreateSubscriptionCount; + instance.OnWriteValue = OnWrite_CreateSubscriptionCount; + updateList.Add(instance); + } instance = m_variable.ModifySubscriptionCount; - instance.OnReadValue = OnRead_ModifySubscriptionCount; - instance.OnSimpleWriteValue = OnWrite_ModifySubscriptionCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ModifySubscriptionCount; + instance.OnWriteValue = OnWrite_ModifySubscriptionCount; + updateList.Add(instance); + } instance = m_variable.SetPublishingModeCount; - instance.OnReadValue = OnRead_SetPublishingModeCount; - instance.OnSimpleWriteValue = OnWrite_SetPublishingModeCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SetPublishingModeCount; + instance.OnWriteValue = OnWrite_SetPublishingModeCount; + updateList.Add(instance); + } instance = m_variable.PublishCount; - instance.OnReadValue = OnRead_PublishCount; - instance.OnSimpleWriteValue = OnWrite_PublishCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_PublishCount; + instance.OnWriteValue = OnWrite_PublishCount; + updateList.Add(instance); + } instance = m_variable.RepublishCount; - instance.OnReadValue = OnRead_RepublishCount; - instance.OnSimpleWriteValue = OnWrite_RepublishCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_RepublishCount; + instance.OnWriteValue = OnWrite_RepublishCount; + updateList.Add(instance); + } instance = m_variable.TransferSubscriptionsCount; - instance.OnReadValue = OnRead_TransferSubscriptionsCount; - instance.OnSimpleWriteValue = OnWrite_TransferSubscriptionsCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_TransferSubscriptionsCount; + instance.OnWriteValue = OnWrite_TransferSubscriptionsCount; + updateList.Add(instance); + } instance = m_variable.DeleteSubscriptionsCount; - instance.OnReadValue = OnRead_DeleteSubscriptionsCount; - instance.OnSimpleWriteValue = OnWrite_DeleteSubscriptionsCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_DeleteSubscriptionsCount; + instance.OnWriteValue = OnWrite_DeleteSubscriptionsCount; + updateList.Add(instance); + } instance = m_variable.AddNodesCount; - instance.OnReadValue = OnRead_AddNodesCount; - instance.OnSimpleWriteValue = OnWrite_AddNodesCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_AddNodesCount; + instance.OnWriteValue = OnWrite_AddNodesCount; + updateList.Add(instance); + } instance = m_variable.AddReferencesCount; - instance.OnReadValue = OnRead_AddReferencesCount; - instance.OnSimpleWriteValue = OnWrite_AddReferencesCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_AddReferencesCount; + instance.OnWriteValue = OnWrite_AddReferencesCount; + updateList.Add(instance); + } instance = m_variable.DeleteNodesCount; - instance.OnReadValue = OnRead_DeleteNodesCount; - instance.OnSimpleWriteValue = OnWrite_DeleteNodesCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_DeleteNodesCount; + instance.OnWriteValue = OnWrite_DeleteNodesCount; + updateList.Add(instance); + } instance = m_variable.DeleteReferencesCount; - instance.OnReadValue = OnRead_DeleteReferencesCount; - instance.OnSimpleWriteValue = OnWrite_DeleteReferencesCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_DeleteReferencesCount; + instance.OnWriteValue = OnWrite_DeleteReferencesCount; + updateList.Add(instance); + } instance = m_variable.BrowseCount; - instance.OnReadValue = OnRead_BrowseCount; - instance.OnSimpleWriteValue = OnWrite_BrowseCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_BrowseCount; + instance.OnWriteValue = OnWrite_BrowseCount; + updateList.Add(instance); + } instance = m_variable.BrowseNextCount; - instance.OnReadValue = OnRead_BrowseNextCount; - instance.OnSimpleWriteValue = OnWrite_BrowseNextCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_BrowseNextCount; + instance.OnWriteValue = OnWrite_BrowseNextCount; + updateList.Add(instance); + } instance = m_variable.TranslateBrowsePathsToNodeIdsCount; - instance.OnReadValue = OnRead_TranslateBrowsePathsToNodeIdsCount; - instance.OnSimpleWriteValue = OnWrite_TranslateBrowsePathsToNodeIdsCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_TranslateBrowsePathsToNodeIdsCount; + instance.OnWriteValue = OnWrite_TranslateBrowsePathsToNodeIdsCount; + updateList.Add(instance); + } instance = m_variable.QueryFirstCount; - instance.OnReadValue = OnRead_QueryFirstCount; - instance.OnSimpleWriteValue = OnWrite_QueryFirstCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_QueryFirstCount; + instance.OnWriteValue = OnWrite_QueryFirstCount; + updateList.Add(instance); + } instance = m_variable.QueryNextCount; - instance.OnReadValue = OnRead_QueryNextCount; - instance.OnSimpleWriteValue = OnWrite_QueryNextCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_QueryNextCount; + instance.OnWriteValue = OnWrite_QueryNextCount; + updateList.Add(instance); + } instance = m_variable.RegisterNodesCount; - instance.OnReadValue = OnRead_RegisterNodesCount; - instance.OnSimpleWriteValue = OnWrite_RegisterNodesCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_RegisterNodesCount; + instance.OnWriteValue = OnWrite_RegisterNodesCount; + updateList.Add(instance); + } instance = m_variable.UnregisterNodesCount; - instance.OnReadValue = OnRead_UnregisterNodesCount; - instance.OnSimpleWriteValue = OnWrite_UnregisterNodesCount; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_UnregisterNodesCount; + instance.OnWriteValue = OnWrite_UnregisterNodesCount; + updateList.Add(instance); + } SetUpdateList(updateList); } @@ -20500,16 +22275,104 @@ protected ServiceResult OnReadValue( } } - private ServiceResult OnWriteValue(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWriteValue( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { - m_value = (SessionDiagnosticsDataType)Write(value); + SessionDiagnosticsDataType newValue; + if (value is ExtensionObject extensionObject) + { + newValue = (SessionDiagnosticsDataType)extensionObject.Body; + } + else + { + newValue = (SessionDiagnosticsDataType)value; + } + + if (!Utils.IsEqual(m_value, newValue)) + { + UpdateChildrenChangeMasks(context, ref newValue, ref statusCode, ref timestamp); + Timestamp = timestamp; + m_value = (SessionDiagnosticsDataType)Write(newValue); + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + } } return ServiceResult.Good; } + private void UpdateChildrenChangeMasks(ISystemContext context, ref SessionDiagnosticsDataType newValue, ref StatusCode statusCode, ref DateTime timestamp) + { + if (!Utils.IsEqual(m_value.SessionId, newValue.SessionId)) UpdateChildVariableStatus(m_variable.SessionId, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.SessionName, newValue.SessionName)) UpdateChildVariableStatus(m_variable.SessionName, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.ClientDescription, newValue.ClientDescription)) UpdateChildVariableStatus(m_variable.ClientDescription, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.ServerUri, newValue.ServerUri)) UpdateChildVariableStatus(m_variable.ServerUri, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.EndpointUrl, newValue.EndpointUrl)) UpdateChildVariableStatus(m_variable.EndpointUrl, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LocaleIds, newValue.LocaleIds)) UpdateChildVariableStatus(m_variable.LocaleIds, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.ActualSessionTimeout, newValue.ActualSessionTimeout)) UpdateChildVariableStatus(m_variable.ActualSessionTimeout, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.MaxResponseMessageSize, newValue.MaxResponseMessageSize)) UpdateChildVariableStatus(m_variable.MaxResponseMessageSize, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.ClientConnectionTime, newValue.ClientConnectionTime)) UpdateChildVariableStatus(m_variable.ClientConnectionTime, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.ClientLastContactTime, newValue.ClientLastContactTime)) UpdateChildVariableStatus(m_variable.ClientLastContactTime, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.CurrentSubscriptionsCount, newValue.CurrentSubscriptionsCount)) UpdateChildVariableStatus(m_variable.CurrentSubscriptionsCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.CurrentMonitoredItemsCount, newValue.CurrentMonitoredItemsCount)) UpdateChildVariableStatus(m_variable.CurrentMonitoredItemsCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.CurrentPublishRequestsInQueue, newValue.CurrentPublishRequestsInQueue)) UpdateChildVariableStatus(m_variable.CurrentPublishRequestsInQueue, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.TotalRequestCount, newValue.TotalRequestCount)) UpdateChildVariableStatus(m_variable.TotalRequestCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.UnauthorizedRequestCount, newValue.UnauthorizedRequestCount)) UpdateChildVariableStatus(m_variable.UnauthorizedRequestCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.ReadCount, newValue.ReadCount)) UpdateChildVariableStatus(m_variable.ReadCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.HistoryReadCount, newValue.HistoryReadCount)) UpdateChildVariableStatus(m_variable.HistoryReadCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.WriteCount, newValue.WriteCount)) UpdateChildVariableStatus(m_variable.WriteCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.HistoryUpdateCount, newValue.HistoryUpdateCount)) UpdateChildVariableStatus(m_variable.HistoryUpdateCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.CallCount, newValue.CallCount)) UpdateChildVariableStatus(m_variable.CallCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.CreateMonitoredItemsCount, newValue.CreateMonitoredItemsCount)) UpdateChildVariableStatus(m_variable.CreateMonitoredItemsCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.ModifyMonitoredItemsCount, newValue.ModifyMonitoredItemsCount)) UpdateChildVariableStatus(m_variable.ModifyMonitoredItemsCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.SetMonitoringModeCount, newValue.SetMonitoringModeCount)) UpdateChildVariableStatus(m_variable.SetMonitoringModeCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.SetTriggeringCount, newValue.SetTriggeringCount)) UpdateChildVariableStatus(m_variable.SetTriggeringCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.DeleteMonitoredItemsCount, newValue.DeleteMonitoredItemsCount)) UpdateChildVariableStatus(m_variable.DeleteMonitoredItemsCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.CreateSubscriptionCount, newValue.CreateSubscriptionCount)) UpdateChildVariableStatus(m_variable.CreateSubscriptionCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.ModifySubscriptionCount, newValue.ModifySubscriptionCount)) UpdateChildVariableStatus(m_variable.ModifySubscriptionCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.SetPublishingModeCount, newValue.SetPublishingModeCount)) UpdateChildVariableStatus(m_variable.SetPublishingModeCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.PublishCount, newValue.PublishCount)) UpdateChildVariableStatus(m_variable.PublishCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.RepublishCount, newValue.RepublishCount)) UpdateChildVariableStatus(m_variable.RepublishCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.TransferSubscriptionsCount, newValue.TransferSubscriptionsCount)) UpdateChildVariableStatus(m_variable.TransferSubscriptionsCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.DeleteSubscriptionsCount, newValue.DeleteSubscriptionsCount)) UpdateChildVariableStatus(m_variable.DeleteSubscriptionsCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.AddNodesCount, newValue.AddNodesCount)) UpdateChildVariableStatus(m_variable.AddNodesCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.AddReferencesCount, newValue.AddReferencesCount)) UpdateChildVariableStatus(m_variable.AddReferencesCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.DeleteNodesCount, newValue.DeleteNodesCount)) UpdateChildVariableStatus(m_variable.DeleteNodesCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.DeleteReferencesCount, newValue.DeleteReferencesCount)) UpdateChildVariableStatus(m_variable.DeleteReferencesCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.BrowseCount, newValue.BrowseCount)) UpdateChildVariableStatus(m_variable.BrowseCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.BrowseNextCount, newValue.BrowseNextCount)) UpdateChildVariableStatus(m_variable.BrowseNextCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.TranslateBrowsePathsToNodeIdsCount, newValue.TranslateBrowsePathsToNodeIdsCount)) UpdateChildVariableStatus(m_variable.TranslateBrowsePathsToNodeIdsCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.QueryFirstCount, newValue.QueryFirstCount)) UpdateChildVariableStatus(m_variable.QueryFirstCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.QueryNextCount, newValue.QueryNextCount)) UpdateChildVariableStatus(m_variable.QueryNextCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.RegisterNodesCount, newValue.RegisterNodesCount)) UpdateChildVariableStatus(m_variable.RegisterNodesCount, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.UnregisterNodesCount, newValue.UnregisterNodesCount)) UpdateChildVariableStatus(m_variable.UnregisterNodesCount, ref statusCode, ref timestamp); + } + + private void UpdateParent(ISystemContext context, ref StatusCode statusCode, ref DateTime timestamp) + { + Timestamp = timestamp; + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + m_variable.ClearChangeMasks(context, false); + } + + private void UpdateChildVariableStatus(BaseVariableState child, ref StatusCode statusCode, ref DateTime timestamp) + { + if (child == null) return; + child.StatusCode = statusCode; + if (timestamp == DateTime.MinValue) + { + timestamp = DateTime.UtcNow; + } + child.Timestamp = timestamp; + } + #region SessionId Access Methods /// private ServiceResult OnRead_SessionId( @@ -20525,21 +22388,50 @@ private ServiceResult OnRead_SessionId( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SessionId; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SessionId; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SessionId(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SessionId( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SessionId, ref statusCode, ref timestamp); m_value.SessionId = (NodeId)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -20561,21 +22453,50 @@ private ServiceResult OnRead_SessionName( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SessionName; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SessionName; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SessionName(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SessionName( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SessionName, ref statusCode, ref timestamp); m_value.SessionName = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -20597,21 +22518,50 @@ private ServiceResult OnRead_ClientDescription( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ClientDescription; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ClientDescription; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ClientDescription(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ClientDescription( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ClientDescription, ref statusCode, ref timestamp); m_value.ClientDescription = (ApplicationDescription)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -20633,21 +22583,50 @@ private ServiceResult OnRead_ServerUri( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ServerUri; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ServerUri; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ServerUri(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ServerUri( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ServerUri, ref statusCode, ref timestamp); m_value.ServerUri = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -20669,21 +22648,50 @@ private ServiceResult OnRead_EndpointUrl( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.EndpointUrl; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.EndpointUrl; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_EndpointUrl(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_EndpointUrl( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.EndpointUrl, ref statusCode, ref timestamp); m_value.EndpointUrl = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -20705,21 +22713,50 @@ private ServiceResult OnRead_LocaleIds( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LocaleIds; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LocaleIds; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LocaleIds(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LocaleIds( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LocaleIds, ref statusCode, ref timestamp); m_value.LocaleIds = (StringCollection)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -20741,21 +22778,50 @@ private ServiceResult OnRead_ActualSessionTimeout( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ActualSessionTimeout; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ActualSessionTimeout; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ActualSessionTimeout(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ActualSessionTimeout( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ActualSessionTimeout, ref statusCode, ref timestamp); m_value.ActualSessionTimeout = (double)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -20777,21 +22843,50 @@ private ServiceResult OnRead_MaxResponseMessageSize( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.MaxResponseMessageSize; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.MaxResponseMessageSize; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_MaxResponseMessageSize(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_MaxResponseMessageSize( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.MaxResponseMessageSize, ref statusCode, ref timestamp); m_value.MaxResponseMessageSize = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -20813,21 +22908,50 @@ private ServiceResult OnRead_ClientConnectionTime( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ClientConnectionTime; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ClientConnectionTime; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ClientConnectionTime(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ClientConnectionTime( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ClientConnectionTime, ref statusCode, ref timestamp); m_value.ClientConnectionTime = (DateTime)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -20849,21 +22973,50 @@ private ServiceResult OnRead_ClientLastContactTime( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ClientLastContactTime; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ClientLastContactTime; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ClientLastContactTime(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ClientLastContactTime( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ClientLastContactTime, ref statusCode, ref timestamp); m_value.ClientLastContactTime = (DateTime)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -20885,21 +23038,50 @@ private ServiceResult OnRead_CurrentSubscriptionsCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CurrentSubscriptionsCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CurrentSubscriptionsCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CurrentSubscriptionsCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CurrentSubscriptionsCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CurrentSubscriptionsCount, ref statusCode, ref timestamp); m_value.CurrentSubscriptionsCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -20921,21 +23103,50 @@ private ServiceResult OnRead_CurrentMonitoredItemsCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CurrentMonitoredItemsCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CurrentMonitoredItemsCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CurrentMonitoredItemsCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CurrentMonitoredItemsCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CurrentMonitoredItemsCount, ref statusCode, ref timestamp); m_value.CurrentMonitoredItemsCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -20957,21 +23168,50 @@ private ServiceResult OnRead_CurrentPublishRequestsInQueue( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CurrentPublishRequestsInQueue; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CurrentPublishRequestsInQueue; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CurrentPublishRequestsInQueue(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CurrentPublishRequestsInQueue( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CurrentPublishRequestsInQueue, ref statusCode, ref timestamp); m_value.CurrentPublishRequestsInQueue = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -20993,21 +23233,50 @@ private ServiceResult OnRead_TotalRequestCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.TotalRequestCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.TotalRequestCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_TotalRequestCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_TotalRequestCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.TotalRequestCount, ref statusCode, ref timestamp); m_value.TotalRequestCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21029,21 +23298,50 @@ private ServiceResult OnRead_UnauthorizedRequestCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.UnauthorizedRequestCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.UnauthorizedRequestCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_UnauthorizedRequestCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_UnauthorizedRequestCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.UnauthorizedRequestCount, ref statusCode, ref timestamp); m_value.UnauthorizedRequestCount = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21065,21 +23363,50 @@ private ServiceResult OnRead_ReadCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ReadCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ReadCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ReadCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ReadCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ReadCount, ref statusCode, ref timestamp); m_value.ReadCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21101,21 +23428,50 @@ private ServiceResult OnRead_HistoryReadCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.HistoryReadCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.HistoryReadCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_HistoryReadCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_HistoryReadCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.HistoryReadCount, ref statusCode, ref timestamp); m_value.HistoryReadCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21137,21 +23493,50 @@ private ServiceResult OnRead_WriteCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.WriteCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.WriteCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_WriteCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_WriteCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.WriteCount, ref statusCode, ref timestamp); m_value.WriteCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21173,21 +23558,50 @@ private ServiceResult OnRead_HistoryUpdateCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.HistoryUpdateCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.HistoryUpdateCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_HistoryUpdateCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_HistoryUpdateCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.HistoryUpdateCount, ref statusCode, ref timestamp); m_value.HistoryUpdateCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21209,21 +23623,50 @@ private ServiceResult OnRead_CallCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CallCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CallCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CallCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CallCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CallCount, ref statusCode, ref timestamp); m_value.CallCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21245,21 +23688,50 @@ private ServiceResult OnRead_CreateMonitoredItemsCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CreateMonitoredItemsCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CreateMonitoredItemsCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CreateMonitoredItemsCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CreateMonitoredItemsCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CreateMonitoredItemsCount, ref statusCode, ref timestamp); m_value.CreateMonitoredItemsCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21281,21 +23753,50 @@ private ServiceResult OnRead_ModifyMonitoredItemsCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ModifyMonitoredItemsCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ModifyMonitoredItemsCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ModifyMonitoredItemsCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ModifyMonitoredItemsCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ModifyMonitoredItemsCount, ref statusCode, ref timestamp); m_value.ModifyMonitoredItemsCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21317,21 +23818,50 @@ private ServiceResult OnRead_SetMonitoringModeCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SetMonitoringModeCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SetMonitoringModeCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SetMonitoringModeCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SetMonitoringModeCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SetMonitoringModeCount, ref statusCode, ref timestamp); m_value.SetMonitoringModeCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21353,21 +23883,50 @@ private ServiceResult OnRead_SetTriggeringCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SetTriggeringCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SetTriggeringCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SetTriggeringCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SetTriggeringCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SetTriggeringCount, ref statusCode, ref timestamp); m_value.SetTriggeringCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21389,21 +23948,50 @@ private ServiceResult OnRead_DeleteMonitoredItemsCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.DeleteMonitoredItemsCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.DeleteMonitoredItemsCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_DeleteMonitoredItemsCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_DeleteMonitoredItemsCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.DeleteMonitoredItemsCount, ref statusCode, ref timestamp); m_value.DeleteMonitoredItemsCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21425,21 +24013,50 @@ private ServiceResult OnRead_CreateSubscriptionCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CreateSubscriptionCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CreateSubscriptionCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CreateSubscriptionCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CreateSubscriptionCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CreateSubscriptionCount, ref statusCode, ref timestamp); m_value.CreateSubscriptionCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21461,21 +24078,50 @@ private ServiceResult OnRead_ModifySubscriptionCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ModifySubscriptionCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ModifySubscriptionCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ModifySubscriptionCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ModifySubscriptionCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ModifySubscriptionCount, ref statusCode, ref timestamp); m_value.ModifySubscriptionCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21497,21 +24143,50 @@ private ServiceResult OnRead_SetPublishingModeCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SetPublishingModeCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SetPublishingModeCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SetPublishingModeCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SetPublishingModeCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SetPublishingModeCount, ref statusCode, ref timestamp); m_value.SetPublishingModeCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21533,21 +24208,50 @@ private ServiceResult OnRead_PublishCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.PublishCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.PublishCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_PublishCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_PublishCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.PublishCount, ref statusCode, ref timestamp); m_value.PublishCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21569,21 +24273,50 @@ private ServiceResult OnRead_RepublishCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.RepublishCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.RepublishCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_RepublishCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_RepublishCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.RepublishCount, ref statusCode, ref timestamp); m_value.RepublishCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21605,21 +24338,50 @@ private ServiceResult OnRead_TransferSubscriptionsCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.TransferSubscriptionsCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.TransferSubscriptionsCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_TransferSubscriptionsCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_TransferSubscriptionsCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.TransferSubscriptionsCount, ref statusCode, ref timestamp); m_value.TransferSubscriptionsCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21641,21 +24403,50 @@ private ServiceResult OnRead_DeleteSubscriptionsCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.DeleteSubscriptionsCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.DeleteSubscriptionsCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_DeleteSubscriptionsCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_DeleteSubscriptionsCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.DeleteSubscriptionsCount, ref statusCode, ref timestamp); m_value.DeleteSubscriptionsCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21677,21 +24468,50 @@ private ServiceResult OnRead_AddNodesCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.AddNodesCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.AddNodesCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_AddNodesCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_AddNodesCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.AddNodesCount, ref statusCode, ref timestamp); m_value.AddNodesCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21713,21 +24533,50 @@ private ServiceResult OnRead_AddReferencesCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.AddReferencesCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.AddReferencesCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_AddReferencesCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_AddReferencesCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.AddReferencesCount, ref statusCode, ref timestamp); m_value.AddReferencesCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21749,21 +24598,50 @@ private ServiceResult OnRead_DeleteNodesCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.DeleteNodesCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.DeleteNodesCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_DeleteNodesCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_DeleteNodesCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.DeleteNodesCount, ref statusCode, ref timestamp); m_value.DeleteNodesCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21785,21 +24663,50 @@ private ServiceResult OnRead_DeleteReferencesCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.DeleteReferencesCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.DeleteReferencesCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_DeleteReferencesCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_DeleteReferencesCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.DeleteReferencesCount, ref statusCode, ref timestamp); m_value.DeleteReferencesCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21821,21 +24728,50 @@ private ServiceResult OnRead_BrowseCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.BrowseCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.BrowseCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_BrowseCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_BrowseCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.BrowseCount, ref statusCode, ref timestamp); m_value.BrowseCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21857,21 +24793,50 @@ private ServiceResult OnRead_BrowseNextCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.BrowseNextCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.BrowseNextCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_BrowseNextCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_BrowseNextCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.BrowseNextCount, ref statusCode, ref timestamp); m_value.BrowseNextCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21893,21 +24858,50 @@ private ServiceResult OnRead_TranslateBrowsePathsToNodeIdsCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.TranslateBrowsePathsToNodeIdsCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.TranslateBrowsePathsToNodeIdsCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_TranslateBrowsePathsToNodeIdsCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_TranslateBrowsePathsToNodeIdsCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.TranslateBrowsePathsToNodeIdsCount, ref statusCode, ref timestamp); m_value.TranslateBrowsePathsToNodeIdsCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21929,21 +24923,50 @@ private ServiceResult OnRead_QueryFirstCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.QueryFirstCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.QueryFirstCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_QueryFirstCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_QueryFirstCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.QueryFirstCount, ref statusCode, ref timestamp); m_value.QueryFirstCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -21965,21 +24988,50 @@ private ServiceResult OnRead_QueryNextCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.QueryNextCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.QueryNextCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_QueryNextCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_QueryNextCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.QueryNextCount, ref statusCode, ref timestamp); m_value.QueryNextCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -22001,21 +25053,50 @@ private ServiceResult OnRead_RegisterNodesCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.RegisterNodesCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.RegisterNodesCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_RegisterNodesCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_RegisterNodesCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.RegisterNodesCount, ref statusCode, ref timestamp); m_value.RegisterNodesCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -22037,21 +25118,50 @@ private ServiceResult OnRead_UnregisterNodesCount( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.UnregisterNodesCount; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.UnregisterNodesCount; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_UnregisterNodesCount(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_UnregisterNodesCount( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.UnregisterNodesCount, ref statusCode, ref timestamp); m_value.UnregisterNodesCount = (ServiceCounterDataType)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -22073,7 +25183,7 @@ private ServiceResult OnWrite_UnregisterNodesCount(ISystemContext context, NodeS /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class SessionSecurityDiagnosticsArrayState : BaseDataVariableState + public partial class SessionSecurityDiagnosticsArrayState : BaseDataVariableState { #region Constructors /// @@ -22124,17 +25234,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8XYIkCAgAAAAAAKwAAAFNlc3Npb25TZWN1cml0eURpYWdub3N0aWNzQXJyYXlUeXBlSW5z" + - "dGFuY2UBAMMIAQDDCMMIAAABAGQDAQAAAAEAAAAAAAAAAQH/////AQAAABVgiQoCAAAAAAAaAAAAU2Vz" + - "c2lvblNlY3VyaXR5RGlhZ25vc3RpY3MBADwyAC8BAMQIPDIAAAEAZAP/////AQH/////CQAAABVgiQoC" + - "AAAAAAAJAAAAU2Vzc2lvbklkAQA9MgAvAD89MgAAABH/////AQH/////AAAAABVgiQoCAAAAAAAVAAAA" + - "Q2xpZW50VXNlcklkT2ZTZXNzaW9uAQA+MgAvAD8+MgAAAAz/////AQH/////AAAAABdgiQoCAAAAAAAT" + - "AAAAQ2xpZW50VXNlcklkSGlzdG9yeQEAPzIALwA/PzIAAAAMAQAAAAEAAAAAAAAAAQH/////AAAAABVg" + - "iQoCAAAAAAAXAAAAQXV0aGVudGljYXRpb25NZWNoYW5pc20BAEAyAC8AP0AyAAAADP////8BAf////8A" + - "AAAAFWCJCgIAAAAAAAgAAABFbmNvZGluZwEAQTIALwA/QTIAAAAM/////wEB/////wAAAAAVYIkKAgAA" + - "AAAAEQAAAFRyYW5zcG9ydFByb3RvY29sAQBCMgAvAD9CMgAAAAz/////AQH/////AAAAABVgiQoCAAAA" + - "AAAMAAAAU2VjdXJpdHlNb2RlAQBDMgAvAD9DMgAAAQAuAf////8BAf////8AAAAAFWCJCgIAAAAAABEA" + - "AABTZWN1cml0eVBvbGljeVVyaQEARDIALwA/RDIAAAAM/////wEB/////wAAAAAVYIkKAgAAAAAAEQAA" + - "AENsaWVudENlcnRpZmljYXRlAQBFMgAvAD9FMgAAAA//////AQH/////AAAAAA=="; + "dGFuY2UBAMMIAQDDCMMIAAABAGQDAQAAAAEAAAAAAAAAAQH/////AAAAAA=="; #endregion #endif #endregion @@ -22156,7 +25256,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class SessionSecurityDiagnosticsState : BaseDataVariableState + public partial class SessionSecurityDiagnosticsState : BaseDataVariableState { #region Constructors /// @@ -22707,7 +25807,7 @@ public SessionSecurityDiagnosticsState Variable /// public SessionSecurityDiagnosticsDataType Value { - get { return m_value; } + get { return m_value; } set { m_value = value; } } #endregion @@ -22722,48 +25822,75 @@ private void Initialize(SessionSecurityDiagnosticsState variable) variable.Value = m_value; variable.OnReadValue = OnReadValue; - variable.OnSimpleWriteValue = OnWriteValue; + variable.OnWriteValue = OnWriteValue; BaseVariableState instance = null; List updateList = new List(); updateList.Add(variable); instance = m_variable.SessionId; - instance.OnReadValue = OnRead_SessionId; - instance.OnSimpleWriteValue = OnWrite_SessionId; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SessionId; + instance.OnWriteValue = OnWrite_SessionId; + updateList.Add(instance); + } instance = m_variable.ClientUserIdOfSession; - instance.OnReadValue = OnRead_ClientUserIdOfSession; - instance.OnSimpleWriteValue = OnWrite_ClientUserIdOfSession; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ClientUserIdOfSession; + instance.OnWriteValue = OnWrite_ClientUserIdOfSession; + updateList.Add(instance); + } instance = m_variable.ClientUserIdHistory; - instance.OnReadValue = OnRead_ClientUserIdHistory; - instance.OnSimpleWriteValue = OnWrite_ClientUserIdHistory; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ClientUserIdHistory; + instance.OnWriteValue = OnWrite_ClientUserIdHistory; + updateList.Add(instance); + } instance = m_variable.AuthenticationMechanism; - instance.OnReadValue = OnRead_AuthenticationMechanism; - instance.OnSimpleWriteValue = OnWrite_AuthenticationMechanism; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_AuthenticationMechanism; + instance.OnWriteValue = OnWrite_AuthenticationMechanism; + updateList.Add(instance); + } instance = m_variable.Encoding; - instance.OnReadValue = OnRead_Encoding; - instance.OnSimpleWriteValue = OnWrite_Encoding; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_Encoding; + instance.OnWriteValue = OnWrite_Encoding; + updateList.Add(instance); + } instance = m_variable.TransportProtocol; - instance.OnReadValue = OnRead_TransportProtocol; - instance.OnSimpleWriteValue = OnWrite_TransportProtocol; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_TransportProtocol; + instance.OnWriteValue = OnWrite_TransportProtocol; + updateList.Add(instance); + } instance = m_variable.SecurityMode; - instance.OnReadValue = OnRead_SecurityMode; - instance.OnSimpleWriteValue = OnWrite_SecurityMode; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SecurityMode; + instance.OnWriteValue = OnWrite_SecurityMode; + updateList.Add(instance); + } instance = m_variable.SecurityPolicyUri; - instance.OnReadValue = OnRead_SecurityPolicyUri; - instance.OnSimpleWriteValue = OnWrite_SecurityPolicyUri; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_SecurityPolicyUri; + instance.OnWriteValue = OnWrite_SecurityPolicyUri; + updateList.Add(instance); + } instance = m_variable.ClientCertificate; - instance.OnReadValue = OnRead_ClientCertificate; - instance.OnSimpleWriteValue = OnWrite_ClientCertificate; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_ClientCertificate; + instance.OnWriteValue = OnWrite_ClientCertificate; + updateList.Add(instance); + } SetUpdateList(updateList); } @@ -22792,16 +25919,70 @@ protected ServiceResult OnReadValue( } } - private ServiceResult OnWriteValue(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWriteValue( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { - m_value = (SessionSecurityDiagnosticsDataType)Write(value); + SessionSecurityDiagnosticsDataType newValue; + if (value is ExtensionObject extensionObject) + { + newValue = (SessionSecurityDiagnosticsDataType)extensionObject.Body; + } + else + { + newValue = (SessionSecurityDiagnosticsDataType)value; + } + + if (!Utils.IsEqual(m_value, newValue)) + { + UpdateChildrenChangeMasks(context, ref newValue, ref statusCode, ref timestamp); + Timestamp = timestamp; + m_value = (SessionSecurityDiagnosticsDataType)Write(newValue); + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + } } return ServiceResult.Good; } + private void UpdateChildrenChangeMasks(ISystemContext context, ref SessionSecurityDiagnosticsDataType newValue, ref StatusCode statusCode, ref DateTime timestamp) + { + if (!Utils.IsEqual(m_value.SessionId, newValue.SessionId)) UpdateChildVariableStatus(m_variable.SessionId, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.ClientUserIdOfSession, newValue.ClientUserIdOfSession)) UpdateChildVariableStatus(m_variable.ClientUserIdOfSession, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.ClientUserIdHistory, newValue.ClientUserIdHistory)) UpdateChildVariableStatus(m_variable.ClientUserIdHistory, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.AuthenticationMechanism, newValue.AuthenticationMechanism)) UpdateChildVariableStatus(m_variable.AuthenticationMechanism, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.Encoding, newValue.Encoding)) UpdateChildVariableStatus(m_variable.Encoding, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.TransportProtocol, newValue.TransportProtocol)) UpdateChildVariableStatus(m_variable.TransportProtocol, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.SecurityMode, newValue.SecurityMode)) UpdateChildVariableStatus(m_variable.SecurityMode, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.SecurityPolicyUri, newValue.SecurityPolicyUri)) UpdateChildVariableStatus(m_variable.SecurityPolicyUri, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.ClientCertificate, newValue.ClientCertificate)) UpdateChildVariableStatus(m_variable.ClientCertificate, ref statusCode, ref timestamp); + } + + private void UpdateParent(ISystemContext context, ref StatusCode statusCode, ref DateTime timestamp) + { + Timestamp = timestamp; + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + m_variable.ClearChangeMasks(context, false); + } + + private void UpdateChildVariableStatus(BaseVariableState child, ref StatusCode statusCode, ref DateTime timestamp) + { + if (child == null) return; + child.StatusCode = statusCode; + if (timestamp == DateTime.MinValue) + { + timestamp = DateTime.UtcNow; + } + child.Timestamp = timestamp; + } + #region SessionId Access Methods /// private ServiceResult OnRead_SessionId( @@ -22817,21 +25998,50 @@ private ServiceResult OnRead_SessionId( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SessionId; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SessionId; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SessionId(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SessionId( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SessionId, ref statusCode, ref timestamp); m_value.SessionId = (NodeId)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -22853,21 +26063,50 @@ private ServiceResult OnRead_ClientUserIdOfSession( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ClientUserIdOfSession; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ClientUserIdOfSession; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ClientUserIdOfSession(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ClientUserIdOfSession( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ClientUserIdOfSession, ref statusCode, ref timestamp); m_value.ClientUserIdOfSession = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -22889,21 +26128,50 @@ private ServiceResult OnRead_ClientUserIdHistory( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ClientUserIdHistory; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ClientUserIdHistory; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ClientUserIdHistory(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ClientUserIdHistory( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ClientUserIdHistory, ref statusCode, ref timestamp); m_value.ClientUserIdHistory = (StringCollection)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -22925,21 +26193,50 @@ private ServiceResult OnRead_AuthenticationMechanism( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.AuthenticationMechanism; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.AuthenticationMechanism; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_AuthenticationMechanism(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_AuthenticationMechanism( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.AuthenticationMechanism, ref statusCode, ref timestamp); m_value.AuthenticationMechanism = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -22961,21 +26258,50 @@ private ServiceResult OnRead_Encoding( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.Encoding; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.Encoding; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_Encoding(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_Encoding( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.Encoding, ref statusCode, ref timestamp); m_value.Encoding = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -22997,21 +26323,50 @@ private ServiceResult OnRead_TransportProtocol( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.TransportProtocol; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.TransportProtocol; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_TransportProtocol(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_TransportProtocol( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.TransportProtocol, ref statusCode, ref timestamp); m_value.TransportProtocol = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -23033,21 +26388,50 @@ private ServiceResult OnRead_SecurityMode( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SecurityMode; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SecurityMode; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SecurityMode(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SecurityMode( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SecurityMode, ref statusCode, ref timestamp); m_value.SecurityMode = (MessageSecurityMode)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -23069,21 +26453,50 @@ private ServiceResult OnRead_SecurityPolicyUri( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.SecurityPolicyUri; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.SecurityPolicyUri; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_SecurityPolicyUri(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_SecurityPolicyUri( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.SecurityPolicyUri, ref statusCode, ref timestamp); m_value.SecurityPolicyUri = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -23105,21 +26518,50 @@ private ServiceResult OnRead_ClientCertificate( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.ClientCertificate; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.ClientCertificate; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_ClientCertificate(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_ClientCertificate( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.ClientCertificate, ref statusCode, ref timestamp); m_value.ClientCertificate = (byte[])Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -26517,7 +29959,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class RationalNumberState : BaseDataVariableState + public partial class RationalNumberState : BaseDataVariableState { #region Constructors /// @@ -26739,7 +30181,7 @@ public RationalNumberState Variable /// public RationalNumber Value { - get { return m_value; } + get { return m_value; } set { m_value = value; } } #endregion @@ -26754,20 +30196,26 @@ private void Initialize(RationalNumberState variable) variable.Value = m_value; variable.OnReadValue = OnReadValue; - variable.OnSimpleWriteValue = OnWriteValue; + variable.OnWriteValue = OnWriteValue; BaseVariableState instance = null; List updateList = new List(); updateList.Add(variable); instance = m_variable.Numerator; - instance.OnReadValue = OnRead_Numerator; - instance.OnSimpleWriteValue = OnWrite_Numerator; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_Numerator; + instance.OnWriteValue = OnWrite_Numerator; + updateList.Add(instance); + } instance = m_variable.Denominator; - instance.OnReadValue = OnRead_Denominator; - instance.OnSimpleWriteValue = OnWrite_Denominator; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_Denominator; + instance.OnWriteValue = OnWrite_Denominator; + updateList.Add(instance); + } SetUpdateList(updateList); } @@ -26796,16 +30244,63 @@ protected ServiceResult OnReadValue( } } - private ServiceResult OnWriteValue(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWriteValue( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { - m_value = (RationalNumber)Write(value); + RationalNumber newValue; + if (value is ExtensionObject extensionObject) + { + newValue = (RationalNumber)extensionObject.Body; + } + else + { + newValue = (RationalNumber)value; + } + + if (!Utils.IsEqual(m_value, newValue)) + { + UpdateChildrenChangeMasks(context, ref newValue, ref statusCode, ref timestamp); + Timestamp = timestamp; + m_value = (RationalNumber)Write(newValue); + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + } } return ServiceResult.Good; } + private void UpdateChildrenChangeMasks(ISystemContext context, ref RationalNumber newValue, ref StatusCode statusCode, ref DateTime timestamp) + { + if (!Utils.IsEqual(m_value.Numerator, newValue.Numerator)) UpdateChildVariableStatus(m_variable.Numerator, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.Denominator, newValue.Denominator)) UpdateChildVariableStatus(m_variable.Denominator, ref statusCode, ref timestamp); + } + + private void UpdateParent(ISystemContext context, ref StatusCode statusCode, ref DateTime timestamp) + { + Timestamp = timestamp; + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + m_variable.ClearChangeMasks(context, false); + } + + private void UpdateChildVariableStatus(BaseVariableState child, ref StatusCode statusCode, ref DateTime timestamp) + { + if (child == null) return; + child.StatusCode = statusCode; + if (timestamp == DateTime.MinValue) + { + timestamp = DateTime.UtcNow; + } + child.Timestamp = timestamp; + } + #region Numerator Access Methods /// private ServiceResult OnRead_Numerator( @@ -26821,21 +30316,50 @@ private ServiceResult OnRead_Numerator( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.Numerator; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.Numerator; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_Numerator(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_Numerator( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.Numerator, ref statusCode, ref timestamp); m_value.Numerator = (int)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -26857,21 +30381,50 @@ private ServiceResult OnRead_Denominator( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.Denominator; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.Denominator; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_Denominator(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_Denominator( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.Denominator, ref statusCode, ref timestamp); m_value.Denominator = (uint)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -26893,7 +30446,7 @@ private ServiceResult OnWrite_Denominator(ISystemContext context, NodeState node /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class VectorState : BaseDataVariableState + public partial class VectorState : BaseDataVariableState { #region Constructors /// @@ -27321,7 +30874,7 @@ public ThreeDVectorState Variable /// public ThreeDVector Value { - get { return m_value; } + get { return m_value; } set { m_value = value; } } #endregion @@ -27336,24 +30889,33 @@ private void Initialize(ThreeDVectorState variable) variable.Value = m_value; variable.OnReadValue = OnReadValue; - variable.OnSimpleWriteValue = OnWriteValue; + variable.OnWriteValue = OnWriteValue; BaseVariableState instance = null; List updateList = new List(); updateList.Add(variable); instance = m_variable.X; - instance.OnReadValue = OnRead_X; - instance.OnSimpleWriteValue = OnWrite_X; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_X; + instance.OnWriteValue = OnWrite_X; + updateList.Add(instance); + } instance = m_variable.Y; - instance.OnReadValue = OnRead_Y; - instance.OnSimpleWriteValue = OnWrite_Y; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_Y; + instance.OnWriteValue = OnWrite_Y; + updateList.Add(instance); + } instance = m_variable.Z; - instance.OnReadValue = OnRead_Z; - instance.OnSimpleWriteValue = OnWrite_Z; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_Z; + instance.OnWriteValue = OnWrite_Z; + updateList.Add(instance); + } SetUpdateList(updateList); } @@ -27382,16 +30944,64 @@ protected ServiceResult OnReadValue( } } - private ServiceResult OnWriteValue(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWriteValue( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { - m_value = (ThreeDVector)Write(value); + ThreeDVector newValue; + if (value is ExtensionObject extensionObject) + { + newValue = (ThreeDVector)extensionObject.Body; + } + else + { + newValue = (ThreeDVector)value; + } + + if (!Utils.IsEqual(m_value, newValue)) + { + UpdateChildrenChangeMasks(context, ref newValue, ref statusCode, ref timestamp); + Timestamp = timestamp; + m_value = (ThreeDVector)Write(newValue); + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + } } return ServiceResult.Good; } + private void UpdateChildrenChangeMasks(ISystemContext context, ref ThreeDVector newValue, ref StatusCode statusCode, ref DateTime timestamp) + { + if (!Utils.IsEqual(m_value.X, newValue.X)) UpdateChildVariableStatus(m_variable.X, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.Y, newValue.Y)) UpdateChildVariableStatus(m_variable.Y, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.Z, newValue.Z)) UpdateChildVariableStatus(m_variable.Z, ref statusCode, ref timestamp); + } + + private void UpdateParent(ISystemContext context, ref StatusCode statusCode, ref DateTime timestamp) + { + Timestamp = timestamp; + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + m_variable.ClearChangeMasks(context, false); + } + + private void UpdateChildVariableStatus(BaseVariableState child, ref StatusCode statusCode, ref DateTime timestamp) + { + if (child == null) return; + child.StatusCode = statusCode; + if (timestamp == DateTime.MinValue) + { + timestamp = DateTime.UtcNow; + } + child.Timestamp = timestamp; + } + #region X Access Methods /// private ServiceResult OnRead_X( @@ -27407,21 +31017,50 @@ private ServiceResult OnRead_X( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.X; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.X; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_X(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_X( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.X, ref statusCode, ref timestamp); m_value.X = (double)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -27443,21 +31082,50 @@ private ServiceResult OnRead_Y( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.Y; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.Y; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_Y(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_Y( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.Y, ref statusCode, ref timestamp); m_value.Y = (double)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -27479,21 +31147,50 @@ private ServiceResult OnRead_Z( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.Z; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.Z; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_Z(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_Z( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.Z, ref statusCode, ref timestamp); m_value.Z = (double)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -27515,7 +31212,7 @@ private ServiceResult OnWrite_Z(ISystemContext context, NodeState node, ref obje /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class CartesianCoordinatesState : BaseDataVariableState + public partial class CartesianCoordinatesState : BaseDataVariableState { #region Constructors /// @@ -27943,7 +31640,7 @@ public ThreeDCartesianCoordinatesState Variable /// public ThreeDCartesianCoordinates Value { - get { return m_value; } + get { return m_value; } set { m_value = value; } } #endregion @@ -27958,24 +31655,33 @@ private void Initialize(ThreeDCartesianCoordinatesState variable) variable.Value = m_value; variable.OnReadValue = OnReadValue; - variable.OnSimpleWriteValue = OnWriteValue; + variable.OnWriteValue = OnWriteValue; BaseVariableState instance = null; List updateList = new List(); updateList.Add(variable); instance = m_variable.X; - instance.OnReadValue = OnRead_X; - instance.OnSimpleWriteValue = OnWrite_X; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_X; + instance.OnWriteValue = OnWrite_X; + updateList.Add(instance); + } instance = m_variable.Y; - instance.OnReadValue = OnRead_Y; - instance.OnSimpleWriteValue = OnWrite_Y; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_Y; + instance.OnWriteValue = OnWrite_Y; + updateList.Add(instance); + } instance = m_variable.Z; - instance.OnReadValue = OnRead_Z; - instance.OnSimpleWriteValue = OnWrite_Z; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_Z; + instance.OnWriteValue = OnWrite_Z; + updateList.Add(instance); + } SetUpdateList(updateList); } @@ -28004,16 +31710,64 @@ protected ServiceResult OnReadValue( } } - private ServiceResult OnWriteValue(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWriteValue( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { - m_value = (ThreeDCartesianCoordinates)Write(value); + ThreeDCartesianCoordinates newValue; + if (value is ExtensionObject extensionObject) + { + newValue = (ThreeDCartesianCoordinates)extensionObject.Body; + } + else + { + newValue = (ThreeDCartesianCoordinates)value; + } + + if (!Utils.IsEqual(m_value, newValue)) + { + UpdateChildrenChangeMasks(context, ref newValue, ref statusCode, ref timestamp); + Timestamp = timestamp; + m_value = (ThreeDCartesianCoordinates)Write(newValue); + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + } } return ServiceResult.Good; } + private void UpdateChildrenChangeMasks(ISystemContext context, ref ThreeDCartesianCoordinates newValue, ref StatusCode statusCode, ref DateTime timestamp) + { + if (!Utils.IsEqual(m_value.X, newValue.X)) UpdateChildVariableStatus(m_variable.X, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.Y, newValue.Y)) UpdateChildVariableStatus(m_variable.Y, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.Z, newValue.Z)) UpdateChildVariableStatus(m_variable.Z, ref statusCode, ref timestamp); + } + + private void UpdateParent(ISystemContext context, ref StatusCode statusCode, ref DateTime timestamp) + { + Timestamp = timestamp; + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + m_variable.ClearChangeMasks(context, false); + } + + private void UpdateChildVariableStatus(BaseVariableState child, ref StatusCode statusCode, ref DateTime timestamp) + { + if (child == null) return; + child.StatusCode = statusCode; + if (timestamp == DateTime.MinValue) + { + timestamp = DateTime.UtcNow; + } + child.Timestamp = timestamp; + } + #region X Access Methods /// private ServiceResult OnRead_X( @@ -28029,21 +31783,50 @@ private ServiceResult OnRead_X( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.X; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.X; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_X(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_X( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.X, ref statusCode, ref timestamp); m_value.X = (double)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -28065,21 +31848,50 @@ private ServiceResult OnRead_Y( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.Y; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.Y; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_Y(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_Y( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.Y, ref statusCode, ref timestamp); m_value.Y = (double)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -28101,21 +31913,50 @@ private ServiceResult OnRead_Z( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.Z; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.Z; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_Z(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_Z( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.Z, ref statusCode, ref timestamp); m_value.Z = (double)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -28137,7 +31978,7 @@ private ServiceResult OnWrite_Z(ISystemContext context, NodeState node, ref obje /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class OrientationState : BaseDataVariableState + public partial class OrientationState : BaseDataVariableState { #region Constructors /// @@ -28565,7 +32406,7 @@ public ThreeDOrientationState Variable /// public ThreeDOrientation Value { - get { return m_value; } + get { return m_value; } set { m_value = value; } } #endregion @@ -28580,24 +32421,33 @@ private void Initialize(ThreeDOrientationState variable) variable.Value = m_value; variable.OnReadValue = OnReadValue; - variable.OnSimpleWriteValue = OnWriteValue; + variable.OnWriteValue = OnWriteValue; BaseVariableState instance = null; List updateList = new List(); updateList.Add(variable); instance = m_variable.A; - instance.OnReadValue = OnRead_A; - instance.OnSimpleWriteValue = OnWrite_A; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_A; + instance.OnWriteValue = OnWrite_A; + updateList.Add(instance); + } instance = m_variable.B; - instance.OnReadValue = OnRead_B; - instance.OnSimpleWriteValue = OnWrite_B; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_B; + instance.OnWriteValue = OnWrite_B; + updateList.Add(instance); + } instance = m_variable.C; - instance.OnReadValue = OnRead_C; - instance.OnSimpleWriteValue = OnWrite_C; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_C; + instance.OnWriteValue = OnWrite_C; + updateList.Add(instance); + } SetUpdateList(updateList); } @@ -28626,16 +32476,64 @@ protected ServiceResult OnReadValue( } } - private ServiceResult OnWriteValue(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWriteValue( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { - m_value = (ThreeDOrientation)Write(value); + ThreeDOrientation newValue; + if (value is ExtensionObject extensionObject) + { + newValue = (ThreeDOrientation)extensionObject.Body; + } + else + { + newValue = (ThreeDOrientation)value; + } + + if (!Utils.IsEqual(m_value, newValue)) + { + UpdateChildrenChangeMasks(context, ref newValue, ref statusCode, ref timestamp); + Timestamp = timestamp; + m_value = (ThreeDOrientation)Write(newValue); + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + } } return ServiceResult.Good; } + private void UpdateChildrenChangeMasks(ISystemContext context, ref ThreeDOrientation newValue, ref StatusCode statusCode, ref DateTime timestamp) + { + if (!Utils.IsEqual(m_value.A, newValue.A)) UpdateChildVariableStatus(m_variable.A, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.B, newValue.B)) UpdateChildVariableStatus(m_variable.B, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.C, newValue.C)) UpdateChildVariableStatus(m_variable.C, ref statusCode, ref timestamp); + } + + private void UpdateParent(ISystemContext context, ref StatusCode statusCode, ref DateTime timestamp) + { + Timestamp = timestamp; + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + m_variable.ClearChangeMasks(context, false); + } + + private void UpdateChildVariableStatus(BaseVariableState child, ref StatusCode statusCode, ref DateTime timestamp) + { + if (child == null) return; + child.StatusCode = statusCode; + if (timestamp == DateTime.MinValue) + { + timestamp = DateTime.UtcNow; + } + child.Timestamp = timestamp; + } + #region A Access Methods /// private ServiceResult OnRead_A( @@ -28651,21 +32549,50 @@ private ServiceResult OnRead_A( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.A; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.A; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_A(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_A( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.A, ref statusCode, ref timestamp); m_value.A = (double)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -28687,21 +32614,50 @@ private ServiceResult OnRead_B( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.B; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.B; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_B(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_B( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.B, ref statusCode, ref timestamp); m_value.B = (double)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -28723,21 +32679,50 @@ private ServiceResult OnRead_C( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.C; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.C; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_C(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_C( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.C, ref statusCode, ref timestamp); m_value.C = (double)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -28759,7 +32744,7 @@ private ServiceResult OnWrite_C(ISystemContext context, NodeState node, ref obje /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class FrameState : BaseDataVariableState + public partial class FrameState : BaseDataVariableState { #region Constructors /// @@ -29312,7 +33297,7 @@ public ThreeDFrameState Variable /// public ThreeDFrame Value { - get { return m_value; } + get { return m_value; } set { m_value = value; } } #endregion @@ -29327,20 +33312,26 @@ private void Initialize(ThreeDFrameState variable) variable.Value = m_value; variable.OnReadValue = OnReadValue; - variable.OnSimpleWriteValue = OnWriteValue; + variable.OnWriteValue = OnWriteValue; BaseVariableState instance = null; List updateList = new List(); updateList.Add(variable); instance = m_variable.CartesianCoordinates; - instance.OnReadValue = OnRead_CartesianCoordinates; - instance.OnSimpleWriteValue = OnWrite_CartesianCoordinates; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CartesianCoordinates; + instance.OnWriteValue = OnWrite_CartesianCoordinates; + updateList.Add(instance); + } instance = m_variable.Orientation; - instance.OnReadValue = OnRead_Orientation; - instance.OnSimpleWriteValue = OnWrite_Orientation; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_Orientation; + instance.OnWriteValue = OnWrite_Orientation; + updateList.Add(instance); + } SetUpdateList(updateList); } @@ -29369,16 +33360,63 @@ protected ServiceResult OnReadValue( } } - private ServiceResult OnWriteValue(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWriteValue( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { - m_value = (ThreeDFrame)Write(value); + ThreeDFrame newValue; + if (value is ExtensionObject extensionObject) + { + newValue = (ThreeDFrame)extensionObject.Body; + } + else + { + newValue = (ThreeDFrame)value; + } + + if (!Utils.IsEqual(m_value, newValue)) + { + UpdateChildrenChangeMasks(context, ref newValue, ref statusCode, ref timestamp); + Timestamp = timestamp; + m_value = (ThreeDFrame)Write(newValue); + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + } } return ServiceResult.Good; } + private void UpdateChildrenChangeMasks(ISystemContext context, ref ThreeDFrame newValue, ref StatusCode statusCode, ref DateTime timestamp) + { + if (!Utils.IsEqual(m_value.CartesianCoordinates, newValue.CartesianCoordinates)) UpdateChildVariableStatus(m_variable.CartesianCoordinates, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.Orientation, newValue.Orientation)) UpdateChildVariableStatus(m_variable.Orientation, ref statusCode, ref timestamp); + } + + private void UpdateParent(ISystemContext context, ref StatusCode statusCode, ref DateTime timestamp) + { + Timestamp = timestamp; + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + m_variable.ClearChangeMasks(context, false); + } + + private void UpdateChildVariableStatus(BaseVariableState child, ref StatusCode statusCode, ref DateTime timestamp) + { + if (child == null) return; + child.StatusCode = statusCode; + if (timestamp == DateTime.MinValue) + { + timestamp = DateTime.UtcNow; + } + child.Timestamp = timestamp; + } + #region CartesianCoordinates Access Methods /// private ServiceResult OnRead_CartesianCoordinates( @@ -29394,21 +33432,50 @@ private ServiceResult OnRead_CartesianCoordinates( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CartesianCoordinates; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CartesianCoordinates; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CartesianCoordinates(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CartesianCoordinates( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CartesianCoordinates, ref statusCode, ref timestamp); m_value.CartesianCoordinates = (ThreeDCartesianCoordinates)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -29430,21 +33497,50 @@ private ServiceResult OnRead_Orientation( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.Orientation; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.Orientation; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_Orientation(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_Orientation( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.Orientation, ref statusCode, ref timestamp); m_value.Orientation = (ThreeDOrientation)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -30550,72 +34646,26 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8EYIACAQAAAAAAGQAAAEZpbGVEaXJlY3RvcnlUeXBlSW5zdGFuY2UBACk0AQApNCk0AAD/" + - "////BgAAAARgwAoBAAAAHQAAAEZpbGVEaXJlY3RvcnlOYW1lX1BsYWNlaG9sZGVyAAATAAAAPEZpbGVE" + - "aXJlY3RvcnlOYW1lPgEAKjQAIwEAKTQqNAAA/////wQAAAAEYYIKBAAAAAAADwAAAENyZWF0ZURpcmVj" + - "dG9yeQEAKzQALwEASzQrNAAAAQH/////AgAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBACw0" + - "AC4ARCw0AACWAQAAAAEAKgEBHAAAAA0AAABEaXJlY3RvcnlOYW1lAAz/////AAAAAAABACgBAQAAAAEA" + - "AAAAAAAAAQH/////AAAAABdgqQoCAAAAAAAPAAAAT3V0cHV0QXJndW1lbnRzAQAtNAAuAEQtNAAAlgEA" + - "AAABACoBAR4AAAAPAAAARGlyZWN0b3J5Tm9kZUlkABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/" + - "////AAAAAARhggoEAAAAAAAKAAAAQ3JlYXRlRmlsZQEALjQALwEATjQuNAAAAQH/////AgAAABdgqQoC" + - "AAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAC80AC4ARC80AACWAgAAAAEAKgEBFwAAAAgAAABGaWxlTmFt" + - "ZQAM/////wAAAAAAAQAqAQEeAAAADwAAAFJlcXVlc3RGaWxlT3BlbgAB/////wAAAAAAAQAoAQEAAAAB" + - "AAAAAAAAAAEB/////wAAAAAXYKkKAgAAAAAADwAAAE91dHB1dEFyZ3VtZW50cwEAMDQALgBEMDQAAJYC" + - "AAAAAQAqAQEZAAAACgAAAEZpbGVOb2RlSWQAEf////8AAAAAAAEAKgEBGQAAAAoAAABGaWxlSGFuZGxl" + - "AAf/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARhwgoEAAAAFgAAAERlbGV0ZUZpbGVT" + - "eXN0ZW1PYmplY3QAAAYAAABEZWxldGUBADZFAC8BAFE0NkUAAAEB/////wEAAAAXYKkKAgAAAAAADgAA" + - "AElucHV0QXJndW1lbnRzAQA3RQAuAEQ3RQAAlgEAAAABACoBAR0AAAAOAAAAT2JqZWN0VG9EZWxldGUA" + - "Ef////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAAAoAAABNb3ZlT3JDb3B5" + - "AQAzNAAvAQBTNDM0AAABAf////8CAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEANDQALgBE" + - "NDQAAJYEAAAAAQAqAQEhAAAAEgAAAE9iamVjdFRvTW92ZU9yQ29weQAR/////wAAAAAAAQAqAQEeAAAA" + - "DwAAAFRhcmdldERpcmVjdG9yeQAR/////wAAAAAAAQAqAQEZAAAACgAAAENyZWF0ZUNvcHkAAf////8A" + - "AAAAAAEAKgEBFgAAAAcAAABOZXdOYW1lAAz/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAA" + - "ABdgqQoCAAAAAAAPAAAAT3V0cHV0QXJndW1lbnRzAQA1NAAuAEQ1NAAAlgEAAAABACoBARgAAAAJAAAA" + - "TmV3Tm9kZUlkABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARgwAoBAAAAFAAAAEZp" + - "bGVOYW1lX1BsYWNlaG9sZGVyAAAKAAAAPEZpbGVOYW1lPgEANjQAIwEANy02NAAA/////woAAAAVYIkK" + - "AgAAAAAABAAAAFNpemUBADc0AC4ARDc0AAAACf////8BAf////8AAAAAFWCJCgIAAAAAAAgAAABXcml0" + - "YWJsZQEAODQALgBEODQAAAAB/////wEB/////wAAAAAVYIkKAgAAAAAADAAAAFVzZXJXcml0YWJsZQEA" + - "OTQALgBEOTQAAAAB/////wEB/////wAAAAAVYIkKAgAAAAAACQAAAE9wZW5Db3VudAEAOjQALgBEOjQA" + - "AAAF/////wEB/////wAAAAAEYYIKBAAAAAAABAAAAE9wZW4BADw0AC8BADwtPDQAAAEB/////wIAAAAX" + - "YKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQA9NAAuAEQ9NAAAlgEAAAABACoBARMAAAAEAAAATW9k" + - "ZQAD/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAXYKkKAgAAAAAADwAAAE91dHB1dEFy" + - "Z3VtZW50cwEAPjQALgBEPjQAAJYBAAAAAQAqAQEZAAAACgAAAEZpbGVIYW5kbGUAB/////8AAAAAAAEA" + - "KAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAAAUAAABDbG9zZQEAPzQALwEAPy0/NAAAAQH/" + - "////AQAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAEA0AC4AREA0AACWAQAAAAEAKgEBGQAA" + - "AAoAAABGaWxlSGFuZGxlAAf/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARhggoEAAAA" + - "AAAEAAAAUmVhZAEAQTQALwEAQS1BNAAAAQH/////AgAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVu" + - "dHMBAEI0AC4AREI0AACWAgAAAAEAKgEBGQAAAAoAAABGaWxlSGFuZGxlAAf/////AAAAAAABACoBARUA" + - "AAAGAAAATGVuZ3RoAAb/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAABdgqQoCAAAAAAAP" + - "AAAAT3V0cHV0QXJndW1lbnRzAQBDNAAuAERDNAAAlgEAAAABACoBARMAAAAEAAAARGF0YQAP/////wAA" + - "AAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAEYYIKBAAAAAAABQAAAFdyaXRlAQBENAAvAQBELUQ0" + - "AAABAf////8BAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEARTQALgBERTQAAJYCAAAAAQAq" + - "AQEZAAAACgAAAEZpbGVIYW5kbGUAB/////8AAAAAAAEAKgEBEwAAAAQAAABEYXRhAA//////AAAAAAAB" + - "ACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARhggoEAAAAAAALAAAAR2V0UG9zaXRpb24BAEY0AC8BAEYt" + - "RjQAAAEB/////wIAAAAXYKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQBHNAAuAERHNAAAlgEAAAAB" + - "ACoBARkAAAAKAAAARmlsZUhhbmRsZQAH/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAX" + - "YKkKAgAAAAAADwAAAE91dHB1dEFyZ3VtZW50cwEASDQALgBESDQAAJYBAAAAAQAqAQEXAAAACAAAAFBv" + - "c2l0aW9uAAn/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARhggoEAAAAAAALAAAAU2V0" + - "UG9zaXRpb24BAEk0AC8BAEktSTQAAAEB/////wEAAAAXYKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRz" + - "AQBKNAAuAERKNAAAlgIAAAABACoBARkAAAAKAAAARmlsZUhhbmRsZQAH/////wAAAAAAAQAqAQEXAAAA" + - "CAAAAFBvc2l0aW9uAAn/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARhggoEAAAAAAAP" + - "AAAAQ3JlYXRlRGlyZWN0b3J5AQBLNAAvAQBLNEs0AAABAf////8CAAAAF2CpCgIAAAAAAA4AAABJbnB1" + - "dEFyZ3VtZW50cwEATDQALgBETDQAAJYBAAAAAQAqAQEcAAAADQAAAERpcmVjdG9yeU5hbWUADP////8A" + - "AAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVudHMB" + - "AE00AC4ARE00AACWAQAAAAEAKgEBHgAAAA8AAABEaXJlY3RvcnlOb2RlSWQAEf////8AAAAAAAEAKAEB" + - "AAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAAAoAAABDcmVhdGVGaWxlAQBONAAvAQBONE40AAAB" + - "Af////8CAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEATzQALgBETzQAAJYCAAAAAQAqAQEX" + - "AAAACAAAAEZpbGVOYW1lAAz/////AAAAAAABACoBAR4AAAAPAAAAUmVxdWVzdEZpbGVPcGVuAAH/////" + - "AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAABdgqQoCAAAAAAAPAAAAT3V0cHV0QXJndW1lbnRz" + - "AQBQNAAuAERQNAAAlgIAAAABACoBARkAAAAKAAAARmlsZU5vZGVJZAAR/////wAAAAAAAQAqAQEZAAAA" + - "CgAAAEZpbGVIYW5kbGUAB/////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGHCCgQAAAAW" + - "AAAARGVsZXRlRmlsZVN5c3RlbU9iamVjdAAABgAAAERlbGV0ZQEAUTQALwEAUTRRNAAAAQH/////AQAA" + - "ABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAFI0AC4ARFI0AACWAQAAAAEAKgEBHQAAAA4AAABP" + - "YmplY3RUb0RlbGV0ZQAR/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAEYYIKBAAAAAAA" + - "CgAAAE1vdmVPckNvcHkBAFM0AC8BAFM0UzQAAAEB/////wIAAAAXYKkKAgAAAAAADgAAAElucHV0QXJn" + - "dW1lbnRzAQBUNAAuAERUNAAAlgQAAAABACoBASEAAAASAAAAT2JqZWN0VG9Nb3ZlT3JDb3B5ABH/////" + - "AAAAAAABACoBAR4AAAAPAAAAVGFyZ2V0RGlyZWN0b3J5ABH/////AAAAAAABACoBARkAAAAKAAAAQ3Jl" + - "YXRlQ29weQAB/////wAAAAAAAQAqAQEWAAAABwAAAE5ld05hbWUADP////8AAAAAAAEAKAEBAAAAAQAA" + - "AAAAAAABAf////8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVudHMBAFU0AC4ARFU0AACWAQAA" + - "AAEAKgEBGAAAAAkAAABOZXdOb2RlSWQAEf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAA"; + "////BAAAAARhggoEAAAAAAAPAAAAQ3JlYXRlRGlyZWN0b3J5AQBLNAAvAQBLNEs0AAABAf////8CAAAA" + + "F2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEATDQALgBETDQAAJYBAAAAAQAqAQEcAAAADQAAAERp" + + "cmVjdG9yeU5hbWUADP////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAAF2CpCgIAAAAAAA8A" + + "AABPdXRwdXRBcmd1bWVudHMBAE00AC4ARE00AACWAQAAAAEAKgEBHgAAAA8AAABEaXJlY3RvcnlOb2Rl" + + "SWQAEf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAAAoAAABDcmVhdGVG" + + "aWxlAQBONAAvAQBONE40AAABAf////8CAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEATzQA" + + "LgBETzQAAJYCAAAAAQAqAQEXAAAACAAAAEZpbGVOYW1lAAz/////AAAAAAABACoBAR4AAAAPAAAAUmVx" + + "dWVzdEZpbGVPcGVuAAH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAABdgqQoCAAAAAAAP" + + "AAAAT3V0cHV0QXJndW1lbnRzAQBQNAAuAERQNAAAlgIAAAABACoBARkAAAAKAAAARmlsZU5vZGVJZAAR" + + "/////wAAAAAAAQAqAQEZAAAACgAAAEZpbGVIYW5kbGUAB/////8AAAAAAAEAKAEBAAAAAQAAAAAAAAAB" + + "Af////8AAAAABGHCCgQAAAAWAAAARGVsZXRlRmlsZVN5c3RlbU9iamVjdAAABgAAAERlbGV0ZQEAUTQA" + + "LwEAUTRRNAAAAQH/////AQAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAFI0AC4ARFI0AACW" + + "AQAAAAEAKgEBHQAAAA4AAABPYmplY3RUb0RlbGV0ZQAR/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB" + + "/////wAAAAAEYYIKBAAAAAAACgAAAE1vdmVPckNvcHkBAFM0AC8BAFM0UzQAAAEB/////wIAAAAXYKkK" + + "AgAAAAAADgAAAElucHV0QXJndW1lbnRzAQBUNAAuAERUNAAAlgQAAAABACoBASEAAAASAAAAT2JqZWN0" + + "VG9Nb3ZlT3JDb3B5ABH/////AAAAAAABACoBAR4AAAAPAAAAVGFyZ2V0RGlyZWN0b3J5ABH/////AAAA" + + "AAABACoBARkAAAAKAAAAQ3JlYXRlQ29weQAB/////wAAAAAAAQAqAQEWAAAABwAAAE5ld05hbWUADP//" + + "//8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVu" + + "dHMBAFU0AC4ARFU0AACWAQAAAAEAKgEBGAAAAAkAAABOZXdOb2RlSWQAEf////8AAAAAAAEAKAEBAAAA" + + "AQAAAAAAAAABAf////8AAAAA"; #endregion #endif #endregion @@ -31314,7 +35364,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8EYIACAQAAAAAAIQAAAFRlbXBvcmFyeUZpbGVUcmFuc2ZlclR5cGVJbnN0YW5jZQEAgD0B" + - "AIA9gD0AAP////8FAAAAFWCJCgIAAAAAABcAAABDbGllbnRQcm9jZXNzaW5nVGltZW91dAEAgT0ALgBE" + + "AIA9gD0AAP////8EAAAAFWCJCgIAAAAAABcAAABDbGllbnRQcm9jZXNzaW5nVGltZW91dAEAgT0ALgBE" + "gT0AAAEAIgH/////AQH/////AAAAAARhggoEAAAAAAATAAAAR2VuZXJhdGVGaWxlRm9yUmVhZAEAgj0A" + "LwEAgj2CPQAAAQH/////AgAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAIM9AC4ARIM9AACW" + "AQAAAAEAKgEBHgAAAA8AAABHZW5lcmF0ZU9wdGlvbnMAGP////8AAAAAAAEAKAEBAAAAAQAAAAAAAAAB" + @@ -31330,11 +35380,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) "PYc9AAABAf////8CAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEAiD0ALgBEiD0AAJYBAAAA" + "AQAqAQEZAAAACgAAAEZpbGVIYW5kbGUAB/////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAA" + "F2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVudHMBAIk9AC4ARIk9AACWAQAAAAEAKgEBJQAAABYAAABD" + - "b21wbGV0aW9uU3RhdGVNYWNoaW5lABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARg" + - "wAoBAAAAGQAAAFRyYW5zZmVyU3RhdGVfUGxhY2Vob2xkZXIAAA8AAAA8VHJhbnNmZXJTdGF0ZT4BAIo9" + - "AC8BALs9ij0AAP////8CAAAAFWCJCgIAAAAAAAwAAABDdXJyZW50U3RhdGUBAIs9AC8BAMgKiz0AAAAV" + - "/////wEB/////wEAAAAVYIkKAgAAAAAAAgAAAElkAQCMPQAuAESMPQAAABH/////AQH/////AAAAAARh" + - "ggoEAAAAAAAFAAAAUmVzZXQBALI9AC8BAOM9sj0AAAEB/////wAAAAA="; + "b21wbGV0aW9uU3RhdGVNYWNoaW5lABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAA=="; #endregion #endif #endregion @@ -31934,40 +35980,9 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8EYIACAQAAAAAAJAAAAEZpbGVUcmFuc2ZlclN0YXRlTWFjaGluZVR5cGVJbnN0YW5jZQEA" + - "uz0BALs9uz0AAP////8QAAAAFWCJCgIAAAAAAAwAAABDdXJyZW50U3RhdGUBALw9AC8BAMgKvD0AAAAV" + - "/////wEB/////wEAAAAVYIkKAgAAAAAAAgAAAElkAQC9PQAuAES9PQAAABH/////AQH/////AAAAAARg" + - "gAoBAAAAAAAEAAAASWRsZQEAxz0ALwEABQnHPQAABQAAAAAzAQEA0T0ANAEBANU9ADMBAQDXPQA0AQEA" + - "2T0ANAEBAOE9AQAAABVgqQoCAAAAAAALAAAAU3RhdGVOdW1iZXIBAMg9AC4ARMg9AAAHAQAAAAAH////" + - "/wEB/////wAAAAAEYIAKAQAAAAAACwAAAFJlYWRQcmVwYXJlAQDJPQAvAQADCck9AAADAAAAADQBAQDR" + - "PQAzAQEA0z0AMwEBANs9AQAAABVgqQoCAAAAAAALAAAAU3RhdGVOdW1iZXIBAMo9AC4ARMo9AAAHAgAA" + - "AAAH/////wEB/////wAAAAAEYIAKAQAAAAAADAAAAFJlYWRUcmFuc2ZlcgEAyz0ALwEAAwnLPQAAAwAA" + - "AAA0AQEA0z0AMwEBANU9ADMBAQDdPQEAAAAVYKkKAgAAAAAACwAAAFN0YXRlTnVtYmVyAQDMPQAuAETM" + - "PQAABwMAAAAAB/////8BAf////8AAAAABGCACgEAAAAAAAoAAABBcHBseVdyaXRlAQDNPQAvAQADCc09" + - "AAADAAAAADQBAQDXPQAzAQEA2T0AMwEBAN89AQAAABVgqQoCAAAAAAALAAAAU3RhdGVOdW1iZXIBAM49" + - "AC4ARM49AAAHBAAAAAAH/////wEB/////wAAAAAEYIAKAQAAAAAABQAAAEVycm9yAQDPPQAvAQADCc89" + - "AAAEAAAAADQBAQDbPQA0AQEA3T0ANAEBAN89ADMBAQDhPQEAAAAVYKkKAgAAAAAACwAAAFN0YXRlTnVt" + - "YmVyAQDQPQAuAETQPQAABwUAAAAAB/////8BAf////8AAAAABGCACgEAAAAAABEAAABJZGxlVG9SZWFk" + - "UHJlcGFyZQEA0T0ALwEABgnRPQAAAwAAAAAzAAEAxz0ANAABAMk9ADYAAQAHCQEAAAAVYKkKAgAAAAAA" + - "EAAAAFRyYW5zaXRpb25OdW1iZXIBANI9AC4ARNI9AAAHDAAAAAAH/////wEB/////wAAAAAEYIAKAQAA" + - "AAAAGQAAAFJlYWRQcmVwYXJlVG9SZWFkVHJhbnNmZXIBANM9AC8BAAYJ0z0AAAMAAAAAMwABAMk9ADQA" + - "AQDLPQA2AAEABwkBAAAAFWCpCgIAAAAAABAAAABUcmFuc2l0aW9uTnVtYmVyAQDUPQAuAETUPQAABxcA" + - "AAAAB/////8BAf////8AAAAABGCACgEAAAAAABIAAABSZWFkVHJhbnNmZXJUb0lkbGUBANU9AC8BAAYJ" + - "1T0AAAMAAAAAMwABAMs9ADQAAQDHPQA2AAEABwkBAAAAFWCpCgIAAAAAABAAAABUcmFuc2l0aW9uTnVt" + - "YmVyAQDWPQAuAETWPQAABx8AAAAAB/////8BAf////8AAAAABGCACgEAAAAAABAAAABJZGxlVG9BcHBs" + - "eVdyaXRlAQDXPQAvAQAGCdc9AAADAAAAADMAAQDHPQA0AAEAzT0ANgABAAcJAQAAABVgqQoCAAAAAAAQ" + - "AAAAVHJhbnNpdGlvbk51bWJlcgEA2D0ALgBE2D0AAAcOAAAAAAf/////AQH/////AAAAAARggAoBAAAA" + - "AAAQAAAAQXBwbHlXcml0ZVRvSWRsZQEA2T0ALwEABgnZPQAAAwAAAAAzAAEAzT0ANAABAMc9ADYAAQAH" + - "CQEAAAAVYKkKAgAAAAAAEAAAAFRyYW5zaXRpb25OdW1iZXIBANo9AC4ARNo9AAAHKQAAAAAH/////wEB" + - "/////wAAAAAEYIAKAQAAAAAAEgAAAFJlYWRQcmVwYXJlVG9FcnJvcgEA2z0ALwEABgnbPQAAAwAAAAAz" + - "AAEAyT0ANAABAM89ADYAAQAHCQEAAAAVYKkKAgAAAAAAEAAAAFRyYW5zaXRpb25OdW1iZXIBANw9AC4A" + - "RNw9AAAHGQAAAAAH/////wEB/////wAAAAAEYIAKAQAAAAAAEwAAAFJlYWRUcmFuc2ZlclRvRXJyb3IB" + - "AN09AC8BAAYJ3T0AAAMAAAAAMwABAMs9ADQAAQDPPQA2AAEABwkBAAAAFWCpCgIAAAAAABAAAABUcmFu" + - "c2l0aW9uTnVtYmVyAQDePQAuAETePQAAByMAAAAAB/////8BAf////8AAAAABGCACgEAAAAAABEAAABB" + - "cHBseVdyaXRlVG9FcnJvcgEA3z0ALwEABgnfPQAAAwAAAAAzAAEAzT0ANAABAM89ADYAAQAHCQEAAAAV" + - "YKkKAgAAAAAAEAAAAFRyYW5zaXRpb25OdW1iZXIBAOA9AC4AROA9AAAHLQAAAAAH/////wEB/////wAA" + - "AAAEYIAKAQAAAAAACwAAAEVycm9yVG9JZGxlAQDhPQAvAQAGCeE9AAADAAAAADMAAQDPPQA0AAEAxz0A" + - "NgABAAcJAQAAABVgqQoCAAAAAAAQAAAAVHJhbnNpdGlvbk51bWJlcgEA4j0ALgBE4j0AAAczAAAAAAf/" + - "////AQH/////AAAAAARhggoEAAAAAAAFAAAAUmVzZXQBAOM9AC8BAOM94z0AAAEB/////wAAAAA="; + "uz0BALs9uz0AAP////8CAAAAFWCJCgIAAAAAAAwAAABDdXJyZW50U3RhdGUBALw9AC8BAMgKvD0AAAAV" + + "/////wEB/////wEAAAAVYIkKAgAAAAAAAgAAAElkAQC9PQAuAES9PQAAABH/////AQH/////AAAAAARh" + + "ggoEAAAAAAAFAAAAUmVzZXQBAOM9AC8BAOM94z0AAAEB/////wAAAAA="; #endregion #endif #endregion @@ -32104,17 +36119,15 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = - "//////////8EYIACAQAAAAAAEwAAAFJvbGVTZXRUeXBlSW5zdGFuY2UBAPc8AQD3PPc8AAD/////AwAA" + - "AARgwAoBAAAAFAAAAFJvbGVOYW1lX1BsYWNlaG9sZGVyAAAKAAAAPFJvbGVOYW1lPgEA+DwALwEABD34" + - "PAAA/////wEAAAAXYIkKAgAAAAAACgAAAElkZW50aXRpZXMBACI/AC4ARCI/AAABABI9AQAAAAEAAAAA" + - "AAAAAQH/////AAAAAARhggoEAAAAAAAHAAAAQWRkUm9sZQEAfT4ALwEAfT59PgAAAQH/////AgAAABdg" + - "qQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAH4+AC4ARH4+AACWAgAAAAEAKgEBFwAAAAgAAABSb2xl" + - "TmFtZQAM/////wAAAAAAAQAqAQEbAAAADAAAAE5hbWVzcGFjZVVyaQAM/////wAAAAAAAQAoAQEAAAAB" + - "AAAAAAAAAAEB/////wAAAAAXYKkKAgAAAAAADwAAAE91dHB1dEFyZ3VtZW50cwEAfz4ALgBEfz4AAJYB" + - "AAAAAQAqAQEZAAAACgAAAFJvbGVOb2RlSWQAEf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8A" + - "AAAABGGCCgQAAAAAAAoAAABSZW1vdmVSb2xlAQCAPgAvAQCAPoA+AAABAf////8BAAAAF2CpCgIAAAAA" + - "AA4AAABJbnB1dEFyZ3VtZW50cwEAgT4ALgBEgT4AAJYBAAAAAQAqAQEZAAAACgAAAFJvbGVOb2RlSWQA" + - "Ef////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAA"; + "//////////8EYIACAQAAAAAAEwAAAFJvbGVTZXRUeXBlSW5zdGFuY2UBAPc8AQD3PPc8AAD/////AgAA" + + "AARhggoEAAAAAAAHAAAAQWRkUm9sZQEAfT4ALwEAfT59PgAAAQH/////AgAAABdgqQoCAAAAAAAOAAAA" + + "SW5wdXRBcmd1bWVudHMBAH4+AC4ARH4+AACWAgAAAAEAKgEBFwAAAAgAAABSb2xlTmFtZQAM/////wAA" + + "AAAAAQAqAQEbAAAADAAAAE5hbWVzcGFjZVVyaQAM/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB////" + + "/wAAAAAXYKkKAgAAAAAADwAAAE91dHB1dEFyZ3VtZW50cwEAfz4ALgBEfz4AAJYBAAAAAQAqAQEZAAAA" + + "CgAAAFJvbGVOb2RlSWQAEf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAA" + + "AAoAAABSZW1vdmVSb2xlAQCAPgAvAQCAPoA+AAABAf////8BAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFy" + + "Z3VtZW50cwEAgT4ALgBEgT4AAJYBAAAAAQAqAQEZAAAACgAAAFJvbGVOb2RlSWQAEf////8AAAAAAAEA" + + "KAEBAAAAAQAAAAAAAAABAf////8AAAAA"; #endregion #endif #endregion @@ -33859,8 +37872,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8EYIACAQAAAAAAGwAAAERpY3Rpb25hcnlFbnRyeVR5cGVJbnN0YW5jZQEAtUQBALVEtUQA" + - "AP////8BAAAABGDACgEAAAAfAAAARGljdGlvbmFyeUVudHJ5TmFtZV9QbGFjZWhvbGRlcgAAFQAAADxE" + - "aWN0aW9uYXJ5RW50cnlOYW1lPgEAtkQALwEAtUS2RAAA/////wAAAAA="; + "AP////8AAAAA"; #endregion #endif #endregion @@ -33921,10 +37933,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8EYIACAQAAAAAAHAAAAERpY3Rpb25hcnlGb2xkZXJUeXBlSW5zdGFuY2UBALdEAQC3RLdE" + - "AAD/////AgAAAARgwAoBAAAAIAAAAERpY3Rpb25hcnlGb2xkZXJOYW1lX1BsYWNlaG9sZGVyAAAWAAAA" + - "PERpY3Rpb25hcnlGb2xkZXJOYW1lPgEAuEQALwEAt0S4RAAA/////wAAAAAEYMAKAQAAAB8AAABEaWN0" + - "aW9uYXJ5RW50cnlOYW1lX1BsYWNlaG9sZGVyAAAVAAAAPERpY3Rpb25hcnlFbnRyeU5hbWU+AQC5RAAv" + - "AQC1RLlEAAD/////AAAAAA=="; + "AAD/////AAAAAA=="; #endregion #endif #endregion @@ -34316,10 +38325,8 @@ protected override void InitializeOptionalChildren(ISystemContext context) private const string InitializationString = "//////////8EYIACAQAAAAAAFwAAAE9yZGVyZWRMaXN0VHlwZUluc3RhbmNlAQDeWwEA3lveWwAAAQAA" + - "AAApAAEAVQgCAAAABGDACgEAAAAZAAAAT3JkZXJlZE9iamVjdF9QbGFjZWhvbGRlcgAADwAAADxPcmRl" + - "cmVkT2JqZWN0PgEA31sAMQA631sAAAEAAAABAMNEAAEA2VsBAAAAFWCJCgIAAAAAAAwAAABOdW1iZXJJ" + - "bkxpc3QBAOFbAC4AROFbAAAAGv////8BAf////8AAAAAFWCJCgIAAAAAAAsAAABOb2RlVmVyc2lvbgEA" + - "5VsALgBE5VsAAAAM/////wEB/////wAAAAA="; + "AAApAAEAVQgBAAAAFWCJCgIAAAAAAAsAAABOb2RlVmVyc2lvbgEA5VsALgBE5VsAAAAM/////wEB////" + + "/wAAAAA="; #endregion #endif #endregion @@ -38221,7 +42228,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) "AAEAAAAAAAAAAQH/////AAAAAA=="; private const string InitializationString = - "//////////8EYIACAQAAAAAAFQAAAENvbmRpdGlvblR5cGVJbnN0YW5jZQEA3goBAN4K3goAAP////8Z" + + "//////////8EYIACAQAAAAAAFQAAAENvbmRpdGlvblR5cGVJbnN0YW5jZQEA3goBAN4K3goAAP////8X" + "AAAAFWCJCgIAAAAAAAcAAABFdmVudElkAQAZDwAuAEQZDwAAAA//////AQH/////AAAAABVgiQoCAAAA" + "AAAJAAAARXZlbnRUeXBlAQAaDwAuAEQaDwAAABH/////AQH/////AAAAABVgiQoCAAAAAAAKAAAAU291" + "cmNlTm9kZQEAGw8ALgBEGw8AAAAR/////wEB/////wAAAAAVYIkKAgAAAAAACgAAAFNvdXJjZU5hbWUB" + @@ -38255,17 +42262,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) "AAAXYKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQBGIwAuAERGIwAAlgIAAAABACoBAUYAAAAHAAAA" + "RXZlbnRJZAAP/////wAAAAADAAAAACgAAABUaGUgaWRlbnRpZmllciBmb3IgdGhlIGV2ZW50IHRvIGNv" + "bW1lbnQuAQAqAQFCAAAABwAAAENvbW1lbnQAFf////8AAAAAAwAAAAAkAAAAVGhlIGNvbW1lbnQgdG8g" + - "YWRkIHRvIHRoZSBjb25kaXRpb24uAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAEYYIKBAAAAAAAEAAA" + - "AENvbmRpdGlvblJlZnJlc2gBACMPAC8BACMPIw8AAAEBAgAAAAEA+QsAAQDjCgEA+QsAAQDkCgEAAAAX" + - "YKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQAkDwAuAEQkDwAAlgEAAAABACoBAVYAAAAOAAAAU3Vi" + - "c2NyaXB0aW9uSWQBACAB/////wAAAAADAAAAAC8AAABUaGUgaWRlbnRpZmllciBmb3IgdGhlIHN1YnNj" + - "cmlwdGlvbiB0byByZWZyZXNoLgEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAABEAAABD" + - "b25kaXRpb25SZWZyZXNoMgEAcDIALwEAcDJwMgAAAQECAAAAAQD5CwABAOMKAQD5CwABAOQKAQAAABdg" + - "qQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAHEyAC4ARHEyAACWAgAAAAEAKgEBVgAAAA4AAABTdWJz" + - "Y3JpcHRpb25JZAEAIAH/////AAAAAAMAAAAALwAAAFRoZSBpZGVudGlmaWVyIGZvciB0aGUgc3Vic2Ny" + - "aXB0aW9uIHRvIHJlZnJlc2guAQAqAQFZAAAADwAAAE1vbml0b3JlZEl0ZW1JZAEAIAH/////AAAAAAMA" + - "AAAAMQAAAFRoZSBpZGVudGlmaWVyIGZvciB0aGUgbW9uaXRvcmVkIGl0ZW0gdG8gcmVmcmVzaC4BACgB" + - "AQAAAAEAAAAAAAAAAQH/////AAAAAA=="; + "YWRkIHRvIHRoZSBjb25kaXRpb24uAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAA="; #endregion #endif #endregion @@ -40490,7 +44487,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) private const string InitializationString = "//////////8EYIACAQAAAAAAGgAAAEFsYXJtQ29uZGl0aW9uVHlwZUluc3RhbmNlAQBjCwEAYwtjCwAA" + - "/////y8AAAAVYIkKAgAAAAAABwAAAEV2ZW50SWQBAKQVAC4ARKQVAAAAD/////8BAf////8AAAAAFWCJ" + + "/////y4AAAAVYIkKAgAAAAAABwAAAEV2ZW50SWQBAKQVAC4ARKQVAAAAD/////8BAf////8AAAAAFWCJ" + "CgIAAAAAAAkAAABFdmVudFR5cGUBAKUVAC4ARKUVAAAAEf////8BAf////8AAAAAFWCJCgIAAAAAAAoA" + "AABTb3VyY2VOb2RlAQCmFQAuAESmFQAAABH/////AQH/////AAAAABVgiQoCAAAAAAAKAAAAU291cmNl" + "TmFtZQEApxUALgBEpxUAAAAM/////wEB/////wAAAAAVYIkKAgAAAAAABAAAAFRpbWUBAKgVAC4ARKgV" + @@ -40571,16 +44568,15 @@ protected override void InitializeOptionalChildren(ISystemContext context) "AgAAAElkAQAPRwAuAEQPRwAAAAH/////AQH/////AAAAABVgiQoCAAAAAAAOAAAAVHJhbnNpdGlvblRp" + "bWUBABNHAC4ARBNHAAABACYB/////wEB/////wAAAAAVYKkKAgAAAAAACQAAAFRydWVTdGF0ZQEAFUcA" + "LgBEFUcAABUDAgAAAGVuBwAAAExhdGNoZWQAFf////8BAf////8AAAAAFWCpCgIAAAAAAAoAAABGYWxz" + - "ZVN0YXRlAQAWRwAuAEQWRwAAFQMCAAAAZW4JAAAAVW5sYXRjaGVkABX/////AQH/////AAAAAARgwAoB" + - "AAAAFgAAAEFsYXJtR3JvdXBfUGxhY2Vob2xkZXIAAAwAAAA8QWxhcm1Hcm91cD4BAA9AAQDpPwEAFUAP" + - "QAAA/////wAAAAAVYIkKAgAAAAAACwAAAFJlQWxhcm1UaW1lAQAQQAAuAEQQQAAAAQAiAf////8BAf//" + - "//8AAAAAFWCJCgIAAAAAABIAAABSZUFsYXJtUmVwZWF0Q291bnQBABFAAC8APxFAAAAABP////8BAf//" + - "//8AAAAABGGCCgQAAAAAAAcAAABTaWxlbmNlAQASQAAvAQASQBJAAAABAQEAAAABAPkLAAEAWkMAAAAA" + - "BGGCCgQAAAAAAAgAAABTdXBwcmVzcwEAE0AALwEAE0ATQAAAAQEBAAAAAQD5CwABAElDAAAAAARhggoE" + - "AAAAAAAKAAAAVW5zdXBwcmVzcwEAzEUALwEAzEXMRQAAAQEBAAAAAQD5CwABAElDAAAAAARhggoEAAAA" + - "AAARAAAAUmVtb3ZlRnJvbVNlcnZpY2UBAM1FAC8BAM1FzUUAAAEBAQAAAAEA+QsAAQBrQwAAAAAEYYIK" + - "BAAAAAAADgAAAFBsYWNlSW5TZXJ2aWNlAQDORQAvAQDORc5FAAABAQEAAAABAPkLAAEAa0MAAAAABGGC" + - "CgQAAAAAAAUAAABSZXNldAEAF0cALwEAF0cXRwAAAQEBAAAAAQD5CwABAKU6AAAAAA=="; + "ZVN0YXRlAQAWRwAuAEQWRwAAFQMCAAAAZW4JAAAAVW5sYXRjaGVkABX/////AQH/////AAAAABVgiQoC" + + "AAAAAAALAAAAUmVBbGFybVRpbWUBABBAAC4ARBBAAAABACIB/////wEB/////wAAAAAVYIkKAgAAAAAA" + + "EgAAAFJlQWxhcm1SZXBlYXRDb3VudAEAEUAALwA/EUAAAAAE/////wEB/////wAAAAAEYYIKBAAAAAAA" + + "BwAAAFNpbGVuY2UBABJAAC8BABJAEkAAAAEBAQAAAAEA+QsAAQBaQwAAAAAEYYIKBAAAAAAACAAAAFN1" + + "cHByZXNzAQATQAAvAQATQBNAAAABAQEAAAABAPkLAAEASUMAAAAABGGCCgQAAAAAAAoAAABVbnN1cHBy" + + "ZXNzAQDMRQAvAQDMRcxFAAABAQEAAAABAPkLAAEASUMAAAAABGGCCgQAAAAAABEAAABSZW1vdmVGcm9t" + + "U2VydmljZQEAzUUALwEAzUXNRQAAAQEBAAAAAQD5CwABAGtDAAAAAARhggoEAAAAAAAOAAAAUGxhY2VJ" + + "blNlcnZpY2UBAM5FAC8BAM5FzkUAAAEBAQAAAAEA+QsAAQBrQwAAAAAEYYIKBAAAAAAABQAAAFJlc2V0" + + "AQAXRwAvAQAXRxdHAAABAQEAAAABAPkLAAEApToAAAAA"; #endregion #endif #endregion @@ -41730,45 +45726,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8EYIACAQAAAAAAFgAAAEFsYXJtR3JvdXBUeXBlSW5zdGFuY2UBABVAAQAVQBVAAAD/////" + - "AQAAAARgwAoBAAAAIgAAAEFsYXJtQ29uZGl0aW9uSW5zdGFuY2VfUGxhY2Vob2xkZXIAABgAAAA8QWxh" + - "cm1Db25kaXRpb25JbnN0YW5jZT4BABZAAQDqPwEAYwsWQAAA/////xoAAAAVYIkKAgAAAAAABwAAAEV2" + - "ZW50SWQBABdAAC4ARBdAAAAAD/////8BAf////8AAAAAFWCJCgIAAAAAAAkAAABFdmVudFR5cGUBABhA" + - "AC4ARBhAAAAAEf////8BAf////8AAAAAFWCJCgIAAAAAAAoAAABTb3VyY2VOb2RlAQAZQAAuAEQZQAAA" + - "ABH/////AQH/////AAAAABVgiQoCAAAAAAAKAAAAU291cmNlTmFtZQEAGkAALgBEGkAAAAAM/////wEB" + - "/////wAAAAAVYIkKAgAAAAAABAAAAFRpbWUBABtAAC4ARBtAAAABACYB/////wEB/////wAAAAAVYIkK" + - "AgAAAAAACwAAAFJlY2VpdmVUaW1lAQAcQAAuAEQcQAAAAQAmAf////8BAf////8AAAAAFWCJCgIAAAAA" + - "AAcAAABNZXNzYWdlAQAeQAAuAEQeQAAAABX/////AQH/////AAAAABVgiQoCAAAAAAAIAAAAU2V2ZXJp" + - "dHkBAB9AAC4ARB9AAAAABf////8BAf////8AAAAAFWCJCgIAAAAAABAAAABDb25kaXRpb25DbGFzc0lk" + - "AQAgQAAuAEQgQAAAABH/////AQH/////AAAAABVgiQoCAAAAAAASAAAAQ29uZGl0aW9uQ2xhc3NOYW1l" + - "AQAhQAAuAEQhQAAAABX/////AQH/////AAAAABVgiQoCAAAAAAANAAAAQ29uZGl0aW9uTmFtZQEAJEAA" + - "LgBEJEAAAAAM/////wEB/////wAAAAAVYIkKAgAAAAAACAAAAEJyYW5jaElkAQAlQAAuAEQlQAAAABH/" + - "////AQH/////AAAAABVgiQoCAAAAAAAGAAAAUmV0YWluAQAmQAAuAEQmQAAAAAH/////AQH/////AAAA" + - "ABVgiQoCAAAAAAAMAAAARW5hYmxlZFN0YXRlAQAnQAAvAQAjIydAAAAAFf////8BAQUAAAABACwjAAEA" + - "O0ABACwjAAEAREABACwjAAEAUUABACwjAAEAW0ABACwjAAEAdkABAAAAFWCJCgIAAAAAAAIAAABJZAEA" + - "KEAALgBEKEAAAAAB/////wEB/////wAAAAAVYIkKAgAAAAAABwAAAFF1YWxpdHkBADBAAC8BACojMEAA" + - "AAAT/////wEB/////wEAAAAVYIkKAgAAAAAADwAAAFNvdXJjZVRpbWVzdGFtcAEAMUAALgBEMUAAAAEA" + - "JgH/////AQH/////AAAAABVgiQoCAAAAAAAMAAAATGFzdFNldmVyaXR5AQAyQAAvAQAqIzJAAAAABf//" + - "//8BAf////8BAAAAFWCJCgIAAAAAAA8AAABTb3VyY2VUaW1lc3RhbXABADNAAC4ARDNAAAABACYB////" + - "/wEB/////wAAAAAVYIkKAgAAAAAABwAAAENvbW1lbnQBADRAAC8BACojNEAAAAAV/////wEB/////wEA" + - "AAAVYIkKAgAAAAAADwAAAFNvdXJjZVRpbWVzdGFtcAEANUAALgBENUAAAAEAJgH/////AQH/////AAAA" + - "ABVgiQoCAAAAAAAMAAAAQ2xpZW50VXNlcklkAQA2QAAuAEQ2QAAAAAz/////AQH/////AAAAAARhggoE" + - "AAAAAAAHAAAARGlzYWJsZQEAN0AALwEARCM3QAAAAQEBAAAAAQD5CwABAPMKAAAAAARhggoEAAAAAAAG" + - "AAAARW5hYmxlAQA4QAAvAQBDIzhAAAABAQEAAAABAPkLAAEA8woAAAAABGGCCgQAAAAAAAoAAABBZGRD" + - "b21tZW50AQA5QAAvAQBFIzlAAAABAQEAAAABAPkLAAEADQsBAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFy" + - "Z3VtZW50cwEAOkAALgBEOkAAAJYCAAAAAQAqAQFGAAAABwAAAEV2ZW50SWQAD/////8AAAAAAwAAAAAo" + - "AAAAVGhlIGlkZW50aWZpZXIgZm9yIHRoZSBldmVudCB0byBjb21tZW50LgEAKgEBQgAAAAcAAABDb21t" + - "ZW50ABX/////AAAAAAMAAAAAJAAAAFRoZSBjb21tZW50IHRvIGFkZCB0byB0aGUgY29uZGl0aW9uLgEA" + - "KAEBAAAAAQAAAAAAAAABAf////8AAAAAFWCJCgIAAAAAAAoAAABBY2tlZFN0YXRlAQA7QAAvAQAjIztA" + - "AAAAFf////8BAQEAAAABACwjAQEAJ0ABAAAAFWCJCgIAAAAAAAIAAABJZAEAPEAALgBEPEAAAAAB////" + - "/wEB/////wAAAAAEYYIKBAAAAAAACwAAAEFja25vd2xlZGdlAQBNQAAvAQCXI01AAAABAQEAAAABAPkL" + - "AAEA8CIBAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEATkAALgBETkAAAJYCAAAAAQAqAQFG" + - "AAAABwAAAEV2ZW50SWQAD/////8AAAAAAwAAAAAoAAAAVGhlIGlkZW50aWZpZXIgZm9yIHRoZSBldmVu" + - "dCB0byBjb21tZW50LgEAKgEBQgAAAAcAAABDb21tZW50ABX/////AAAAAAMAAAAAJAAAAFRoZSBjb21t" + - "ZW50IHRvIGFkZCB0byB0aGUgY29uZGl0aW9uLgEAKAEBAAAAAQAAAAAAAAABAf////8AAAAAFWCJCgIA" + - "AAAAAAsAAABBY3RpdmVTdGF0ZQEAUUAALwEAIyNRQAAAABX/////AQEBAAAAAQAsIwEBACdAAQAAABVg" + - "iQoCAAAAAAACAAAASWQBAFJAAC4ARFJAAAAAAf////8BAf////8AAAAAFWCJCgIAAAAAAAkAAABJbnB1" + - "dE5vZGUBAFpAAC4ARFpAAAAAEf////8BAf////8AAAAAFWCJCgIAAAAAABMAAABTdXBwcmVzc2VkT3JT" + - "aGVsdmVkAQCHQAAuAESHQAAAAAH/////AQH/////AAAAAA=="; + "AAAAAA=="; #endregion #endif #endregion @@ -41829,38 +45787,16 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8EYIACAQAAAAAAHwAAAFNoZWx2ZWRTdGF0ZU1hY2hpbmVUeXBlSW5zdGFuY2UBAHELAQBx" + - "C3ELAAD/////DgAAABVgiQoCAAAAAAAMAAAAQ3VycmVudFN0YXRlAQDIFwAvAQDICsgXAAAAFf////8B" + + "C3ELAAD/////BQAAABVgiQoCAAAAAAAMAAAAQ3VycmVudFN0YXRlAQDIFwAvAQDICsgXAAAAFf////8B" + "Af////8BAAAAFWCJCgIAAAAAAAIAAABJZAEAyRcALgBEyRcAAAAR/////wEB/////wAAAAAVYIkKAgAA" + - "AAAADAAAAFVuc2hlbHZlVGltZQEAmyMALgBEmyMAAAEAIgH/////AQH/////AAAAAARggAoBAAAAAAAJ" + - "AAAAVW5zaGVsdmVkAQByCwAvAQADCXILAAAEAAAAADMBAQB3CwAzAQEAeAsANAEBAHwLADQBAQB/CwEA" + - "AAAVYKkKAgAAAAAACwAAAFN0YXRlTnVtYmVyAQDSFwAuAETSFwAABwEAAAAAB/////8BAf////8AAAAA" + - "BGCACgEAAAAAAAwAAABUaW1lZFNoZWx2ZWQBAHQLAC8BAAMJdAsAAAQAAAAANAEBAHcLADMBAQB8CwAz" + - "AQEAfgsANAEBAIELAQAAABVgqQoCAAAAAAALAAAAU3RhdGVOdW1iZXIBANQXAC4ARNQXAAAHAgAAAAAH" + - "/////wEB/////wAAAAAEYIAKAQAAAAAADgAAAE9uZVNob3RTaGVsdmVkAQB1CwAvAQADCXULAAAEAAAA" + - "ADQBAQB4CwA0AQEAfgsAMwEBAH8LADMBAQCBCwEAAAAVYKkKAgAAAAAACwAAAFN0YXRlTnVtYmVyAQDV" + - "FwAuAETVFwAABwMAAAAAB/////8BAf////8AAAAABGCACgEAAAAAABcAAABVbnNoZWx2ZWRUb1RpbWVk" + - "U2hlbHZlZAEAdwsALwEABgl3CwAABAAAAAAzAAEAcgsANAABAHQLADYAAQBjCwA1AAEAhQsBAAAAFWCp" + - "CgIAAAAAABAAAABUcmFuc2l0aW9uTnVtYmVyAQA6LAAuAEQ6LAAABwwAAAAAB/////8BAf////8AAAAA" + - "BGCACgEAAAAAABkAAABVbnNoZWx2ZWRUb09uZVNob3RTaGVsdmVkAQB4CwAvAQAGCXgLAAAEAAAAADMA" + - "AQByCwA0AAEAdQsANgABAGMLADUAAQCECwEAAAAVYKkKAgAAAAAAEAAAAFRyYW5zaXRpb25OdW1iZXIB" + - "ADssAC4ARDssAAAHDQAAAAAH/////wEB/////wAAAAAEYIAKAQAAAAAAFwAAAFRpbWVkU2hlbHZlZFRv" + - "VW5zaGVsdmVkAQB8CwAvAQAGCXwLAAAEAAAAADMAAQB0CwA0AAEAcgsANgABAGMLADUAAQCDCwEAAAAV" + - "YKkKAgAAAAAAEAAAAFRyYW5zaXRpb25OdW1iZXIBADwsAC4ARDwsAAAHFQAAAAAH/////wEB/////wAA" + - "AAAEYIAKAQAAAAAAHAAAAFRpbWVkU2hlbHZlZFRvT25lU2hvdFNoZWx2ZWQBAH4LAC8BAAYJfgsAAAQA" + - "AAAAMwABAHQLADQAAQB1CwA2AAEAYwsANQABAIQLAQAAABVgqQoCAAAAAAAQAAAAVHJhbnNpdGlvbk51" + - "bWJlcgEAPSwALgBEPSwAAAcXAAAAAAf/////AQH/////AAAAAARggAoBAAAAAAAZAAAAT25lU2hvdFNo" + - "ZWx2ZWRUb1Vuc2hlbHZlZAEAfwsALwEABgl/CwAABAAAAAAzAAEAdQsANAABAHILADYAAQBjCwA1AAEA" + - "gwsBAAAAFWCpCgIAAAAAABAAAABUcmFuc2l0aW9uTnVtYmVyAQA+LAAuAEQ+LAAABx8AAAAAB/////8B" + - "Af////8AAAAABGCACgEAAAAAABwAAABPbmVTaG90U2hlbHZlZFRvVGltZWRTaGVsdmVkAQCBCwAvAQAG" + - "CYELAAAEAAAAADMAAQB1CwA0AAEAdAsANgABAGMLADUAAQCFCwEAAAAVYKkKAgAAAAAAEAAAAFRyYW5z" + - "aXRpb25OdW1iZXIBAD8sAC4ARD8sAAAHIAAAAAAH/////wEB/////wAAAAAEYYIKBAAAAAAACwAAAFRp" + - "bWVkU2hlbHZlAQCFCwAvAQCFC4ULAAABAQMAAAAANQEBAHcLADUBAQCBCwEA+QsAAQBVKwEAAAAXYKkK" + - "AgAAAAAADgAAAElucHV0QXJndW1lbnRzAQCvCwAuAESvCwAAlgEAAAABACoBAXoAAAAMAAAAU2hlbHZp" + - "bmdUaW1lAQAiAf////8AAAAAAwAAAABVAAAASWYgbm90IDAsIHRoaXMgcGFyYW1ldGVyIHNwZWNpZmll" + - "cyBhIGZpeGVkIHRpbWUgZm9yIHdoaWNoIHRoZSBBbGFybSBpcyB0byBiZSBzaGVsdmVkLgEAKAEBAAAA" + - "AQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAAAgAAABVbnNoZWx2ZQEAgwsALwEAgwuDCwAAAQEDAAAA" + - "ADUBAQB8CwA1AQEAfwsBAPkLAAEAVSsAAAAABGGCCgQAAAAAAA0AAABPbmVTaG90U2hlbHZlAQCECwAv" + - "AQCEC4QLAAABAQMAAAAANQEBAHgLADUBAQB+CwEA+QsAAQBVKwAAAAA="; + "AAAADAAAAFVuc2hlbHZlVGltZQEAmyMALgBEmyMAAAEAIgH/////AQH/////AAAAAARhggoEAAAAAAAL" + + "AAAAVGltZWRTaGVsdmUBAIULAC8BAIULhQsAAAEBAwAAAAA1AQEAdwsANQEBAIELAQD5CwABAFUrAQAA" + + "ABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAK8LAC4ARK8LAACWAQAAAAEAKgEBegAAAAwAAABT" + + "aGVsdmluZ1RpbWUBACIB/////wAAAAADAAAAAFUAAABJZiBub3QgMCwgdGhpcyBwYXJhbWV0ZXIgc3Bl" + + "Y2lmaWVzIGEgZml4ZWQgdGltZSBmb3Igd2hpY2ggdGhlIEFsYXJtIGlzIHRvIGJlIHNoZWx2ZWQuAQAo" + + "AQEAAAABAAAAAAAAAAEB/////wAAAAAEYYIKBAAAAAAACAAAAFVuc2hlbHZlAQCDCwAvAQCDC4MLAAAB" + + "AQMAAAAANQEBAHwLADUBAQB/CwEA+QsAAQBVKwAAAAAEYYIKBAAAAAAADQAAAE9uZVNob3RTaGVsdmUB" + + "AIQLAC8BAIQLhAsAAAEBAwAAAAA1AQEAeAsANQEBAH4LAQD5CwABAFUrAAAAAA=="; #endregion #endif #endregion @@ -42807,24 +46743,8 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8EYIACAQAAAAAAJgAAAEV4Y2x1c2l2ZUxpbWl0U3RhdGVNYWNoaW5lVHlwZUluc3RhbmNl" + - "AQBmJAEAZiRmJAAA/////wkAAAAVYIkKAgAAAAAADAAAAEN1cnJlbnRTdGF0ZQEAZyQALwEAyApnJAAA" + - "ABX/////AQH/////AQAAABVgiQoCAAAAAAACAAAASWQBAGgkAC4ARGgkAAAAEf////8BAf////8AAAAA" + - "BGCACgEAAAAAAAgAAABIaWdoSGlnaAEAcSQALwEAAwlxJAAAAgAAAAAzAQEAeyQANAEBAHwkAQAAABVg" + - "qQoCAAAAAAALAAAAU3RhdGVOdW1iZXIBAHIkAC4ARHIkAAAHAQAAAAAH/////wEB/////wAAAAAEYIAK" + - "AQAAAAAABAAAAEhpZ2gBAHMkAC8BAAMJcyQAAAIAAAAANAEBAHskADMBAQB8JAEAAAAVYKkKAgAAAAAA" + - "CwAAAFN0YXRlTnVtYmVyAQB0JAAuAER0JAAABwIAAAAAB/////8BAf////8AAAAABGCACgEAAAAAAAMA" + - "AABMb3cBAHUkAC8BAAMJdSQAAAIAAAAANAEBAHkkADMBAQB6JAEAAAAVYKkKAgAAAAAACwAAAFN0YXRl" + - "TnVtYmVyAQB2JAAuAER2JAAABwMAAAAAB/////8BAf////8AAAAABGCACgEAAAAAAAYAAABMb3dMb3cB" + - "AHckAC8BAAMJdyQAAAIAAAAAMwEBAHkkADQBAQB6JAEAAAAVYKkKAgAAAAAACwAAAFN0YXRlTnVtYmVy" + - "AQB4JAAuAER4JAAABwQAAAAAB/////8BAf////8AAAAABGCACgEAAAAAAAsAAABMb3dMb3dUb0xvdwEA" + - "eSQALwEABgl5JAAAAgAAAAAzAAEAdyQANAABAHUkAQAAABVgqQoCAAAAAAAQAAAAVHJhbnNpdGlvbk51" + - "bWJlcgEATCwALgBETCwAAAcrAAAAAAf/////AQH/////AAAAAARggAoBAAAAAAALAAAATG93VG9Mb3dM" + - "b3cBAHokAC8BAAYJeiQAAAIAAAAAMwABAHUkADQAAQB3JAEAAAAVYKkKAgAAAAAAEAAAAFRyYW5zaXRp" + - "b25OdW1iZXIBAE0sAC4ARE0sAAAHIgAAAAAH/////wEB/////wAAAAAEYIAKAQAAAAAADgAAAEhpZ2hI" + - "aWdoVG9IaWdoAQB7JAAvAQAGCXskAAACAAAAADMAAQBxJAA0AAEAcyQBAAAAFWCpCgIAAAAAABAAAABU" + - "cmFuc2l0aW9uTnVtYmVyAQBOLAAuAEROLAAABwwAAAAAB/////8BAf////8AAAAABGCACgEAAAAAAA4A" + - "AABIaWdoVG9IaWdoSGlnaAEAfCQALwEABgl8JAAAAgAAAAAzAAEAcyQANAABAHEkAQAAABVgqQoCAAAA" + - "AAAQAAAAVHJhbnNpdGlvbk51bWJlcgEATywALgBETywAAAcVAAAAAAf/////AQH/////AAAAAA=="; + "AQBmJAEAZiRmJAAA/////wEAAAAVYIkKAgAAAAAADAAAAEN1cnJlbnRTdGF0ZQEAZyQALwEAyApnJAAA" + + "ABX/////AQH/////AQAAABVgiQoCAAAAAAACAAAASWQBAGgkAC4ARGgkAAAAEf////8BAf////8AAAAA"; #endregion #endif #endregion @@ -48556,68 +52476,30 @@ protected override void InitializeOptionalChildren(ISystemContext context) private const string InitializationString = "//////////8EYIACAQAAAAAAHwAAAFByb2dyYW1TdGF0ZU1hY2hpbmVUeXBlSW5zdGFuY2UBAFcJAQBX" + - "CVcJAAD/////HQAAABVgiQoCAAAAAAAMAAAAQ3VycmVudFN0YXRlAQD2DgAvAQDICvYOAAAAFf////8B" + + "CVcJAAD/////BwAAABVgiQoCAAAAAAAMAAAAQ3VycmVudFN0YXRlAQD2DgAvAQDICvYOAAAAFf////8B" + "Af////8CAAAAFWCJCgIAAAAAAAIAAABJZAEA9w4ALgBE9w4AAAAR/////wEB/////wAAAAAVYIkKAgAA" + "AAAABgAAAE51bWJlcgEA+Q4ALgBE+Q4AAAAH/////wEB/////wAAAAAVYIkKAgAAAAAADgAAAExhc3RU" + "cmFuc2l0aW9uAQD7DgAvAQDPCvsOAAAAFf////8BAf////8DAAAAFWCJCgIAAAAAAAIAAABJZAEA/A4A" + "LgBE/A4AAAAR/////wEB/////wAAAAAVYIkKAgAAAAAABgAAAE51bWJlcgEA/g4ALgBE/g4AAAAH////" + "/wEB/////wAAAAAVYIkKAgAAAAAADgAAAFRyYW5zaXRpb25UaW1lAQD/DgAuAET/DgAAAQAmAf////8B" + - "Af////8AAAAAFWCJCgIAAAAAAAkAAABDcmVhdGFibGUBAFgJAC4ARFgJAAAAAf////8BAf////8AAAAA" + - "FWCJCgIAAAAAAAkAAABEZWxldGFibGUBAFkJAC4ARFkJAAAAAf////8BAf////8AAAAAFWCJCgIAAAAA" + - "AAoAAABBdXRvRGVsZXRlAQBaCQAuAERaCQAAAAH/////AQH/////AAAAABVgiQoCAAAAAAAMAAAAUmVj" + - "eWNsZUNvdW50AQBbCQAuAERbCQAAAAb/////AQH/////AAAAABVgiQoCAAAAAAANAAAASW5zdGFuY2VD" + - "b3VudAEAXAkALgBEXAkAAAAH/////wEB/////wAAAAAVYIkKAgAAAAAAEAAAAE1heEluc3RhbmNlQ291" + - "bnQBAF0JAC4ARF0JAAAAB/////8BAf////8AAAAAFWCJCgIAAAAAAA8AAABNYXhSZWN5Y2xlQ291bnQB" + - "AF4JAC4ARF4JAAAAB/////8BAf////8AAAAAFWCJCgIAAAAAABEAAABQcm9ncmFtRGlhZ25vc3RpYwEA" + - "XwkALwEAFzxfCQAAAQDhXf////8BAf////8MAAAAFWCJCgIAAAAAAA8AAABDcmVhdGVTZXNzaW9uSWQB" + - "AAAPAC8APwAPAAAAEf////8BAf////8AAAAAFWCJCgIAAAAAABAAAABDcmVhdGVDbGllbnROYW1lAQAB" + - "DwAvAD8BDwAAAAz/////AQH/////AAAAABVgiQoCAAAAAAAWAAAASW52b2NhdGlvbkNyZWF0aW9uVGlt" + - "ZQEAAg8ALwA/Ag8AAAEAJgH/////AQH/////AAAAABVgiQoCAAAAAAASAAAATGFzdFRyYW5zaXRpb25U" + - "aW1lAQADDwAuAEQDDwAAAQAmAf////8BAf////8AAAAAFWCJCgIAAAAAAA4AAABMYXN0TWV0aG9kQ2Fs" + - "bAEABA8ALwA/BA8AAAAM/////wEB/////wAAAAAVYIkKAgAAAAAAEwAAAExhc3RNZXRob2RTZXNzaW9u" + - "SWQBAAUPAC8APwUPAAAAEf////8BAf////8AAAAAF2CJCgIAAAAAABgAAABMYXN0TWV0aG9kSW5wdXRB" + - "cmd1bWVudHMBAAYPAC8APwYPAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAABdgiQoCAAAAAAAZAAAA" + - "TGFzdE1ldGhvZE91dHB1dEFyZ3VtZW50cwEABw8ALwA/Bw8AAAEAKAEBAAAAAQAAAAAAAAABAf////8A" + - "AAAAF2CJCgIAAAAAABUAAABMYXN0TWV0aG9kSW5wdXRWYWx1ZXMBAL46AC8AP746AAAAGAEAAAABAAAA" + - "AAAAAAEB/////wAAAAAXYIkKAgAAAAAAFgAAAExhc3RNZXRob2RPdXRwdXRWYWx1ZXMBAMA6AC8AP8A6" + - "AAAAGAEAAAABAAAAAAAAAAEB/////wAAAAAVYIkKAgAAAAAAEgAAAExhc3RNZXRob2RDYWxsVGltZQEA" + - "CA8ALwA/CA8AAAEAJgH/////AQH/////AAAAABVgiQoCAAAAAAAWAAAATGFzdE1ldGhvZFJldHVyblN0" + - "YXR1cwEACQ8ALwA/CQ8AAAAT/////wEB/////wAAAAAEYIAKAQAAAAAADwAAAEZpbmFsUmVzdWx0RGF0" + - "YQEACg8ALwA6Cg8AAP////8AAAAABGCACgEAAAAAAAYAAABIYWx0ZWQBAGYJAC8BAAMJZgkAAAQAAAAA" + - "MwEBAGgJADQBAQBsCQA0AQEAdAkANAEBAHgJAQAAABVgqQoCAAAAAAALAAAAU3RhdGVOdW1iZXIBAGcJ" + - "AC4ARGcJAAAHCwAAAAAH/////wEB/////wAAAAAEYIAKAQAAAAAABQAAAFJlYWR5AQBgCQAvAQADCWAJ" + - "AAAFAAAAADQBAQBoCQAzAQEAagkANAEBAG4JADQBAQB2CQAzAQEAeAkBAAAAFWCpCgIAAAAAAAsAAABT" + - "dGF0ZU51bWJlcgEAYQkALgBEYQkAAAcMAAAAAAf/////AQH/////AAAAAARggAoBAAAAAAAHAAAAUnVu" + - "bmluZwEAYgkALwEAAwliCQAABQAAAAA0AQEAagkAMwEBAGwJADMBAQBuCQAzAQEAcAkANAEBAHIJAQAA" + - "ABVgqQoCAAAAAAALAAAAU3RhdGVOdW1iZXIBAGMJAC4ARGMJAAAHDQAAAAAH/////wEB/////wAAAAAE" + - "YIAKAQAAAAAACQAAAFN1c3BlbmRlZAEAZAkALwEAAwlkCQAABAAAAAA0AQEAcAkAMwEBAHIJADMBAQB0" + - "CQAzAQEAdgkBAAAAFWCpCgIAAAAAAAsAAABTdGF0ZU51bWJlcgEAZQkALgBEZQkAAAcOAAAAAAf/////" + - "AQH/////AAAAAARggAoBAAAAAAANAAAASGFsdGVkVG9SZWFkeQEAaAkALwEABgloCQAABAAAAAAzAAEA" + - "ZgkANAABAGAJADUAAQB+CQA2AAEASgkBAAAAFWCpCgIAAAAAABAAAABUcmFuc2l0aW9uTnVtYmVyAQBp" + - "CQAuAERpCQAABwEAAAAAB/////8BAf////8AAAAABGCACgEAAAAAAA4AAABSZWFkeVRvUnVubmluZwEA" + - "agkALwEABglqCQAABAAAAAAzAAEAYAkANAABAGIJADUAAQB6CQA2AAEASgkBAAAAFWCpCgIAAAAAABAA" + - "AABUcmFuc2l0aW9uTnVtYmVyAQBrCQAuAERrCQAABwIAAAAAB/////8BAf////8AAAAABGCACgEAAAAA" + - "AA8AAABSdW5uaW5nVG9IYWx0ZWQBAGwJAC8BAAYJbAkAAAQAAAAAMwABAGIJADQAAQBmCQA1AAEAfQkA" + - "NgABAEoJAQAAABVgqQoCAAAAAAAQAAAAVHJhbnNpdGlvbk51bWJlcgEAbQkALgBEbQkAAAcDAAAAAAf/" + - "////AQH/////AAAAAARggAoBAAAAAAAOAAAAUnVubmluZ1RvUmVhZHkBAG4JAC8BAAYJbgkAAAMAAAAA" + - "MwABAGIJADQAAQBgCQA2AAEASgkBAAAAFWCpCgIAAAAAABAAAABUcmFuc2l0aW9uTnVtYmVyAQBvCQAu" + - "AERvCQAABwQAAAAAB/////8BAf////8AAAAABGCACgEAAAAAABIAAABSdW5uaW5nVG9TdXNwZW5kZWQB" + - "AHAJAC8BAAYJcAkAAAQAAAAAMwABAGIJADQAAQBkCQA1AAEAewkANgABAEoJAQAAABVgqQoCAAAAAAAQ" + - "AAAAVHJhbnNpdGlvbk51bWJlcgEAcQkALgBEcQkAAAcFAAAAAAf/////AQH/////AAAAAARggAoBAAAA" + - "AAASAAAAU3VzcGVuZGVkVG9SdW5uaW5nAQByCQAvAQAGCXIJAAAEAAAAADMAAQBkCQA0AAEAYgkANQAB" + - "AHwJADYAAQBKCQEAAAAVYKkKAgAAAAAAEAAAAFRyYW5zaXRpb25OdW1iZXIBAHMJAC4ARHMJAAAHBgAA" + - "AAAH/////wEB/////wAAAAAEYIAKAQAAAAAAEQAAAFN1c3BlbmRlZFRvSGFsdGVkAQB0CQAvAQAGCXQJ" + - "AAAEAAAAADMAAQBkCQA0AAEAZgkANQABAH0JADYAAQBKCQEAAAAVYKkKAgAAAAAAEAAAAFRyYW5zaXRp" + - "b25OdW1iZXIBAHUJAC4ARHUJAAAHBwAAAAAH/////wEB/////wAAAAAEYIAKAQAAAAAAEAAAAFN1c3Bl" + - "bmRlZFRvUmVhZHkBAHYJAC8BAAYJdgkAAAMAAAAAMwABAGQJADQAAQBgCQA2AAEASgkBAAAAFWCpCgIA" + - "AAAAABAAAABUcmFuc2l0aW9uTnVtYmVyAQB3CQAuAER3CQAABwgAAAAAB/////8BAf////8AAAAABGCA" + - "CgEAAAAAAA0AAABSZWFkeVRvSGFsdGVkAQB4CQAvAQAGCXgJAAAEAAAAADMAAQBgCQA0AAEAZgkANQAB" + - "AH0JADYAAQBKCQEAAAAVYKkKAgAAAAAAEAAAAFRyYW5zaXRpb25OdW1iZXIBAHkJAC4ARHkJAAAHCQAA" + - "AAAH/////wEB/////wAAAAAEYYIKBAAAAAAABQAAAFN0YXJ0AQB6CQAvAQB6CXoJAAABAQEAAAAANQEB" + - "AGoJAAAAAARhggoEAAAAAAAHAAAAU3VzcGVuZAEAewkALwEAewl7CQAAAQEBAAAAADUBAQBwCQAAAAAE" + - "YYIKBAAAAAAABgAAAFJlc3VtZQEAfAkALwEAfAl8CQAAAQEBAAAAADUBAQByCQAAAAAEYYIKBAAAAAAA" + - "BAAAAEhhbHQBAH0JAC8BAH0JfQkAAAEBAwAAAAA1AQEAbAkANQEBAHQJADUBAQB4CQAAAAAEYYIKBAAA" + - "AAAABQAAAFJlc2V0AQB+CQAvAQB+CX4JAAABAQEAAAAANQEBAGgJAAAAAA=="; + "Af////8AAAAAFWCJCgIAAAAAAAkAAABEZWxldGFibGUBAFkJAC4ARFkJAAAAAf////8BAf////8AAAAA" + + "FWCJCgIAAAAAAAoAAABBdXRvRGVsZXRlAQBaCQAuAERaCQAAAAH/////AQH/////AAAAABVgiQoCAAAA" + + "AAAMAAAAUmVjeWNsZUNvdW50AQBbCQAuAERbCQAAAAb/////AQH/////AAAAABVgiQoCAAAAAAARAAAA" + + "UHJvZ3JhbURpYWdub3N0aWMBAF8JAC8BABc8XwkAAAEA4V3/////AQH/////DAAAABVgiQoCAAAAAAAP" + + "AAAAQ3JlYXRlU2Vzc2lvbklkAQAADwAvAD8ADwAAABH/////AQH/////AAAAABVgiQoCAAAAAAAQAAAA" + + "Q3JlYXRlQ2xpZW50TmFtZQEAAQ8ALwA/AQ8AAAAM/////wEB/////wAAAAAVYIkKAgAAAAAAFgAAAElu" + + "dm9jYXRpb25DcmVhdGlvblRpbWUBAAIPAC8APwIPAAABACYB/////wEB/////wAAAAAVYIkKAgAAAAAA" + + "EgAAAExhc3RUcmFuc2l0aW9uVGltZQEAAw8ALgBEAw8AAAEAJgH/////AQH/////AAAAABVgiQoCAAAA" + + "AAAOAAAATGFzdE1ldGhvZENhbGwBAAQPAC8APwQPAAAADP////8BAf////8AAAAAFWCJCgIAAAAAABMA" + + "AABMYXN0TWV0aG9kU2Vzc2lvbklkAQAFDwAvAD8FDwAAABH/////AQH/////AAAAABdgiQoCAAAAAAAY" + + "AAAATGFzdE1ldGhvZElucHV0QXJndW1lbnRzAQAGDwAvAD8GDwAAAQAoAQEAAAABAAAAAAAAAAEB////" + + "/wAAAAAXYIkKAgAAAAAAGQAAAExhc3RNZXRob2RPdXRwdXRBcmd1bWVudHMBAAcPAC8APwcPAAABACgB" + + "AQAAAAEAAAAAAAAAAQH/////AAAAABdgiQoCAAAAAAAVAAAATGFzdE1ldGhvZElucHV0VmFsdWVzAQC+" + + "OgAvAD++OgAAABgBAAAAAQAAAAAAAAABAf////8AAAAAF2CJCgIAAAAAABYAAABMYXN0TWV0aG9kT3V0" + + "cHV0VmFsdWVzAQDAOgAvAD/AOgAAABgBAAAAAQAAAAAAAAABAf////8AAAAAFWCJCgIAAAAAABIAAABM" + + "YXN0TWV0aG9kQ2FsbFRpbWUBAAgPAC8APwgPAAABACYB/////wEB/////wAAAAAVYIkKAgAAAAAAFgAA" + + "AExhc3RNZXRob2RSZXR1cm5TdGF0dXMBAAkPAC8APwkPAAAAE/////8BAf////8AAAAABGCACgEAAAAA" + + "AA8AAABGaW5hbFJlc3VsdERhdGEBAAoPAC8AOgoPAAD/////AAAAAA=="; #endregion #endif #endregion @@ -49358,7 +53240,7 @@ protected override BaseInstanceState FindChild( /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class ProgramDiagnosticState : BaseDataVariableState + public partial class ProgramDiagnosticState : BaseDataVariableState { #region Constructors /// @@ -49956,7 +53838,7 @@ public ProgramDiagnosticState Variable /// public ProgramDiagnosticDataType Value { - get { return m_value; } + get { return m_value; } set { m_value = value; } } #endregion @@ -49971,52 +53853,82 @@ private void Initialize(ProgramDiagnosticState variable) variable.Value = m_value; variable.OnReadValue = OnReadValue; - variable.OnSimpleWriteValue = OnWriteValue; + variable.OnWriteValue = OnWriteValue; BaseVariableState instance = null; List updateList = new List(); updateList.Add(variable); instance = m_variable.CreateSessionId; - instance.OnReadValue = OnRead_CreateSessionId; - instance.OnSimpleWriteValue = OnWrite_CreateSessionId; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CreateSessionId; + instance.OnWriteValue = OnWrite_CreateSessionId; + updateList.Add(instance); + } instance = m_variable.CreateClientName; - instance.OnReadValue = OnRead_CreateClientName; - instance.OnSimpleWriteValue = OnWrite_CreateClientName; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CreateClientName; + instance.OnWriteValue = OnWrite_CreateClientName; + updateList.Add(instance); + } instance = m_variable.InvocationCreationTime; - instance.OnReadValue = OnRead_InvocationCreationTime; - instance.OnSimpleWriteValue = OnWrite_InvocationCreationTime; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_InvocationCreationTime; + instance.OnWriteValue = OnWrite_InvocationCreationTime; + updateList.Add(instance); + } instance = m_variable.LastTransitionTime; - instance.OnReadValue = OnRead_LastTransitionTime; - instance.OnSimpleWriteValue = OnWrite_LastTransitionTime; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LastTransitionTime; + instance.OnWriteValue = OnWrite_LastTransitionTime; + updateList.Add(instance); + } instance = m_variable.LastMethodCall; - instance.OnReadValue = OnRead_LastMethodCall; - instance.OnSimpleWriteValue = OnWrite_LastMethodCall; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LastMethodCall; + instance.OnWriteValue = OnWrite_LastMethodCall; + updateList.Add(instance); + } instance = m_variable.LastMethodSessionId; - instance.OnReadValue = OnRead_LastMethodSessionId; - instance.OnSimpleWriteValue = OnWrite_LastMethodSessionId; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LastMethodSessionId; + instance.OnWriteValue = OnWrite_LastMethodSessionId; + updateList.Add(instance); + } instance = m_variable.LastMethodInputArguments; - instance.OnReadValue = OnRead_LastMethodInputArguments; - instance.OnSimpleWriteValue = OnWrite_LastMethodInputArguments; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LastMethodInputArguments; + instance.OnWriteValue = OnWrite_LastMethodInputArguments; + updateList.Add(instance); + } instance = m_variable.LastMethodOutputArguments; - instance.OnReadValue = OnRead_LastMethodOutputArguments; - instance.OnSimpleWriteValue = OnWrite_LastMethodOutputArguments; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LastMethodOutputArguments; + instance.OnWriteValue = OnWrite_LastMethodOutputArguments; + updateList.Add(instance); + } instance = m_variable.LastMethodCallTime; - instance.OnReadValue = OnRead_LastMethodCallTime; - instance.OnSimpleWriteValue = OnWrite_LastMethodCallTime; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LastMethodCallTime; + instance.OnWriteValue = OnWrite_LastMethodCallTime; + updateList.Add(instance); + } instance = m_variable.LastMethodReturnStatus; - instance.OnReadValue = OnRead_LastMethodReturnStatus; - instance.OnSimpleWriteValue = OnWrite_LastMethodReturnStatus; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LastMethodReturnStatus; + instance.OnWriteValue = OnWrite_LastMethodReturnStatus; + updateList.Add(instance); + } SetUpdateList(updateList); } @@ -50045,16 +53957,71 @@ protected ServiceResult OnReadValue( } } - private ServiceResult OnWriteValue(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWriteValue( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { - m_value = (ProgramDiagnosticDataType)Write(value); + ProgramDiagnosticDataType newValue; + if (value is ExtensionObject extensionObject) + { + newValue = (ProgramDiagnosticDataType)extensionObject.Body; + } + else + { + newValue = (ProgramDiagnosticDataType)value; + } + + if (!Utils.IsEqual(m_value, newValue)) + { + UpdateChildrenChangeMasks(context, ref newValue, ref statusCode, ref timestamp); + Timestamp = timestamp; + m_value = (ProgramDiagnosticDataType)Write(newValue); + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + } } return ServiceResult.Good; } + private void UpdateChildrenChangeMasks(ISystemContext context, ref ProgramDiagnosticDataType newValue, ref StatusCode statusCode, ref DateTime timestamp) + { + if (!Utils.IsEqual(m_value.CreateSessionId, newValue.CreateSessionId)) UpdateChildVariableStatus(m_variable.CreateSessionId, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.CreateClientName, newValue.CreateClientName)) UpdateChildVariableStatus(m_variable.CreateClientName, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.InvocationCreationTime, newValue.InvocationCreationTime)) UpdateChildVariableStatus(m_variable.InvocationCreationTime, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LastTransitionTime, newValue.LastTransitionTime)) UpdateChildVariableStatus(m_variable.LastTransitionTime, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LastMethodCall, newValue.LastMethodCall)) UpdateChildVariableStatus(m_variable.LastMethodCall, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LastMethodSessionId, newValue.LastMethodSessionId)) UpdateChildVariableStatus(m_variable.LastMethodSessionId, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LastMethodInputArguments, newValue.LastMethodInputArguments)) UpdateChildVariableStatus(m_variable.LastMethodInputArguments, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LastMethodOutputArguments, newValue.LastMethodOutputArguments)) UpdateChildVariableStatus(m_variable.LastMethodOutputArguments, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LastMethodCallTime, newValue.LastMethodCallTime)) UpdateChildVariableStatus(m_variable.LastMethodCallTime, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LastMethodReturnStatus, newValue.LastMethodReturnStatus)) UpdateChildVariableStatus(m_variable.LastMethodReturnStatus, ref statusCode, ref timestamp); + } + + private void UpdateParent(ISystemContext context, ref StatusCode statusCode, ref DateTime timestamp) + { + Timestamp = timestamp; + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + m_variable.ClearChangeMasks(context, false); + } + + private void UpdateChildVariableStatus(BaseVariableState child, ref StatusCode statusCode, ref DateTime timestamp) + { + if (child == null) return; + child.StatusCode = statusCode; + if (timestamp == DateTime.MinValue) + { + timestamp = DateTime.UtcNow; + } + child.Timestamp = timestamp; + } + #region CreateSessionId Access Methods /// private ServiceResult OnRead_CreateSessionId( @@ -50070,21 +54037,50 @@ private ServiceResult OnRead_CreateSessionId( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CreateSessionId; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CreateSessionId; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CreateSessionId(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CreateSessionId( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CreateSessionId, ref statusCode, ref timestamp); m_value.CreateSessionId = (NodeId)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -50106,21 +54102,50 @@ private ServiceResult OnRead_CreateClientName( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CreateClientName; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CreateClientName; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CreateClientName(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CreateClientName( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CreateClientName, ref statusCode, ref timestamp); m_value.CreateClientName = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -50142,21 +54167,50 @@ private ServiceResult OnRead_InvocationCreationTime( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.InvocationCreationTime; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.InvocationCreationTime; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_InvocationCreationTime(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_InvocationCreationTime( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.InvocationCreationTime, ref statusCode, ref timestamp); m_value.InvocationCreationTime = (DateTime)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -50178,21 +54232,50 @@ private ServiceResult OnRead_LastTransitionTime( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LastTransitionTime; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LastTransitionTime; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LastTransitionTime(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LastTransitionTime( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LastTransitionTime, ref statusCode, ref timestamp); m_value.LastTransitionTime = (DateTime)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -50214,21 +54297,50 @@ private ServiceResult OnRead_LastMethodCall( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LastMethodCall; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LastMethodCall; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LastMethodCall(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LastMethodCall( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LastMethodCall, ref statusCode, ref timestamp); m_value.LastMethodCall = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -50250,21 +54362,50 @@ private ServiceResult OnRead_LastMethodSessionId( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LastMethodSessionId; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LastMethodSessionId; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LastMethodSessionId(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LastMethodSessionId( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LastMethodSessionId, ref statusCode, ref timestamp); m_value.LastMethodSessionId = (NodeId)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -50286,21 +54427,50 @@ private ServiceResult OnRead_LastMethodInputArguments( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LastMethodInputArguments; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LastMethodInputArguments; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LastMethodInputArguments(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LastMethodInputArguments( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LastMethodInputArguments, ref statusCode, ref timestamp); m_value.LastMethodInputArguments = (ArgumentCollection)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -50322,21 +54492,50 @@ private ServiceResult OnRead_LastMethodOutputArguments( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LastMethodOutputArguments; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LastMethodOutputArguments; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LastMethodOutputArguments(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LastMethodOutputArguments( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LastMethodOutputArguments, ref statusCode, ref timestamp); m_value.LastMethodOutputArguments = (ArgumentCollection)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -50358,21 +54557,50 @@ private ServiceResult OnRead_LastMethodCallTime( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LastMethodCallTime; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LastMethodCallTime; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LastMethodCallTime(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LastMethodCallTime( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LastMethodCallTime, ref statusCode, ref timestamp); m_value.LastMethodCallTime = (DateTime)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -50394,21 +54622,50 @@ private ServiceResult OnRead_LastMethodReturnStatus( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LastMethodReturnStatus; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LastMethodReturnStatus; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LastMethodReturnStatus(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LastMethodReturnStatus( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LastMethodReturnStatus, ref statusCode, ref timestamp); m_value.LastMethodReturnStatus = (StatusResult)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -50430,7 +54687,7 @@ private ServiceResult OnWrite_LastMethodReturnStatus(ISystemContext context, Nod /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] - public partial class ProgramDiagnostic2State : BaseDataVariableState + public partial class ProgramDiagnostic2State : BaseDataVariableState { #region Constructors /// @@ -51123,7 +55380,7 @@ public ProgramDiagnostic2State Variable /// public ProgramDiagnostic2DataType Value { - get { return m_value; } + get { return m_value; } set { m_value = value; } } #endregion @@ -51138,60 +55395,96 @@ private void Initialize(ProgramDiagnostic2State variable) variable.Value = m_value; variable.OnReadValue = OnReadValue; - variable.OnSimpleWriteValue = OnWriteValue; + variable.OnWriteValue = OnWriteValue; BaseVariableState instance = null; List updateList = new List(); updateList.Add(variable); instance = m_variable.CreateSessionId; - instance.OnReadValue = OnRead_CreateSessionId; - instance.OnSimpleWriteValue = OnWrite_CreateSessionId; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CreateSessionId; + instance.OnWriteValue = OnWrite_CreateSessionId; + updateList.Add(instance); + } instance = m_variable.CreateClientName; - instance.OnReadValue = OnRead_CreateClientName; - instance.OnSimpleWriteValue = OnWrite_CreateClientName; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_CreateClientName; + instance.OnWriteValue = OnWrite_CreateClientName; + updateList.Add(instance); + } instance = m_variable.InvocationCreationTime; - instance.OnReadValue = OnRead_InvocationCreationTime; - instance.OnSimpleWriteValue = OnWrite_InvocationCreationTime; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_InvocationCreationTime; + instance.OnWriteValue = OnWrite_InvocationCreationTime; + updateList.Add(instance); + } instance = m_variable.LastTransitionTime; - instance.OnReadValue = OnRead_LastTransitionTime; - instance.OnSimpleWriteValue = OnWrite_LastTransitionTime; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LastTransitionTime; + instance.OnWriteValue = OnWrite_LastTransitionTime; + updateList.Add(instance); + } instance = m_variable.LastMethodCall; - instance.OnReadValue = OnRead_LastMethodCall; - instance.OnSimpleWriteValue = OnWrite_LastMethodCall; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LastMethodCall; + instance.OnWriteValue = OnWrite_LastMethodCall; + updateList.Add(instance); + } instance = m_variable.LastMethodSessionId; - instance.OnReadValue = OnRead_LastMethodSessionId; - instance.OnSimpleWriteValue = OnWrite_LastMethodSessionId; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LastMethodSessionId; + instance.OnWriteValue = OnWrite_LastMethodSessionId; + updateList.Add(instance); + } instance = m_variable.LastMethodInputArguments; - instance.OnReadValue = OnRead_LastMethodInputArguments; - instance.OnSimpleWriteValue = OnWrite_LastMethodInputArguments; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LastMethodInputArguments; + instance.OnWriteValue = OnWrite_LastMethodInputArguments; + updateList.Add(instance); + } instance = m_variable.LastMethodOutputArguments; - instance.OnReadValue = OnRead_LastMethodOutputArguments; - instance.OnSimpleWriteValue = OnWrite_LastMethodOutputArguments; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LastMethodOutputArguments; + instance.OnWriteValue = OnWrite_LastMethodOutputArguments; + updateList.Add(instance); + } instance = m_variable.LastMethodInputValues; - instance.OnReadValue = OnRead_LastMethodInputValues; - instance.OnSimpleWriteValue = OnWrite_LastMethodInputValues; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LastMethodInputValues; + instance.OnWriteValue = OnWrite_LastMethodInputValues; + updateList.Add(instance); + } instance = m_variable.LastMethodOutputValues; - instance.OnReadValue = OnRead_LastMethodOutputValues; - instance.OnSimpleWriteValue = OnWrite_LastMethodOutputValues; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LastMethodOutputValues; + instance.OnWriteValue = OnWrite_LastMethodOutputValues; + updateList.Add(instance); + } instance = m_variable.LastMethodCallTime; - instance.OnReadValue = OnRead_LastMethodCallTime; - instance.OnSimpleWriteValue = OnWrite_LastMethodCallTime; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LastMethodCallTime; + instance.OnWriteValue = OnWrite_LastMethodCallTime; + updateList.Add(instance); + } instance = m_variable.LastMethodReturnStatus; - instance.OnReadValue = OnRead_LastMethodReturnStatus; - instance.OnSimpleWriteValue = OnWrite_LastMethodReturnStatus; - updateList.Add(instance); + if (instance != null) + { + instance.OnReadValue = OnRead_LastMethodReturnStatus; + instance.OnWriteValue = OnWrite_LastMethodReturnStatus; + updateList.Add(instance); + } SetUpdateList(updateList); } @@ -51220,16 +55513,73 @@ protected ServiceResult OnReadValue( } } - private ServiceResult OnWriteValue(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWriteValue( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { - m_value = (ProgramDiagnostic2DataType)Write(value); + ProgramDiagnostic2DataType newValue; + if (value is ExtensionObject extensionObject) + { + newValue = (ProgramDiagnostic2DataType)extensionObject.Body; + } + else + { + newValue = (ProgramDiagnostic2DataType)value; + } + + if (!Utils.IsEqual(m_value, newValue)) + { + UpdateChildrenChangeMasks(context, ref newValue, ref statusCode, ref timestamp); + Timestamp = timestamp; + m_value = (ProgramDiagnostic2DataType)Write(newValue); + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + } } return ServiceResult.Good; } + private void UpdateChildrenChangeMasks(ISystemContext context, ref ProgramDiagnostic2DataType newValue, ref StatusCode statusCode, ref DateTime timestamp) + { + if (!Utils.IsEqual(m_value.CreateSessionId, newValue.CreateSessionId)) UpdateChildVariableStatus(m_variable.CreateSessionId, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.CreateClientName, newValue.CreateClientName)) UpdateChildVariableStatus(m_variable.CreateClientName, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.InvocationCreationTime, newValue.InvocationCreationTime)) UpdateChildVariableStatus(m_variable.InvocationCreationTime, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LastTransitionTime, newValue.LastTransitionTime)) UpdateChildVariableStatus(m_variable.LastTransitionTime, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LastMethodCall, newValue.LastMethodCall)) UpdateChildVariableStatus(m_variable.LastMethodCall, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LastMethodSessionId, newValue.LastMethodSessionId)) UpdateChildVariableStatus(m_variable.LastMethodSessionId, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LastMethodInputArguments, newValue.LastMethodInputArguments)) UpdateChildVariableStatus(m_variable.LastMethodInputArguments, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LastMethodOutputArguments, newValue.LastMethodOutputArguments)) UpdateChildVariableStatus(m_variable.LastMethodOutputArguments, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LastMethodInputValues, newValue.LastMethodInputValues)) UpdateChildVariableStatus(m_variable.LastMethodInputValues, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LastMethodOutputValues, newValue.LastMethodOutputValues)) UpdateChildVariableStatus(m_variable.LastMethodOutputValues, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LastMethodCallTime, newValue.LastMethodCallTime)) UpdateChildVariableStatus(m_variable.LastMethodCallTime, ref statusCode, ref timestamp); + if (!Utils.IsEqual(m_value.LastMethodReturnStatus, newValue.LastMethodReturnStatus)) UpdateChildVariableStatus(m_variable.LastMethodReturnStatus, ref statusCode, ref timestamp); + } + + private void UpdateParent(ISystemContext context, ref StatusCode statusCode, ref DateTime timestamp) + { + Timestamp = timestamp; + m_variable.UpdateChangeMasks(NodeStateChangeMasks.Value); + m_variable.ClearChangeMasks(context, false); + } + + private void UpdateChildVariableStatus(BaseVariableState child, ref StatusCode statusCode, ref DateTime timestamp) + { + if (child == null) return; + child.StatusCode = statusCode; + if (timestamp == DateTime.MinValue) + { + timestamp = DateTime.UtcNow; + } + child.Timestamp = timestamp; + } + #region CreateSessionId Access Methods /// private ServiceResult OnRead_CreateSessionId( @@ -51245,21 +55595,50 @@ private ServiceResult OnRead_CreateSessionId( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CreateSessionId; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CreateSessionId; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CreateSessionId(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CreateSessionId( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CreateSessionId, ref statusCode, ref timestamp); m_value.CreateSessionId = (NodeId)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -51281,21 +55660,50 @@ private ServiceResult OnRead_CreateClientName( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.CreateClientName; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.CreateClientName; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_CreateClientName(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_CreateClientName( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.CreateClientName, ref statusCode, ref timestamp); m_value.CreateClientName = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -51317,21 +55725,50 @@ private ServiceResult OnRead_InvocationCreationTime( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.InvocationCreationTime; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.InvocationCreationTime; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_InvocationCreationTime(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_InvocationCreationTime( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.InvocationCreationTime, ref statusCode, ref timestamp); m_value.InvocationCreationTime = (DateTime)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -51353,21 +55790,50 @@ private ServiceResult OnRead_LastTransitionTime( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LastTransitionTime; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LastTransitionTime; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LastTransitionTime(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LastTransitionTime( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LastTransitionTime, ref statusCode, ref timestamp); m_value.LastTransitionTime = (DateTime)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -51389,21 +55855,50 @@ private ServiceResult OnRead_LastMethodCall( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LastMethodCall; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LastMethodCall; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LastMethodCall(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LastMethodCall( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LastMethodCall, ref statusCode, ref timestamp); m_value.LastMethodCall = (string)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -51425,21 +55920,50 @@ private ServiceResult OnRead_LastMethodSessionId( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LastMethodSessionId; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LastMethodSessionId; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LastMethodSessionId(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LastMethodSessionId( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LastMethodSessionId, ref statusCode, ref timestamp); m_value.LastMethodSessionId = (NodeId)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -51461,21 +55985,50 @@ private ServiceResult OnRead_LastMethodInputArguments( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LastMethodInputArguments; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LastMethodInputArguments; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LastMethodInputArguments(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LastMethodInputArguments( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LastMethodInputArguments, ref statusCode, ref timestamp); m_value.LastMethodInputArguments = (ArgumentCollection)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -51497,21 +56050,50 @@ private ServiceResult OnRead_LastMethodOutputArguments( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LastMethodOutputArguments; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LastMethodOutputArguments; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LastMethodOutputArguments(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LastMethodOutputArguments( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LastMethodOutputArguments, ref statusCode, ref timestamp); m_value.LastMethodOutputArguments = (ArgumentCollection)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -51533,21 +56115,50 @@ private ServiceResult OnRead_LastMethodInputValues( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LastMethodInputValues; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LastMethodInputValues; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LastMethodInputValues(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LastMethodInputValues( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LastMethodInputValues, ref statusCode, ref timestamp); m_value.LastMethodInputValues = (VariantCollection)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -51569,21 +56180,50 @@ private ServiceResult OnRead_LastMethodOutputValues( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LastMethodOutputValues; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LastMethodOutputValues; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LastMethodOutputValues(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LastMethodOutputValues( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LastMethodOutputValues, ref statusCode, ref timestamp); m_value.LastMethodOutputValues = (VariantCollection)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -51605,21 +56245,50 @@ private ServiceResult OnRead_LastMethodCallTime( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LastMethodCallTime; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LastMethodCallTime; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LastMethodCallTime(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LastMethodCallTime( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LastMethodCallTime, ref statusCode, ref timestamp); m_value.LastMethodCallTime = (DateTime)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -51641,21 +56310,50 @@ private ServiceResult OnRead_LastMethodReturnStatus( { DoBeforeReadProcessing(context, node); + var childVariable = m_variable?.LastMethodReturnStatus; + if (childVariable != null && StatusCode.IsBad(childVariable.StatusCode)) + { + value = null; + statusCode = childVariable.StatusCode; + return new ServiceResult(statusCode); + } + if (m_value != null) { value = m_value.LastMethodReturnStatus; } - return Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + var result = Read(context, node, indexRange, dataEncoding, ref value, ref statusCode, ref timestamp); + + if (childVariable != null && ServiceResult.IsNotBad(result)) + { + timestamp = childVariable.Timestamp; + if (statusCode != childVariable.StatusCode) + { + statusCode = childVariable.StatusCode; + result = new ServiceResult(statusCode); + } + } + + return result; } } /// - private ServiceResult OnWrite_LastMethodReturnStatus(ISystemContext context, NodeState node, ref object value) + private ServiceResult OnWrite_LastMethodReturnStatus( + ISystemContext context, + NodeState node, + NumericRange indexRange, + QualifiedName dataEncoding, + ref object value, + ref StatusCode statusCode, + ref DateTime timestamp) { lock (Lock) { + UpdateChildVariableStatus(m_variable.LastMethodReturnStatus, ref statusCode, ref timestamp); m_value.LastMethodReturnStatus = (StatusCode)Write(value); + UpdateParent(context, ref statusCode, ref timestamp); } return ServiceResult.Good; @@ -56726,7 +61424,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) private const string InitializationString = "//////////8EYIACAQAAAAAAIgAAAENlcnRpZmljYXRlR3JvdXBGb2xkZXJUeXBlSW5zdGFuY2UBAPU1" + - "AQD1NfU1AAD/////BAAAAARggAoBAAAAAAAXAAAARGVmYXVsdEFwcGxpY2F0aW9uR3JvdXABAPY1AC8B" + + "AQD1NfU1AAD/////AwAAAARggAoBAAAAAAAXAAAARGVmYXVsdEFwcGxpY2F0aW9uR3JvdXABAPY1AC8B" + "AAsx9jUAAP////8CAAAABGCACgEAAAAAAAkAAABUcnVzdExpc3QBAPc1AC8BAOow9zUAAP////8MAAAA" + "FWCJCgIAAAAAAAQAAABTaXplAQD4NQAuAET4NQAAAAn/////AQH/////AAAAABVgiQoCAAAAAAAIAAAA" + "V3JpdGFibGUBAPk1AC4ARPk1AAAAAf////8BAf////8AAAAAFWCJCgIAAAAAAAwAAABVc2VyV3JpdGFi" + @@ -56825,40 +61523,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) "AQH/////AAAAABdgqQoCAAAAAAAPAAAAT3V0cHV0QXJndW1lbnRzAQBTNgAuAERTNgAAlgEAAAABACoB" + "ARkAAAAKAAAARmlsZUhhbmRsZQAH/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAXYIkK" + "AgAAAAAAEAAAAENlcnRpZmljYXRlVHlwZXMBAFs2AC4ARFs2AAAAEQEAAAABAAAAAAAAAAEB/////wAA" + - "AAAEYMAKAQAAABsAAABBZGRpdGlvbmFsR3JvdXBfUGxhY2Vob2xkZXIAABEAAAA8QWRkaXRpb25hbEdy" + - "b3VwPgEAXDYAIwEACzFcNgAA/////wIAAAAEYIAKAQAAAAAACQAAAFRydXN0TGlzdAEAXTYALwEA6jBd" + - "NgAA/////wwAAAAVYIkKAgAAAAAABAAAAFNpemUBAF42AC4ARF42AAAACf////8BAf////8AAAAAFWCJ" + - "CgIAAAAAAAgAAABXcml0YWJsZQEAXzYALgBEXzYAAAAB/////wEB/////wAAAAAVYIkKAgAAAAAADAAA" + - "AFVzZXJXcml0YWJsZQEAYDYALgBEYDYAAAAB/////wEB/////wAAAAAVYIkKAgAAAAAACQAAAE9wZW5D" + - "b3VudAEAYTYALgBEYTYAAAAF/////wEB/////wAAAAAEYYIKBAAAAAAABAAAAE9wZW4BAGM2AC8BADwt" + - "YzYAAAEB/////wIAAAAXYKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQBkNgAuAERkNgAAlgEAAAAB" + - "ACoBARMAAAAEAAAATW9kZQAD/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAXYKkKAgAA" + - "AAAADwAAAE91dHB1dEFyZ3VtZW50cwEAZTYALgBEZTYAAJYBAAAAAQAqAQEZAAAACgAAAEZpbGVIYW5k" + - "bGUAB/////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAAAUAAABDbG9zZQEA" + - "ZjYALwEAPy1mNgAAAQH/////AQAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAGc2AC4ARGc2" + - "AACWAQAAAAEAKgEBGQAAAAoAAABGaWxlSGFuZGxlAAf/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/" + - "////AAAAAARhggoEAAAAAAAEAAAAUmVhZAEAaDYALwEAQS1oNgAAAQH/////AgAAABdgqQoCAAAAAAAO" + - "AAAASW5wdXRBcmd1bWVudHMBAGk2AC4ARGk2AACWAgAAAAEAKgEBGQAAAAoAAABGaWxlSGFuZGxlAAf/" + - "////AAAAAAABACoBARUAAAAGAAAATGVuZ3RoAAb/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////" + - "AAAAABdgqQoCAAAAAAAPAAAAT3V0cHV0QXJndW1lbnRzAQBqNgAuAERqNgAAlgEAAAABACoBARMAAAAE" + - "AAAARGF0YQAP/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAEYYIKBAAAAAAABQAAAFdy" + - "aXRlAQBrNgAvAQBELWs2AAABAf////8BAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEAbDYA" + - "LgBEbDYAAJYCAAAAAQAqAQEZAAAACgAAAEZpbGVIYW5kbGUAB/////8AAAAAAAEAKgEBEwAAAAQAAABE" + - "YXRhAA//////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARhggoEAAAAAAALAAAAR2V0UG9z" + - "aXRpb24BAG02AC8BAEYtbTYAAAEB/////wIAAAAXYKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQBu" + - "NgAuAERuNgAAlgEAAAABACoBARkAAAAKAAAARmlsZUhhbmRsZQAH/////wAAAAAAAQAoAQEAAAABAAAA" + - "AAAAAAEB/////wAAAAAXYKkKAgAAAAAADwAAAE91dHB1dEFyZ3VtZW50cwEAbzYALgBEbzYAAJYBAAAA" + - "AQAqAQEXAAAACAAAAFBvc2l0aW9uAAn/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARh" + - "ggoEAAAAAAALAAAAU2V0UG9zaXRpb24BAHA2AC8BAEktcDYAAAEB/////wEAAAAXYKkKAgAAAAAADgAA" + - "AElucHV0QXJndW1lbnRzAQBxNgAuAERxNgAAlgIAAAABACoBARkAAAAKAAAARmlsZUhhbmRsZQAH////" + - "/wAAAAAAAQAqAQEXAAAACAAAAFBvc2l0aW9uAAn/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////" + - "AAAAABVgiQoCAAAAAAAOAAAATGFzdFVwZGF0ZVRpbWUBAHI2AC4ARHI2AAABACYB/////wEB/////wAA" + - "AAAEYYIKBAAAAAAADQAAAE9wZW5XaXRoTWFza3MBAHM2AC8BAP8wczYAAAEB/////wIAAAAXYKkKAgAA" + - "AAAADgAAAElucHV0QXJndW1lbnRzAQB0NgAuAER0NgAAlgEAAAABACoBARQAAAAFAAAATWFza3MAB///" + - "//8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVu" + - "dHMBAHU2AC4ARHU2AACWAQAAAAEAKgEBGQAAAAoAAABGaWxlSGFuZGxlAAf/////AAAAAAABACgBAQAA" + - "AAEAAAAAAAAAAQH/////AAAAABdgiQoCAAAAAAAQAAAAQ2VydGlmaWNhdGVUeXBlcwEAfTYALgBEfTYA" + - "AAARAQAAAAEAAAAAAAAAAQH/////AAAAAA=="; + "AAA="; #endregion #endif #endregion @@ -59179,16 +63844,13 @@ protected override void InitializeOptionalChildren(ISystemContext context) private const string InitializationString = "//////////8EYIACAQAAAAAALAAAAEtleUNyZWRlbnRpYWxDb25maWd1cmF0aW9uRm9sZGVyVHlwZUlu" + - "c3RhbmNlAQBYRAEAWERYRAAA/////wIAAAAEYMAKAQAAABcAAABTZXJ2aWNlTmFtZV9QbGFjZWhvbGRl" + - "cgAADQAAADxTZXJ2aWNlTmFtZT4BAGdEAC8BAFFGZ0QAAP////8CAAAAFWCJCgIAAAAAAAsAAABSZXNv" + - "dXJjZVVyaQEAaEQALgBEaEQAAAAM/////wEB/////wAAAAAVYIkKAgAAAAAACgAAAFByb2ZpbGVVcmkB" + - "AGlEAC4ARGlEAAAADP////8BAf////8AAAAABGGCCgQAAAAAABAAAABDcmVhdGVDcmVkZW50aWFsAQBy" + - "RAAvAQByRHJEAAABAf////8CAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEAc0QALgBEc0QA" + - "AJYDAAAAAQAqAQEaAAAACwAAAFJlc291cmNlVXJpAAz/////AAAAAAABACoBARkAAAAKAAAAUHJvZmls" + - "ZVVyaQAM/////wAAAAAAAQAqAQEfAAAADAAAAEVuZHBvaW50VXJscwAMAQAAAAEAAAAAAAAAAAEAKAEB" + - "AAAAAQAAAAAAAAABAf////8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVudHMBAHREAC4ARHRE" + - "AACWAQAAAAEAKgEBHwAAABAAAABDcmVkZW50aWFsTm9kZUlkABH/////AAAAAAABACgBAQAAAAEAAAAA" + - "AAAAAQH/////AAAAAA=="; + "c3RhbmNlAQBYRAEAWERYRAAA/////wEAAAAEYYIKBAAAAAAAEAAAAENyZWF0ZUNyZWRlbnRpYWwBAHJE" + + "AC8BAHJEckQAAAEB/////wIAAAAXYKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQBzRAAuAERzRAAA" + + "lgMAAAABACoBARoAAAALAAAAUmVzb3VyY2VVcmkADP////8AAAAAAAEAKgEBGQAAAAoAAABQcm9maWxl" + + "VXJpAAz/////AAAAAAABACoBAR8AAAAMAAAARW5kcG9pbnRVcmxzAAwBAAAAAQAAAAAAAAAAAQAoAQEA" + + "AAABAAAAAAAAAAEB/////wAAAAAXYKkKAgAAAAAADwAAAE91dHB1dEFyZ3VtZW50cwEAdEQALgBEdEQA" + + "AJYBAAAAAQAqAQEfAAAAEAAAAENyZWRlbnRpYWxOb2RlSWQAEf////8AAAAAAAEAKAEBAAAAAQAAAAAA" + + "AAABAf////8AAAAA"; #endregion #endif #endregion @@ -60329,11 +64991,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8EYIACAQAAAAAANAAAAEF1dGhvcml6YXRpb25TZXJ2aWNlc0NvbmZpZ3VyYXRpb25Gb2xk" + - "ZXJUeXBlSW5zdGFuY2UBAARcAQAEXARcAAD/////AQAAAARgwAoBAAAAFwAAAFNlcnZpY2VOYW1lX1Bs" + - "YWNlaG9sZGVyAAANAAAAPFNlcnZpY2VOYW1lPgEABVwAIwEAvEUFXAAA/////wMAAAAVYIkKAgAAAAAA" + - "CgAAAFNlcnZpY2VVcmkBAAZcAC4ARAZcAAAADP////8BAf////8AAAAAFWCJCgIAAAAAABIAAABTZXJ2" + - "aWNlQ2VydGlmaWNhdGUBAAdcAC4ARAdcAAAAD/////8BAf////8AAAAAFWCJCgIAAAAAABEAAABJc3N1" + - "ZXJFbmRwb2ludFVybAEACFwALgBECFwAAAAM/////wEB/////wAAAAA="; + "ZXJUeXBlSW5zdGFuY2UBAARcAQAEXARcAAD/////AAAAAA=="; #endregion #endif #endregion @@ -61659,36 +66317,18 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8EYIACAQAAAAAAHwAAAFNlY3VyaXR5R3JvdXBGb2xkZXJUeXBlSW5zdGFuY2UBAFw8AQBc" + - "PFw8AAD/////BAAAAARgwAoBAAAAIwAAAFNlY3VyaXR5R3JvdXBGb2xkZXJOYW1lX1BsYWNlaG9sZGVy" + - "AAAZAAAAPFNlY3VyaXR5R3JvdXBGb2xkZXJOYW1lPgEAXTwAIwEAXDxdPAAA/////wIAAAAEYYIKBAAA" + - "AAAAEAAAAEFkZFNlY3VyaXR5R3JvdXABAF48AC8BAGU8XjwAAAEB/////wIAAAAXYKkKAgAAAAAADgAA" + - "AElucHV0QXJndW1lbnRzAQBfPAAuAERfPAAAlgUAAAABACoBASAAAAARAAAAU2VjdXJpdHlHcm91cE5h" + - "bWUADP////8AAAAAAAEAKgEBHAAAAAsAAABLZXlMaWZldGltZQEAIgH/////AAAAAAABACoBASAAAAAR" + - "AAAAU2VjdXJpdHlQb2xpY3lVcmkADP////8AAAAAAAEAKgEBIAAAABEAAABNYXhGdXR1cmVLZXlDb3Vu" + - "dAAH/////wAAAAAAAQAqAQEeAAAADwAAAE1heFBhc3RLZXlDb3VudAAH/////wAAAAAAAQAoAQEAAAAB" + - "AAAAAAAAAAEB/////wAAAAAXYKkKAgAAAAAADwAAAE91dHB1dEFyZ3VtZW50cwEAYDwALgBEYDwAAJYC" + - "AAAAAQAqAQEeAAAADwAAAFNlY3VyaXR5R3JvdXBJZAAM/////wAAAAAAAQAqAQEiAAAAEwAAAFNlY3Vy" + - "aXR5R3JvdXBOb2RlSWQAEf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAA" + - "ABMAAABSZW1vdmVTZWN1cml0eUdyb3VwAQBhPAAvAQBoPGE8AAABAf////8BAAAAF2CpCgIAAAAAAA4A" + - "AABJbnB1dEFyZ3VtZW50cwEAYjwALgBEYjwAAJYBAAAAAQAqAQEiAAAAEwAAAFNlY3VyaXR5R3JvdXBO" + - "b2RlSWQAEf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGDACgEAAAAdAAAAU2VjdXJp" + - "dHlHcm91cE5hbWVfUGxhY2Vob2xkZXIAABMAAAA8U2VjdXJpdHlHcm91cE5hbWU+AQBjPAAvAQBvPGM8" + - "AAD/////BQAAABVgiQoCAAAAAAAPAAAAU2VjdXJpdHlHcm91cElkAQBkPAAuAERkPAAAAAz/////AQH/" + - "////AAAAABVgiQoCAAAAAAALAAAAS2V5TGlmZXRpbWUBAKI6AC4ARKI6AAABACIB/////wEB/////wAA" + - "AAAVYIkKAgAAAAAAEQAAAFNlY3VyaXR5UG9saWN5VXJpAQCjOgAuAESjOgAAAAz/////AQH/////AAAA" + - "ABVgiQoCAAAAAAARAAAATWF4RnV0dXJlS2V5Q291bnQBAKQ6AC4ARKQ6AAAAB/////8BAf////8AAAAA" + - "FWCJCgIAAAAAAA8AAABNYXhQYXN0S2V5Q291bnQBAMM6AC4ARMM6AAAAB/////8BAf////8AAAAABGGC" + - "CgQAAAAAABAAAABBZGRTZWN1cml0eUdyb3VwAQBlPAAvAQBlPGU8AAABAf////8CAAAAF2CpCgIAAAAA" + - "AA4AAABJbnB1dEFyZ3VtZW50cwEAZjwALgBEZjwAAJYFAAAAAQAqAQEgAAAAEQAAAFNlY3VyaXR5R3Jv" + - "dXBOYW1lAAz/////AAAAAAABACoBARwAAAALAAAAS2V5TGlmZXRpbWUBACIB/////wAAAAAAAQAqAQEg" + - "AAAAEQAAAFNlY3VyaXR5UG9saWN5VXJpAAz/////AAAAAAABACoBASAAAAARAAAATWF4RnV0dXJlS2V5" + - "Q291bnQAB/////8AAAAAAAEAKgEBHgAAAA8AAABNYXhQYXN0S2V5Q291bnQAB/////8AAAAAAAEAKAEB" + - "AAAAAQAAAAAAAAABAf////8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVudHMBAGc8AC4ARGc8" + - "AACWAgAAAAEAKgEBHgAAAA8AAABTZWN1cml0eUdyb3VwSWQADP////8AAAAAAAEAKgEBIgAAABMAAABT" + - "ZWN1cml0eUdyb3VwTm9kZUlkABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARhggoE" + - "AAAAAAATAAAAUmVtb3ZlU2VjdXJpdHlHcm91cAEAaDwALwEAaDxoPAAAAQH/////AQAAABdgqQoCAAAA" + - "AAAOAAAASW5wdXRBcmd1bWVudHMBAGk8AC4ARGk8AACWAQAAAAEAKgEBIgAAABMAAABTZWN1cml0eUdy" + - "b3VwTm9kZUlkABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAA=="; + "PFw8AAD/////AgAAAARhggoEAAAAAAAQAAAAQWRkU2VjdXJpdHlHcm91cAEAZTwALwEAZTxlPAAAAQH/" + + "////AgAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAGY8AC4ARGY8AACWBQAAAAEAKgEBIAAA" + + "ABEAAABTZWN1cml0eUdyb3VwTmFtZQAM/////wAAAAAAAQAqAQEcAAAACwAAAEtleUxpZmV0aW1lAQAi" + + "Af////8AAAAAAAEAKgEBIAAAABEAAABTZWN1cml0eVBvbGljeVVyaQAM/////wAAAAAAAQAqAQEgAAAA" + + "EQAAAE1heEZ1dHVyZUtleUNvdW50AAf/////AAAAAAABACoBAR4AAAAPAAAATWF4UGFzdEtleUNvdW50" + + "AAf/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAABdgqQoCAAAAAAAPAAAAT3V0cHV0QXJn" + + "dW1lbnRzAQBnPAAuAERnPAAAlgIAAAABACoBAR4AAAAPAAAAU2VjdXJpdHlHcm91cElkAAz/////AAAA" + + "AAABACoBASIAAAATAAAAU2VjdXJpdHlHcm91cE5vZGVJZAAR/////wAAAAAAAQAoAQEAAAABAAAAAAAA" + + "AAEB/////wAAAAAEYYIKBAAAAAAAEwAAAFJlbW92ZVNlY3VyaXR5R3JvdXABAGg8AC8BAGg8aDwAAAEB" + + "/////wEAAAAXYKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQBpPAAuAERpPAAAlgEAAAABACoBASIA" + + "AAATAAAAU2VjdXJpdHlHcm91cE5vZGVJZAAR/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAA" + + "AAA="; #endregion #endif #endregion @@ -62287,79 +66927,69 @@ protected override void InitializeOptionalChildren(ISystemContext context) private const string InitializationString = "//////////8EYIACAQAAAAAAHAAAAFB1Ymxpc2hTdWJzY3JpYmVUeXBlSW5zdGFuY2UBAFA4AQBQOFA4" + - "AAD/////CAAAAARgwAoBAAAAGgAAAENvbm5lY3Rpb25OYW1lX1BsYWNlaG9sZGVyAAAQAAAAPENvbm5l" + - "Y3Rpb25OYW1lPgEAUTgBAIw4AQCBN1E4AAD/////BQAAABVgiQoCAAAAAAALAAAAUHVibGlzaGVySWQB" + - "AFI4AC4ARFI4AAAAGP////8BAf////8AAAAAFWCJCgIAAAAAABMAAABUcmFuc3BvcnRQcm9maWxlVXJp" + - "AQCMQwAvAQC1P4xDAAAADP////8BAf////8BAAAAF2CJCgIAAAAAAAoAAABTZWxlY3Rpb25zAQAqRQAu" + - "AEQqRQAAABgBAAAAAQAAAAAAAAABAf////8AAAAAF2CJCgIAAAAAABQAAABDb25uZWN0aW9uUHJvcGVy" + - "dGllcwEARkQALgBERkQAAAEAxTgBAAAAAQAAAAAAAAABAf////8AAAAABGCACgEAAAAAAAcAAABBZGRy" + - "ZXNzAQBXOAAvAQCZUlc4AAD/////AQAAABVgiQoCAAAAAAAQAAAATmV0d29ya0ludGVyZmFjZQEArTwA" + - "LwEAtT+tPAAAAAz/////AQH/////AQAAABdgiQoCAAAAAAAKAAAAU2VsZWN0aW9ucwEAX0QALgBEX0QA" + - "AAAYAQAAAAEAAAAAAAAAAQH/////AAAAAARggAoBAAAAAAAGAAAAU3RhdHVzAQBTOAAvAQAzOVM4AAD/" + - "////AQAAABVgiQoCAAAAAAAFAAAAU3RhdGUBAFQ4AC8AP1Q4AAABADc5/////wEB/////wAAAAAEYYIK" + - "BAAAAAAADwAAAFNldFNlY3VyaXR5S2V5cwEAkEMALwEAkEOQQwAAAQH/////AQAAABdgqQoCAAAAAAAO" + - "AAAASW5wdXRBcmd1bWVudHMBAJFDAC4ARJFDAACWBwAAAAEAKgEBHgAAAA8AAABTZWN1cml0eUdyb3Vw" + - "SWQADP////8AAAAAAAEAKgEBIAAAABEAAABTZWN1cml0eVBvbGljeVVyaQAM/////wAAAAAAAQAqAQEf" + - "AAAADgAAAEN1cnJlbnRUb2tlbklkAQAgAf////8AAAAAAAEAKgEBGQAAAAoAAABDdXJyZW50S2V5AA//" + - "////AAAAAAABACoBAR0AAAAKAAAARnV0dXJlS2V5cwAPAQAAAAEAAAAAAAAAAAEAKgEBHgAAAA0AAABU" + - "aW1lVG9OZXh0S2V5AQAiAf////8AAAAAAAEAKgEBHAAAAAsAAABLZXlMaWZldGltZQEAIgH/////AAAA" + - "AAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARhggoEAAAAAAANAAAAQWRkQ29ubmVjdGlvbgEA1kAA" + - "LwEA1kDWQAAAAQH/////AgAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBANdAAC4ARNdAAACW" + - "AQAAAAEAKgEBHgAAAA0AAABDb25maWd1cmF0aW9uAQABPf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAAB" + - "Af////8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVudHMBANhAAC4ARNhAAACWAQAAAAEAKgEB" + - "GwAAAAwAAABDb25uZWN0aW9uSWQAEf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGC" + - "CgQAAAAAABAAAABSZW1vdmVDb25uZWN0aW9uAQBgOAAvAQBgOGA4AAABAf////8BAAAAF2CpCgIAAAAA" + - "AA4AAABJbnB1dEFyZ3VtZW50cwEAYTgALgBEYTgAAJYBAAAAAQAqAQEbAAAADAAAAENvbm5lY3Rpb25J" + - "ZAAR/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAEYIAKAQAAAAAAEQAAAFB1Ymxpc2hl" + - "ZERhdGFTZXRzAQBiOAAvAQCNOGI4AAD/////AAAAAARggAoBAAAAAAAGAAAAU3RhdHVzAQDkPQAvAQAz" + - "OeQ9AAD/////AQAAABVgiQoCAAAAAAAFAAAAU3RhdGUBAOU9AC8AP+U9AAABADc5/////wEB/////wAA" + - "AAAEYIAKAQAAAAAACwAAAERpYWdub3N0aWNzAQAbSQAvAQAUTRtJAAD/////BwAAABVgiQoCAAAAAAAQ" + - "AAAARGlhZ25vc3RpY3NMZXZlbAEAHEkALwA/HEkAAAEAC03/////AQH/////AAAAABVgiQoCAAAAAAAQ" + - "AAAAVG90YWxJbmZvcm1hdGlvbgEAHUkALwEADU0dSQAAAAf/////AQH/////AwAAABVgiQoCAAAAAAAG" + - "AAAAQWN0aXZlAQAeSQAuAEQeSQAAAAH/////AQH/////AAAAABVgiQoCAAAAAAAOAAAAQ2xhc3NpZmlj" + - "YXRpb24BAB9JAC4ARB9JAAABABJN/////wEB/////wAAAAAVYIkKAgAAAAAAEAAAAERpYWdub3N0aWNz" + - "TGV2ZWwBACBJAC4ARCBJAAABAAtN/////wEB/////wAAAAAVYIkKAgAAAAAACgAAAFRvdGFsRXJyb3IB" + - "ACJJAC8BAA1NIkkAAAAH/////wEB/////wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEAI0kALgBEI0kA" + - "AAAB/////wEB/////wAAAAAVYIkKAgAAAAAADgAAAENsYXNzaWZpY2F0aW9uAQAkSQAuAEQkSQAAAQAS" + - "Tf////8BAf////8AAAAAFWCJCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQAlSQAuAEQlSQAAAQAL" + - "Tf////8BAf////8AAAAABGGCCgQAAAAAAAUAAABSZXNldAEAJ0kALwEA6UwnSQAAAQH/////AAAAABVg" + - "iQoCAAAAAAAIAAAAU3ViRXJyb3IBAChJAC8APyhJAAAAAf////8BAf////8AAAAABGCACgEAAAAAAAgA" + - "AABDb3VudGVycwEAKUkALwA6KUkAAP////8GAAAAFWCJCgIAAAAAAAoAAABTdGF0ZUVycm9yAQAqSQAv" + - "AQANTSpJAAAAB/////8BAf////8DAAAAFWCJCgIAAAAAAAYAAABBY3RpdmUBACtJAC4ARCtJAAAAAf//" + - "//8BAf////8AAAAAFWCpCgIAAAAAAA4AAABDbGFzc2lmaWNhdGlvbgEALEkALgBELEkAAAYBAAAAAQAS" + - "Tf////8BAf////8AAAAAFWCpCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQAtSQAuAEQtSQAABgAA" + - "AAABAAtN/////wEB/////wAAAAAVYIkKAgAAAAAAGAAAAFN0YXRlT3BlcmF0aW9uYWxCeU1ldGhvZAEA" + - "L0kALwEADU0vSQAAAAf/////AQH/////AwAAABVgiQoCAAAAAAAGAAAAQWN0aXZlAQAwSQAuAEQwSQAA" + - "AAH/////AQH/////AAAAABVgqQoCAAAAAAAOAAAAQ2xhc3NpZmljYXRpb24BADFJAC4ARDFJAAAGAAAA" + - "AAEAEk3/////AQH/////AAAAABVgqQoCAAAAAAAQAAAARGlhZ25vc3RpY3NMZXZlbAEAMkkALgBEMkkA" + - "AAYAAAAAAQALTf////8BAf////8AAAAAFWCJCgIAAAAAABgAAABTdGF0ZU9wZXJhdGlvbmFsQnlQYXJl" + - "bnQBADRJAC8BAA1NNEkAAAAH/////wEB/////wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEANUkALgBE" + - "NUkAAAAB/////wEB/////wAAAAAVYKkKAgAAAAAADgAAAENsYXNzaWZpY2F0aW9uAQA2SQAuAEQ2SQAA" + - "BgAAAAABABJN/////wEB/////wAAAAAVYKkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwBADdJAC4A" + - "RDdJAAAGAAAAAAEAC03/////AQH/////AAAAABVgiQoCAAAAAAAZAAAAU3RhdGVPcGVyYXRpb25hbEZy" + - "b21FcnJvcgEAOUkALwEADU05SQAAAAf/////AQH/////AwAAABVgiQoCAAAAAAAGAAAAQWN0aXZlAQA6" + - "SQAuAEQ6SQAAAAH/////AQH/////AAAAABVgqQoCAAAAAAAOAAAAQ2xhc3NpZmljYXRpb24BADtJAC4A" + - "RDtJAAAGAAAAAAEAEk3/////AQH/////AAAAABVgqQoCAAAAAAAQAAAARGlhZ25vc3RpY3NMZXZlbAEA" + - "PEkALgBEPEkAAAYAAAAAAQALTf////8BAf////8AAAAAFWCJCgIAAAAAABMAAABTdGF0ZVBhdXNlZEJ5" + - "UGFyZW50AQA+SQAvAQANTT5JAAAAB/////8BAf////8DAAAAFWCJCgIAAAAAAAYAAABBY3RpdmUBAD9J" + - "AC4ARD9JAAAAAf////8BAf////8AAAAAFWCpCgIAAAAAAA4AAABDbGFzc2lmaWNhdGlvbgEAQEkALgBE" + - "QEkAAAYAAAAAAQASTf////8BAf////8AAAAAFWCpCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQBB" + - "SQAuAERBSQAABgAAAAABAAtN/////wEB/////wAAAAAVYIkKAgAAAAAAFQAAAFN0YXRlRGlzYWJsZWRC" + - "eU1ldGhvZAEAQ0kALwEADU1DSQAAAAf/////AQH/////AwAAABVgiQoCAAAAAAAGAAAAQWN0aXZlAQBE" + - "SQAuAERESQAAAAH/////AQH/////AAAAABVgqQoCAAAAAAAOAAAAQ2xhc3NpZmljYXRpb24BAEVJAC4A" + - "REVJAAAGAAAAAAEAEk3/////AQH/////AAAAABVgqQoCAAAAAAAQAAAARGlhZ25vc3RpY3NMZXZlbAEA" + - "RkkALgBERkkAAAYAAAAAAQALTf////8BAf////8AAAAABGCACgEAAAAAAAoAAABMaXZlVmFsdWVzAQBI" + - "SQAvADpISQAA/////wQAAAAVYIkKAgAAAAAAGAAAAENvbmZpZ3VyZWREYXRhU2V0V3JpdGVycwEASUkA" + - "LwA/SUkAAAAF/////wEB/////wEAAAAVYKkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwBAEpJAC4A" + - "REpJAAAGAAAAAAEAC03/////AQH/////AAAAABVgiQoCAAAAAAAYAAAAQ29uZmlndXJlZERhdGFTZXRS" + - "ZWFkZXJzAQBLSQAvAD9LSQAAAAX/////AQH/////AQAAABVgqQoCAAAAAAAQAAAARGlhZ25vc3RpY3NM" + - "ZXZlbAEATEkALgBETEkAAAYAAAAAAQALTf////8BAf////8AAAAAFWCJCgIAAAAAABkAAABPcGVyYXRp" + - "b25hbERhdGFTZXRXcml0ZXJzAQBNSQAvAD9NSQAAAAX/////AQH/////AQAAABVgqQoCAAAAAAAQAAAA" + - "RGlhZ25vc3RpY3NMZXZlbAEATkkALgBETkkAAAYAAAAAAQALTf////8BAf////8AAAAAFWCJCgIAAAAA" + - "ABkAAABPcGVyYXRpb25hbERhdGFTZXRSZWFkZXJzAQBPSQAvAD9PSQAAAAX/////AQH/////AQAAABVg" + - "qQoCAAAAAAAQAAAARGlhZ25vc3RpY3NMZXZlbAEAUEkALgBEUEkAAAYAAAAAAQALTf////8BAf////8A" + - "AAAAF2CJCgIAAAAAABoAAABTdXBwb3J0ZWRUcmFuc3BvcnRQcm9maWxlcwEAR0QALgBER0QAAAAMAQAA" + - "AAEAAAAAAAAAAQH/////AAAAAA=="; + "AAD/////BwAAAARhggoEAAAAAAAPAAAAU2V0U2VjdXJpdHlLZXlzAQCQQwAvAQCQQ5BDAAABAf////8B" + + "AAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEAkUMALgBEkUMAAJYHAAAAAQAqAQEeAAAADwAA" + + "AFNlY3VyaXR5R3JvdXBJZAAM/////wAAAAAAAQAqAQEgAAAAEQAAAFNlY3VyaXR5UG9saWN5VXJpAAz/" + + "////AAAAAAABACoBAR8AAAAOAAAAQ3VycmVudFRva2VuSWQBACAB/////wAAAAAAAQAqAQEZAAAACgAA" + + "AEN1cnJlbnRLZXkAD/////8AAAAAAAEAKgEBHQAAAAoAAABGdXR1cmVLZXlzAA8BAAAAAQAAAAAAAAAA" + + "AQAqAQEeAAAADQAAAFRpbWVUb05leHRLZXkBACIB/////wAAAAAAAQAqAQEcAAAACwAAAEtleUxpZmV0" + + "aW1lAQAiAf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAAA0AAABBZGRD" + + "b25uZWN0aW9uAQDWQAAvAQDWQNZAAAABAf////8CAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50" + + "cwEA10AALgBE10AAAJYBAAAAAQAqAQEeAAAADQAAAENvbmZpZ3VyYXRpb24BAAE9/////wAAAAAAAQAo" + + "AQEAAAABAAAAAAAAAAEB/////wAAAAAXYKkKAgAAAAAADwAAAE91dHB1dEFyZ3VtZW50cwEA2EAALgBE" + + "2EAAAJYBAAAAAQAqAQEbAAAADAAAAENvbm5lY3Rpb25JZAAR/////wAAAAAAAQAoAQEAAAABAAAAAAAA" + + "AAEB/////wAAAAAEYYIKBAAAAAAAEAAAAFJlbW92ZUNvbm5lY3Rpb24BAGA4AC8BAGA4YDgAAAEB////" + + "/wEAAAAXYKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQBhOAAuAERhOAAAlgEAAAABACoBARsAAAAM" + + "AAAAQ29ubmVjdGlvbklkABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARggAoBAAAA" + + "AAARAAAAUHVibGlzaGVkRGF0YVNldHMBAGI4AC8BAI04YjgAAP////8AAAAABGCACgEAAAAAAAYAAABT" + + "dGF0dXMBAOQ9AC8BADM55D0AAP////8BAAAAFWCJCgIAAAAAAAUAAABTdGF0ZQEA5T0ALwA/5T0AAAEA" + + "Nzn/////AQH/////AAAAAARggAoBAAAAAAALAAAARGlhZ25vc3RpY3MBABtJAC8BABRNG0kAAP////8H" + + "AAAAFWCJCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQAcSQAvAD8cSQAAAQALTf////8BAf////8A" + + "AAAAFWCJCgIAAAAAABAAAABUb3RhbEluZm9ybWF0aW9uAQAdSQAvAQANTR1JAAAAB/////8BAf////8D" + + "AAAAFWCJCgIAAAAAAAYAAABBY3RpdmUBAB5JAC4ARB5JAAAAAf////8BAf////8AAAAAFWCJCgIAAAAA" + + "AA4AAABDbGFzc2lmaWNhdGlvbgEAH0kALgBEH0kAAAEAEk3/////AQH/////AAAAABVgiQoCAAAAAAAQ" + + "AAAARGlhZ25vc3RpY3NMZXZlbAEAIEkALgBEIEkAAAEAC03/////AQH/////AAAAABVgiQoCAAAAAAAK" + + "AAAAVG90YWxFcnJvcgEAIkkALwEADU0iSQAAAAf/////AQH/////AwAAABVgiQoCAAAAAAAGAAAAQWN0" + + "aXZlAQAjSQAuAEQjSQAAAAH/////AQH/////AAAAABVgiQoCAAAAAAAOAAAAQ2xhc3NpZmljYXRpb24B" + + "ACRJAC4ARCRJAAABABJN/////wEB/////wAAAAAVYIkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwB" + + "ACVJAC4ARCVJAAABAAtN/////wEB/////wAAAAAEYYIKBAAAAAAABQAAAFJlc2V0AQAnSQAvAQDpTCdJ" + + "AAABAf////8AAAAAFWCJCgIAAAAAAAgAAABTdWJFcnJvcgEAKEkALwA/KEkAAAAB/////wEB/////wAA" + + "AAAEYIAKAQAAAAAACAAAAENvdW50ZXJzAQApSQAvADopSQAA/////wYAAAAVYIkKAgAAAAAACgAAAFN0" + + "YXRlRXJyb3IBACpJAC8BAA1NKkkAAAAH/////wEB/////wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEA" + + "K0kALgBEK0kAAAAB/////wEB/////wAAAAAVYKkKAgAAAAAADgAAAENsYXNzaWZpY2F0aW9uAQAsSQAu" + + "AEQsSQAABgEAAAABABJN/////wEB/////wAAAAAVYKkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwB" + + "AC1JAC4ARC1JAAAGAAAAAAEAC03/////AQH/////AAAAABVgiQoCAAAAAAAYAAAAU3RhdGVPcGVyYXRp" + + "b25hbEJ5TWV0aG9kAQAvSQAvAQANTS9JAAAAB/////8BAf////8DAAAAFWCJCgIAAAAAAAYAAABBY3Rp" + + "dmUBADBJAC4ARDBJAAAAAf////8BAf////8AAAAAFWCpCgIAAAAAAA4AAABDbGFzc2lmaWNhdGlvbgEA" + + "MUkALgBEMUkAAAYAAAAAAQASTf////8BAf////8AAAAAFWCpCgIAAAAAABAAAABEaWFnbm9zdGljc0xl" + + "dmVsAQAySQAuAEQySQAABgAAAAABAAtN/////wEB/////wAAAAAVYIkKAgAAAAAAGAAAAFN0YXRlT3Bl" + + "cmF0aW9uYWxCeVBhcmVudAEANEkALwEADU00SQAAAAf/////AQH/////AwAAABVgiQoCAAAAAAAGAAAA" + + "QWN0aXZlAQA1SQAuAEQ1SQAAAAH/////AQH/////AAAAABVgqQoCAAAAAAAOAAAAQ2xhc3NpZmljYXRp" + + "b24BADZJAC4ARDZJAAAGAAAAAAEAEk3/////AQH/////AAAAABVgqQoCAAAAAAAQAAAARGlhZ25vc3Rp" + + "Y3NMZXZlbAEAN0kALgBEN0kAAAYAAAAAAQALTf////8BAf////8AAAAAFWCJCgIAAAAAABkAAABTdGF0" + + "ZU9wZXJhdGlvbmFsRnJvbUVycm9yAQA5SQAvAQANTTlJAAAAB/////8BAf////8DAAAAFWCJCgIAAAAA" + + "AAYAAABBY3RpdmUBADpJAC4ARDpJAAAAAf////8BAf////8AAAAAFWCpCgIAAAAAAA4AAABDbGFzc2lm" + + "aWNhdGlvbgEAO0kALgBEO0kAAAYAAAAAAQASTf////8BAf////8AAAAAFWCpCgIAAAAAABAAAABEaWFn" + + "bm9zdGljc0xldmVsAQA8SQAuAEQ8SQAABgAAAAABAAtN/////wEB/////wAAAAAVYIkKAgAAAAAAEwAA" + + "AFN0YXRlUGF1c2VkQnlQYXJlbnQBAD5JAC8BAA1NPkkAAAAH/////wEB/////wMAAAAVYIkKAgAAAAAA" + + "BgAAAEFjdGl2ZQEAP0kALgBEP0kAAAAB/////wEB/////wAAAAAVYKkKAgAAAAAADgAAAENsYXNzaWZp" + + "Y2F0aW9uAQBASQAuAERASQAABgAAAAABABJN/////wEB/////wAAAAAVYKkKAgAAAAAAEAAAAERpYWdu" + + "b3N0aWNzTGV2ZWwBAEFJAC4AREFJAAAGAAAAAAEAC03/////AQH/////AAAAABVgiQoCAAAAAAAVAAAA" + + "U3RhdGVEaXNhYmxlZEJ5TWV0aG9kAQBDSQAvAQANTUNJAAAAB/////8BAf////8DAAAAFWCJCgIAAAAA" + + "AAYAAABBY3RpdmUBAERJAC4ARERJAAAAAf////8BAf////8AAAAAFWCpCgIAAAAAAA4AAABDbGFzc2lm" + + "aWNhdGlvbgEARUkALgBERUkAAAYAAAAAAQASTf////8BAf////8AAAAAFWCpCgIAAAAAABAAAABEaWFn" + + "bm9zdGljc0xldmVsAQBGSQAuAERGSQAABgAAAAABAAtN/////wEB/////wAAAAAEYIAKAQAAAAAACgAA" + + "AExpdmVWYWx1ZXMBAEhJAC8AOkhJAAD/////BAAAABVgiQoCAAAAAAAYAAAAQ29uZmlndXJlZERhdGFT" + + "ZXRXcml0ZXJzAQBJSQAvAD9JSQAAAAX/////AQH/////AQAAABVgqQoCAAAAAAAQAAAARGlhZ25vc3Rp" + + "Y3NMZXZlbAEASkkALgBESkkAAAYAAAAAAQALTf////8BAf////8AAAAAFWCJCgIAAAAAABgAAABDb25m" + + "aWd1cmVkRGF0YVNldFJlYWRlcnMBAEtJAC8AP0tJAAAABf////8BAf////8BAAAAFWCpCgIAAAAAABAA" + + "AABEaWFnbm9zdGljc0xldmVsAQBMSQAuAERMSQAABgAAAAABAAtN/////wEB/////wAAAAAVYIkKAgAA" + + "AAAAGQAAAE9wZXJhdGlvbmFsRGF0YVNldFdyaXRlcnMBAE1JAC8AP01JAAAABf////8BAf////8BAAAA" + + "FWCpCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQBOSQAuAEROSQAABgAAAAABAAtN/////wEB////" + + "/wAAAAAVYIkKAgAAAAAAGQAAAE9wZXJhdGlvbmFsRGF0YVNldFJlYWRlcnMBAE9JAC8AP09JAAAABf//" + + "//8BAf////8BAAAAFWCpCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQBQSQAuAERQSQAABgAAAAAB" + + "AAtN/////wEB/////wAAAAAXYIkKAgAAAAAAGgAAAFN1cHBvcnRlZFRyYW5zcG9ydFByb2ZpbGVzAQBH" + + "RAAuAERHRAAAAAwBAAAAAQAAAAAAAAABAf////8AAAAA"; #endregion #endif #endregion @@ -63113,24 +67743,18 @@ protected override void InitializeOptionalChildren(ISystemContext context) private const string InitializationString = "//////////8EYIACAQAAAAAAHAAAAFB1Ymxpc2hlZERhdGFTZXRUeXBlSW5zdGFuY2UBAK04AQCtOK04" + - "AAD/////BQAAAARgwAoBAAAAHQAAAERhdGFTZXRXcml0ZXJOYW1lX1BsYWNlaG9sZGVyAAATAAAAPERh" + - "dGFTZXRXcml0ZXJOYW1lPgEAdjsBAFg6AQDCO3Y7AAD/////BAAAABVgiQoCAAAAAAAPAAAARGF0YVNl" + - "dFdyaXRlcklkAQBQQQAuAERQQQAAAAX/////AQH/////AAAAABVgiQoCAAAAAAAXAAAARGF0YVNldEZp" + - "ZWxkQ29udGVudE1hc2sBAFFBAC4ARFFBAAABAN88/////wEB/////wAAAAAXYIkKAgAAAAAAFwAAAERh" + - "dGFTZXRXcml0ZXJQcm9wZXJ0aWVzAQBKRAAuAERKRAAAAQDFOAEAAAABAAAAAAAAAAEB/////wAAAAAE" + - "YIAKAQAAAAAABgAAAFN0YXR1cwEAdzsALwEAMzl3OwAA/////wEAAAAVYIkKAgAAAAAABQAAAFN0YXRl" + - "AQB4OwAvAD94OwAAAQA3Of////8BAf////8AAAAAFWCJCgIAAAAAABQAAABDb25maWd1cmF0aW9uVmVy" + - "c2lvbgEAtzgALgBEtzgAAAEAATn/////AQH/////AAAAABVgiQoCAAAAAAAPAAAARGF0YVNldE1ldGFE" + - "YXRhAQB9OwAuAER9OwAAAQC7OP////8BAf////8AAAAAFWCJCgIAAAAAAA4AAABEYXRhU2V0Q2xhc3NJ" + - "ZAEAd0EALgBEd0EAAAAO/////wEB/////wAAAAAEYIAKAQAAAAAADwAAAEV4dGVuc2lvbkZpZWxkcwEA" + - "eTwALwEAgTx5PAAA/////wIAAAAEYYIKBAAAAAAAEQAAAEFkZEV4dGVuc2lvbkZpZWxkAQB6PAAvAQCD" + - "PHo8AAABAf////8CAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEAezwALgBEezwAAJYCAAAA" + - "AQAqAQEYAAAACQAAAEZpZWxkTmFtZQAU/////wAAAAAAAQAqAQEZAAAACgAAAEZpZWxkVmFsdWUAGP7/" + - "//8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVu" + - "dHMBAHw8AC4ARHw8AACWAQAAAAEAKgEBFgAAAAcAAABGaWVsZElkABH/////AAAAAAABACgBAQAAAAEA" + - "AAAAAAAAAQH/////AAAAAARhggoEAAAAAAAUAAAAUmVtb3ZlRXh0ZW5zaW9uRmllbGQBAH08AC8BAIY8" + - "fTwAAAEB/////wEAAAAXYKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQB+PAAuAER+PAAAlgEAAAAB" + - "ACoBARYAAAAHAAAARmllbGRJZAAR/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAA="; + "AAD/////BAAAABVgiQoCAAAAAAAUAAAAQ29uZmlndXJhdGlvblZlcnNpb24BALc4AC4ARLc4AAABAAE5" + + "/////wEB/////wAAAAAVYIkKAgAAAAAADwAAAERhdGFTZXRNZXRhRGF0YQEAfTsALgBEfTsAAAEAuzj/" + + "////AQH/////AAAAABVgiQoCAAAAAAAOAAAARGF0YVNldENsYXNzSWQBAHdBAC4ARHdBAAAADv////8B" + + "Af////8AAAAABGCACgEAAAAAAA8AAABFeHRlbnNpb25GaWVsZHMBAHk8AC8BAIE8eTwAAP////8CAAAA" + + "BGGCCgQAAAAAABEAAABBZGRFeHRlbnNpb25GaWVsZAEAejwALwEAgzx6PAAAAQH/////AgAAABdgqQoC" + + "AAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAHs8AC4ARHs8AACWAgAAAAEAKgEBGAAAAAkAAABGaWVsZE5h" + + "bWUAFP////8AAAAAAAEAKgEBGQAAAAoAAABGaWVsZFZhbHVlABj+////AAAAAAABACgBAQAAAAEAAAAA" + + "AAAAAQH/////AAAAABdgqQoCAAAAAAAPAAAAT3V0cHV0QXJndW1lbnRzAQB8PAAuAER8PAAAlgEAAAAB" + + "ACoBARYAAAAHAAAARmllbGRJZAAR/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAEYYIK" + + "BAAAAAAAFAAAAFJlbW92ZUV4dGVuc2lvbkZpZWxkAQB9PAAvAQCGPH08AAABAf////8BAAAAF2CpCgIA" + + "AAAAAA4AAABJbnB1dEFyZ3VtZW50cwEAfjwALgBEfjwAAJYBAAAAAQAqAQEWAAAABwAAAEZpZWxkSWQA" + + "Ef////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAA"; #endregion #endif #endregion @@ -63406,16 +68030,14 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8EYIACAQAAAAAAGwAAAEV4dGVuc2lvbkZpZWxkc1R5cGVJbnN0YW5jZQEAgTwBAIE8gTwA" + - "AP////8DAAAAFWDJCgIAAAAeAAAARXh0ZW5zaW9uRmllbGROYW1lX1BsYWNlaG9sZGVyAAAUAAAAPEV4" + - "dGVuc2lvbkZpZWxkTmFtZT4BAII8AC4ARII8AAAAGP////8BAf////8AAAAABGGCCgQAAAAAABEAAABB" + - "ZGRFeHRlbnNpb25GaWVsZAEAgzwALwEAgzyDPAAAAQH/////AgAAABdgqQoCAAAAAAAOAAAASW5wdXRB" + - "cmd1bWVudHMBAIQ8AC4ARIQ8AACWAgAAAAEAKgEBGAAAAAkAAABGaWVsZE5hbWUAFP////8AAAAAAAEA" + - "KgEBGQAAAAoAAABGaWVsZFZhbHVlABj+////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAABdg" + - "qQoCAAAAAAAPAAAAT3V0cHV0QXJndW1lbnRzAQCFPAAuAESFPAAAlgEAAAABACoBARYAAAAHAAAARmll" + - "bGRJZAAR/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAEYYIKBAAAAAAAFAAAAFJlbW92" + - "ZUV4dGVuc2lvbkZpZWxkAQCGPAAvAQCGPIY8AAABAf////8BAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFy" + - "Z3VtZW50cwEAhzwALgBEhzwAAJYBAAAAAQAqAQEWAAAABwAAAEZpZWxkSWQAEf////8AAAAAAAEAKAEB" + - "AAAAAQAAAAAAAAABAf////8AAAAA"; + "AP////8CAAAABGGCCgQAAAAAABEAAABBZGRFeHRlbnNpb25GaWVsZAEAgzwALwEAgzyDPAAAAQH/////" + + "AgAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAIQ8AC4ARIQ8AACWAgAAAAEAKgEBGAAAAAkA" + + "AABGaWVsZE5hbWUAFP////8AAAAAAAEAKgEBGQAAAAoAAABGaWVsZFZhbHVlABj+////AAAAAAABACgB" + + "AQAAAAEAAAAAAAAAAQH/////AAAAABdgqQoCAAAAAAAPAAAAT3V0cHV0QXJndW1lbnRzAQCFPAAuAESF" + + "PAAAlgEAAAABACoBARYAAAAHAAAARmllbGRJZAAR/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB////" + + "/wAAAAAEYYIKBAAAAAAAFAAAAFJlbW92ZUV4dGVuc2lvbkZpZWxkAQCGPAAvAQCGPIY8AAABAf////8B" + + "AAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEAhzwALgBEhzwAAJYBAAAAAQAqAQEWAAAABwAA" + + "AEZpZWxkSWQAEf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAA"; #endregion #endif #endregion @@ -64820,92 +69442,47 @@ protected override void InitializeOptionalChildren(ISystemContext context) private const string InitializationString = "//////////8EYIACAQAAAAAAGQAAAERhdGFTZXRGb2xkZXJUeXBlSW5zdGFuY2UBAI04AQCNOI04AAD/" + - "////CQAAAARgwAoBAAAAHQAAAERhdGFTZXRGb2xkZXJOYW1lX1BsYWNlaG9sZGVyAAATAAAAPERhdGFT" + - "ZXRGb2xkZXJOYW1lPgEAjjgAIwEAjTiOOAAA/////wcAAAAEYYIKBAAAAAAAFQAAAEFkZFB1Ymxpc2hl" + - "ZERhdGFJdGVtcwEAjzgALwEAnTiPOAAAAQH/////AgAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVu" + - "dHMBAJA4AC4ARJA4AACWBAAAAAEAKgEBEwAAAAQAAABOYW1lAAz/////AAAAAAABACoBASMAAAAQAAAA" + - "RmllbGROYW1lQWxpYXNlcwAMAQAAAAEAAAAAAAAAAAEAKgEBHwAAAAoAAABGaWVsZEZsYWdzAQAgPgEA" + - "AAABAAAAAAAAAAABACoBASMAAAAOAAAAVmFyaWFibGVzVG9BZGQBAME3AQAAAAEAAAAAAAAAAAEAKAEB" + - "AAAAAQAAAAAAAAABAf////8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVudHMBAJE4AC4ARJE4" + - "AACWAwAAAAEAKgEBHAAAAA0AAABEYXRhU2V0Tm9kZUlkABH/////AAAAAAABACoBASUAAAAUAAAAQ29u" + - "ZmlndXJhdGlvblZlcnNpb24BAAE5/////wAAAAAAAQAqAQEdAAAACgAAAEFkZFJlc3VsdHMAEwEAAAAB" + - "AAAAAAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARhggoEAAAAAAASAAAAQWRkUHVibGlzaGVk" + - "RXZlbnRzAQCSOAAvAQCgOJI4AAABAf////8CAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEA" + - "kzgALgBEkzgAAJYGAAAAAQAqAQETAAAABAAAAE5hbWUADP////8AAAAAAAEAKgEBHAAAAA0AAABFdmVu" + - "dE5vdGlmaWVyABH/////AAAAAAABACoBASMAAAAQAAAARmllbGROYW1lQWxpYXNlcwAMAQAAAAEAAAAA" + - "AAAAAAEAKgEBHwAAAAoAAABGaWVsZEZsYWdzAQAgPgEAAAABAAAAAAAAAAABACoBASMAAAAOAAAAU2Vs" + - "ZWN0ZWRGaWVsZHMBAFkCAQAAAAEAAAAAAAAAAAEAKgEBFwAAAAYAAABGaWx0ZXIBAEoC/////wAAAAAA" + - "AQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAXYKkKAgAAAAAADwAAAE91dHB1dEFyZ3VtZW50cwEAlDgA" + - "LgBElDgAAJYCAAAAAQAqAQElAAAAFAAAAENvbmZpZ3VyYXRpb25WZXJzaW9uAQABOf////8AAAAAAAEA" + - "KgEBHAAAAA0AAABEYXRhU2V0Tm9kZUlkABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAA" + - "AARhggoEAAAAAAAdAAAAQWRkUHVibGlzaGVkRGF0YUl0ZW1zVGVtcGxhdGUBAMpBAC8BACdCykEAAAEB" + - "/////wIAAAAXYKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQDLQQAuAETLQQAAlgMAAAABACoBARMA" + - "AAAEAAAATmFtZQAM/////wAAAAAAAQAqAQEgAAAADwAAAERhdGFTZXRNZXRhRGF0YQEAuzj/////AAAA" + - "AAABACoBASMAAAAOAAAAVmFyaWFibGVzVG9BZGQBAME3AQAAAAEAAAAAAAAAAAEAKAEBAAAAAQAAAAAA" + - "AAABAf////8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVudHMBANVBAC4ARNVBAACWAgAAAAEA" + - "KgEBHAAAAA0AAABEYXRhU2V0Tm9kZUlkABH/////AAAAAAABACoBAR0AAAAKAAAAQWRkUmVzdWx0cwAT" + - "AQAAAAEAAAAAAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAABoAAABBZGRQdWJs" + - "aXNoZWRFdmVudHNUZW1wbGF0ZQEA8UEALwEAQELxQQAAAQH/////AgAAABdgqQoCAAAAAAAOAAAASW5w" + - "dXRBcmd1bWVudHMBAPJBAC4ARPJBAACWBQAAAAEAKgEBEwAAAAQAAABOYW1lAAz/////AAAAAAABACoB" + - "ASAAAAAPAAAARGF0YVNldE1ldGFEYXRhAQC7OP////8AAAAAAAEAKgEBHAAAAA0AAABFdmVudE5vdGlm" + - "aWVyABH/////AAAAAAABACoBASMAAAAOAAAAU2VsZWN0ZWRGaWVsZHMBAFkCAQAAAAEAAAAAAAAAAAEA" + - "KgEBFwAAAAYAAABGaWx0ZXIBAEoC/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAXYKkK" + - "AgAAAAAADwAAAE91dHB1dEFyZ3VtZW50cwEA80EALgBE80EAAJYBAAAAAQAqAQEcAAAADQAAAERhdGFT" + - "ZXROb2RlSWQAEf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAABYAAABS" + - "ZW1vdmVQdWJsaXNoZWREYXRhU2V0AQCVOAAvAQCjOJU4AAABAf////8BAAAAF2CpCgIAAAAAAA4AAABJ" + - "bnB1dEFyZ3VtZW50cwEAljgALgBEljgAAJYBAAAAAQAqAQEcAAAADQAAAERhdGFTZXROb2RlSWQAEf//" + - "//8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAABAAAABBZGREYXRhU2V0Rm9s" + - "ZGVyAQD0QQAvAQBiQvRBAAABAf////8CAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEA/kEA" + - "LgBE/kEAAJYBAAAAAQAqAQETAAAABAAAAE5hbWUADP////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf//" + - "//8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVudHMBABpCAC4ARBpCAACWAQAAAAEAKgEBIgAA" + - "ABMAAABEYXRhU2V0Rm9sZGVyTm9kZUlkABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAA" + - "AARhggoEAAAAAAATAAAAUmVtb3ZlRGF0YVNldEZvbGRlcgEAG0IALwEAZUIbQgAAAQH/////AQAAABdg" + - "qQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBABxCAC4ARBxCAACWAQAAAAEAKgEBIgAAABMAAABEYXRh" + - "U2V0Rm9sZGVyTm9kZUlkABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARgwAoBAAAA" + - "IAAAAFB1Ymxpc2hlZERhdGFTZXROYW1lX1BsYWNlaG9sZGVyAAAWAAAAPFB1Ymxpc2hlZERhdGFTZXRO" + - "YW1lPgEAlzgALwEArTiXOAAA/////wIAAAAVYIkKAgAAAAAAFAAAAENvbmZpZ3VyYXRpb25WZXJzaW9u" + - "AQCZOAAuAESZOAAAAQABOf////8BAf////8AAAAAFWCJCgIAAAAAAA8AAABEYXRhU2V0TWV0YURhdGEB" + - "AHU7AC4ARHU7AAABALs4/////wEB/////wAAAAAEYYIKBAAAAAAAFQAAAEFkZFB1Ymxpc2hlZERhdGFJ" + - "dGVtcwEAnTgALwEAnTidOAAAAQH/////AgAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAJ44" + - "AC4ARJ44AACWBAAAAAEAKgEBEwAAAAQAAABOYW1lAAz/////AAAAAAABACoBASMAAAAQAAAARmllbGRO" + - "YW1lQWxpYXNlcwAMAQAAAAEAAAAAAAAAAAEAKgEBHwAAAAoAAABGaWVsZEZsYWdzAQAgPgEAAAABAAAA" + - "AAAAAAABACoBASMAAAAOAAAAVmFyaWFibGVzVG9BZGQBAME3AQAAAAEAAAAAAAAAAAEAKAEBAAAAAQAA" + - "AAAAAAABAf////8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVudHMBAJ84AC4ARJ84AACWAwAA" + - "AAEAKgEBHAAAAA0AAABEYXRhU2V0Tm9kZUlkABH/////AAAAAAABACoBASUAAAAUAAAAQ29uZmlndXJh" + - "dGlvblZlcnNpb24BAAE5/////wAAAAAAAQAqAQEdAAAACgAAAEFkZFJlc3VsdHMAEwEAAAABAAAAAAAA" + - "AAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARhggoEAAAAAAASAAAAQWRkUHVibGlzaGVkRXZlbnRz" + - "AQCgOAAvAQCgOKA4AAABAf////8CAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEAoTgALgBE" + - "oTgAAJYGAAAAAQAqAQETAAAABAAAAE5hbWUADP////8AAAAAAAEAKgEBHAAAAA0AAABFdmVudE5vdGlm" + - "aWVyABH/////AAAAAAABACoBASMAAAAQAAAARmllbGROYW1lQWxpYXNlcwAMAQAAAAEAAAAAAAAAAAEA" + - "KgEBHwAAAAoAAABGaWVsZEZsYWdzAQAgPgEAAAABAAAAAAAAAAABACoBASMAAAAOAAAAU2VsZWN0ZWRG" + - "aWVsZHMBAFkCAQAAAAEAAAAAAAAAAAEAKgEBFwAAAAYAAABGaWx0ZXIBAEoC/////wAAAAAAAQAoAQEA" + - "AAABAAAAAAAAAAEB/////wAAAAAXYKkKAgAAAAAADwAAAE91dHB1dEFyZ3VtZW50cwEAojgALgBEojgA" + - "AJYCAAAAAQAqAQElAAAAFAAAAENvbmZpZ3VyYXRpb25WZXJzaW9uAQABOf////8AAAAAAAEAKgEBHAAA" + - "AA0AAABEYXRhU2V0Tm9kZUlkABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARhggoE" + - "AAAAAAAdAAAAQWRkUHVibGlzaGVkRGF0YUl0ZW1zVGVtcGxhdGUBACdCAC8BACdCJ0IAAAEB/////wIA" + - "AAAXYKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQA+QgAuAEQ+QgAAlgMAAAABACoBARMAAAAEAAAA" + - "TmFtZQAM/////wAAAAAAAQAqAQEgAAAADwAAAERhdGFTZXRNZXRhRGF0YQEAuzj/////AAAAAAABACoB" + - "ASMAAAAOAAAAVmFyaWFibGVzVG9BZGQBAME3AQAAAAEAAAAAAAAAAAEAKAEBAAAAAQAAAAAAAAABAf//" + - "//8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVudHMBAD9CAC4ARD9CAACWAgAAAAEAKgEBHAAA" + - "AA0AAABEYXRhU2V0Tm9kZUlkABH/////AAAAAAABACoBAR0AAAAKAAAAQWRkUmVzdWx0cwATAQAAAAEA" + - "AAAAAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAABoAAABBZGRQdWJsaXNoZWRF" + - "dmVudHNUZW1wbGF0ZQEAQEIALwEAQEJAQgAAAQH/////AgAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1" + - "bWVudHMBAEFCAC4AREFCAACWBQAAAAEAKgEBEwAAAAQAAABOYW1lAAz/////AAAAAAABACoBASAAAAAP" + - "AAAARGF0YVNldE1ldGFEYXRhAQC7OP////8AAAAAAAEAKgEBHAAAAA0AAABFdmVudE5vdGlmaWVyABH/" + - "////AAAAAAABACoBASMAAAAOAAAAU2VsZWN0ZWRGaWVsZHMBAFkCAQAAAAEAAAAAAAAAAAEAKgEBFwAA" + - "AAYAAABGaWx0ZXIBAEoC/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAXYKkKAgAAAAAA" + - "DwAAAE91dHB1dEFyZ3VtZW50cwEAS0IALgBES0IAAJYBAAAAAQAqAQEcAAAADQAAAERhdGFTZXROb2Rl" + - "SWQAEf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAABYAAABSZW1vdmVQ" + - "dWJsaXNoZWREYXRhU2V0AQCjOAAvAQCjOKM4AAABAf////8BAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFy" + - "Z3VtZW50cwEApDgALgBEpDgAAJYBAAAAAQAqAQEcAAAADQAAAERhdGFTZXROb2RlSWQAEf////8AAAAA" + - "AAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAABAAAABBZGREYXRhU2V0Rm9sZGVyAQBi" + - "QgAvAQBiQmJCAAABAf////8CAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEAY0IALgBEY0IA" + - "AJYBAAAAAQAqAQETAAAABAAAAE5hbWUADP////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAA" + - "F2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVudHMBAGRCAC4ARGRCAACWAQAAAAEAKgEBIgAAABMAAABE" + - "YXRhU2V0Rm9sZGVyTm9kZUlkABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARhggoE" + - "AAAAAAATAAAAUmVtb3ZlRGF0YVNldEZvbGRlcgEAZUIALwEAZUJlQgAAAQH/////AQAAABdgqQoCAAAA" + - "AAAOAAAASW5wdXRBcmd1bWVudHMBAG9CAC4ARG9CAACWAQAAAAEAKgEBIgAAABMAAABEYXRhU2V0Rm9s" + - "ZGVyTm9kZUlkABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAA=="; + "////BwAAAARhggoEAAAAAAAVAAAAQWRkUHVibGlzaGVkRGF0YUl0ZW1zAQCdOAAvAQCdOJ04AAABAf//" + + "//8CAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEAnjgALgBEnjgAAJYEAAAAAQAqAQETAAAA" + + "BAAAAE5hbWUADP////8AAAAAAAEAKgEBIwAAABAAAABGaWVsZE5hbWVBbGlhc2VzAAwBAAAAAQAAAAAA" + + "AAAAAQAqAQEfAAAACgAAAEZpZWxkRmxhZ3MBACA+AQAAAAEAAAAAAAAAAAEAKgEBIwAAAA4AAABWYXJp" + + "YWJsZXNUb0FkZAEAwTcBAAAAAQAAAAAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAXYKkKAgAA" + + "AAAADwAAAE91dHB1dEFyZ3VtZW50cwEAnzgALgBEnzgAAJYDAAAAAQAqAQEcAAAADQAAAERhdGFTZXRO" + + "b2RlSWQAEf////8AAAAAAAEAKgEBJQAAABQAAABDb25maWd1cmF0aW9uVmVyc2lvbgEAATn/////AAAA" + + "AAABACoBAR0AAAAKAAAAQWRkUmVzdWx0cwATAQAAAAEAAAAAAAAAAAEAKAEBAAAAAQAAAAAAAAABAf//" + + "//8AAAAABGGCCgQAAAAAABIAAABBZGRQdWJsaXNoZWRFdmVudHMBAKA4AC8BAKA4oDgAAAEB/////wIA" + + "AAAXYKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQChOAAuAEShOAAAlgYAAAABACoBARMAAAAEAAAA" + + "TmFtZQAM/////wAAAAAAAQAqAQEcAAAADQAAAEV2ZW50Tm90aWZpZXIAEf////8AAAAAAAEAKgEBIwAA" + + "ABAAAABGaWVsZE5hbWVBbGlhc2VzAAwBAAAAAQAAAAAAAAAAAQAqAQEfAAAACgAAAEZpZWxkRmxhZ3MB" + + "ACA+AQAAAAEAAAAAAAAAAAEAKgEBIwAAAA4AAABTZWxlY3RlZEZpZWxkcwEAWQIBAAAAAQAAAAAAAAAA" + + "AQAqAQEXAAAABgAAAEZpbHRlcgEASgL/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAABdg" + + "qQoCAAAAAAAPAAAAT3V0cHV0QXJndW1lbnRzAQCiOAAuAESiOAAAlgIAAAABACoBASUAAAAUAAAAQ29u" + + "ZmlndXJhdGlvblZlcnNpb24BAAE5/////wAAAAAAAQAqAQEcAAAADQAAAERhdGFTZXROb2RlSWQAEf//" + + "//8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAAB0AAABBZGRQdWJsaXNoZWRE" + + "YXRhSXRlbXNUZW1wbGF0ZQEAJ0IALwEAJ0InQgAAAQH/////AgAAABdgqQoCAAAAAAAOAAAASW5wdXRB" + + "cmd1bWVudHMBAD5CAC4ARD5CAACWAwAAAAEAKgEBEwAAAAQAAABOYW1lAAz/////AAAAAAABACoBASAA" + + "AAAPAAAARGF0YVNldE1ldGFEYXRhAQC7OP////8AAAAAAAEAKgEBIwAAAA4AAABWYXJpYWJsZXNUb0Fk" + + "ZAEAwTcBAAAAAQAAAAAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAXYKkKAgAAAAAADwAAAE91" + + "dHB1dEFyZ3VtZW50cwEAP0IALgBEP0IAAJYCAAAAAQAqAQEcAAAADQAAAERhdGFTZXROb2RlSWQAEf//" + + "//8AAAAAAAEAKgEBHQAAAAoAAABBZGRSZXN1bHRzABMBAAAAAQAAAAAAAAAAAQAoAQEAAAABAAAAAAAA" + + "AAEB/////wAAAAAEYYIKBAAAAAAAGgAAAEFkZFB1Ymxpc2hlZEV2ZW50c1RlbXBsYXRlAQBAQgAvAQBA" + + "QkBCAAABAf////8CAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEAQUIALgBEQUIAAJYFAAAA" + + "AQAqAQETAAAABAAAAE5hbWUADP////8AAAAAAAEAKgEBIAAAAA8AAABEYXRhU2V0TWV0YURhdGEBALs4" + + "/////wAAAAAAAQAqAQEcAAAADQAAAEV2ZW50Tm90aWZpZXIAEf////8AAAAAAAEAKgEBIwAAAA4AAABT" + + "ZWxlY3RlZEZpZWxkcwEAWQIBAAAAAQAAAAAAAAAAAQAqAQEXAAAABgAAAEZpbHRlcgEASgL/////AAAA" + + "AAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAABdgqQoCAAAAAAAPAAAAT3V0cHV0QXJndW1lbnRzAQBL" + + "QgAuAERLQgAAlgEAAAABACoBARwAAAANAAAARGF0YVNldE5vZGVJZAAR/////wAAAAAAAQAoAQEAAAAB" + + "AAAAAAAAAAEB/////wAAAAAEYYIKBAAAAAAAFgAAAFJlbW92ZVB1Ymxpc2hlZERhdGFTZXQBAKM4AC8B" + + "AKM4ozgAAAEB/////wEAAAAXYKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQCkOAAuAESkOAAAlgEA" + + "AAABACoBARwAAAANAAAARGF0YVNldE5vZGVJZAAR/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB////" + + "/wAAAAAEYYIKBAAAAAAAEAAAAEFkZERhdGFTZXRGb2xkZXIBAGJCAC8BAGJCYkIAAAEB/////wIAAAAX" + + "YKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQBjQgAuAERjQgAAlgEAAAABACoBARMAAAAEAAAATmFt" + + "ZQAM/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAXYKkKAgAAAAAADwAAAE91dHB1dEFy" + + "Z3VtZW50cwEAZEIALgBEZEIAAJYBAAAAAQAqAQEiAAAAEwAAAERhdGFTZXRGb2xkZXJOb2RlSWQAEf//" + + "//8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAABMAAABSZW1vdmVEYXRhU2V0" + + "Rm9sZGVyAQBlQgAvAQBlQmVCAAABAf////8BAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEA" + + "b0IALgBEb0IAAJYBAAAAAQAqAQEiAAAAEwAAAERhdGFTZXRGb2xkZXJOb2RlSWQAEf////8AAAAAAAEA" + + "KAEBAAAAAQAAAAAAAAABAf////8AAAAA"; #endregion #endif #endregion @@ -66186,83 +70763,66 @@ protected override void InitializeOptionalChildren(ISystemContext context) private const string InitializationString = "//////////8EYIACAQAAAAAAHAAAAFB1YlN1YkNvbm5lY3Rpb25UeXBlSW5zdGFuY2UBAIE3AQCBN4E3" + - "AAD/////DAAAABVgiQoCAAAAAAALAAAAUHVibGlzaGVySWQBAAM5AC4ARAM5AAAAGP////8BAf////8A" + + "AAD/////CgAAABVgiQoCAAAAAAALAAAAUHVibGlzaGVySWQBAAM5AC4ARAM5AAAAGP////8BAf////8A" + "AAAAFWCJCgIAAAAAABMAAABUcmFuc3BvcnRQcm9maWxlVXJpAQCaQwAvAQC1P5pDAAAADP////8BAf//" + "//8BAAAAF2CJCgIAAAAAAAoAAABTZWxlY3Rpb25zAQAuRQAuAEQuRQAAABgBAAAAAQAAAAAAAAABAf//" + "//8AAAAAF2CJCgIAAAAAABQAAABDb25uZWN0aW9uUHJvcGVydGllcwEATUQALgBETUQAAAEAxTgBAAAA" + "AQAAAAAAAAABAf////8AAAAABGCACgEAAAAAAAcAAABBZGRyZXNzAQCNNwAvAQCZUo03AAD/////AQAA" + "ABVgiQoCAAAAAAAQAAAATmV0d29ya0ludGVyZmFjZQEAMkMALwEAtT8yQwAAAAz/////AQH/////AQAA" + "ABdgiQoCAAAAAAAKAAAAU2VsZWN0aW9ucwEAqEQALgBEqEQAAAAYAQAAAAEAAAAAAAAAAQH/////AAAA" + - "AARggAoBAAAAAAARAAAAVHJhbnNwb3J0U2V0dGluZ3MBADNDAC8BADlFM0MAAP////8AAAAABGDACgEA" + - "AAAbAAAAV3JpdGVyR3JvdXBOYW1lX1BsYWNlaG9sZGVyAAARAAAAPFdyaXRlckdyb3VwTmFtZT4BAJ5D" + - "AQB0SQEAPUWeQwAA/////woAAAAVYIkKAgAAAAAADAAAAFNlY3VyaXR5TW9kZQEAn0MALgBEn0MAAAEA" + - "LgH/////AQH/////AAAAABVgiQoCAAAAAAAVAAAATWF4TmV0d29ya01lc3NhZ2VTaXplAQA0QwAuAEQ0" + - "QwAAAAf/////AQH/////AAAAABdgiQoCAAAAAAAPAAAAR3JvdXBQcm9wZXJ0aWVzAQBORAAuAERORAAA" + - "AQDFOAEAAAABAAAAAAAAAAEB/////wAAAAAEYIAKAQAAAAAABgAAAFN0YXR1cwEAokMALwEAMzmiQwAA" + - "/////wEAAAAVYIkKAgAAAAAABQAAAFN0YXRlAQCjQwAvAD+jQwAAAQA3Of////8BAf////8AAAAAFWCJ" + - "CgIAAAAAAA0AAABXcml0ZXJHcm91cElkAQA+QwAuAEQ+QwAAAAX/////AQH/////AAAAABVgiQoCAAAA" + - "AAASAAAAUHVibGlzaGluZ0ludGVydmFsAQCmQwAuAESmQwAAAQAiAf////8BAf////8AAAAAFWCJCgIA" + - "AAAAAA0AAABLZWVwQWxpdmVUaW1lAQCnQwAuAESnQwAAAQAiAf////8BAf////8AAAAAFWCJCgIAAAAA" + - "AAgAAABQcmlvcml0eQEAqUMALgBEqUMAAAAD/////wEB/////wAAAAAXYIkKAgAAAAAACQAAAExvY2Fs" + - "ZUlkcwEAqkMALgBEqkMAAAEAJwEBAAAAAQAAAAAAAAABAf////8AAAAAFWCJCgIAAAAAAA8AAABIZWFk" + - "ZXJMYXlvdXRVcmkBAJZEAC4ARJZEAAAADP////8BAf////8AAAAABGDACgEAAAAbAAAAUmVhZGVyR3Jv" + - "dXBOYW1lX1BsYWNlaG9sZGVyAAARAAAAPFJlYWRlckdyb3VwTmFtZT4BAK1DAQB1SQEAT0atQwAA////" + - "/wQAAAAVYIkKAgAAAAAADAAAAFNlY3VyaXR5TW9kZQEArkMALgBErkMAAAEALgH/////AQH/////AAAA" + - "ABVgiQoCAAAAAAAVAAAATWF4TmV0d29ya01lc3NhZ2VTaXplAQCWQwAuAESWQwAAAAf/////AQH/////" + - "AAAAABdgiQoCAAAAAAAPAAAAR3JvdXBQcm9wZXJ0aWVzAQBPRAAuAERPRAAAAQDFOAEAAAABAAAAAAAA" + - "AAEB/////wAAAAAEYIAKAQAAAAAABgAAAFN0YXR1cwEAsUMALwEAMzmxQwAA/////wEAAAAVYIkKAgAA" + - "AAAABQAAAFN0YXRlAQCyQwAvAD+yQwAAAQA3Of////8BAf////8AAAAABGCACgEAAAAAAAYAAABTdGF0" + - "dXMBAAg5AC8BADM5CDkAAP////8BAAAAFWCJCgIAAAAAAAUAAABTdGF0ZQEACTkALwA/CTkAAAEANzn/" + - "////AQH/////AAAAAARggAoBAAAAAAALAAAARGlhZ25vc3RpY3MBAClLAC8BAEpNKUsAAP////8HAAAA" + - "FWCJCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQAqSwAvAD8qSwAAAQALTf////8BAf////8AAAAA" + - "FWCJCgIAAAAAABAAAABUb3RhbEluZm9ybWF0aW9uAQArSwAvAQANTStLAAAAB/////8BAf////8DAAAA" + - "FWCJCgIAAAAAAAYAAABBY3RpdmUBACxLAC4ARCxLAAAAAf////8BAf////8AAAAAFWCJCgIAAAAAAA4A" + - "AABDbGFzc2lmaWNhdGlvbgEALUsALgBELUsAAAEAEk3/////AQH/////AAAAABVgiQoCAAAAAAAQAAAA" + - "RGlhZ25vc3RpY3NMZXZlbAEALksALgBELksAAAEAC03/////AQH/////AAAAABVgiQoCAAAAAAAKAAAA" + - "VG90YWxFcnJvcgEAMEsALwEADU0wSwAAAAf/////AQH/////AwAAABVgiQoCAAAAAAAGAAAAQWN0aXZl" + - "AQAxSwAuAEQxSwAAAAH/////AQH/////AAAAABVgiQoCAAAAAAAOAAAAQ2xhc3NpZmljYXRpb24BADJL" + - "AC4ARDJLAAABABJN/////wEB/////wAAAAAVYIkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwBADNL" + - "AC4ARDNLAAABAAtN/////wEB/////wAAAAAEYYIKBAAAAAAABQAAAFJlc2V0AQA1SwAvAQDpTDVLAAAB" + - "Af////8AAAAAFWCJCgIAAAAAAAgAAABTdWJFcnJvcgEANksALwA/NksAAAAB/////wEB/////wAAAAAE" + - "YIAKAQAAAAAACAAAAENvdW50ZXJzAQA3SwAvADo3SwAA/////wYAAAAVYIkKAgAAAAAACgAAAFN0YXRl" + - "RXJyb3IBADhLAC8BAA1NOEsAAAAH/////wEB/////wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEAOUsA" + - "LgBEOUsAAAAB/////wEB/////wAAAAAVYKkKAgAAAAAADgAAAENsYXNzaWZpY2F0aW9uAQA6SwAuAEQ6" + - "SwAABgEAAAABABJN/////wEB/////wAAAAAVYKkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwBADtL" + - "AC4ARDtLAAAGAAAAAAEAC03/////AQH/////AAAAABVgiQoCAAAAAAAYAAAAU3RhdGVPcGVyYXRpb25h" + - "bEJ5TWV0aG9kAQA9SwAvAQANTT1LAAAAB/////8BAf////8DAAAAFWCJCgIAAAAAAAYAAABBY3RpdmUB" + - "AD5LAC4ARD5LAAAAAf////8BAf////8AAAAAFWCpCgIAAAAAAA4AAABDbGFzc2lmaWNhdGlvbgEAP0sA" + - "LgBEP0sAAAYAAAAAAQASTf////8BAf////8AAAAAFWCpCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVs" + - "AQBASwAuAERASwAABgAAAAABAAtN/////wEB/////wAAAAAVYIkKAgAAAAAAGAAAAFN0YXRlT3BlcmF0" + - "aW9uYWxCeVBhcmVudAEAQksALwEADU1CSwAAAAf/////AQH/////AwAAABVgiQoCAAAAAAAGAAAAQWN0" + - "aXZlAQBDSwAuAERDSwAAAAH/////AQH/////AAAAABVgqQoCAAAAAAAOAAAAQ2xhc3NpZmljYXRpb24B" + - "AERLAC4ARERLAAAGAAAAAAEAEk3/////AQH/////AAAAABVgqQoCAAAAAAAQAAAARGlhZ25vc3RpY3NM" + - "ZXZlbAEARUsALgBERUsAAAYAAAAAAQALTf////8BAf////8AAAAAFWCJCgIAAAAAABkAAABTdGF0ZU9w" + - "ZXJhdGlvbmFsRnJvbUVycm9yAQBHSwAvAQANTUdLAAAAB/////8BAf////8DAAAAFWCJCgIAAAAAAAYA" + - "AABBY3RpdmUBAEhLAC4AREhLAAAAAf////8BAf////8AAAAAFWCpCgIAAAAAAA4AAABDbGFzc2lmaWNh" + - "dGlvbgEASUsALgBESUsAAAYAAAAAAQASTf////8BAf////8AAAAAFWCpCgIAAAAAABAAAABEaWFnbm9z" + - "dGljc0xldmVsAQBKSwAuAERKSwAABgAAAAABAAtN/////wEB/////wAAAAAVYIkKAgAAAAAAEwAAAFN0" + - "YXRlUGF1c2VkQnlQYXJlbnQBAExLAC8BAA1NTEsAAAAH/////wEB/////wMAAAAVYIkKAgAAAAAABgAA" + - "AEFjdGl2ZQEATUsALgBETUsAAAAB/////wEB/////wAAAAAVYKkKAgAAAAAADgAAAENsYXNzaWZpY2F0" + - "aW9uAQBOSwAuAEROSwAABgAAAAABABJN/////wEB/////wAAAAAVYKkKAgAAAAAAEAAAAERpYWdub3N0" + - "aWNzTGV2ZWwBAE9LAC4ARE9LAAAGAAAAAAEAC03/////AQH/////AAAAABVgiQoCAAAAAAAVAAAAU3Rh" + - "dGVEaXNhYmxlZEJ5TWV0aG9kAQBRSwAvAQANTVFLAAAAB/////8BAf////8DAAAAFWCJCgIAAAAAAAYA" + - "AABBY3RpdmUBAFJLAC4ARFJLAAAAAf////8BAf////8AAAAAFWCpCgIAAAAAAA4AAABDbGFzc2lmaWNh" + - "dGlvbgEAU0sALgBEU0sAAAYAAAAAAQASTf////8BAf////8AAAAAFWCpCgIAAAAAABAAAABEaWFnbm9z" + - "dGljc0xldmVsAQBUSwAuAERUSwAABgAAAAABAAtN/////wEB/////wAAAAAEYIAKAQAAAAAACgAAAExp" + - "dmVWYWx1ZXMBAFZLAC8AOlZLAAD/////AQAAABVgiQoCAAAAAAAPAAAAUmVzb2x2ZWRBZGRyZXNzAQBX" + - "SwAvAD9XSwAAAAz/////AQH/////AQAAABVgqQoCAAAAAAAQAAAARGlhZ25vc3RpY3NMZXZlbAEAWEsA" + - "LgBEWEsAAAYAAAAAAQALTf////8BAf////8AAAAABGGCCgQAAAAAAA4AAABBZGRXcml0ZXJHcm91cAEA" + - "E0QALwEAE0QTRAAAAQH/////AgAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBABREAC4ARBRE" + - "AACWAQAAAAEAKgEBHgAAAA0AAABDb25maWd1cmF0aW9uAQB4PP////8AAAAAAAEAKAEBAAAAAQAAAAAA" + - "AAABAf////8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVudHMBADBEAC4ARDBEAACWAQAAAAEA" + - "KgEBFgAAAAcAAABHcm91cElkABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARhggoE" + - "AAAAAAAOAAAAQWRkUmVhZGVyR3JvdXABADlEAC8BADlEOUQAAAEB/////wIAAAAXYKkKAgAAAAAADgAA" + - "AElucHV0QXJndW1lbnRzAQBjRAAuAERjRAAAlgEAAAABACoBAR4AAAANAAAAQ29uZmlndXJhdGlvbgEA" + - "oDz/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAABdgqQoCAAAAAAAPAAAAT3V0cHV0QXJn" + - "dW1lbnRzAQBkRAAuAERkRAAAlgEAAAABACoBARYAAAAHAAAAR3JvdXBJZAAR/////wAAAAAAAQAoAQEA" + - "AAABAAAAAAAAAAEB/////wAAAAAEYYIKBAAAAAAACwAAAFJlbW92ZUdyb3VwAQCRNwAvAQCRN5E3AAAB" + - "Af////8BAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEAkjcALgBEkjcAAJYBAAAAAQAqAQEW" + - "AAAABwAAAEdyb3VwSWQAEf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAA"; + "AARggAoBAAAAAAARAAAAVHJhbnNwb3J0U2V0dGluZ3MBADNDAC8BADlFM0MAAP////8AAAAABGCACgEA" + + "AAAAAAYAAABTdGF0dXMBAAg5AC8BADM5CDkAAP////8BAAAAFWCJCgIAAAAAAAUAAABTdGF0ZQEACTkA" + + "LwA/CTkAAAEANzn/////AQH/////AAAAAARggAoBAAAAAAALAAAARGlhZ25vc3RpY3MBAClLAC8BAEpN" + + "KUsAAP////8HAAAAFWCJCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQAqSwAvAD8qSwAAAQALTf//" + + "//8BAf////8AAAAAFWCJCgIAAAAAABAAAABUb3RhbEluZm9ybWF0aW9uAQArSwAvAQANTStLAAAAB///" + + "//8BAf////8DAAAAFWCJCgIAAAAAAAYAAABBY3RpdmUBACxLAC4ARCxLAAAAAf////8BAf////8AAAAA" + + "FWCJCgIAAAAAAA4AAABDbGFzc2lmaWNhdGlvbgEALUsALgBELUsAAAEAEk3/////AQH/////AAAAABVg" + + "iQoCAAAAAAAQAAAARGlhZ25vc3RpY3NMZXZlbAEALksALgBELksAAAEAC03/////AQH/////AAAAABVg" + + "iQoCAAAAAAAKAAAAVG90YWxFcnJvcgEAMEsALwEADU0wSwAAAAf/////AQH/////AwAAABVgiQoCAAAA" + + "AAAGAAAAQWN0aXZlAQAxSwAuAEQxSwAAAAH/////AQH/////AAAAABVgiQoCAAAAAAAOAAAAQ2xhc3Np" + + "ZmljYXRpb24BADJLAC4ARDJLAAABABJN/////wEB/////wAAAAAVYIkKAgAAAAAAEAAAAERpYWdub3N0" + + "aWNzTGV2ZWwBADNLAC4ARDNLAAABAAtN/////wEB/////wAAAAAEYYIKBAAAAAAABQAAAFJlc2V0AQA1" + + "SwAvAQDpTDVLAAABAf////8AAAAAFWCJCgIAAAAAAAgAAABTdWJFcnJvcgEANksALwA/NksAAAAB////" + + "/wEB/////wAAAAAEYIAKAQAAAAAACAAAAENvdW50ZXJzAQA3SwAvADo3SwAA/////wYAAAAVYIkKAgAA" + + "AAAACgAAAFN0YXRlRXJyb3IBADhLAC8BAA1NOEsAAAAH/////wEB/////wMAAAAVYIkKAgAAAAAABgAA" + + "AEFjdGl2ZQEAOUsALgBEOUsAAAAB/////wEB/////wAAAAAVYKkKAgAAAAAADgAAAENsYXNzaWZpY2F0" + + "aW9uAQA6SwAuAEQ6SwAABgEAAAABABJN/////wEB/////wAAAAAVYKkKAgAAAAAAEAAAAERpYWdub3N0" + + "aWNzTGV2ZWwBADtLAC4ARDtLAAAGAAAAAAEAC03/////AQH/////AAAAABVgiQoCAAAAAAAYAAAAU3Rh" + + "dGVPcGVyYXRpb25hbEJ5TWV0aG9kAQA9SwAvAQANTT1LAAAAB/////8BAf////8DAAAAFWCJCgIAAAAA" + + "AAYAAABBY3RpdmUBAD5LAC4ARD5LAAAAAf////8BAf////8AAAAAFWCpCgIAAAAAAA4AAABDbGFzc2lm" + + "aWNhdGlvbgEAP0sALgBEP0sAAAYAAAAAAQASTf////8BAf////8AAAAAFWCpCgIAAAAAABAAAABEaWFn" + + "bm9zdGljc0xldmVsAQBASwAuAERASwAABgAAAAABAAtN/////wEB/////wAAAAAVYIkKAgAAAAAAGAAA" + + "AFN0YXRlT3BlcmF0aW9uYWxCeVBhcmVudAEAQksALwEADU1CSwAAAAf/////AQH/////AwAAABVgiQoC" + + "AAAAAAAGAAAAQWN0aXZlAQBDSwAuAERDSwAAAAH/////AQH/////AAAAABVgqQoCAAAAAAAOAAAAQ2xh" + + "c3NpZmljYXRpb24BAERLAC4ARERLAAAGAAAAAAEAEk3/////AQH/////AAAAABVgqQoCAAAAAAAQAAAA" + + "RGlhZ25vc3RpY3NMZXZlbAEARUsALgBERUsAAAYAAAAAAQALTf////8BAf////8AAAAAFWCJCgIAAAAA" + + "ABkAAABTdGF0ZU9wZXJhdGlvbmFsRnJvbUVycm9yAQBHSwAvAQANTUdLAAAAB/////8BAf////8DAAAA" + + "FWCJCgIAAAAAAAYAAABBY3RpdmUBAEhLAC4AREhLAAAAAf////8BAf////8AAAAAFWCpCgIAAAAAAA4A" + + "AABDbGFzc2lmaWNhdGlvbgEASUsALgBESUsAAAYAAAAAAQASTf////8BAf////8AAAAAFWCpCgIAAAAA" + + "ABAAAABEaWFnbm9zdGljc0xldmVsAQBKSwAuAERKSwAABgAAAAABAAtN/////wEB/////wAAAAAVYIkK" + + "AgAAAAAAEwAAAFN0YXRlUGF1c2VkQnlQYXJlbnQBAExLAC8BAA1NTEsAAAAH/////wEB/////wMAAAAV" + + "YIkKAgAAAAAABgAAAEFjdGl2ZQEATUsALgBETUsAAAAB/////wEB/////wAAAAAVYKkKAgAAAAAADgAA" + + "AENsYXNzaWZpY2F0aW9uAQBOSwAuAEROSwAABgAAAAABABJN/////wEB/////wAAAAAVYKkKAgAAAAAA" + + "EAAAAERpYWdub3N0aWNzTGV2ZWwBAE9LAC4ARE9LAAAGAAAAAAEAC03/////AQH/////AAAAABVgiQoC" + + "AAAAAAAVAAAAU3RhdGVEaXNhYmxlZEJ5TWV0aG9kAQBRSwAvAQANTVFLAAAAB/////8BAf////8DAAAA" + + "FWCJCgIAAAAAAAYAAABBY3RpdmUBAFJLAC4ARFJLAAAAAf////8BAf////8AAAAAFWCpCgIAAAAAAA4A" + + "AABDbGFzc2lmaWNhdGlvbgEAU0sALgBEU0sAAAYAAAAAAQASTf////8BAf////8AAAAAFWCpCgIAAAAA" + + "ABAAAABEaWFnbm9zdGljc0xldmVsAQBUSwAuAERUSwAABgAAAAABAAtN/////wEB/////wAAAAAEYIAK" + + "AQAAAAAACgAAAExpdmVWYWx1ZXMBAFZLAC8AOlZLAAD/////AQAAABVgiQoCAAAAAAAPAAAAUmVzb2x2" + + "ZWRBZGRyZXNzAQBXSwAvAD9XSwAAAAz/////AQH/////AQAAABVgqQoCAAAAAAAQAAAARGlhZ25vc3Rp" + + "Y3NMZXZlbAEAWEsALgBEWEsAAAYAAAAAAQALTf////8BAf////8AAAAABGGCCgQAAAAAAA4AAABBZGRX" + + "cml0ZXJHcm91cAEAE0QALwEAE0QTRAAAAQH/////AgAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVu" + + "dHMBABREAC4ARBREAACWAQAAAAEAKgEBHgAAAA0AAABDb25maWd1cmF0aW9uAQB4PP////8AAAAAAAEA" + + "KAEBAAAAAQAAAAAAAAABAf////8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVudHMBADBEAC4A" + + "RDBEAACWAQAAAAEAKgEBFgAAAAcAAABHcm91cElkABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/" + + "////AAAAAARhggoEAAAAAAAOAAAAQWRkUmVhZGVyR3JvdXABADlEAC8BADlEOUQAAAEB/////wIAAAAX" + + "YKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQBjRAAuAERjRAAAlgEAAAABACoBAR4AAAANAAAAQ29u" + + "ZmlndXJhdGlvbgEAoDz/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAABdgqQoCAAAAAAAP" + + "AAAAT3V0cHV0QXJndW1lbnRzAQBkRAAuAERkRAAAlgEAAAABACoBARYAAAAHAAAAR3JvdXBJZAAR////" + + "/wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAEYYIKBAAAAAAACwAAAFJlbW92ZUdyb3VwAQCR" + + "NwAvAQCRN5E3AAABAf////8BAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3VtZW50cwEAkjcALgBEkjcA" + + "AJYBAAAAAQAqAQEWAAAABwAAAEdyb3VwSWQAEf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8A" + + "AAAA"; #endregion #endif #endregion @@ -67670,7 +72230,7 @@ protected override void InitializeOptionalChildren(ISystemContext context) private const string InitializationString = "//////////8EYIACAQAAAAAAFwAAAFdyaXRlckdyb3VwVHlwZUluc3RhbmNlAQA9RQEAPUU9RQAA////" + - "/xAAAAAVYIkKAgAAAAAADAAAAFNlY3VyaXR5TW9kZQEAPkUALgBEPkUAAAEALgH/////AQH/////AAAA" + + "/w8AAAAVYIkKAgAAAAAADAAAAFNlY3VyaXR5TW9kZQEAPkUALgBEPkUAAAEALgH/////AQH/////AAAA" + "ABVgiQoCAAAAAAAVAAAATWF4TmV0d29ya01lc3NhZ2VTaXplAQBBRQAuAERBRQAAAAf/////AQH/////" + "AAAAABdgiQoCAAAAAAAPAAAAR3JvdXBQcm9wZXJ0aWVzAQBRRAAuAERRRAAAAQDFOAEAAAABAAAAAAAA" + "AAEB/////wAAAAAEYIAKAQAAAAAABgAAAFN0YXR1cwEAQkUALwEAMzlCRQAA/////wEAAAAVYIkKAgAA" + @@ -67682,73 +72242,67 @@ protected override void InitializeOptionalChildren(ISystemContext context) "AAEAJwEBAAAAAQAAAAAAAAABAf////8AAAAAFWCJCgIAAAAAAA8AAABIZWFkZXJMYXlvdXRVcmkBAJdE" + "AC4ARJdEAAAADP////8BAf////8AAAAABGCACgEAAAAAABEAAABUcmFuc3BvcnRTZXR0aW5ncwEATUUA" + "LwEATUZNRQAA/////wAAAAAEYIAKAQAAAAAADwAAAE1lc3NhZ2VTZXR0aW5ncwEATkUALwEATkZORQAA" + - "/////wAAAAAEYMAKAQAAAB0AAABEYXRhU2V0V3JpdGVyTmFtZV9QbGFjZWhvbGRlcgAAEwAAADxEYXRh" + - "U2V0V3JpdGVyTmFtZT4BAE9FAQDAOwEAwjtPRQAA/////wQAAAAVYIkKAgAAAAAADwAAAERhdGFTZXRX" + - "cml0ZXJJZAEAUEUALgBEUEUAAAAF/////wEB/////wAAAAAVYIkKAgAAAAAAFwAAAERhdGFTZXRGaWVs" + - "ZENvbnRlbnRNYXNrAQBRRQAuAERRRQAAAQDfPP////8BAf////8AAAAAF2CJCgIAAAAAABcAAABEYXRh" + - "U2V0V3JpdGVyUHJvcGVydGllcwEAUkQALgBEUkQAAAEAxTgBAAAAAQAAAAAAAAABAf////8AAAAABGCA" + - "CgEAAAAAAAYAAABTdGF0dXMBAFVFAC8BADM5VUUAAP////8BAAAAFWCJCgIAAAAAAAUAAABTdGF0ZQEA" + - "VkUALwA/VkUAAAEANzn/////AQH/////AAAAAARggAoBAAAAAAALAAAARGlhZ25vc3RpY3MBAJRFAC8B" + - "AHpNlEUAAP////8HAAAAFWCJCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQCVRQAvAD+VRQAAAQAL" + - "Tf////8BAf////8AAAAAFWCJCgIAAAAAABAAAABUb3RhbEluZm9ybWF0aW9uAQCWRQAvAQANTZZFAAAA" + - "B/////8BAf////8DAAAAFWCJCgIAAAAAAAYAAABBY3RpdmUBAJdFAC4ARJdFAAAAAf////8BAf////8A" + - "AAAAFWCJCgIAAAAAAA4AAABDbGFzc2lmaWNhdGlvbgEAmEUALgBEmEUAAAEAEk3/////AQH/////AAAA" + - "ABVgiQoCAAAAAAAQAAAARGlhZ25vc3RpY3NMZXZlbAEAmUUALgBEmUUAAAEAC03/////AQH/////AAAA" + - "ABVgiQoCAAAAAAAKAAAAVG90YWxFcnJvcgEAm0UALwEADU2bRQAAAAf/////AQH/////AwAAABVgiQoC" + - "AAAAAAAGAAAAQWN0aXZlAQCcRQAuAEScRQAAAAH/////AQH/////AAAAABVgiQoCAAAAAAAOAAAAQ2xh" + - "c3NpZmljYXRpb24BAJ1FAC4ARJ1FAAABABJN/////wEB/////wAAAAAVYIkKAgAAAAAAEAAAAERpYWdu" + - "b3N0aWNzTGV2ZWwBAJ5FAC4ARJ5FAAABAAtN/////wEB/////wAAAAAEYYIKBAAAAAAABQAAAFJlc2V0" + - "AQCgRQAvAQDpTKBFAAABAf////8AAAAAFWCJCgIAAAAAAAgAAABTdWJFcnJvcgEAoUUALwA/oUUAAAAB" + - "/////wEB/////wAAAAAEYIAKAQAAAAAACAAAAENvdW50ZXJzAQCiRQAvADqiRQAA/////wkAAAAVYIkK" + - "AgAAAAAACgAAAFN0YXRlRXJyb3IBAKNFAC8BAA1No0UAAAAH/////wEB/////wMAAAAVYIkKAgAAAAAA" + - "BgAAAEFjdGl2ZQEApEUALgBEpEUAAAAB/////wEB/////wAAAAAVYKkKAgAAAAAADgAAAENsYXNzaWZp" + - "Y2F0aW9uAQClRQAuAESlRQAABgEAAAABABJN/////wEB/////wAAAAAVYKkKAgAAAAAAEAAAAERpYWdu" + - "b3N0aWNzTGV2ZWwBAKZFAC4ARKZFAAAGAAAAAAEAC03/////AQH/////AAAAABVgiQoCAAAAAAAYAAAA" + - "U3RhdGVPcGVyYXRpb25hbEJ5TWV0aG9kAQCoRQAvAQANTahFAAAAB/////8BAf////8DAAAAFWCJCgIA" + - "AAAAAAYAAABBY3RpdmUBAKlFAC4ARKlFAAAAAf////8BAf////8AAAAAFWCpCgIAAAAAAA4AAABDbGFz" + - "c2lmaWNhdGlvbgEAqkUALgBEqkUAAAYAAAAAAQASTf////8BAf////8AAAAAFWCpCgIAAAAAABAAAABE" + - "aWFnbm9zdGljc0xldmVsAQCrRQAuAESrRQAABgAAAAABAAtN/////wEB/////wAAAAAVYIkKAgAAAAAA" + - "GAAAAFN0YXRlT3BlcmF0aW9uYWxCeVBhcmVudAEArUUALwEADU2tRQAAAAf/////AQH/////AwAAABVg" + - "iQoCAAAAAAAGAAAAQWN0aXZlAQCuRQAuAESuRQAAAAH/////AQH/////AAAAABVgqQoCAAAAAAAOAAAA" + - "Q2xhc3NpZmljYXRpb24BAK9FAC4ARK9FAAAGAAAAAAEAEk3/////AQH/////AAAAABVgqQoCAAAAAAAQ" + - "AAAARGlhZ25vc3RpY3NMZXZlbAEAsEUALgBEsEUAAAYAAAAAAQALTf////8BAf////8AAAAAFWCJCgIA" + - "AAAAABkAAABTdGF0ZU9wZXJhdGlvbmFsRnJvbUVycm9yAQCyRQAvAQANTbJFAAAAB/////8BAf////8D" + - "AAAAFWCJCgIAAAAAAAYAAABBY3RpdmUBALNFAC4ARLNFAAAAAf////8BAf////8AAAAAFWCpCgIAAAAA" + - "AA4AAABDbGFzc2lmaWNhdGlvbgEAtEUALgBEtEUAAAYAAAAAAQASTf////8BAf////8AAAAAFWCpCgIA" + - "AAAAABAAAABEaWFnbm9zdGljc0xldmVsAQC1RQAuAES1RQAABgAAAAABAAtN/////wEB/////wAAAAAV" + - "YIkKAgAAAAAAEwAAAFN0YXRlUGF1c2VkQnlQYXJlbnQBALdFAC8BAA1Nt0UAAAAH/////wEB/////wMA" + - "AAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEAuEUALgBEuEUAAAAB/////wEB/////wAAAAAVYKkKAgAAAAAA" + - "DgAAAENsYXNzaWZpY2F0aW9uAQC5RQAuAES5RQAABgAAAAABABJN/////wEB/////wAAAAAVYKkKAgAA" + - "AAAAEAAAAERpYWdub3N0aWNzTGV2ZWwBALpFAC4ARLpFAAAGAAAAAAEAC03/////AQH/////AAAAABVg" + - "iQoCAAAAAAAVAAAAU3RhdGVEaXNhYmxlZEJ5TWV0aG9kAQC9RQAvAQANTb1FAAAAB/////8BAf////8D" + - "AAAAFWCJCgIAAAAAAAYAAABBY3RpdmUBAL5FAC4ARL5FAAAAAf////8BAf////8AAAAAFWCpCgIAAAAA" + - "AA4AAABDbGFzc2lmaWNhdGlvbgEAv0UALgBEv0UAAAYAAAAAAQASTf////8BAf////8AAAAAFWCpCgIA" + - "AAAAABAAAABEaWFnbm9zdGljc0xldmVsAQDARQAuAETARQAABgAAAAABAAtN/////wEB/////wAAAAAV" + - "YIkKAgAAAAAAEwAAAFNlbnROZXR3b3JrTWVzc2FnZXMBAMNFAC8BAA1Nw0UAAAAH/////wEB/////wMA" + - "AAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEAyEUALgBEyEUAAAAB/////wEB/////wAAAAAVYKkKAgAAAAAA" + - "DgAAAENsYXNzaWZpY2F0aW9uAQDPRQAuAETPRQAABgAAAAABABJN/////wEB/////wAAAAAVYKkKAgAA" + - "AAAAEAAAAERpYWdub3N0aWNzTGV2ZWwBANBFAC4ARNBFAAAGAAAAAAEAC03/////AQH/////AAAAABVg" + - "iQoCAAAAAAATAAAARmFpbGVkVHJhbnNtaXNzaW9ucwEA0kUALwEADU3SRQAAAAf/////AQH/////AwAA" + - "ABVgiQoCAAAAAAAGAAAAQWN0aXZlAQDWRQAuAETWRQAAAAH/////AQH/////AAAAABVgqQoCAAAAAAAO" + - "AAAAQ2xhc3NpZmljYXRpb24BAN1FAC4ARN1FAAAGAQAAAAEAEk3/////AQH/////AAAAABVgqQoCAAAA" + - "AAAQAAAARGlhZ25vc3RpY3NMZXZlbAEA5EUALgBE5EUAAAYAAAAAAQALTf////8BAf////8AAAAAFWCJ" + - "CgIAAAAAABAAAABFbmNyeXB0aW9uRXJyb3JzAQDsRQAvAQANTexFAAAAB/////8BAf////8DAAAAFWCJ" + - "CgIAAAAAAAYAAABBY3RpdmUBAO1FAC4ARO1FAAAAAf////8BAf////8AAAAAFWCpCgIAAAAAAA4AAABD" + - "bGFzc2lmaWNhdGlvbgEA7kUALgBE7kUAAAYBAAAAAQASTf////8BAf////8AAAAAFWCpCgIAAAAAABAA" + - "AABEaWFnbm9zdGljc0xldmVsAQDvRQAuAETvRQAABgEAAAABAAtN/////wEB/////wAAAAAEYIAKAQAA" + - "AAAACgAAAExpdmVWYWx1ZXMBAMJFAC8AOsJFAAD/////AgAAABVgiQoCAAAAAAAYAAAAQ29uZmlndXJl" + - "ZERhdGFTZXRXcml0ZXJzAQD5RQAvAD/5RQAAAAX/////AQH/////AQAAABVgqQoCAAAAAAAQAAAARGlh" + - "Z25vc3RpY3NMZXZlbAEAAEYALgBEAEYAAAYAAAAAAQALTf////8BAf////8AAAAAFWCJCgIAAAAAABkA" + - "AABPcGVyYXRpb25hbERhdGFTZXRXcml0ZXJzAQAHRgAvAD8HRgAAAAX/////AQH/////AQAAABVgqQoC" + - "AAAAAAAQAAAARGlhZ25vc3RpY3NMZXZlbAEADkYALgBEDkYAAAYAAAAAAQALTf////8BAf////8AAAAA" + - "BGGCCgQAAAAAABAAAABBZGREYXRhU2V0V3JpdGVyAQAxRgAvAQAxRjFGAAABAf////8CAAAAF2CpCgIA" + - "AAAAAA4AAABJbnB1dEFyZ3VtZW50cwEAOEYALgBEOEYAAJYBAAAAAQAqAQEeAAAADQAAAENvbmZpZ3Vy" + - "YXRpb24BAO08/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAXYKkKAgAAAAAADwAAAE91" + - "dHB1dEFyZ3VtZW50cwEAQ0YALgBEQ0YAAJYBAAAAAQAqAQEiAAAAEwAAAERhdGFTZXRXcml0ZXJOb2Rl" + - "SWQAEf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAABGGCCgQAAAAAABMAAABSZW1vdmVE" + - "YXRhU2V0V3JpdGVyAQBIRgAvAQBIRkhGAAABAf////8BAAAAF2CpCgIAAAAAAA4AAABJbnB1dEFyZ3Vt" + - "ZW50cwEASUYALgBESUYAAJYBAAAAAQAqAQEiAAAAEwAAAERhdGFTZXRXcml0ZXJOb2RlSWQAEf////8A" + - "AAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAA"; + "/////wAAAAAEYIAKAQAAAAAACwAAAERpYWdub3N0aWNzAQCURQAvAQB6TZRFAAD/////BwAAABVgiQoC" + + "AAAAAAAQAAAARGlhZ25vc3RpY3NMZXZlbAEAlUUALwA/lUUAAAEAC03/////AQH/////AAAAABVgiQoC" + + "AAAAAAAQAAAAVG90YWxJbmZvcm1hdGlvbgEAlkUALwEADU2WRQAAAAf/////AQH/////AwAAABVgiQoC" + + "AAAAAAAGAAAAQWN0aXZlAQCXRQAuAESXRQAAAAH/////AQH/////AAAAABVgiQoCAAAAAAAOAAAAQ2xh" + + "c3NpZmljYXRpb24BAJhFAC4ARJhFAAABABJN/////wEB/////wAAAAAVYIkKAgAAAAAAEAAAAERpYWdu" + + "b3N0aWNzTGV2ZWwBAJlFAC4ARJlFAAABAAtN/////wEB/////wAAAAAVYIkKAgAAAAAACgAAAFRvdGFs" + + "RXJyb3IBAJtFAC8BAA1Nm0UAAAAH/////wEB/////wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEAnEUA" + + "LgBEnEUAAAAB/////wEB/////wAAAAAVYIkKAgAAAAAADgAAAENsYXNzaWZpY2F0aW9uAQCdRQAuAESd" + + "RQAAAQASTf////8BAf////8AAAAAFWCJCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQCeRQAuAESe" + + "RQAAAQALTf////8BAf////8AAAAABGGCCgQAAAAAAAUAAABSZXNldAEAoEUALwEA6UygRQAAAQH/////" + + "AAAAABVgiQoCAAAAAAAIAAAAU3ViRXJyb3IBAKFFAC8AP6FFAAAAAf////8BAf////8AAAAABGCACgEA" + + "AAAAAAgAAABDb3VudGVycwEAokUALwA6okUAAP////8JAAAAFWCJCgIAAAAAAAoAAABTdGF0ZUVycm9y" + + "AQCjRQAvAQANTaNFAAAAB/////8BAf////8DAAAAFWCJCgIAAAAAAAYAAABBY3RpdmUBAKRFAC4ARKRF" + + "AAAAAf////8BAf////8AAAAAFWCpCgIAAAAAAA4AAABDbGFzc2lmaWNhdGlvbgEApUUALgBEpUUAAAYB" + + "AAAAAQASTf////8BAf////8AAAAAFWCpCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQCmRQAuAESm" + + "RQAABgAAAAABAAtN/////wEB/////wAAAAAVYIkKAgAAAAAAGAAAAFN0YXRlT3BlcmF0aW9uYWxCeU1l" + + "dGhvZAEAqEUALwEADU2oRQAAAAf/////AQH/////AwAAABVgiQoCAAAAAAAGAAAAQWN0aXZlAQCpRQAu" + + "AESpRQAAAAH/////AQH/////AAAAABVgqQoCAAAAAAAOAAAAQ2xhc3NpZmljYXRpb24BAKpFAC4ARKpF" + + "AAAGAAAAAAEAEk3/////AQH/////AAAAABVgqQoCAAAAAAAQAAAARGlhZ25vc3RpY3NMZXZlbAEAq0UA" + + "LgBEq0UAAAYAAAAAAQALTf////8BAf////8AAAAAFWCJCgIAAAAAABgAAABTdGF0ZU9wZXJhdGlvbmFs" + + "QnlQYXJlbnQBAK1FAC8BAA1NrUUAAAAH/////wEB/////wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEA" + + "rkUALgBErkUAAAAB/////wEB/////wAAAAAVYKkKAgAAAAAADgAAAENsYXNzaWZpY2F0aW9uAQCvRQAu" + + "AESvRQAABgAAAAABABJN/////wEB/////wAAAAAVYKkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwB" + + "ALBFAC4ARLBFAAAGAAAAAAEAC03/////AQH/////AAAAABVgiQoCAAAAAAAZAAAAU3RhdGVPcGVyYXRp" + + "b25hbEZyb21FcnJvcgEAskUALwEADU2yRQAAAAf/////AQH/////AwAAABVgiQoCAAAAAAAGAAAAQWN0" + + "aXZlAQCzRQAuAESzRQAAAAH/////AQH/////AAAAABVgqQoCAAAAAAAOAAAAQ2xhc3NpZmljYXRpb24B" + + "ALRFAC4ARLRFAAAGAAAAAAEAEk3/////AQH/////AAAAABVgqQoCAAAAAAAQAAAARGlhZ25vc3RpY3NM" + + "ZXZlbAEAtUUALgBEtUUAAAYAAAAAAQALTf////8BAf////8AAAAAFWCJCgIAAAAAABMAAABTdGF0ZVBh" + + "dXNlZEJ5UGFyZW50AQC3RQAvAQANTbdFAAAAB/////8BAf////8DAAAAFWCJCgIAAAAAAAYAAABBY3Rp" + + "dmUBALhFAC4ARLhFAAAAAf////8BAf////8AAAAAFWCpCgIAAAAAAA4AAABDbGFzc2lmaWNhdGlvbgEA" + + "uUUALgBEuUUAAAYAAAAAAQASTf////8BAf////8AAAAAFWCpCgIAAAAAABAAAABEaWFnbm9zdGljc0xl" + + "dmVsAQC6RQAuAES6RQAABgAAAAABAAtN/////wEB/////wAAAAAVYIkKAgAAAAAAFQAAAFN0YXRlRGlz" + + "YWJsZWRCeU1ldGhvZAEAvUUALwEADU29RQAAAAf/////AQH/////AwAAABVgiQoCAAAAAAAGAAAAQWN0" + + "aXZlAQC+RQAuAES+RQAAAAH/////AQH/////AAAAABVgqQoCAAAAAAAOAAAAQ2xhc3NpZmljYXRpb24B" + + "AL9FAC4ARL9FAAAGAAAAAAEAEk3/////AQH/////AAAAABVgqQoCAAAAAAAQAAAARGlhZ25vc3RpY3NM" + + "ZXZlbAEAwEUALgBEwEUAAAYAAAAAAQALTf////8BAf////8AAAAAFWCJCgIAAAAAABMAAABTZW50TmV0" + + "d29ya01lc3NhZ2VzAQDDRQAvAQANTcNFAAAAB/////8BAf////8DAAAAFWCJCgIAAAAAAAYAAABBY3Rp" + + "dmUBAMhFAC4ARMhFAAAAAf////8BAf////8AAAAAFWCpCgIAAAAAAA4AAABDbGFzc2lmaWNhdGlvbgEA" + + "z0UALgBEz0UAAAYAAAAAAQASTf////8BAf////8AAAAAFWCpCgIAAAAAABAAAABEaWFnbm9zdGljc0xl" + + "dmVsAQDQRQAuAETQRQAABgAAAAABAAtN/////wEB/////wAAAAAVYIkKAgAAAAAAEwAAAEZhaWxlZFRy" + + "YW5zbWlzc2lvbnMBANJFAC8BAA1N0kUAAAAH/////wEB/////wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2" + + "ZQEA1kUALgBE1kUAAAAB/////wEB/////wAAAAAVYKkKAgAAAAAADgAAAENsYXNzaWZpY2F0aW9uAQDd" + + "RQAuAETdRQAABgEAAAABABJN/////wEB/////wAAAAAVYKkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2" + + "ZWwBAORFAC4ARORFAAAGAAAAAAEAC03/////AQH/////AAAAABVgiQoCAAAAAAAQAAAARW5jcnlwdGlv" + + "bkVycm9ycwEA7EUALwEADU3sRQAAAAf/////AQH/////AwAAABVgiQoCAAAAAAAGAAAAQWN0aXZlAQDt" + + "RQAuAETtRQAAAAH/////AQH/////AAAAABVgqQoCAAAAAAAOAAAAQ2xhc3NpZmljYXRpb24BAO5FAC4A" + + "RO5FAAAGAQAAAAEAEk3/////AQH/////AAAAABVgqQoCAAAAAAAQAAAARGlhZ25vc3RpY3NMZXZlbAEA" + + "70UALgBE70UAAAYBAAAAAQALTf////8BAf////8AAAAABGCACgEAAAAAAAoAAABMaXZlVmFsdWVzAQDC" + + "RQAvADrCRQAA/////wIAAAAVYIkKAgAAAAAAGAAAAENvbmZpZ3VyZWREYXRhU2V0V3JpdGVycwEA+UUA" + + "LwA/+UUAAAAF/////wEB/////wEAAAAVYKkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwBAABGAC4A" + + "RABGAAAGAAAAAAEAC03/////AQH/////AAAAABVgiQoCAAAAAAAZAAAAT3BlcmF0aW9uYWxEYXRhU2V0" + + "V3JpdGVycwEAB0YALwA/B0YAAAAF/////wEB/////wEAAAAVYKkKAgAAAAAAEAAAAERpYWdub3N0aWNz" + + "TGV2ZWwBAA5GAC4ARA5GAAAGAAAAAAEAC03/////AQH/////AAAAAARhggoEAAAAAAAQAAAAQWRkRGF0" + + "YVNldFdyaXRlcgEAMUYALwEAMUYxRgAAAQH/////AgAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVu" + + "dHMBADhGAC4ARDhGAACWAQAAAAEAKgEBHgAAAA0AAABDb25maWd1cmF0aW9uAQDtPP////8AAAAAAAEA" + + "KAEBAAAAAQAAAAAAAAABAf////8AAAAAF2CpCgIAAAAAAA8AAABPdXRwdXRBcmd1bWVudHMBAENGAC4A" + + "RENGAACWAQAAAAEAKgEBIgAAABMAAABEYXRhU2V0V3JpdGVyTm9kZUlkABH/////AAAAAAABACgBAQAA" + + "AAEAAAAAAAAAAQH/////AAAAAARhggoEAAAAAAATAAAAUmVtb3ZlRGF0YVNldFdyaXRlcgEASEYALwEA" + + "SEZIRgAAAQH/////AQAAABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAElGAC4ARElGAACWAQAA" + + "AAEAKgEBIgAAABMAAABEYXRhU2V0V3JpdGVyTm9kZUlkABH/////AAAAAAABACgBAQAAAAEAAAAAAAAA" + + "AQH/////AAAAAA=="; #endregion #endif #endregion @@ -68759,78 +73313,65 @@ protected override void InitializeOptionalChildren(ISystemContext context) private const string InitializationString = "//////////8EYIACAQAAAAAAFwAAAFJlYWRlckdyb3VwVHlwZUluc3RhbmNlAQBPRgEAT0ZPRgAA////" + - "/woAAAAVYIkKAgAAAAAADAAAAFNlY3VyaXR5TW9kZQEAUEYALgBEUEYAAAEALgH/////AQH/////AAAA" + + "/wkAAAAVYIkKAgAAAAAADAAAAFNlY3VyaXR5TW9kZQEAUEYALgBEUEYAAAEALgH/////AQH/////AAAA" + "ABVgiQoCAAAAAAAVAAAATWF4TmV0d29ya01lc3NhZ2VTaXplAQCRRgAuAESRRgAAAAf/////AQH/////" + "AAAAABdgiQoCAAAAAAAPAAAAR3JvdXBQcm9wZXJ0aWVzAQBTRAAuAERTRAAAAQDFOAEAAAABAAAAAAAA" + "AAEB/////wAAAAAEYIAKAQAAAAAABgAAAFN0YXR1cwEAk0YALwEAMzmTRgAA/////wEAAAAVYIkKAgAA" + - "AAAABQAAAFN0YXRlAQCURgAvAD+URgAAAQA3Of////8BAf////8AAAAABGDACgEAAAAdAAAARGF0YVNl" + - "dFJlYWRlck5hbWVfUGxhY2Vob2xkZXIAABMAAAA8RGF0YVNldFJlYWRlck5hbWU+AQCcRgEAwTsBAMo7" + - "nEYAAP////8LAAAAFWCJCgIAAAAAAAsAAABQdWJsaXNoZXJJZAEAnUYALgBEnUYAAAAY/////wEB////" + - "/wAAAAAVYIkKAgAAAAAADQAAAFdyaXRlckdyb3VwSWQBAJ5GAC4ARJ5GAAAABf////8BAf////8AAAAA" + - "FWCJCgIAAAAAAA8AAABEYXRhU2V0V3JpdGVySWQBAJ9GAC4ARJ9GAAAABf////8BAf////8AAAAAFWCJ" + - "CgIAAAAAAA8AAABEYXRhU2V0TWV0YURhdGEBAKBGAC4ARKBGAAABALs4/////wEB/////wAAAAAVYIkK" + - "AgAAAAAAFwAAAERhdGFTZXRGaWVsZENvbnRlbnRNYXNrAQChRgAuAEShRgAAAQDfPP////8BAf////8A" + - "AAAAFWCJCgIAAAAAABUAAABNZXNzYWdlUmVjZWl2ZVRpbWVvdXQBAKJGAC4ARKJGAAABACIB/////wEB" + - "/////wAAAAAVYIkKAgAAAAAADQAAAEtleUZyYW1lQ291bnQBAJhEAC4ARJhEAAAAB/////8BAf////8A" + - "AAAAFWCJCgIAAAAAAA8AAABIZWFkZXJMYXlvdXRVcmkBAJpEAC4ARJpEAAAADP////8BAf////8AAAAA" + - "F2CJCgIAAAAAABcAAABEYXRhU2V0UmVhZGVyUHJvcGVydGllcwEAVEQALgBEVEQAAAEAxTgBAAAAAQAA" + - "AAAAAAABAf////8AAAAABGCACgEAAAAAAAYAAABTdGF0dXMBAKhGAC8BADM5qEYAAP////8BAAAAFWCJ" + - "CgIAAAAAAAUAAABTdGF0ZQEAqUYALwA/qUYAAAEANzn/////AQH/////AAAAAARggAoBAAAAAAARAAAA" + - "U3Vic2NyaWJlZERhdGFTZXQBAA5SAC8BAAQ7DlIAAP////8AAAAABGCACgEAAAAAAAsAAABEaWFnbm9z" + - "dGljcwEAF1IALwEAv00XUgAA/////wcAAAAVYIkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwBABhS" + - "AC8APxhSAAABAAtN/////wEB/////wAAAAAVYIkKAgAAAAAAEAAAAFRvdGFsSW5mb3JtYXRpb24BABlS" + - "AC8BAA1NGVIAAAAH/////wEB/////wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEAGlIALgBEGlIAAAAB" + - "/////wEB/////wAAAAAVYIkKAgAAAAAADgAAAENsYXNzaWZpY2F0aW9uAQAbUgAuAEQbUgAAAQASTf//" + - "//8BAf////8AAAAAFWCJCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQAcUgAuAEQcUgAAAQALTf//" + - "//8BAf////8AAAAAFWCJCgIAAAAAAAoAAABUb3RhbEVycm9yAQAeUgAvAQANTR5SAAAAB/////8BAf//" + - "//8DAAAAFWCJCgIAAAAAAAYAAABBY3RpdmUBAB9SAC4ARB9SAAAAAf////8BAf////8AAAAAFWCJCgIA" + - "AAAAAA4AAABDbGFzc2lmaWNhdGlvbgEAIFIALgBEIFIAAAEAEk3/////AQH/////AAAAABVgiQoCAAAA" + - "AAAQAAAARGlhZ25vc3RpY3NMZXZlbAEAIVIALgBEIVIAAAEAC03/////AQH/////AAAAAARhggoEAAAA" + - "AAAFAAAAUmVzZXQBACNSAC8BAOlMI1IAAAEB/////wAAAAAVYIkKAgAAAAAACAAAAFN1YkVycm9yAQAk" + - "UgAvAD8kUgAAAAH/////AQH/////AAAAAARggAoBAAAAAAAIAAAAQ291bnRlcnMBACVSAC8AOiVSAAD/" + - "////BwAAABVgiQoCAAAAAAAKAAAAU3RhdGVFcnJvcgEAJlIALwEADU0mUgAAAAf/////AQH/////AwAA" + - "ABVgiQoCAAAAAAAGAAAAQWN0aXZlAQAnUgAuAEQnUgAAAAH/////AQH/////AAAAABVgqQoCAAAAAAAO" + - "AAAAQ2xhc3NpZmljYXRpb24BAChSAC4ARChSAAAGAQAAAAEAEk3/////AQH/////AAAAABVgqQoCAAAA" + - "AAAQAAAARGlhZ25vc3RpY3NMZXZlbAEAKVIALgBEKVIAAAYAAAAAAQALTf////8BAf////8AAAAAFWCJ" + - "CgIAAAAAABgAAABTdGF0ZU9wZXJhdGlvbmFsQnlNZXRob2QBACtSAC8BAA1NK1IAAAAH/////wEB////" + - "/wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEALFIALgBELFIAAAAB/////wEB/////wAAAAAVYKkKAgAA" + - "AAAADgAAAENsYXNzaWZpY2F0aW9uAQAtUgAuAEQtUgAABgAAAAABABJN/////wEB/////wAAAAAVYKkK" + - "AgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwBAC5SAC4ARC5SAAAGAAAAAAEAC03/////AQH/////AAAA" + - "ABVgiQoCAAAAAAAYAAAAU3RhdGVPcGVyYXRpb25hbEJ5UGFyZW50AQAwUgAvAQANTTBSAAAAB/////8B" + - "Af////8DAAAAFWCJCgIAAAAAAAYAAABBY3RpdmUBADFSAC4ARDFSAAAAAf////8BAf////8AAAAAFWCp" + - "CgIAAAAAAA4AAABDbGFzc2lmaWNhdGlvbgEAMlIALgBEMlIAAAYAAAAAAQASTf////8BAf////8AAAAA" + - "FWCpCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQAzUgAuAEQzUgAABgAAAAABAAtN/////wEB////" + - "/wAAAAAVYIkKAgAAAAAAGQAAAFN0YXRlT3BlcmF0aW9uYWxGcm9tRXJyb3IBADVSAC8BAA1NNVIAAAAH" + - "/////wEB/////wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEANlIALgBENlIAAAAB/////wEB/////wAA" + - "AAAVYKkKAgAAAAAADgAAAENsYXNzaWZpY2F0aW9uAQA3UgAuAEQ3UgAABgAAAAABABJN/////wEB////" + - "/wAAAAAVYKkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwBADhSAC4ARDhSAAAGAAAAAAEAC03/////" + - "AQH/////AAAAABVgiQoCAAAAAAATAAAAU3RhdGVQYXVzZWRCeVBhcmVudAEAOlIALwEADU06UgAAAAf/" + - "////AQH/////AwAAABVgiQoCAAAAAAAGAAAAQWN0aXZlAQA7UgAuAEQ7UgAAAAH/////AQH/////AAAA" + - "ABVgqQoCAAAAAAAOAAAAQ2xhc3NpZmljYXRpb24BADxSAC4ARDxSAAAGAAAAAAEAEk3/////AQH/////" + - "AAAAABVgqQoCAAAAAAAQAAAARGlhZ25vc3RpY3NMZXZlbAEAPVIALgBEPVIAAAYAAAAAAQALTf////8B" + - "Af////8AAAAAFWCJCgIAAAAAABUAAABTdGF0ZURpc2FibGVkQnlNZXRob2QBAD9SAC8BAA1NP1IAAAAH" + - "/////wEB/////wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEAQFIALgBEQFIAAAAB/////wEB/////wAA" + - "AAAVYKkKAgAAAAAADgAAAENsYXNzaWZpY2F0aW9uAQBBUgAuAERBUgAABgAAAAABABJN/////wEB////" + - "/wAAAAAVYKkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwBAEJSAC4AREJSAAAGAAAAAAEAC03/////" + - "AQH/////AAAAABVgiQoCAAAAAAAXAAAAUmVjZWl2ZWROZXR3b3JrTWVzc2FnZXMBAEVSAC8BAA1NRVIA" + - "AAAH/////wEB/////wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEARlIALgBERlIAAAAB/////wEB////" + - "/wAAAAAVYKkKAgAAAAAADgAAAENsYXNzaWZpY2F0aW9uAQBHUgAuAERHUgAABgAAAAABABJN/////wEB" + - "/////wAAAAAVYKkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwBAEhSAC4AREhSAAAGAAAAAAEAC03/" + - "////AQH/////AAAAAARggAoBAAAAAAAKAAAATGl2ZVZhbHVlcwEARFIALwA6RFIAAP////8CAAAAFWCJ" + - "CgIAAAAAABgAAABDb25maWd1cmVkRGF0YVNldFJlYWRlcnMBAFRSAC8AP1RSAAAABf////8BAf////8B" + - "AAAAFWCpCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQBVUgAuAERVUgAABgAAAAABAAtN/////wEB" + - "/////wAAAAAVYIkKAgAAAAAAGQAAAE9wZXJhdGlvbmFsRGF0YVNldFJlYWRlcnMBAFZSAC8AP1ZSAAAA" + - "Bf////8BAf////8BAAAAFWCpCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQBXUgAuAERXUgAABgAA" + - "AAABAAtN/////wEB/////wAAAAAEYIAKAQAAAAAAEQAAAFRyYW5zcG9ydFNldHRpbmdzAQBYUgAvAQBi" + - "UlhSAAD/////AAAAAARggAoBAAAAAAAPAAAATWVzc2FnZVNldHRpbmdzAQBZUgAvAQBjUllSAAD/////" + - "AAAAAARhggoEAAAAAAAQAAAAQWRkRGF0YVNldFJlYWRlcgEAWlIALwEAWlJaUgAAAQH/////AgAAABdg" + - "qQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAFtSAC4ARFtSAACWAQAAAAEAKgEBHgAAAA0AAABDb25m" + - "aWd1cmF0aW9uAQAHPf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAAF2CpCgIAAAAAAA8A" + - "AABPdXRwdXRBcmd1bWVudHMBAFxSAC4ARFxSAACWAQAAAAEAKgEBIgAAABMAAABEYXRhU2V0UmVhZGVy" + - "Tm9kZUlkABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARhggoEAAAAAAATAAAAUmVt" + - "b3ZlRGF0YVNldFJlYWRlcgEAXVIALwEAXVJdUgAAAQH/////AQAAABdgqQoCAAAAAAAOAAAASW5wdXRB" + - "cmd1bWVudHMBAF5SAC4ARF5SAACWAQAAAAEAKgEBIgAAABMAAABEYXRhU2V0UmVhZGVyTm9kZUlkABH/" + - "////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAA=="; + "AAAABQAAAFN0YXRlAQCURgAvAD+URgAAAQA3Of////8BAf////8AAAAABGCACgEAAAAAAAsAAABEaWFn" + + "bm9zdGljcwEAF1IALwEAv00XUgAA/////wcAAAAVYIkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwB" + + "ABhSAC8APxhSAAABAAtN/////wEB/////wAAAAAVYIkKAgAAAAAAEAAAAFRvdGFsSW5mb3JtYXRpb24B" + + "ABlSAC8BAA1NGVIAAAAH/////wEB/////wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEAGlIALgBEGlIA" + + "AAAB/////wEB/////wAAAAAVYIkKAgAAAAAADgAAAENsYXNzaWZpY2F0aW9uAQAbUgAuAEQbUgAAAQAS" + + "Tf////8BAf////8AAAAAFWCJCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQAcUgAuAEQcUgAAAQAL" + + "Tf////8BAf////8AAAAAFWCJCgIAAAAAAAoAAABUb3RhbEVycm9yAQAeUgAvAQANTR5SAAAAB/////8B" + + "Af////8DAAAAFWCJCgIAAAAAAAYAAABBY3RpdmUBAB9SAC4ARB9SAAAAAf////8BAf////8AAAAAFWCJ" + + "CgIAAAAAAA4AAABDbGFzc2lmaWNhdGlvbgEAIFIALgBEIFIAAAEAEk3/////AQH/////AAAAABVgiQoC" + + "AAAAAAAQAAAARGlhZ25vc3RpY3NMZXZlbAEAIVIALgBEIVIAAAEAC03/////AQH/////AAAAAARhggoE" + + "AAAAAAAFAAAAUmVzZXQBACNSAC8BAOlMI1IAAAEB/////wAAAAAVYIkKAgAAAAAACAAAAFN1YkVycm9y" + + "AQAkUgAvAD8kUgAAAAH/////AQH/////AAAAAARggAoBAAAAAAAIAAAAQ291bnRlcnMBACVSAC8AOiVS" + + "AAD/////BwAAABVgiQoCAAAAAAAKAAAAU3RhdGVFcnJvcgEAJlIALwEADU0mUgAAAAf/////AQH/////" + + "AwAAABVgiQoCAAAAAAAGAAAAQWN0aXZlAQAnUgAuAEQnUgAAAAH/////AQH/////AAAAABVgqQoCAAAA" + + "AAAOAAAAQ2xhc3NpZmljYXRpb24BAChSAC4ARChSAAAGAQAAAAEAEk3/////AQH/////AAAAABVgqQoC" + + "AAAAAAAQAAAARGlhZ25vc3RpY3NMZXZlbAEAKVIALgBEKVIAAAYAAAAAAQALTf////8BAf////8AAAAA" + + "FWCJCgIAAAAAABgAAABTdGF0ZU9wZXJhdGlvbmFsQnlNZXRob2QBACtSAC8BAA1NK1IAAAAH/////wEB" + + "/////wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEALFIALgBELFIAAAAB/////wEB/////wAAAAAVYKkK" + + "AgAAAAAADgAAAENsYXNzaWZpY2F0aW9uAQAtUgAuAEQtUgAABgAAAAABABJN/////wEB/////wAAAAAV" + + "YKkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwBAC5SAC4ARC5SAAAGAAAAAAEAC03/////AQH/////" + + "AAAAABVgiQoCAAAAAAAYAAAAU3RhdGVPcGVyYXRpb25hbEJ5UGFyZW50AQAwUgAvAQANTTBSAAAAB///" + + "//8BAf////8DAAAAFWCJCgIAAAAAAAYAAABBY3RpdmUBADFSAC4ARDFSAAAAAf////8BAf////8AAAAA" + + "FWCpCgIAAAAAAA4AAABDbGFzc2lmaWNhdGlvbgEAMlIALgBEMlIAAAYAAAAAAQASTf////8BAf////8A" + + "AAAAFWCpCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQAzUgAuAEQzUgAABgAAAAABAAtN/////wEB" + + "/////wAAAAAVYIkKAgAAAAAAGQAAAFN0YXRlT3BlcmF0aW9uYWxGcm9tRXJyb3IBADVSAC8BAA1NNVIA" + + "AAAH/////wEB/////wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEANlIALgBENlIAAAAB/////wEB////" + + "/wAAAAAVYKkKAgAAAAAADgAAAENsYXNzaWZpY2F0aW9uAQA3UgAuAEQ3UgAABgAAAAABABJN/////wEB" + + "/////wAAAAAVYKkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwBADhSAC4ARDhSAAAGAAAAAAEAC03/" + + "////AQH/////AAAAABVgiQoCAAAAAAATAAAAU3RhdGVQYXVzZWRCeVBhcmVudAEAOlIALwEADU06UgAA" + + "AAf/////AQH/////AwAAABVgiQoCAAAAAAAGAAAAQWN0aXZlAQA7UgAuAEQ7UgAAAAH/////AQH/////" + + "AAAAABVgqQoCAAAAAAAOAAAAQ2xhc3NpZmljYXRpb24BADxSAC4ARDxSAAAGAAAAAAEAEk3/////AQH/" + + "////AAAAABVgqQoCAAAAAAAQAAAARGlhZ25vc3RpY3NMZXZlbAEAPVIALgBEPVIAAAYAAAAAAQALTf//" + + "//8BAf////8AAAAAFWCJCgIAAAAAABUAAABTdGF0ZURpc2FibGVkQnlNZXRob2QBAD9SAC8BAA1NP1IA" + + "AAAH/////wEB/////wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEAQFIALgBEQFIAAAAB/////wEB////" + + "/wAAAAAVYKkKAgAAAAAADgAAAENsYXNzaWZpY2F0aW9uAQBBUgAuAERBUgAABgAAAAABABJN/////wEB" + + "/////wAAAAAVYKkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwBAEJSAC4AREJSAAAGAAAAAAEAC03/" + + "////AQH/////AAAAABVgiQoCAAAAAAAXAAAAUmVjZWl2ZWROZXR3b3JrTWVzc2FnZXMBAEVSAC8BAA1N" + + "RVIAAAAH/////wEB/////wMAAAAVYIkKAgAAAAAABgAAAEFjdGl2ZQEARlIALgBERlIAAAAB/////wEB" + + "/////wAAAAAVYKkKAgAAAAAADgAAAENsYXNzaWZpY2F0aW9uAQBHUgAuAERHUgAABgAAAAABABJN////" + + "/wEB/////wAAAAAVYKkKAgAAAAAAEAAAAERpYWdub3N0aWNzTGV2ZWwBAEhSAC4AREhSAAAGAAAAAAEA" + + "C03/////AQH/////AAAAAARggAoBAAAAAAAKAAAATGl2ZVZhbHVlcwEARFIALwA6RFIAAP////8CAAAA" + + "FWCJCgIAAAAAABgAAABDb25maWd1cmVkRGF0YVNldFJlYWRlcnMBAFRSAC8AP1RSAAAABf////8BAf//" + + "//8BAAAAFWCpCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQBVUgAuAERVUgAABgAAAAABAAtN////" + + "/wEB/////wAAAAAVYIkKAgAAAAAAGQAAAE9wZXJhdGlvbmFsRGF0YVNldFJlYWRlcnMBAFZSAC8AP1ZS" + + "AAAABf////8BAf////8BAAAAFWCpCgIAAAAAABAAAABEaWFnbm9zdGljc0xldmVsAQBXUgAuAERXUgAA" + + "BgAAAAABAAtN/////wEB/////wAAAAAEYIAKAQAAAAAAEQAAAFRyYW5zcG9ydFNldHRpbmdzAQBYUgAv" + + "AQBiUlhSAAD/////AAAAAARggAoBAAAAAAAPAAAATWVzc2FnZVNldHRpbmdzAQBZUgAvAQBjUllSAAD/" + + "////AAAAAARhggoEAAAAAAAQAAAAQWRkRGF0YVNldFJlYWRlcgEAWlIALwEAWlJaUgAAAQH/////AgAA" + + "ABdgqQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAFtSAC4ARFtSAACWAQAAAAEAKgEBHgAAAA0AAABD" + + "b25maWd1cmF0aW9uAQAHPf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAAF2CpCgIAAAAA" + + "AA8AAABPdXRwdXRBcmd1bWVudHMBAFxSAC4ARFxSAACWAQAAAAEAKgEBIgAAABMAAABEYXRhU2V0UmVh" + + "ZGVyTm9kZUlkABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAARhggoEAAAAAAATAAAA" + + "UmVtb3ZlRGF0YVNldFJlYWRlcgEAXVIALwEAXVJdUgAAAQH/////AQAAABdgqQoCAAAAAAAOAAAASW5w" + + "dXRBcmd1bWVudHMBAF5SAC4ARF5SAACWAQAAAAEAKgEBIgAAABMAAABEYXRhU2V0UmVhZGVyTm9kZUlk" + + "ABH/////AAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAA=="; #endregion #endif #endregion @@ -77956,20 +82497,12 @@ protected override void InitializeOptionalChildren(ISystemContext context) #region Initialization String private const string InitializationString = "//////////8EYIACAQAAAAAAHQAAAEFsaWFzTmFtZUNhdGVnb3J5VHlwZUluc3RhbmNlAQCgWwEAoFug" + - "WwAA/////wMAAAAEYMAKAQAAABEAAABBbGlhc19QbGFjZWhvbGRlcgAABwAAADxBbGlhcz4BAKFbACMB" + - "AJ9boVsAAP////8AAAAABGDACgEAAAAiAAAAU3ViQWxpYXNOYW1lQ2F0ZWdvcmllc19QbGFjZWhvbGRl" + - "cgAAGAAAADxTdWJBbGlhc05hbWVDYXRlZ29yaWVzPgEAolsAIwEAoFuiWwAA/////wEAAAAEYYIKBAAA" + - "AAAACQAAAEZpbmRBbGlhcwEAo1sALwEAplujWwAAAQH/////AgAAABdgqQoCAAAAAAAOAAAASW5wdXRB" + - "cmd1bWVudHMBAKRbAC4ARKRbAACWAgAAAAEAKgEBJQAAABYAAABBbGlhc05hbWVTZWFyY2hQYXR0ZXJu" + - "AAz/////AAAAAAABACoBASIAAAATAAAAUmVmZXJlbmNlVHlwZUZpbHRlcgAR/////wAAAAAAAQAoAQEA" + - "AAABAAAAAAAAAAEB/////wAAAAAXYKkKAgAAAAAADwAAAE91dHB1dEFyZ3VtZW50cwEApVsALgBEpVsA" + - "AJYBAAAAAQAqAQEiAAAADQAAAEFsaWFzTm9kZUxpc3QBAKxbAQAAAAEAAAAAAAAAAAEAKAEBAAAAAQAA" + - "AAAAAAABAf////8AAAAABGGCCgQAAAAAAAkAAABGaW5kQWxpYXMBAKZbAC8BAKZbplsAAAEB/////wIA" + - "AAAXYKkKAgAAAAAADgAAAElucHV0QXJndW1lbnRzAQCnWwAuAESnWwAAlgIAAAABACoBASUAAAAWAAAA" + - "QWxpYXNOYW1lU2VhcmNoUGF0dGVybgAM/////wAAAAAAAQAqAQEiAAAAEwAAAFJlZmVyZW5jZVR5cGVG" + - "aWx0ZXIAEf////8AAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAAF2CpCgIAAAAAAA8AAABPdXRw" + - "dXRBcmd1bWVudHMBAKhbAC4ARKhbAACWAQAAAAEAKgEBIgAAAA0AAABBbGlhc05vZGVMaXN0AQCsWwEA" + - "AAABAAAAAAAAAAABACgBAQAAAAEAAAAAAAAAAQH/////AAAAAA=="; + "WwAA/////wEAAAAEYYIKBAAAAAAACQAAAEZpbmRBbGlhcwEAplsALwEAplumWwAAAQH/////AgAAABdg" + + "qQoCAAAAAAAOAAAASW5wdXRBcmd1bWVudHMBAKdbAC4ARKdbAACWAgAAAAEAKgEBJQAAABYAAABBbGlh" + + "c05hbWVTZWFyY2hQYXR0ZXJuAAz/////AAAAAAABACoBASIAAAATAAAAUmVmZXJlbmNlVHlwZUZpbHRl" + + "cgAR/////wAAAAAAAQAoAQEAAAABAAAAAAAAAAEB/////wAAAAAXYKkKAgAAAAAADwAAAE91dHB1dEFy" + + "Z3VtZW50cwEAqFsALgBEqFsAAJYBAAAAAQAqAQEiAAAADQAAAEFsaWFzTm9kZUxpc3QBAKxbAQAAAAEA" + + "AAAAAAAAAAEAKAEBAAAAAQAAAAAAAAABAf////8AAAAA"; #endregion #endif #endregion diff --git a/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.DataTypes.cs b/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.DataTypes.cs index d0ed8425b..820931cb5 100644 --- a/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.DataTypes.cs +++ b/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.DataTypes.cs @@ -50,11 +50,7 @@ public enum Enumeration /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfEnumeration", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "Enumeration")] - #if !NET_STANDARD public partial class EnumerationCollection : List, ICloneable - #else - public partial class EnumerationCollection : List - #endif { #region Constructors /// @@ -91,7 +87,6 @@ public static explicit operator Enumeration[](EnumerationCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -99,7 +94,6 @@ public object Clone() return (EnumerationCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -144,11 +138,7 @@ public enum NamingRuleType /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfNamingRuleType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "NamingRuleType")] - #if !NET_STANDARD public partial class NamingRuleTypeCollection : List, ICloneable - #else - public partial class NamingRuleTypeCollection : List - #endif { #region Constructors /// @@ -185,7 +175,6 @@ public static explicit operator NamingRuleType[](NamingRuleTypeCollection values } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -193,7 +182,6 @@ public object Clone() return (NamingRuleTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -291,13 +279,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (Union)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -318,11 +304,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfUnion", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "Union")] - #if !NET_STANDARD public partial class UnionCollection : List, ICloneable - #else - public partial class UnionCollection : List - #endif { #region Constructors /// @@ -359,7 +341,6 @@ public static explicit operator Union[](UnionCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -367,7 +348,6 @@ public object Clone() return (UnionCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -488,13 +468,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (KeyValuePair)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -519,11 +497,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfKeyValuePair", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "KeyValuePair")] - #if !NET_STANDARD public partial class KeyValuePairCollection : List, ICloneable - #else - public partial class KeyValuePairCollection : List - #endif { #region Constructors /// @@ -560,7 +534,6 @@ public static explicit operator KeyValuePair[](KeyValuePairCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -568,7 +541,6 @@ public object Clone() return (KeyValuePairCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -689,13 +661,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (AdditionalParametersType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -817,13 +787,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (EphemeralKeyType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -971,13 +939,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (EndpointType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -1006,11 +972,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfEndpointType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EndpointType")] - #if !NET_STANDARD public partial class EndpointTypeCollection : List, ICloneable - #else - public partial class EndpointTypeCollection : List - #endif { #region Constructors /// @@ -1047,7 +1009,6 @@ public static explicit operator EndpointType[](EndpointTypeCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -1055,7 +1016,6 @@ public object Clone() return (EndpointTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -1176,13 +1136,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (RationalNumber)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -1207,11 +1165,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfRationalNumber", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "RationalNumber")] - #if !NET_STANDARD public partial class RationalNumberCollection : List, ICloneable - #else - public partial class RationalNumberCollection : List - #endif { #region Constructors /// @@ -1248,7 +1202,6 @@ public static explicit operator RationalNumber[](RationalNumberCollection values } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -1256,7 +1209,6 @@ public object Clone() return (RationalNumberCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -1354,13 +1306,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (Vector)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -1381,11 +1331,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfVector", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "Vector")] - #if !NET_STANDARD public partial class VectorCollection : List, ICloneable - #else - public partial class VectorCollection : List - #endif { #region Constructors /// @@ -1422,7 +1368,6 @@ public static explicit operator Vector[](VectorCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -1430,7 +1375,6 @@ public object Clone() return (VectorCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -1455,7 +1399,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ThreeDVector : Vector + public partial class ThreeDVector : Opc.Ua.Vector { #region Constructors /// @@ -1565,16 +1509,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_y, value.m_y)) return false; if (!Utils.IsEqual(m_z, value.m_z)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ThreeDVector)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -1601,11 +1543,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfThreeDVector", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ThreeDVector")] - #if !NET_STANDARD public partial class ThreeDVectorCollection : List, ICloneable - #else - public partial class ThreeDVectorCollection : List - #endif { #region Constructors /// @@ -1642,7 +1580,6 @@ public static explicit operator ThreeDVector[](ThreeDVectorCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -1650,7 +1587,6 @@ public object Clone() return (ThreeDVectorCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -1748,13 +1684,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CartesianCoordinates)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -1775,11 +1709,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfCartesianCoordinates", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "CartesianCoordinates")] - #if !NET_STANDARD public partial class CartesianCoordinatesCollection : List, ICloneable - #else - public partial class CartesianCoordinatesCollection : List - #endif { #region Constructors /// @@ -1816,7 +1746,6 @@ public static explicit operator CartesianCoordinates[](CartesianCoordinatesColle } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -1824,7 +1753,6 @@ public object Clone() return (CartesianCoordinatesCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -1849,7 +1777,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ThreeDCartesianCoordinates : CartesianCoordinates + public partial class ThreeDCartesianCoordinates : Opc.Ua.CartesianCoordinates { #region Constructors /// @@ -1959,16 +1887,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_y, value.m_y)) return false; if (!Utils.IsEqual(m_z, value.m_z)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ThreeDCartesianCoordinates)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -1995,11 +1921,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfThreeDCartesianCoordinates", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ThreeDCartesianCoordinates")] - #if !NET_STANDARD public partial class ThreeDCartesianCoordinatesCollection : List, ICloneable - #else - public partial class ThreeDCartesianCoordinatesCollection : List - #endif { #region Constructors /// @@ -2036,7 +1958,6 @@ public static explicit operator ThreeDCartesianCoordinates[](ThreeDCartesianCoor } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -2044,7 +1965,6 @@ public object Clone() return (ThreeDCartesianCoordinatesCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -2142,13 +2062,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (Orientation)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -2169,11 +2087,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfOrientation", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "Orientation")] - #if !NET_STANDARD public partial class OrientationCollection : List, ICloneable - #else - public partial class OrientationCollection : List - #endif { #region Constructors /// @@ -2210,7 +2124,6 @@ public static explicit operator Orientation[](OrientationCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -2218,7 +2131,6 @@ public object Clone() return (OrientationCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -2243,7 +2155,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ThreeDOrientation : Orientation + public partial class ThreeDOrientation : Opc.Ua.Orientation { #region Constructors /// @@ -2353,16 +2265,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_b, value.m_b)) return false; if (!Utils.IsEqual(m_c, value.m_c)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ThreeDOrientation)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -2389,11 +2299,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfThreeDOrientation", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ThreeDOrientation")] - #if !NET_STANDARD public partial class ThreeDOrientationCollection : List, ICloneable - #else - public partial class ThreeDOrientationCollection : List - #endif { #region Constructors /// @@ -2430,7 +2336,6 @@ public static explicit operator ThreeDOrientation[](ThreeDOrientationCollection } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -2438,7 +2343,6 @@ public object Clone() return (ThreeDOrientationCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -2536,13 +2440,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (Frame)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -2563,11 +2465,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfFrame", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "Frame")] - #if !NET_STANDARD public partial class FrameCollection : List, ICloneable - #else - public partial class FrameCollection : List - #endif { #region Constructors /// @@ -2604,7 +2502,6 @@ public static explicit operator Frame[](FrameCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -2612,7 +2509,6 @@ public object Clone() return (FrameCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -2637,7 +2533,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ThreeDFrame : Frame + public partial class ThreeDFrame : Opc.Ua.Frame { #region Constructors /// @@ -2759,16 +2655,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_cartesianCoordinates, value.m_cartesianCoordinates)) return false; if (!Utils.IsEqual(m_orientation, value.m_orientation)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ThreeDFrame)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -2793,11 +2687,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfThreeDFrame", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ThreeDFrame")] - #if !NET_STANDARD public partial class ThreeDFrameCollection : List, ICloneable - #else - public partial class ThreeDFrameCollection : List - #endif { #region Constructors /// @@ -2834,7 +2724,6 @@ public static explicit operator ThreeDFrame[](ThreeDFrameCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -2842,7 +2731,6 @@ public object Clone() return (ThreeDFrameCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -2891,11 +2779,7 @@ public enum OpenFileMode /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfOpenFileMode", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "OpenFileMode")] - #if !NET_STANDARD public partial class OpenFileModeCollection : List, ICloneable - #else - public partial class OpenFileModeCollection : List - #endif { #region Constructors /// @@ -2932,7 +2816,6 @@ public static explicit operator OpenFileMode[](OpenFileModeCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -2940,7 +2823,6 @@ public object Clone() return (OpenFileModeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -3001,11 +2883,7 @@ public enum IdentityCriteriaType /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfIdentityCriteriaType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "IdentityCriteriaType")] - #if !NET_STANDARD public partial class IdentityCriteriaTypeCollection : List, ICloneable - #else - public partial class IdentityCriteriaTypeCollection : List - #endif { #region Constructors /// @@ -3042,7 +2920,6 @@ public static explicit operator IdentityCriteriaType[](IdentityCriteriaTypeColle } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -3050,7 +2927,6 @@ public object Clone() return (IdentityCriteriaTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -3171,13 +3047,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (IdentityMappingRuleType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -3202,11 +3076,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfIdentityMappingRuleType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "IdentityMappingRuleType")] - #if !NET_STANDARD public partial class IdentityMappingRuleTypeCollection : List, ICloneable - #else - public partial class IdentityMappingRuleTypeCollection : List - #endif { #region Constructors /// @@ -3243,7 +3113,6 @@ public static explicit operator IdentityMappingRuleType[](IdentityMappingRuleTyp } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -3251,7 +3120,6 @@ public object Clone() return (IdentityMappingRuleTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -3396,13 +3264,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CurrencyUnitType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -3431,11 +3297,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfCurrencyUnitType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "CurrencyUnitType")] - #if !NET_STANDARD public partial class CurrencyUnitTypeCollection : List, ICloneable - #else - public partial class CurrencyUnitTypeCollection : List - #endif { #region Constructors /// @@ -3472,7 +3334,6 @@ public static explicit operator CurrencyUnitType[](CurrencyUnitTypeCollection va } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -3480,7 +3341,6 @@ public object Clone() return (CurrencyUnitTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -3720,13 +3580,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (TrustListDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -3757,11 +3615,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfTrustListDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "TrustListDataType")] - #if !NET_STANDARD public partial class TrustListDataTypeCollection : List, ICloneable - #else - public partial class TrustListDataTypeCollection : List - #endif { #region Constructors /// @@ -3798,7 +3652,6 @@ public static explicit operator TrustListDataType[](TrustListDataTypeCollection } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -3806,7 +3659,6 @@ public object Clone() return (TrustListDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -3927,13 +3779,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DecimalDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -4129,13 +3979,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DataTypeSchemaHeader)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -4164,11 +4012,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDataTypeSchemaHeader", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataTypeSchemaHeader")] - #if !NET_STANDARD public partial class DataTypeSchemaHeaderCollection : List, ICloneable - #else - public partial class DataTypeSchemaHeaderCollection : List - #endif { #region Constructors /// @@ -4205,7 +4049,6 @@ public static explicit operator DataTypeSchemaHeader[](DataTypeSchemaHeaderColle } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -4213,7 +4056,6 @@ public object Clone() return (DataTypeSchemaHeaderCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -4334,13 +4176,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DataTypeDescription)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -4365,11 +4205,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDataTypeDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataTypeDescription")] - #if !NET_STANDARD public partial class DataTypeDescriptionCollection : List, ICloneable - #else - public partial class DataTypeDescriptionCollection : List - #endif { #region Constructors /// @@ -4406,7 +4242,6 @@ public static explicit operator DataTypeDescription[](DataTypeDescriptionCollect } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -4414,7 +4249,6 @@ public object Clone() return (DataTypeDescriptionCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -4439,7 +4273,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class StructureDescription : DataTypeDescription + public partial class StructureDescription : Opc.Ua.DataTypeDescription { #region Constructors /// @@ -4537,16 +4371,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_structureDefinition, value.m_structureDefinition)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (StructureDescription)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -4569,11 +4401,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfStructureDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "StructureDescription")] - #if !NET_STANDARD public partial class StructureDescriptionCollection : List, ICloneable - #else - public partial class StructureDescriptionCollection : List - #endif { #region Constructors /// @@ -4610,7 +4438,6 @@ public static explicit operator StructureDescription[](StructureDescriptionColle } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -4618,7 +4445,6 @@ public object Clone() return (StructureDescriptionCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -4643,7 +4469,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class EnumDescription : DataTypeDescription + public partial class EnumDescription : Opc.Ua.DataTypeDescription { #region Constructors /// @@ -4753,16 +4579,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_enumDefinition, value.m_enumDefinition)) return false; if (!Utils.IsEqual(m_builtInType, value.m_builtInType)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (EnumDescription)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -4787,11 +4611,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfEnumDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EnumDescription")] - #if !NET_STANDARD public partial class EnumDescriptionCollection : List, ICloneable - #else - public partial class EnumDescriptionCollection : List - #endif { #region Constructors /// @@ -4828,7 +4648,6 @@ public static explicit operator EnumDescription[](EnumDescriptionCollection valu } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -4836,7 +4655,6 @@ public object Clone() return (EnumDescriptionCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -4861,7 +4679,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class SimpleTypeDescription : DataTypeDescription + public partial class SimpleTypeDescription : Opc.Ua.DataTypeDescription { #region Constructors /// @@ -4959,16 +4777,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_baseDataType, value.m_baseDataType)) return false; if (!Utils.IsEqual(m_builtInType, value.m_builtInType)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (SimpleTypeDescription)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -4993,11 +4809,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfSimpleTypeDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SimpleTypeDescription")] - #if !NET_STANDARD public partial class SimpleTypeDescriptionCollection : List, ICloneable - #else - public partial class SimpleTypeDescriptionCollection : List - #endif { #region Constructors /// @@ -5034,7 +4846,6 @@ public static explicit operator SimpleTypeDescription[](SimpleTypeDescriptionCol } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -5042,7 +4853,6 @@ public object Clone() return (SimpleTypeDescriptionCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -5067,7 +4877,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class UABinaryFileDataType : DataTypeSchemaHeader + public partial class UABinaryFileDataType : Opc.Ua.DataTypeSchemaHeader { #region Constructors /// @@ -5189,16 +4999,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_fileHeader, value.m_fileHeader)) return false; if (!Utils.IsEqual(m_body, value.m_body)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (UABinaryFileDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -5225,11 +5033,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfUABinaryFileDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "UABinaryFileDataType")] - #if !NET_STANDARD public partial class UABinaryFileDataTypeCollection : List, ICloneable - #else - public partial class UABinaryFileDataTypeCollection : List - #endif { #region Constructors /// @@ -5266,7 +5070,6 @@ public static explicit operator UABinaryFileDataType[](UABinaryFileDataTypeColle } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -5274,7 +5077,6 @@ public object Clone() return (UABinaryFileDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -5327,11 +5129,7 @@ public enum PubSubState /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfPubSubState", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PubSubState")] - #if !NET_STANDARD public partial class PubSubStateCollection : List, ICloneable - #else - public partial class PubSubStateCollection : List - #endif { #region Constructors /// @@ -5368,7 +5166,6 @@ public static explicit operator PubSubState[](PubSubStateCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -5376,7 +5173,6 @@ public object Clone() return (PubSubStateCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -5401,7 +5197,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class DataSetMetaDataType : DataTypeSchemaHeader + public partial class DataSetMetaDataType : Opc.Ua.DataTypeSchemaHeader { #region Constructors /// @@ -5559,16 +5355,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_dataSetClassId, value.m_dataSetClassId)) return false; if (!Utils.IsEqual(m_configurationVersion, value.m_configurationVersion)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (DataSetMetaDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -5599,11 +5393,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDataSetMetaDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetMetaDataType")] - #if !NET_STANDARD public partial class DataSetMetaDataTypeCollection : List, ICloneable - #else - public partial class DataSetMetaDataTypeCollection : List - #endif { #region Constructors /// @@ -5640,7 +5430,6 @@ public static explicit operator DataSetMetaDataType[](DataSetMetaDataTypeCollect } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -5648,7 +5437,6 @@ public object Clone() return (DataSetMetaDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -5889,13 +5677,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (FieldMetaData)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -5936,11 +5722,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfFieldMetaData", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "FieldMetaData")] - #if !NET_STANDARD public partial class FieldMetaDataCollection : List, ICloneable - #else - public partial class FieldMetaDataCollection : List - #endif { #region Constructors /// @@ -5977,7 +5759,6 @@ public static explicit operator FieldMetaData[](FieldMetaDataCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -5985,7 +5766,6 @@ public object Clone() return (FieldMetaDataCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -6125,13 +5905,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ConfigurationVersionDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -6156,11 +5934,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfConfigurationVersionDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ConfigurationVersionDataType")] - #if !NET_STANDARD public partial class ConfigurationVersionDataTypeCollection : List, ICloneable - #else - public partial class ConfigurationVersionDataTypeCollection : List - #endif { #region Constructors /// @@ -6197,7 +5971,6 @@ public static explicit operator ConfigurationVersionDataType[](ConfigurationVers } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -6205,7 +5978,6 @@ public object Clone() return (ConfigurationVersionDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -6398,13 +6170,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (PublishedDataSetDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -6435,11 +6205,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfPublishedDataSetDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PublishedDataSetDataType")] - #if !NET_STANDARD public partial class PublishedDataSetDataTypeCollection : List, ICloneable - #else - public partial class PublishedDataSetDataTypeCollection : List - #endif { #region Constructors /// @@ -6476,7 +6242,6 @@ public static explicit operator PublishedDataSetDataType[](PublishedDataSetDataT } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -6484,7 +6249,6 @@ public object Clone() return (PublishedDataSetDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -6582,13 +6346,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (PublishedDataSetSourceDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -6609,11 +6371,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfPublishedDataSetSourceDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PublishedDataSetSourceDataType")] - #if !NET_STANDARD public partial class PublishedDataSetSourceDataTypeCollection : List, ICloneable - #else - public partial class PublishedDataSetSourceDataTypeCollection : List - #endif { #region Constructors /// @@ -6650,7 +6408,6 @@ public static explicit operator PublishedDataSetSourceDataType[](PublishedDataSe } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -6658,7 +6415,6 @@ public object Clone() return (PublishedDataSetSourceDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -6863,13 +6619,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (PublishedVariableDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -6906,11 +6660,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfPublishedVariableDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PublishedVariableDataType")] - #if !NET_STANDARD public partial class PublishedVariableDataTypeCollection : List, ICloneable - #else - public partial class PublishedVariableDataTypeCollection : List - #endif { #region Constructors /// @@ -6947,7 +6697,6 @@ public static explicit operator PublishedVariableDataType[](PublishedVariableDat } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -6955,7 +6704,6 @@ public object Clone() return (PublishedVariableDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -6980,7 +6728,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class PublishedDataItemsDataType : PublishedDataSetSourceDataType + public partial class PublishedDataItemsDataType : Opc.Ua.PublishedDataSetSourceDataType { #region Constructors /// @@ -7078,16 +6826,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_publishedData, value.m_publishedData)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (PublishedDataItemsDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -7110,11 +6856,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfPublishedDataItemsDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PublishedDataItemsDataType")] - #if !NET_STANDARD public partial class PublishedDataItemsDataTypeCollection : List, ICloneable - #else - public partial class PublishedDataItemsDataTypeCollection : List - #endif { #region Constructors /// @@ -7151,7 +6893,6 @@ public static explicit operator PublishedDataItemsDataType[](PublishedDataItemsD } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -7159,7 +6900,6 @@ public object Clone() return (PublishedDataItemsDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -7184,7 +6924,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class PublishedEventsDataType : PublishedDataSetSourceDataType + public partial class PublishedEventsDataType : Opc.Ua.PublishedDataSetSourceDataType { #region Constructors /// @@ -7318,16 +7058,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_selectedFields, value.m_selectedFields)) return false; if (!Utils.IsEqual(m_filter, value.m_filter)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (PublishedEventsDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -7354,11 +7092,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfPublishedEventsDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PublishedEventsDataType")] - #if !NET_STANDARD public partial class PublishedEventsDataTypeCollection : List, ICloneable - #else - public partial class PublishedEventsDataTypeCollection : List - #endif { #region Constructors /// @@ -7395,7 +7129,6 @@ public static explicit operator PublishedEventsDataType[](PublishedEventsDataTyp } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -7403,7 +7136,6 @@ public object Clone() return (PublishedEventsDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -7464,11 +7196,7 @@ public enum DataSetFieldContentMask : UInt32 /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDataSetFieldContentMask", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetFieldContentMask")] - #if !NET_STANDARD public partial class DataSetFieldContentMaskCollection : List, ICloneable - #else - public partial class DataSetFieldContentMaskCollection : List - #endif { #region Constructors /// @@ -7505,7 +7233,6 @@ public static explicit operator DataSetFieldContentMask[](DataSetFieldContentMas } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -7513,7 +7240,6 @@ public object Clone() return (DataSetFieldContentMaskCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -7730,13 +7456,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DataSetWriterDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -7775,11 +7499,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDataSetWriterDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetWriterDataType")] - #if !NET_STANDARD public partial class DataSetWriterDataTypeCollection : List, ICloneable - #else - public partial class DataSetWriterDataTypeCollection : List - #endif { #region Constructors /// @@ -7816,7 +7536,6 @@ public static explicit operator DataSetWriterDataType[](DataSetWriterDataTypeCol } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -7824,7 +7543,6 @@ public object Clone() return (DataSetWriterDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -7922,13 +7640,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DataSetWriterTransportDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -7949,11 +7665,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDataSetWriterTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetWriterTransportDataType")] - #if !NET_STANDARD public partial class DataSetWriterTransportDataTypeCollection : List, ICloneable - #else - public partial class DataSetWriterTransportDataTypeCollection : List - #endif { #region Constructors /// @@ -7990,7 +7702,6 @@ public static explicit operator DataSetWriterTransportDataType[](DataSetWriterTr } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -7998,7 +7709,6 @@ public object Clone() return (DataSetWriterTransportDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -8096,13 +7806,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DataSetWriterMessageDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -8123,11 +7831,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDataSetWriterMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetWriterMessageDataType")] - #if !NET_STANDARD public partial class DataSetWriterMessageDataTypeCollection : List, ICloneable - #else - public partial class DataSetWriterMessageDataTypeCollection : List - #endif { #region Constructors /// @@ -8164,7 +7868,6 @@ public static explicit operator DataSetWriterMessageDataType[](DataSetWriterMess } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -8172,7 +7875,6 @@ public object Clone() return (DataSetWriterMessageDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -8377,13 +8079,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (PubSubGroupDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -8418,11 +8118,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfPubSubGroupDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PubSubGroupDataType")] - #if !NET_STANDARD public partial class PubSubGroupDataTypeCollection : List, ICloneable - #else - public partial class PubSubGroupDataTypeCollection : List - #endif { #region Constructors /// @@ -8459,7 +8155,6 @@ public static explicit operator PubSubGroupDataType[](PubSubGroupDataTypeCollect } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -8467,7 +8162,6 @@ public object Clone() return (PubSubGroupDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -8492,7 +8186,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class WriterGroupDataType : PubSubGroupDataType + public partial class WriterGroupDataType : Opc.Ua.PubSubGroupDataType { #region Constructors /// @@ -8698,16 +8392,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_messageSettings, value.m_messageSettings)) return false; if (!Utils.IsEqual(m_dataSetWriters, value.m_dataSetWriters)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (WriterGroupDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -8746,11 +8438,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfWriterGroupDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "WriterGroupDataType")] - #if !NET_STANDARD public partial class WriterGroupDataTypeCollection : List, ICloneable - #else - public partial class WriterGroupDataTypeCollection : List - #endif { #region Constructors /// @@ -8787,7 +8475,6 @@ public static explicit operator WriterGroupDataType[](WriterGroupDataTypeCollect } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -8795,7 +8482,6 @@ public object Clone() return (WriterGroupDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -8893,13 +8579,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (WriterGroupTransportDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -8920,11 +8604,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfWriterGroupTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "WriterGroupTransportDataType")] - #if !NET_STANDARD public partial class WriterGroupTransportDataTypeCollection : List, ICloneable - #else - public partial class WriterGroupTransportDataTypeCollection : List - #endif { #region Constructors /// @@ -8961,7 +8641,6 @@ public static explicit operator WriterGroupTransportDataType[](WriterGroupTransp } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -8969,7 +8648,6 @@ public object Clone() return (WriterGroupTransportDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -9067,13 +8745,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (WriterGroupMessageDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -9094,11 +8770,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfWriterGroupMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "WriterGroupMessageDataType")] - #if !NET_STANDARD public partial class WriterGroupMessageDataTypeCollection : List, ICloneable - #else - public partial class WriterGroupMessageDataTypeCollection : List - #endif { #region Constructors /// @@ -9135,7 +8807,6 @@ public static explicit operator WriterGroupMessageDataType[](WriterGroupMessageD } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -9143,7 +8814,6 @@ public object Clone() return (WriterGroupMessageDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -9384,13 +9054,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (PubSubConnectionDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -9429,11 +9097,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfPubSubConnectionDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PubSubConnectionDataType")] - #if !NET_STANDARD public partial class PubSubConnectionDataTypeCollection : List, ICloneable - #else - public partial class PubSubConnectionDataTypeCollection : List - #endif { #region Constructors /// @@ -9470,7 +9134,6 @@ public static explicit operator PubSubConnectionDataType[](PubSubConnectionDataT } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -9478,7 +9141,6 @@ public object Clone() return (PubSubConnectionDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -9576,13 +9238,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ConnectionTransportDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -9603,11 +9263,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfConnectionTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ConnectionTransportDataType")] - #if !NET_STANDARD public partial class ConnectionTransportDataTypeCollection : List, ICloneable - #else - public partial class ConnectionTransportDataTypeCollection : List - #endif { #region Constructors /// @@ -9644,7 +9300,6 @@ public static explicit operator ConnectionTransportDataType[](ConnectionTranspor } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -9652,7 +9307,6 @@ public object Clone() return (ConnectionTransportDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -9761,13 +9415,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (NetworkAddressDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -9790,11 +9442,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfNetworkAddressDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "NetworkAddressDataType")] - #if !NET_STANDARD public partial class NetworkAddressDataTypeCollection : List, ICloneable - #else - public partial class NetworkAddressDataTypeCollection : List - #endif { #region Constructors /// @@ -9831,7 +9479,6 @@ public static explicit operator NetworkAddressDataType[](NetworkAddressDataTypeC } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -9839,7 +9486,6 @@ public object Clone() return (NetworkAddressDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -9864,7 +9510,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class NetworkAddressUrlDataType : NetworkAddressDataType + public partial class NetworkAddressUrlDataType : Opc.Ua.NetworkAddressDataType { #region Constructors /// @@ -9950,16 +9596,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_url, value.m_url)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (NetworkAddressUrlDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -9982,11 +9626,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfNetworkAddressUrlDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "NetworkAddressUrlDataType")] - #if !NET_STANDARD public partial class NetworkAddressUrlDataTypeCollection : List, ICloneable - #else - public partial class NetworkAddressUrlDataTypeCollection : List - #endif { #region Constructors /// @@ -10023,7 +9663,6 @@ public static explicit operator NetworkAddressUrlDataType[](NetworkAddressUrlDat } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -10031,7 +9670,6 @@ public object Clone() return (NetworkAddressUrlDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -10056,7 +9694,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ReaderGroupDataType : PubSubGroupDataType + public partial class ReaderGroupDataType : Opc.Ua.PubSubGroupDataType { #region Constructors /// @@ -10178,16 +9816,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_messageSettings, value.m_messageSettings)) return false; if (!Utils.IsEqual(m_dataSetReaders, value.m_dataSetReaders)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ReaderGroupDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -10214,11 +9850,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfReaderGroupDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ReaderGroupDataType")] - #if !NET_STANDARD public partial class ReaderGroupDataTypeCollection : List, ICloneable - #else - public partial class ReaderGroupDataTypeCollection : List - #endif { #region Constructors /// @@ -10255,7 +9887,6 @@ public static explicit operator ReaderGroupDataType[](ReaderGroupDataTypeCollect } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -10263,7 +9894,6 @@ public object Clone() return (ReaderGroupDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -10361,13 +9991,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ReaderGroupTransportDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -10388,11 +10016,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfReaderGroupTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ReaderGroupTransportDataType")] - #if !NET_STANDARD public partial class ReaderGroupTransportDataTypeCollection : List, ICloneable - #else - public partial class ReaderGroupTransportDataTypeCollection : List - #endif { #region Constructors /// @@ -10429,7 +10053,6 @@ public static explicit operator ReaderGroupTransportDataType[](ReaderGroupTransp } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -10437,7 +10060,6 @@ public object Clone() return (ReaderGroupTransportDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -10535,13 +10157,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ReaderGroupMessageDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -10562,11 +10182,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfReaderGroupMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ReaderGroupMessageDataType")] - #if !NET_STANDARD public partial class ReaderGroupMessageDataTypeCollection : List, ICloneable - #else - public partial class ReaderGroupMessageDataTypeCollection : List - #endif { #region Constructors /// @@ -10603,7 +10219,6 @@ public static explicit operator ReaderGroupMessageDataType[](ReaderGroupMessageD } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -10611,7 +10226,6 @@ public object Clone() return (ReaderGroupMessageDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -10948,13 +10562,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DataSetReaderDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -11009,11 +10621,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDataSetReaderDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetReaderDataType")] - #if !NET_STANDARD public partial class DataSetReaderDataTypeCollection : List, ICloneable - #else - public partial class DataSetReaderDataTypeCollection : List - #endif { #region Constructors /// @@ -11050,7 +10658,6 @@ public static explicit operator DataSetReaderDataType[](DataSetReaderDataTypeCol } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -11058,7 +10665,6 @@ public object Clone() return (DataSetReaderDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -11156,13 +10762,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DataSetReaderTransportDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -11183,11 +10787,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDataSetReaderTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetReaderTransportDataType")] - #if !NET_STANDARD public partial class DataSetReaderTransportDataTypeCollection : List, ICloneable - #else - public partial class DataSetReaderTransportDataTypeCollection : List - #endif { #region Constructors /// @@ -11224,7 +10824,6 @@ public static explicit operator DataSetReaderTransportDataType[](DataSetReaderTr } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -11232,7 +10831,6 @@ public object Clone() return (DataSetReaderTransportDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -11330,13 +10928,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DataSetReaderMessageDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -11357,11 +10953,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDataSetReaderMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetReaderMessageDataType")] - #if !NET_STANDARD public partial class DataSetReaderMessageDataTypeCollection : List, ICloneable - #else - public partial class DataSetReaderMessageDataTypeCollection : List - #endif { #region Constructors /// @@ -11398,7 +10990,6 @@ public static explicit operator DataSetReaderMessageDataType[](DataSetReaderMess } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -11406,7 +10997,6 @@ public object Clone() return (DataSetReaderMessageDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -11504,13 +11094,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SubscribedDataSetDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -11531,11 +11119,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfSubscribedDataSetDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SubscribedDataSetDataType")] - #if !NET_STANDARD public partial class SubscribedDataSetDataTypeCollection : List, ICloneable - #else - public partial class SubscribedDataSetDataTypeCollection : List - #endif { #region Constructors /// @@ -11572,7 +11156,6 @@ public static explicit operator SubscribedDataSetDataType[](SubscribedDataSetDat } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -11580,7 +11163,6 @@ public object Clone() return (SubscribedDataSetDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -11605,7 +11187,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class TargetVariablesDataType : SubscribedDataSetDataType + public partial class TargetVariablesDataType : Opc.Ua.SubscribedDataSetDataType { #region Constructors /// @@ -11703,16 +11285,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_targetVariables, value.m_targetVariables)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (TargetVariablesDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -11735,11 +11315,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfTargetVariablesDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "TargetVariablesDataType")] - #if !NET_STANDARD public partial class TargetVariablesDataTypeCollection : List, ICloneable - #else - public partial class TargetVariablesDataTypeCollection : List - #endif { #region Constructors /// @@ -11776,7 +11352,6 @@ public static explicit operator TargetVariablesDataType[](TargetVariablesDataTyp } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -11784,7 +11359,6 @@ public object Clone() return (TargetVariablesDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -11965,13 +11539,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (FieldTargetDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -12006,11 +11578,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfFieldTargetDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "FieldTargetDataType")] - #if !NET_STANDARD public partial class FieldTargetDataTypeCollection : List, ICloneable - #else - public partial class FieldTargetDataTypeCollection : List - #endif { #region Constructors /// @@ -12047,7 +11615,6 @@ public static explicit operator FieldTargetDataType[](FieldTargetDataTypeCollect } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -12055,7 +11622,6 @@ public object Clone() return (FieldTargetDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -12100,11 +11666,7 @@ public enum OverrideValueHandling /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfOverrideValueHandling", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "OverrideValueHandling")] - #if !NET_STANDARD public partial class OverrideValueHandlingCollection : List, ICloneable - #else - public partial class OverrideValueHandlingCollection : List - #endif { #region Constructors /// @@ -12141,7 +11703,6 @@ public static explicit operator OverrideValueHandling[](OverrideValueHandlingCol } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -12149,7 +11710,6 @@ public object Clone() return (OverrideValueHandlingCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -12174,7 +11734,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class SubscribedDataSetMirrorDataType : SubscribedDataSetDataType + public partial class SubscribedDataSetMirrorDataType : Opc.Ua.SubscribedDataSetDataType { #region Constructors /// @@ -12284,16 +11844,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_parentNodeName, value.m_parentNodeName)) return false; if (!Utils.IsEqual(m_rolePermissions, value.m_rolePermissions)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (SubscribedDataSetMirrorDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -12318,11 +11876,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfSubscribedDataSetMirrorDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SubscribedDataSetMirrorDataType")] - #if !NET_STANDARD public partial class SubscribedDataSetMirrorDataTypeCollection : List, ICloneable - #else - public partial class SubscribedDataSetMirrorDataTypeCollection : List - #endif { #region Constructors /// @@ -12359,7 +11913,6 @@ public static explicit operator SubscribedDataSetMirrorDataType[](SubscribedData } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -12367,7 +11920,6 @@ public object Clone() return (SubscribedDataSetMirrorDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -12524,13 +12076,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (PubSubConfigurationDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -12557,11 +12107,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfPubSubConfigurationDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PubSubConfigurationDataType")] - #if !NET_STANDARD public partial class PubSubConfigurationDataTypeCollection : List, ICloneable - #else - public partial class PubSubConfigurationDataTypeCollection : List - #endif { #region Constructors /// @@ -12598,7 +12144,6 @@ public static explicit operator PubSubConfigurationDataType[](PubSubConfiguratio } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -12606,7 +12151,6 @@ public object Clone() return (PubSubConfigurationDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -12651,11 +12195,7 @@ public enum DataSetOrderingType /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDataSetOrderingType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetOrderingType")] - #if !NET_STANDARD public partial class DataSetOrderingTypeCollection : List, ICloneable - #else - public partial class DataSetOrderingTypeCollection : List - #endif { #region Constructors /// @@ -12692,7 +12232,6 @@ public static explicit operator DataSetOrderingType[](DataSetOrderingTypeCollect } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -12700,7 +12239,6 @@ public object Clone() return (DataSetOrderingTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -12781,11 +12319,7 @@ public enum UadpNetworkMessageContentMask : UInt32 /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfUadpNetworkMessageContentMask", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "UadpNetworkMessageContentMask")] - #if !NET_STANDARD public partial class UadpNetworkMessageContentMaskCollection : List, ICloneable - #else - public partial class UadpNetworkMessageContentMaskCollection : List - #endif { #region Constructors /// @@ -12822,7 +12356,6 @@ public static explicit operator UadpNetworkMessageContentMask[](UadpNetworkMessa } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -12830,7 +12363,6 @@ public object Clone() return (UadpNetworkMessageContentMaskCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -12855,7 +12387,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class UadpWriterGroupMessageDataType : WriterGroupMessageDataType + public partial class UadpWriterGroupMessageDataType : Opc.Ua.WriterGroupMessageDataType { #region Constructors /// @@ -13001,16 +12533,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_samplingOffset, value.m_samplingOffset)) return false; if (!Utils.IsEqual(m_publishingOffset, value.m_publishingOffset)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (UadpWriterGroupMessageDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -13041,11 +12571,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfUadpWriterGroupMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "UadpWriterGroupMessageDataType")] - #if !NET_STANDARD public partial class UadpWriterGroupMessageDataTypeCollection : List, ICloneable - #else - public partial class UadpWriterGroupMessageDataTypeCollection : List - #endif { #region Constructors /// @@ -13082,7 +12608,6 @@ public static explicit operator UadpWriterGroupMessageDataType[](UadpWriterGroup } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -13090,7 +12615,6 @@ public object Clone() return (UadpWriterGroupMessageDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -13151,11 +12675,7 @@ public enum UadpDataSetMessageContentMask : UInt32 /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfUadpDataSetMessageContentMask", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "UadpDataSetMessageContentMask")] - #if !NET_STANDARD public partial class UadpDataSetMessageContentMaskCollection : List, ICloneable - #else - public partial class UadpDataSetMessageContentMaskCollection : List - #endif { #region Constructors /// @@ -13192,7 +12712,6 @@ public static explicit operator UadpDataSetMessageContentMask[](UadpDataSetMessa } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -13200,7 +12719,6 @@ public object Clone() return (UadpDataSetMessageContentMaskCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -13225,7 +12743,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class UadpDataSetWriterMessageDataType : DataSetWriterMessageDataType + public partial class UadpDataSetWriterMessageDataType : Opc.Ua.DataSetWriterMessageDataType { #region Constructors /// @@ -13347,16 +12865,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_networkMessageNumber, value.m_networkMessageNumber)) return false; if (!Utils.IsEqual(m_dataSetOffset, value.m_dataSetOffset)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (UadpDataSetWriterMessageDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -13385,11 +12901,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfUadpDataSetWriterMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "UadpDataSetWriterMessageDataType")] - #if !NET_STANDARD public partial class UadpDataSetWriterMessageDataTypeCollection : List, ICloneable - #else - public partial class UadpDataSetWriterMessageDataTypeCollection : List - #endif { #region Constructors /// @@ -13426,7 +12938,6 @@ public static explicit operator UadpDataSetWriterMessageDataType[](UadpDataSetWr } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -13434,7 +12945,6 @@ public object Clone() return (UadpDataSetWriterMessageDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -13459,7 +12969,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class UadpDataSetReaderMessageDataType : DataSetReaderMessageDataType + public partial class UadpDataSetReaderMessageDataType : Opc.Ua.DataSetReaderMessageDataType { #region Constructors /// @@ -13641,16 +13151,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_receiveOffset, value.m_receiveOffset)) return false; if (!Utils.IsEqual(m_processingOffset, value.m_processingOffset)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (UadpDataSetReaderMessageDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -13689,11 +13197,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfUadpDataSetReaderMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "UadpDataSetReaderMessageDataType")] - #if !NET_STANDARD public partial class UadpDataSetReaderMessageDataTypeCollection : List, ICloneable - #else - public partial class UadpDataSetReaderMessageDataTypeCollection : List - #endif { #region Constructors /// @@ -13730,7 +13234,6 @@ public static explicit operator UadpDataSetReaderMessageDataType[](UadpDataSetRe } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -13738,7 +13241,6 @@ public object Clone() return (UadpDataSetReaderMessageDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -13799,11 +13301,7 @@ public enum JsonNetworkMessageContentMask : UInt32 /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfJsonNetworkMessageContentMask", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "JsonNetworkMessageContentMask")] - #if !NET_STANDARD public partial class JsonNetworkMessageContentMaskCollection : List, ICloneable - #else - public partial class JsonNetworkMessageContentMaskCollection : List - #endif { #region Constructors /// @@ -13840,7 +13338,6 @@ public static explicit operator JsonNetworkMessageContentMask[](JsonNetworkMessa } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -13848,7 +13345,6 @@ public object Clone() return (JsonNetworkMessageContentMaskCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -13873,7 +13369,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class JsonWriterGroupMessageDataType : WriterGroupMessageDataType + public partial class JsonWriterGroupMessageDataType : Opc.Ua.WriterGroupMessageDataType { #region Constructors /// @@ -13959,16 +13455,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_networkMessageContentMask, value.m_networkMessageContentMask)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (JsonWriterGroupMessageDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -13991,11 +13485,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfJsonWriterGroupMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "JsonWriterGroupMessageDataType")] - #if !NET_STANDARD public partial class JsonWriterGroupMessageDataTypeCollection : List, ICloneable - #else - public partial class JsonWriterGroupMessageDataTypeCollection : List - #endif { #region Constructors /// @@ -14032,7 +13522,6 @@ public static explicit operator JsonWriterGroupMessageDataType[](JsonWriterGroup } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -14040,7 +13529,6 @@ public object Clone() return (JsonWriterGroupMessageDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -14101,11 +13589,7 @@ public enum JsonDataSetMessageContentMask : UInt32 /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfJsonDataSetMessageContentMask", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "JsonDataSetMessageContentMask")] - #if !NET_STANDARD public partial class JsonDataSetMessageContentMaskCollection : List, ICloneable - #else - public partial class JsonDataSetMessageContentMaskCollection : List - #endif { #region Constructors /// @@ -14142,7 +13626,6 @@ public static explicit operator JsonDataSetMessageContentMask[](JsonDataSetMessa } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -14150,7 +13633,6 @@ public object Clone() return (JsonDataSetMessageContentMaskCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -14175,7 +13657,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class JsonDataSetWriterMessageDataType : DataSetWriterMessageDataType + public partial class JsonDataSetWriterMessageDataType : Opc.Ua.DataSetWriterMessageDataType { #region Constructors /// @@ -14261,16 +13743,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_dataSetMessageContentMask, value.m_dataSetMessageContentMask)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (JsonDataSetWriterMessageDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -14293,11 +13773,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfJsonDataSetWriterMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "JsonDataSetWriterMessageDataType")] - #if !NET_STANDARD public partial class JsonDataSetWriterMessageDataTypeCollection : List, ICloneable - #else - public partial class JsonDataSetWriterMessageDataTypeCollection : List - #endif { #region Constructors /// @@ -14334,7 +13810,6 @@ public static explicit operator JsonDataSetWriterMessageDataType[](JsonDataSetWr } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -14342,7 +13817,6 @@ public object Clone() return (JsonDataSetWriterMessageDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -14367,7 +13841,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class JsonDataSetReaderMessageDataType : DataSetReaderMessageDataType + public partial class JsonDataSetReaderMessageDataType : Opc.Ua.DataSetReaderMessageDataType { #region Constructors /// @@ -14465,16 +13939,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_networkMessageContentMask, value.m_networkMessageContentMask)) return false; if (!Utils.IsEqual(m_dataSetMessageContentMask, value.m_dataSetMessageContentMask)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (JsonDataSetReaderMessageDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -14499,11 +13971,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfJsonDataSetReaderMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "JsonDataSetReaderMessageDataType")] - #if !NET_STANDARD public partial class JsonDataSetReaderMessageDataTypeCollection : List, ICloneable - #else - public partial class JsonDataSetReaderMessageDataTypeCollection : List - #endif { #region Constructors /// @@ -14540,7 +14008,6 @@ public static explicit operator JsonDataSetReaderMessageDataType[](JsonDataSetRe } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -14548,7 +14015,6 @@ public object Clone() return (JsonDataSetReaderMessageDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -14573,7 +14039,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class DatagramConnectionTransportDataType : ConnectionTransportDataType + public partial class DatagramConnectionTransportDataType : Opc.Ua.ConnectionTransportDataType { #region Constructors /// @@ -14659,16 +14125,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_discoveryAddress, value.m_discoveryAddress)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (DatagramConnectionTransportDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -14691,11 +14155,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDatagramConnectionTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DatagramConnectionTransportDataType")] - #if !NET_STANDARD public partial class DatagramConnectionTransportDataTypeCollection : List, ICloneable - #else - public partial class DatagramConnectionTransportDataTypeCollection : List - #endif { #region Constructors /// @@ -14732,7 +14192,6 @@ public static explicit operator DatagramConnectionTransportDataType[](DatagramCo } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -14740,7 +14199,6 @@ public object Clone() return (DatagramConnectionTransportDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -14765,7 +14223,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class DatagramWriterGroupTransportDataType : WriterGroupTransportDataType + public partial class DatagramWriterGroupTransportDataType : Opc.Ua.WriterGroupTransportDataType { #region Constructors /// @@ -14863,16 +14321,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_messageRepeatCount, value.m_messageRepeatCount)) return false; if (!Utils.IsEqual(m_messageRepeatDelay, value.m_messageRepeatDelay)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (DatagramWriterGroupTransportDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -14897,11 +14353,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDatagramWriterGroupTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DatagramWriterGroupTransportDataType")] - #if !NET_STANDARD public partial class DatagramWriterGroupTransportDataTypeCollection : List, ICloneable - #else - public partial class DatagramWriterGroupTransportDataTypeCollection : List - #endif { #region Constructors /// @@ -14938,7 +14390,6 @@ public static explicit operator DatagramWriterGroupTransportDataType[](DatagramW } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -14946,7 +14397,6 @@ public object Clone() return (DatagramWriterGroupTransportDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -14971,7 +14421,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class BrokerConnectionTransportDataType : ConnectionTransportDataType + public partial class BrokerConnectionTransportDataType : Opc.Ua.ConnectionTransportDataType { #region Constructors /// @@ -15069,16 +14519,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_resourceUri, value.m_resourceUri)) return false; if (!Utils.IsEqual(m_authenticationProfileUri, value.m_authenticationProfileUri)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (BrokerConnectionTransportDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -15103,11 +14551,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfBrokerConnectionTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrokerConnectionTransportDataType")] - #if !NET_STANDARD public partial class BrokerConnectionTransportDataTypeCollection : List, ICloneable - #else - public partial class BrokerConnectionTransportDataTypeCollection : List - #endif { #region Constructors /// @@ -15144,7 +14588,6 @@ public static explicit operator BrokerConnectionTransportDataType[](BrokerConnec } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -15152,7 +14595,6 @@ public object Clone() return (BrokerConnectionTransportDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -15205,11 +14647,7 @@ public enum BrokerTransportQualityOfService /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfBrokerTransportQualityOfService", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrokerTransportQualityOfService")] - #if !NET_STANDARD public partial class BrokerTransportQualityOfServiceCollection : List, ICloneable - #else - public partial class BrokerTransportQualityOfServiceCollection : List - #endif { #region Constructors /// @@ -15246,7 +14684,6 @@ public static explicit operator BrokerTransportQualityOfService[](BrokerTranspor } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -15254,7 +14691,6 @@ public object Clone() return (BrokerTransportQualityOfServiceCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -15279,7 +14715,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class BrokerWriterGroupTransportDataType : WriterGroupTransportDataType + public partial class BrokerWriterGroupTransportDataType : Opc.Ua.WriterGroupTransportDataType { #region Constructors /// @@ -15401,16 +14837,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_authenticationProfileUri, value.m_authenticationProfileUri)) return false; if (!Utils.IsEqual(m_requestedDeliveryGuarantee, value.m_requestedDeliveryGuarantee)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (BrokerWriterGroupTransportDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -15439,11 +14873,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfBrokerWriterGroupTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrokerWriterGroupTransportDataType")] - #if !NET_STANDARD public partial class BrokerWriterGroupTransportDataTypeCollection : List, ICloneable - #else - public partial class BrokerWriterGroupTransportDataTypeCollection : List - #endif { #region Constructors /// @@ -15480,7 +14910,6 @@ public static explicit operator BrokerWriterGroupTransportDataType[](BrokerWrite } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -15488,7 +14917,6 @@ public object Clone() return (BrokerWriterGroupTransportDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -15513,7 +14941,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class BrokerDataSetWriterTransportDataType : DataSetWriterTransportDataType + public partial class BrokerDataSetWriterTransportDataType : Opc.Ua.DataSetWriterTransportDataType { #region Constructors /// @@ -15659,16 +15087,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_metaDataQueueName, value.m_metaDataQueueName)) return false; if (!Utils.IsEqual(m_metaDataUpdateTime, value.m_metaDataUpdateTime)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (BrokerDataSetWriterTransportDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -15701,11 +15127,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfBrokerDataSetWriterTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrokerDataSetWriterTransportDataType")] - #if !NET_STANDARD public partial class BrokerDataSetWriterTransportDataTypeCollection : List, ICloneable - #else - public partial class BrokerDataSetWriterTransportDataTypeCollection : List - #endif { #region Constructors /// @@ -15742,7 +15164,6 @@ public static explicit operator BrokerDataSetWriterTransportDataType[](BrokerDat } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -15750,7 +15171,6 @@ public object Clone() return (BrokerDataSetWriterTransportDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -15775,7 +15195,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class BrokerDataSetReaderTransportDataType : DataSetReaderTransportDataType + public partial class BrokerDataSetReaderTransportDataType : Opc.Ua.DataSetReaderTransportDataType { #region Constructors /// @@ -15909,16 +15329,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_requestedDeliveryGuarantee, value.m_requestedDeliveryGuarantee)) return false; if (!Utils.IsEqual(m_metaDataQueueName, value.m_metaDataQueueName)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (BrokerDataSetReaderTransportDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -15949,11 +15367,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfBrokerDataSetReaderTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrokerDataSetReaderTransportDataType")] - #if !NET_STANDARD public partial class BrokerDataSetReaderTransportDataTypeCollection : List, ICloneable - #else - public partial class BrokerDataSetReaderTransportDataTypeCollection : List - #endif { #region Constructors /// @@ -15990,7 +15404,6 @@ public static explicit operator BrokerDataSetReaderTransportDataType[](BrokerDat } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -15998,7 +15411,6 @@ public object Clone() return (BrokerDataSetReaderTransportDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -16051,11 +15463,7 @@ public enum DiagnosticsLevel /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDiagnosticsLevel", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DiagnosticsLevel")] - #if !NET_STANDARD public partial class DiagnosticsLevelCollection : List, ICloneable - #else - public partial class DiagnosticsLevelCollection : List - #endif { #region Constructors /// @@ -16092,7 +15500,6 @@ public static explicit operator DiagnosticsLevel[](DiagnosticsLevelCollection va } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -16100,7 +15507,6 @@ public object Clone() return (DiagnosticsLevelCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -16141,11 +15547,7 @@ public enum PubSubDiagnosticsCounterClassification /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfPubSubDiagnosticsCounterClassification", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PubSubDiagnosticsCounterClassification")] - #if !NET_STANDARD public partial class PubSubDiagnosticsCounterClassificationCollection : List, ICloneable - #else - public partial class PubSubDiagnosticsCounterClassificationCollection : List - #endif { #region Constructors /// @@ -16182,7 +15584,6 @@ public static explicit operator PubSubDiagnosticsCounterClassification[](PubSubD } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -16190,7 +15591,6 @@ public object Clone() return (PubSubDiagnosticsCounterClassificationCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -16323,13 +15723,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (AliasNameDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -16354,11 +15752,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfAliasNameDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "AliasNameDataType")] - #if !NET_STANDARD public partial class AliasNameDataTypeCollection : List, ICloneable - #else - public partial class AliasNameDataTypeCollection : List - #endif { #region Constructors /// @@ -16395,7 +15789,6 @@ public static explicit operator AliasNameDataType[](AliasNameDataTypeCollection } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -16403,7 +15796,6 @@ public object Clone() return (AliasNameDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -16448,11 +15840,7 @@ public enum Duplex /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDuplex", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "Duplex")] - #if !NET_STANDARD public partial class DuplexCollection : List, ICloneable - #else - public partial class DuplexCollection : List - #endif { #region Constructors /// @@ -16489,7 +15877,6 @@ public static explicit operator Duplex[](DuplexCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -16497,7 +15884,6 @@ public object Clone() return (DuplexCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -16542,11 +15928,7 @@ public enum InterfaceAdminStatus /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfInterfaceAdminStatus", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "InterfaceAdminStatus")] - #if !NET_STANDARD public partial class InterfaceAdminStatusCollection : List, ICloneable - #else - public partial class InterfaceAdminStatusCollection : List - #endif { #region Constructors /// @@ -16583,7 +15965,6 @@ public static explicit operator InterfaceAdminStatus[](InterfaceAdminStatusColle } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -16591,7 +15972,6 @@ public object Clone() return (InterfaceAdminStatusCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -16652,11 +16032,7 @@ public enum InterfaceOperStatus /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfInterfaceOperStatus", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "InterfaceOperStatus")] - #if !NET_STANDARD public partial class InterfaceOperStatusCollection : List, ICloneable - #else - public partial class InterfaceOperStatusCollection : List - #endif { #region Constructors /// @@ -16693,7 +16069,6 @@ public static explicit operator InterfaceOperStatus[](InterfaceOperStatusCollect } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -16701,7 +16076,6 @@ public object Clone() return (InterfaceOperStatusCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -16754,11 +16128,7 @@ public enum NegotiationStatus /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfNegotiationStatus", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "NegotiationStatus")] - #if !NET_STANDARD public partial class NegotiationStatusCollection : List, ICloneable - #else - public partial class NegotiationStatusCollection : List - #endif { #region Constructors /// @@ -16795,7 +16165,6 @@ public static explicit operator NegotiationStatus[](NegotiationStatusCollection } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -16803,7 +16172,6 @@ public object Clone() return (NegotiationStatusCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -16940,11 +16308,7 @@ public enum TsnFailureCode /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfTsnFailureCode", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "TsnFailureCode")] - #if !NET_STANDARD public partial class TsnFailureCodeCollection : List, ICloneable - #else - public partial class TsnFailureCodeCollection : List - #endif { #region Constructors /// @@ -16981,7 +16345,6 @@ public static explicit operator TsnFailureCode[](TsnFailureCodeCollection values } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -16989,7 +16352,6 @@ public object Clone() return (TsnFailureCodeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -17042,11 +16404,7 @@ public enum TsnStreamState /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfTsnStreamState", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "TsnStreamState")] - #if !NET_STANDARD public partial class TsnStreamStateCollection : List, ICloneable - #else - public partial class TsnStreamStateCollection : List - #endif { #region Constructors /// @@ -17083,7 +16441,6 @@ public static explicit operator TsnStreamState[](TsnStreamStateCollection values } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -17091,7 +16448,6 @@ public object Clone() return (TsnStreamStateCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -17136,11 +16492,7 @@ public enum TsnTalkerStatus /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfTsnTalkerStatus", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "TsnTalkerStatus")] - #if !NET_STANDARD public partial class TsnTalkerStatusCollection : List, ICloneable - #else - public partial class TsnTalkerStatusCollection : List - #endif { #region Constructors /// @@ -17177,7 +16529,6 @@ public static explicit operator TsnTalkerStatus[](TsnTalkerStatusCollection valu } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -17185,7 +16536,6 @@ public object Clone() return (TsnTalkerStatusCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -17234,11 +16584,7 @@ public enum TsnListenerStatus /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfTsnListenerStatus", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "TsnListenerStatus")] - #if !NET_STANDARD public partial class TsnListenerStatusCollection : List, ICloneable - #else - public partial class TsnListenerStatusCollection : List - #endif { #region Constructors /// @@ -17275,7 +16621,6 @@ public static explicit operator TsnListenerStatus[](TsnListenerStatusCollection } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -17283,7 +16628,6 @@ public object Clone() return (TsnListenerStatusCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -17404,13 +16748,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (UnsignedRationalNumber)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -17435,11 +16777,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfUnsignedRationalNumber", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "UnsignedRationalNumber")] - #if !NET_STANDARD public partial class UnsignedRationalNumberCollection : List, ICloneable - #else - public partial class UnsignedRationalNumberCollection : List - #endif { #region Constructors /// @@ -17476,7 +16814,6 @@ public static explicit operator UnsignedRationalNumber[](UnsignedRationalNumberC } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -17484,7 +16821,6 @@ public object Clone() return (UnsignedRationalNumberCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -17533,11 +16869,7 @@ public enum IdType /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfIdType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "IdType")] - #if !NET_STANDARD public partial class IdTypeCollection : List, ICloneable - #else - public partial class IdTypeCollection : List - #endif { #region Constructors /// @@ -17574,7 +16906,6 @@ public static explicit operator IdType[](IdTypeCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -17582,7 +16913,6 @@ public object Clone() return (IdTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -17993,13 +17323,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (RolePermissionType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -18024,11 +17352,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfRolePermissionType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "RolePermissionType")] - #if !NET_STANDARD public partial class RolePermissionTypeCollection : List, ICloneable - #else - public partial class RolePermissionTypeCollection : List - #endif { #region Constructors /// @@ -18065,7 +17389,6 @@ public static explicit operator RolePermissionType[](RolePermissionTypeCollectio } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -18073,7 +17396,6 @@ public object Clone() return (RolePermissionTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -18171,13 +17493,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DataTypeDefinition)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -18198,11 +17518,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDataTypeDefinition", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataTypeDefinition")] - #if !NET_STANDARD public partial class DataTypeDefinitionCollection : List, ICloneable - #else - public partial class DataTypeDefinitionCollection : List - #endif { #region Constructors /// @@ -18239,7 +17555,6 @@ public static explicit operator DataTypeDefinition[](DataTypeDefinitionCollectio } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -18247,7 +17562,6 @@ public object Clone() return (DataTypeDefinitionCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -18471,13 +17785,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (StructureField)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -18512,11 +17824,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfStructureField", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "StructureField")] - #if !NET_STANDARD public partial class StructureFieldCollection : List, ICloneable - #else - public partial class StructureFieldCollection : List - #endif { #region Constructors /// @@ -18553,7 +17861,6 @@ public static explicit operator StructureField[](StructureFieldCollection values } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -18561,7 +17868,6 @@ public object Clone() return (StructureFieldCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -18586,7 +17892,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class StructureDefinition : DataTypeDefinition + public partial class StructureDefinition : Opc.Ua.DataTypeDefinition { #region Constructors /// @@ -18720,16 +18026,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_structureType, value.m_structureType)) return false; if (!Utils.IsEqual(m_fields, value.m_fields)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (StructureDefinition)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -18758,11 +18062,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfStructureDefinition", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "StructureDefinition")] - #if !NET_STANDARD public partial class StructureDefinitionCollection : List, ICloneable - #else - public partial class StructureDefinitionCollection : List - #endif { #region Constructors /// @@ -18799,7 +18099,6 @@ public static explicit operator StructureDefinition[](StructureDefinitionCollect } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -18807,7 +18106,6 @@ public object Clone() return (StructureDefinitionCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -18832,7 +18130,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class EnumDefinition : DataTypeDefinition + public partial class EnumDefinition : Opc.Ua.DataTypeDefinition { #region Constructors /// @@ -18930,16 +18228,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_fields, value.m_fields)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (EnumDefinition)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -18962,11 +18258,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfEnumDefinition", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EnumDefinition")] - #if !NET_STANDARD public partial class EnumDefinitionCollection : List, ICloneable - #else - public partial class EnumDefinitionCollection : List - #endif { #region Constructors /// @@ -19003,7 +18295,6 @@ public static explicit operator EnumDefinition[](EnumDefinitionCollection values } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -19011,7 +18302,6 @@ public object Clone() return (EnumDefinitionCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -19276,13 +18566,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (Node)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -19325,11 +18613,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfNode", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "Node")] - #if !NET_STANDARD public partial class NodeCollection : List, ICloneable - #else - public partial class NodeCollection : List - #endif { #region Constructors /// @@ -19366,7 +18650,6 @@ public static explicit operator Node[](NodeCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -19374,7 +18657,6 @@ public object Clone() return (NodeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -19399,7 +18681,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class InstanceNode : Node + public partial class InstanceNode : Opc.Ua.Node { #region Constructors /// @@ -19473,16 +18755,14 @@ public override bool IsEqual(IEncodeable encodeable) } - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (InstanceNode)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -19506,7 +18786,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class TypeNode : Node + public partial class TypeNode : Opc.Ua.Node { #region Constructors /// @@ -19580,16 +18860,14 @@ public override bool IsEqual(IEncodeable encodeable) } - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (TypeNode)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -19613,7 +18891,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ObjectNode : InstanceNode + public partial class ObjectNode : Opc.Ua.InstanceNode { #region Constructors /// @@ -19699,16 +18977,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_eventNotifier, value.m_eventNotifier)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ObjectNode)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -19734,7 +19010,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ObjectTypeNode : TypeNode + public partial class ObjectTypeNode : Opc.Ua.TypeNode { #region Constructors /// @@ -19820,16 +19096,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_isAbstract, value.m_isAbstract)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ObjectTypeNode)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -19855,7 +19129,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class VariableNode : InstanceNode + public partial class VariableNode : Opc.Ua.InstanceNode { #region Constructors /// @@ -20049,16 +19323,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_historizing, value.m_historizing)) return false; if (!Utils.IsEqual(m_accessLevelEx, value.m_accessLevelEx)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (VariableNode)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -20100,7 +19372,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class VariableTypeNode : TypeNode + public partial class VariableTypeNode : Opc.Ua.TypeNode { #region Constructors /// @@ -20246,16 +19518,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_arrayDimensions, value.m_arrayDimensions)) return false; if (!Utils.IsEqual(m_isAbstract, value.m_isAbstract)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (VariableTypeNode)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -20289,7 +19559,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ReferenceTypeNode : TypeNode + public partial class ReferenceTypeNode : Opc.Ua.TypeNode { #region Constructors /// @@ -20399,16 +19669,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_symmetric, value.m_symmetric)) return false; if (!Utils.IsEqual(m_inverseName, value.m_inverseName)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ReferenceTypeNode)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -20438,7 +19706,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class MethodNode : InstanceNode + public partial class MethodNode : Opc.Ua.InstanceNode { #region Constructors /// @@ -20536,16 +19804,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_executable, value.m_executable)) return false; if (!Utils.IsEqual(m_userExecutable, value.m_userExecutable)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (MethodNode)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -20573,7 +19839,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ViewNode : InstanceNode + public partial class ViewNode : Opc.Ua.InstanceNode { #region Constructors /// @@ -20671,16 +19937,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_containsNoLoops, value.m_containsNoLoops)) return false; if (!Utils.IsEqual(m_eventNotifier, value.m_eventNotifier)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ViewNode)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -20708,7 +19972,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class DataTypeNode : TypeNode + public partial class DataTypeNode : Opc.Ua.TypeNode { #region Constructors /// @@ -20806,16 +20070,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_isAbstract, value.m_isAbstract)) return false; if (!Utils.IsEqual(m_dataTypeDefinition, value.m_dataTypeDefinition)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (DataTypeNode)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -20951,13 +20213,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ReferenceNode)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -20984,11 +20244,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfReferenceNode", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ReferenceNode")] - #if !NET_STANDARD public partial class ReferenceNodeCollection : List, ICloneable - #else - public partial class ReferenceNodeCollection : List - #endif { #region Constructors /// @@ -21025,7 +20281,6 @@ public static explicit operator ReferenceNode[](ReferenceNodeCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -21033,7 +20288,6 @@ public object Clone() return (ReferenceNodeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -21202,13 +20456,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (Argument)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -21239,11 +20491,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfArgument", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "Argument")] - #if !NET_STANDARD public partial class ArgumentCollection : List, ICloneable - #else - public partial class ArgumentCollection : List - #endif { #region Constructors /// @@ -21280,7 +20528,6 @@ public static explicit operator Argument[](ArgumentCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -21288,7 +20535,6 @@ public object Clone() return (ArgumentCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -21421,13 +20667,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (EnumValueType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -21454,11 +20698,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfEnumValueType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EnumValueType")] - #if !NET_STANDARD public partial class EnumValueTypeCollection : List, ICloneable - #else - public partial class EnumValueTypeCollection : List - #endif { #region Constructors /// @@ -21495,7 +20735,6 @@ public static explicit operator EnumValueType[](EnumValueTypeCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -21503,7 +20742,6 @@ public object Clone() return (EnumValueTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -21528,7 +20766,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class EnumField : EnumValueType + public partial class EnumField : Opc.Ua.EnumValueType { #region Constructors /// @@ -21614,16 +20852,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_name, value.m_name)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (EnumField)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -21646,11 +20882,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfEnumField", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EnumField")] - #if !NET_STANDARD public partial class EnumFieldCollection : List, ICloneable - #else - public partial class EnumFieldCollection : List - #endif { #region Constructors /// @@ -21687,7 +20919,6 @@ public static explicit operator EnumField[](EnumFieldCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -21695,7 +20926,6 @@ public object Clone() return (EnumFieldCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -21816,13 +21046,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (OptionSet)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -21847,11 +21075,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfOptionSet", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "OptionSet")] - #if !NET_STANDARD public partial class OptionSetCollection : List, ICloneable - #else - public partial class OptionSetCollection : List - #endif { #region Constructors /// @@ -21888,7 +21112,6 @@ public static explicit operator OptionSet[](OptionSetCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -21896,7 +21119,6 @@ public object Clone() return (OptionSetCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -22017,13 +21239,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (TimeZoneDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -22048,11 +21268,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfTimeZoneDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "TimeZoneDataType")] - #if !NET_STANDARD public partial class TimeZoneDataTypeCollection : List, ICloneable - #else - public partial class TimeZoneDataTypeCollection : List - #endif { #region Constructors /// @@ -22089,7 +21305,6 @@ public static explicit operator TimeZoneDataType[](TimeZoneDataTypeCollection va } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -22097,7 +21312,6 @@ public object Clone() return (TimeZoneDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -22317,13 +21531,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ApplicationDescription)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -22358,11 +21570,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfApplicationDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ApplicationDescription")] - #if !NET_STANDARD public partial class ApplicationDescriptionCollection : List, ICloneable - #else - public partial class ApplicationDescriptionCollection : List - #endif { #region Constructors /// @@ -22399,7 +21607,6 @@ public static explicit operator ApplicationDescription[](ApplicationDescriptionC } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -22407,7 +21614,6 @@ public object Clone() return (ApplicationDescriptionCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -22588,13 +21794,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (RequestHeader)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -22788,13 +21992,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ResponseHeader)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -22926,13 +22128,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ServiceFault)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -23126,13 +22326,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SessionlessInvokeRequestType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -23298,13 +22496,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SessionlessInvokeResponseType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -23490,13 +22686,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (FindServersRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -23648,13 +22842,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (FindServersResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -23814,13 +23006,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ServerOnNetwork)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -23849,11 +23039,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfServerOnNetwork", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ServerOnNetwork")] - #if !NET_STANDARD public partial class ServerOnNetworkCollection : List, ICloneable - #else - public partial class ServerOnNetworkCollection : List - #endif { #region Constructors /// @@ -23890,7 +23076,6 @@ public static explicit operator ServerOnNetwork[](ServerOnNetworkCollection valu } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -23898,7 +23083,6 @@ public object Clone() return (ServerOnNetworkCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -24067,13 +23251,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (FindServersOnNetworkRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -24237,13 +23419,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (FindServersOnNetworkResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -24459,13 +23639,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (UserTokenPolicy)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -24496,11 +23674,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfUserTokenPolicy", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "UserTokenPolicy")] - #if !NET_STANDARD public partial class UserTokenPolicyCollection : List, ICloneable - #else - public partial class UserTokenPolicyCollection : List - #endif { #region Constructors /// @@ -24537,7 +23711,6 @@ public static explicit operator UserTokenPolicy[](UserTokenPolicyCollection valu } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -24545,7 +23718,6 @@ public object Clone() return (UserTokenPolicyCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -24762,13 +23934,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (EndpointDescription)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -24805,11 +23975,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfEndpointDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EndpointDescription")] - #if !NET_STANDARD public partial class EndpointDescriptionCollection : List, ICloneable - #else - public partial class EndpointDescriptionCollection : List - #endif { #region Constructors /// @@ -24846,7 +24012,6 @@ public static explicit operator EndpointDescription[](EndpointDescriptionCollect } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -24854,7 +24019,6 @@ public object Clone() return (EndpointDescriptionCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -25035,13 +24199,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (GetEndpointsRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -25193,13 +24355,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (GetEndpointsResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -25419,13 +24579,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (RegisteredServer)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -25462,11 +24620,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfRegisteredServer", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "RegisteredServer")] - #if !NET_STANDARD public partial class RegisteredServerCollection : List, ICloneable - #else - public partial class RegisteredServerCollection : List - #endif { #region Constructors /// @@ -25503,7 +24657,6 @@ public static explicit operator RegisteredServer[](RegisteredServerCollection va } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -25511,7 +24664,6 @@ public object Clone() return (RegisteredServerCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -25656,13 +24808,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (RegisterServerRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -25786,13 +24936,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (RegisterServerResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -25891,13 +25039,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DiscoveryConfiguration)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -25921,7 +25067,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class MdnsDiscoveryConfiguration : DiscoveryConfiguration + public partial class MdnsDiscoveryConfiguration : Opc.Ua.DiscoveryConfiguration { #region Constructors /// @@ -26031,16 +25177,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_mdnsServerName, value.m_mdnsServerName)) return false; if (!Utils.IsEqual(m_serverCapabilities, value.m_serverCapabilities)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (MdnsDiscoveryConfiguration)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -26212,13 +25356,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (RegisterServer2Request)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -26392,13 +25534,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (RegisterServer2Response)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -26567,13 +25707,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ChannelSecurityToken)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -26761,13 +25899,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (OpenSecureChannelRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -26947,13 +26083,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (OpenSecureChannelResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -27081,13 +26215,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CloseSecureChannelRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -27209,13 +26341,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CloseSecureChannelResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -27337,13 +26467,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SignedSoftwareCertificate)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -27368,11 +26496,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfSignedSoftwareCertificate", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SignedSoftwareCertificate")] - #if !NET_STANDARD public partial class SignedSoftwareCertificateCollection : List, ICloneable - #else - public partial class SignedSoftwareCertificateCollection : List - #endif { #region Constructors /// @@ -27409,7 +26533,6 @@ public static explicit operator SignedSoftwareCertificate[](SignedSoftwareCertif } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -27417,7 +26540,6 @@ public object Clone() return (SignedSoftwareCertificateCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -27538,13 +26660,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SignatureData)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -27776,13 +26896,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CreateSessionRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -28064,13 +27182,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CreateSessionResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -28198,13 +27314,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (UserIdentityToken)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -28230,7 +27344,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class AnonymousIdentityToken : UserIdentityToken + public partial class AnonymousIdentityToken : Opc.Ua.UserIdentityToken { #region Constructors /// @@ -28304,16 +27418,14 @@ public override bool IsEqual(IEncodeable encodeable) } - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (AnonymousIdentityToken)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -28337,7 +27449,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class UserNameIdentityToken : UserIdentityToken + public partial class UserNameIdentityToken : Opc.Ua.UserIdentityToken { #region Constructors /// @@ -28447,16 +27559,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_password, value.m_password)) return false; if (!Utils.IsEqual(m_encryptionAlgorithm, value.m_encryptionAlgorithm)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (UserNameIdentityToken)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -28486,7 +27596,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class X509IdentityToken : UserIdentityToken + public partial class X509IdentityToken : Opc.Ua.UserIdentityToken { #region Constructors /// @@ -28572,16 +27682,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_certificateData, value.m_certificateData)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (X509IdentityToken)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -28607,7 +27715,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class IssuedIdentityToken : UserIdentityToken + public partial class IssuedIdentityToken : Opc.Ua.UserIdentityToken { #region Constructors /// @@ -28705,16 +27813,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_tokenData, value.m_tokenData)) return false; if (!Utils.IsEqual(m_encryptionAlgorithm, value.m_encryptionAlgorithm)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (IssuedIdentityToken)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -28946,13 +28052,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ActivateSessionRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -29144,13 +28248,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ActivateSessionResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -29290,13 +28392,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CloseSessionRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -29420,13 +28520,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CloseSessionResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -29560,13 +28658,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CancelRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -29702,13 +28798,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CancelResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -30019,13 +29113,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (NodeAttributes)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -30059,7 +29151,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ObjectAttributes : NodeAttributes + public partial class ObjectAttributes : Opc.Ua.NodeAttributes { #region Constructors /// @@ -30145,16 +29237,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_eventNotifier, value.m_eventNotifier)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ObjectAttributes)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -30180,7 +29270,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class VariableAttributes : NodeAttributes + public partial class VariableAttributes : Opc.Ua.NodeAttributes { #region Constructors /// @@ -30362,16 +29452,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_minimumSamplingInterval, value.m_minimumSamplingInterval)) return false; if (!Utils.IsEqual(m_historizing, value.m_historizing)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (VariableAttributes)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -30411,7 +29499,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class MethodAttributes : NodeAttributes + public partial class MethodAttributes : Opc.Ua.NodeAttributes { #region Constructors /// @@ -30509,16 +29597,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_executable, value.m_executable)) return false; if (!Utils.IsEqual(m_userExecutable, value.m_userExecutable)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (MethodAttributes)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -30546,7 +29632,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ObjectTypeAttributes : NodeAttributes + public partial class ObjectTypeAttributes : Opc.Ua.NodeAttributes { #region Constructors /// @@ -30632,16 +29718,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_isAbstract, value.m_isAbstract)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ObjectTypeAttributes)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -30667,7 +29751,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class VariableTypeAttributes : NodeAttributes + public partial class VariableTypeAttributes : Opc.Ua.NodeAttributes { #region Constructors /// @@ -30813,16 +29897,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_arrayDimensions, value.m_arrayDimensions)) return false; if (!Utils.IsEqual(m_isAbstract, value.m_isAbstract)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (VariableTypeAttributes)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -30856,7 +29938,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ReferenceTypeAttributes : NodeAttributes + public partial class ReferenceTypeAttributes : Opc.Ua.NodeAttributes { #region Constructors /// @@ -30966,16 +30048,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_symmetric, value.m_symmetric)) return false; if (!Utils.IsEqual(m_inverseName, value.m_inverseName)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ReferenceTypeAttributes)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -31005,7 +30085,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class DataTypeAttributes : NodeAttributes + public partial class DataTypeAttributes : Opc.Ua.NodeAttributes { #region Constructors /// @@ -31091,16 +30171,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_isAbstract, value.m_isAbstract)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (DataTypeAttributes)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -31126,7 +30204,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ViewAttributes : NodeAttributes + public partial class ViewAttributes : Opc.Ua.NodeAttributes { #region Constructors /// @@ -31224,16 +30302,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_containsNoLoops, value.m_containsNoLoops)) return false; if (!Utils.IsEqual(m_eventNotifier, value.m_eventNotifier)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ViewAttributes)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -31357,13 +30433,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (GenericAttributeValue)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -31388,11 +30462,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfGenericAttributeValue", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "GenericAttributeValue")] - #if !NET_STANDARD public partial class GenericAttributeValueCollection : List, ICloneable - #else - public partial class GenericAttributeValueCollection : List - #endif { #region Constructors /// @@ -31429,7 +30499,6 @@ public static explicit operator GenericAttributeValue[](GenericAttributeValueCol } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -31437,7 +30506,6 @@ public object Clone() return (GenericAttributeValueCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -31462,7 +30530,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class GenericAttributes : NodeAttributes + public partial class GenericAttributes : Opc.Ua.NodeAttributes { #region Constructors /// @@ -31560,16 +30628,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_attributeValues, value.m_attributeValues)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (GenericAttributes)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -31751,13 +30817,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (AddNodesItem)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -31792,11 +30856,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfAddNodesItem", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "AddNodesItem")] - #if !NET_STANDARD public partial class AddNodesItemCollection : List, ICloneable - #else - public partial class AddNodesItemCollection : List - #endif { #region Constructors /// @@ -31833,7 +30893,6 @@ public static explicit operator AddNodesItem[](AddNodesItemCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -31841,7 +30900,6 @@ public object Clone() return (AddNodesItemCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -31962,13 +31020,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (AddNodesResult)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -31993,11 +31049,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfAddNodesResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "AddNodesResult")] - #if !NET_STANDARD public partial class AddNodesResultCollection : List, ICloneable - #else - public partial class AddNodesResultCollection : List - #endif { #region Constructors /// @@ -32034,7 +31086,6 @@ public static explicit operator AddNodesResult[](AddNodesResultCollection values } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -32042,7 +31093,6 @@ public object Clone() return (AddNodesResultCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -32187,13 +31237,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (AddNodesRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -32365,13 +31413,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (AddNodesResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -32545,13 +31591,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (AddReferencesItem)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -32584,11 +31628,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfAddReferencesItem", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "AddReferencesItem")] - #if !NET_STANDARD public partial class AddReferencesItemCollection : List, ICloneable - #else - public partial class AddReferencesItemCollection : List - #endif { #region Constructors /// @@ -32625,7 +31665,6 @@ public static explicit operator AddReferencesItem[](AddReferencesItemCollection } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -32633,7 +31672,6 @@ public object Clone() return (AddReferencesItemCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -32778,13 +31816,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (AddReferencesRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -32956,13 +31992,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (AddReferencesResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -33088,13 +32122,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DeleteNodesItem)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -33119,11 +32151,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDeleteNodesItem", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DeleteNodesItem")] - #if !NET_STANDARD public partial class DeleteNodesItemCollection : List, ICloneable - #else - public partial class DeleteNodesItemCollection : List - #endif { #region Constructors /// @@ -33160,7 +32188,6 @@ public static explicit operator DeleteNodesItem[](DeleteNodesItemCollection valu } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -33168,7 +32195,6 @@ public object Clone() return (DeleteNodesItemCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -33313,13 +32339,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DeleteNodesRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -33491,13 +32515,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DeleteNodesResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -33659,13 +32681,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DeleteReferencesItem)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -33696,11 +32716,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfDeleteReferencesItem", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DeleteReferencesItem")] - #if !NET_STANDARD public partial class DeleteReferencesItemCollection : List, ICloneable - #else - public partial class DeleteReferencesItemCollection : List - #endif { #region Constructors /// @@ -33737,7 +32753,6 @@ public static explicit operator DeleteReferencesItem[](DeleteReferencesItemColle } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -33745,7 +32760,6 @@ public object Clone() return (DeleteReferencesItemCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -33890,13 +32904,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DeleteReferencesRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -34068,13 +33080,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DeleteReferencesResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -34358,13 +33368,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ViewDescription)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -34538,13 +33546,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (BrowseDescription)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -34577,11 +33583,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfBrowseDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrowseDescription")] - #if !NET_STANDARD public partial class BrowseDescriptionCollection : List, ICloneable - #else - public partial class BrowseDescriptionCollection : List - #endif { #region Constructors /// @@ -34618,7 +33620,6 @@ public static explicit operator BrowseDescription[](BrowseDescriptionCollection } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -34626,7 +33627,6 @@ public object Clone() return (BrowseDescriptionCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -34858,13 +33858,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ReferenceDescription)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -34899,11 +33897,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfReferenceDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ReferenceDescription")] - #if !NET_STANDARD public partial class ReferenceDescriptionCollection : List, ICloneable - #else - public partial class ReferenceDescriptionCollection : List - #endif { #region Constructors /// @@ -34940,7 +33934,6 @@ public static explicit operator ReferenceDescription[](ReferenceDescriptionColle } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -34948,7 +33941,6 @@ public object Clone() return (ReferenceDescriptionCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -35093,13 +34085,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (BrowseResult)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -35126,11 +34116,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfBrowseResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrowseResult")] - #if !NET_STANDARD public partial class BrowseResultCollection : List, ICloneable - #else - public partial class BrowseResultCollection : List - #endif { #region Constructors /// @@ -35167,7 +34153,6 @@ public static explicit operator BrowseResult[](BrowseResultCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -35175,7 +34160,6 @@ public object Clone() return (BrowseResultCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -35356,13 +34340,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (BrowseRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -35538,13 +34520,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (BrowseResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -35706,13 +34686,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (BrowseNextRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -35886,13 +34864,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (BrowseNextResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -36042,13 +35018,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (RelativePathElement)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -36077,11 +35051,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfRelativePathElement", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "RelativePathElement")] - #if !NET_STANDARD public partial class RelativePathElementCollection : List, ICloneable - #else - public partial class RelativePathElementCollection : List - #endif { #region Constructors /// @@ -36118,7 +35088,6 @@ public static explicit operator RelativePathElement[](RelativePathElementCollect } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -36126,7 +35095,6 @@ public object Clone() return (RelativePathElementCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -36247,13 +35215,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (RelativePath)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -36387,13 +35353,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (BrowsePath)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -36418,11 +35382,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfBrowsePath", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrowsePath")] - #if !NET_STANDARD public partial class BrowsePathCollection : List, ICloneable - #else - public partial class BrowsePathCollection : List - #endif { #region Constructors /// @@ -36459,7 +35419,6 @@ public static explicit operator BrowsePath[](BrowsePathCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -36467,7 +35426,6 @@ public object Clone() return (BrowsePathCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -36588,13 +35546,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (BrowsePathTarget)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -36619,11 +35575,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfBrowsePathTarget", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrowsePathTarget")] - #if !NET_STANDARD public partial class BrowsePathTargetCollection : List, ICloneable - #else - public partial class BrowsePathTargetCollection : List - #endif { #region Constructors /// @@ -36660,7 +35612,6 @@ public static explicit operator BrowsePathTarget[](BrowsePathTargetCollection va } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -36668,7 +35619,6 @@ public object Clone() return (BrowsePathTargetCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -36801,13 +35751,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (BrowsePathResult)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -36832,11 +35780,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfBrowsePathResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrowsePathResult")] - #if !NET_STANDARD public partial class BrowsePathResultCollection : List, ICloneable - #else - public partial class BrowsePathResultCollection : List - #endif { #region Constructors /// @@ -36873,7 +35817,6 @@ public static explicit operator BrowsePathResult[](BrowsePathResultCollection va } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -36881,7 +35824,6 @@ public object Clone() return (BrowsePathResultCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -37026,13 +35968,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (TranslateBrowsePathsToNodeIdsRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -37204,13 +36144,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (TranslateBrowsePathsToNodeIdsResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -37360,13 +36298,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (RegisterNodesRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -37514,13 +36450,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (RegisterNodesResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -37668,13 +36602,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (UnregisterNodesRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -37798,13 +36730,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (UnregisterNodesResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -38010,13 +36940,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (EndpointConfiguration)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -38055,11 +36983,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfEndpointConfiguration", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EndpointConfiguration")] - #if !NET_STANDARD public partial class EndpointConfigurationCollection : List, ICloneable - #else - public partial class EndpointConfigurationCollection : List - #endif { #region Constructors /// @@ -38096,7 +37020,6 @@ public static explicit operator EndpointConfiguration[](EndpointConfigurationCol } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -38104,7 +37027,6 @@ public object Clone() return (EndpointConfigurationCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -38249,13 +37171,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (QueryDataDescription)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -38282,11 +37202,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfQueryDataDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "QueryDataDescription")] - #if !NET_STANDARD public partial class QueryDataDescriptionCollection : List, ICloneable - #else - public partial class QueryDataDescriptionCollection : List - #endif { #region Constructors /// @@ -38323,7 +37239,6 @@ public static explicit operator QueryDataDescription[](QueryDataDescriptionColle } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -38331,7 +37246,6 @@ public object Clone() return (QueryDataDescriptionCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -38476,13 +37390,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (NodeTypeDescription)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -38509,11 +37421,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfNodeTypeDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "NodeTypeDescription")] - #if !NET_STANDARD public partial class NodeTypeDescriptionCollection : List, ICloneable - #else - public partial class NodeTypeDescriptionCollection : List - #endif { #region Constructors /// @@ -38550,7 +37458,6 @@ public static explicit operator NodeTypeDescription[](NodeTypeDescriptionCollect } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -38558,7 +37465,6 @@ public object Clone() return (NodeTypeDescriptionCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -38786,13 +37692,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (QueryDataSet)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -38819,11 +37723,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfQueryDataSet", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "QueryDataSet")] - #if !NET_STANDARD public partial class QueryDataSetCollection : List, ICloneable - #else - public partial class QueryDataSetCollection : List - #endif { #region Constructors /// @@ -38860,7 +37760,6 @@ public static explicit operator QueryDataSet[](QueryDataSetCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -38868,7 +37767,6 @@ public object Clone() return (QueryDataSetCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -39025,13 +37923,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (NodeReference)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -39060,11 +37956,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfNodeReference", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "NodeReference")] - #if !NET_STANDARD public partial class NodeReferenceCollection : List, ICloneable - #else - public partial class NodeReferenceCollection : List - #endif { #region Constructors /// @@ -39101,7 +37993,6 @@ public static explicit operator NodeReference[](NodeReferenceCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -39109,7 +38000,6 @@ public object Clone() return (NodeReferenceCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -39242,13 +38132,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ContentFilterElement)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -39273,11 +38161,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfContentFilterElement", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ContentFilterElement")] - #if !NET_STANDARD public partial class ContentFilterElementCollection : List, ICloneable - #else - public partial class ContentFilterElementCollection : List - #endif { #region Constructors /// @@ -39314,7 +38198,6 @@ public static explicit operator ContentFilterElement[](ContentFilterElementColle } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -39322,7 +38205,6 @@ public object Clone() return (ContentFilterElementCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -39443,13 +38325,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ContentFilter)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -39472,11 +38352,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfContentFilter", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ContentFilter")] - #if !NET_STANDARD public partial class ContentFilterCollection : List, ICloneable - #else - public partial class ContentFilterCollection : List - #endif { #region Constructors /// @@ -39513,7 +38389,6 @@ public static explicit operator ContentFilter[](ContentFilterCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -39521,7 +38396,6 @@ public object Clone() return (ContentFilterCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -39619,13 +38493,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (FilterOperand)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -39649,7 +38521,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ElementOperand : FilterOperand + public partial class ElementOperand : Opc.Ua.FilterOperand { #region Constructors /// @@ -39735,16 +38607,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_index, value.m_index)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ElementOperand)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -39770,7 +38640,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class LiteralOperand : FilterOperand + public partial class LiteralOperand : Opc.Ua.FilterOperand { #region Constructors /// @@ -39856,16 +38726,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_value, value.m_value)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (LiteralOperand)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -39891,7 +38759,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class AttributeOperand : FilterOperand + public partial class AttributeOperand : Opc.Ua.FilterOperand { #region Constructors /// @@ -40037,16 +38905,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_attributeId, value.m_attributeId)) return false; if (!Utils.IsEqual(m_indexRange, value.m_indexRange)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (AttributeOperand)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -40080,7 +38946,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class SimpleAttributeOperand : FilterOperand + public partial class SimpleAttributeOperand : Opc.Ua.FilterOperand { #region Constructors /// @@ -40214,16 +39080,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_attributeId, value.m_attributeId)) return false; if (!Utils.IsEqual(m_indexRange, value.m_indexRange)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (SimpleAttributeOperand)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -40252,11 +39116,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfSimpleAttributeOperand", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SimpleAttributeOperand")] - #if !NET_STANDARD public partial class SimpleAttributeOperandCollection : List, ICloneable - #else - public partial class SimpleAttributeOperandCollection : List - #endif { #region Constructors /// @@ -40293,7 +39153,6 @@ public static explicit operator SimpleAttributeOperand[](SimpleAttributeOperandC } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -40301,7 +39160,6 @@ public object Clone() return (SimpleAttributeOperandCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -40458,13 +39316,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ContentFilterElementResult)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -40491,11 +39347,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfContentFilterElementResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ContentFilterElementResult")] - #if !NET_STANDARD public partial class ContentFilterElementResultCollection : List, ICloneable - #else - public partial class ContentFilterElementResultCollection : List - #endif { #region Constructors /// @@ -40532,7 +39384,6 @@ public static explicit operator ContentFilterElementResult[](ContentFilterElemen } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -40540,7 +39391,6 @@ public object Clone() return (ContentFilterElementResultCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -40685,13 +39535,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ContentFilterResult)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -40851,13 +39699,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ParsingResult)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -40884,11 +39730,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfParsingResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ParsingResult")] - #if !NET_STANDARD public partial class ParsingResultCollection : List, ICloneable - #else - public partial class ParsingResultCollection : List - #endif { #region Constructors /// @@ -40925,7 +39767,6 @@ public static explicit operator ParsingResult[](ParsingResultCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -40933,7 +39774,6 @@ public object Clone() return (ParsingResultCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -41150,13 +39990,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (QueryFirstRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -41396,13 +40234,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (QueryFirstResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -41558,13 +40394,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (QueryNextRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -41726,13 +40560,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (QueryNextResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -41913,13 +40745,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ReadValueId)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -41948,11 +40778,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfReadValueId", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ReadValueId")] - #if !NET_STANDARD public partial class ReadValueIdCollection : List, ICloneable - #else - public partial class ReadValueIdCollection : List - #endif { #region Constructors /// @@ -41989,7 +40815,6 @@ public static explicit operator ReadValueId[](ReadValueIdCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -41997,7 +40822,6 @@ public object Clone() return (ReadValueIdCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -42166,13 +40990,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ReadRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -42348,13 +41170,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ReadResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -42504,13 +41324,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (HistoryReadValueId)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -42539,11 +41357,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfHistoryReadValueId", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "HistoryReadValueId")] - #if !NET_STANDARD public partial class HistoryReadValueIdCollection : List, ICloneable - #else - public partial class HistoryReadValueIdCollection : List - #endif { #region Constructors /// @@ -42580,7 +41394,6 @@ public static explicit operator HistoryReadValueId[](HistoryReadValueIdCollectio } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -42588,7 +41401,6 @@ public object Clone() return (HistoryReadValueIdCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -42721,13 +41533,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (HistoryReadResult)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -42754,11 +41564,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfHistoryReadResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "HistoryReadResult")] - #if !NET_STANDARD public partial class HistoryReadResultCollection : List, ICloneable - #else - public partial class HistoryReadResultCollection : List - #endif { #region Constructors /// @@ -42795,7 +41601,6 @@ public static explicit operator HistoryReadResult[](HistoryReadResultCollection } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -42803,7 +41608,6 @@ public object Clone() return (HistoryReadResultCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -42901,13 +41705,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (HistoryReadDetails)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -42931,7 +41733,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ReadEventDetails : HistoryReadDetails + public partial class ReadEventDetails : Opc.Ua.HistoryReadDetails { #region Constructors /// @@ -43065,16 +41867,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_endTime, value.m_endTime)) return false; if (!Utils.IsEqual(m_filter, value.m_filter)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ReadEventDetails)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -43106,7 +41906,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ReadRawModifiedDetails : HistoryReadDetails + public partial class ReadRawModifiedDetails : Opc.Ua.HistoryReadDetails { #region Constructors /// @@ -43240,16 +42040,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_numValuesPerNode, value.m_numValuesPerNode)) return false; if (!Utils.IsEqual(m_returnBounds, value.m_returnBounds)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ReadRawModifiedDetails)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -43283,7 +42081,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ReadProcessedDetails : HistoryReadDetails + public partial class ReadProcessedDetails : Opc.Ua.HistoryReadDetails { #region Constructors /// @@ -43441,16 +42239,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_aggregateType, value.m_aggregateType)) return false; if (!Utils.IsEqual(m_aggregateConfiguration, value.m_aggregateConfiguration)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ReadProcessedDetails)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -43484,7 +42280,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ReadAtTimeDetails : HistoryReadDetails + public partial class ReadAtTimeDetails : Opc.Ua.HistoryReadDetails { #region Constructors /// @@ -43594,16 +42390,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_reqTimes, value.m_reqTimes)) return false; if (!Utils.IsEqual(m_useSimpleBounds, value.m_useSimpleBounds)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ReadAtTimeDetails)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -43631,7 +42425,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class ReadAnnotationDataDetails : HistoryReadDetails + public partial class ReadAnnotationDataDetails : Opc.Ua.HistoryReadDetails { #region Constructors /// @@ -43729,16 +42523,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_reqTimes, value.m_reqTimes)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (ReadAnnotationDataDetails)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -43860,13 +42652,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (HistoryData)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -44000,13 +42790,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ModificationInfo)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -44033,11 +42821,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfModificationInfo", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ModificationInfo")] - #if !NET_STANDARD public partial class ModificationInfoCollection : List, ICloneable - #else - public partial class ModificationInfoCollection : List - #endif { #region Constructors /// @@ -44074,7 +42858,6 @@ public static explicit operator ModificationInfo[](ModificationInfoCollection va } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -44082,7 +42865,6 @@ public object Clone() return (ModificationInfoCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -44107,7 +42889,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class HistoryModifiedData : HistoryData + public partial class HistoryModifiedData : Opc.Ua.HistoryData { #region Constructors /// @@ -44205,16 +42987,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_modificationInfos, value.m_modificationInfos)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (HistoryModifiedData)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -44336,13 +43116,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (HistoryEvent)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -44524,13 +43302,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (HistoryReadRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -44708,13 +43484,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (HistoryReadResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -44864,13 +43638,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (WriteValue)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -44899,11 +43671,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfWriteValue", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "WriteValue")] - #if !NET_STANDARD public partial class WriteValueCollection : List, ICloneable - #else - public partial class WriteValueCollection : List - #endif { #region Constructors /// @@ -44940,7 +43708,6 @@ public static explicit operator WriteValue[](WriteValueCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -44948,7 +43715,6 @@ public object Clone() return (WriteValueCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -45093,13 +43859,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (WriteRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -45271,13 +44035,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (WriteResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -45391,13 +44153,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (HistoryUpdateDetails)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -45477,7 +44237,7 @@ public enum PerformUpdateType /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class UpdateDataDetails : HistoryUpdateDetails + public partial class UpdateDataDetails : Opc.Ua.HistoryUpdateDetails { #region Constructors /// @@ -45587,16 +44347,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_performInsertReplace, value.m_performInsertReplace)) return false; if (!Utils.IsEqual(m_updateValues, value.m_updateValues)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (UpdateDataDetails)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -45624,7 +44382,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class UpdateStructureDataDetails : HistoryUpdateDetails + public partial class UpdateStructureDataDetails : Opc.Ua.HistoryUpdateDetails { #region Constructors /// @@ -45734,16 +44492,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_performInsertReplace, value.m_performInsertReplace)) return false; if (!Utils.IsEqual(m_updateValues, value.m_updateValues)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (UpdateStructureDataDetails)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -45771,7 +44527,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class UpdateEventDetails : HistoryUpdateDetails + public partial class UpdateEventDetails : Opc.Ua.HistoryUpdateDetails { #region Constructors /// @@ -45905,16 +44661,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_filter, value.m_filter)) return false; if (!Utils.IsEqual(m_eventData, value.m_eventData)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (UpdateEventDetails)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -45944,7 +44698,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class DeleteRawModifiedDetails : HistoryUpdateDetails + public partial class DeleteRawModifiedDetails : Opc.Ua.HistoryUpdateDetails { #region Constructors /// @@ -46054,16 +44808,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_startTime, value.m_startTime)) return false; if (!Utils.IsEqual(m_endTime, value.m_endTime)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (DeleteRawModifiedDetails)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -46093,7 +44845,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class DeleteAtTimeDetails : HistoryUpdateDetails + public partial class DeleteAtTimeDetails : Opc.Ua.HistoryUpdateDetails { #region Constructors /// @@ -46191,16 +44943,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_reqTimes, value.m_reqTimes)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (DeleteAtTimeDetails)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -46226,7 +44976,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class DeleteEventDetails : HistoryUpdateDetails + public partial class DeleteEventDetails : Opc.Ua.HistoryUpdateDetails { #region Constructors /// @@ -46324,16 +45074,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_eventIds, value.m_eventIds)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (DeleteEventDetails)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -46491,13 +45239,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (HistoryUpdateResult)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -46524,11 +45270,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfHistoryUpdateResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "HistoryUpdateResult")] - #if !NET_STANDARD public partial class HistoryUpdateResultCollection : List, ICloneable - #else - public partial class HistoryUpdateResultCollection : List - #endif { #region Constructors /// @@ -46565,7 +45307,6 @@ public static explicit operator HistoryUpdateResult[](HistoryUpdateResultCollect } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -46573,7 +45314,6 @@ public object Clone() return (HistoryUpdateResultCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -46718,13 +45458,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (HistoryUpdateRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -46896,13 +45634,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (HistoryUpdateResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -47052,13 +45788,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CallMethodRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -47085,11 +45819,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfCallMethodRequest", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "CallMethodRequest")] - #if !NET_STANDARD public partial class CallMethodRequestCollection : List, ICloneable - #else - public partial class CallMethodRequestCollection : List - #endif { #region Constructors /// @@ -47126,7 +45856,6 @@ public static explicit operator CallMethodRequest[](CallMethodRequestCollection } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -47134,7 +45863,6 @@ public object Clone() return (CallMethodRequestCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -47315,13 +46043,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CallMethodResult)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -47350,11 +46076,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfCallMethodResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "CallMethodResult")] - #if !NET_STANDARD public partial class CallMethodResultCollection : List, ICloneable - #else - public partial class CallMethodResultCollection : List - #endif { #region Constructors /// @@ -47391,7 +46113,6 @@ public static explicit operator CallMethodResult[](CallMethodResultCollection va } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -47399,7 +46120,6 @@ public object Clone() return (CallMethodResultCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -47544,13 +46264,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CallRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -47722,13 +46440,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CallResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -47900,13 +46616,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (MonitoringFilter)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -47930,7 +46644,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class DataChangeFilter : MonitoringFilter + public partial class DataChangeFilter : Opc.Ua.MonitoringFilter { #region Constructors /// @@ -48040,16 +46754,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_deadbandType, value.m_deadbandType)) return false; if (!Utils.IsEqual(m_deadbandValue, value.m_deadbandValue)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (DataChangeFilter)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -48079,7 +46791,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class EventFilter : MonitoringFilter + public partial class EventFilter : Opc.Ua.MonitoringFilter { #region Constructors /// @@ -48201,16 +46913,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_selectClauses, value.m_selectClauses)) return false; if (!Utils.IsEqual(m_whereClause, value.m_whereClause)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (EventFilter)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -48370,13 +47080,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (AggregateConfiguration)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -48410,7 +47118,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class AggregateFilter : MonitoringFilter + public partial class AggregateFilter : Opc.Ua.MonitoringFilter { #region Constructors /// @@ -48544,16 +47252,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_processingInterval, value.m_processingInterval)) return false; if (!Utils.IsEqual(m_aggregateConfiguration, value.m_aggregateConfiguration)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (AggregateFilter)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -48658,13 +47364,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (MonitoringFilterResult)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -48688,7 +47392,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class EventFilterResult : MonitoringFilterResult + public partial class EventFilterResult : Opc.Ua.MonitoringFilterResult { #region Constructors /// @@ -48834,16 +47538,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_selectClauseDiagnosticInfos, value.m_selectClauseDiagnosticInfos)) return false; if (!Utils.IsEqual(m_whereClauseResult, value.m_whereClauseResult)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (EventFilterResult)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -48873,7 +47575,7 @@ public override object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class AggregateFilterResult : MonitoringFilterResult + public partial class AggregateFilterResult : Opc.Ua.MonitoringFilterResult { #region Constructors /// @@ -48995,16 +47697,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_revisedProcessingInterval, value.m_revisedProcessingInterval)) return false; if (!Utils.IsEqual(m_revisedAggregateConfiguration, value.m_revisedAggregateConfiguration)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (AggregateFilterResult)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -49166,13 +47866,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (MonitoringParameters)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -49338,13 +48036,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (MonitoredItemCreateRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -49371,11 +48067,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfMonitoredItemCreateRequest", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "MonitoredItemCreateRequest")] - #if !NET_STANDARD public partial class MonitoredItemCreateRequestCollection : List, ICloneable - #else - public partial class MonitoredItemCreateRequestCollection : List - #endif { #region Constructors /// @@ -49412,7 +48104,6 @@ public static explicit operator MonitoredItemCreateRequest[](MonitoredItemCreate } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -49420,7 +48111,6 @@ public object Clone() return (MonitoredItemCreateRequestCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -49577,13 +48267,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (MonitoredItemCreateResult)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -49614,11 +48302,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfMonitoredItemCreateResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "MonitoredItemCreateResult")] - #if !NET_STANDARD public partial class MonitoredItemCreateResultCollection : List, ICloneable - #else - public partial class MonitoredItemCreateResultCollection : List - #endif { #region Constructors /// @@ -49655,7 +48339,6 @@ public static explicit operator MonitoredItemCreateResult[](MonitoredItemCreateR } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -49663,7 +48346,6 @@ public object Clone() return (MonitoredItemCreateResultCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -49832,13 +48514,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CreateMonitoredItemsRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -50014,13 +48694,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CreateMonitoredItemsResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -50158,13 +48836,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (MonitoredItemModifyRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -50189,11 +48865,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfMonitoredItemModifyRequest", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "MonitoredItemModifyRequest")] - #if !NET_STANDARD public partial class MonitoredItemModifyRequestCollection : List, ICloneable - #else - public partial class MonitoredItemModifyRequestCollection : List - #endif { #region Constructors /// @@ -50230,7 +48902,6 @@ public static explicit operator MonitoredItemModifyRequest[](MonitoredItemModify } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -50238,7 +48909,6 @@ public object Clone() return (MonitoredItemModifyRequestCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -50383,13 +49053,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (MonitoredItemModifyResult)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -50418,11 +49086,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfMonitoredItemModifyResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "MonitoredItemModifyResult")] - #if !NET_STANDARD public partial class MonitoredItemModifyResultCollection : List, ICloneable - #else - public partial class MonitoredItemModifyResultCollection : List - #endif { #region Constructors /// @@ -50459,7 +49123,6 @@ public static explicit operator MonitoredItemModifyResult[](MonitoredItemModifyR } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -50467,7 +49130,6 @@ public object Clone() return (MonitoredItemModifyResultCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -50636,13 +49298,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ModifyMonitoredItemsRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -50818,13 +49478,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ModifyMonitoredItemsResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -50998,13 +49656,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SetMonitoringModeRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -51180,13 +49836,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SetMonitoringModeResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -51384,13 +50038,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SetTriggeringRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -51616,13 +50268,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SetTriggeringResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -51788,13 +50438,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DeleteMonitoredItemsRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -51968,13 +50616,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DeleteMonitoredItemsResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -52172,13 +50818,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CreateSubscriptionRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -52360,13 +51004,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (CreateSubscriptionResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -52568,13 +51210,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ModifySubscriptionRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -52744,13 +51384,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ModifySubscriptionResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -52914,13 +51552,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SetPublishingModeRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -53094,13 +51730,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SetPublishingModeResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -53250,13 +51884,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (NotificationMessage)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -53359,13 +51991,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (NotificationData)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -53389,7 +52019,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class DataChangeNotification : NotificationData + public partial class DataChangeNotification : Opc.Ua.NotificationData { #region Constructors /// @@ -53511,16 +52141,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_monitoredItems, value.m_monitoredItems)) return false; if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (DataChangeNotification)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -53644,13 +52272,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (MonitoredItemNotification)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -53675,11 +52301,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfMonitoredItemNotification", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "MonitoredItemNotification")] - #if !NET_STANDARD public partial class MonitoredItemNotificationCollection : List, ICloneable - #else - public partial class MonitoredItemNotificationCollection : List - #endif { #region Constructors /// @@ -53716,7 +52338,6 @@ public static explicit operator MonitoredItemNotification[](MonitoredItemNotific } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -53724,7 +52345,6 @@ public object Clone() return (MonitoredItemNotificationCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -53749,7 +52369,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class EventNotificationList : NotificationData + public partial class EventNotificationList : Opc.Ua.NotificationData { #region Constructors /// @@ -53847,16 +52467,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!base.IsEqual(encodeable)) return false; if (!Utils.IsEqual(m_events, value.m_events)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (EventNotificationList)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -53990,13 +52608,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (EventFieldList)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -54021,11 +52637,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfEventFieldList", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EventFieldList")] - #if !NET_STANDARD public partial class EventFieldListCollection : List, ICloneable - #else - public partial class EventFieldListCollection : List - #endif { #region Constructors /// @@ -54062,7 +52674,6 @@ public static explicit operator EventFieldList[](EventFieldListCollection values } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -54070,7 +52681,6 @@ public object Clone() return (EventFieldListCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -54191,13 +52801,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (HistoryEventFieldList)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -54220,11 +52828,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfHistoryEventFieldList", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "HistoryEventFieldList")] - #if !NET_STANDARD public partial class HistoryEventFieldListCollection : List, ICloneable - #else - public partial class HistoryEventFieldListCollection : List - #endif { #region Constructors /// @@ -54261,7 +52865,6 @@ public static explicit operator HistoryEventFieldList[](HistoryEventFieldListCol } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -54269,7 +52872,6 @@ public object Clone() return (HistoryEventFieldListCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -54294,7 +52896,7 @@ public object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)] - public partial class StatusChangeNotification : NotificationData + public partial class StatusChangeNotification : Opc.Ua.NotificationData { #region Constructors /// @@ -54392,16 +52994,14 @@ public override bool IsEqual(IEncodeable encodeable) if (!Utils.IsEqual(m_status, value.m_status)) return false; if (!Utils.IsEqual(m_diagnosticInfo, value.m_diagnosticInfo)) return false; - return true; + return base.IsEqual(encodeable); } - #if !NET_STANDARD /// public override object Clone() { return (StatusChangeNotification)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -54525,13 +53125,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SubscriptionAcknowledgement)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -54556,11 +53154,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfSubscriptionAcknowledgement", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SubscriptionAcknowledgement")] - #if !NET_STANDARD public partial class SubscriptionAcknowledgementCollection : List, ICloneable - #else - public partial class SubscriptionAcknowledgementCollection : List - #endif { #region Constructors /// @@ -54597,7 +53191,6 @@ public static explicit operator SubscriptionAcknowledgement[](SubscriptionAcknow } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -54605,7 +53198,6 @@ public object Clone() return (SubscriptionAcknowledgementCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -54750,13 +53342,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (PublishRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -55000,13 +53590,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (PublishResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -55164,13 +53752,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (RepublishRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -55320,13 +53906,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (RepublishResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -55462,13 +54046,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (TransferResult)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -55493,11 +54075,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfTransferResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "TransferResult")] - #if !NET_STANDARD public partial class TransferResultCollection : List, ICloneable - #else - public partial class TransferResultCollection : List - #endif { #region Constructors /// @@ -55534,7 +54112,6 @@ public static explicit operator TransferResult[](TransferResultCollection values } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -55542,7 +54119,6 @@ public object Clone() return (TransferResultCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -55699,13 +54275,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (TransferSubscriptionsRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -55879,13 +54453,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (TransferSubscriptionsResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -56035,13 +54607,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DeleteSubscriptionsRequest)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -56213,13 +54783,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DeleteSubscriptionsResponse)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -56393,13 +54961,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (BuildInfo)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -56621,13 +55187,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (RedundantServerDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -56654,11 +55218,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfRedundantServerDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "RedundantServerDataType")] - #if !NET_STANDARD public partial class RedundantServerDataTypeCollection : List, ICloneable - #else - public partial class RedundantServerDataTypeCollection : List - #endif { #region Constructors /// @@ -56695,7 +55255,6 @@ public static explicit operator RedundantServerDataType[](RedundantServerDataTyp } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -56703,7 +55262,6 @@ public object Clone() return (RedundantServerDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -56824,13 +55382,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (EndpointUrlListDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -56853,11 +55409,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfEndpointUrlListDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EndpointUrlListDataType")] - #if !NET_STANDARD public partial class EndpointUrlListDataTypeCollection : List, ICloneable - #else - public partial class EndpointUrlListDataTypeCollection : List - #endif { #region Constructors /// @@ -56894,7 +55446,6 @@ public static explicit operator EndpointUrlListDataType[](EndpointUrlListDataTyp } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -56902,7 +55453,6 @@ public object Clone() return (EndpointUrlListDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -57035,13 +55585,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (NetworkGroupDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -57066,11 +55614,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfNetworkGroupDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "NetworkGroupDataType")] - #if !NET_STANDARD public partial class NetworkGroupDataTypeCollection : List, ICloneable - #else - public partial class NetworkGroupDataTypeCollection : List - #endif { #region Constructors /// @@ -57107,7 +55651,6 @@ public static explicit operator NetworkGroupDataType[](NetworkGroupDataTypeColle } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -57115,7 +55658,6 @@ public object Clone() return (NetworkGroupDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -57260,13 +55802,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SamplingIntervalDiagnosticsDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -57295,11 +55835,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfSamplingIntervalDiagnosticsDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SamplingIntervalDiagnosticsDataType")] - #if !NET_STANDARD public partial class SamplingIntervalDiagnosticsDataTypeCollection : List, ICloneable - #else - public partial class SamplingIntervalDiagnosticsDataTypeCollection : List - #endif { #region Constructors /// @@ -57336,7 +55872,6 @@ public static explicit operator SamplingIntervalDiagnosticsDataType[](SamplingIn } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -57344,7 +55879,6 @@ public object Clone() return (SamplingIntervalDiagnosticsDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -57585,13 +56119,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ServerDiagnosticsSummaryDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -57795,13 +56327,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ServerStatusDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -58797,13 +57327,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SessionDiagnosticsDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -58910,11 +57438,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfSessionDiagnosticsDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SessionDiagnosticsDataType")] - #if !NET_STANDARD public partial class SessionDiagnosticsDataTypeCollection : List, ICloneable - #else - public partial class SessionDiagnosticsDataTypeCollection : List - #endif { #region Constructors /// @@ -58951,7 +57475,6 @@ public static explicit operator SessionDiagnosticsDataType[](SessionDiagnosticsD } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -58959,7 +57482,6 @@ public object Clone() return (SessionDiagnosticsDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -59176,13 +57698,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SessionSecurityDiagnosticsDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -59221,11 +57741,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfSessionSecurityDiagnosticsDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SessionSecurityDiagnosticsDataType")] - #if !NET_STANDARD public partial class SessionSecurityDiagnosticsDataTypeCollection : List, ICloneable - #else - public partial class SessionSecurityDiagnosticsDataTypeCollection : List - #endif { #region Constructors /// @@ -59262,7 +57778,6 @@ public static explicit operator SessionSecurityDiagnosticsDataType[](SessionSecu } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -59270,7 +57785,6 @@ public object Clone() return (SessionSecurityDiagnosticsDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -59391,13 +57905,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ServiceCounterDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -59521,13 +58033,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (StatusResult)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -59552,11 +58062,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfStatusResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "StatusResult")] - #if !NET_STANDARD public partial class StatusResultCollection : List, ICloneable - #else - public partial class StatusResultCollection : List - #endif { #region Constructors /// @@ -59593,7 +58099,6 @@ public static explicit operator StatusResult[](StatusResultCollection values) } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -59601,7 +58106,6 @@ public object Clone() return (StatusResultCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -60070,13 +58574,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SubscriptionDiagnosticsDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -60159,11 +58661,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfSubscriptionDiagnosticsDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SubscriptionDiagnosticsDataType")] - #if !NET_STANDARD public partial class SubscriptionDiagnosticsDataTypeCollection : List, ICloneable - #else - public partial class SubscriptionDiagnosticsDataTypeCollection : List - #endif { #region Constructors /// @@ -60200,7 +58698,6 @@ public static explicit operator SubscriptionDiagnosticsDataType[](SubscriptionDi } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -60208,7 +58705,6 @@ public object Clone() return (SubscriptionDiagnosticsDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -60372,13 +58868,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ModelChangeStructureDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -60405,11 +58899,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfModelChangeStructureDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ModelChangeStructureDataType")] - #if !NET_STANDARD public partial class ModelChangeStructureDataTypeCollection : List, ICloneable - #else - public partial class ModelChangeStructureDataTypeCollection : List - #endif { #region Constructors /// @@ -60446,7 +58936,6 @@ public static explicit operator ModelChangeStructureDataType[](ModelChangeStruct } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -60454,7 +58943,6 @@ public object Clone() return (ModelChangeStructureDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -60575,13 +59063,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (SemanticChangeStructureDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -60606,11 +59092,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfSemanticChangeStructureDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SemanticChangeStructureDataType")] - #if !NET_STANDARD public partial class SemanticChangeStructureDataTypeCollection : List, ICloneable - #else - public partial class SemanticChangeStructureDataTypeCollection : List - #endif { #region Constructors /// @@ -60647,7 +59129,6 @@ public static explicit operator SemanticChangeStructureDataType[](SemanticChange } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -60655,7 +59136,6 @@ public object Clone() return (SemanticChangeStructureDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() @@ -60776,13 +59256,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (Range)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -60930,13 +59408,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (EUInformation)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -61087,13 +59563,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ComplexNumberType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -61217,13 +59691,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (DoubleComplexNumberType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -61419,13 +59891,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (AxisInformation)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -61555,13 +60025,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (XVType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -61817,13 +60285,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ProgramDiagnosticDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -62131,13 +60597,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ProgramDiagnostic2DataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -62293,13 +60757,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (Annotation)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() diff --git a/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.Gds.DataTypes.cs b/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.Gds.DataTypes.cs index 52e640878..b46ecf462 100644 --- a/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.Gds.DataTypes.cs +++ b/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.Gds.DataTypes.cs @@ -234,13 +234,11 @@ public virtual bool IsEqual(IEncodeable encodeable) return true; } - #if !NET_STANDARD /// public virtual object Clone() { return (ApplicationRecordDataType)this.MemberwiseClone(); } - #endif /// public new object MemberwiseClone() @@ -275,11 +273,7 @@ public virtual object Clone() /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] [CollectionDataContract(Name = "ListOfApplicationRecordDataType", Namespace = Opc.Ua.Gds.Namespaces.OpcUaGdsXsd, ItemName = "ApplicationRecordDataType")] - #if !NET_STANDARD public partial class ApplicationRecordDataTypeCollection : List, ICloneable - #else - public partial class ApplicationRecordDataTypeCollection : List - #endif { #region Constructors /// @@ -316,7 +310,6 @@ public static explicit operator ApplicationRecordDataType[](ApplicationRecordDat } #endregion - #if !NET_STANDARD #region ICloneable Methods /// public object Clone() @@ -324,7 +317,6 @@ public object Clone() return (ApplicationRecordDataTypeCollection)this.MemberwiseClone(); } #endregion - #endif /// public new object MemberwiseClone() diff --git a/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.PredefinedNodes.uanodes b/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.PredefinedNodes.uanodes index 8e6b2d53f0b328b9273de31504c513932409f6aa..78cefb52d01605800b2879fa4985088cad1a44bb 100644 GIT binary patch delta 136 zcmaENUT@Q7y@nRX7N!>F7M2#)7Pc+y2RxXRS+^hZVE1BVDoxzZ@5MgVX!?Uhc2Rbh z)a1a{@8f_JuXvzS;neZ7&r7 delta 64 zcmdmVS?}F>y@nRX7N!>F7M2#)7Pc+y2RxYKnYSPEVE1BVF3Bt2&gaEG)u=tAjva_O QfS41AxwdE2aeHY400V&*t^fc4 diff --git a/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.PredefinedNodes.xml b/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.PredefinedNodes.xml index fe4a2ca81..b4f9d3953 100644 --- a/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.PredefinedNodes.xml +++ b/Stack/Opc.Ua.Core/Stack/Generated/Opc.Ua.PredefinedNodes.xml @@ -38,9 +38,6 @@ 0 Default Binary - - The default binary encoding for a data type. - i=47 @@ -58,9 +55,6 @@ 0 Default XML - - The default XML encoding for a data type. - i=47 @@ -1281,9 +1275,6 @@ 0 Mandatory - - Specifies that an instance with the attributes and references of the instance declaration must appear when a type is instantiated. - i=47 @@ -1301,9 +1292,6 @@ 0 Optional - - Specifies that an instance with the attributes and references of the instance declaration may appear when a type is instantiated. - i=47 @@ -1321,9 +1309,6 @@ 0 ExposesItsArray - - Specifies that an instance appears for each element of the containing array variable. - i=47 @@ -1341,9 +1326,6 @@ 0 OptionalPlaceholder - - Specifies that zero or more instances with the attributes and references of the instance declaration may appear when a type is instantiated. - i=47 @@ -1361,9 +1343,6 @@ 0 MandatoryPlaceholder - - Specifies that one or more instances with the attributes and references of the instance declaration must appear when a type is instantiated. - i=47 @@ -1381,9 +1360,6 @@ 0 Root - - The root of the server address space. - i=47 @@ -1401,9 +1377,6 @@ 0 Objects - - The browse entry point when looking for objects in the server address space. - i=47 @@ -1432,9 +1405,6 @@ 0 Types - - The browse entry point when looking for types in the server address space. - i=47 @@ -1463,9 +1433,6 @@ 0 Views - - The browse entry point when looking for views in the server address space. - i=47 @@ -1494,9 +1461,6 @@ 0 ObjectTypes - - The browse entry point when looking for object types in the server address space. - i=47 @@ -1533,9 +1497,6 @@ 0 VariableTypes - - The browse entry point when looking for variable types in the server address space. - i=47 @@ -1572,9 +1533,6 @@ 0 DataTypes - - The browse entry point when looking for data types in the server address space. - i=47 @@ -1611,9 +1569,6 @@ 0 ReferenceTypes - - The browse entry point when looking for reference types in the server address space. - i=47 @@ -1650,9 +1605,6 @@ 0 XML Schema - - A type system which uses XML schema to describe the encoding of data types. - i=47 @@ -1681,9 +1633,6 @@ 0 OPC Binary - - A type system which uses OPC binary schema to describe the encoding of data types. - i=47 @@ -2077,9 +2026,6 @@ 0 NodeVersion - - The version number of the node (used to indicate changes to references of the owning node). - i=46 @@ -2103,9 +2049,6 @@ 0 ViewVersion - - The version number of the view. - i=46 @@ -2129,9 +2072,6 @@ 0 Icon - - A small image representing the object. - i=46 @@ -2155,9 +2095,6 @@ 0 LocalTime - - The local time where the owning variable value was collected. - i=46 @@ -2181,9 +2118,6 @@ 0 AllowNulls - - Whether the value of the owning variable is allowed to be null. - i=46 @@ -2207,9 +2141,6 @@ 0 ValueAsText - - The string representation of the current value for a variable with an enumerated data type. - i=46 @@ -2233,9 +2164,6 @@ 0 MaxStringLength - - The maximum number of bytes supported by the DataVariable. - i=46 @@ -2259,9 +2187,6 @@ 0 MaxCharacters - - The maximum number of Unicode characters supported by the DataVariable. - i=46 @@ -2285,9 +2210,6 @@ 0 MaxByteStringLength - - The maximum length for a byte string that can be stored in the owning variable. - i=46 @@ -2311,9 +2233,6 @@ 0 MaxArrayLength - - The maximum length for an array that can be stored in the owning variable. - i=46 @@ -2337,9 +2256,6 @@ 0 EngineeringUnits - - The engineering units for the value of the owning variable. - i=46 @@ -2363,9 +2279,6 @@ 0 EnumStrings - - The human readable strings associated with the values of an enumerated value (when values are sequential). - i=46 @@ -2390,9 +2303,6 @@ 0 EnumValues - - The human readable strings associated with the values of an enumerated value (when values have no sequence). - i=46 @@ -2417,9 +2327,6 @@ 0 OptionSetValues - - Contains the human-readable representation for each bit of the bit mask. - i=46 @@ -2444,9 +2351,6 @@ 0 InputArguments - - The input arguments for a method. - i=46 @@ -2471,9 +2375,6 @@ 0 OutputArguments - - The output arguments for a method. - i=46 @@ -2498,9 +2399,6 @@ 0 DefaultInstanceBrowseName - - Allows the definition of BrowseName on an ObjectType that all instances should use by default. - i=46 @@ -63076,9 +62974,6 @@ 0 Interpolative - - At the beginning of each interval, retrieve the calculated value from the data points on either side of the requested timestamp. - i=47 @@ -63096,9 +62991,6 @@ 0 Average - - Retrieve the average value of the data over the interval. - i=47 @@ -63116,9 +63008,6 @@ 0 TimeAverage - - Retrieve the time weighted average data over the interval using Interpolated Bounding Values. - i=47 @@ -63136,9 +63025,6 @@ 0 TimeAverage2 - - Retrieve the time weighted average data over the interval using Simple Bounding Values. - i=47 @@ -63156,9 +63042,6 @@ 0 Total - - Retrieve the total (time integral) of the data over the interval using Interpolated Bounding Values. - i=47 @@ -63176,9 +63059,6 @@ 0 Total2 - - Retrieve the total (time integral) of the data over the interval using Simple Bounding Values. - i=47 @@ -63196,9 +63076,6 @@ 0 Minimum - - Retrieve the minimum raw value in the interval with the timestamp of the start of the interval. - i=47 @@ -63216,9 +63093,6 @@ 0 Maximum - - Retrieve the maximum raw value in the interval with the timestamp of the start of the interval. - i=47 @@ -63236,9 +63110,6 @@ 0 MinimumActualTime - - Retrieve the minimum value in the interval and the Timestamp of the minimum value. - i=47 @@ -63256,9 +63127,6 @@ 0 MaximumActualTime - - Retrieve the maximum value in the interval and the Timestamp of the maximum value. - i=47 @@ -63276,9 +63144,6 @@ 0 Range - - Retrieve the difference between the minimum and maximum Value over the interval. - i=47 @@ -63296,9 +63161,6 @@ 0 Minimum2 - - Retrieve the minimum value in the interval including the Simple Bounding Values. - i=47 @@ -63316,9 +63178,6 @@ 0 Maximum2 - - Retrieve the maximum value in the interval including the Simple Bounding Values. - i=47 @@ -63336,9 +63195,6 @@ 0 MinimumActualTime2 - - Retrieve the minimum value with the actual timestamp including the Simple Bounding Values. - i=47 @@ -63356,9 +63212,6 @@ 0 MaximumActualTime2 - - Retrieve the maximum value with the actual timestamp including the Simple Bounding Values. - i=47 @@ -63376,9 +63229,6 @@ 0 Range2 - - Retrieve the difference between the Minimum2 and Maximum2 value over the interval. - i=47 @@ -63396,9 +63246,6 @@ 0 AnnotationCount - - Retrieve the number of Annotations in the interval. - i=47 @@ -63416,9 +63263,6 @@ 0 Count - - Retrieve the number of raw values over the interval. - i=47 @@ -63436,9 +63280,6 @@ 0 DurationInStateZero - - Retrieve the time a Boolean or numeric was in a zero state using Simple Bounding Values. - i=47 @@ -63456,9 +63297,6 @@ 0 DurationInStateNonZero - - Retrieve the time a Boolean or numeric was in a non-zero state using Simple Bounding Values. - i=47 @@ -63476,9 +63314,6 @@ 0 NumberOfTransitions - - Retrieve the number of changes between zero and non-zero that a Boolean or Numeric value experienced in the interval. - i=47 @@ -63496,9 +63331,6 @@ 0 Start - - Retrieve the value at the beginning of the interval using Interpolated Bounding Values. - i=47 @@ -63516,9 +63348,6 @@ 0 End - - Retrieve the value at the end of the interval using Interpolated Bounding Values. - i=47 @@ -63536,9 +63365,6 @@ 0 Delta - - Retrieve the difference between the Start and End value in the interval. - i=47 @@ -63556,9 +63382,6 @@ 0 StartBound - - Retrieve the value at the beginning of the interval using Simple Bounding Values. - i=47 @@ -63576,9 +63399,6 @@ 0 EndBound - - Retrieve the value at the end of the interval using Simple Bounding Values. - i=47 @@ -63596,9 +63416,6 @@ 0 DeltaBounds - - Retrieve the difference between the StartBound and EndBound value in the interval. - i=47 @@ -63616,9 +63433,6 @@ 0 DurationGood - - Retrieve the total duration of time in the interval during which the data is good. - i=47 @@ -63636,9 +63450,6 @@ 0 DurationBad - - Retrieve the total duration of time in the interval during which the data is bad. - i=47 @@ -63656,9 +63467,6 @@ 0 PercentGood - - Retrieve the percent of data (0 to 100) in the interval which has a good StatusCode. - i=47 @@ -63676,9 +63484,6 @@ 0 PercentBad - - Retrieve the percent of data (0 to 100) in the interval which has a bad StatusCode. - i=47 @@ -63696,9 +63501,6 @@ 0 WorstQuality - - Retrieve the worst StatusCode of data in the interval. - i=47 @@ -63716,9 +63518,6 @@ 0 WorstQuality2 - - Retrieve the worst StatusCode of data in the interval including the Simple Bounding Values. - i=47 @@ -63736,9 +63535,6 @@ 0 StandardDeviationSample - - Retrieve the standard deviation for the interval for a sample of the population (n-1). - i=47 @@ -63756,9 +63552,6 @@ 0 StandardDeviationPopulation - - Retrieve the standard deviation for the interval for a complete population (n) which includes Simple Bounding Values. - i=47 @@ -63776,9 +63569,6 @@ 0 VarianceSample - - Retrieve the variance for the interval as calculated by the StandardDeviationSample. - i=47 @@ -63796,9 +63586,6 @@ 0 VariancePopulation - - Retrieve the variance for the interval as calculated by the StandardDeviationPopulation which includes Simple Bounding Values. - i=47 @@ -120840,4616 +120627,4624 @@ DQogIHhtbG5zOnVhPSJodHRwOi8vb3BjZm91bmRhdGlvbi5vcmcvVUEvMjAwOC8wMi9UeXBlcy54 c2QiDQogIHhtbG5zOnRucz0iaHR0cDovL29wY2ZvdW5kYXRpb24ub3JnL1VBLzIwMDgvMDIvVHlw ZXMueHNkIg0KICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9vcGNmb3VuZGF0aW9uLm9yZy9VQS8y MDA4LzAyL1R5cGVzLnhzZCINCiAgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiDQo+DQog -IDx4czphbm5vdGF0aW9uPg0KICAgIDx4czphcHBpbmZvPg0KICAgICAgPHRuczpNb2RlbCBNb2Rl -bFVyaT0iaHR0cDovL29wY2ZvdW5kYXRpb24ub3JnL1VBLyIgVmVyc2lvbj0iMS4wNC4xMSIgUHVi -bGljYXRpb25EYXRlPSIyMDIyLTAzLTI5VDAwOjAwOjAwWiIgLz4NCiAgICA8L3hzOmFwcGluZm8+ -DQogIDwveHM6YW5ub3RhdGlvbj4NCiAgDQogIDx4czplbGVtZW50IG5hbWU9IkJvb2xlYW4iIHR5 -cGU9InhzOmJvb2xlYW4iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkJvb2xl -YW4iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJvb2xlYW4i -IHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+ -DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg -bmFtZT0iTGlzdE9mQm9vbGVhbiIgdHlwZT0idG5zOkxpc3RPZkJvb2xlYW4iIG5pbGxhYmxlPSJ0 -cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iU0J5dGUiIHR5cGU9Inhz -OmJ5dGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlNCeXRlIj4NCiAgICA8 -eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTQnl0ZSIgdHlwZT0ieHM6Ynl0 -ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVl -bmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZTQnl0 -ZSIgdHlwZT0idG5zOkxpc3RPZlNCeXRlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0K -DQogIDx4czplbGVtZW50IG5hbWU9IkJ5dGUiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIgLz4NCg0K -ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQnl0ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnl0ZSIgdHlwZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5P -Y2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQog -IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkJ5dGUiIHR5cGU9 -InRuczpMaXN0T2ZCeXRlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpl -bGVtZW50IG5hbWU9IkludDE2IiB0eXBlPSJ4czpzaG9ydCIgLz4NCg0KICA8eHM6Y29tcGxleFR5 -cGUgbmFtZT0iTGlzdE9mSW50MTYiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IkludDE2IiB0eXBlPSJ4czpzaG9ydCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9 +IDx4czphbm5vdGF0aW9uPg0KICAgIDx4czphcHBpbmZvPg0KICAgICAgPHVhOk1vZGVsIE1vZGVs +VXJpPSJodHRwOi8vb3BjZm91bmRhdGlvbi5vcmcvVUEvIiBWZXJzaW9uPSIxLjA0LjExIiBQdWJs +aWNhdGlvbkRhdGU9IjIwMjItMDMtMjlUMDA6MDA6MDBaIiAvPg0KICAgIDwveHM6YXBwaW5mbz4N +CiAgPC94czphbm5vdGF0aW9uPg0KICANCiAgPHhzOmVsZW1lbnQgbmFtZT0iQm9vbGVhbiIgdHlw +ZT0ieHM6Ym9vbGVhbiIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQm9vbGVh +biI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQm9vbGVhbiIg +dHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4N +CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu +YW1lPSJMaXN0T2ZCb29sZWFuIiB0eXBlPSJ0bnM6TGlzdE9mQm9vbGVhbiIgbmlsbGFibGU9InRy +dWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTQnl0ZSIgdHlwZT0ieHM6 +Ynl0ZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mU0J5dGUiPg0KICAgIDx4 +czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNCeXRlIiB0eXBlPSJ4czpieXRl +IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVu +Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlNCeXRl +IiB0eXBlPSJ0bnM6TGlzdE9mU0J5dGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoN +CiAgPHhzOmVsZW1lbnQgbmFtZT0iQnl0ZSIgdHlwZT0ieHM6dW5zaWduZWRCeXRlIiAvPg0KDQog +IDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZCeXRlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCeXRlIiB0eXBlPSJ4czp1bnNpZ25lZEJ5dGUiIG1pbk9j +Y3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg +PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mQnl0ZSIgdHlwZT0i +dG5zOkxpc3RPZkJ5dGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmVs +ZW1lbnQgbmFtZT0iSW50MTYiIHR5cGU9InhzOnNob3J0IiAvPg0KDQogIDx4czpjb21wbGV4VHlw +ZSBuYW1lPSJMaXN0T2ZJbnQxNiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iSW50MTYiIHR5cGU9InhzOnNob3J0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i +dW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog +IDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkludDE2IiB0eXBlPSJ0bnM6TGlzdE9mSW50MTYiIG5p +bGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iVUludDE2 +IiB0eXBlPSJ4czp1bnNpZ25lZFNob3J0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJM +aXN0T2ZVSW50MTYiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 +IlVJbnQxNiIgdHlwZT0ieHM6dW5zaWduZWRTaG9ydCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9 InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K -ICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZJbnQxNiIgdHlwZT0idG5zOkxpc3RPZkludDE2IiBu -aWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czplbGVtZW50IG5hbWU9IlVJbnQx -NiIgdHlwZT0ieHM6dW5zaWduZWRTaG9ydCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i -TGlzdE9mVUludDE2Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJVSW50MTYiIHR5cGU9InhzOnVuc2lnbmVkU2hvcnQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJz -PSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N -CiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVUludDE2IiB0eXBlPSJ0bnM6TGlzdE9mVUludDE2 -IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czplbGVtZW50IG5hbWU9Iklu -dDMyIiB0eXBlPSJ4czppbnQiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZklu -dDMyIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbnQzMiIg -dHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAg -IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 -Ikxpc3RPZkludDMyIiB0eXBlPSJ0bnM6TGlzdE9mSW50MzIiIG5pbGxhYmxlPSJ0cnVlIj48L3hz -OmVsZW1lbnQ+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iVUludDMyIiB0eXBlPSJ4czp1bnNpZ25l -ZEludCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mVUludDMyIj4NCiAgICA8 -eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVSW50MzIiIHR5cGU9InhzOnVu -c2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgIDwv -eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxp -c3RPZlVJbnQzMiIgdHlwZT0idG5zOkxpc3RPZlVJbnQzMiIgbmlsbGFibGU9InRydWUiPjwveHM6 -ZWxlbWVudD4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJJbnQ2NCIgdHlwZT0ieHM6bG9uZyIgLz4N -Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mSW50NjQiPg0KICAgIDx4czpzZXF1ZW5j -ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkludDY0IiB0eXBlPSJ4czpsb25nIiBtaW5PY2N1 -cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv -eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkludDY0IiB0eXBlPSJ0 -bnM6TGlzdE9mSW50NjQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmVs -ZW1lbnQgbmFtZT0iVUludDY0IiB0eXBlPSJ4czp1bnNpZ25lZExvbmciIC8+DQoNCiAgPHhzOmNv -bXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlVJbnQ2NCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iVUludDY0IiB0eXBlPSJ4czp1bnNpZ25lZExvbmciIG1pbk9jY3Vy +ICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZVSW50MTYiIHR5cGU9InRuczpMaXN0T2ZVSW50MTYi +IG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iSW50 +MzIiIHR5cGU9InhzOmludCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mSW50 +MzIiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkludDMyIiB0 +eXBlPSJ4czppbnQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAg +PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i +TGlzdE9mSW50MzIiIHR5cGU9InRuczpMaXN0T2ZJbnQzMiIgbmlsbGFibGU9InRydWUiPjwveHM6 +ZWxlbWVudD4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJVSW50MzIiIHR5cGU9InhzOnVuc2lnbmVk +SW50IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZVSW50MzIiPg0KICAgIDx4 +czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVJbnQzMiIgdHlwZT0ieHM6dW5z +aWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94 +czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlz +dE9mVUludDMyIiB0eXBlPSJ0bnM6TGlzdE9mVUludDMyIiBuaWxsYWJsZT0idHJ1ZSI+PC94czpl +bGVtZW50Pg0KDQogIDx4czplbGVtZW50IG5hbWU9IkludDY0IiB0eXBlPSJ4czpsb25nIiAvPg0K +DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZJbnQ2NCI+DQogICAgPHhzOnNlcXVlbmNl +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSW50NjQiIHR5cGU9InhzOmxvbmciIG1pbk9jY3Vy cz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94 -czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVUludDY0IiB0eXBlPSJ0 -bnM6TGlzdE9mVUludDY0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpl -bGVtZW50IG5hbWU9IkZsb2F0IiB0eXBlPSJ4czpmbG9hdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5 -cGUgbmFtZT0iTGlzdE9mRmxvYXQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IkZsb2F0IiB0eXBlPSJ4czpmbG9hdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9 -InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K -ICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZGbG9hdCIgdHlwZT0idG5zOkxpc3RPZkZsb2F0IiBu -aWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czplbGVtZW50IG5hbWU9IkRvdWJs -ZSIgdHlwZT0ieHM6ZG91YmxlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZE -b3VibGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRvdWJs -ZSIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAv -Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50 -IG5hbWU9Ikxpc3RPZkRvdWJsZSIgdHlwZT0idG5zOkxpc3RPZkRvdWJsZSIgbmlsbGFibGU9InRy -dWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTdHJpbmciIG5pbGxhYmxl -PSJ0cnVlIiB0eXBlPSJ4czpzdHJpbmciIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxp -c3RPZlN0cmluZyI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i -U3RyaW5nIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k -ZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs -ZW1lbnQgbmFtZT0iTGlzdE9mU3RyaW5nIiB0eXBlPSJ0bnM6TGlzdE9mU3RyaW5nIiBuaWxsYWJs -ZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czplbGVtZW50IG5hbWU9IkRhdGVUaW1lIiBu -aWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl -IG5hbWU9Ikxpc3RPZkRhdGVUaW1lIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJEYXRlVGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgbWF4 -T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 -VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRGF0ZVRpbWUiIHR5cGU9InRuczpMaXN0 -T2ZEYXRlVGltZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxl -eFR5cGUgbmFtZT0iR3VpZCI+DQogICAgPHhzOmFubm90YXRpb24+DQogICAgICA8eHM6YXBwaW5m -bz4NCiAgICAgICAgPElzVmFsdWVUeXBlIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQu -Y29tLzIwMDMvMTAvU2VyaWFsaXphdGlvbi8iPnRydWU8L0lzVmFsdWVUeXBlPg0KICAgICAgPC94 -czphcHBpbmZvPg0KICAgIDwveHM6YW5ub3RhdGlvbj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJTdHJpbmciIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIw -IiBtYXhPY2N1cnM9IjEiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQog -IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikd1aWQiIHR5cGU9InRuczpH -dWlkIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBu -YW1lPSJMaXN0T2ZHdWlkIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJHdWlkIiB0eXBlPSJ0bnM6R3VpZCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91 -bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6 -ZWxlbWVudCBuYW1lPSJMaXN0T2ZHdWlkIiB0eXBlPSJ0bnM6TGlzdE9mR3VpZCIgbmlsbGFibGU9 -InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJCeXRlU3RyaW5nIiBu -aWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiAvPg0KDQogIDx4czpjb21wbGV4 -VHlwZSBuYW1lPSJMaXN0T2ZCeXRlU3RyaW5nIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJCeXRlU3RyaW5nIiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9j +czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mSW50NjQiIHR5cGU9InRu +czpMaXN0T2ZJbnQ2NCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6ZWxl +bWVudCBuYW1lPSJVSW50NjQiIHR5cGU9InhzOnVuc2lnbmVkTG9uZyIgLz4NCg0KICA8eHM6Y29t +cGxleFR5cGUgbmFtZT0iTGlzdE9mVUludDY0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJVSW50NjQiIHR5cGU9InhzOnVuc2lnbmVkTG9uZyIgbWluT2NjdXJz +PSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz +OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZVSW50NjQiIHR5cGU9InRu +czpMaXN0T2ZVSW50NjQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmVs +ZW1lbnQgbmFtZT0iRmxvYXQiIHR5cGU9InhzOmZsb2F0IiAvPg0KDQogIDx4czpjb21wbGV4VHlw +ZSBuYW1lPSJMaXN0T2ZGbG9hdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iRmxvYXQiIHR5cGU9InhzOmZsb2F0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i +dW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog +IDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkZsb2F0IiB0eXBlPSJ0bnM6TGlzdE9mRmxvYXQiIG5p +bGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iRG91Ymxl +IiB0eXBlPSJ4czpkb3VibGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkRv +dWJsZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRG91Ymxl +IiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+ +DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg +bmFtZT0iTGlzdE9mRG91YmxlIiB0eXBlPSJ0bnM6TGlzdE9mRG91YmxlIiBuaWxsYWJsZT0idHJ1 +ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czplbGVtZW50IG5hbWU9IlN0cmluZyIgbmlsbGFibGU9 +InRydWUiIHR5cGU9InhzOnN0cmluZyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlz +dE9mU3RyaW5nIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJT +dHJpbmciIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRl +ZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl +bWVudCBuYW1lPSJMaXN0T2ZTdHJpbmciIHR5cGU9InRuczpMaXN0T2ZTdHJpbmciIG5pbGxhYmxl +PSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0ZVRpbWUiIG5p +bGxhYmxlPSJ0cnVlIiB0eXBlPSJ4czpkYXRlVGltZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg +bmFtZT0iTGlzdE9mRGF0ZVRpbWUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IkRhdGVUaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiBtYXhP +Y2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU +eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZEYXRlVGltZSIgdHlwZT0idG5zOkxpc3RP +ZkRhdGVUaW1lIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4 +VHlwZSBuYW1lPSJHdWlkIj4NCiAgICA8eHM6YW5ub3RhdGlvbj4NCiAgICAgIDx4czphcHBpbmZv +Pg0KICAgICAgICA8SXNWYWx1ZVR5cGUgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5j +b20vMjAwMy8xMC9TZXJpYWxpemF0aW9uLyI+dHJ1ZTwvSXNWYWx1ZVR5cGU+DQogICAgICA8L3hz +OmFwcGluZm8+DQogICAgPC94czphbm5vdGF0aW9uPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg +IDx4czplbGVtZW50IG5hbWU9IlN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAi +IG1heE9jY3Vycz0iMSIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg +PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iR3VpZCIgdHlwZT0idG5zOkd1 +aWQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h +bWU9Ikxpc3RPZkd1aWQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h +bWU9Ikd1aWQiIHR5cGU9InRuczpHdWlkIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3Vu +ZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl +bGVtZW50IG5hbWU9Ikxpc3RPZkd1aWQiIHR5cGU9InRuczpMaXN0T2ZHdWlkIiBuaWxsYWJsZT0i +dHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czplbGVtZW50IG5hbWU9IkJ5dGVTdHJpbmciIG5p +bGxhYmxlPSJ0cnVlIiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIC8+DQoNCiAgPHhzOmNvbXBsZXhU +eXBlIG5hbWU9Ikxpc3RPZkJ5dGVTdHJpbmciPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4 +czplbGVtZW50IG5hbWU9IkJ5dGVTdHJpbmciIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgbWluT2Nj +dXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94 +czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlz +dE9mQnl0ZVN0cmluZyIgdHlwZT0idG5zOkxpc3RPZkJ5dGVTdHJpbmciIG5pbGxhYmxlPSJ0cnVl +Ij48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlhtbEVsZW1l +bnQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlhtbEVsZW1l +bnQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIj4N +CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPg0KICAgICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg +ICAgICAgIDx4czphbnkgbWluT2NjdXJzPSIwIiBwcm9jZXNzQ29udGVudHM9ImxheCIvPg0KICAg +ICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICAgIDwveHM6Y29tcGxleFR5cGU+DQogICAgICA8 +L3hzOmVsZW1lbnQ+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg +PHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mWG1sRWxlbWVudCIgdHlwZT0idG5zOkxpc3RPZlhtbEVs +ZW1lbnQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBl +IG5hbWU9Ik5vZGVJZCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt +ZT0iSWRlbnRpZmllciIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i +MSIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 +VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZUlkIiB0eXBlPSJ0bnM6Tm9kZUlkIiBuaWxs +YWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0 +T2ZOb2RlSWQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5v +ZGVJZCIgdHlwZT0idG5zOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRl +ZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 +VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mTm9kZUlkIiB0eXBlPSJ0bnM6TGlzdE9m +Tm9kZUlkIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlw +ZSBuYW1lPSJFeHBhbmRlZE5vZGVJZCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iSWRlbnRpZmllciIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG1h +eE9jY3Vycz0iMSIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94 +czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRXhwYW5kZWROb2RlSWQiIHR5cGU9 +InRuczpFeHBhbmRlZE5vZGVJZCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8 +eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRXhwYW5kZWROb2RlSWQiPg0KICAgIDx4czpzZXF1 +ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkV4cGFuZGVkTm9kZUlkIiB0eXBlPSJ0bnM6 +RXhwYW5kZWROb2RlSWQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog +IDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkV4cGFuZGVkTm9kZUlkIiB0eXBlPSJ0bnM6TGlzdE9m +RXhwYW5kZWROb2RlSWQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNv +bXBsZXhUeXBlIG5hbWU9IlN0YXR1c0NvZGUiPg0KICAgIDx4czphbm5vdGF0aW9uPg0KICAgICAg +PHhzOmFwcGluZm8+DQogICAgICAgIDxJc1ZhbHVlVHlwZSB4bWxucz0iaHR0cDovL3NjaGVtYXMu +bWljcm9zb2Z0LmNvbS8yMDAzLzEwL1NlcmlhbGl6YXRpb24vIj50cnVlPC9Jc1ZhbHVlVHlwZT4N +CiAgICAgIDwveHM6YXBwaW5mbz4NCiAgICA8L3hzOmFubm90YXRpb24+DQogICAgPHhzOnNlcXVl +bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29kZSIgdHlwZT0ieHM6dW5zaWduZWRJbnQi +IG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl +Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0dXNDb2RlIiB0eXBlPSJ0bnM6U3RhdHVzQ29kZSI+ +PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZTdGF0dXNDb2Rl +Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0dXNDb2Rl +IiB0eXBlPSJ0bnM6U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRl +ZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl +bWVudCBuYW1lPSJMaXN0T2ZTdGF0dXNDb2RlIiB0eXBlPSJ0bnM6TGlzdE9mU3RhdHVzQ29kZSIg +bmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i +RGlhZ25vc3RpY0luZm8iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h +bWU9IlN5bWJvbGljSWQiIHR5cGU9InhzOmludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iTmFtZXNwYWNlVXJpIiB0eXBlPSJ4czppbnQiIG1pbk9jY3Vycz0iMCIg +Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkxvY2FsZSIgdHlwZT0ieHM6aW50IiBtaW5PY2N1 +cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMb2NhbGl6ZWRUZXh0IiB0eXBlPSJ4 +czppbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkFkZGl0aW9u +YWxJbmZvIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IklubmVyU3RhdHVzQ29kZSIgdHlwZT0idG5zOlN0YXR1c0NvZGUiIG1pbk9jY3Vy +cz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IklubmVyRGlhZ25vc3RpY0luZm8iIHR5 +cGU9InRuczpEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVu +Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJ +bmZvIiB0eXBlPSJ0bnM6RGlhZ25vc3RpY0luZm8iIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1l +bnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkRpYWdub3N0aWNJbmZvIj4NCiAg +ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGljSW5mbyIg +dHlwZT0idG5zOkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3Vu +ZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs +ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZEaWFnbm9zdGljSW5mbyIgdHlwZT0i +dG5zOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0K +DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMb2NhbGl6ZWRUZXh0Ij4NCiAgICA8eHM6c2VxdWVu +Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMb2NhbGUiIHR5cGU9InhzOnN0cmluZyIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRl +eHQiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiAgbmlsbGFibGU9InRydWUiIC8+DQog +ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt +ZT0iTG9jYWxpemVkVGV4dCIgdHlwZT0idG5zOkxvY2FsaXplZFRleHQiIG5pbGxhYmxlPSJ0cnVl +IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZMb2NhbGl6ZWRUZXh0Ij4NCiAg +ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMb2NhbGl6ZWRUZXh0IiB0 +eXBlPSJ0bnM6TG9jYWxpemVkVGV4dCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRl +ZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 +VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mTG9jYWxpemVkVGV4dCIgdHlwZT0idG5z +Okxpc3RPZkxvY2FsaXplZFRleHQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAg +PHhzOmNvbXBsZXhUeXBlIG5hbWU9IlF1YWxpZmllZE5hbWUiPg0KICAgIDx4czpzZXF1ZW5jZT4N +CiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5hbWVzcGFjZUluZGV4IiB0eXBlPSJ4czp1bnNpZ25l +ZFNob3J0IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lIiB0 +eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94 +czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUXVh +bGlmaWVkTmFtZSIgdHlwZT0idG5zOlF1YWxpZmllZE5hbWUiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZRdWFsaWZpZWROYW1lIj4NCiAgICA8eHM6 +c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJRdWFsaWZpZWROYW1lIiB0eXBlPSJ0 +bnM6UXVhbGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmls +bGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N +CiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUXVhbGlmaWVkTmFtZSIgdHlwZT0idG5zOkxpc3RP +ZlF1YWxpZmllZE5hbWUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPCEtLQ0K +ICAgIFNvbWUgZW52aXJvbm1lbnRzIHJlcXVpcmUgYSBXU0RML1hTRCB3aGljaCBleHBsaWNpdGx5 +IGRlZmluZXMgYWxsIHBvc3NpYmxlIHR5cGVzLg0KICAgIFRoZSBVQSBXU0RML1hTRCBjYW4gYmUg +bW9kaWZpZWQgdG8gc3VwcG9ydCB0aGVzZSBlbnZpcm9ubWVudHMgYnkgcmVwbGFjaW5nIHRoZQ0K +ICAgIGRlZmluaXRpb25zIG9mIHRoZSBFeHRlbnNpb25PYmplY3RCb2R5IGFuZCBWYXJpYW50VmFs +dWUgY29tcGxleCB0eXBlcyB3aXRoIHRoZQ0KICAgIGRlZmluaXRpb25zIGluIHRoZSBjb21tZW50 +cyBzaG93biBoZXJlLiBEZXZlbG9wZXJzIHdvdWxkIHRoZW4gZGVmaW5lIHN1YnR5cGVzDQogICAg +b2YgdGhlIEV4dGVuc2lvbk9iamVjdEJvZHkgdHlwZSB3aGljaCBleHBsaWNpdGx5IGRlY2xhcmUg +YSBjaG9pY2UgYmV0d2VlbiBhbGwgb2YgdGhlDQogICAgY29tcGxleCB0eXBlcyB1c2VkIGJ5IHRo +ZSBzeXN0ZW0uIFRoZSBFeGFtcGxlRXh0ZW5zaW9uT2JqZWN0Qm9keSBzdWJ0eXBlIGlzIHByb3Zp +ZGVzDQogICAgYSB0ZW1wbGF0ZSBiYXNlZCBvbiBhIGZldyBjb21tb24gVUEtZGVmaW5lZCBjb21w +bGV4IHR5cGVzLg0KICAgIC0tPg0KDQogIDwhLS0NCiAgICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i +RXh0ZW5zaW9uT2JqZWN0Qm9keSIgLz4NCg0KICAgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJFeGFt +cGxlRXh0ZW5zaW9uT2JqZWN0Qm9keSI+DQogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAg +ICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkV4dGVuc2lvbk9iamVjdEJvZHkiPg0KICAgICAg +ICAgIDx4czpjaG9pY2U+DQogICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBcmd1bWVudCIg +dHlwZT0idG5zOkFyZ3VtZW50IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +ICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlcklkZW50aXR5VG9rZW4iIHR5cGU9InRuczpV +c2VySWRlbnRpdHlUb2tlbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg +ICAgICAgIDx4czplbGVtZW50IG5hbWU9IlVzZXJOYW1lSWRlbnRpdHlUb2tlbiIgdHlwZT0idG5z +OlVzZXJOYW1lSWRlbnRpdHlUb2tlbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N +CiAgICAgICAgICA8L3hzOmNob2ljZT4NCiAgICAgICAgPC94czpleHRlbnNpb24+DQogICAgICA8 +L3hzOmNvbXBsZXhDb250ZW50Pg0KICAgIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgICA8eHM6Y29t +cGxleFR5cGUgbmFtZT0iRXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICAgIDx4czpzZXF1ZW5jZT4NCiAg +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHlwZUlkIiB0eXBlPSJ0bnM6RXhwYW5kZWROb2RlSWQi +IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5h +bWU9IkJvZHkiIG1pbk9jY3Vycz0iMCIgdHlwZT0idG5zOkV4dGVuc2lvbk9iamVjdEJvZHkiIG5p +bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICA8L3hzOmNvbXBsZXhU +eXBlPg0KICAgIDx4czplbGVtZW50IG5hbWU9IkV4dGVuc2lvbk9iamVjdCIgdHlwZT0idG5zOkV4 +dGVuc2lvbk9iamVjdCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgLS0+DQoNCiAgPHhzOmNvbXBs +ZXhUeXBlIG5hbWU9IkV4dGVuc2lvbk9iamVjdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iVHlwZUlkIiB0eXBlPSJ0bnM6Tm9kZUlkIiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQm9keSIgbWluT2Nj +dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSI+DQogICAgICAgIDx4czpjb21wbGV4VHlwZT4NCiAgICAg +ICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgICA8eHM6YW55IG1pbk9jY3Vycz0iMCIgcHJv +Y2Vzc0NvbnRlbnRzPSJsYXgiLz4NCiAgICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgICA8 +L3hzOmNvbXBsZXhUeXBlPg0KICAgICAgPC94czplbGVtZW50Pg0KICAgIDwveHM6c2VxdWVuY2U+ +DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkV4dGVuc2lvbk9iamVj +dCIgdHlwZT0idG5zOkV4dGVuc2lvbk9iamVjdCIgbmlsbGFibGU9InRydWUiIC8+DQoNCiAgPHhz +OmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkV4dGVuc2lvbk9iamVjdCI+DQogICAgPHhzOnNlcXVl +bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRXh0ZW5zaW9uT2JqZWN0IiB0eXBlPSJ0bnM6 +RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxs +YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K +ICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZFeHRlbnNpb25PYmplY3QiIHR5cGU9InRuczpMaXN0 +T2ZFeHRlbnNpb25PYmplY3QiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhz +OmNvbXBsZXhUeXBlIG5hbWU9IkRlY2ltYWwiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4 +czplbGVtZW50IG5hbWU9IlR5cGVJZCIgdHlwZT0idG5zOk5vZGVJZCIgbWluT2NjdXJzPSIwIiAv +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQm9keSIgbWluT2NjdXJzPSIwIj4NCiAgICAgICAg +PHhzOmNvbXBsZXhUeXBlPg0KICAgICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICAgIDx4 +czplbGVtZW50IG5hbWU9IlNjYWxlIiB0eXBlPSJ4czpzaG9ydCIgLz4NCiAgICAgICAgICAgIDx4 +czplbGVtZW50IG5hbWU9IlZhbHVlIiB0eXBlPSJ4czpzdHJpbmciIC8+DQogICAgICAgICAgPC94 +czpzZXF1ZW5jZT4NCiAgICAgICAgPC94czpjb21wbGV4VHlwZT4NCiAgICAgIDwveHM6ZWxlbWVu +dD4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogICAgPCEtLQ0K +ICAgIFNvbWUgV1NETC9YTUwgY29tcGlsZXJzIGhhdmUgaXNzdWVzIHdpdGggdGhlIHhzOmNob2lj +ZSBjb25zdHJ1Y3QuIEZvciB0aGF0IHJlYXNvbg0KICAgIHRoZSBkZWZhdWx0IGRlY2xhcmF0aW9u +IG9mIGEgVmFyaWFudCB1c2VzIHhzOmFueSBjb25zdHJ1Y3QuIFRoZSBzY2hlbWEgYWN1dHVhbGx5 +DQogICAgZGVmaW5lZCBieSB0aGUgc3BlY2lmaWNhdGlvbiBpcyBwcm92aWRlZCBieSB0aGUgTWF0 +cml4IGFuZCBWYXJpYW50VmFsdWUgY29tcGxleCB0eXBlcw0KICAgIHNob3duIGluIGNvbW1lbnRz +IGJlbG93LiBBcHBsaWNhdGlvbiBkZXZlbG9wZXJzIGNhbiByZXBsYWNlIHRoZSBWYXJpYW50VmFs +dWUgZGVjbGFyYXRpb24NCiAgICB3aXRoIHRoZSBzcGVjaWZpYyBkZWNsYXJhdGlvbiBpZiB0aGV5 +IGhhdmUgYSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB0aGF0IGNhbiBoYW5kbGUNCiAgICB0aGUg +eHM6Y2hvaWNlIGNvbnN0cnVjdCBpbiBhIHJlYXNvbmFibGUgd2F5Lg0KICAgIC0tPg0KDQogIDwh +LS0NCiAgICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTWF0cml4Ij4NCiAgICAgIDx4czpzZXF1ZW5j +ZT4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGltZW5zaW9ucyIgdHlwZT0idG5zOkxpc3RP +ZlVJbnQzMiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iVmFsdWUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiPg0KICAgICAg +ICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0iZmFsc2UiPg0KICAgICAgICAgICAgPHhzOmNob2lj +ZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQogICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9 +IkJvb2xlYW4iIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iU0J5dGUiIHR5cGU9InhzOmJ5dGUiIG1pbk9jY3Vycz0iMCIg +Lz4NCiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnl0ZSIgdHlwZT0ieHM6dW5zaWdu +ZWRCeXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9 +IkludDE2IiB0eXBlPSJ4czpzaG9ydCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJVSW50MTYiIHR5cGU9InhzOnVuc2lnbmVkU2hvcnQiIG1pbk9jY3Vy +cz0iMCIgLz4NCiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSW50MzIiIHR5cGU9Inhz +OmludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJV +SW50MzIiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAg +ICAgIDx4czplbGVtZW50IG5hbWU9IkludDY0IiB0eXBlPSJ4czpsb25nIiBtaW5PY2N1cnM9IjAi +IC8+DQogICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlVJbnQ2NCIgdHlwZT0ieHM6dW5z +aWduZWRMb25nIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgICAgIDx4czplbGVtZW50IG5h +bWU9IkZsb2F0IiB0eXBlPSJ4czpmbG9hdCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJEb3VibGUiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIw +IiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdHJpbmciIHR5cGU9InhzOnN0 +cmluZyIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJE +YXRlVGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iR3VpZCIgdHlwZT0idG5zOkd1aWQiIG1pbk9jY3Vycz0iMCIg +Lz4NCiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnl0ZVN0cmluZyIgdHlwZT0ieHM6 +YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgICAgIDx4czplbGVtZW50 +IG5hbWU9IlhtbEVsZW1lbnQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiPg0KICAgICAg +ICAgICAgICAgIDx4czpjb21wbGV4VHlwZT4NCiAgICAgICAgICAgICAgICAgIDx4czpzZXF1ZW5j +ZT4NCiAgICAgICAgICAgICAgICAgICAgPHhzOmFueSBtaW5PY2N1cnM9IjAiIHByb2Nlc3NDb250 +ZW50cz0ibGF4IiAvPg0KICAgICAgICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgICAg +ICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPg0KICAgICAgICAgICAgICA8L3hzOmVsZW1lbnQ+DQog +ICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXR1c0NvZGUiIHR5cGU9InRuczpTdGF0 +dXNDb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9 +Ik5vZGVJZCIgdHlwZT0idG5zOk5vZGVJZCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJFeHBhbmRlZE5vZGVJZCIgdHlwZT0idG5zOkV4cGFuZGVkTm9k +ZUlkIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlF1 +YWxpZmllZE5hbWUiIHR5cGU9InRuczpRdWFsaWZpZWROYW1lIiBtaW5PY2N1cnM9IjAiIC8+DQog +ICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkxvY2FsaXplZFRleHQiIHR5cGU9InRuczpM +b2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgICAgIDx4czplbGVtZW50 +IG5hbWU9IkV4dGVuc2lvbk9iamVjdCIgdHlwZT0idG5zOkV4dGVuc2lvbk9iamVjdCIgbWluT2Nj +dXJzPSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYXJpYW50IiB0eXBl +PSJ0bnM6VmFyaWFudCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAgPC94czpjaG9pY2U+ +DQogICAgICAgICAgPC94czpjb21wbGV4VHlwZT4NCiAgICAgICAgPC94czplbGVtZW50Pg0KICAg +ICAgPC94czpzZXF1ZW5jZT4NCiAgICA8L3hzOmNvbXBsZXhUeXBlPg0KICAgIDx4czplbGVtZW50 +IG5hbWU9Ik1hdHJpeCIgdHlwZT0idG5zOk1hdHJpeCIgbmlsbGFibGU9InRydWUiIC8+DQoNCiAg +ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVmFyaWFudFZhbHVlIj4NCiAgICAgIDx4czpjaG9pY2U+ +DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9IkJvb2xlYW4iIHR5cGU9InhzOmJvb2xlYW4iIG1p +bk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU0J5dGUiIHR5cGU9Inhz +OmJ5dGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnl0ZSIg +dHlwZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVt +ZW50IG5hbWU9IkludDE2IiB0eXBlPSJ4czpzaG9ydCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJVSW50MTYiIHR5cGU9InhzOnVuc2lnbmVkU2hvcnQiIG1pbk9j +Y3Vycz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSW50MzIiIHR5cGU9InhzOmlu +dCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVSW50MzIiIHR5 +cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50 +IG5hbWU9IkludDY0IiB0eXBlPSJ4czpsb25nIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4 +czplbGVtZW50IG5hbWU9IlVJbnQ2NCIgdHlwZT0ieHM6dW5zaWduZWRMb25nIiBtaW5PY2N1cnM9 +IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9IkZsb2F0IiB0eXBlPSJ4czpmbG9hdCIg +bWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEb3VibGUiIHR5cGU9 +InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJT +dHJpbmciIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxl +bWVudCBuYW1lPSJEYXRlVGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4N +CiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iR3VpZCIgdHlwZT0idG5zOkd1aWQiIG1pbk9jY3Vy +cz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnl0ZVN0cmluZyIgdHlwZT0ieHM6 +YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9 +IlhtbEVsZW1lbnQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiPg0KICAgICAgICAgIDx4 +czpjb21wbGV4VHlwZT4NCiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICAgICAg +PHhzOmFueSBtaW5PY2N1cnM9IjAiIHByb2Nlc3NDb250ZW50cz0ibGF4IiAvPg0KICAgICAgICAg +ICAgPC94czpzZXF1ZW5jZT4NCiAgICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPg0KICAgICAgICA8 +L3hzOmVsZW1lbnQ+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXR1c0NvZGUiIHR5cGU9 +InRuczpTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5h +bWU9Ik5vZGVJZCIgdHlwZT0idG5zOk5vZGVJZCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJFeHBhbmRlZE5vZGVJZCIgdHlwZT0idG5zOkV4cGFuZGVkTm9kZUlk +IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9IlF1YWxpZmllZE5h +bWUiIHR5cGU9InRuczpRdWFsaWZpZWROYW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4 +czplbGVtZW50IG5hbWU9IkxvY2FsaXplZFRleHQiIHR5cGU9InRuczpMb2NhbGl6ZWRUZXh0IiBt +aW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9IkV4dGVuc2lvbk9iamVj +dCIgdHlwZT0idG5zOkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZCb29sZWFuIiB0eXBlPSJ0bnM6TGlzdE9mQm9vbGVhbiIg +bWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZTQnl0ZSIg +dHlwZT0idG5zOkxpc3RPZlNCeXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVt +ZW50IG5hbWU9Ikxpc3RPZkJ5dGUiIHR5cGU9InRuczpMaXN0T2ZCeXRlIiBtaW5PY2N1cnM9IjAi +IC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkludDE2IiB0eXBlPSJ0bnM6TGlz +dE9mSW50MTYiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGlz +dE9mVUludDE2IiB0eXBlPSJ0bnM6TGlzdE9mVUludDE2IiBtaW5PY2N1cnM9IjAiIC8+DQogICAg +ICAgIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkludDMyIiB0eXBlPSJ0bnM6TGlzdE9mSW50MzIi +IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVUludDMy +IiB0eXBlPSJ0bnM6TGlzdE9mVUludDMyIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czpl +bGVtZW50IG5hbWU9Ikxpc3RPZkludDY0IiB0eXBlPSJ0bnM6TGlzdE9mSW50NjQiIG1pbk9jY3Vy +cz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVUludDY0IiB0eXBlPSJ0 +bnM6TGlzdE9mVUludDY0IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5h +bWU9Ikxpc3RPZkZsb2F0IiB0eXBlPSJ0bnM6TGlzdE9mRmxvYXQiIG1pbk9jY3Vycz0iMCIgLz4N +CiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRG91YmxlIiB0eXBlPSJ0bnM6TGlzdE9m +RG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxpc3RP +ZlN0cmluZyIgdHlwZT0idG5zOkxpc3RPZlN0cmluZyIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZEYXRlVGltZSIgdHlwZT0idG5zOkxpc3RPZkRhdGVU +aW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkd1 +aWQiIHR5cGU9InRuczpMaXN0T2ZHdWlkIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czpl +bGVtZW50IG5hbWU9Ikxpc3RPZkJ5dGVTdHJpbmciIHR5cGU9InRuczpMaXN0T2ZCeXRlU3RyaW5n +IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlhtbEVs +ZW1lbnQiIHR5cGU9InRuczpMaXN0T2ZYbWxFbGVtZW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAg +ICAgIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlN0YXR1c0NvZGUiIHR5cGU9InRuczpMaXN0T2ZT +dGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxp +c3RPZk5vZGVJZCIgdHlwZT0idG5zOkxpc3RPZk5vZGVJZCIgbWluT2NjdXJzPSIwIiAvPg0KICAg +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZFeHBhbmRlZE5vZGVJZCIgdHlwZT0idG5zOkxp +c3RPZkV4cGFuZGVkTm9kZUlkIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50 +IG5hbWU9Ikxpc3RPZlF1YWxpZmllZE5hbWUiIHR5cGU9InRuczpMaXN0T2ZRdWFsaWZpZWROYW1l +IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkxvY2Fs +aXplZFRleHQiIHR5cGU9InRuczpMaXN0T2ZMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIC8+ +DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkV4dGVuc2lvbk9iamVjdCIgdHlwZT0i +dG5zOkxpc3RPZkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJMaXN0T2ZWYXJpYW50IiB0eXBlPSJ0bnM6TGlzdE9mVmFyaWFudCIgbWlu +T2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYXRyaXgiIHR5cGU9InRu +czpNYXRyaXgiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDwveHM6Y2hvaWNlPg0KICAgIDwveHM6 +Y29tcGxleFR5cGU+DQoNCiAgICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVmFyaWFudCI+DQogICAg +ICA8eHM6c2VxdWVuY2U+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9IlZhbHVlIiB0eXBlPSJ0 +bnM6VmFyaWFudFZhbHVlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg +PC94czpzZXF1ZW5jZT4NCiAgICA8L3hzOmNvbXBsZXhUeXBlPg0KICAgIDx4czplbGVtZW50IG5h +bWU9IlZhcmlhbnQiIHR5cGU9InRuczpWYXJpYW50IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAt +LT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVmFyaWFudCI+DQogICAgPHhzOmFubm90YXRp +b24+DQogICAgICA8eHM6YXBwaW5mbz4NCiAgICAgICAgPElzVmFsdWVUeXBlIHhtbG5zPSJodHRw +Oi8vc2NoZW1hcy5taWNyb3NvZnQuY29tLzIwMDMvMTAvU2VyaWFsaXphdGlvbi8iPnRydWU8L0lz +VmFsdWVUeXBlPg0KICAgICAgPC94czphcHBpbmZvPg0KICAgIDwveHM6YW5ub3RhdGlvbj4NCiAg +ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1ZSIgbWluT2NjdXJz +PSIwIiBuaWxsYWJsZT0idHJ1ZSI+DQogICAgICAgIDx4czpjb21wbGV4VHlwZT4NCiAgICAgICAg +ICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgICA8eHM6YW55IG1pbk9jY3Vycz0iMCIgcHJvY2Vz +c0NvbnRlbnRzPSJsYXgiIC8+DQogICAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgICAgPC94 +czpjb21wbGV4VHlwZT4NCiAgICAgIDwveHM6ZWxlbWVudD4NCiAgICA8L3hzOnNlcXVlbmNlPg0K +ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJWYXJpYW50IiB0eXBlPSJ0 +bnM6VmFyaWFudCIgbmlsbGFibGU9InRydWUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9 +Ikxpc3RPZlZhcmlhbnQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h +bWU9IlZhcmlhbnQiIHR5cGU9InRuczpWYXJpYW50IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i +dW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog +IDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlZhcmlhbnQiIHR5cGU9InRuczpMaXN0T2ZWYXJpYW50 +IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l +PSJEYXRhVmFsdWUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 +IlZhbHVlIiB0eXBlPSJ0bnM6VmFyaWFudCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iU3RhdHVzQ29kZSIgdHlwZT0idG5zOlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0i +MCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNvdXJjZVRpbWVzdGFtcCIgdHlwZT0ieHM6 +ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNvdXJj +ZVBpY29zZWNvbmRzIiB0eXBlPSJ4czp1bnNpZ25lZFNob3J0IiBtaW5PY2N1cnM9IjAiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJUaW1lc3RhbXAiIHR5cGU9InhzOmRhdGVUaW1l +IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJQaWNvc2Vj +b25kcyIgdHlwZT0ieHM6dW5zaWduZWRTaG9ydCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6 +c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRhdGFW +YWx1ZSIgdHlwZT0idG5zOkRhdGFWYWx1ZSIgbmlsbGFibGU9InRydWUiLz4NCg0KICA8eHM6Y29t +cGxleFR5cGUgbmFtZT0iTGlzdE9mRGF0YVZhbHVlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhVmFsdWUiIHR5cGU9InRuczpEYXRhVmFsdWUiIG1pbk9j Y3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxp -c3RPZkJ5dGVTdHJpbmciIHR5cGU9InRuczpMaXN0T2ZCeXRlU3RyaW5nIiBuaWxsYWJsZT0idHJ1 -ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZYbWxFbGVt -ZW50Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJYbWxFbGVt -ZW50IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSI+ -DQogICAgICAgIDx4czpjb21wbGV4VHlwZT4NCiAgICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAg -ICAgICAgICA8eHM6YW55IG1pbk9jY3Vycz0iMCIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiLz4NCiAg -ICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPg0KICAgICAg -PC94czplbGVtZW50Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog -IDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlhtbEVsZW1lbnQiIHR5cGU9InRuczpMaXN0T2ZYbWxF -bGVtZW50IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlw -ZSBuYW1lPSJOb2RlSWQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IklkZW50aWZpZXIiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9 -IjEiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik5vZGVJZCIgdHlwZT0idG5zOk5vZGVJZCIgbmls -bGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlz -dE9mTm9kZUlkIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJO -b2RlSWQiIHR5cGU9InRuczpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k -ZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk5vZGVJZCIgdHlwZT0idG5zOkxpc3RP -Zk5vZGVJZCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5 -cGUgbmFtZT0iRXhwYW5kZWROb2RlSWQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl -bGVtZW50IG5hbWU9IklkZW50aWZpZXIiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBt -YXhPY2N1cnM9IjEiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv -eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkV4cGFuZGVkTm9kZUlkIiB0eXBl -PSJ0bnM6RXhwYW5kZWROb2RlSWQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAg -PHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkV4cGFuZGVkTm9kZUlkIj4NCiAgICA8eHM6c2Vx -dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFeHBhbmRlZE5vZGVJZCIgdHlwZT0idG5z -OkV4cGFuZGVkTm9kZUlkIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxs +c3RPZkRhdGFWYWx1ZSIgdHlwZT0idG5zOkxpc3RPZkRhdGFWYWx1ZSIgbmlsbGFibGU9InRydWUi +PjwveHM6ZWxlbWVudD4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJJbnZva2VTZXJ2aWNlUmVxdWVz +dCIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgPHhzOmVsZW1l +bnQgbmFtZT0iSW52b2tlU2VydmljZVJlc3BvbnNlIiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG5p +bGxhYmxlPSJ0cnVlIiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IkltYWdlQk1QIiB0eXBlPSJ4 +czpiYXNlNjRCaW5hcnkiIC8+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iSW1hZ2VHSUYiIHR5cGU9 +InhzOmJhc2U2NEJpbmFyeSIgLz4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJJbWFnZUpQRyIgdHlw +ZT0ieHM6YmFzZTY0QmluYXJ5IiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IkltYWdlUE5HIiB0 +eXBlPSJ4czpiYXNlNjRCaW5hcnkiIC8+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iQXVkaW9EYXRh +VHlwZSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l +PSJVbmlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6 +Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlVuaW9uIiB0eXBlPSJ0bnM6VW5pb24i +IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlVuaW9uIj4NCiAgICA8eHM6c2Vx +dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVbmlvbiIgdHlwZT0idG5zOlVuaW9uIiBt +aW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg +ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l +PSJMaXN0T2ZVbmlvbiIgdHlwZT0idG5zOkxpc3RPZlVuaW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94 +czplbGVtZW50Pg0KDQogIDx4czplbGVtZW50IG5hbWU9IkJpdEZpZWxkTWFza0RhdGFUeXBlIiB0 +eXBlPSJ4czp1bnNpZ25lZExvbmciIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IktleVZh +bHVlUGFpciI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iS2V5 +IiB0eXBlPSJ1YTpRdWFsaWZpZWROYW1lIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFsdWUiIHR5cGU9InVhOlZhcmlhbnQiIG1pbk9j +Y3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8 +eHM6ZWxlbWVudCBuYW1lPSJLZXlWYWx1ZVBhaXIiIHR5cGU9InRuczpLZXlWYWx1ZVBhaXIiIC8+ +DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZktleVZhbHVlUGFpciI+DQogICAgPHhz +OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iS2V5VmFsdWVQYWlyIiB0eXBlPSJ0 +bnM6S2V5VmFsdWVQYWlyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxs YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K -ICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZFeHBhbmRlZE5vZGVJZCIgdHlwZT0idG5zOkxpc3RP -ZkV4cGFuZGVkTm9kZUlkIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpj -b21wbGV4VHlwZSBuYW1lPSJTdGF0dXNDb2RlIj4NCiAgICA8eHM6YW5ub3RhdGlvbj4NCiAgICAg -IDx4czphcHBpbmZvPg0KICAgICAgICA8SXNWYWx1ZVR5cGUgeG1sbnM9Imh0dHA6Ly9zY2hlbWFz -Lm1pY3Jvc29mdC5jb20vMjAwMy8xMC9TZXJpYWxpemF0aW9uLyI+dHJ1ZTwvSXNWYWx1ZVR5cGU+ -DQogICAgICA8L3hzOmFwcGluZm8+DQogICAgPC94czphbm5vdGF0aW9uPg0KICAgIDx4czpzZXF1 -ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNvZGUiIHR5cGU9InhzOnVuc2lnbmVkSW50 -IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw -ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhdHVzQ29kZSIgdHlwZT0idG5zOlN0YXR1c0NvZGUi -PjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mU3RhdHVzQ29k -ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhdHVzQ29k -ZSIgdHlwZT0idG5zOlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k -ZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs -ZW1lbnQgbmFtZT0iTGlzdE9mU3RhdHVzQ29kZSIgdHlwZT0idG5zOkxpc3RPZlN0YXR1c0NvZGUi +ICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZLZXlWYWx1ZVBhaXIiIHR5cGU9InRuczpMaXN0T2ZL +ZXlWYWx1ZVBhaXIiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBs +ZXhUeXBlIG5hbWU9IkFkZGl0aW9uYWxQYXJhbWV0ZXJzVHlwZSI+DQogICAgPHhzOnNlcXVlbmNl +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFyYW1ldGVycyIgdHlwZT0idG5zOkxpc3RPZktl +eVZhbHVlUGFpciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl +cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBZGRpdGlv +bmFsUGFyYW1ldGVyc1R5cGUiIHR5cGU9InRuczpBZGRpdGlvbmFsUGFyYW1ldGVyc1R5cGUiIC8+ +DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkVwaGVtZXJhbEtleVR5cGUiPg0KICAgIDx4czpz +ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlB1YmxpY0tleSIgdHlwZT0ieHM6YmFz +ZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iU2lnbmF0dXJlIiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0i +MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 +VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRXBoZW1lcmFsS2V5VHlwZSIgdHlwZT0idG5zOkVw +aGVtZXJhbEtleVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkVuZHBvaW50VHlw +ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5kcG9pbnRV +cmwiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9IlNlY3VyaXR5TW9kZSIgdHlwZT0idG5zOk1lc3NhZ2VTZWN1 +cml0eU1vZGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlY3Vy +aXR5UG9saWN5VXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy +dWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUcmFuc3BvcnRQcm9maWxlVXJpIiB0eXBl +PSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpz +ZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRW5kcG9p +bnRUeXBlIiB0eXBlPSJ0bnM6RW5kcG9pbnRUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu +YW1lPSJMaXN0T2ZFbmRwb2ludFR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IkVuZHBvaW50VHlwZSIgdHlwZT0idG5zOkVuZHBvaW50VHlwZSIgbWluT2Nj +dXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94 +czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlz +dE9mRW5kcG9pbnRUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mRW5kcG9pbnRUeXBlIiBuaWxsYWJsZT0i +dHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSYXRpb25hbE51 +bWJlciI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTnVtZXJh +dG9yIiB0eXBlPSJ4czppbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h +bWU9IkRlbm9taW5hdG9yIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0K +ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h +bWU9IlJhdGlvbmFsTnVtYmVyIiB0eXBlPSJ0bnM6UmF0aW9uYWxOdW1iZXIiIC8+DQoNCiAgPHhz +OmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlJhdGlvbmFsTnVtYmVyIj4NCiAgICA8eHM6c2VxdWVu +Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSYXRpb25hbE51bWJlciIgdHlwZT0idG5zOlJh +dGlvbmFsTnVtYmVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJs +ZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8 +eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZSYXRpb25hbE51bWJlciIgdHlwZT0idG5zOkxpc3RPZlJh +dGlvbmFsTnVtYmVyIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21w +bGV4VHlwZSBuYW1lPSJWZWN0b3IiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVl +bmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJWZWN0b3IiIHR5 +cGU9InRuczpWZWN0b3IiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlZlY3Rv +ciI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmVjdG9yIiB0 +eXBlPSJ0bnM6VmVjdG9yIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxs +YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K +ICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZWZWN0b3IiIHR5cGU9InRuczpMaXN0T2ZWZWN0b3Ii IG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9 -IkRpYWdub3N0aWNJbmZvIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJTeW1ib2xpY0lkIiB0eXBlPSJ4czppbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9Ik5hbWVzcGFjZVVyaSIgdHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAi -IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMb2NhbGUiIHR5cGU9InhzOmludCIgbWluT2Nj -dXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTG9jYWxpemVkVGV4dCIgdHlwZT0i -eHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBZGRpdGlv -bmFsSW5mbyIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJJbm5lclN0YXR1c0NvZGUiIHR5cGU9InRuczpTdGF0dXNDb2RlIiBtaW5PY2N1 -cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbm5lckRpYWdub3N0aWNJbmZvIiB0 -eXBlPSJ0bnM6RGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVl -bmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGlj -SW5mbyIgdHlwZT0idG5zOkRpYWdub3N0aWNJbmZvIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVt -ZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZEaWFnbm9zdGljSW5mbyI+DQog -ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm8i -IHR5cGU9InRuczpEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91 -bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w -bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRGlhZ25vc3RpY0luZm8iIHR5cGU9 -InRuczpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4N -Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTG9jYWxpemVkVGV4dCI+DQogICAgPHhzOnNlcXVl -bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTG9jYWxlIiB0eXBlPSJ4czpzdHJpbmciIG1p -bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJU -ZXh0IiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +IlRocmVlRFZlY3RvciI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQog +ICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpWZWN0b3IiPg0KICAgICAgICA8eHM6c2VxdWVu +Y2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iWCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5P +Y2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iWSIgdHlwZT0ieHM6ZG91 +YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iWiIgdHlw +ZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQog +ICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNv +bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJUaHJlZURWZWN0b3IiIHR5cGU9InRuczpU +aHJlZURWZWN0b3IiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlRocmVlRFZl +Y3RvciI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGhyZWVE +VmVjdG9yIiB0eXBlPSJ0bnM6VGhyZWVEVmVjdG9yIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i +dW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz +OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZUaHJlZURWZWN0b3IiIHR5 +cGU9InRuczpMaXN0T2ZUaHJlZURWZWN0b3IiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+ +DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNhcnRlc2lhbkNvb3JkaW5hdGVzIj4NCiAgICA8 +eHM6c2VxdWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg +PHhzOmVsZW1lbnQgbmFtZT0iQ2FydGVzaWFuQ29vcmRpbmF0ZXMiIHR5cGU9InRuczpDYXJ0ZXNp +YW5Db29yZGluYXRlcyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQ2FydGVz +aWFuQ29vcmRpbmF0ZXMiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h +bWU9IkNhcnRlc2lhbkNvb3JkaW5hdGVzIiB0eXBlPSJ0bnM6Q2FydGVzaWFuQ29vcmRpbmF0ZXMi +IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h -bWU9IkxvY2FsaXplZFRleHQiIHR5cGU9InRuczpMb2NhbGl6ZWRUZXh0IiBuaWxsYWJsZT0idHJ1 -ZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mTG9jYWxpemVkVGV4dCI+DQog -ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTG9jYWxpemVkVGV4dCIg -dHlwZT0idG5zOkxvY2FsaXplZFRleHQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k -ZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkxvY2FsaXplZFRleHQiIHR5cGU9InRu -czpMaXN0T2ZMb2NhbGl6ZWRUZXh0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQog -IDx4czpjb21wbGV4VHlwZSBuYW1lPSJRdWFsaWZpZWROYW1lIj4NCiAgICA8eHM6c2VxdWVuY2U+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lc3BhY2VJbmRleCIgdHlwZT0ieHM6dW5zaWdu -ZWRTaG9ydCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmFtZSIg -dHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv -eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlF1 -YWxpZmllZE5hbWUiIHR5cGU9InRuczpRdWFsaWZpZWROYW1lIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUXVhbGlmaWVkTmFtZSI+DQogICAgPHhz -OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUXVhbGlmaWVkTmFtZSIgdHlwZT0i -dG5zOlF1YWxpZmllZE5hbWUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5p -bGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+ -DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlF1YWxpZmllZE5hbWUiIHR5cGU9InRuczpMaXN0 -T2ZRdWFsaWZpZWROYW1lIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDwhLS0N -CiAgICBTb21lIGVudmlyb25tZW50cyByZXF1aXJlIGEgV1NETC9YU0Qgd2hpY2ggZXhwbGljaXRs -eSBkZWZpbmVzIGFsbCBwb3NzaWJsZSB0eXBlcy4NCiAgICBUaGUgVUEgV1NETC9YU0QgY2FuIGJl -IG1vZGlmaWVkIHRvIHN1cHBvcnQgdGhlc2UgZW52aXJvbm1lbnRzIGJ5IHJlcGxhY2luZyB0aGUN -CiAgICBkZWZpbml0aW9ucyBvZiB0aGUgRXh0ZW5zaW9uT2JqZWN0Qm9keSBhbmQgVmFyaWFudFZh -bHVlIGNvbXBsZXggdHlwZXMgd2l0aCB0aGUNCiAgICBkZWZpbml0aW9ucyBpbiB0aGUgY29tbWVu -dHMgc2hvd24gaGVyZS4gRGV2ZWxvcGVycyB3b3VsZCB0aGVuIGRlZmluZSBzdWJ0eXBlcw0KICAg -IG9mIHRoZSBFeHRlbnNpb25PYmplY3RCb2R5IHR5cGUgd2hpY2ggZXhwbGljaXRseSBkZWNsYXJl -IGEgY2hvaWNlIGJldHdlZW4gYWxsIG9mIHRoZQ0KICAgIGNvbXBsZXggdHlwZXMgdXNlZCBieSB0 -aGUgc3lzdGVtLiBUaGUgRXhhbXBsZUV4dGVuc2lvbk9iamVjdEJvZHkgc3VidHlwZSBpcyBwcm92 -aWRlcw0KICAgIGEgdGVtcGxhdGUgYmFzZWQgb24gYSBmZXcgY29tbW9uIFVBLWRlZmluZWQgY29t -cGxleCB0eXBlcy4NCiAgICAtLT4NCg0KICA8IS0tDQogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9 -IkV4dGVuc2lvbk9iamVjdEJvZHkiIC8+DQoNCiAgICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRXhh -bXBsZUV4dGVuc2lvbk9iamVjdEJvZHkiPg0KICAgICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAg -ICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpFeHRlbnNpb25PYmplY3RCb2R5Ij4NCiAgICAg -ICAgICA8eHM6Y2hvaWNlPg0KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXJndW1lbnQi -IHR5cGU9InRuczpBcmd1bWVudCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg -ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlVzZXJJZGVudGl0eVRva2VuIiB0eXBlPSJ0bnM6 -VXNlcklkZW50aXR5VG9rZW4iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg -ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVc2VyTmFtZUlkZW50aXR5VG9rZW4iIHR5cGU9InRu -czpVc2VyTmFtZUlkZW50aXR5VG9rZW4iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+ -DQogICAgICAgICAgPC94czpjaG9pY2U+DQogICAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgICAg -PC94czpjb21wbGV4Q29udGVudD4NCiAgICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogICAgPHhzOmNv -bXBsZXhUeXBlIG5hbWU9IkV4dGVuc2lvbk9iamVjdCI+DQogICAgICA8eHM6c2VxdWVuY2U+DQog -ICAgICAgIDx4czplbGVtZW50IG5hbWU9IlR5cGVJZCIgdHlwZT0idG5zOkV4cGFuZGVkTm9kZUlk -IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJCb2R5IiBtaW5PY2N1cnM9IjAiIHR5cGU9InRuczpFeHRlbnNpb25PYmplY3RCb2R5IiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgPC94czpjb21wbGV4 -VHlwZT4NCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJFeHRlbnNpb25PYmplY3QiIHR5cGU9InRuczpF -eHRlbnNpb25PYmplY3QiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIC0tPg0KDQogIDx4czpjb21w -bGV4VHlwZSBuYW1lPSJFeHRlbnNpb25PYmplY3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IlR5cGVJZCIgdHlwZT0idG5zOk5vZGVJZCIgbWluT2NjdXJzPSIw -IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJvZHkiIG1pbk9j -Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiPg0KICAgICAgICA8eHM6Y29tcGxleFR5cGU+DQogICAg -ICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgICAgPHhzOmFueSBtaW5PY2N1cnM9IjAiIHBy -b2Nlc3NDb250ZW50cz0ibGF4Ii8+DQogICAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgICAg -PC94czpjb21wbGV4VHlwZT4NCiAgICAgIDwveHM6ZWxlbWVudD4NCiAgICA8L3hzOnNlcXVlbmNl -Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJFeHRlbnNpb25PYmpl -Y3QiIHR5cGU9InRuczpFeHRlbnNpb25PYmplY3QiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KDQogIDx4 -czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZFeHRlbnNpb25PYmplY3QiPg0KICAgIDx4czpzZXF1 -ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkV4dGVuc2lvbk9iamVjdCIgdHlwZT0idG5z -OkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmls -bGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N -CiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRXh0ZW5zaW9uT2JqZWN0IiB0eXBlPSJ0bnM6TGlz -dE9mRXh0ZW5zaW9uT2JqZWN0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDwh -LS0NCiAgICBTb21lIFdTREwvWE1MIGNvbXBpbGVycyBoYXZlIGlzc3VlcyB3aXRoIHRoZSB4czpj -aG9pY2UgY29uc3RydWN0LiBGb3IgdGhhdCByZWFzb24NCiAgICB0aGUgZGVmYXVsdCBkZWNsYXJh -dGlvbiBvZiBhIFZhcmlhbnQgdXNlcyB4czphbnkgY29uc3RydWN0LiBUaGUgc2NoZW1hIGFjdXR1 -YWxseQ0KICAgIGRlZmluZWQgYnkgdGhlIHNwZWNpZmljYXRpb24gaXMgcHJvdmlkZWQgYnkgdGhl -IE1hdHJpeCBhbmQgVmFyaWFudFZhbHVlIGNvbXBsZXggdHlwZXMNCiAgICBzaG93biBpbiBjb21t -ZW50cyBiZWxvdy4gQXBwbGljYXRpb24gZGV2ZWxvcGVycyBjYW4gcmVwbGFjZSB0aGUgVmFyaWFu -dFZhbHVlIGRlY2xhcmF0aW9uDQogICAgd2l0aCB0aGUgc3BlY2lmaWMgZGVjbGFyYXRpb24gaWYg -dGhleSBoYXZlIGEgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdGhhdCBjYW4gaGFuZGxlDQogICAg -dGhlIHhzOmNob2ljZSBjb25zdHJ1Y3QgaW4gYSByZWFzb25hYmxlIHdheS4NCiAgICAtLT4NCg0K -ICA8IS0tDQogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1hdHJpeCI+DQogICAgICA8eHM6c2Vx -dWVuY2U+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpbWVuc2lvbnMiIHR5cGU9InRuczpM -aXN0T2ZVSW50MzIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDx4 -czplbGVtZW50IG5hbWU9IlZhbHVlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIj4NCiAg -ICAgICAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgICAgICAgIDx4czpj -aG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJCb29sZWFuIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAg -ICAgICAgIDx4czplbGVtZW50IG5hbWU9IlNCeXRlIiB0eXBlPSJ4czpieXRlIiBtaW5PY2N1cnM9 -IjAiIC8+DQogICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkJ5dGUiIHR5cGU9InhzOnVu -c2lnbmVkQnl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJJbnQxNiIgdHlwZT0ieHM6c2hvcnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iVUludDE2IiB0eXBlPSJ4czp1bnNpZ25lZFNob3J0IiBtaW5P -Y2N1cnM9IjAiIC8+DQogICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkludDMyIiB0eXBl -PSJ4czppbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFt -ZT0iVUludDMyIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg -ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbnQ2NCIgdHlwZT0ieHM6bG9uZyIgbWluT2NjdXJz -PSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVSW50NjQiIHR5cGU9Inhz -OnVuc2lnbmVkTG9uZyIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJGbG9hdCIgdHlwZT0ieHM6ZmxvYXQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAg -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRG91YmxlIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vy -cz0iMCIgLz4NCiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RyaW5nIiB0eXBlPSJ4 -czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFt -ZT0iRGF0ZVRpbWUiIHR5cGU9InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAg -ICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikd1aWQiIHR5cGU9InRuczpHdWlkIiBtaW5PY2N1cnM9 -IjAiIC8+DQogICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkJ5dGVTdHJpbmciIHR5cGU9 -InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJYbWxFbGVtZW50IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIj4NCiAg -ICAgICAgICAgICAgICA8eHM6Y29tcGxleFR5cGU+DQogICAgICAgICAgICAgICAgICA8eHM6c2Vx -dWVuY2U+DQogICAgICAgICAgICAgICAgICAgIDx4czphbnkgbWluT2NjdXJzPSIwIiBwcm9jZXNz -Q29udGVudHM9ImxheCIgLz4NCiAgICAgICAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAg -ICAgICAgICAgICAgPC94czpjb21wbGV4VHlwZT4NCiAgICAgICAgICAgICAgPC94czplbGVtZW50 -Pg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0dXNDb2RlIiB0eXBlPSJ0bnM6 -U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJOb2RlSWQiIHR5cGU9InRuczpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAg -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRXhwYW5kZWROb2RlSWQiIHR5cGU9InRuczpFeHBhbmRl -ZE5vZGVJZCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJRdWFsaWZpZWROYW1lIiB0eXBlPSJ0bnM6UXVhbGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiAv -Pg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMb2NhbGl6ZWRUZXh0IiB0eXBlPSJ0 -bnM6TG9jYWxpemVkVGV4dCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJFeHRlbnNpb25PYmplY3QiIHR5cGU9InRuczpFeHRlbnNpb25PYmplY3QiIG1p -bk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFyaWFudCIg -dHlwZT0idG5zOlZhcmlhbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICAgIDwveHM6Y2hv -aWNlPg0KICAgICAgICAgIDwveHM6Y29tcGxleFR5cGU+DQogICAgICAgIDwveHM6ZWxlbWVudD4N -CiAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgPC94czpjb21wbGV4VHlwZT4NCiAgICA8eHM6ZWxl -bWVudCBuYW1lPSJNYXRyaXgiIHR5cGU9InRuczpNYXRyaXgiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K -DQogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlZhcmlhbnRWYWx1ZSI+DQogICAgICA8eHM6Y2hv -aWNlPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCb29sZWFuIiB0eXBlPSJ4czpib29sZWFu -IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9IlNCeXRlIiB0eXBl -PSJ4czpieXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9IkJ5 -dGUiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJJbnQxNiIgdHlwZT0ieHM6c2hvcnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAg -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVUludDE2IiB0eXBlPSJ4czp1bnNpZ25lZFNob3J0IiBt -aW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9IkludDMyIiB0eXBlPSJ4 -czppbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVUludDMy -IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJJbnQ2NCIgdHlwZT0ieHM6bG9uZyIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJVSW50NjQiIHR5cGU9InhzOnVuc2lnbmVkTG9uZyIgbWluT2Nj -dXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJGbG9hdCIgdHlwZT0ieHM6Zmxv -YXQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRG91YmxlIiB0 -eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFt -ZT0iU3RyaW5nIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPHhz -OmVsZW1lbnQgbmFtZT0iRGF0ZVRpbWUiIHR5cGU9InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAi -IC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikd1aWQiIHR5cGU9InRuczpHdWlkIiBtaW5P -Y2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9IkJ5dGVTdHJpbmciIHR5cGU9 -InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJYbWxFbGVtZW50IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIj4NCiAgICAgICAg -ICA8eHM6Y29tcGxleFR5cGU+DQogICAgICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAg -ICAgIDx4czphbnkgbWluT2NjdXJzPSIwIiBwcm9jZXNzQ29udGVudHM9ImxheCIgLz4NCiAgICAg -ICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICAgICAgPC94czpjb21wbGV4VHlwZT4NCiAgICAg -ICAgPC94czplbGVtZW50Pg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0dXNDb2RlIiB0 -eXBlPSJ0bnM6U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJOb2RlSWQiIHR5cGU9InRuczpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iRXhwYW5kZWROb2RlSWQiIHR5cGU9InRuczpFeHBhbmRlZE5v -ZGVJZCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJRdWFsaWZp -ZWROYW1lIiB0eXBlPSJ0bnM6UXVhbGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJMb2NhbGl6ZWRUZXh0IiB0eXBlPSJ0bnM6TG9jYWxpemVkVGV4 -dCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFeHRlbnNpb25P -YmplY3QiIHR5cGU9InRuczpFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mQm9vbGVhbiIgdHlwZT0idG5zOkxpc3RPZkJvb2xl -YW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mU0J5 -dGUiIHR5cGU9InRuczpMaXN0T2ZTQnl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJMaXN0T2ZCeXRlIiB0eXBlPSJ0bnM6TGlzdE9mQnl0ZSIgbWluT2NjdXJz -PSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZJbnQxNiIgdHlwZT0idG5z -Okxpc3RPZkludDE2IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9 -Ikxpc3RPZlVJbnQxNiIgdHlwZT0idG5zOkxpc3RPZlVJbnQxNiIgbWluT2NjdXJzPSIwIiAvPg0K -ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZJbnQzMiIgdHlwZT0idG5zOkxpc3RPZklu -dDMyIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlVJ -bnQzMiIgdHlwZT0idG5zOkxpc3RPZlVJbnQzMiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZJbnQ2NCIgdHlwZT0idG5zOkxpc3RPZkludDY0IiBtaW5P -Y2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlVJbnQ2NCIgdHlw -ZT0idG5zOkxpc3RPZlVJbnQ2NCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJMaXN0T2ZGbG9hdCIgdHlwZT0idG5zOkxpc3RPZkZsb2F0IiBtaW5PY2N1cnM9IjAi -IC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkRvdWJsZSIgdHlwZT0idG5zOkxp -c3RPZkRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJM -aXN0T2ZTdHJpbmciIHR5cGU9InRuczpMaXN0T2ZTdHJpbmciIG1pbk9jY3Vycz0iMCIgLz4NCiAg -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRGF0ZVRpbWUiIHR5cGU9InRuczpMaXN0T2ZE -YXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0 -T2ZHdWlkIiB0eXBlPSJ0bnM6TGlzdE9mR3VpZCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZCeXRlU3RyaW5nIiB0eXBlPSJ0bnM6TGlzdE9mQnl0ZVN0 -cmluZyIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZY -bWxFbGVtZW50IiB0eXBlPSJ0bnM6TGlzdE9mWG1sRWxlbWVudCIgbWluT2NjdXJzPSIwIiAvPg0K -ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZTdGF0dXNDb2RlIiB0eXBlPSJ0bnM6TGlz -dE9mU3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJMaXN0T2ZOb2RlSWQiIHR5cGU9InRuczpMaXN0T2ZOb2RlSWQiIG1pbk9jY3Vycz0iMCIgLz4N -CiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRXhwYW5kZWROb2RlSWQiIHR5cGU9InRu -czpMaXN0T2ZFeHBhbmRlZE5vZGVJZCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJMaXN0T2ZRdWFsaWZpZWROYW1lIiB0eXBlPSJ0bnM6TGlzdE9mUXVhbGlmaWVk -TmFtZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZM -b2NhbGl6ZWRUZXh0IiB0eXBlPSJ0bnM6TGlzdE9mTG9jYWxpemVkVGV4dCIgbWluT2NjdXJzPSIw -IiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZFeHRlbnNpb25PYmplY3QiIHR5 -cGU9InRuczpMaXN0T2ZFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVmFyaWFudCIgdHlwZT0idG5zOkxpc3RPZlZhcmlhbnQi -IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF0cml4IiB0eXBl -PSJ0bnM6TWF0cml4IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8L3hzOmNob2ljZT4NCiAgICA8 -L3hzOmNvbXBsZXhUeXBlPg0KDQogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlZhcmlhbnQiPg0K -ICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1ZSIgdHlw -ZT0idG5zOlZhcmlhbnRWYWx1ZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg -ICAgIDwveHM6c2VxdWVuY2U+DQogICAgPC94czpjb21wbGV4VHlwZT4NCiAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJWYXJpYW50IiB0eXBlPSJ0bnM6VmFyaWFudCIgbmlsbGFibGU9InRydWUiIC8+DQog -ICAgLS0+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlZhcmlhbnQiPg0KICAgIDx4czphbm5v -dGF0aW9uPg0KICAgICAgPHhzOmFwcGluZm8+DQogICAgICAgIDxJc1ZhbHVlVHlwZSB4bWxucz0i -aHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS8yMDAzLzEwL1NlcmlhbGl6YXRpb24vIj50cnVl -PC9Jc1ZhbHVlVHlwZT4NCiAgICAgIDwveHM6YXBwaW5mbz4NCiAgICA8L3hzOmFubm90YXRpb24+ -DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFsdWUiIG1pbk9j -Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiPg0KICAgICAgICA8eHM6Y29tcGxleFR5cGU+DQogICAg -ICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgICAgPHhzOmFueSBtaW5PY2N1cnM9IjAiIHBy -b2Nlc3NDb250ZW50cz0ibGF4IiAvPg0KICAgICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICAg -IDwveHM6Y29tcGxleFR5cGU+DQogICAgICA8L3hzOmVsZW1lbnQ+DQogICAgPC94czpzZXF1ZW5j -ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVmFyaWFudCIgdHlw -ZT0idG5zOlZhcmlhbnQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu -YW1lPSJMaXN0T2ZWYXJpYW50Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJWYXJpYW50IiB0eXBlPSJ0bnM6VmFyaWFudCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1 -cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl -Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZWYXJpYW50IiB0eXBlPSJ0bnM6TGlzdE9mVmFy -aWFudCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUg -bmFtZT0iRGF0YVZhbHVlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJWYWx1ZSIgdHlwZT0idG5zOlZhcmlhbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9IlN0YXR1c0NvZGUiIHR5cGU9InRuczpTdGF0dXNDb2RlIiBtaW5PY2N1 -cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTb3VyY2VUaW1lc3RhbXAiIHR5cGU9 -InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJT -b3VyY2VQaWNvc2Vjb25kcyIgdHlwZT0ieHM6dW5zaWduZWRTaG9ydCIgbWluT2NjdXJzPSIwIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyVGltZXN0YW1wIiB0eXBlPSJ4czpkYXRl -VGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyUGlj -b3NlY29uZHMiIHR5cGU9InhzOnVuc2lnbmVkU2hvcnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8 -L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJE -YXRhVmFsdWUiIHR5cGU9InRuczpEYXRhVmFsdWUiIG5pbGxhYmxlPSJ0cnVlIi8+DQoNCiAgPHhz -OmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkRhdGFWYWx1ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVZhbHVlIiB0eXBlPSJ0bnM6RGF0YVZhbHVlIiBt -aW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg -ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l -PSJMaXN0T2ZEYXRhVmFsdWUiIHR5cGU9InRuczpMaXN0T2ZEYXRhVmFsdWUiIG5pbGxhYmxlPSJ0 -cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iSW52b2tlU2VydmljZVJl -cXVlc3QiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgbmlsbGFibGU9InRydWUiIC8+DQogIDx4czpl -bGVtZW50IG5hbWU9Ikludm9rZVNlcnZpY2VSZXNwb25zZSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5 -IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJJbWFnZUJNUCIgdHlw -ZT0ieHM6YmFzZTY0QmluYXJ5IiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IkltYWdlR0lGIiB0 -eXBlPSJ4czpiYXNlNjRCaW5hcnkiIC8+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iSW1hZ2VKUEci -IHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgLz4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJJbWFnZVBO -RyIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IkF1ZGlv -RGF0YVR5cGUiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg -bmFtZT0iVW5pb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8 -L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJVbmlvbiIgdHlwZT0idG5zOlVu -aW9uIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZVbmlvbiI+DQogICAgPHhz -OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVW5pb24iIHR5cGU9InRuczpVbmlv -biIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+ -DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg -bmFtZT0iTGlzdE9mVW5pb24iIHR5cGU9InRuczpMaXN0T2ZVbmlvbiIgbmlsbGFibGU9InRydWUi -PjwveHM6ZWxlbWVudD4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJCaXRGaWVsZE1hc2tEYXRhVHlw -ZSIgdHlwZT0ieHM6dW5zaWduZWRMb25nIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJL -ZXlWYWx1ZVBhaXIiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IktleSIgdHlwZT0idWE6UXVhbGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 -ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlZhbHVlIiB0eXBlPSJ1YTpWYXJpYW50IiBt -aW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N -CiAgPHhzOmVsZW1lbnQgbmFtZT0iS2V5VmFsdWVQYWlyIiB0eXBlPSJ0bnM6S2V5VmFsdWVQYWly -IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZLZXlWYWx1ZVBhaXIiPg0KICAg -IDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IktleVZhbHVlUGFpciIgdHlw -ZT0idG5zOktleVZhbHVlUGFpciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIg -bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw -ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mS2V5VmFsdWVQYWlyIiB0eXBlPSJ0bnM6TGlz -dE9mS2V5VmFsdWVQYWlyIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpj -b21wbGV4VHlwZSBuYW1lPSJBZGRpdGlvbmFsUGFyYW1ldGVyc1R5cGUiPg0KICAgIDx4czpzZXF1 -ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlBhcmFtZXRlcnMiIHR5cGU9InRuczpMaXN0 -T2ZLZXlWYWx1ZVBhaXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94 -czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQWRk -aXRpb25hbFBhcmFtZXRlcnNUeXBlIiB0eXBlPSJ0bnM6QWRkaXRpb25hbFBhcmFtZXRlcnNUeXBl -IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJFcGhlbWVyYWxLZXlUeXBlIj4NCiAgICA8 -eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaWNLZXkiIHR5cGU9Inhz -OmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9IlNpZ25hdHVyZSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1 -cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29t -cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkVwaGVtZXJhbEtleVR5cGUiIHR5cGU9InRu -czpFcGhlbWVyYWxLZXlUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJFbmRwb2lu -dFR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVuZHBv -aW50VXJsIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0eU1vZGUiIHR5cGU9InRuczpNZXNzYWdl -U2VjdXJpdHlNb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJT -ZWN1cml0eVBvbGljeVVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl -PSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNwb3J0UHJvZmlsZVVyaSIg -dHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv -eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkVu -ZHBvaW50VHlwZSIgdHlwZT0idG5zOkVuZHBvaW50VHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5 -cGUgbmFtZT0iTGlzdE9mRW5kcG9pbnRUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJFbmRwb2ludFR5cGUiIHR5cGU9InRuczpFbmRwb2ludFR5cGUiIG1p -bk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +bWU9Ikxpc3RPZkNhcnRlc2lhbkNvb3JkaW5hdGVzIiB0eXBlPSJ0bnM6TGlzdE9mQ2FydGVzaWFu +Q29vcmRpbmF0ZXMiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBs +ZXhUeXBlIG5hbWU9IlRocmVlRENhcnRlc2lhbkNvb3JkaW5hdGVzIj4NCiAgICA8eHM6Y29tcGxl +eENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkNh +cnRlc2lhbkNvb3JkaW5hdGVzIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4 +czplbGVtZW50IG5hbWU9IlgiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAg +ICAgICAgIDx4czplbGVtZW50IG5hbWU9IlkiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIw +IiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IloiIHR5cGU9InhzOmRvdWJsZSIgbWlu +T2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNp +b24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz +OmVsZW1lbnQgbmFtZT0iVGhyZWVEQ2FydGVzaWFuQ29vcmRpbmF0ZXMiIHR5cGU9InRuczpUaHJl +ZURDYXJ0ZXNpYW5Db29yZGluYXRlcyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlz +dE9mVGhyZWVEQ2FydGVzaWFuQ29vcmRpbmF0ZXMiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg +IDx4czplbGVtZW50IG5hbWU9IlRocmVlRENhcnRlc2lhbkNvb3JkaW5hdGVzIiB0eXBlPSJ0bnM6 +VGhyZWVEQ2FydGVzaWFuQ29vcmRpbmF0ZXMiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJv +dW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29t +cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlRocmVlRENhcnRlc2lhbkNvb3Jk +aW5hdGVzIiB0eXBlPSJ0bnM6TGlzdE9mVGhyZWVEQ2FydGVzaWFuQ29vcmRpbmF0ZXMiIG5pbGxh +YmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik9yaWVu +dGF0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpj +b21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iT3JpZW50YXRpb24iIHR5cGU9InRuczpP +cmllbnRhdGlvbiIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mT3JpZW50YXRp +b24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik9yaWVudGF0 +aW9uIiB0eXBlPSJ0bnM6T3JpZW50YXRpb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJv +dW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29t +cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk9yaWVudGF0aW9uIiB0eXBlPSJ0 +bnM6TGlzdE9mT3JpZW50YXRpb24iIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAg +PHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRocmVlRE9yaWVudGF0aW9uIj4NCiAgICA8eHM6Y29tcGxl +eENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOk9y +aWVudGF0aW9uIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50 +IG5hbWU9IkEiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4 +czplbGVtZW50IG5hbWU9IkIiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAg +ICAgICAgIDx4czplbGVtZW50IG5hbWU9IkMiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIw +IiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAg +PC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg +bmFtZT0iVGhyZWVET3JpZW50YXRpb24iIHR5cGU9InRuczpUaHJlZURPcmllbnRhdGlvbiIgLz4N +Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mVGhyZWVET3JpZW50YXRpb24iPg0KICAg +IDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRocmVlRE9yaWVudGF0aW9u +IiB0eXBlPSJ0bnM6VGhyZWVET3JpZW50YXRpb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1 +bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6 +Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlRocmVlRE9yaWVudGF0aW9u +IiB0eXBlPSJ0bnM6TGlzdE9mVGhyZWVET3JpZW50YXRpb24iIG5pbGxhYmxlPSJ0cnVlIj48L3hz +OmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkZyYW1lIj4NCiAgICA8eHM6c2Vx +dWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs +ZW1lbnQgbmFtZT0iRnJhbWUiIHR5cGU9InRuczpGcmFtZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5 +cGUgbmFtZT0iTGlzdE9mRnJhbWUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IkZyYW1lIiB0eXBlPSJ0bnM6RnJhbWUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJz +PSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv +eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkZyYW1lIiB0eXBlPSJ0 +bnM6TGlzdE9mRnJhbWUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNv +bXBsZXhUeXBlIG5hbWU9IlRocmVlREZyYW1lIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4 +ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkZyYW1lIj4NCiAgICAg +ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkNhcnRlc2lhbkNv +b3JkaW5hdGVzIiB0eXBlPSJ0bnM6VGhyZWVEQ2FydGVzaWFuQ29vcmRpbmF0ZXMiIG1pbk9jY3Vy +cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iT3Jp +ZW50YXRpb24iIHR5cGU9InRuczpUaHJlZURPcmllbnRhdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxs +YWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5z +aW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 +czplbGVtZW50IG5hbWU9IlRocmVlREZyYW1lIiB0eXBlPSJ0bnM6VGhyZWVERnJhbWUiIC8+DQoN +CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlRocmVlREZyYW1lIj4NCiAgICA8eHM6c2Vx +dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUaHJlZURGcmFtZSIgdHlwZT0idG5zOlRo +cmVlREZyYW1lIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0i +dHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6 +ZWxlbWVudCBuYW1lPSJMaXN0T2ZUaHJlZURGcmFtZSIgdHlwZT0idG5zOkxpc3RPZlRocmVlREZy +YW1lIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpzaW1wbGVUeXBlICBu +YW1lPSJPcGVuRmlsZU1vZGUiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmci +Pg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJSZWFkXzEiIC8+DQogICAgICA8eHM6ZW51 +bWVyYXRpb24gdmFsdWU9IldyaXRlXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9 +IkVyYXNlRXhpc3RpbmdfNCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQXBwZW5k +XzgiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6 +ZWxlbWVudCBuYW1lPSJPcGVuRmlsZU1vZGUiIHR5cGU9InRuczpPcGVuRmlsZU1vZGUiIC8+DQoN +CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZk9wZW5GaWxlTW9kZSI+DQogICAgPHhzOnNl +cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iT3BlbkZpbGVNb2RlIiB0eXBlPSJ0bnM6 +T3BlbkZpbGVNb2RlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAg IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 -Ikxpc3RPZkVuZHBvaW50VHlwZSIgdHlwZT0idG5zOkxpc3RPZkVuZHBvaW50VHlwZSIgbmlsbGFi -bGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmF0aW9u -YWxOdW1iZXIiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik51 -bWVyYXRvciIgdHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJEZW5vbWluYXRvciIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIg -Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu -dCBuYW1lPSJSYXRpb25hbE51bWJlciIgdHlwZT0idG5zOlJhdGlvbmFsTnVtYmVyIiAvPg0KDQog -IDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZSYXRpb25hbE51bWJlciI+DQogICAgPHhzOnNl -cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmF0aW9uYWxOdW1iZXIiIHR5cGU9InRu -czpSYXRpb25hbE51bWJlciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmls +Ikxpc3RPZk9wZW5GaWxlTW9kZSIgdHlwZT0idG5zOkxpc3RPZk9wZW5GaWxlTW9kZSIgbmlsbGFi +bGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iSWRlbnRp +dHlDcml0ZXJpYVR5cGUiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0K +ICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJVc2VyTmFtZV8xIiAvPg0KICAgICAgPHhzOmVu +dW1lcmF0aW9uIHZhbHVlPSJUaHVtYnByaW50XzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24g +dmFsdWU9IlJvbGVfMyIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iR3JvdXBJZF80 +IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJBbm9ueW1vdXNfNSIgLz4NCiAgICAg +IDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQXV0aGVudGljYXRlZFVzZXJfNiIgLz4NCiAgICAgIDx4 +czplbnVtZXJhdGlvbiB2YWx1ZT0iQXBwbGljYXRpb25fNyIgLz4NCiAgICA8L3hzOnJlc3RyaWN0 +aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IklkZW50aXR5Q3Jp +dGVyaWFUeXBlIiB0eXBlPSJ0bnM6SWRlbnRpdHlDcml0ZXJpYVR5cGUiIC8+DQoNCiAgPHhzOmNv +bXBsZXhUeXBlIG5hbWU9Ikxpc3RPZklkZW50aXR5Q3JpdGVyaWFUeXBlIj4NCiAgICA8eHM6c2Vx +dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJZGVudGl0eUNyaXRlcmlhVHlwZSIgdHlw +ZT0idG5zOklkZW50aXR5Q3JpdGVyaWFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5i +b3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 +czplbGVtZW50IG5hbWU9Ikxpc3RPZklkZW50aXR5Q3JpdGVyaWFUeXBlIiB0eXBlPSJ0bnM6TGlz +dE9mSWRlbnRpdHlDcml0ZXJpYVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoN +CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IklkZW50aXR5TWFwcGluZ1J1bGVUeXBlIj4NCiAgICA8 +eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDcml0ZXJpYVR5cGUiIHR5cGU9 +InRuczpJZGVudGl0eUNyaXRlcmlhVHlwZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iQ3JpdGVyaWEiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxs +YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K +ICA8eHM6ZWxlbWVudCBuYW1lPSJJZGVudGl0eU1hcHBpbmdSdWxlVHlwZSIgdHlwZT0idG5zOklk +ZW50aXR5TWFwcGluZ1J1bGVUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0 +T2ZJZGVudGl0eU1hcHBpbmdSdWxlVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iSWRlbnRpdHlNYXBwaW5nUnVsZVR5cGUiIHR5cGU9InRuczpJZGVudGl0 +eU1hcHBpbmdSdWxlVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmls bGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N -CiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUmF0aW9uYWxOdW1iZXIiIHR5cGU9InRuczpMaXN0 -T2ZSYXRpb25hbE51bWJlciIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6 -Y29tcGxleFR5cGUgbmFtZT0iVmVjdG9yIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgPC94czpz -ZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVmVjdG9y -IiB0eXBlPSJ0bnM6VmVjdG9yIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZW -ZWN0b3IiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlZlY3Rv -ciIgdHlwZT0idG5zOlZlY3RvciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIg -bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw -ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVmVjdG9yIiB0eXBlPSJ0bnM6TGlzdE9mVmVj -dG9yIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBu -YW1lPSJUaHJlZURWZWN0b3IiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2Ui -Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6VmVjdG9yIj4NCiAgICAgICAgPHhzOnNl -cXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlgiIHR5cGU9InhzOmRvdWJsZSIg -bWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlkiIHR5cGU9Inhz -OmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Iloi -IHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNl -Pg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94 -czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVGhyZWVEVmVjdG9yIiB0eXBlPSJ0 -bnM6VGhyZWVEVmVjdG9yIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZUaHJl -ZURWZWN0b3IiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRo -cmVlRFZlY3RvciIgdHlwZT0idG5zOlRocmVlRFZlY3RvciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1 -cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg -PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVGhyZWVEVmVjdG9y -IiB0eXBlPSJ0bnM6TGlzdE9mVGhyZWVEVmVjdG9yIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVt -ZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJDYXJ0ZXNpYW5Db29yZGluYXRlcyI+DQog -ICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+ -DQogIDx4czplbGVtZW50IG5hbWU9IkNhcnRlc2lhbkNvb3JkaW5hdGVzIiB0eXBlPSJ0bnM6Q2Fy -dGVzaWFuQ29vcmRpbmF0ZXMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkNh -cnRlc2lhbkNvb3JkaW5hdGVzIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJDYXJ0ZXNpYW5Db29yZGluYXRlcyIgdHlwZT0idG5zOkNhcnRlc2lhbkNvb3JkaW5h -dGVzIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu -dCBuYW1lPSJMaXN0T2ZDYXJ0ZXNpYW5Db29yZGluYXRlcyIgdHlwZT0idG5zOkxpc3RPZkNhcnRl -c2lhbkNvb3JkaW5hdGVzIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpj -b21wbGV4VHlwZSBuYW1lPSJUaHJlZURDYXJ0ZXNpYW5Db29yZGluYXRlcyI+DQogICAgPHhzOmNv -bXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRu -czpDYXJ0ZXNpYW5Db29yZGluYXRlcyI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJYIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4N -CiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJZIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vy -cz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJaIiB0eXBlPSJ4czpkb3VibGUi -IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0 -ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQog -IDx4czplbGVtZW50IG5hbWU9IlRocmVlRENhcnRlc2lhbkNvb3JkaW5hdGVzIiB0eXBlPSJ0bnM6 -VGhyZWVEQ2FydGVzaWFuQ29vcmRpbmF0ZXMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9 -Ikxpc3RPZlRocmVlRENhcnRlc2lhbkNvb3JkaW5hdGVzIj4NCiAgICA8eHM6c2VxdWVuY2U+DQog -ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUaHJlZURDYXJ0ZXNpYW5Db29yZGluYXRlcyIgdHlwZT0i -dG5zOlRocmVlRENhcnRlc2lhbkNvb3JkaW5hdGVzIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i -dW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz -OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZUaHJlZURDYXJ0ZXNpYW5D -b29yZGluYXRlcyIgdHlwZT0idG5zOkxpc3RPZlRocmVlRENhcnRlc2lhbkNvb3JkaW5hdGVzIiBu -aWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJP -cmllbnRhdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv -eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik9yaWVudGF0aW9uIiB0eXBlPSJ0 -bnM6T3JpZW50YXRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZk9yaWVu -dGF0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJPcmll -bnRhdGlvbiIgdHlwZT0idG5zOk9yaWVudGF0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i -dW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz -OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZPcmllbnRhdGlvbiIgdHlw -ZT0idG5zOkxpc3RPZk9yaWVudGF0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0K -DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJUaHJlZURPcmllbnRhdGlvbiI+DQogICAgPHhzOmNv -bXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRu -czpPcmllbnRhdGlvbiI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJBIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJCIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4N -CiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vy -cz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0K -ICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt -ZW50IG5hbWU9IlRocmVlRE9yaWVudGF0aW9uIiB0eXBlPSJ0bnM6VGhyZWVET3JpZW50YXRpb24i -IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlRocmVlRE9yaWVudGF0aW9uIj4N -CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUaHJlZURPcmllbnRh -dGlvbiIgdHlwZT0idG5zOlRocmVlRE9yaWVudGF0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vy -cz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8 -L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZUaHJlZURPcmllbnRh -dGlvbiIgdHlwZT0idG5zOkxpc3RPZlRocmVlRE9yaWVudGF0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+ -PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJGcmFtZSI+DQogICAgPHhz -OnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 -czplbGVtZW50IG5hbWU9IkZyYW1lIiB0eXBlPSJ0bnM6RnJhbWUiIC8+DQoNCiAgPHhzOmNvbXBs -ZXhUeXBlIG5hbWU9Ikxpc3RPZkZyYW1lIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJGcmFtZSIgdHlwZT0idG5zOkZyYW1lIiBtaW5PY2N1cnM9IjAiIG1heE9j -Y3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K -ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZGcmFtZSIgdHlw -ZT0idG5zOkxpc3RPZkZyYW1lIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4 -czpjb21wbGV4VHlwZSBuYW1lPSJUaHJlZURGcmFtZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50 -IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpGcmFtZSI+DQog -ICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDYXJ0ZXNp -YW5Db29yZGluYXRlcyIgdHlwZT0idG5zOlRocmVlRENhcnRlc2lhbkNvb3JkaW5hdGVzIiBtaW5P -Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9 -Ik9yaWVudGF0aW9uIiB0eXBlPSJ0bnM6VGhyZWVET3JpZW50YXRpb24iIG1pbk9jY3Vycz0iMCIg -bmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4 -dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K -ICA8eHM6ZWxlbWVudCBuYW1lPSJUaHJlZURGcmFtZSIgdHlwZT0idG5zOlRocmVlREZyYW1lIiAv -Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZUaHJlZURGcmFtZSI+DQogICAgPHhz -OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGhyZWVERnJhbWUiIHR5cGU9InRu -czpUaHJlZURGcmFtZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFi -bGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg -PHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVGhyZWVERnJhbWUiIHR5cGU9InRuczpMaXN0T2ZUaHJl -ZURGcmFtZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlw -ZSAgbmFtZT0iT3BlbkZpbGVNb2RlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3Ry -aW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUmVhZF8xIiAvPg0KICAgICAgPHhz -OmVudW1lcmF0aW9uIHZhbHVlPSJXcml0ZV8yIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZh -bHVlPSJFcmFzZUV4aXN0aW5nXzQiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkFw -cGVuZF84IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAg -PHhzOmVsZW1lbnQgbmFtZT0iT3BlbkZpbGVNb2RlIiB0eXBlPSJ0bnM6T3BlbkZpbGVNb2RlIiAv -Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZPcGVuRmlsZU1vZGUiPg0KICAgIDx4 -czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik9wZW5GaWxlTW9kZSIgdHlwZT0i -dG5zOk9wZW5GaWxlTW9kZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4N -CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu -YW1lPSJMaXN0T2ZPcGVuRmlsZU1vZGUiIHR5cGU9InRuczpMaXN0T2ZPcGVuRmlsZU1vZGUiIG5p -bGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9Iklk -ZW50aXR5Q3JpdGVyaWFUeXBlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5n -Ij4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVXNlck5hbWVfMSIgLz4NCiAgICAgIDx4 -czplbnVtZXJhdGlvbiB2YWx1ZT0iVGh1bWJwcmludF8yIiAvPg0KICAgICAgPHhzOmVudW1lcmF0 -aW9uIHZhbHVlPSJSb2xlXzMiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ikdyb3Vw -SWRfNCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQW5vbnltb3VzXzUiIC8+DQog -ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkF1dGhlbnRpY2F0ZWRVc2VyXzYiIC8+DQogICAg -ICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkFwcGxpY2F0aW9uXzciIC8+DQogICAgPC94czpyZXN0 -cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJJZGVudGl0 -eUNyaXRlcmlhVHlwZSIgdHlwZT0idG5zOklkZW50aXR5Q3JpdGVyaWFUeXBlIiAvPg0KDQogIDx4 -czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZJZGVudGl0eUNyaXRlcmlhVHlwZSI+DQogICAgPHhz -OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSWRlbnRpdHlDcml0ZXJpYVR5cGUi -IHR5cGU9InRuczpJZGVudGl0eUNyaXRlcmlhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9 -InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K -ICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZJZGVudGl0eUNyaXRlcmlhVHlwZSIgdHlwZT0idG5z -Okxpc3RPZklkZW50aXR5Q3JpdGVyaWFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50 -Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJJZGVudGl0eU1hcHBpbmdSdWxlVHlwZSI+DQog -ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ3JpdGVyaWFUeXBlIiB0 -eXBlPSJ0bnM6SWRlbnRpdHlDcml0ZXJpYVR5cGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9IkNyaXRlcmlhIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIg +CiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mSWRlbnRpdHlNYXBwaW5nUnVsZVR5cGUiIHR5cGU9 +InRuczpMaXN0T2ZJZGVudGl0eU1hcHBpbmdSdWxlVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6 +ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ3VycmVuY3lVbml0VHlwZSI+DQog +ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTnVtZXJpY0NvZGUiIHR5 +cGU9InhzOnNob3J0IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJF +eHBvbmVudCIgdHlwZT0ieHM6Ynl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iQWxwaGFiZXRpY0NvZGUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBu +aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkN1cnJlbmN5IiB0eXBl +PSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 +IkN1cnJlbmN5VW5pdFR5cGUiIHR5cGU9InRuczpDdXJyZW5jeVVuaXRUeXBlIiAvPg0KDQogIDx4 +czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZDdXJyZW5jeVVuaXRUeXBlIj4NCiAgICA8eHM6c2Vx +dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDdXJyZW5jeVVuaXRUeXBlIiB0eXBlPSJ0 +bnM6Q3VycmVuY3lVbml0VHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIg bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw -ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSWRlbnRpdHlNYXBwaW5nUnVsZVR5cGUiIHR5cGU9InRu -czpJZGVudGl0eU1hcHBpbmdSdWxlVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i -TGlzdE9mSWRlbnRpdHlNYXBwaW5nUnVsZVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IklkZW50aXR5TWFwcGluZ1J1bGVUeXBlIiB0eXBlPSJ0bnM6SWRl -bnRpdHlNYXBwaW5nUnVsZVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQi -IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5 -cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZklkZW50aXR5TWFwcGluZ1J1bGVUeXBlIiB0 -eXBlPSJ0bnM6TGlzdE9mSWRlbnRpdHlNYXBwaW5nUnVsZVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48 -L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkN1cnJlbmN5VW5pdFR5cGUi -Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik51bWVyaWNDb2Rl -IiB0eXBlPSJ4czpzaG9ydCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt -ZT0iRXhwb25lbnQiIHR5cGU9InhzOmJ5dGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl -bGVtZW50IG5hbWU9IkFscGhhYmV0aWNDb2RlIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0i -MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDdXJyZW5jeSIg -dHlwZT0idWE6TG9jYWxpemVkVGV4dCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu -YW1lPSJDdXJyZW5jeVVuaXRUeXBlIiB0eXBlPSJ0bnM6Q3VycmVuY3lVbml0VHlwZSIgLz4NCg0K -ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQ3VycmVuY3lVbml0VHlwZSI+DQogICAgPHhz -OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ3VycmVuY3lVbml0VHlwZSIgdHlw -ZT0idG5zOkN1cnJlbmN5VW5pdFR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k -ZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkN1cnJlbmN5VW5pdFR5cGUiIHR5cGU9 -InRuczpMaXN0T2ZDdXJyZW5jeVVuaXRUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50 -Pg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJUcnVzdExpc3RNYXNrcyI+DQogICAgPHhzOnJl -c3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9 -Ik5vbmVfMCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVHJ1c3RlZENlcnRpZmlj -YXRlc18xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJUcnVzdGVkQ3Jsc18yIiAv -Pg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJc3N1ZXJDZXJ0aWZpY2F0ZXNfNCIgLz4N -CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSXNzdWVyQ3Jsc184IiAvPg0KICAgICAgPHhz -OmVudW1lcmF0aW9uIHZhbHVlPSJBbGxfMTUiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAg -PC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJUcnVzdExpc3RNYXNrcyIgdHlw -ZT0idG5zOlRydXN0TGlzdE1hc2tzIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJUcnVz -dExpc3REYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt -ZT0iU3BlY2lmaWVkTGlzdHMiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUcnVzdGVkQ2VydGlmaWNhdGVzIiB0eXBlPSJ1YTpM -aXN0T2ZCeXRlU3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iVHJ1c3RlZENybHMiIHR5cGU9InVhOkxpc3RPZkJ5dGVTdHJpbmci -IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJJc3N1ZXJDZXJ0aWZpY2F0ZXMiIHR5cGU9InVhOkxpc3RPZkJ5dGVTdHJpbmciIG1pbk9jY3Vy -cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJc3N1ZXJD -cmxzIiB0eXBlPSJ1YTpMaXN0T2ZCeXRlU3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0 +ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mQ3VycmVuY3lVbml0VHlwZSIgdHlwZT0idG5z +Okxpc3RPZkN1cnJlbmN5VW5pdFR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoN +CiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IlRydXN0TGlzdE1hc2tzIj4NCiAgICA8eHM6cmVzdHJp +Y3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm9u +ZV8wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJUcnVzdGVkQ2VydGlmaWNhdGVz +XzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlRydXN0ZWRDcmxzXzIiIC8+DQog +ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Iklzc3VlckNlcnRpZmljYXRlc180IiAvPg0KICAg +ICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJc3N1ZXJDcmxzXzgiIC8+DQogICAgICA8eHM6ZW51 +bWVyYXRpb24gdmFsdWU9IkFsbF8xNSIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hz +OnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlRydXN0TGlzdE1hc2tzIiB0eXBlPSJ0 +bnM6VHJ1c3RMaXN0TWFza3MiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRydXN0TGlz +dERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJT +cGVjaWZpZWRMaXN0cyIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9IlRydXN0ZWRDZXJ0aWZpY2F0ZXMiIHR5cGU9InVhOkxpc3RP +ZkJ5dGVTdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJUcnVzdGVkQ3JscyIgdHlwZT0idWE6TGlzdE9mQnl0ZVN0cmluZyIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Iklz +c3VlckNlcnRpZmljYXRlcyIgdHlwZT0idWE6TGlzdE9mQnl0ZVN0cmluZyIgbWluT2NjdXJzPSIw +IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Iklzc3VlckNybHMi +IHR5cGU9InVhOkxpc3RPZkJ5dGVTdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi +IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l +bnQgbmFtZT0iVHJ1c3RMaXN0RGF0YVR5cGUiIHR5cGU9InRuczpUcnVzdExpc3REYXRhVHlwZSIg +Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mVHJ1c3RMaXN0RGF0YVR5cGUiPg0K +ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRydXN0TGlzdERhdGFU +eXBlIiB0eXBlPSJ0bnM6VHJ1c3RMaXN0RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJz +PSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv +eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlRydXN0TGlzdERhdGFU +eXBlIiB0eXBlPSJ0bnM6TGlzdE9mVHJ1c3RMaXN0RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48 +L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRlY2ltYWxEYXRhVHlwZSI+ +DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2NhbGUiIHR5cGU9 +InhzOnNob3J0IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1 +ZSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv +Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50 +IG5hbWU9IkRlY2ltYWxEYXRhVHlwZSIgdHlwZT0idG5zOkRlY2ltYWxEYXRhVHlwZSIgLz4NCg0K +ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGF0YVR5cGVTY2hlbWFIZWFkZXIiPg0KICAgIDx4czpz +ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5hbWVzcGFjZXMiIHR5cGU9InVhOkxp +c3RPZlN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IlN0cnVjdHVyZURhdGFUeXBlcyIgdHlwZT0idG5zOkxpc3RPZlN0cnVjdHVy +ZURlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iRW51bURhdGFUeXBlcyIgdHlwZT0idG5zOkxpc3RPZkVudW1EZXNjcmlw +dGlvbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9IlNpbXBsZURhdGFUeXBlcyIgdHlwZT0idG5zOkxpc3RPZlNpbXBsZVR5cGVEZXNjcmlw +dGlvbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNl +Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhVHlwZVNjaGVt +YUhlYWRlciIgdHlwZT0idG5zOkRhdGFUeXBlU2NoZW1hSGVhZGVyIiAvPg0KDQogIDx4czpjb21w +bGV4VHlwZSBuYW1lPSJMaXN0T2ZEYXRhVHlwZVNjaGVtYUhlYWRlciI+DQogICAgPHhzOnNlcXVl +bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGVTY2hlbWFIZWFkZXIiIHR5cGU9 +InRuczpEYXRhVHlwZVNjaGVtYUhlYWRlciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91 +bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w +bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRGF0YVR5cGVTY2hlbWFIZWFkZXIi +IHR5cGU9InRuczpMaXN0T2ZEYXRhVHlwZVNjaGVtYUhlYWRlciIgbmlsbGFibGU9InRydWUiPjwv +eHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGF0YVR5cGVEZXNjcmlwdGlv +biI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGVJ +ZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iTmFtZSIgdHlwZT0idWE6UXVhbGlmaWVkTmFtZSIgbWluT2Nj +dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv +bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhVHlwZURlc2NyaXB0aW9uIiB0eXBl +PSJ0bnM6RGF0YVR5cGVEZXNjcmlwdGlvbiIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i +TGlzdE9mRGF0YVR5cGVEZXNjcmlwdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iRGF0YVR5cGVEZXNjcmlwdGlvbiIgdHlwZT0idG5zOkRhdGFUeXBlRGVz +Y3JpcHRpb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0 cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl -bGVtZW50IG5hbWU9IlRydXN0TGlzdERhdGFUeXBlIiB0eXBlPSJ0bnM6VHJ1c3RMaXN0RGF0YVR5 -cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlRydXN0TGlzdERhdGFUeXBl -Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUcnVzdExpc3RE -YXRhVHlwZSIgdHlwZT0idG5zOlRydXN0TGlzdERhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9j -Y3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K -ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZUcnVzdExpc3RE -YXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlRydXN0TGlzdERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1 -ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEZWNpbWFsRGF0YVR5 -cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNjYWxlIiB0 -eXBlPSJ4czpzaG9ydCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i -VmFsdWUiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 -ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl -bWVudCBuYW1lPSJEZWNpbWFsRGF0YVR5cGUiIHR5cGU9InRuczpEZWNpbWFsRGF0YVR5cGUiIC8+ -DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRhdGFUeXBlU2NoZW1hSGVhZGVyIj4NCiAgICA8 -eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lc3BhY2VzIiB0eXBlPSJ1 -YTpMaXN0T2ZTdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJTdHJ1Y3R1cmVEYXRhVHlwZXMiIHR5cGU9InRuczpMaXN0T2ZTdHJ1 -Y3R1cmVEZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IkVudW1EYXRhVHlwZXMiIHR5cGU9InRuczpMaXN0T2ZFbnVtRGVz -Y3JpcHRpb24iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJTaW1wbGVEYXRhVHlwZXMiIHR5cGU9InRuczpMaXN0T2ZTaW1wbGVUeXBlRGVz -Y3JpcHRpb24iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1 -ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGVT -Y2hlbWFIZWFkZXIiIHR5cGU9InRuczpEYXRhVHlwZVNjaGVtYUhlYWRlciIgLz4NCg0KICA8eHM6 -Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRGF0YVR5cGVTY2hlbWFIZWFkZXIiPg0KICAgIDx4czpz -ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFUeXBlU2NoZW1hSGVhZGVyIiB0 -eXBlPSJ0bnM6RGF0YVR5cGVTY2hlbWFIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1 -bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6 -Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkRhdGFUeXBlU2NoZW1hSGVh -ZGVyIiB0eXBlPSJ0bnM6TGlzdE9mRGF0YVR5cGVTY2hlbWFIZWFkZXIiIG5pbGxhYmxlPSJ0cnVl -Ij48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRhdGFUeXBlRGVzY3Jp -cHRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFU -eXBlSWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5hbWUiIHR5cGU9InVhOlF1YWxpZmllZE5hbWUiIG1p -bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94 -czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGVEZXNjcmlwdGlvbiIg -dHlwZT0idG5zOkRhdGFUeXBlRGVzY3JpcHRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h -bWU9Ikxpc3RPZkRhdGFUeXBlRGVzY3JpcHRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IkRhdGFUeXBlRGVzY3JpcHRpb24iIHR5cGU9InRuczpEYXRhVHlw -ZURlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJs -ZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8 -eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZEYXRhVHlwZURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6TGlz -dE9mRGF0YVR5cGVEZXNjcmlwdGlvbiIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0K -ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU3RydWN0dXJlRGVzY3JpcHRpb24iPg0KICAgIDx4czpj -b21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0 -bnM6RGF0YVR5cGVEZXNjcmlwdGlvbiI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJTdHJ1Y3R1cmVEZWZpbml0aW9uIiB0eXBlPSJ0bnM6U3RydWN0 -dXJlRGVmaW5pdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAg -PC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENv -bnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlN0cnVjdHVy -ZURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6U3RydWN0dXJlRGVzY3JpcHRpb24iIC8+DQoNCiAgPHhz -OmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlN0cnVjdHVyZURlc2NyaXB0aW9uIj4NCiAgICA8eHM6 -c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdHJ1Y3R1cmVEZXNjcmlwdGlvbiIg -dHlwZT0idG5zOlN0cnVjdHVyZURlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i -dW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz -OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZTdHJ1Y3R1cmVEZXNjcmlw -dGlvbiIgdHlwZT0idG5zOkxpc3RPZlN0cnVjdHVyZURlc2NyaXB0aW9uIiBuaWxsYWJsZT0idHJ1 -ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJFbnVtRGVzY3JpcHRp -b24iPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4 -dGVuc2lvbiBiYXNlPSJ0bnM6RGF0YVR5cGVEZXNjcmlwdGlvbiI+DQogICAgICAgIDx4czpzZXF1 -ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbnVtRGVmaW5pdGlvbiIgdHlwZT0i -dG5zOkVudW1EZWZpbml0aW9uIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg -ICAgICAgIDx4czplbGVtZW50IG5hbWU9IkJ1aWx0SW5UeXBlIiB0eXBlPSJ4czp1bnNpZ25lZEJ5 -dGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6 -ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+ -DQogIDx4czplbGVtZW50IG5hbWU9IkVudW1EZXNjcmlwdGlvbiIgdHlwZT0idG5zOkVudW1EZXNj -cmlwdGlvbiIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRW51bURlc2NyaXB0 -aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbnVtRGVz -Y3JpcHRpb24iIHR5cGU9InRuczpFbnVtRGVzY3JpcHRpb24iIG1pbk9jY3Vycz0iMCIgbWF4T2Nj -dXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQog -IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkVudW1EZXNjcmlw -dGlvbiIgdHlwZT0idG5zOkxpc3RPZkVudW1EZXNjcmlwdGlvbiIgbmlsbGFibGU9InRydWUiPjwv -eHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2ltcGxlVHlwZURlc2NyaXB0 -aW9uIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpl -eHRlbnNpb24gYmFzZT0idG5zOkRhdGFUeXBlRGVzY3JpcHRpb24iPg0KICAgICAgICA8eHM6c2Vx -dWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQmFzZURhdGFUeXBlIiB0eXBlPSJ1 -YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhz -OmVsZW1lbnQgbmFtZT0iQnVpbHRJblR5cGUiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIgbWluT2Nj -dXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+ -DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs -ZW1lbnQgbmFtZT0iU2ltcGxlVHlwZURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6U2ltcGxlVHlwZURl -c2NyaXB0aW9uIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZTaW1wbGVUeXBl -RGVzY3JpcHRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IlNpbXBsZVR5cGVEZXNjcmlwdGlvbiIgdHlwZT0idG5zOlNpbXBsZVR5cGVEZXNjcmlwdGlvbiIg -bWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQog -ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt -ZT0iTGlzdE9mU2ltcGxlVHlwZURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6TGlzdE9mU2ltcGxlVHlw -ZURlc2NyaXB0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21w -bGV4VHlwZSBuYW1lPSJVQUJpbmFyeUZpbGVEYXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhDb250 -ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpEYXRhVHlw -ZVNjaGVtYUhlYWRlciI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJTY2hlbWFMb2NhdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAi -IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkZpbGVIZWFk -ZXIiIHR5cGU9InRuczpMaXN0T2ZLZXlWYWx1ZVBhaXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 -InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQm9keSIgdHlwZT0idWE6VmFy -aWFudCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94 -czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlw -ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVUFCaW5hcnlGaWxlRGF0YVR5cGUiIHR5cGU9InRuczpV -QUJpbmFyeUZpbGVEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9m -VUFCaW5hcnlGaWxlRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IlVBQmluYXJ5RmlsZURhdGFUeXBlIiB0eXBlPSJ0bnM6VUFCaW5hcnlGaWxlRGF0 -YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVl -IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt -ZW50IG5hbWU9Ikxpc3RPZlVBQmluYXJ5RmlsZURhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mVUFC -aW5hcnlGaWxlRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhz -OnNpbXBsZVR5cGUgIG5hbWU9IlB1YlN1YlN0YXRlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFz -ZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRGlzYWJsZWRfMCIg -Lz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUGF1c2VkXzEiIC8+DQogICAgICA8eHM6 -ZW51bWVyYXRpb24gdmFsdWU9Ik9wZXJhdGlvbmFsXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRp -b24gdmFsdWU9IkVycm9yXzMiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlByZU9w -ZXJhdGlvbmFsXzQiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBl -Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJTdWJTdGF0ZSIgdHlwZT0idG5zOlB1YlN1YlN0YXRl -IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZQdWJTdWJTdGF0ZSI+DQogICAg -PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHViU3ViU3RhdGUiIHR5cGU9 -InRuczpQdWJTdWJTdGF0ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4N -CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu -YW1lPSJMaXN0T2ZQdWJTdWJTdGF0ZSIgdHlwZT0idG5zOkxpc3RPZlB1YlN1YlN0YXRlIiBuaWxs -YWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEYXRh -U2V0TWV0YURhdGFUeXBlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4N -CiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkRhdGFUeXBlU2NoZW1hSGVhZGVyIj4NCiAg -ICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5hbWUiIHR5 -cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJEZXNjcmlwdGlvbiIgdHlwZT0idWE6TG9jYWxpemVkVGV4dCIg -bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJGaWVsZHMiIHR5cGU9InRuczpMaXN0T2ZGaWVsZE1ldGFEYXRhIiBtaW5PY2N1cnM9IjAi -IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRD -bGFzc0lkIiB0eXBlPSJ1YTpHdWlkIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iQ29uZmlndXJhdGlvblZlcnNpb24iIHR5cGU9InRuczpDb25maWd1cmF0aW9u -VmVyc2lvbkRhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg -ICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4 -Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNl -dE1ldGFEYXRhVHlwZSIgdHlwZT0idG5zOkRhdGFTZXRNZXRhRGF0YVR5cGUiIC8+DQoNCiAgPHhz -OmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkRhdGFTZXRNZXRhRGF0YVR5cGUiPg0KICAgIDx4czpz -ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRNZXRhRGF0YVR5cGUiIHR5 -cGU9InRuczpEYXRhU2V0TWV0YURhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5i -b3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv -bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZEYXRhU2V0TWV0YURhdGFUeXBl -IiB0eXBlPSJ0bnM6TGlzdE9mRGF0YVNldE1ldGFEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwv -eHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRmllbGRNZXRhRGF0YSI+DQog -ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmFtZSIgdHlwZT0ieHM6 -c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iRGVzY3JpcHRpb24iIHR5cGU9InVhOkxvY2FsaXplZFRleHQiIG1pbk9jY3Vycz0i -MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJGaWVsZEZsYWdz -IiB0eXBlPSJ0bnM6RGF0YVNldEZpZWxkRmxhZ3MiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9IkJ1aWx0SW5UeXBlIiB0eXBlPSJ4czp1bnNpZ25lZEJ5dGUiIG1pbk9j -Y3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFUeXBlIiB0eXBlPSJ1YTpO -b2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJWYWx1ZVJhbmsiIHR5cGU9InhzOmludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iQXJyYXlEaW1lbnNpb25zIiB0eXBlPSJ1YTpMaXN0T2ZVSW50MzIi -IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJNYXhTdHJpbmdMZW5ndGgiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0RmllbGRJZCIgdHlwZT0idWE6R3VpZCIg -bWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHJvcGVydGllcyIgdHlw -ZT0idG5zOkxpc3RPZktleVZhbHVlUGFpciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu -dCBuYW1lPSJGaWVsZE1ldGFEYXRhIiB0eXBlPSJ0bnM6RmllbGRNZXRhRGF0YSIgLz4NCg0KICA8 -eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRmllbGRNZXRhRGF0YSI+DQogICAgPHhzOnNlcXVl -bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRmllbGRNZXRhRGF0YSIgdHlwZT0idG5zOkZp -ZWxkTWV0YURhdGEiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxl -PSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 -czplbGVtZW50IG5hbWU9Ikxpc3RPZkZpZWxkTWV0YURhdGEiIHR5cGU9InRuczpMaXN0T2ZGaWVs -ZE1ldGFEYXRhIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpzaW1wbGVU -eXBlICBuYW1lPSJEYXRhU2V0RmllbGRGbGFncyI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9 -InhzOnVuc2lnbmVkU2hvcnQiPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxl -VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldEZpZWxkRmxhZ3MiIHR5cGU9InRuczpE -YXRhU2V0RmllbGRGbGFncyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ29uZmlndXJh -dGlvblZlcnNpb25EYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iTWFqb3JWZXJzaW9uIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIw -IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWlub3JWZXJzaW9uIiB0eXBlPSJ4czp1bnNp -Z25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29t -cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkNvbmZpZ3VyYXRpb25WZXJzaW9uRGF0YVR5 -cGUiIHR5cGU9InRuczpDb25maWd1cmF0aW9uVmVyc2lvbkRhdGFUeXBlIiAvPg0KDQogIDx4czpj -b21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZDb25maWd1cmF0aW9uVmVyc2lvbkRhdGFUeXBlIj4NCiAg -ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDb25maWd1cmF0aW9uVmVy -c2lvbkRhdGFUeXBlIiB0eXBlPSJ0bnM6Q29uZmlndXJhdGlvblZlcnNpb25EYXRhVHlwZSIgbWlu -T2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg -PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i -TGlzdE9mQ29uZmlndXJhdGlvblZlcnNpb25EYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZkNvbmZp -Z3VyYXRpb25WZXJzaW9uRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoN -CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlB1Ymxpc2hlZERhdGFTZXREYXRhVHlwZSI+DQogICAg -PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmFtZSIgdHlwZT0ieHM6c3Ry -aW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iRGF0YVNldEZvbGRlciIgdHlwZT0idWE6TGlzdE9mU3RyaW5nIiBtaW5PY2N1cnM9IjAi -IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldE1ldGFE -YXRhIiB0eXBlPSJ0bnM6RGF0YVNldE1ldGFEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJs -ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkV4dGVuc2lvbkZpZWxkcyIgdHlw -ZT0idG5zOkxpc3RPZktleVZhbHVlUGFpciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRTb3VyY2UiIHR5cGU9InVhOkV4dGVu -c2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl -cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNo -ZWREYXRhU2V0RGF0YVR5cGUiIHR5cGU9InRuczpQdWJsaXNoZWREYXRhU2V0RGF0YVR5cGUiIC8+ -DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlB1Ymxpc2hlZERhdGFTZXREYXRhVHlw -ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHVibGlzaGVk -RGF0YVNldERhdGFUeXBlIiB0eXBlPSJ0bnM6UHVibGlzaGVkRGF0YVNldERhdGFUeXBlIiBtaW5P +bGVtZW50IG5hbWU9Ikxpc3RPZkRhdGFUeXBlRGVzY3JpcHRpb24iIHR5cGU9InRuczpMaXN0T2ZE +YXRhVHlwZURlc2NyaXB0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4 +czpjb21wbGV4VHlwZSBuYW1lPSJTdHJ1Y3R1cmVEZXNjcmlwdGlvbiI+DQogICAgPHhzOmNvbXBs +ZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpE +YXRhVHlwZURlc2NyaXB0aW9uIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4 +czplbGVtZW50IG5hbWU9IlN0cnVjdHVyZURlZmluaXRpb24iIHR5cGU9InRuczpTdHJ1Y3R1cmVE +ZWZpbml0aW9uIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hz +OnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVu +dD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iU3RydWN0dXJlRGVz +Y3JpcHRpb24iIHR5cGU9InRuczpTdHJ1Y3R1cmVEZXNjcmlwdGlvbiIgLz4NCg0KICA8eHM6Y29t +cGxleFR5cGUgbmFtZT0iTGlzdE9mU3RydWN0dXJlRGVzY3JpcHRpb24iPg0KICAgIDx4czpzZXF1 +ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0cnVjdHVyZURlc2NyaXB0aW9uIiB0eXBl +PSJ0bnM6U3RydWN0dXJlRGVzY3JpcHRpb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJv +dW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29t +cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlN0cnVjdHVyZURlc2NyaXB0aW9u +IiB0eXBlPSJ0bnM6TGlzdE9mU3RydWN0dXJlRGVzY3JpcHRpb24iIG5pbGxhYmxlPSJ0cnVlIj48 +L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkVudW1EZXNjcmlwdGlvbiI+ +DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5z +aW9uIGJhc2U9InRuczpEYXRhVHlwZURlc2NyaXB0aW9uIj4NCiAgICAgICAgPHhzOnNlcXVlbmNl +Pg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkVudW1EZWZpbml0aW9uIiB0eXBlPSJ0bnM6 +RW51bURlZmluaXRpb24iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iQnVpbHRJblR5cGUiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIg +bWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRl +bnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg +PHhzOmVsZW1lbnQgbmFtZT0iRW51bURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6RW51bURlc2NyaXB0 +aW9uIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZFbnVtRGVzY3JpcHRpb24i +Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVudW1EZXNjcmlw +dGlvbiIgdHlwZT0idG5zOkVudW1EZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9 +InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94 +czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRW51bURlc2NyaXB0aW9u +IiB0eXBlPSJ0bnM6TGlzdE9mRW51bURlc2NyaXB0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94czpl +bGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJTaW1wbGVUeXBlRGVzY3JpcHRpb24i +Pg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVu +c2lvbiBiYXNlPSJ0bnM6RGF0YVR5cGVEZXNjcmlwdGlvbiI+DQogICAgICAgIDx4czpzZXF1ZW5j +ZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCYXNlRGF0YVR5cGUiIHR5cGU9InVhOk5v +ZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxl +bWVudCBuYW1lPSJCdWlsdEluVHlwZSIgdHlwZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5PY2N1cnM9 +IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAg +ICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu +dCBuYW1lPSJTaW1wbGVUeXBlRGVzY3JpcHRpb24iIHR5cGU9InRuczpTaW1wbGVUeXBlRGVzY3Jp +cHRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlNpbXBsZVR5cGVEZXNj +cmlwdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2lt +cGxlVHlwZURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6U2ltcGxlVHlwZURlc2NyaXB0aW9uIiBtaW5P Y2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8 L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJM -aXN0T2ZQdWJsaXNoZWREYXRhU2V0RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZQdWJsaXNoZWRE -YXRhU2V0RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNv -bXBsZXhUeXBlIG5hbWU9IlB1Ymxpc2hlZERhdGFTZXRTb3VyY2VEYXRhVHlwZSI+DQogICAgPHhz -OnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 -czplbGVtZW50IG5hbWU9IlB1Ymxpc2hlZERhdGFTZXRTb3VyY2VEYXRhVHlwZSIgdHlwZT0idG5z -OlB1Ymxpc2hlZERhdGFTZXRTb3VyY2VEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg -bmFtZT0iTGlzdE9mUHVibGlzaGVkRGF0YVNldFNvdXJjZURhdGFUeXBlIj4NCiAgICA8eHM6c2Vx -dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNoZWREYXRhU2V0U291cmNlRGF0 -YVR5cGUiIHR5cGU9InRuczpQdWJsaXNoZWREYXRhU2V0U291cmNlRGF0YVR5cGUiIG1pbk9jY3Vy +aXN0T2ZTaW1wbGVUeXBlRGVzY3JpcHRpb24iIHR5cGU9InRuczpMaXN0T2ZTaW1wbGVUeXBlRGVz +Y3JpcHRpb24iIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhU +eXBlIG5hbWU9IlVBQmluYXJ5RmlsZURhdGFUeXBlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQg +bWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkRhdGFUeXBlU2No +ZW1hSGVhZGVyIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50 +IG5hbWU9IlNjaGVtYUxvY2F0aW9uIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmls +bGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRmlsZUhlYWRlciIg +dHlwZT0idG5zOkxpc3RPZktleVZhbHVlUGFpciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 +ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCb2R5IiB0eXBlPSJ1YTpWYXJpYW50 +IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4 +dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K +ICA8eHM6ZWxlbWVudCBuYW1lPSJVQUJpbmFyeUZpbGVEYXRhVHlwZSIgdHlwZT0idG5zOlVBQmlu +YXJ5RmlsZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZVQUJp +bmFyeUZpbGVEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iVUFCaW5hcnlGaWxlRGF0YVR5cGUiIHR5cGU9InRuczpVQUJpbmFyeUZpbGVEYXRhVHlw +ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+ +DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg +bmFtZT0iTGlzdE9mVUFCaW5hcnlGaWxlRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZVQUJpbmFy +eUZpbGVEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2lt +cGxlVHlwZSAgbmFtZT0iUHViU3ViU3RhdGUiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4 +czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEaXNhYmxlZF8wIiAvPg0K +ICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJQYXVzZWRfMSIgLz4NCiAgICAgIDx4czplbnVt +ZXJhdGlvbiB2YWx1ZT0iT3BlcmF0aW9uYWxfMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2 +YWx1ZT0iRXJyb3JfMyIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUHJlT3BlcmF0 +aW9uYWxfNCIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQog +IDx4czplbGVtZW50IG5hbWU9IlB1YlN1YlN0YXRlIiB0eXBlPSJ0bnM6UHViU3ViU3RhdGUiIC8+ +DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlB1YlN1YlN0YXRlIj4NCiAgICA8eHM6 +c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJTdWJTdGF0ZSIgdHlwZT0idG5z +OlB1YlN1YlN0YXRlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAg +IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 +Ikxpc3RPZlB1YlN1YlN0YXRlIiB0eXBlPSJ0bnM6TGlzdE9mUHViU3ViU3RhdGUiIG5pbGxhYmxl +PSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRhdGFTZXRN +ZXRhRGF0YVR5cGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAg +ICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6RGF0YVR5cGVTY2hlbWFIZWFkZXIiPg0KICAgICAg +ICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmFtZSIgdHlwZT0i +eHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4 +czplbGVtZW50IG5hbWU9IkRlc2NyaXB0aW9uIiB0eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5P +Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9 +IkZpZWxkcyIgdHlwZT0idG5zOkxpc3RPZkZpZWxkTWV0YURhdGEiIG1pbk9jY3Vycz0iMCIgbmls +bGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldENsYXNz +SWQiIHR5cGU9InVhOkd1aWQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJDb25maWd1cmF0aW9uVmVyc2lvbiIgdHlwZT0idG5zOkNvbmZpZ3VyYXRpb25WZXJz +aW9uRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwv +eHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250 +ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0TWV0 +YURhdGFUeXBlIiB0eXBlPSJ0bnM6RGF0YVNldE1ldGFEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29t +cGxleFR5cGUgbmFtZT0iTGlzdE9mRGF0YVNldE1ldGFEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVl +bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldE1ldGFEYXRhVHlwZSIgdHlwZT0i +dG5zOkRhdGFTZXRNZXRhRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k +ZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl +eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkRhdGFTZXRNZXRhRGF0YVR5cGUiIHR5 +cGU9InRuczpMaXN0T2ZEYXRhU2V0TWV0YURhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czpl +bGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJGaWVsZE1ldGFEYXRhIj4NCiAgICA8 +eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lIiB0eXBlPSJ4czpzdHJp +bmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJEZXNjcmlwdGlvbiIgdHlwZT0idWE6TG9jYWxpemVkVGV4dCIgbWluT2NjdXJzPSIwIiBu +aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkZpZWxkRmxhZ3MiIHR5 +cGU9InRuczpEYXRhU2V0RmllbGRGbGFncyIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iQnVpbHRJblR5cGUiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIgbWluT2NjdXJz +PSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGUiIHR5cGU9InVhOk5vZGVJ +ZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h +bWU9IlZhbHVlUmFuayIgdHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJBcnJheURpbWVuc2lvbnMiIHR5cGU9InVhOkxpc3RPZlVJbnQzMiIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1h +eFN0cmluZ0xlbmd0aCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRGaWVsZElkIiB0eXBlPSJ1YTpHdWlkIiBtaW5P +Y2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQcm9wZXJ0aWVzIiB0eXBlPSJ0 +bnM6TGlzdE9mS2V5VmFsdWVQYWlyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h +bWU9IkZpZWxkTWV0YURhdGEiIHR5cGU9InRuczpGaWVsZE1ldGFEYXRhIiAvPg0KDQogIDx4czpj +b21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZGaWVsZE1ldGFEYXRhIj4NCiAgICA8eHM6c2VxdWVuY2U+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJGaWVsZE1ldGFEYXRhIiB0eXBlPSJ0bnM6RmllbGRN +ZXRhRGF0YSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRy +dWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs +ZW1lbnQgbmFtZT0iTGlzdE9mRmllbGRNZXRhRGF0YSIgdHlwZT0idG5zOkxpc3RPZkZpZWxkTWV0 +YURhdGEiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBsZVR5cGUg +IG5hbWU9IkRhdGFTZXRGaWVsZEZsYWdzIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6 +dW5zaWduZWRTaG9ydCI+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBl +Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0RmllbGRGbGFncyIgdHlwZT0idG5zOkRhdGFT +ZXRGaWVsZEZsYWdzIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJDb25maWd1cmF0aW9u +VmVyc2lvbkRhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJNYWpvclZlcnNpb24iIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNaW5vclZlcnNpb24iIHR5cGU9InhzOnVuc2lnbmVk +SW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 +VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQ29uZmlndXJhdGlvblZlcnNpb25EYXRhVHlwZSIg +dHlwZT0idG5zOkNvbmZpZ3VyYXRpb25WZXJzaW9uRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBs +ZXhUeXBlIG5hbWU9Ikxpc3RPZkNvbmZpZ3VyYXRpb25WZXJzaW9uRGF0YVR5cGUiPg0KICAgIDx4 +czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNvbmZpZ3VyYXRpb25WZXJzaW9u +RGF0YVR5cGUiIHR5cGU9InRuczpDb25maWd1cmF0aW9uVmVyc2lvbkRhdGFUeXBlIiBtaW5PY2N1 +cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz +OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0 +T2ZDb25maWd1cmF0aW9uVmVyc2lvbkRhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mQ29uZmlndXJh +dGlvblZlcnNpb25EYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8 +eHM6Y29tcGxleFR5cGUgbmFtZT0iUHVibGlzaGVkRGF0YVNldERhdGFUeXBlIj4NCiAgICA8eHM6 +c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lIiB0eXBlPSJ4czpzdHJpbmci +IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l +PSJEYXRhU2V0Rm9sZGVyIiB0eXBlPSJ1YTpMaXN0T2ZTdHJpbmciIG1pbk9jY3Vycz0iMCIgbmls +bGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0TWV0YURhdGEi +IHR5cGU9InRuczpEYXRhU2V0TWV0YURhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0 +cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRXh0ZW5zaW9uRmllbGRzIiB0eXBlPSJ0 +bnM6TGlzdE9mS2V5VmFsdWVQYWlyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldFNvdXJjZSIgdHlwZT0idWE6RXh0ZW5zaW9u +T2JqZWN0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVu +Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlB1Ymxpc2hlZERh +dGFTZXREYXRhVHlwZSIgdHlwZT0idG5zOlB1Ymxpc2hlZERhdGFTZXREYXRhVHlwZSIgLz4NCg0K +ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUHVibGlzaGVkRGF0YVNldERhdGFUeXBlIj4N +CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNoZWREYXRh +U2V0RGF0YVR5cGUiIHR5cGU9InRuczpQdWJsaXNoZWREYXRhU2V0RGF0YVR5cGUiIG1pbk9jY3Vy cz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6 c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RP -ZlB1Ymxpc2hlZERhdGFTZXRTb3VyY2VEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlB1Ymxpc2hl -ZERhdGFTZXRTb3VyY2VEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0K -ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUHVibGlzaGVkVmFyaWFibGVEYXRhVHlwZSI+DQogICAg -PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHVibGlzaGVkVmFyaWFibGUi -IHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IkF0dHJpYnV0ZUlkIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWlu -T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2FtcGxpbmdJbnRlcnZhbEhp -bnQiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iRGVhZGJhbmRUeXBlIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVhZGJhbmRWYWx1ZSIgdHlwZT0ieHM6ZG91Ymxl -IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbmRleFJhbmdlIiB0 -eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJTdWJzdGl0dXRlVmFsdWUiIHR5cGU9InVhOlZhcmlhbnQiIG1pbk9j -Y3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1ldGFEYXRhUHJvcGVydGllcyIg -dHlwZT0idWE6TGlzdE9mUXVhbGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 -ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl -bWVudCBuYW1lPSJQdWJsaXNoZWRWYXJpYWJsZURhdGFUeXBlIiB0eXBlPSJ0bnM6UHVibGlzaGVk -VmFyaWFibGVEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUHVi -bGlzaGVkVmFyaWFibGVEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iUHVibGlzaGVkVmFyaWFibGVEYXRhVHlwZSIgdHlwZT0idG5zOlB1Ymxpc2hl -ZFZhcmlhYmxlRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5p -bGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+ -DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlB1Ymxpc2hlZFZhcmlhYmxlRGF0YVR5cGUiIHR5 -cGU9InRuczpMaXN0T2ZQdWJsaXNoZWRWYXJpYWJsZURhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+ -PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJQdWJsaXNoZWREYXRhSXRl -bXNEYXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAg -ICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpQdWJsaXNoZWREYXRhU2V0U291cmNlRGF0YVR5cGUi -Pg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHVi -bGlzaGVkRGF0YSIgdHlwZT0idG5zOkxpc3RPZlB1Ymxpc2hlZFZhcmlhYmxlRGF0YVR5cGUiIG1p -bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQog -ICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNv -bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNoZWREYXRhSXRlbXNEYXRhVHlw -ZSIgdHlwZT0idG5zOlB1Ymxpc2hlZERhdGFJdGVtc0RhdGFUeXBlIiAvPg0KDQogIDx4czpjb21w -bGV4VHlwZSBuYW1lPSJMaXN0T2ZQdWJsaXNoZWREYXRhSXRlbXNEYXRhVHlwZSI+DQogICAgPHhz -OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHVibGlzaGVkRGF0YUl0ZW1zRGF0 -YVR5cGUiIHR5cGU9InRuczpQdWJsaXNoZWREYXRhSXRlbXNEYXRhVHlwZSIgbWluT2NjdXJzPSIw +ZlB1Ymxpc2hlZERhdGFTZXREYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlB1Ymxpc2hlZERhdGFT +ZXREYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxl +eFR5cGUgbmFtZT0iUHVibGlzaGVkRGF0YVNldFNvdXJjZURhdGFUeXBlIj4NCiAgICA8eHM6c2Vx +dWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs +ZW1lbnQgbmFtZT0iUHVibGlzaGVkRGF0YVNldFNvdXJjZURhdGFUeXBlIiB0eXBlPSJ0bnM6UHVi +bGlzaGVkRGF0YVNldFNvdXJjZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l +PSJMaXN0T2ZQdWJsaXNoZWREYXRhU2V0U291cmNlRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5j +ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlB1Ymxpc2hlZERhdGFTZXRTb3VyY2VEYXRhVHlw +ZSIgdHlwZT0idG5zOlB1Ymxpc2hlZERhdGFTZXRTb3VyY2VEYXRhVHlwZSIgbWluT2NjdXJzPSIw IiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1 ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUHVi -bGlzaGVkRGF0YUl0ZW1zRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZQdWJsaXNoZWREYXRhSXRl -bXNEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxl -eFR5cGUgbmFtZT0iUHVibGlzaGVkRXZlbnRzRGF0YVR5cGUiPg0KICAgIDx4czpjb21wbGV4Q29u -dGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6UHVibGlz -aGVkRGF0YVNldFNvdXJjZURhdGFUeXBlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAg -ICAgIDx4czplbGVtZW50IG5hbWU9IkV2ZW50Tm90aWZpZXIiIHR5cGU9InVhOk5vZGVJZCIgbWlu -T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJTZWxlY3RlZEZpZWxkcyIgdHlwZT0idG5zOkxpc3RPZlNpbXBsZUF0dHJpYnV0ZU9wZXJhbmQi -IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iRmlsdGVyIiB0eXBlPSJ0bnM6Q29udGVudEZpbHRlciIgbWluT2NjdXJzPSIwIiBuaWxs -YWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5z -aW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 -czplbGVtZW50IG5hbWU9IlB1Ymxpc2hlZEV2ZW50c0RhdGFUeXBlIiB0eXBlPSJ0bnM6UHVibGlz -aGVkRXZlbnRzRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlB1 -Ymxpc2hlZEV2ZW50c0RhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJQdWJsaXNoZWRFdmVudHNEYXRhVHlwZSIgdHlwZT0idG5zOlB1Ymxpc2hlZEV2 -ZW50c0RhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJs -ZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8 -eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZQdWJsaXNoZWRFdmVudHNEYXRhVHlwZSIgdHlwZT0idG5z -Okxpc3RPZlB1Ymxpc2hlZEV2ZW50c0RhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVt -ZW50Pg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJEYXRhU2V0RmllbGRDb250ZW50TWFzayI+ -DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnVuc2lnbmVkSW50Ij4NCiAgICA8L3hzOnJl -c3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRhdGFT -ZXRGaWVsZENvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6RGF0YVNldEZpZWxkQ29udGVudE1hc2siIC8+ -DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkRhdGFTZXRGaWVsZENvbnRlbnRNYXNr -Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0Rmll -bGRDb250ZW50TWFzayIgdHlwZT0idG5zOkRhdGFTZXRGaWVsZENvbnRlbnRNYXNrIiBtaW5PY2N1 -cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv -eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkRhdGFTZXRGaWVsZENv -bnRlbnRNYXNrIiB0eXBlPSJ0bnM6TGlzdE9mRGF0YVNldEZpZWxkQ29udGVudE1hc2siIG5pbGxh -YmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRhdGFT -ZXRXcml0ZXJEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl -IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5hYmxlZCIgdHlwZT0ieHM6Ym9vbGVhbiIg -bWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldFdyaXRlcklk -IiB0eXBlPSJ4czp1bnNpZ25lZFNob3J0IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJEYXRhU2V0RmllbGRDb250ZW50TWFzayIgdHlwZT0idG5zOkRhdGFTZXRGaWVs -ZENvbnRlbnRNYXNrIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJL -ZXlGcmFtZUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldE5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2Nj -dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFT -ZXRXcml0ZXJQcm9wZXJ0aWVzIiB0eXBlPSJ0bnM6TGlzdE9mS2V5VmFsdWVQYWlyIiBtaW5PY2N1 -cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNw -b3J0U2V0dGluZ3MiIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxs -YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1lc3NhZ2VTZXR0aW5ncyIg -dHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv +bGlzaGVkRGF0YVNldFNvdXJjZURhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mUHVibGlzaGVkRGF0 +YVNldFNvdXJjZURhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4 +czpjb21wbGV4VHlwZSBuYW1lPSJQdWJsaXNoZWRWYXJpYWJsZURhdGFUeXBlIj4NCiAgICA8eHM6 +c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNoZWRWYXJpYWJsZSIgdHlw +ZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iQXR0cmlidXRlSWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1 +cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTYW1wbGluZ0ludGVydmFsSGludCIg +dHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l +PSJEZWFkYmFuZFR5cGUiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZWFkYmFuZFZhbHVlIiB0eXBlPSJ4czpkb3VibGUiIG1p +bk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkluZGV4UmFuZ2UiIHR5cGU9 +InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IlN1YnN0aXR1dGVWYWx1ZSIgdHlwZT0idWE6VmFyaWFudCIgbWluT2NjdXJz +PSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWV0YURhdGFQcm9wZXJ0aWVzIiB0eXBl +PSJ1YTpMaXN0T2ZRdWFsaWZpZWROYW1lIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50 -IG5hbWU9IkRhdGFTZXRXcml0ZXJEYXRhVHlwZSIgdHlwZT0idG5zOkRhdGFTZXRXcml0ZXJEYXRh -VHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRGF0YVNldFdyaXRlckRh -dGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRh -U2V0V3JpdGVyRGF0YVR5cGUiIHR5cGU9InRuczpEYXRhU2V0V3JpdGVyRGF0YVR5cGUiIG1pbk9j -Y3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv -eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxp -c3RPZkRhdGFTZXRXcml0ZXJEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZkRhdGFTZXRXcml0ZXJE -YXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5 -cGUgbmFtZT0iRGF0YVNldFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVu -Y2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l -bnQgbmFtZT0iRGF0YVNldFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6RGF0YVNl -dFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJM -aXN0T2ZEYXRhU2V0V3JpdGVyVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRXcml0ZXJUcmFuc3BvcnREYXRhVHlwZSIg -dHlwZT0idG5zOkRhdGFTZXRXcml0ZXJUcmFuc3BvcnREYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBt -YXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j -ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRGF0YVNl -dFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mRGF0YVNldFdyaXRlclRy -YW5zcG9ydERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpj -b21wbGV4VHlwZSBuYW1lPSJEYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIj4NCiAgICA8eHM6 -c2VxdWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz -OmVsZW1lbnQgbmFtZT0iRGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOkRh -dGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9 -Ikxpc3RPZkRhdGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiIHR5 -cGU9InRuczpEYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9j -Y3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K -ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZEYXRhU2V0V3Jp -dGVyTWVzc2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mRGF0YVNldFdyaXRlck1lc3NhZ2VE -YXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5 -cGUgbmFtZT0iUHViU3ViR3JvdXBEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5p -bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5hYmxlZCIgdHlwZT0i -eHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2Vj -dXJpdHlNb2RlIiB0eXBlPSJ0bnM6TWVzc2FnZVNlY3VyaXR5TW9kZSIgbWluT2NjdXJzPSIwIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VjdXJpdHlHcm91cElkIiB0eXBlPSJ4czpzdHJp -bmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJTZWN1cml0eUtleVNlcnZpY2VzIiB0eXBlPSJ0bnM6TGlzdE9mRW5kcG9pbnREZXNjcmlw -dGlvbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50 -IG5hbWU9Ik1heE5ldHdvcmtNZXNzYWdlU2l6ZSIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9j -Y3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikdyb3VwUHJvcGVydGllcyIgdHlw -ZT0idG5zOkxpc3RPZktleVZhbHVlUGFpciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu -dCBuYW1lPSJQdWJTdWJHcm91cERhdGFUeXBlIiB0eXBlPSJ0bnM6UHViU3ViR3JvdXBEYXRhVHlw -ZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUHViU3ViR3JvdXBEYXRhVHlw -ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHViU3ViR3Jv -dXBEYXRhVHlwZSIgdHlwZT0idG5zOlB1YlN1Ykdyb3VwRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIg -bWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVu -Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlB1YlN1 -Ykdyb3VwRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZQdWJTdWJHcm91cERhdGFUeXBlIiBuaWxs -YWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJXcml0 -ZXJHcm91cERhdGFUeXBlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4N -CiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOlB1YlN1Ykdyb3VwRGF0YVR5cGUiPg0KICAg -ICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iV3JpdGVyR3Jv -dXBJZCIgdHlwZT0ieHM6dW5zaWduZWRTaG9ydCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAg -IDx4czplbGVtZW50IG5hbWU9IlB1Ymxpc2hpbmdJbnRlcnZhbCIgdHlwZT0ieHM6ZG91YmxlIiBt -aW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iS2VlcEFsaXZlVGlt -ZSIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iUHJpb3JpdHkiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIgbWluT2NjdXJzPSIwIiAv -Pg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkxvY2FsZUlkcyIgdHlwZT0idWE6TGlzdE9m -U3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czpl -bGVtZW50IG5hbWU9IkhlYWRlckxheW91dFVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9 -IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlRyYW5z -cG9ydFNldHRpbmdzIiB0eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmls -bGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWVzc2FnZVNldHRp -bmdzIiB0eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy -dWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldFdyaXRlcnMiIHR5cGU9 -InRuczpMaXN0T2ZEYXRhU2V0V3JpdGVyRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 -InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4N -CiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl -bWVudCBuYW1lPSJXcml0ZXJHcm91cERhdGFUeXBlIiB0eXBlPSJ0bnM6V3JpdGVyR3JvdXBEYXRh -VHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mV3JpdGVyR3JvdXBEYXRh -VHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iV3JpdGVy -R3JvdXBEYXRhVHlwZSIgdHlwZT0idG5zOldyaXRlckdyb3VwRGF0YVR5cGUiIG1pbk9jY3Vycz0i -MCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2Vx -dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZldy -aXRlckdyb3VwRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZXcml0ZXJHcm91cERhdGFUeXBlIiBu -aWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJX -cml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgPC94 -czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iV3Jp -dGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOldyaXRlckdyb3VwVHJhbnNwb3J0 -RGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZldyaXRlckdyb3Vw -VHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50 -IG5hbWU9IldyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpXcml0ZXJHcm91 -cFRyYW5zcG9ydERhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl -Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZXcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBl -IiB0eXBlPSJ0bnM6TGlzdE9mV3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSIgbmlsbGFibGU9 -InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iV3JpdGVyR3Jv -dXBNZXNzYWdlRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNl -Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJXcml0ZXJHcm91cE1l -c3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOldyaXRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiAvPg0K -DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZXcml0ZXJHcm91cE1lc3NhZ2VEYXRhVHlw -ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iV3JpdGVyR3Jv -dXBNZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRuczpXcml0ZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSIg -bWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQog -ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt -ZT0iTGlzdE9mV3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZXcml0 -ZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0K -ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUHViU3ViQ29ubmVjdGlvbkRhdGFUeXBlIj4NCiAgICA8 -eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lIiB0eXBlPSJ4czpzdHJp -bmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJFbmFibGVkIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNoZXJJZCIgdHlwZT0idWE6VmFyaWFudCIgbWluT2NjdXJz -PSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNwb3J0UHJvZmlsZVVyaSIgdHlw -ZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz -OmVsZW1lbnQgbmFtZT0iQWRkcmVzcyIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1 -cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29ubmVj -dGlvblByb3BlcnRpZXMiIHR5cGU9InRuczpMaXN0T2ZLZXlWYWx1ZVBhaXIiIG1pbk9jY3Vycz0i +IG5hbWU9IlB1Ymxpc2hlZFZhcmlhYmxlRGF0YVR5cGUiIHR5cGU9InRuczpQdWJsaXNoZWRWYXJp +YWJsZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZQdWJsaXNo +ZWRWYXJpYWJsZURhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJQdWJsaXNoZWRWYXJpYWJsZURhdGFUeXBlIiB0eXBlPSJ0bnM6UHVibGlzaGVkVmFy +aWFibGVEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFi +bGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg +PHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUHVibGlzaGVkVmFyaWFibGVEYXRhVHlwZSIgdHlwZT0i +dG5zOkxpc3RPZlB1Ymxpc2hlZFZhcmlhYmxlRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hz +OmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlB1Ymxpc2hlZERhdGFJdGVtc0Rh +dGFUeXBlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4 +czpleHRlbnNpb24gYmFzZT0idG5zOlB1Ymxpc2hlZERhdGFTZXRTb3VyY2VEYXRhVHlwZSI+DQog +ICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNo +ZWREYXRhIiB0eXBlPSJ0bnM6TGlzdE9mUHVibGlzaGVkVmFyaWFibGVEYXRhVHlwZSIgbWluT2Nj +dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAg +IDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxl +eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlB1Ymxpc2hlZERhdGFJdGVtc0RhdGFUeXBlIiB0 +eXBlPSJ0bnM6UHVibGlzaGVkRGF0YUl0ZW1zRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhU +eXBlIG5hbWU9Ikxpc3RPZlB1Ymxpc2hlZERhdGFJdGVtc0RhdGFUeXBlIj4NCiAgICA8eHM6c2Vx +dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNoZWREYXRhSXRlbXNEYXRhVHlw +ZSIgdHlwZT0idG5zOlB1Ymxpc2hlZERhdGFJdGVtc0RhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1h +eE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNl +Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZQdWJsaXNo +ZWREYXRhSXRlbXNEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlB1Ymxpc2hlZERhdGFJdGVtc0Rh +dGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlw +ZSBuYW1lPSJQdWJsaXNoZWRFdmVudHNEYXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50 +IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpQdWJsaXNoZWRE +YXRhU2V0U291cmNlRGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iRXZlbnROb3RpZmllciIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1 +cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlNl +bGVjdGVkRmllbGRzIiB0eXBlPSJ0bnM6TGlzdE9mU2ltcGxlQXR0cmlidXRlT3BlcmFuZCIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1l +PSJGaWx0ZXIiIHR5cGU9InRuczpDb250ZW50RmlsdGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl +PSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+ +DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs +ZW1lbnQgbmFtZT0iUHVibGlzaGVkRXZlbnRzRGF0YVR5cGUiIHR5cGU9InRuczpQdWJsaXNoZWRF +dmVudHNEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUHVibGlz +aGVkRXZlbnRzRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9IlB1Ymxpc2hlZEV2ZW50c0RhdGFUeXBlIiB0eXBlPSJ0bnM6UHVibGlzaGVkRXZlbnRz +RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0 +cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl +bGVtZW50IG5hbWU9Ikxpc3RPZlB1Ymxpc2hlZEV2ZW50c0RhdGFUeXBlIiB0eXBlPSJ0bnM6TGlz +dE9mUHVibGlzaGVkRXZlbnRzRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+ +DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IkRhdGFTZXRGaWVsZENvbnRlbnRNYXNrIj4NCiAg +ICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dW5zaWduZWRJbnQiPg0KICAgIDwveHM6cmVzdHJp +Y3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldEZp +ZWxkQ29udGVudE1hc2siIHR5cGU9InRuczpEYXRhU2V0RmllbGRDb250ZW50TWFzayIgLz4NCg0K +ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRGF0YVNldEZpZWxkQ29udGVudE1hc2siPg0K +ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRGaWVsZENv +bnRlbnRNYXNrIiB0eXBlPSJ0bnM6RGF0YVNldEZpZWxkQ29udGVudE1hc2siIG1pbk9jY3Vycz0i +MCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpj +b21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRGF0YVNldEZpZWxkQ29udGVu +dE1hc2siIHR5cGU9InRuczpMaXN0T2ZEYXRhU2V0RmllbGRDb250ZW50TWFzayIgbmlsbGFibGU9 +InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGF0YVNldFdy +aXRlckRhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l +PSJOYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmFibGVkIiB0eXBlPSJ4czpib29sZWFuIiBtaW5P +Y2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0V3JpdGVySWQiIHR5 +cGU9InhzOnVuc2lnbmVkU2hvcnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9IkRhdGFTZXRGaWVsZENvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6RGF0YVNldEZpZWxkQ29u +dGVudE1hc2siIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IktleUZy +YW1lQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0TmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9 +IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldFdy +aXRlclByb3BlcnRpZXMiIHR5cGU9InRuczpMaXN0T2ZLZXlWYWx1ZVBhaXIiIG1pbk9jY3Vycz0i MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUcmFuc3BvcnRT ZXR0aW5ncyIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl -PSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iV3JpdGVyR3JvdXBzIiB0eXBlPSJ0 -bnM6TGlzdE9mV3JpdGVyR3JvdXBEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 -ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlYWRlckdyb3VwcyIgdHlwZT0idG5zOkxp -c3RPZlJlYWRlckdyb3VwRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+ -DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg -bmFtZT0iUHViU3ViQ29ubmVjdGlvbkRhdGFUeXBlIiB0eXBlPSJ0bnM6UHViU3ViQ29ubmVjdGlv -bkRhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZQdWJTdWJDb25u -ZWN0aW9uRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IlB1YlN1YkNvbm5lY3Rpb25EYXRhVHlwZSIgdHlwZT0idG5zOlB1YlN1YkNvbm5lY3Rpb25E -YXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRy -dWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs -ZW1lbnQgbmFtZT0iTGlzdE9mUHViU3ViQ29ubmVjdGlvbkRhdGFUeXBlIiB0eXBlPSJ0bnM6TGlz -dE9mUHViU3ViQ29ubmVjdGlvbkRhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50 -Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJDb25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUi -Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU -eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJDb25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIHR5 -cGU9InRuczpDb25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhU -eXBlIG5hbWU9Ikxpc3RPZkNvbm5lY3Rpb25UcmFuc3BvcnREYXRhVHlwZSI+DQogICAgPHhzOnNl -cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29ubmVjdGlvblRyYW5zcG9ydERhdGFU -eXBlIiB0eXBlPSJ0bnM6Q29ubmVjdGlvblRyYW5zcG9ydERhdGFUeXBlIiBtaW5PY2N1cnM9IjAi -IG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVl -bmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZDb25u -ZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZDb25uZWN0aW9uVHJhbnNw +PSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWVzc2FnZVNldHRpbmdzIiB0eXBl +PSJ1YTpFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog +ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt +ZT0iRGF0YVNldFdyaXRlckRhdGFUeXBlIiB0eXBlPSJ0bnM6RGF0YVNldFdyaXRlckRhdGFUeXBl +IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZEYXRhU2V0V3JpdGVyRGF0YVR5 +cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRX +cml0ZXJEYXRhVHlwZSIgdHlwZT0idG5zOkRhdGFTZXRXcml0ZXJEYXRhVHlwZSIgbWluT2NjdXJz +PSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpz +ZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9m +RGF0YVNldFdyaXRlckRhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mRGF0YVNldFdyaXRlckRhdGFU +eXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBu +YW1lPSJEYXRhU2V0V3JpdGVyVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4N +CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu +YW1lPSJEYXRhU2V0V3JpdGVyVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpEYXRhU2V0V3Jp +dGVyVHJhbnNwb3J0RGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RP +ZkRhdGFTZXRXcml0ZXJUcmFuc3BvcnREYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIiB0eXBl +PSJ0bnM6RGF0YVNldFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9j +Y3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K +ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZEYXRhU2V0V3Jp +dGVyVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZEYXRhU2V0V3JpdGVyVHJhbnNw b3J0RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBs -ZXhUeXBlIG5hbWU9Ik5ldHdvcmtBZGRyZXNzRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5ldHdvcmtJbnRlcmZhY2UiIHR5cGU9InhzOnN0cmlu -ZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K -ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJOZXR3b3JrQWRkcmVzc0Rh -dGFUeXBlIiB0eXBlPSJ0bnM6TmV0d29ya0FkZHJlc3NEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29t -cGxleFR5cGUgbmFtZT0iTGlzdE9mTmV0d29ya0FkZHJlc3NEYXRhVHlwZSI+DQogICAgPHhzOnNl -cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmV0d29ya0FkZHJlc3NEYXRhVHlwZSIg -dHlwZT0idG5zOk5ldHdvcmtBZGRyZXNzRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJz +ZXhUeXBlIG5hbWU9IkRhdGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1 +ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl +bWVudCBuYW1lPSJEYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6RGF0YVNl +dFdyaXRlck1lc3NhZ2VEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlz +dE9mRGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0i +dG5zOkRhdGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJz PSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv -eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk5ldHdvcmtBZGRyZXNz -RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZOZXR3b3JrQWRkcmVzc0RhdGFUeXBlIiBuaWxsYWJs -ZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJOZXR3b3Jr -QWRkcmVzc1VybERhdGFUeXBlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNl -Ij4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOk5ldHdvcmtBZGRyZXNzRGF0YVR5cGUi -Pg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXJs -IiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg -ICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBs -ZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJOZXR3 -b3JrQWRkcmVzc1VybERhdGFUeXBlIiB0eXBlPSJ0bnM6TmV0d29ya0FkZHJlc3NVcmxEYXRhVHlw -ZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mTmV0d29ya0FkZHJlc3NVcmxE -YXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmV0 -d29ya0FkZHJlc3NVcmxEYXRhVHlwZSIgdHlwZT0idG5zOk5ldHdvcmtBZGRyZXNzVXJsRGF0YVR5 -cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAv -Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50 -IG5hbWU9Ikxpc3RPZk5ldHdvcmtBZGRyZXNzVXJsRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZO -ZXR3b3JrQWRkcmVzc1VybERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0K -DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWFkZXJHcm91cERhdGFUeXBlIj4NCiAgICA8eHM6 -Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0i -dG5zOlB1YlN1Ykdyb3VwRGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNwb3J0U2V0dGluZ3MiIHR5cGU9InVhOkV4dGVuc2lv -bk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJNZXNzYWdlU2V0dGluZ3MiIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIg -bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJEYXRhU2V0UmVhZGVycyIgdHlwZT0idG5zOkxpc3RPZkRhdGFTZXRSZWFkZXJEYXRhVHlw -ZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5j -ZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwv -eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlYWRlckdyb3VwRGF0YVR5cGUi -IHR5cGU9InRuczpSZWFkZXJHcm91cERhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu -YW1lPSJMaXN0T2ZSZWFkZXJHcm91cERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJSZWFkZXJHcm91cERhdGFUeXBlIiB0eXBlPSJ0bnM6UmVhZGVy -R3JvdXBEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFi -bGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg -PHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUmVhZGVyR3JvdXBEYXRhVHlwZSIgdHlwZT0idG5zOkxp -c3RPZlJlYWRlckdyb3VwRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoN -CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlYWRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiPg0K -ICAgIDx4czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl -Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZWFkZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIiB0eXBl -PSJ0bnM6UmVhZGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5 -cGUgbmFtZT0iTGlzdE9mUmVhZGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSI+DQogICAgPHhzOnNl -cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVhZGVyR3JvdXBUcmFuc3BvcnREYXRh -VHlwZSIgdHlwZT0idG5zOlJlYWRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiIG1pbk9jY3Vycz0i -MCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2Vx -dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlJl -YWRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZSZWFkZXJHcm91cFRy -YW5zcG9ydERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpj -b21wbGV4VHlwZSBuYW1lPSJSZWFkZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSI+DQogICAgPHhzOnNl -cXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl -bGVtZW50IG5hbWU9IlJlYWRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6UmVhZGVy -R3JvdXBNZXNzYWdlRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RP -ZlJlYWRlckdyb3VwTWVzc2FnZURhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJSZWFkZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOlJl -YWRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3Vu -ZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs -ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZSZWFkZXJHcm91cE1lc3NhZ2VEYXRh -VHlwZSIgdHlwZT0idG5zOkxpc3RPZlJlYWRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiBuaWxsYWJs -ZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEYXRhU2V0 -UmVhZGVyRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9Ik5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVuYWJsZWQiIHR5cGU9InhzOmJvb2xlYW4iIG1p -bk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlB1Ymxpc2hlcklkIiB0eXBl -PSJ1YTpWYXJpYW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJX -cml0ZXJHcm91cElkIiB0eXBlPSJ4czp1bnNpZ25lZFNob3J0IiBtaW5PY2N1cnM9IjAiIC8+DQog -ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0V3JpdGVySWQiIHR5cGU9InhzOnVuc2lnbmVk -U2hvcnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRN -ZXRhRGF0YSIgdHlwZT0idG5zOkRhdGFTZXRNZXRhRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmls -bGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0RmllbGRDb250 -ZW50TWFzayIgdHlwZT0idG5zOkRhdGFTZXRGaWVsZENvbnRlbnRNYXNrIiBtaW5PY2N1cnM9IjAi -IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNZXNzYWdlUmVjZWl2ZVRpbWVvdXQiIHR5cGU9 -InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iS2V5 -RnJhbWVDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IkhlYWRlckxheW91dFVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5P -Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2Vj -dXJpdHlNb2RlIiB0eXBlPSJ0bnM6TWVzc2FnZVNlY3VyaXR5TW9kZSIgbWluT2NjdXJzPSIwIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VjdXJpdHlHcm91cElkIiB0eXBlPSJ4czpzdHJp -bmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJTZWN1cml0eUtleVNlcnZpY2VzIiB0eXBlPSJ0bnM6TGlzdE9mRW5kcG9pbnREZXNjcmlw -dGlvbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50 -IG5hbWU9IkRhdGFTZXRSZWFkZXJQcm9wZXJ0aWVzIiB0eXBlPSJ0bnM6TGlzdE9mS2V5VmFsdWVQ -YWlyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iVHJhbnNwb3J0U2V0dGluZ3MiIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2Nj -dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1lc3Nh -Z2VTZXR0aW5ncyIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1cnM9IjAiIG5pbGxh -YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3Vic2NyaWJlZERhdGFTZXQi +eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkRhdGFTZXRXcml0ZXJN +ZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZEYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFU +eXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBu +YW1lPSJQdWJTdWJHcm91cERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJOYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFi +bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmFibGVkIiB0eXBlPSJ4czpi +b29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0 +eU1vZGUiIHR5cGU9InRuczpNZXNzYWdlU2VjdXJpdHlNb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0eUdyb3VwSWQiIHR5cGU9InhzOnN0cmluZyIg +bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 +IlNlY3VyaXR5S2V5U2VydmljZXMiIHR5cGU9InRuczpMaXN0T2ZFbmRwb2ludERlc2NyaXB0aW9u +IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt +ZT0iTWF4TmV0d29ya01lc3NhZ2VTaXplIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJz +PSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iR3JvdXBQcm9wZXJ0aWVzIiB0eXBlPSJ0 +bnM6TGlzdE9mS2V5VmFsdWVQYWlyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h +bWU9IlB1YlN1Ykdyb3VwRGF0YVR5cGUiIHR5cGU9InRuczpQdWJTdWJHcm91cERhdGFUeXBlIiAv +Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZQdWJTdWJHcm91cERhdGFUeXBlIj4N +CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJTdWJHcm91cERh +dGFUeXBlIiB0eXBlPSJ0bnM6UHViU3ViR3JvdXBEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhP +Y2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4N +CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUHViU3ViR3Jv +dXBEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlB1YlN1Ykdyb3VwRGF0YVR5cGUiIG5pbGxhYmxl +PSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IldyaXRlckdy +b3VwRGF0YVR5cGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAg +ICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6UHViU3ViR3JvdXBEYXRhVHlwZSI+DQogICAgICAg +IDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJXcml0ZXJHcm91cElk +IiB0eXBlPSJ4czp1bnNpZ25lZFNob3J0IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iUHVibGlzaGluZ0ludGVydmFsIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9j +Y3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJLZWVwQWxpdmVUaW1lIiB0 +eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJQcmlvcml0eSIgdHlwZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5PY2N1cnM9IjAiIC8+DQog +ICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTG9jYWxlSWRzIiB0eXBlPSJ1YTpMaXN0T2ZTdHJp +bmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iSGVhZGVyTGF5b3V0VXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIg +bmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNwb3J0 +U2V0dGluZ3MiIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJs +ZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNZXNzYWdlU2V0dGluZ3Mi IHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu -dCBuYW1lPSJEYXRhU2V0UmVhZGVyRGF0YVR5cGUiIHR5cGU9InRuczpEYXRhU2V0UmVhZGVyRGF0 -YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkRhdGFTZXRSZWFkZXJE -YXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0 -YVNldFJlYWRlckRhdGFUeXBlIiB0eXBlPSJ0bnM6RGF0YVNldFJlYWRlckRhdGFUeXBlIiBtaW5P +Lz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0V3JpdGVycyIgdHlwZT0idG5z +Okxpc3RPZkRhdGFTZXRXcml0ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 +ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAg +IDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50 +IG5hbWU9IldyaXRlckdyb3VwRGF0YVR5cGUiIHR5cGU9InRuczpXcml0ZXJHcm91cERhdGFUeXBl +IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZXcml0ZXJHcm91cERhdGFUeXBl +Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJXcml0ZXJHcm91 +cERhdGFUeXBlIiB0eXBlPSJ0bnM6V3JpdGVyR3JvdXBEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBt +YXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j +ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mV3JpdGVy +R3JvdXBEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZldyaXRlckdyb3VwRGF0YVR5cGUiIG5pbGxh +YmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IldyaXRl +ckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNl +cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJXcml0ZXJH +cm91cFRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6V3JpdGVyR3JvdXBUcmFuc3BvcnREYXRh +VHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mV3JpdGVyR3JvdXBUcmFu +c3BvcnREYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt +ZT0iV3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOldyaXRlckdyb3VwVHJh +bnNwb3J0RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog +IDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZldyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiIHR5 +cGU9InRuczpMaXN0T2ZXcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1 +ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJXcml0ZXJHcm91cE1l +c3NhZ2VEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQog +IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IldyaXRlckdyb3VwTWVzc2Fn +ZURhdGFUeXBlIiB0eXBlPSJ0bnM6V3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiIC8+DQoNCiAg +PHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZldyaXRlckdyb3VwTWVzc2FnZURhdGFUeXBlIj4N +CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJXcml0ZXJHcm91cE1l +c3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOldyaXRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiBtaW5P Y2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8 L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJM -aXN0T2ZEYXRhU2V0UmVhZGVyRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZEYXRhU2V0UmVhZGVy -RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhU -eXBlIG5hbWU9IkRhdGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSI+DQogICAgPHhzOnNlcXVl -bmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt -ZW50IG5hbWU9IkRhdGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOkRhdGFT -ZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i -TGlzdE9mRGF0YVNldFJlYWRlclRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0UmVhZGVyVHJhbnNwb3J0RGF0YVR5cGUi -IHR5cGU9InRuczpEYXRhU2V0UmVhZGVyVHJhbnNwb3J0RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIg -bWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVu -Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkRhdGFT -ZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZkRhdGFTZXRSZWFkZXJU -cmFuc3BvcnREYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6 -Y29tcGxleFR5cGUgbmFtZT0iRGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlwZSI+DQogICAgPHhz -OnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 -czplbGVtZW50IG5hbWU9IkRhdGFTZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRuczpE -YXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l -PSJMaXN0T2ZEYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIiB0 -eXBlPSJ0bnM6RGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhP +aXN0T2ZXcml0ZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZldyaXRlckdy +b3VwTWVzc2FnZURhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4 +czpjb21wbGV4VHlwZSBuYW1lPSJQdWJTdWJDb25uZWN0aW9uRGF0YVR5cGUiPg0KICAgIDx4czpz +ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5hbWUiIHR5cGU9InhzOnN0cmluZyIg +bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 +IkVuYWJsZWQiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IlB1Ymxpc2hlcklkIiB0eXBlPSJ1YTpWYXJpYW50IiBtaW5PY2N1cnM9IjAi +IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUcmFuc3BvcnRQcm9maWxlVXJpIiB0eXBlPSJ4 +czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl +bWVudCBuYW1lPSJBZGRyZXNzIiB0eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0i +MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDb25uZWN0aW9u +UHJvcGVydGllcyIgdHlwZT0idG5zOkxpc3RPZktleVZhbHVlUGFpciIgbWluT2NjdXJzPSIwIiBu +aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRyYW5zcG9ydFNldHRp +bmdzIiB0eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy +dWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJXcml0ZXJHcm91cHMiIHR5cGU9InRuczpM +aXN0T2ZXcml0ZXJHcm91cERhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVhZGVyR3JvdXBzIiB0eXBlPSJ0bnM6TGlzdE9m +UmVhZGVyR3JvdXBEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg +ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l +PSJQdWJTdWJDb25uZWN0aW9uRGF0YVR5cGUiIHR5cGU9InRuczpQdWJTdWJDb25uZWN0aW9uRGF0 +YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlB1YlN1YkNvbm5lY3Rp +b25EYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +UHViU3ViQ29ubmVjdGlvbkRhdGFUeXBlIiB0eXBlPSJ0bnM6UHViU3ViQ29ubmVjdGlvbkRhdGFU +eXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIg +Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu +dCBuYW1lPSJMaXN0T2ZQdWJTdWJDb25uZWN0aW9uRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZQ +dWJTdWJDb25uZWN0aW9uRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoN +CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNvbm5lY3Rpb25UcmFuc3BvcnREYXRhVHlwZSI+DQog +ICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+ +DQogIDx4czplbGVtZW50IG5hbWU9IkNvbm5lY3Rpb25UcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0i +dG5zOkNvbm5lY3Rpb25UcmFuc3BvcnREYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg +bmFtZT0iTGlzdE9mQ29ubmVjdGlvblRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVu +Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDb25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUi +IHR5cGU9InRuczpDb25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4 +T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+ +DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkNvbm5lY3Rp +b25UcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZkNvbm5lY3Rpb25UcmFuc3BvcnRE +YXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5 +cGUgbmFtZT0iTmV0d29ya0FkZHJlc3NEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iTmV0d29ya0ludGVyZmFjZSIgdHlwZT0ieHM6c3RyaW5nIiBt +aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv +eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik5ldHdvcmtBZGRyZXNzRGF0YVR5 +cGUiIHR5cGU9InRuczpOZXR3b3JrQWRkcmVzc0RhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4 +VHlwZSBuYW1lPSJMaXN0T2ZOZXR3b3JrQWRkcmVzc0RhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVu +Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOZXR3b3JrQWRkcmVzc0RhdGFUeXBlIiB0eXBl +PSJ0bnM6TmV0d29ya0FkZHJlc3NEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVu +Ym91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpj +b21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mTmV0d29ya0FkZHJlc3NEYXRh +VHlwZSIgdHlwZT0idG5zOkxpc3RPZk5ldHdvcmtBZGRyZXNzRGF0YVR5cGUiIG5pbGxhYmxlPSJ0 +cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik5ldHdvcmtBZGRy +ZXNzVXJsRGF0YVR5cGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0K +ICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6TmV0d29ya0FkZHJlc3NEYXRhVHlwZSI+DQog +ICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVcmwiIHR5 +cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAg +PC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENv +bnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik5ldHdvcmtB +ZGRyZXNzVXJsRGF0YVR5cGUiIHR5cGU9InRuczpOZXR3b3JrQWRkcmVzc1VybERhdGFUeXBlIiAv +Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZOZXR3b3JrQWRkcmVzc1VybERhdGFU +eXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOZXR3b3Jr +QWRkcmVzc1VybERhdGFUeXBlIiB0eXBlPSJ0bnM6TmV0d29ya0FkZHJlc3NVcmxEYXRhVHlwZSIg +bWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQog +ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt +ZT0iTGlzdE9mTmV0d29ya0FkZHJlc3NVcmxEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZk5ldHdv +cmtBZGRyZXNzVXJsRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAg +PHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlYWRlckdyb3VwRGF0YVR5cGUiPg0KICAgIDx4czpjb21w +bGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6 +UHViU3ViR3JvdXBEYXRhVHlwZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJUcmFuc3BvcnRTZXR0aW5ncyIgdHlwZT0idWE6RXh0ZW5zaW9uT2Jq +ZWN0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVt +ZW50IG5hbWU9Ik1lc3NhZ2VTZXR0aW5ncyIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5P +Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9 +IkRhdGFTZXRSZWFkZXJzIiB0eXBlPSJ0bnM6TGlzdE9mRGF0YVNldFJlYWRlckRhdGFUeXBlIiBt +aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0K +ICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpj +b21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVhZGVyR3JvdXBEYXRhVHlwZSIgdHlw +ZT0idG5zOlJlYWRlckdyb3VwRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9 +Ikxpc3RPZlJlYWRlckdyb3VwRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4 +czplbGVtZW50IG5hbWU9IlJlYWRlckdyb3VwRGF0YVR5cGUiIHR5cGU9InRuczpSZWFkZXJHcm91 +cERhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0i +dHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6 +ZWxlbWVudCBuYW1lPSJMaXN0T2ZSZWFkZXJHcm91cERhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9m +UmVhZGVyR3JvdXBEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8 +eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVhZGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSI+DQogICAg +PHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog +IDx4czplbGVtZW50IG5hbWU9IlJlYWRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRu +czpSZWFkZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu +YW1lPSJMaXN0T2ZSZWFkZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVu +Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWFkZXJHcm91cFRyYW5zcG9ydERhdGFUeXBl +IiB0eXBlPSJ0bnM6UmVhZGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBt +YXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j +ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUmVhZGVy +R3JvdXBUcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlJlYWRlckdyb3VwVHJhbnNw +b3J0RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBs +ZXhUeXBlIG5hbWU9IlJlYWRlckdyb3VwTWVzc2FnZURhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVu +Y2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l +bnQgbmFtZT0iUmVhZGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRuczpSZWFkZXJHcm91 +cE1lc3NhZ2VEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUmVh +ZGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IlJlYWRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6UmVhZGVy +R3JvdXBNZXNzYWdlRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5 +cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlJlYWRlckdyb3VwTWVzc2FnZURhdGFUeXBl +IiB0eXBlPSJ0bnM6TGlzdE9mUmVhZGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiIG5pbGxhYmxlPSJ0 +cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRhdGFTZXRSZWFk +ZXJEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +TmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5hYmxlZCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2Nj +dXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHVibGlzaGVySWQiIHR5cGU9InVh +OlZhcmlhbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IldyaXRl +ckdyb3VwSWQiIHR5cGU9InhzOnVuc2lnbmVkU2hvcnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg +IDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRXcml0ZXJJZCIgdHlwZT0ieHM6dW5zaWduZWRTaG9y +dCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldE1ldGFE +YXRhIiB0eXBlPSJ0bnM6RGF0YVNldE1ldGFEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJs +ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRGaWVsZENvbnRlbnRN +YXNrIiB0eXBlPSJ0bnM6RGF0YVNldEZpZWxkQ29udGVudE1hc2siIG1pbk9jY3Vycz0iMCIgLz4N +CiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1lc3NhZ2VSZWNlaXZlVGltZW91dCIgdHlwZT0ieHM6 +ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJLZXlGcmFt +ZUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iSGVhZGVyTGF5b3V0VXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vy +cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0 +eU1vZGUiIHR5cGU9InRuczpNZXNzYWdlU2VjdXJpdHlNb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0eUdyb3VwSWQiIHR5cGU9InhzOnN0cmluZyIg +bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 +IlNlY3VyaXR5S2V5U2VydmljZXMiIHR5cGU9InRuczpMaXN0T2ZFbmRwb2ludERlc2NyaXB0aW9u +IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt +ZT0iRGF0YVNldFJlYWRlclByb3BlcnRpZXMiIHR5cGU9InRuczpMaXN0T2ZLZXlWYWx1ZVBhaXIi +IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l +PSJUcmFuc3BvcnRTZXR0aW5ncyIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1cnM9 +IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWVzc2FnZVNl +dHRpbmdzIiB0eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 +InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpYmVkRGF0YVNldCIgdHlw +ZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h +bWU9IkRhdGFTZXRSZWFkZXJEYXRhVHlwZSIgdHlwZT0idG5zOkRhdGFTZXRSZWFkZXJEYXRhVHlw +ZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRGF0YVNldFJlYWRlckRhdGFU +eXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0 +UmVhZGVyRGF0YVR5cGUiIHR5cGU9InRuczpEYXRhU2V0UmVhZGVyRGF0YVR5cGUiIG1pbk9jY3Vy +cz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6 +c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RP +ZkRhdGFTZXRSZWFkZXJEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZkRhdGFTZXRSZWFkZXJEYXRh +VHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUg +bmFtZT0iRGF0YVNldFJlYWRlclRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+ +DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg +bmFtZT0iRGF0YVNldFJlYWRlclRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6RGF0YVNldFJl +YWRlclRyYW5zcG9ydERhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0 +T2ZEYXRhU2V0UmVhZGVyVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgdHlw +ZT0idG5zOkRhdGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhP Y2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4N CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRGF0YVNldFJl -YWRlck1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZkRhdGFTZXRSZWFkZXJNZXNzYWdl -RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhU -eXBlIG5hbWU9IlN1YnNjcmliZWREYXRhU2V0RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4N -CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu -YW1lPSJTdWJzY3JpYmVkRGF0YVNldERhdGFUeXBlIiB0eXBlPSJ0bnM6U3Vic2NyaWJlZERhdGFT -ZXREYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mU3Vic2NyaWJl -ZERhdGFTZXREYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iU3Vic2NyaWJlZERhdGFTZXREYXRhVHlwZSIgdHlwZT0idG5zOlN1YnNjcmliZWREYXRh -U2V0RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxl -PSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 -czplbGVtZW50IG5hbWU9Ikxpc3RPZlN1YnNjcmliZWREYXRhU2V0RGF0YVR5cGUiIHR5cGU9InRu -czpMaXN0T2ZTdWJzY3JpYmVkRGF0YVNldERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czpl -bGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJUYXJnZXRWYXJpYWJsZXNEYXRhVHlw -ZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0 -ZW5zaW9uIGJhc2U9InRuczpTdWJzY3JpYmVkRGF0YVNldERhdGFUeXBlIj4NCiAgICAgICAgPHhz -OnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlRhcmdldFZhcmlhYmxlcyIg -dHlwZT0idG5zOkxpc3RPZkZpZWxkVGFyZ2V0RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFi -bGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lv -bj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6 -ZWxlbWVudCBuYW1lPSJUYXJnZXRWYXJpYWJsZXNEYXRhVHlwZSIgdHlwZT0idG5zOlRhcmdldFZh -cmlhYmxlc0RhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZUYXJn -ZXRWYXJpYWJsZXNEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iVGFyZ2V0VmFyaWFibGVzRGF0YVR5cGUiIHR5cGU9InRuczpUYXJnZXRWYXJpYWJs -ZXNEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9 +YWRlclRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mRGF0YVNldFJlYWRlclRyYW5z +cG9ydERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21w +bGV4VHlwZSBuYW1lPSJEYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIj4NCiAgICA8eHM6c2Vx +dWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs +ZW1lbnQgbmFtZT0iRGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOkRhdGFT +ZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxp +c3RPZkRhdGFTZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUiIHR5cGU9 +InRuczpEYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vy +cz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8 +L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZEYXRhU2V0UmVhZGVy +TWVzc2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mRGF0YVNldFJlYWRlck1lc3NhZ2VEYXRh +VHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUg +bmFtZT0iU3Vic2NyaWJlZERhdGFTZXREYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg +IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 +IlN1YnNjcmliZWREYXRhU2V0RGF0YVR5cGUiIHR5cGU9InRuczpTdWJzY3JpYmVkRGF0YVNldERh +dGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZTdWJzY3JpYmVkRGF0 +YVNldERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l +PSJTdWJzY3JpYmVkRGF0YVNldERhdGFUeXBlIiB0eXBlPSJ0bnM6U3Vic2NyaWJlZERhdGFTZXRE +YXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRy +dWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs +ZW1lbnQgbmFtZT0iTGlzdE9mU3Vic2NyaWJlZERhdGFTZXREYXRhVHlwZSIgdHlwZT0idG5zOkxp +c3RPZlN1YnNjcmliZWREYXRhU2V0RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1l +bnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRhcmdldFZhcmlhYmxlc0RhdGFUeXBlIj4N +CiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNp +b24gYmFzZT0idG5zOlN1YnNjcmliZWREYXRhU2V0RGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2Vx +dWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGFyZ2V0VmFyaWFibGVzIiB0eXBl +PSJ0bnM6TGlzdE9mRmllbGRUYXJnZXREYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i +dHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0K +ICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt +ZW50IG5hbWU9IlRhcmdldFZhcmlhYmxlc0RhdGFUeXBlIiB0eXBlPSJ0bnM6VGFyZ2V0VmFyaWFi +bGVzRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlRhcmdldFZh +cmlhYmxlc0RhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJUYXJnZXRWYXJpYWJsZXNEYXRhVHlwZSIgdHlwZT0idG5zOlRhcmdldFZhcmlhYmxlc0Rh +dGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1 +ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl +bWVudCBuYW1lPSJMaXN0T2ZUYXJnZXRWYXJpYWJsZXNEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RP +ZlRhcmdldFZhcmlhYmxlc0RhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0K +DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJGaWVsZFRhcmdldERhdGFUeXBlIj4NCiAgICA8eHM6 +c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0RmllbGRJZCIgdHlwZT0i +dWE6R3VpZCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVjZWl2 +ZXJJbmRleFJhbmdlIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy +dWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUYXJnZXROb2RlSWQiIHR5cGU9InVhOk5v +ZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9IkF0dHJpYnV0ZUlkIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAv +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iV3JpdGVJbmRleFJhbmdlIiB0eXBlPSJ4czpzdHJp +bmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJPdmVycmlkZVZhbHVlSGFuZGxpbmciIHR5cGU9InRuczpPdmVycmlkZVZhbHVlSGFuZGxp +bmciIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik92ZXJyaWRlVmFs +dWUiIHR5cGU9InVhOlZhcmlhbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNl +Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJGaWVsZFRhcmdldERh +dGFUeXBlIiB0eXBlPSJ0bnM6RmllbGRUYXJnZXREYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxl +eFR5cGUgbmFtZT0iTGlzdE9mRmllbGRUYXJnZXREYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNl +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRmllbGRUYXJnZXREYXRhVHlwZSIgdHlwZT0idG5z +OkZpZWxkVGFyZ2V0RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5 +cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkZpZWxkVGFyZ2V0RGF0YVR5cGUiIHR5cGU9 +InRuczpMaXN0T2ZGaWVsZFRhcmdldERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVt +ZW50Pg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJPdmVycmlkZVZhbHVlSGFuZGxpbmciPg0K +ICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0 +aW9uIHZhbHVlPSJEaXNhYmxlZF8wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJM +YXN0VXNhYmxlVmFsdWVfMSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iT3ZlcnJp +ZGVWYWx1ZV8yIiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4N +CiAgPHhzOmVsZW1lbnQgbmFtZT0iT3ZlcnJpZGVWYWx1ZUhhbmRsaW5nIiB0eXBlPSJ0bnM6T3Zl +cnJpZGVWYWx1ZUhhbmRsaW5nIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZP +dmVycmlkZVZhbHVlSGFuZGxpbmciPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9Ik92ZXJyaWRlVmFsdWVIYW5kbGluZyIgdHlwZT0idG5zOk92ZXJyaWRlVmFsdWVI +YW5kbGluZyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hz +OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0 +T2ZPdmVycmlkZVZhbHVlSGFuZGxpbmciIHR5cGU9InRuczpMaXN0T2ZPdmVycmlkZVZhbHVlSGFu +ZGxpbmciIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBl +IG5hbWU9IlN1YnNjcmliZWREYXRhU2V0TWlycm9yRGF0YVR5cGUiPg0KICAgIDx4czpjb21wbGV4 +Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6U3Vi +c2NyaWJlZERhdGFTZXREYXRhVHlwZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJQYXJlbnROb2RlTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5P +Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9 +IlJvbGVQZXJtaXNzaW9ucyIgdHlwZT0idG5zOkxpc3RPZlJvbGVQZXJtaXNzaW9uVHlwZSIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAg +ICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29t +cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlN1YnNjcmliZWREYXRhU2V0TWlycm9yRGF0 +YVR5cGUiIHR5cGU9InRuczpTdWJzY3JpYmVkRGF0YVNldE1pcnJvckRhdGFUeXBlIiAvPg0KDQog +IDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZTdWJzY3JpYmVkRGF0YVNldE1pcnJvckRhdGFU +eXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3Jp +YmVkRGF0YVNldE1pcnJvckRhdGFUeXBlIiB0eXBlPSJ0bnM6U3Vic2NyaWJlZERhdGFTZXRNaXJy +b3JEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9 InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz -OmVsZW1lbnQgbmFtZT0iTGlzdE9mVGFyZ2V0VmFyaWFibGVzRGF0YVR5cGUiIHR5cGU9InRuczpM -aXN0T2ZUYXJnZXRWYXJpYWJsZXNEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVu -dD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRmllbGRUYXJnZXREYXRhVHlwZSI+DQogICAg -PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldEZpZWxkSWQiIHR5 -cGU9InVhOkd1aWQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJl -Y2VpdmVySW5kZXhSYW5nZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl -PSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGFyZ2V0Tm9kZUlkIiB0eXBlPSJ1 -YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJBdHRyaWJ1dGVJZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0i -MCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IldyaXRlSW5kZXhSYW5nZSIgdHlwZT0ieHM6 -c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iT3ZlcnJpZGVWYWx1ZUhhbmRsaW5nIiB0eXBlPSJ0bnM6T3ZlcnJpZGVWYWx1ZUhh -bmRsaW5nIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJPdmVycmlk -ZVZhbHVlIiB0eXBlPSJ1YTpWYXJpYW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1 -ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRmllbGRUYXJn -ZXREYXRhVHlwZSIgdHlwZT0idG5zOkZpZWxkVGFyZ2V0RGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNv -bXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkZpZWxkVGFyZ2V0RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1 -ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkZpZWxkVGFyZ2V0RGF0YVR5cGUiIHR5cGU9 -InRuczpGaWVsZFRhcmdldERhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3Vu -ZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs -ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZGaWVsZFRhcmdldERhdGFUeXBlIiB0 -eXBlPSJ0bnM6TGlzdE9mRmllbGRUYXJnZXREYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6 -ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iT3ZlcnJpZGVWYWx1ZUhhbmRsaW5n -Ij4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVt -ZXJhdGlvbiB2YWx1ZT0iRGlzYWJsZWRfMCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1 -ZT0iTGFzdFVzYWJsZVZhbHVlXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik92 -ZXJyaWRlVmFsdWVfMiIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5 -cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik92ZXJyaWRlVmFsdWVIYW5kbGluZyIgdHlwZT0idG5z -Ok92ZXJyaWRlVmFsdWVIYW5kbGluZyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlz -dE9mT3ZlcnJpZGVWYWx1ZUhhbmRsaW5nIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJPdmVycmlkZVZhbHVlSGFuZGxpbmciIHR5cGU9InRuczpPdmVycmlkZVZh -bHVlSGFuZGxpbmciIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAg -PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i -TGlzdE9mT3ZlcnJpZGVWYWx1ZUhhbmRsaW5nIiB0eXBlPSJ0bnM6TGlzdE9mT3ZlcnJpZGVWYWx1 -ZUhhbmRsaW5nIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4 -VHlwZSBuYW1lPSJTdWJzY3JpYmVkRGF0YVNldE1pcnJvckRhdGFUeXBlIj4NCiAgICA8eHM6Y29t -cGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5z -OlN1YnNjcmliZWREYXRhU2V0RGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAg -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFyZW50Tm9kZU5hbWUiIHR5cGU9InhzOnN0cmluZyIg -bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJSb2xlUGVybWlzc2lvbnMiIHR5cGU9InRuczpMaXN0T2ZSb2xlUGVybWlzc2lvblR5cGUi -IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+ -DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hz -OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpYmVkRGF0YVNldE1pcnJv -ckRhdGFUeXBlIiB0eXBlPSJ0bnM6U3Vic2NyaWJlZERhdGFTZXRNaXJyb3JEYXRhVHlwZSIgLz4N -Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mU3Vic2NyaWJlZERhdGFTZXRNaXJyb3JE -YXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3Vi -c2NyaWJlZERhdGFTZXRNaXJyb3JEYXRhVHlwZSIgdHlwZT0idG5zOlN1YnNjcmliZWREYXRhU2V0 -TWlycm9yRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxh -YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog -IDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlN1YnNjcmliZWREYXRhU2V0TWlycm9yRGF0YVR5cGUi -IHR5cGU9InRuczpMaXN0T2ZTdWJzY3JpYmVkRGF0YVNldE1pcnJvckRhdGFUeXBlIiBuaWxsYWJs -ZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJQdWJTdWJD -b25maWd1cmF0aW9uRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IlB1Ymxpc2hlZERhdGFTZXRzIiB0eXBlPSJ0bnM6TGlzdE9mUHVibGlzaGVkRGF0 -YVNldERhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz -OmVsZW1lbnQgbmFtZT0iQ29ubmVjdGlvbnMiIHR5cGU9InRuczpMaXN0T2ZQdWJTdWJDb25uZWN0 -aW9uRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJFbmFibGVkIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+ -DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg -bmFtZT0iUHViU3ViQ29uZmlndXJhdGlvbkRhdGFUeXBlIiB0eXBlPSJ0bnM6UHViU3ViQ29uZmln -dXJhdGlvbkRhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZQdWJT -dWJDb25maWd1cmF0aW9uRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl -bGVtZW50IG5hbWU9IlB1YlN1YkNvbmZpZ3VyYXRpb25EYXRhVHlwZSIgdHlwZT0idG5zOlB1YlN1 -YkNvbmZpZ3VyYXRpb25EYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRl -ZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 -VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUHViU3ViQ29uZmlndXJhdGlvbkRhdGFU -eXBlIiB0eXBlPSJ0bnM6TGlzdE9mUHViU3ViQ29uZmlndXJhdGlvbkRhdGFUeXBlIiBuaWxsYWJs -ZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJEYXRhU2V0 -T3JkZXJpbmdUeXBlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAg -ICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVW5kZWZpbmVkXzAiIC8+DQogICAgICA8eHM6ZW51 -bWVyYXRpb24gdmFsdWU9IkFzY2VuZGluZ1dyaXRlcklkXzEiIC8+DQogICAgICA8eHM6ZW51bWVy -YXRpb24gdmFsdWU9IkFzY2VuZGluZ1dyaXRlcklkU2luZ2xlXzIiIC8+DQogICAgPC94czpyZXN0 -cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0 -T3JkZXJpbmdUeXBlIiB0eXBlPSJ0bnM6RGF0YVNldE9yZGVyaW5nVHlwZSIgLz4NCg0KICA8eHM6 -Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRGF0YVNldE9yZGVyaW5nVHlwZSI+DQogICAgPHhzOnNl -cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldE9yZGVyaW5nVHlwZSIgdHlw -ZT0idG5zOkRhdGFTZXRPcmRlcmluZ1R5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJv -dW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz -OmVsZW1lbnQgbmFtZT0iTGlzdE9mRGF0YVNldE9yZGVyaW5nVHlwZSIgdHlwZT0idG5zOkxpc3RP -ZkRhdGFTZXRPcmRlcmluZ1R5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAg -PHhzOnNpbXBsZVR5cGUgIG5hbWU9IlVhZHBOZXR3b3JrTWVzc2FnZUNvbnRlbnRNYXNrIj4NCiAg -ICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dW5zaWduZWRJbnQiPg0KICAgIDwveHM6cmVzdHJp -Y3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVWFkcE5ldHdv -cmtNZXNzYWdlQ29udGVudE1hc2siIHR5cGU9InRuczpVYWRwTmV0d29ya01lc3NhZ2VDb250ZW50 -TWFzayIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mVWFkcE5ldHdvcmtNZXNz -YWdlQ29udGVudE1hc2siPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IlVhZHBOZXR3b3JrTWVzc2FnZUNvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6VWFkcE5ldHdvcmtN -ZXNzYWdlQ29udGVudE1hc2siIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+ -DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg -bmFtZT0iTGlzdE9mVWFkcE5ldHdvcmtNZXNzYWdlQ29udGVudE1hc2siIHR5cGU9InRuczpMaXN0 -T2ZVYWRwTmV0d29ya01lc3NhZ2VDb250ZW50TWFzayIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxl -bWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVWFkcFdyaXRlckdyb3VwTWVzc2FnZURh -dGFUeXBlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4 -czpleHRlbnNpb24gYmFzZT0idG5zOldyaXRlckdyb3VwTWVzc2FnZURhdGFUeXBlIj4NCiAgICAg -ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikdyb3VwVmVyc2lv -biIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJEYXRhU2V0T3JkZXJpbmciIHR5cGU9InRuczpEYXRhU2V0T3JkZXJpbmdU -eXBlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmV0d29y -a01lc3NhZ2VDb250ZW50TWFzayIgdHlwZT0idG5zOlVhZHBOZXR3b3JrTWVzc2FnZUNvbnRlbnRN -YXNrIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2FtcGxp -bmdPZmZzZXQiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4 -czplbGVtZW50IG5hbWU9IlB1Ymxpc2hpbmdPZmZzZXQiIHR5cGU9InVhOkxpc3RPZkRvdWJsZSIg -bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4N -CiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6 -Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlVhZHBXcml0ZXJHcm91cE1lc3NhZ2VE -YXRhVHlwZSIgdHlwZT0idG5zOlVhZHBXcml0ZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSIgLz4NCg0K -ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mVWFkcFdyaXRlckdyb3VwTWVzc2FnZURhdGFU -eXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVYWRwV3Jp -dGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRuczpVYWRwV3JpdGVyR3JvdXBNZXNzYWdl -RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0 -cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl -bGVtZW50IG5hbWU9Ikxpc3RPZlVhZHBXcml0ZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0i -dG5zOkxpc3RPZlVhZHBXcml0ZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSIgbmlsbGFibGU9InRydWUi -PjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iVWFkcERhdGFTZXRNZXNz -YWdlQ29udGVudE1hc2siPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp1bnNpZ25lZElu -dCI+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxl -bWVudCBuYW1lPSJVYWRwRGF0YVNldE1lc3NhZ2VDb250ZW50TWFzayIgdHlwZT0idG5zOlVhZHBE -YXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNrIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJM -aXN0T2ZVYWRwRGF0YVNldE1lc3NhZ2VDb250ZW50TWFzayI+DQogICAgPHhzOnNlcXVlbmNlPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVWFkcERhdGFTZXRNZXNzYWdlQ29udGVudE1hc2siIHR5 -cGU9InRuczpVYWRwRGF0YVNldE1lc3NhZ2VDb250ZW50TWFzayIgbWluT2NjdXJzPSIwIiBtYXhP -Y2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU -eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZVYWRwRGF0YVNldE1lc3NhZ2VDb250ZW50 -TWFzayIgdHlwZT0idG5zOkxpc3RPZlVhZHBEYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNrIiBuaWxs -YWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJVYWRw -RGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1p -eGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpEYXRhU2V0V3JpdGVy -TWVzc2FnZURhdGFUeXBlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czpl -bGVtZW50IG5hbWU9IkRhdGFTZXRNZXNzYWdlQ29udGVudE1hc2siIHR5cGU9InRuczpVYWRwRGF0 -YVNldE1lc3NhZ2VDb250ZW50TWFzayIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czpl -bGVtZW50IG5hbWU9IkNvbmZpZ3VyZWRTaXplIiB0eXBlPSJ4czp1bnNpZ25lZFNob3J0IiBtaW5P -Y2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmV0d29ya01lc3NhZ2VO -dW1iZXIiIHR5cGU9InhzOnVuc2lnbmVkU2hvcnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0T2Zmc2V0IiB0eXBlPSJ4czp1bnNpZ25lZFNob3J0 -IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4 -dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K -ICA8eHM6ZWxlbWVudCBuYW1lPSJVYWRwRGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSIgdHlw -ZT0idG5zOlVhZHBEYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21w -bGV4VHlwZSBuYW1lPSJMaXN0T2ZVYWRwRGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSI+DQog -ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVWFkcERhdGFTZXRXcml0 -ZXJNZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRuczpVYWRwRGF0YVNldFdyaXRlck1lc3NhZ2VEYXRh +OmVsZW1lbnQgbmFtZT0iTGlzdE9mU3Vic2NyaWJlZERhdGFTZXRNaXJyb3JEYXRhVHlwZSIgdHlw +ZT0idG5zOkxpc3RPZlN1YnNjcmliZWREYXRhU2V0TWlycm9yRGF0YVR5cGUiIG5pbGxhYmxlPSJ0 +cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlB1YlN1YkNvbmZp +Z3VyYXRpb25EYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iUHVibGlzaGVkRGF0YVNldHMiIHR5cGU9InRuczpMaXN0T2ZQdWJsaXNoZWREYXRhU2V0 +RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl +bWVudCBuYW1lPSJDb25uZWN0aW9ucyIgdHlwZT0idG5zOkxpc3RPZlB1YlN1YkNvbm5lY3Rpb25E +YXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IkVuYWJsZWQiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAg +ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l +PSJQdWJTdWJDb25maWd1cmF0aW9uRGF0YVR5cGUiIHR5cGU9InRuczpQdWJTdWJDb25maWd1cmF0 +aW9uRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlB1YlN1YkNv +bmZpZ3VyYXRpb25EYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iUHViU3ViQ29uZmlndXJhdGlvbkRhdGFUeXBlIiB0eXBlPSJ0bnM6UHViU3ViQ29u +ZmlndXJhdGlvbkRhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBu +aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl +Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZQdWJTdWJDb25maWd1cmF0aW9uRGF0YVR5cGUi +IHR5cGU9InRuczpMaXN0T2ZQdWJTdWJDb25maWd1cmF0aW9uRGF0YVR5cGUiIG5pbGxhYmxlPSJ0 +cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IkRhdGFTZXRPcmRl +cmluZ1R5cGUiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAg +PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJVbmRlZmluZWRfMCIgLz4NCiAgICAgIDx4czplbnVtZXJh +dGlvbiB2YWx1ZT0iQXNjZW5kaW5nV3JpdGVySWRfMSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlv +biB2YWx1ZT0iQXNjZW5kaW5nV3JpdGVySWRTaW5nbGVfMiIgLz4NCiAgICA8L3hzOnJlc3RyaWN0 +aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRPcmRl +cmluZ1R5cGUiIHR5cGU9InRuczpEYXRhU2V0T3JkZXJpbmdUeXBlIiAvPg0KDQogIDx4czpjb21w +bGV4VHlwZSBuYW1lPSJMaXN0T2ZEYXRhU2V0T3JkZXJpbmdUeXBlIj4NCiAgICA8eHM6c2VxdWVu +Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0T3JkZXJpbmdUeXBlIiB0eXBlPSJ0 +bnM6RGF0YVNldE9yZGVyaW5nVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRl +ZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl +bWVudCBuYW1lPSJMaXN0T2ZEYXRhU2V0T3JkZXJpbmdUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mRGF0 +YVNldE9yZGVyaW5nVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6 +c2ltcGxlVHlwZSAgbmFtZT0iVWFkcE5ldHdvcmtNZXNzYWdlQ29udGVudE1hc2siPg0KICAgIDx4 +czpyZXN0cmljdGlvbiBiYXNlPSJ4czp1bnNpZ25lZEludCI+DQogICAgPC94czpyZXN0cmljdGlv +bj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJVYWRwTmV0d29ya01l +c3NhZ2VDb250ZW50TWFzayIgdHlwZT0idG5zOlVhZHBOZXR3b3JrTWVzc2FnZUNvbnRlbnRNYXNr +IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZVYWRwTmV0d29ya01lc3NhZ2VD +b250ZW50TWFzayI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +VWFkcE5ldHdvcmtNZXNzYWdlQ29udGVudE1hc2siIHR5cGU9InRuczpVYWRwTmV0d29ya01lc3Nh +Z2VDb250ZW50TWFzayIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAg +ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l +PSJMaXN0T2ZVYWRwTmV0d29ya01lc3NhZ2VDb250ZW50TWFzayIgdHlwZT0idG5zOkxpc3RPZlVh +ZHBOZXR3b3JrTWVzc2FnZUNvbnRlbnRNYXNrIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50 +Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJVYWRwV3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5 +cGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4 +dGVuc2lvbiBiYXNlPSJ0bnM6V3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiPg0KICAgICAgICA8 +eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iR3JvdXBWZXJzaW9uIiB0 +eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVt +ZW50IG5hbWU9IkRhdGFTZXRPcmRlcmluZyIgdHlwZT0idG5zOkRhdGFTZXRPcmRlcmluZ1R5cGUi +IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOZXR3b3JrTWVz +c2FnZUNvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6VWFkcE5ldHdvcmtNZXNzYWdlQ29udGVudE1hc2si +IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTYW1wbGluZ09m +ZnNldCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iUHVibGlzaGluZ09mZnNldCIgdHlwZT0idWE6TGlzdE9mRG91YmxlIiBtaW5P +Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAg +ICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21w +bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVWFkcFdyaXRlckdyb3VwTWVzc2FnZURhdGFU +eXBlIiB0eXBlPSJ0bnM6VWFkcFdyaXRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiAvPg0KDQogIDx4 +czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZVYWRwV3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUi +Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVhZHBXcml0ZXJH +cm91cE1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOlVhZHBXcml0ZXJHcm91cE1lc3NhZ2VEYXRh VHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUi IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l -bnQgbmFtZT0iTGlzdE9mVWFkcERhdGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRu -czpMaXN0T2ZVYWRwRGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSIgbmlsbGFibGU9InRydWUi -PjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVWFkcERhdGFTZXRSZWFk -ZXJNZXNzYWdlRGF0YVR5cGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2Ui -Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6RGF0YVNldFJlYWRlck1lc3NhZ2VEYXRh -VHlwZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJHcm91cFZlcnNpb24iIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQog -ICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmV0d29ya01lc3NhZ2VOdW1iZXIiIHR5cGU9Inhz -OnVuc2lnbmVkU2hvcnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJEYXRhU2V0T2Zmc2V0IiB0eXBlPSJ4czp1bnNpZ25lZFNob3J0IiBtaW5PY2N1cnM9IjAi -IC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldENsYXNzSWQiIHR5cGU9InVh -Okd1aWQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOZXR3 -b3JrTWVzc2FnZUNvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6VWFkcE5ldHdvcmtNZXNzYWdlQ29udGVu -dE1hc2siIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRh -U2V0TWVzc2FnZUNvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6VWFkcERhdGFTZXRNZXNzYWdlQ29udGVu -dE1hc2siIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJs -aXNoaW5nSW50ZXJ2YWwiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg -ICAgIDx4czplbGVtZW50IG5hbWU9IlJlY2VpdmVPZmZzZXQiIHR5cGU9InhzOmRvdWJsZSIgbWlu -T2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlByb2Nlc3NpbmdPZmZz -ZXQiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVl -bmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAg -PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVWFkcERhdGFTZXRSZWFkZXJN -ZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRuczpVYWRwRGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlw -ZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mVWFkcERhdGFTZXRSZWFkZXJN -ZXNzYWdlRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IlVhZHBEYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6VWFkcERhdGFT -ZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k -ZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlVhZHBEYXRhU2V0UmVhZGVyTWVzc2Fn -ZURhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mVWFkcERhdGFTZXRSZWFkZXJNZXNzYWdlRGF0YVR5 +bnQgbmFtZT0iTGlzdE9mVWFkcFdyaXRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6 +TGlzdE9mVWFkcFdyaXRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94 +czplbGVtZW50Pg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJVYWRwRGF0YVNldE1lc3NhZ2VD +b250ZW50TWFzayI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnVuc2lnbmVkSW50Ij4N +CiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50 +IG5hbWU9IlVhZHBEYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6VWFkcERhdGFT +ZXRNZXNzYWdlQ29udGVudE1hc2siIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RP +ZlVhZHBEYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNrIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJVYWRwRGF0YVNldE1lc3NhZ2VDb250ZW50TWFzayIgdHlwZT0i +dG5zOlVhZHBEYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNrIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vy +cz0idW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+ +DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlVhZHBEYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNr +IiB0eXBlPSJ0bnM6TGlzdE9mVWFkcERhdGFTZXRNZXNzYWdlQ29udGVudE1hc2siIG5pbGxhYmxl +PSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlVhZHBEYXRh +U2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9 +ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkRhdGFTZXRXcml0ZXJNZXNz +YWdlRGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iRGF0YVNldE1lc3NhZ2VDb250ZW50TWFzayIgdHlwZT0idG5zOlVhZHBEYXRhU2V0 +TWVzc2FnZUNvbnRlbnRNYXNrIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iQ29uZmlndXJlZFNpemUiIHR5cGU9InhzOnVuc2lnbmVkU2hvcnQiIG1pbk9jY3Vy +cz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOZXR3b3JrTWVzc2FnZU51bWJl +ciIgdHlwZT0ieHM6dW5zaWduZWRTaG9ydCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4 +czplbGVtZW50IG5hbWU9IkRhdGFTZXRPZmZzZXQiIHR5cGU9InhzOnVuc2lnbmVkU2hvcnQiIG1p +bk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5z +aW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 +czplbGVtZW50IG5hbWU9IlVhZHBEYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIiB0eXBlPSJ0 +bnM6VWFkcERhdGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhU +eXBlIG5hbWU9Ikxpc3RPZlVhZHBEYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIj4NCiAgICA8 +eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVYWRwRGF0YVNldFdyaXRlck1l +c3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOlVhZHBEYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBl +IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4N +CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu +YW1lPSJMaXN0T2ZVYWRwRGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOkxp +c3RPZlVhZHBEYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94 +czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJVYWRwRGF0YVNldFJlYWRlck1l +c3NhZ2VEYXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQog +ICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpEYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBl +Ij4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikdy +b3VwVmVyc2lvbiIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOZXR3b3JrTWVzc2FnZU51bWJlciIgdHlwZT0ieHM6dW5z +aWduZWRTaG9ydCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9 +IkRhdGFTZXRPZmZzZXQiIHR5cGU9InhzOnVuc2lnbmVkU2hvcnQiIG1pbk9jY3Vycz0iMCIgLz4N +CiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0Q2xhc3NJZCIgdHlwZT0idWE6R3Vp +ZCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5ldHdvcmtN +ZXNzYWdlQ29udGVudE1hc2siIHR5cGU9InRuczpVYWRwTmV0d29ya01lc3NhZ2VDb250ZW50TWFz +ayIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRN +ZXNzYWdlQ29udGVudE1hc2siIHR5cGU9InRuczpVYWRwRGF0YVNldE1lc3NhZ2VDb250ZW50TWFz +ayIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlB1Ymxpc2hp +bmdJbnRlcnZhbCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iUmVjZWl2ZU9mZnNldCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1 +cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHJvY2Vzc2luZ09mZnNldCIg +dHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+ +DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hz +OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJVYWRwRGF0YVNldFJlYWRlck1lc3Nh +Z2VEYXRhVHlwZSIgdHlwZT0idG5zOlVhZHBEYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIiAv +Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZVYWRwRGF0YVNldFJlYWRlck1lc3Nh +Z2VEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +VWFkcERhdGFTZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRuczpVYWRwRGF0YVNldFJl +YWRlck1lc3NhZ2VEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIg +bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw +ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVWFkcERhdGFTZXRSZWFkZXJNZXNzYWdlRGF0 +YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZVYWRwRGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlwZSIg +bmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0i +SnNvbk5ldHdvcmtNZXNzYWdlQ29udGVudE1hc2siPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNl +PSJ4czp1bnNpZ25lZEludCI+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVU +eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJKc29uTmV0d29ya01lc3NhZ2VDb250ZW50TWFzayIg +dHlwZT0idG5zOkpzb25OZXR3b3JrTWVzc2FnZUNvbnRlbnRNYXNrIiAvPg0KDQogIDx4czpjb21w +bGV4VHlwZSBuYW1lPSJMaXN0T2ZKc29uTmV0d29ya01lc3NhZ2VDb250ZW50TWFzayI+DQogICAg +PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSnNvbk5ldHdvcmtNZXNzYWdl +Q29udGVudE1hc2siIHR5cGU9InRuczpKc29uTmV0d29ya01lc3NhZ2VDb250ZW50TWFzayIgbWlu +T2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K +ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZKc29uTmV0d29y +a01lc3NhZ2VDb250ZW50TWFzayIgdHlwZT0idG5zOkxpc3RPZkpzb25OZXR3b3JrTWVzc2FnZUNv +bnRlbnRNYXNrIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4 +VHlwZSBuYW1lPSJKc29uV3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiPg0KICAgIDx4czpjb21w +bGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6 +V3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAg +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmV0d29ya01lc3NhZ2VDb250ZW50TWFzayIgdHlwZT0i +dG5zOkpzb25OZXR3b3JrTWVzc2FnZUNvbnRlbnRNYXNrIiBtaW5PY2N1cnM9IjAiIC8+DQogICAg +ICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBs +ZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJKc29u +V3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRuczpKc29uV3JpdGVyR3JvdXBNZXNz +YWdlRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkpzb25Xcml0 +ZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iSnNvbldyaXRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6SnNv +bldyaXRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5i +b3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv +bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZKc29uV3JpdGVyR3JvdXBNZXNz +YWdlRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZKc29uV3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5 cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5h -bWU9Ikpzb25OZXR3b3JrTWVzc2FnZUNvbnRlbnRNYXNrIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24g +bWU9Ikpzb25EYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNrIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24g YmFzZT0ieHM6dW5zaWduZWRJbnQiPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2lt -cGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSnNvbk5ldHdvcmtNZXNzYWdlQ29udGVudE1h -c2siIHR5cGU9InRuczpKc29uTmV0d29ya01lc3NhZ2VDb250ZW50TWFzayIgLz4NCg0KICA8eHM6 -Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mSnNvbk5ldHdvcmtNZXNzYWdlQ29udGVudE1hc2siPg0K -ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikpzb25OZXR3b3JrTWVz -c2FnZUNvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6SnNvbk5ldHdvcmtNZXNzYWdlQ29udGVudE1hc2si +cGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSnNvbkRhdGFTZXRNZXNzYWdlQ29udGVudE1h +c2siIHR5cGU9InRuczpKc29uRGF0YVNldE1lc3NhZ2VDb250ZW50TWFzayIgLz4NCg0KICA8eHM6 +Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mSnNvbkRhdGFTZXRNZXNzYWdlQ29udGVudE1hc2siPg0K +ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikpzb25EYXRhU2V0TWVz +c2FnZUNvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6SnNvbkRhdGFTZXRNZXNzYWdlQ29udGVudE1hc2si IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5j -ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mSnNvbk5l -dHdvcmtNZXNzYWdlQ29udGVudE1hc2siIHR5cGU9InRuczpMaXN0T2ZKc29uTmV0d29ya01lc3Nh +ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mSnNvbkRh +dGFTZXRNZXNzYWdlQ29udGVudE1hc2siIHR5cGU9InRuczpMaXN0T2ZKc29uRGF0YVNldE1lc3Nh Z2VDb250ZW50TWFzayIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29t -cGxleFR5cGUgbmFtZT0iSnNvbldyaXRlckdyb3VwTWVzc2FnZURhdGFUeXBlIj4NCiAgICA8eHM6 -Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0i -dG5zOldyaXRlckdyb3VwTWVzc2FnZURhdGFUeXBlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0K -ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5ldHdvcmtNZXNzYWdlQ29udGVudE1hc2siIHR5 -cGU9InRuczpKc29uTmV0d29ya01lc3NhZ2VDb250ZW50TWFzayIgbWluT2NjdXJzPSIwIiAvPg0K +cGxleFR5cGUgbmFtZT0iSnNvbkRhdGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiPg0KICAgIDx4 +czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNl +PSJ0bnM6RGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSI+DQogICAgICAgIDx4czpzZXF1ZW5j +ZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNr +IiB0eXBlPSJ0bnM6SnNvbkRhdGFTZXRNZXNzYWdlQ29udGVudE1hc2siIG1pbk9jY3Vycz0iMCIg +Lz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwv +eHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h +bWU9Ikpzb25EYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6SnNvbkRhdGFT +ZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxp +c3RPZkpzb25EYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJKc29uRGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlw +ZSIgdHlwZT0idG5zOkpzb25EYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIiBtaW5PY2N1cnM9 +IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl +cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZK +c29uRGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZkpzb25EYXRh +U2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0K +DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJKc29uRGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlw +ZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0 +ZW5zaW9uIGJhc2U9InRuczpEYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIj4NCiAgICAgICAg +PHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5ldHdvcmtNZXNzYWdl +Q29udGVudE1hc2siIHR5cGU9InRuczpKc29uTmV0d29ya01lc3NhZ2VDb250ZW50TWFzayIgbWlu +T2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRNZXNzYWdl +Q29udGVudE1hc2siIHR5cGU9InRuczpKc29uRGF0YVNldE1lc3NhZ2VDb250ZW50TWFzayIgbWlu +T2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNp +b24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz +OmVsZW1lbnQgbmFtZT0iSnNvbkRhdGFTZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRu +czpKc29uRGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5 +cGUgbmFtZT0iTGlzdE9mSnNvbkRhdGFTZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUiPg0KICAgIDx4 +czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikpzb25EYXRhU2V0UmVhZGVyTWVz +c2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6SnNvbkRhdGFTZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUi +IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h +bWU9Ikxpc3RPZkpzb25EYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6TGlz +dE9mSnNvbkRhdGFTZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hz +OmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRhdGFncmFtQ29ubmVjdGlvblRy +YW5zcG9ydERhdGFUeXBlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4N +CiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkNvbm5lY3Rpb25UcmFuc3BvcnREYXRhVHlw +ZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJE +aXNjb3ZlcnlBZGRyZXNzIiB0eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIg +bmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4 +dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K +ICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhZ3JhbUNvbm5lY3Rpb25UcmFuc3BvcnREYXRhVHlwZSIg +dHlwZT0idG5zOkRhdGFncmFtQ29ubmVjdGlvblRyYW5zcG9ydERhdGFUeXBlIiAvPg0KDQogIDx4 +czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZEYXRhZ3JhbUNvbm5lY3Rpb25UcmFuc3BvcnREYXRh +VHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YWdy +YW1Db25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpEYXRhZ3JhbUNvbm5lY3Rp +b25UcmFuc3BvcnREYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIg +bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw +ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRGF0YWdyYW1Db25uZWN0aW9uVHJhbnNwb3J0 +RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZEYXRhZ3JhbUNvbm5lY3Rpb25UcmFuc3BvcnREYXRh +VHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUg +bmFtZT0iRGF0YWdyYW1Xcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICA8eHM6Y29t +cGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5z +OldyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQog +ICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWVzc2FnZVJlcGVhdENvdW50IiB0eXBlPSJ4czp1 +bnNpZ25lZEJ5dGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1l +PSJNZXNzYWdlUmVwZWF0RGVsYXkiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0K ICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpj b21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i -SnNvbldyaXRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6SnNvbldyaXRlckdyb3Vw -TWVzc2FnZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZKc29u -V3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9Ikpzb25Xcml0ZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5z -Okpzb25Xcml0ZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9 -InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94 -czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mSnNvbldyaXRlckdyb3Vw -TWVzc2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mSnNvbldyaXRlckdyb3VwTWVzc2FnZURh -dGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpzaW1wbGVUeXBl -ICBuYW1lPSJKc29uRGF0YVNldE1lc3NhZ2VDb250ZW50TWFzayI+DQogICAgPHhzOnJlc3RyaWN0 -aW9uIGJhc2U9InhzOnVuc2lnbmVkSW50Ij4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hz -OnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikpzb25EYXRhU2V0TWVzc2FnZUNvbnRl -bnRNYXNrIiB0eXBlPSJ0bnM6SnNvbkRhdGFTZXRNZXNzYWdlQ29udGVudE1hc2siIC8+DQoNCiAg -PHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkpzb25EYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNr -Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJKc29uRGF0YVNl -dE1lc3NhZ2VDb250ZW50TWFzayIgdHlwZT0idG5zOkpzb25EYXRhU2V0TWVzc2FnZUNvbnRlbnRN -YXNrIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2Vx -dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkpz -b25EYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6TGlzdE9mSnNvbkRhdGFTZXRN -ZXNzYWdlQ29udGVudE1hc2siIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhz -OmNvbXBsZXhUeXBlIG5hbWU9Ikpzb25EYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIj4NCiAg -ICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24g -YmFzZT0idG5zOkRhdGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2Vx -dWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldE1lc3NhZ2VDb250ZW50 -TWFzayIgdHlwZT0idG5zOkpzb25EYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNrIiBtaW5PY2N1cnM9 -IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAg +RGF0YWdyYW1Xcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6RGF0YWdyYW1X +cml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l +PSJMaXN0T2ZEYXRhZ3JhbVdyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDx4czpz +ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFncmFtV3JpdGVyR3JvdXBUcmFu +c3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOkRhdGFncmFtV3JpdGVyR3JvdXBUcmFuc3BvcnREYXRh +VHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUi +IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l +bnQgbmFtZT0iTGlzdE9mRGF0YWdyYW1Xcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIiB0eXBl +PSJ0bnM6TGlzdE9mRGF0YWdyYW1Xcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIiBuaWxsYWJs +ZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJCcm9rZXJD +b25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhl +ZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6Q29ubmVjdGlvblRyYW5z +cG9ydERhdGFUeXBlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVt +ZW50IG5hbWU9IlJlc291cmNlVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmls +bGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXV0aGVudGljYXRp +b25Qcm9maWxlVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy +dWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAg ICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu -dCBuYW1lPSJKc29uRGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOkpzb25E -YXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l -PSJMaXN0T2ZKc29uRGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVl -bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSnNvbkRhdGFTZXRXcml0ZXJNZXNzYWdlRGF0 -YVR5cGUiIHR5cGU9InRuczpKc29uRGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSIgbWluT2Nj -dXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94 -czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlz -dE9mSnNvbkRhdGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZKc29u -RGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVu -dD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iSnNvbkRhdGFTZXRSZWFkZXJNZXNzYWdlRGF0 -YVR5cGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhz -OmV4dGVuc2lvbiBiYXNlPSJ0bnM6RGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlwZSI+DQogICAg -ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOZXR3b3JrTWVz -c2FnZUNvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6SnNvbk5ldHdvcmtNZXNzYWdlQ29udGVudE1hc2si -IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0TWVz -c2FnZUNvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6SnNvbkRhdGFTZXRNZXNzYWdlQ29udGVudE1hc2si -IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0 -ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQog -IDx4czplbGVtZW50IG5hbWU9Ikpzb25EYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIiB0eXBl -PSJ0bnM6SnNvbkRhdGFTZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBs -ZXhUeXBlIG5hbWU9Ikxpc3RPZkpzb25EYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIj4NCiAg -ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJKc29uRGF0YVNldFJlYWRl -ck1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOkpzb25EYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFU +dCBuYW1lPSJCcm9rZXJDb25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpCcm9r +ZXJDb25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h +bWU9Ikxpc3RPZkJyb2tlckNvbm5lY3Rpb25UcmFuc3BvcnREYXRhVHlwZSI+DQogICAgPHhzOnNl +cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnJva2VyQ29ubmVjdGlvblRyYW5zcG9y +dERhdGFUeXBlIiB0eXBlPSJ0bnM6QnJva2VyQ29ubmVjdGlvblRyYW5zcG9ydERhdGFUeXBlIiBt +aW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg +ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l +PSJMaXN0T2ZCcm9rZXJDb25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0 +T2ZCcm9rZXJDb25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hz +OmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IkJyb2tlclRyYW5zcG9ydFF1YWxp +dHlPZlNlcnZpY2UiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAg +ICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJOb3RTcGVjaWZpZWRfMCIgLz4NCiAgICAgIDx4czpl +bnVtZXJhdGlvbiB2YWx1ZT0iQmVzdEVmZm9ydF8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9u +IHZhbHVlPSJBdExlYXN0T25jZV8yIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJB +dE1vc3RPbmNlXzMiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkV4YWN0bHlPbmNl +XzQiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6 +ZWxlbWVudCBuYW1lPSJCcm9rZXJUcmFuc3BvcnRRdWFsaXR5T2ZTZXJ2aWNlIiB0eXBlPSJ0bnM6 +QnJva2VyVHJhbnNwb3J0UXVhbGl0eU9mU2VydmljZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg +bmFtZT0iTGlzdE9mQnJva2VyVHJhbnNwb3J0UXVhbGl0eU9mU2VydmljZSI+DQogICAgPHhzOnNl +cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnJva2VyVHJhbnNwb3J0UXVhbGl0eU9m +U2VydmljZSIgdHlwZT0idG5zOkJyb2tlclRyYW5zcG9ydFF1YWxpdHlPZlNlcnZpY2UiIG1pbk9j +Y3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg +PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mQnJva2VyVHJhbnNw +b3J0UXVhbGl0eU9mU2VydmljZSIgdHlwZT0idG5zOkxpc3RPZkJyb2tlclRyYW5zcG9ydFF1YWxp +dHlPZlNlcnZpY2UiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBs +ZXhUeXBlIG5hbWU9IkJyb2tlcldyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDx4 +czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNl +PSJ0bnM6V3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSI+DQogICAgICAgIDx4czpzZXF1ZW5j +ZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJRdWV1ZU5hbWUiIHR5cGU9InhzOnN0cmlu +ZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJSZXNvdXJjZVVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkF1dGhlbnRpY2F0aW9u +UHJvZmlsZVVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl +IiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RlZERlbGl2ZXJ5R3VhcmFu +dGVlIiB0eXBlPSJ0bnM6QnJva2VyVHJhbnNwb3J0UXVhbGl0eU9mU2VydmljZSIgbWluT2NjdXJz +PSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQog +ICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l +bnQgbmFtZT0iQnJva2VyV3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOkJy +b2tlcldyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl +IG5hbWU9Ikxpc3RPZkJyb2tlcldyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDx4 +czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJyb2tlcldyaXRlckdyb3VwVHJh +bnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpCcm9rZXJXcml0ZXJHcm91cFRyYW5zcG9ydERhdGFU eXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIg Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu -dCBuYW1lPSJMaXN0T2ZKc29uRGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5z -Okxpc3RPZkpzb25EYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+ -PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEYXRhZ3JhbUNvbm5lY3Rp -b25UcmFuc3BvcnREYXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxz -ZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpDb25uZWN0aW9uVHJhbnNwb3J0RGF0 -YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFt -ZT0iRGlzY292ZXJ5QWRkcmVzcyIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1cnM9 -IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94 -czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlw -ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YWdyYW1Db25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5 -cGUiIHR5cGU9InRuczpEYXRhZ3JhbUNvbm5lY3Rpb25UcmFuc3BvcnREYXRhVHlwZSIgLz4NCg0K -ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRGF0YWdyYW1Db25uZWN0aW9uVHJhbnNwb3J0 -RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRh -dGFncmFtQ29ubmVjdGlvblRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6RGF0YWdyYW1Db25u -ZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k -ZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkRhdGFncmFtQ29ubmVjdGlvblRyYW5z -cG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mRGF0YWdyYW1Db25uZWN0aW9uVHJhbnNwb3J0 -RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhU -eXBlIG5hbWU9IkRhdGFncmFtV3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSI+DQogICAgPHhz -OmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9 -InRuczpXcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNl -Pg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1lc3NhZ2VSZXBlYXRDb3VudCIgdHlwZT0i -eHM6dW5zaWduZWRCeXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iTWVzc2FnZVJlcGVhdERlbGF5IiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIg -Lz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwv -eHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h -bWU9IkRhdGFncmFtV3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOkRhdGFn -cmFtV3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg -bmFtZT0iTGlzdE9mRGF0YWdyYW1Xcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICA8 -eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhZ3JhbVdyaXRlckdyb3Vw -VHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpEYXRhZ3JhbVdyaXRlckdyb3VwVHJhbnNwb3J0 -RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0 -cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl -bGVtZW50IG5hbWU9Ikxpc3RPZkRhdGFncmFtV3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSIg -dHlwZT0idG5zOkxpc3RPZkRhdGFncmFtV3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSIgbmls -bGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQnJv -a2VyQ29ubmVjdGlvblRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQg -bWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkNvbm5lY3Rpb25U +dCBuYW1lPSJMaXN0T2ZCcm9rZXJXcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0 +bnM6TGlzdE9mQnJva2VyV3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSIgbmlsbGFibGU9InRy +dWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQnJva2VyRGF0YVNl +dFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9 +ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkRhdGFTZXRXcml0ZXJUcmFu +c3BvcnREYXRhVHlwZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxl +bWVudCBuYW1lPSJRdWV1ZU5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxs +YWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNvdXJjZVVyaSIg +dHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg +ICAgIDx4czplbGVtZW50IG5hbWU9IkF1dGhlbnRpY2F0aW9uUHJvZmlsZVVyaSIgdHlwZT0ieHM6 +c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czpl +bGVtZW50IG5hbWU9IlJlcXVlc3RlZERlbGl2ZXJ5R3VhcmFudGVlIiB0eXBlPSJ0bnM6QnJva2Vy +VHJhbnNwb3J0UXVhbGl0eU9mU2VydmljZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4 +czplbGVtZW50IG5hbWU9Ik1ldGFEYXRhUXVldWVOYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9j +Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +TWV0YURhdGFVcGRhdGVUaW1lIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAg +ICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29t +cGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkJy +b2tlckRhdGFTZXRXcml0ZXJUcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOkJyb2tlckRhdGFT +ZXRXcml0ZXJUcmFuc3BvcnREYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i +TGlzdE9mQnJva2VyRGF0YVNldFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICA8eHM6c2Vx +dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCcm9rZXJEYXRhU2V0V3JpdGVyVHJhbnNw +b3J0RGF0YVR5cGUiIHR5cGU9InRuczpCcm9rZXJEYXRhU2V0V3JpdGVyVHJhbnNwb3J0RGF0YVR5 +cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAv +Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50 +IG5hbWU9Ikxpc3RPZkJyb2tlckRhdGFTZXRXcml0ZXJUcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0i +dG5zOkxpc3RPZkJyb2tlckRhdGFTZXRXcml0ZXJUcmFuc3BvcnREYXRhVHlwZSIgbmlsbGFibGU9 +InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQnJva2VyRGF0 +YVNldFJlYWRlclRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4 +ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkRhdGFTZXRSZWFkZXJU cmFuc3BvcnREYXRhVHlwZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJSZXNvdXJjZVVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAi -IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkF1dGhlbnRp -Y2F0aW9uUHJvZmlsZVVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl -PSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+ -DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs -ZW1lbnQgbmFtZT0iQnJva2VyQ29ubmVjdGlvblRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6 -QnJva2VyQ29ubmVjdGlvblRyYW5zcG9ydERhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlw -ZSBuYW1lPSJMaXN0T2ZCcm9rZXJDb25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDx4 -czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJyb2tlckNvbm5lY3Rpb25UcmFu -c3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOkJyb2tlckNvbm5lY3Rpb25UcmFuc3BvcnREYXRhVHlw +ZWxlbWVudCBuYW1lPSJRdWV1ZU5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBu +aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNvdXJjZVVy +aSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +ICAgICAgIDx4czplbGVtZW50IG5hbWU9IkF1dGhlbnRpY2F0aW9uUHJvZmlsZVVyaSIgdHlwZT0i +eHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4 +czplbGVtZW50IG5hbWU9IlJlcXVlc3RlZERlbGl2ZXJ5R3VhcmFudGVlIiB0eXBlPSJ0bnM6QnJv +a2VyVHJhbnNwb3J0UXVhbGl0eU9mU2VydmljZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAg +IDx4czplbGVtZW50IG5hbWU9Ik1ldGFEYXRhUXVldWVOYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1p +bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQog +ICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNv +bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJCcm9rZXJEYXRhU2V0UmVhZGVyVHJhbnNw +b3J0RGF0YVR5cGUiIHR5cGU9InRuczpCcm9rZXJEYXRhU2V0UmVhZGVyVHJhbnNwb3J0RGF0YVR5 +cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkJyb2tlckRhdGFTZXRSZWFk +ZXJUcmFuc3BvcnREYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iQnJva2VyRGF0YVNldFJlYWRlclRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6 +QnJva2VyRGF0YVNldFJlYWRlclRyYW5zcG9ydERhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9j +Y3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K +ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZCcm9rZXJEYXRh +U2V0UmVhZGVyVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZCcm9rZXJEYXRhU2V0 +UmVhZGVyVHJhbnNwb3J0RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoN +CiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IkRpYWdub3N0aWNzTGV2ZWwiPg0KICAgIDx4czpyZXN0 +cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJC +YXNpY18wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJBZHZhbmNlZF8xIiAvPg0K +ICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJbmZvXzIiIC8+DQogICAgICA8eHM6ZW51bWVy +YXRpb24gdmFsdWU9IkxvZ18zIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEZWJ1 +Z180IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhz +OmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY3NMZXZlbCIgdHlwZT0idG5zOkRpYWdub3N0aWNzTGV2 +ZWwiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkRpYWdub3N0aWNzTGV2ZWwi +Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNz +TGV2ZWwiIHR5cGU9InRuczpEaWFnbm9zdGljc0xldmVsIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vy +cz0idW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+ +DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkRpYWdub3N0aWNzTGV2ZWwiIHR5cGU9InRuczpM +aXN0T2ZEaWFnbm9zdGljc0xldmVsIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQog +IDx4czpzaW1wbGVUeXBlICBuYW1lPSJQdWJTdWJEaWFnbm9zdGljc0NvdW50ZXJDbGFzc2lmaWNh +dGlvbiI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6 +ZW51bWVyYXRpb24gdmFsdWU9IkluZm9ybWF0aW9uXzAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRp +b24gdmFsdWU9IkVycm9yXzEiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1w +bGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJTdWJEaWFnbm9zdGljc0NvdW50ZXJDbGFz +c2lmaWNhdGlvbiIgdHlwZT0idG5zOlB1YlN1YkRpYWdub3N0aWNzQ291bnRlckNsYXNzaWZpY2F0 +aW9uIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZQdWJTdWJEaWFnbm9zdGlj +c0NvdW50ZXJDbGFzc2lmaWNhdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iUHViU3ViRGlhZ25vc3RpY3NDb3VudGVyQ2xhc3NpZmljYXRpb24iIHR5cGU9 +InRuczpQdWJTdWJEaWFnbm9zdGljc0NvdW50ZXJDbGFzc2lmaWNhdGlvbiIgbWluT2NjdXJzPSIw +IiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv +bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZQdWJTdWJEaWFnbm9zdGljc0Nv +dW50ZXJDbGFzc2lmaWNhdGlvbiIgdHlwZT0idG5zOkxpc3RPZlB1YlN1YkRpYWdub3N0aWNzQ291 +bnRlckNsYXNzaWZpY2F0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4 +czpjb21wbGV4VHlwZSBuYW1lPSJBbGlhc05hbWVEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNl +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWxpYXNOYW1lIiB0eXBlPSJ1YTpRdWFsaWZpZWRO +YW1lIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iUmVmZXJlbmNlZE5vZGVzIiB0eXBlPSJ1YTpMaXN0T2ZFeHBhbmRlZE5vZGVJZCIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz +OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBbGlhc05hbWVEYXRhVHlwZSIgdHlw +ZT0idG5zOkFsaWFzTmFtZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJM +aXN0T2ZBbGlhc05hbWVEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iQWxpYXNOYW1lRGF0YVR5cGUiIHR5cGU9InRuczpBbGlhc05hbWVEYXRhVHlw ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+ DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg -bmFtZT0iTGlzdE9mQnJva2VyQ29ubmVjdGlvblRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6 -TGlzdE9mQnJva2VyQ29ubmVjdGlvblRyYW5zcG9ydERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+ -PC94czplbGVtZW50Pg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJCcm9rZXJUcmFuc3BvcnRR -dWFsaXR5T2ZTZXJ2aWNlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4N -CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm90U3BlY2lmaWVkXzAiIC8+DQogICAgICA8 -eHM6ZW51bWVyYXRpb24gdmFsdWU9IkJlc3RFZmZvcnRfMSIgLz4NCiAgICAgIDx4czplbnVtZXJh -dGlvbiB2YWx1ZT0iQXRMZWFzdE9uY2VfMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1 -ZT0iQXRNb3N0T25jZV8zIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJFeGFjdGx5 -T25jZV80IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAg -PHhzOmVsZW1lbnQgbmFtZT0iQnJva2VyVHJhbnNwb3J0UXVhbGl0eU9mU2VydmljZSIgdHlwZT0i -dG5zOkJyb2tlclRyYW5zcG9ydFF1YWxpdHlPZlNlcnZpY2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhU -eXBlIG5hbWU9Ikxpc3RPZkJyb2tlclRyYW5zcG9ydFF1YWxpdHlPZlNlcnZpY2UiPg0KICAgIDx4 -czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJyb2tlclRyYW5zcG9ydFF1YWxp -dHlPZlNlcnZpY2UiIHR5cGU9InRuczpCcm9rZXJUcmFuc3BvcnRRdWFsaXR5T2ZTZXJ2aWNlIiBt -aW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+ -DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkJyb2tlclRy -YW5zcG9ydFF1YWxpdHlPZlNlcnZpY2UiIHR5cGU9InRuczpMaXN0T2ZCcm9rZXJUcmFuc3BvcnRR -dWFsaXR5T2ZTZXJ2aWNlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpj -b21wbGV4VHlwZSBuYW1lPSJCcm9rZXJXcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIj4NCiAg -ICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24g -YmFzZT0idG5zOldyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2Vx -dWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUXVldWVOYW1lIiB0eXBlPSJ4czpz -dHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iUmVzb3VyY2VVcmkiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBdXRoZW50aWNh -dGlvblByb2ZpbGVVcmkiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i -dHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0ZWREZWxpdmVyeUd1 -YXJhbnRlZSIgdHlwZT0idG5zOkJyb2tlclRyYW5zcG9ydFF1YWxpdHlPZlNlcnZpY2UiIG1pbk9j -Y3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9u -Pg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl -bGVtZW50IG5hbWU9IkJyb2tlcldyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRu -czpCcm9rZXJXcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4 -VHlwZSBuYW1lPSJMaXN0T2ZCcm9rZXJXcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIj4NCiAg -ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCcm9rZXJXcml0ZXJHcm91 -cFRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6QnJva2VyV3JpdGVyR3JvdXBUcmFuc3BvcnRE -YXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRy -dWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs -ZW1lbnQgbmFtZT0iTGlzdE9mQnJva2VyV3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSIgdHlw -ZT0idG5zOkxpc3RPZkJyb2tlcldyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiIG5pbGxhYmxl -PSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkJyb2tlckRh -dGFTZXRXcml0ZXJUcmFuc3BvcnREYXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1p -eGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpEYXRhU2V0V3JpdGVy -VHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhz -OmVsZW1lbnQgbmFtZT0iUXVldWVOYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIg -bmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzb3VyY2VV -cmkiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg -ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBdXRoZW50aWNhdGlvblByb2ZpbGVVcmkiIHR5cGU9 -InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0ZWREZWxpdmVyeUd1YXJhbnRlZSIgdHlwZT0idG5zOkJy -b2tlclRyYW5zcG9ydFF1YWxpdHlPZlNlcnZpY2UiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJNZXRhRGF0YVF1ZXVlTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBt -aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5h -bWU9Ik1ldGFEYXRhVXBkYXRlVGltZSIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+ -DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hz -OmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l -PSJCcm9rZXJEYXRhU2V0V3JpdGVyVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpCcm9rZXJE -YXRhU2V0V3JpdGVyVHJhbnNwb3J0RGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h -bWU9Ikxpc3RPZkJyb2tlckRhdGFTZXRXcml0ZXJUcmFuc3BvcnREYXRhVHlwZSI+DQogICAgPHhz -OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnJva2VyRGF0YVNldFdyaXRlclRy -YW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6QnJva2VyRGF0YVNldFdyaXRlclRyYW5zcG9ydERh -dGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1 -ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl -bWVudCBuYW1lPSJMaXN0T2ZCcm9rZXJEYXRhU2V0V3JpdGVyVHJhbnNwb3J0RGF0YVR5cGUiIHR5 -cGU9InRuczpMaXN0T2ZCcm9rZXJEYXRhU2V0V3JpdGVyVHJhbnNwb3J0RGF0YVR5cGUiIG5pbGxh -YmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkJyb2tl -ckRhdGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50 -IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpEYXRhU2V0UmVh -ZGVyVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iUXVldWVOYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0i -MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzb3Vy -Y2VVcmkiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBdXRoZW50aWNhdGlvblByb2ZpbGVVcmkiIHR5 -cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0ZWREZWxpdmVyeUd1YXJhbnRlZSIgdHlwZT0idG5z -OkJyb2tlclRyYW5zcG9ydFF1YWxpdHlPZlNlcnZpY2UiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg -ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNZXRhRGF0YVF1ZXVlTmFtZSIgdHlwZT0ieHM6c3RyaW5n -IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNl -Pg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94 -czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQnJva2VyRGF0YVNldFJlYWRlclRy -YW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6QnJva2VyRGF0YVNldFJlYWRlclRyYW5zcG9ydERh -dGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZCcm9rZXJEYXRhU2V0 -UmVhZGVyVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl -bGVtZW50IG5hbWU9IkJyb2tlckRhdGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0i -dG5zOkJyb2tlckRhdGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBt -YXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j -ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mQnJva2Vy -RGF0YVNldFJlYWRlclRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mQnJva2VyRGF0 -YVNldFJlYWRlclRyYW5zcG9ydERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50 -Pg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJEaWFnbm9zdGljc0xldmVsIj4NCiAgICA8eHM6 -cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1 -ZT0iQmFzaWNfMCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQWR2YW5jZWRfMSIg -Lz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSW5mb18yIiAvPg0KICAgICAgPHhzOmVu -dW1lcmF0aW9uIHZhbHVlPSJMb2dfMyIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0i -RGVidWdfNCIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQog -IDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNzTGV2ZWwiIHR5cGU9InRuczpEaWFnbm9zdGlj -c0xldmVsIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZEaWFnbm9zdGljc0xl -dmVsIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9z -dGljc0xldmVsIiB0eXBlPSJ0bnM6RGlhZ25vc3RpY3NMZXZlbCIgbWluT2NjdXJzPSIwIiBtYXhP -Y2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU -eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZEaWFnbm9zdGljc0xldmVsIiB0eXBlPSJ0 -bnM6TGlzdE9mRGlhZ25vc3RpY3NMZXZlbCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4N -Cg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iUHViU3ViRGlhZ25vc3RpY3NDb3VudGVyQ2xhc3Np -ZmljYXRpb24iPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAg -PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJbmZvcm1hdGlvbl8wIiAvPg0KICAgICAgPHhzOmVudW1l -cmF0aW9uIHZhbHVlPSJFcnJvcl8xIiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6 -c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUHViU3ViRGlhZ25vc3RpY3NDb3VudGVy -Q2xhc3NpZmljYXRpb24iIHR5cGU9InRuczpQdWJTdWJEaWFnbm9zdGljc0NvdW50ZXJDbGFzc2lm -aWNhdGlvbiIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUHViU3ViRGlhZ25v -c3RpY3NDb3VudGVyQ2xhc3NpZmljYXRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9IlB1YlN1YkRpYWdub3N0aWNzQ291bnRlckNsYXNzaWZpY2F0aW9uIiB0 -eXBlPSJ0bnM6UHViU3ViRGlhZ25vc3RpY3NDb3VudGVyQ2xhc3NpZmljYXRpb24iIG1pbk9jY3Vy -cz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94 -czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUHViU3ViRGlhZ25vc3Rp -Y3NDb3VudGVyQ2xhc3NpZmljYXRpb24iIHR5cGU9InRuczpMaXN0T2ZQdWJTdWJEaWFnbm9zdGlj -c0NvdW50ZXJDbGFzc2lmaWNhdGlvbiIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0K -ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQWxpYXNOYW1lRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1 -ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkFsaWFzTmFtZSIgdHlwZT0idWE6UXVhbGlm -aWVkTmFtZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IlJlZmVyZW5jZWROb2RlcyIgdHlwZT0idWE6TGlzdE9mRXhwYW5kZWROb2RlSWQi -IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg -PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQWxpYXNOYW1lRGF0YVR5cGUi -IHR5cGU9InRuczpBbGlhc05hbWVEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt -ZT0iTGlzdE9mQWxpYXNOYW1lRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9IkFsaWFzTmFtZURhdGFUeXBlIiB0eXBlPSJ0bnM6QWxpYXNOYW1lRGF0 -YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVl -IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt -ZW50IG5hbWU9Ikxpc3RPZkFsaWFzTmFtZURhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mQWxpYXNO -YW1lRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBs -ZVR5cGUgIG5hbWU9IkR1cGxleCI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmlu -ZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkZ1bGxfMCIgLz4NCiAgICAgIDx4czpl -bnVtZXJhdGlvbiB2YWx1ZT0iSGFsZl8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVl -PSJVbmtub3duXzIiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBl -Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEdXBsZXgiIHR5cGU9InRuczpEdXBsZXgiIC8+DQoNCiAg -PHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkR1cGxleCI+DQogICAgPHhzOnNlcXVlbmNlPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRHVwbGV4IiB0eXBlPSJ0bnM6RHVwbGV4IiBtaW5PY2N1 -cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv -eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkR1cGxleCIgdHlwZT0i -dG5zOkxpc3RPZkR1cGxleCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6 -c2ltcGxlVHlwZSAgbmFtZT0iSW50ZXJmYWNlQWRtaW5TdGF0dXMiPg0KICAgIDx4czpyZXN0cmlj -dGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJVcF8w -IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEb3duXzEiIC8+DQogICAgICA8eHM6 -ZW51bWVyYXRpb24gdmFsdWU9IlRlc3RpbmdfMiIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0K -ICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkludGVyZmFjZUFkbWluU3Rh -dHVzIiB0eXBlPSJ0bnM6SW50ZXJmYWNlQWRtaW5TdGF0dXMiIC8+DQoNCiAgPHhzOmNvbXBsZXhU -eXBlIG5hbWU9Ikxpc3RPZkludGVyZmFjZUFkbWluU3RhdHVzIj4NCiAgICA8eHM6c2VxdWVuY2U+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbnRlcmZhY2VBZG1pblN0YXR1cyIgdHlwZT0idG5z -OkludGVyZmFjZUFkbWluU3RhdHVzIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVk -IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt -ZW50IG5hbWU9Ikxpc3RPZkludGVyZmFjZUFkbWluU3RhdHVzIiB0eXBlPSJ0bnM6TGlzdE9mSW50 -ZXJmYWNlQWRtaW5TdGF0dXMiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhz -OnNpbXBsZVR5cGUgIG5hbWU9IkludGVyZmFjZU9wZXJTdGF0dXMiPg0KICAgIDx4czpyZXN0cmlj -dGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJVcF8w -IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEb3duXzEiIC8+DQogICAgICA8eHM6 -ZW51bWVyYXRpb24gdmFsdWU9IlRlc3RpbmdfMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2 -YWx1ZT0iVW5rbm93bl8zIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEb3JtYW50 -XzQiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik5vdFByZXNlbnRfNSIgLz4NCiAg -ICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTG93ZXJMYXllckRvd25fNiIgLz4NCiAgICA8L3hz -OnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Iklu -dGVyZmFjZU9wZXJTdGF0dXMiIHR5cGU9InRuczpJbnRlcmZhY2VPcGVyU3RhdHVzIiAvPg0KDQog -IDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZJbnRlcmZhY2VPcGVyU3RhdHVzIj4NCiAgICA8 -eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbnRlcmZhY2VPcGVyU3RhdHVz -IiB0eXBlPSJ0bnM6SW50ZXJmYWNlT3BlclN0YXR1cyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9 +bmFtZT0iTGlzdE9mQWxpYXNOYW1lRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZBbGlhc05hbWVE +YXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlw +ZSAgbmFtZT0iRHVwbGV4Ij4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4N +CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRnVsbF8wIiAvPg0KICAgICAgPHhzOmVudW1l +cmF0aW9uIHZhbHVlPSJIYWxmXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlVu +a25vd25fMiIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQog +IDx4czplbGVtZW50IG5hbWU9IkR1cGxleCIgdHlwZT0idG5zOkR1cGxleCIgLz4NCg0KICA8eHM6 +Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRHVwbGV4Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJEdXBsZXgiIHR5cGU9InRuczpEdXBsZXgiIG1pbk9jY3Vycz0i +MCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpj +b21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRHVwbGV4IiB0eXBlPSJ0bnM6 +TGlzdE9mRHVwbGV4IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpzaW1w +bGVUeXBlICBuYW1lPSJJbnRlcmZhY2VBZG1pblN0YXR1cyI+DQogICAgPHhzOnJlc3RyaWN0aW9u +IGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlVwXzAiIC8+ +DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRvd25fMSIgLz4NCiAgICAgIDx4czplbnVt +ZXJhdGlvbiB2YWx1ZT0iVGVzdGluZ18yIiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwv +eHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSW50ZXJmYWNlQWRtaW5TdGF0dXMi +IHR5cGU9InRuczpJbnRlcmZhY2VBZG1pblN0YXR1cyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg +bmFtZT0iTGlzdE9mSW50ZXJmYWNlQWRtaW5TdGF0dXMiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9IkludGVyZmFjZUFkbWluU3RhdHVzIiB0eXBlPSJ0bnM6SW50 +ZXJmYWNlQWRtaW5TdGF0dXMiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+ +DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg +bmFtZT0iTGlzdE9mSW50ZXJmYWNlQWRtaW5TdGF0dXMiIHR5cGU9InRuczpMaXN0T2ZJbnRlcmZh +Y2VBZG1pblN0YXR1cyIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2lt +cGxlVHlwZSAgbmFtZT0iSW50ZXJmYWNlT3BlclN0YXR1cyI+DQogICAgPHhzOnJlc3RyaWN0aW9u +IGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlVwXzAiIC8+ +DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRvd25fMSIgLz4NCiAgICAgIDx4czplbnVt +ZXJhdGlvbiB2YWx1ZT0iVGVzdGluZ18yIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVl +PSJVbmtub3duXzMiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRvcm1hbnRfNCIg +Lz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm90UHJlc2VudF81IiAvPg0KICAgICAg +PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJMb3dlckxheWVyRG93bl82IiAvPg0KICAgIDwveHM6cmVz +dHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSW50ZXJm +YWNlT3BlclN0YXR1cyIgdHlwZT0idG5zOkludGVyZmFjZU9wZXJTdGF0dXMiIC8+DQoNCiAgPHhz +OmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkludGVyZmFjZU9wZXJTdGF0dXMiPg0KICAgIDx4czpz +ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkludGVyZmFjZU9wZXJTdGF0dXMiIHR5 +cGU9InRuczpJbnRlcmZhY2VPcGVyU3RhdHVzIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5i +b3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 +czplbGVtZW50IG5hbWU9Ikxpc3RPZkludGVyZmFjZU9wZXJTdGF0dXMiIHR5cGU9InRuczpMaXN0 +T2ZJbnRlcmZhY2VPcGVyU3RhdHVzIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQog +IDx4czpzaW1wbGVUeXBlICBuYW1lPSJOZWdvdGlhdGlvblN0YXR1cyI+DQogICAgPHhzOnJlc3Ry +aWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Iklu +UHJvZ3Jlc3NfMCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ29tcGxldGVfMSIg +Lz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRmFpbGVkXzIiIC8+DQogICAgICA8eHM6 +ZW51bWVyYXRpb24gdmFsdWU9IlVua25vd25fMyIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2 +YWx1ZT0iTm9OZWdvdGlhdGlvbl80IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6 +c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTmVnb3RpYXRpb25TdGF0dXMiIHR5cGU9 +InRuczpOZWdvdGlhdGlvblN0YXR1cyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlz +dE9mTmVnb3RpYXRpb25TdGF0dXMiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9Ik5lZ290aWF0aW9uU3RhdHVzIiB0eXBlPSJ0bnM6TmVnb3RpYXRpb25TdGF0dXMi +IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5j +ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mTmVnb3Rp +YXRpb25TdGF0dXMiIHR5cGU9InRuczpMaXN0T2ZOZWdvdGlhdGlvblN0YXR1cyIgbmlsbGFibGU9 +InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iVHNuRmFpbHVy +ZUNvZGUiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhz +OmVudW1lcmF0aW9uIHZhbHVlPSJOb0ZhaWx1cmVfMCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlv +biB2YWx1ZT0iSW5zdWZmaWNpZW50QmFuZHdpZHRoXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRp +b24gdmFsdWU9Ikluc3VmZmljaWVudFJlc291cmNlc18yIiAvPg0KICAgICAgPHhzOmVudW1lcmF0 +aW9uIHZhbHVlPSJJbnN1ZmZpY2llbnRUcmFmZmljQ2xhc3NCYW5kd2lkdGhfMyIgLz4NCiAgICAg +IDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU3RyZWFtSWRJblVzZV80IiAvPg0KICAgICAgPHhzOmVu +dW1lcmF0aW9uIHZhbHVlPSJTdHJlYW1EZXN0aW5hdGlvbkFkZHJlc3NJblVzZV81IiAvPg0KICAg +ICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTdHJlYW1QcmVlbXB0ZWRCeUhpZ2hlclJhbmtfNiIg +Lz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTGF0ZW5jeUhhc0NoYW5nZWRfNyIgLz4N +CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRWdyZXNzUG9ydE5vdEF2YkNhcGFibGVfOCIg +Lz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVXNlRGlmZmVyZW50RGVzdGluYXRpb25B +ZGRyZXNzXzkiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik91dE9mTXNycFJlc291 +cmNlc18xMCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iT3V0T2ZNbXJwUmVzb3Vy +Y2VzXzExIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDYW5ub3RTdG9yZURlc3Rp +bmF0aW9uQWRkcmVzc18xMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUHJpb3Jp +dHlJc05vdEFuU3JjQ2xhc3NfMTMiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik1h +eEZyYW1lU2l6ZVRvb0xhcmdlXzE0IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJN +YXhGYW5JblBvcnRzTGltaXRSZWFjaGVkXzE1IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZh +bHVlPSJGaXJzdFZhbHVlQ2hhbmdlZEZvclN0cmVhbUlkXzE2IiAvPg0KICAgICAgPHhzOmVudW1l +cmF0aW9uIHZhbHVlPSJWbGFuQmxvY2tlZE9uRWdyZXNzXzE3IiAvPg0KICAgICAgPHhzOmVudW1l +cmF0aW9uIHZhbHVlPSJWbGFuVGFnZ2luZ0Rpc2FibGVkT25FZ3Jlc3NfMTgiIC8+DQogICAgICA8 +eHM6ZW51bWVyYXRpb24gdmFsdWU9IlNyQ2xhc3NQcmlvcml0eU1pc21hdGNoXzE5IiAvPg0KICAg +ICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJGZWF0dXJlTm90UHJvcGFnYXRlZF8yMCIgLz4NCiAg +ICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTWF4TGF0ZW5jeUV4Y2VlZGVkXzIxIiAvPg0KICAg +ICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJCcmlkZ2VEb2VzTm90UHJvdmlkZU5ldHdvcmtJZF8y +MiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU3RyZWFtVHJhbnNmb3JtTm90U3Vw +cG9ydGVkXzIzIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTdHJlYW1JZFR5cGVO +b3RTdXBwb3J0ZWRfMjQiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkZlYXR1cmVO +b3RTdXBwb3J0ZWRfMjUiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVU +eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJUc25GYWlsdXJlQ29kZSIgdHlwZT0idG5zOlRzbkZh +aWx1cmVDb2RlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZUc25GYWlsdXJl +Q29kZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHNuRmFp +bHVyZUNvZGUiIHR5cGU9InRuczpUc25GYWlsdXJlQ29kZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1 +cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl +Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZUc25GYWlsdXJlQ29kZSIgdHlwZT0idG5zOkxp +c3RPZlRzbkZhaWx1cmVDb2RlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4 +czpzaW1wbGVUeXBlICBuYW1lPSJUc25TdHJlYW1TdGF0ZSI+DQogICAgPHhzOnJlc3RyaWN0aW9u +IGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRpc2FibGVk +XzAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkNvbmZpZ3VyaW5nXzEiIC8+DQog +ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlJlYWR5XzIiIC8+DQogICAgICA8eHM6ZW51bWVy +YXRpb24gdmFsdWU9Ik9wZXJhdGlvbmFsXzMiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFs +dWU9IkVycm9yXzQiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBl +Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJUc25TdHJlYW1TdGF0ZSIgdHlwZT0idG5zOlRzblN0cmVh +bVN0YXRlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZUc25TdHJlYW1TdGF0 +ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHNuU3RyZWFt +U3RhdGUiIHR5cGU9InRuczpUc25TdHJlYW1TdGF0ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9 InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K -ICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZJbnRlcmZhY2VPcGVyU3RhdHVzIiB0eXBlPSJ0bnM6 -TGlzdE9mSW50ZXJmYWNlT3BlclN0YXR1cyIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4N -Cg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iTmVnb3RpYXRpb25TdGF0dXMiPg0KICAgIDx4czpy -ZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVl -PSJJblByb2dyZXNzXzAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkNvbXBsZXRl -XzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkZhaWxlZF8yIiAvPg0KICAgICAg -PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJVbmtub3duXzMiIC8+DQogICAgICA8eHM6ZW51bWVyYXRp -b24gdmFsdWU9Ik5vTmVnb3RpYXRpb25fNCIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8 -L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik5lZ290aWF0aW9uU3RhdHVzIiB0 -eXBlPSJ0bnM6TmVnb3RpYXRpb25TdGF0dXMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9 -Ikxpc3RPZk5lZ290aWF0aW9uU3RhdHVzIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJOZWdvdGlhdGlvblN0YXR1cyIgdHlwZT0idG5zOk5lZ290aWF0aW9uU3Rh -dHVzIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2Vx -dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk5l -Z290aWF0aW9uU3RhdHVzIiB0eXBlPSJ0bnM6TGlzdE9mTmVnb3RpYXRpb25TdGF0dXMiIG5pbGxh -YmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IlRzbkZh -aWx1cmVDb2RlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAgICAg -IDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm9GYWlsdXJlXzAiIC8+DQogICAgICA8eHM6ZW51bWVy -YXRpb24gdmFsdWU9Ikluc3VmZmljaWVudEJhbmR3aWR0aF8xIiAvPg0KICAgICAgPHhzOmVudW1l -cmF0aW9uIHZhbHVlPSJJbnN1ZmZpY2llbnRSZXNvdXJjZXNfMiIgLz4NCiAgICAgIDx4czplbnVt -ZXJhdGlvbiB2YWx1ZT0iSW5zdWZmaWNpZW50VHJhZmZpY0NsYXNzQmFuZHdpZHRoXzMiIC8+DQog -ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlN0cmVhbUlkSW5Vc2VfNCIgLz4NCiAgICAgIDx4 -czplbnVtZXJhdGlvbiB2YWx1ZT0iU3RyZWFtRGVzdGluYXRpb25BZGRyZXNzSW5Vc2VfNSIgLz4N -CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU3RyZWFtUHJlZW1wdGVkQnlIaWdoZXJSYW5r -XzYiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkxhdGVuY3lIYXNDaGFuZ2VkXzci -IC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkVncmVzc1BvcnROb3RBdmJDYXBhYmxl -XzgiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlVzZURpZmZlcmVudERlc3RpbmF0 -aW9uQWRkcmVzc185IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJPdXRPZk1zcnBS -ZXNvdXJjZXNfMTAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik91dE9mTW1ycFJl -c291cmNlc18xMSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ2Fubm90U3RvcmVE -ZXN0aW5hdGlvbkFkZHJlc3NfMTIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBy -aW9yaXR5SXNOb3RBblNyY0NsYXNzXzEzIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVl -PSJNYXhGcmFtZVNpemVUb29MYXJnZV8xNCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1 -ZT0iTWF4RmFuSW5Qb3J0c0xpbWl0UmVhY2hlZF8xNSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlv -biB2YWx1ZT0iRmlyc3RWYWx1ZUNoYW5nZWRGb3JTdHJlYW1JZF8xNiIgLz4NCiAgICAgIDx4czpl -bnVtZXJhdGlvbiB2YWx1ZT0iVmxhbkJsb2NrZWRPbkVncmVzc18xNyIgLz4NCiAgICAgIDx4czpl -bnVtZXJhdGlvbiB2YWx1ZT0iVmxhblRhZ2dpbmdEaXNhYmxlZE9uRWdyZXNzXzE4IiAvPg0KICAg -ICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTckNsYXNzUHJpb3JpdHlNaXNtYXRjaF8xOSIgLz4N -CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRmVhdHVyZU5vdFByb3BhZ2F0ZWRfMjAiIC8+ -DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik1heExhdGVuY3lFeGNlZWRlZF8yMSIgLz4N -CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQnJpZGdlRG9lc05vdFByb3ZpZGVOZXR3b3Jr -SWRfMjIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlN0cmVhbVRyYW5zZm9ybU5v -dFN1cHBvcnRlZF8yMyIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU3RyZWFtSWRU -eXBlTm90U3VwcG9ydGVkXzI0IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJGZWF0 -dXJlTm90U3VwcG9ydGVkXzI1IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2lt -cGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVHNuRmFpbHVyZUNvZGUiIHR5cGU9InRuczpU -c25GYWlsdXJlQ29kZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mVHNuRmFp -bHVyZUNvZGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRz -bkZhaWx1cmVDb2RlIiB0eXBlPSJ0bnM6VHNuRmFpbHVyZUNvZGUiIG1pbk9jY3Vycz0iMCIgbWF4 -T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 -VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVHNuRmFpbHVyZUNvZGUiIHR5cGU9InRu -czpMaXN0T2ZUc25GYWlsdXJlQ29kZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0K -ICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iVHNuU3RyZWFtU3RhdGUiPg0KICAgIDx4czpyZXN0cmlj -dGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEaXNh -YmxlZF8wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDb25maWd1cmluZ18xIiAv -Pg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJSZWFkeV8yIiAvPg0KICAgICAgPHhzOmVu -dW1lcmF0aW9uIHZhbHVlPSJPcGVyYXRpb25hbF8zIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9u -IHZhbHVlPSJFcnJvcl80IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxl -VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVHNuU3RyZWFtU3RhdGUiIHR5cGU9InRuczpUc25T -dHJlYW1TdGF0ZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mVHNuU3RyZWFt -U3RhdGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRzblN0 -cmVhbVN0YXRlIiB0eXBlPSJ0bnM6VHNuU3RyZWFtU3RhdGUiIG1pbk9jY3Vycz0iMCIgbWF4T2Nj -dXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw -ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVHNuU3RyZWFtU3RhdGUiIHR5cGU9InRuczpM -aXN0T2ZUc25TdHJlYW1TdGF0ZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8 -eHM6c2ltcGxlVHlwZSAgbmFtZT0iVHNuVGFsa2VyU3RhdHVzIj4NCiAgICA8eHM6cmVzdHJpY3Rp -b24gYmFzZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm9uZV8w -IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJSZWFkeV8xIiAvPg0KICAgICAgPHhz -OmVudW1lcmF0aW9uIHZhbHVlPSJGYWlsZWRfMiIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0K -ICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlRzblRhbGtlclN0YXR1cyIg -dHlwZT0idG5zOlRzblRhbGtlclN0YXR1cyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i -TGlzdE9mVHNuVGFsa2VyU3RhdHVzIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJUc25UYWxrZXJTdGF0dXMiIHR5cGU9InRuczpUc25UYWxrZXJTdGF0dXMiIG1p -bk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4N -CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVHNuVGFsa2Vy -U3RhdHVzIiB0eXBlPSJ0bnM6TGlzdE9mVHNuVGFsa2VyU3RhdHVzIiBuaWxsYWJsZT0idHJ1ZSI+ -PC94czplbGVtZW50Pg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJUc25MaXN0ZW5lclN0YXR1 -cyI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51 -bWVyYXRpb24gdmFsdWU9Ik5vbmVfMCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0i -UmVhZHlfMSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUGFydGlhbEZhaWxlZF8y -IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJGYWlsZWRfMyIgLz4NCiAgICA8L3hz -OnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlRz -bkxpc3RlbmVyU3RhdHVzIiB0eXBlPSJ0bnM6VHNuTGlzdGVuZXJTdGF0dXMiIC8+DQoNCiAgPHhz -OmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlRzbkxpc3RlbmVyU3RhdHVzIj4NCiAgICA8eHM6c2Vx -dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUc25MaXN0ZW5lclN0YXR1cyIgdHlwZT0i -dG5zOlRzbkxpc3RlbmVyU3RhdHVzIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVk -IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt -ZW50IG5hbWU9Ikxpc3RPZlRzbkxpc3RlbmVyU3RhdHVzIiB0eXBlPSJ0bnM6TGlzdE9mVHNuTGlz -dGVuZXJTdGF0dXMiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBs -ZXhUeXBlIG5hbWU9IlVuc2lnbmVkUmF0aW9uYWxOdW1iZXIiPg0KICAgIDx4czpzZXF1ZW5jZT4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik51bWVyYXRvciIgdHlwZT0ieHM6dW5zaWduZWRJbnQi -IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRlbm9taW5hdG9yIiB0 -eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+ -DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlVuc2lnbmVkUmF0aW9u -YWxOdW1iZXIiIHR5cGU9InRuczpVbnNpZ25lZFJhdGlvbmFsTnVtYmVyIiAvPg0KDQogIDx4czpj -b21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZVbnNpZ25lZFJhdGlvbmFsTnVtYmVyIj4NCiAgICA8eHM6 -c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVbnNpZ25lZFJhdGlvbmFsTnVtYmVy -IiB0eXBlPSJ0bnM6VW5zaWduZWRSYXRpb25hbE51bWJlciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1 -cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg -PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVW5zaWduZWRSYXRp -b25hbE51bWJlciIgdHlwZT0idG5zOkxpc3RPZlVuc2lnbmVkUmF0aW9uYWxOdW1iZXIiIG5pbGxh -YmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IklkVHlw -ZSI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51 -bWVyYXRpb24gdmFsdWU9Ik51bWVyaWNfMCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1 -ZT0iU3RyaW5nXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ikd1aWRfMiIgLz4N -CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iT3BhcXVlXzMiIC8+DQogICAgPC94czpyZXN0 -cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJJZFR5cGUi -IHR5cGU9InRuczpJZFR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZklk -VHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSWRUeXBl -IiB0eXBlPSJ0bnM6SWRUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAv -Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50 -IG5hbWU9Ikxpc3RPZklkVHlwZSIgdHlwZT0idG5zOkxpc3RPZklkVHlwZSIgbmlsbGFibGU9InRy -dWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iTm9kZUNsYXNzIj4N +ICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZUc25TdHJlYW1TdGF0ZSIgdHlwZT0idG5zOkxpc3RP +ZlRzblN0cmVhbVN0YXRlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpz +aW1wbGVUeXBlICBuYW1lPSJUc25UYWxrZXJTdGF0dXMiPg0KICAgIDx4czpyZXN0cmljdGlvbiBi +YXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJOb25lXzAiIC8+ +DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlJlYWR5XzEiIC8+DQogICAgICA8eHM6ZW51 +bWVyYXRpb24gdmFsdWU9IkZhaWxlZF8yIiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwv +eHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVHNuVGFsa2VyU3RhdHVzIiB0eXBl +PSJ0bnM6VHNuVGFsa2VyU3RhdHVzIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0 +T2ZUc25UYWxrZXJTdGF0dXMiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9IlRzblRhbGtlclN0YXR1cyIgdHlwZT0idG5zOlRzblRhbGtlclN0YXR1cyIgbWluT2Nj +dXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8 +L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZUc25UYWxrZXJTdGF0 +dXMiIHR5cGU9InRuczpMaXN0T2ZUc25UYWxrZXJTdGF0dXMiIG5pbGxhYmxlPSJ0cnVlIj48L3hz +OmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IlRzbkxpc3RlbmVyU3RhdHVzIj4N CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJh -dGlvbiB2YWx1ZT0iVW5zcGVjaWZpZWRfMCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1 -ZT0iT2JqZWN0XzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlZhcmlhYmxlXzIi -IC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik1ldGhvZF80IiAvPg0KICAgICAgPHhz -OmVudW1lcmF0aW9uIHZhbHVlPSJPYmplY3RUeXBlXzgiIC8+DQogICAgICA8eHM6ZW51bWVyYXRp -b24gdmFsdWU9IlZhcmlhYmxlVHlwZV8xNiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1 -ZT0iUmVmZXJlbmNlVHlwZV8zMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRGF0 -YVR5cGVfNjQiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlZpZXdfMTI4IiAvPg0K -ICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQg -bmFtZT0iTm9kZUNsYXNzIiB0eXBlPSJ0bnM6Tm9kZUNsYXNzIiAvPg0KDQogIDx4czpzaW1wbGVU -eXBlICBuYW1lPSJQZXJtaXNzaW9uVHlwZSI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9Inhz -OnVuc2lnbmVkSW50Ij4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+ -DQogIDx4czplbGVtZW50IG5hbWU9IlBlcm1pc3Npb25UeXBlIiB0eXBlPSJ0bnM6UGVybWlzc2lv -blR5cGUiIC8+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IkFjY2Vzc0xldmVsVHlwZSI+DQog -ICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnVuc2lnbmVkQnl0ZSI+DQogICAgPC94czpyZXN0 -cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBY2Nlc3NM -ZXZlbFR5cGUiIHR5cGU9InRuczpBY2Nlc3NMZXZlbFR5cGUiIC8+DQoNCiAgPHhzOnNpbXBsZVR5 -cGUgIG5hbWU9IkFjY2Vzc0xldmVsRXhUeXBlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0i -eHM6dW5zaWduZWRJbnQiPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlw -ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQWNjZXNzTGV2ZWxFeFR5cGUiIHR5cGU9InRuczpBY2Nl -c3NMZXZlbEV4VHlwZSIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iRXZlbnROb3RpZmll -clR5cGUiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp1bnNpZ25lZEJ5dGUiPg0KICAg -IDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt -ZT0iRXZlbnROb3RpZmllclR5cGUiIHR5cGU9InRuczpFdmVudE5vdGlmaWVyVHlwZSIgLz4NCg0K -ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUm9sZVBlcm1pc3Npb25UeXBlIj4NCiAgICA8eHM6c2Vx -dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSb2xlSWQiIHR5cGU9InVhOk5vZGVJZCIg -bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IlBlcm1pc3Npb25zIiB0eXBlPSJ0bnM6UGVybWlzc2lvblR5cGUiIG1pbk9jY3Vycz0iMCIgLz4N -CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu -YW1lPSJSb2xlUGVybWlzc2lvblR5cGUiIHR5cGU9InRuczpSb2xlUGVybWlzc2lvblR5cGUiIC8+ -DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlJvbGVQZXJtaXNzaW9uVHlwZSI+DQog -ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUm9sZVBlcm1pc3Npb25U -eXBlIiB0eXBlPSJ0bnM6Um9sZVBlcm1pc3Npb25UeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vy -cz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8 -L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZSb2xlUGVybWlzc2lv -blR5cGUiIHR5cGU9InRuczpMaXN0T2ZSb2xlUGVybWlzc2lvblR5cGUiIG5pbGxhYmxlPSJ0cnVl -Ij48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRhdGFUeXBlRGVmaW5p -dGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29t -cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRhdGFUeXBlRGVmaW5pdGlvbiIgdHlwZT0i -dG5zOkRhdGFUeXBlRGVmaW5pdGlvbiIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlz -dE9mRGF0YVR5cGVEZWZpbml0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJEYXRhVHlwZURlZmluaXRpb24iIHR5cGU9InRuczpEYXRhVHlwZURlZmluaXRp -b24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAv -Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50 -IG5hbWU9Ikxpc3RPZkRhdGFUeXBlRGVmaW5pdGlvbiIgdHlwZT0idG5zOkxpc3RPZkRhdGFUeXBl -RGVmaW5pdGlvbiIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxl -VHlwZSAgbmFtZT0iU3RydWN0dXJlVHlwZSI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9Inhz -OnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlN0cnVjdHVyZV8wIiAvPg0K -ICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTdHJ1Y3R1cmVXaXRoT3B0aW9uYWxGaWVsZHNf -MSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVW5pb25fMiIgLz4NCiAgICAgIDx4 -czplbnVtZXJhdGlvbiB2YWx1ZT0iU3RydWN0dXJlV2l0aFN1YnR5cGVkVmFsdWVzXzMiIC8+DQog -ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlVuaW9uV2l0aFN1YnR5cGVkVmFsdWVzXzQiIC8+ -DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVu -dCBuYW1lPSJTdHJ1Y3R1cmVUeXBlIiB0eXBlPSJ0bnM6U3RydWN0dXJlVHlwZSIgLz4NCg0KICA8 -eHM6Y29tcGxleFR5cGUgbmFtZT0iU3RydWN0dXJlRmllbGQiPg0KICAgIDx4czpzZXF1ZW5jZT4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJz -PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRlc2NyaXB0 -aW9uIiB0eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl -IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGUiIHR5cGU9InVhOk5vZGVJZCIg -bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IlZhbHVlUmFuayIgdHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJBcnJheURpbWVuc2lvbnMiIHR5cGU9InVhOkxpc3RPZlVJbnQzMiIgbWluT2Nj -dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1heFN0 -cmluZ0xlbmd0aCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IklzT3B0aW9uYWwiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vy -cz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6 -ZWxlbWVudCBuYW1lPSJTdHJ1Y3R1cmVGaWVsZCIgdHlwZT0idG5zOlN0cnVjdHVyZUZpZWxkIiAv -Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZTdHJ1Y3R1cmVGaWVsZCI+DQogICAg -PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RydWN0dXJlRmllbGQiIHR5 -cGU9InRuczpTdHJ1Y3R1cmVGaWVsZCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRl -ZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 -VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mU3RydWN0dXJlRmllbGQiIHR5cGU9InRu -czpMaXN0T2ZTdHJ1Y3R1cmVGaWVsZCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0K -ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU3RydWN0dXJlRGVmaW5pdGlvbiI+DQogICAgPHhzOmNv -bXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRu -czpEYXRhVHlwZURlZmluaXRpb24iPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iRGVmYXVsdEVuY29kaW5nSWQiIHR5cGU9InVhOk5vZGVJZCIgbWlu -T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJCYXNlRGF0YVR5cGUiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i -dHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdHJ1Y3R1cmVUeXBlIiB0eXBl -PSJ0bnM6U3RydWN0dXJlVHlwZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVt -ZW50IG5hbWU9IkZpZWxkcyIgdHlwZT0idG5zOkxpc3RPZlN0cnVjdHVyZUZpZWxkIiBtaW5PY2N1 -cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAg -PC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4 -VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iU3RydWN0dXJlRGVmaW5pdGlvbiIgdHlwZT0idG5z -OlN0cnVjdHVyZURlZmluaXRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RP -ZlN0cnVjdHVyZURlZmluaXRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IlN0cnVjdHVyZURlZmluaXRpb24iIHR5cGU9InRuczpTdHJ1Y3R1cmVEZWZpbml0 -aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu -dCBuYW1lPSJMaXN0T2ZTdHJ1Y3R1cmVEZWZpbml0aW9uIiB0eXBlPSJ0bnM6TGlzdE9mU3RydWN0 -dXJlRGVmaW5pdGlvbiIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29t -cGxleFR5cGUgbmFtZT0iRW51bURlZmluaXRpb24iPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBt -aXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6RGF0YVR5cGVEZWZp -bml0aW9uIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5h -bWU9IkZpZWxkcyIgdHlwZT0idG5zOkxpc3RPZkVudW1GaWVsZCIgbWluT2NjdXJzPSIwIiBuaWxs -YWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5z -aW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 -czplbGVtZW50IG5hbWU9IkVudW1EZWZpbml0aW9uIiB0eXBlPSJ0bnM6RW51bURlZmluaXRpb24i -IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkVudW1EZWZpbml0aW9uIj4NCiAg -ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbnVtRGVmaW5pdGlvbiIg -dHlwZT0idG5zOkVudW1EZWZpbml0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3Vu -ZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs -ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZFbnVtRGVmaW5pdGlvbiIgdHlwZT0i -dG5zOkxpc3RPZkVudW1EZWZpbml0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0K -DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJOb2RlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJOb2RlSWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIw -IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVDbGFzcyIg -dHlwZT0idG5zOk5vZGVDbGFzcyIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iQnJvd3NlTmFtZSIgdHlwZT0idWE6UXVhbGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpc3BsYXlOYW1lIiB0 -eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVzY3JpcHRpb24iIHR5cGU9InVhOkxvY2FsaXplZFRl -eHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJXcml0ZU1hc2siIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQog -ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVc2VyV3JpdGVNYXNrIiB0eXBlPSJ4czp1bnNpZ25lZElu -dCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUm9sZVBlcm1pc3Np -b25zIiB0eXBlPSJ0bnM6TGlzdE9mUm9sZVBlcm1pc3Npb25UeXBlIiBtaW5PY2N1cnM9IjAiIG5p -bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlclJvbGVQZXJtaXNz -aW9ucyIgdHlwZT0idG5zOkxpc3RPZlJvbGVQZXJtaXNzaW9uVHlwZSIgbWluT2NjdXJzPSIwIiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkFjY2Vzc1Jlc3RyaWN0 -aW9ucyIgdHlwZT0ieHM6dW5zaWduZWRTaG9ydCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhz -OmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlcyIgdHlwZT0idG5zOkxpc3RPZlJlZmVyZW5jZU5vZGUi -IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg -PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZSIgdHlwZT0idG5zOk5v -ZGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZk5vZGUiPg0KICAgIDx4czpz -ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGUiIHR5cGU9InRuczpOb2RlIiBt -aW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg -ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l -PSJMaXN0T2ZOb2RlIiB0eXBlPSJ0bnM6TGlzdE9mTm9kZSIgbmlsbGFibGU9InRydWUiPjwveHM6 -ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iSW5zdGFuY2VOb2RlIj4NCiAgICA8 -eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFz -ZT0idG5zOk5vZGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgIDwveHM6c2VxdWVu -Y2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8 -L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJJbnN0YW5jZU5vZGUiIHR5cGU9 -InRuczpJbnN0YW5jZU5vZGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlR5cGVOb2Rl -Ij4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRl -bnNpb24gYmFzZT0idG5zOk5vZGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgIDwv -eHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250 -ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJUeXBlTm9kZSIg -dHlwZT0idG5zOlR5cGVOb2RlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJPYmplY3RO -b2RlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpl -eHRlbnNpb24gYmFzZT0idG5zOkluc3RhbmNlTm9kZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4N -CiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFdmVudE5vdGlmaWVyIiB0eXBlPSJ4czp1bnNp -Z25lZEJ5dGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAg -IDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik9iamVjdE5vZGUiIHR5cGU9InRuczpPYmplY3RO -b2RlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJPYmplY3RUeXBlTm9kZSI+DQogICAg -PHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJh -c2U9InRuczpUeXBlTm9kZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJJc0Fic3RyYWN0IiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAi -IC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8 -L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu -YW1lPSJPYmplY3RUeXBlTm9kZSIgdHlwZT0idG5zOk9iamVjdFR5cGVOb2RlIiAvPg0KDQogIDx4 -czpjb21wbGV4VHlwZSBuYW1lPSJWYXJpYWJsZU5vZGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVu -dCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6SW5zdGFuY2VO -b2RlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9 -IlZhbHVlIiB0eXBlPSJ1YTpWYXJpYW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhz -OmVsZW1lbnQgbmFtZT0iRGF0YVR5cGUiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1ZVJhbmsi -IHR5cGU9InhzOmludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5h -bWU9IkFycmF5RGltZW5zaW9ucyIgdHlwZT0idWE6TGlzdE9mVUludDMyIiBtaW5PY2N1cnM9IjAi -IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkFjY2Vzc0xl -dmVsIiB0eXBlPSJ4czp1bnNpZ25lZEJ5dGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJVc2VyQWNjZXNzTGV2ZWwiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIg -bWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1pbmltdW1TYW1w -bGluZ0ludGVydmFsIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJIaXN0b3JpemluZyIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2Nj -dXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkFjY2Vzc0xldmVsRXgiIHR5 -cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVu -Y2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8 -L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJWYXJpYWJsZU5vZGUiIHR5cGU9 -InRuczpWYXJpYWJsZU5vZGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlZhcmlhYmxl -VHlwZU5vZGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAg -PHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6VHlwZU5vZGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+ -DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFsdWUiIHR5cGU9InVhOlZhcmlhbnQiIG1p -bk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhVHlwZSIgdHlw -ZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAg -IDx4czplbGVtZW50IG5hbWU9IlZhbHVlUmFuayIgdHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAi -IC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXJyYXlEaW1lbnNpb25zIiB0eXBlPSJ1 -YTpMaXN0T2ZVSW50MzIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iSXNBYnN0cmFjdCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2Nj -dXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+ -DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs -ZW1lbnQgbmFtZT0iVmFyaWFibGVUeXBlTm9kZSIgdHlwZT0idG5zOlZhcmlhYmxlVHlwZU5vZGUi -IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlZmVyZW5jZVR5cGVOb2RlIj4NCiAgICA8 -eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFz -ZT0idG5zOlR5cGVOb2RlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czpl -bGVtZW50IG5hbWU9IklzQWJzdHJhY3QiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIg -Lz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTeW1tZXRyaWMiIHR5cGU9InhzOmJvb2xl -YW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbnZlcnNl -TmFtZSIgdHlwZT0idWE6TG9jYWxpemVkVGV4dCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 -ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAg -IDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50 -IG5hbWU9IlJlZmVyZW5jZVR5cGVOb2RlIiB0eXBlPSJ0bnM6UmVmZXJlbmNlVHlwZU5vZGUiIC8+ -DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1ldGhvZE5vZGUiPg0KICAgIDx4czpjb21wbGV4 -Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6SW5z -dGFuY2VOb2RlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50 -IG5hbWU9IkV4ZWN1dGFibGUiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAg -ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVc2VyRXhlY3V0YWJsZSIgdHlwZT0ieHM6Ym9vbGVh -biIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpl -eHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4N -CiAgPHhzOmVsZW1lbnQgbmFtZT0iTWV0aG9kTm9kZSIgdHlwZT0idG5zOk1ldGhvZE5vZGUiIC8+ -DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlZpZXdOb2RlIj4NCiAgICA8eHM6Y29tcGxleENv -bnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkluc3Rh -bmNlTm9kZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJDb250YWluc05vTG9vcHMiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4N -CiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFdmVudE5vdGlmaWVyIiB0eXBlPSJ4czp1bnNp -Z25lZEJ5dGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAg -IDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlZpZXdOb2RlIiB0eXBlPSJ0bnM6Vmlld05vZGUi -IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRhdGFUeXBlTm9kZSI+DQogICAgPHhzOmNv -bXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRu -czpUeXBlTm9kZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJJc0Fic3RyYWN0IiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQog -ICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGVEZWZpbml0aW9uIiB0eXBlPSJ1YTpF -eHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAg -IDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhD -b250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhVHlw -ZU5vZGUiIHR5cGU9InRuczpEYXRhVHlwZU5vZGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h -bWU9IlJlZmVyZW5jZU5vZGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50 -IG5hbWU9IlJlZmVyZW5jZVR5cGVJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5p -bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXNJbnZlcnNlIiB0eXBl -PSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJU -YXJnZXRJZCIgdHlwZT0idWE6RXhwYW5kZWROb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 -InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz -OmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlTm9kZSIgdHlwZT0idG5zOlJlZmVyZW5jZU5vZGUiIC8+ -DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlJlZmVyZW5jZU5vZGUiPg0KICAgIDx4 -czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlZmVyZW5jZU5vZGUiIHR5cGU9 -InRuczpSZWZlcmVuY2VOb2RlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl -Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZSZWZlcmVuY2VOb2RlIiB0eXBlPSJ0bnM6TGlz -dE9mUmVmZXJlbmNlTm9kZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6 -Y29tcGxleFR5cGUgbmFtZT0iQXJndW1lbnQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9Ik5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxs -YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFUeXBlIiB0eXBlPSJ1 -YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJWYWx1ZVJhbmsiIHR5cGU9InhzOmludCIgbWluT2NjdXJzPSIwIiAvPg0KICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iQXJyYXlEaW1lbnNpb25zIiB0eXBlPSJ1YTpMaXN0T2ZVSW50 -MzIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJEZXNjcmlwdGlvbiIgdHlwZT0idWE6TG9jYWxpemVkVGV4dCIgbWluT2NjdXJzPSIwIiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl -Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBcmd1bWVudCIgdHlwZT0idG5zOkFyZ3VtZW50IiAvPg0K -DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZBcmd1bWVudCI+DQogICAgPHhzOnNlcXVl -bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXJndW1lbnQiIHR5cGU9InRuczpBcmd1bWVu -dCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+ +dGlvbiB2YWx1ZT0iTm9uZV8wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJSZWFk +eV8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJQYXJ0aWFsRmFpbGVkXzIiIC8+ +DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkZhaWxlZF8zIiAvPg0KICAgIDwveHM6cmVz +dHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVHNuTGlz +dGVuZXJTdGF0dXMiIHR5cGU9InRuczpUc25MaXN0ZW5lclN0YXR1cyIgLz4NCg0KICA8eHM6Y29t +cGxleFR5cGUgbmFtZT0iTGlzdE9mVHNuTGlzdGVuZXJTdGF0dXMiPg0KICAgIDx4czpzZXF1ZW5j +ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRzbkxpc3RlbmVyU3RhdHVzIiB0eXBlPSJ0bnM6 +VHNuTGlzdGVuZXJTdGF0dXMiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+ DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg -bmFtZT0iTGlzdE9mQXJndW1lbnQiIHR5cGU9InRuczpMaXN0T2ZBcmd1bWVudCIgbmlsbGFibGU9 -InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRW51bVZhbHVl -VHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFsdWUi -IHR5cGU9InhzOmxvbmciIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IkRpc3BsYXlOYW1lIiB0eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIG5pbGxh -YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVzY3JpcHRpb24iIHR5cGU9 +bmFtZT0iTGlzdE9mVHNuTGlzdGVuZXJTdGF0dXMiIHR5cGU9InRuczpMaXN0T2ZUc25MaXN0ZW5l +clN0YXR1cyIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5 +cGUgbmFtZT0iVW5zaWduZWRSYXRpb25hbE51bWJlciI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iTnVtZXJhdG9yIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWlu +T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVub21pbmF0b3IiIHR5cGU9 +InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg +PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVW5zaWduZWRSYXRpb25hbE51 +bWJlciIgdHlwZT0idG5zOlVuc2lnbmVkUmF0aW9uYWxOdW1iZXIiIC8+DQoNCiAgPHhzOmNvbXBs +ZXhUeXBlIG5hbWU9Ikxpc3RPZlVuc2lnbmVkUmF0aW9uYWxOdW1iZXIiPg0KICAgIDx4czpzZXF1 +ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVuc2lnbmVkUmF0aW9uYWxOdW1iZXIiIHR5 +cGU9InRuczpVbnNpZ25lZFJhdGlvbmFsTnVtYmVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i +dW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz +OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZVbnNpZ25lZFJhdGlvbmFs +TnVtYmVyIiB0eXBlPSJ0bnM6TGlzdE9mVW5zaWduZWRSYXRpb25hbE51bWJlciIgbmlsbGFibGU9 +InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iSWRUeXBlIj4N +CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJh +dGlvbiB2YWx1ZT0iTnVtZXJpY18wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJT +dHJpbmdfMSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iR3VpZF8yIiAvPg0KICAg +ICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJPcGFxdWVfMyIgLz4NCiAgICA8L3hzOnJlc3RyaWN0 +aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IklkVHlwZSIgdHlw +ZT0idG5zOklkVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mSWRUeXBl +Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJZFR5cGUiIHR5 +cGU9InRuczpJZFR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQog +ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt +ZT0iTGlzdE9mSWRUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mSWRUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+ +PC94czplbGVtZW50Pg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJOb2RlQ2xhc3MiPg0KICAg +IDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9u +IHZhbHVlPSJVbnNwZWNpZmllZF8wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJP +YmplY3RfMSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVmFyaWFibGVfMiIgLz4N +CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTWV0aG9kXzQiIC8+DQogICAgICA8eHM6ZW51 +bWVyYXRpb24gdmFsdWU9Ik9iamVjdFR5cGVfOCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2 +YWx1ZT0iVmFyaWFibGVUeXBlXzE2IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJS +ZWZlcmVuY2VUeXBlXzMyIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEYXRhVHlw +ZV82NCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVmlld18xMjgiIC8+DQogICAg +PC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l +PSJOb2RlQ2xhc3MiIHR5cGU9InRuczpOb2RlQ2xhc3MiIC8+DQoNCiAgPHhzOnNpbXBsZVR5cGUg +IG5hbWU9IlBlcm1pc3Npb25UeXBlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dW5z +aWduZWRJbnQiPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAg +PHhzOmVsZW1lbnQgbmFtZT0iUGVybWlzc2lvblR5cGUiIHR5cGU9InRuczpQZXJtaXNzaW9uVHlw +ZSIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iQWNjZXNzTGV2ZWxUeXBlIj4NCiAgICA8 +eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dW5zaWduZWRCeXRlIj4NCiAgICA8L3hzOnJlc3RyaWN0 +aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkFjY2Vzc0xldmVs +VHlwZSIgdHlwZT0idG5zOkFjY2Vzc0xldmVsVHlwZSIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAg +bmFtZT0iQWNjZXNzTGV2ZWxFeFR5cGUiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp1 +bnNpZ25lZEludCI+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0K +ICA8eHM6ZWxlbWVudCBuYW1lPSJBY2Nlc3NMZXZlbEV4VHlwZSIgdHlwZT0idG5zOkFjY2Vzc0xl +dmVsRXhUeXBlIiAvPg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJFdmVudE5vdGlmaWVyVHlw +ZSI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnVuc2lnbmVkQnl0ZSI+DQogICAgPC94 +czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJF +dmVudE5vdGlmaWVyVHlwZSIgdHlwZT0idG5zOkV2ZW50Tm90aWZpZXJUeXBlIiAvPg0KDQogIDx4 +czpjb21wbGV4VHlwZSBuYW1lPSJSb2xlUGVybWlzc2lvblR5cGUiPg0KICAgIDx4czpzZXF1ZW5j +ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJvbGVJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5P +Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUGVy +bWlzc2lvbnMiIHR5cGU9InRuczpQZXJtaXNzaW9uVHlwZSIgbWluT2NjdXJzPSIwIiAvPg0KICAg +IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 +IlJvbGVQZXJtaXNzaW9uVHlwZSIgdHlwZT0idG5zOlJvbGVQZXJtaXNzaW9uVHlwZSIgLz4NCg0K +ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUm9sZVBlcm1pc3Npb25UeXBlIj4NCiAgICA8 +eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSb2xlUGVybWlzc2lvblR5cGUi +IHR5cGU9InRuczpSb2xlUGVybWlzc2lvblR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1 +bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6 +Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlJvbGVQZXJtaXNzaW9uVHlw +ZSIgdHlwZT0idG5zOkxpc3RPZlJvbGVQZXJtaXNzaW9uVHlwZSIgbmlsbGFibGU9InRydWUiPjwv +eHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGF0YVR5cGVEZWZpbml0aW9u +Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 +VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGVEZWZpbml0aW9uIiB0eXBlPSJ0bnM6 +RGF0YVR5cGVEZWZpbml0aW9uIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZE +YXRhVHlwZURlZmluaXRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9IkRhdGFUeXBlRGVmaW5pdGlvbiIgdHlwZT0idG5zOkRhdGFUeXBlRGVmaW5pdGlvbiIg +bWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQog +ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt +ZT0iTGlzdE9mRGF0YVR5cGVEZWZpbml0aW9uIiB0eXBlPSJ0bnM6TGlzdE9mRGF0YVR5cGVEZWZp +bml0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpzaW1wbGVUeXBl +ICBuYW1lPSJTdHJ1Y3R1cmVUeXBlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3Ry +aW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU3RydWN0dXJlXzAiIC8+DQogICAg +ICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlN0cnVjdHVyZVdpdGhPcHRpb25hbEZpZWxkc18xIiAv +Pg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJVbmlvbl8yIiAvPg0KICAgICAgPHhzOmVu +dW1lcmF0aW9uIHZhbHVlPSJTdHJ1Y3R1cmVXaXRoU3VidHlwZWRWYWx1ZXNfMyIgLz4NCiAgICAg +IDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVW5pb25XaXRoU3VidHlwZWRWYWx1ZXNfNCIgLz4NCiAg +ICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5h +bWU9IlN0cnVjdHVyZVR5cGUiIHR5cGU9InRuczpTdHJ1Y3R1cmVUeXBlIiAvPg0KDQogIDx4czpj +b21wbGV4VHlwZSBuYW1lPSJTdHJ1Y3R1cmVGaWVsZCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVzY3JpcHRpb24i +IHR5cGU9InVhOkxvY2FsaXplZFRleHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhVHlwZSIgdHlwZT0idWE6Tm9kZUlkIiBtaW5P +Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFs +dWVSYW5rIiB0eXBlPSJ4czppbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9IkFycmF5RGltZW5zaW9ucyIgdHlwZT0idWE6TGlzdE9mVUludDMyIiBtaW5PY2N1cnM9 +IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF4U3RyaW5n +TGVuZ3RoIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iSXNPcHRpb25hbCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIw +IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt +ZW50IG5hbWU9IlN0cnVjdHVyZUZpZWxkIiB0eXBlPSJ0bnM6U3RydWN0dXJlRmllbGQiIC8+DQoN +CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlN0cnVjdHVyZUZpZWxkIj4NCiAgICA8eHM6 +c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdHJ1Y3R1cmVGaWVsZCIgdHlwZT0i +dG5zOlN0cnVjdHVyZUZpZWxkIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBu +aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl +Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZTdHJ1Y3R1cmVGaWVsZCIgdHlwZT0idG5zOkxp +c3RPZlN0cnVjdHVyZUZpZWxkIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4 +czpjb21wbGV4VHlwZSBuYW1lPSJTdHJ1Y3R1cmVEZWZpbml0aW9uIj4NCiAgICA8eHM6Y29tcGxl +eENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkRh +dGFUeXBlRGVmaW5pdGlvbiI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJEZWZhdWx0RW5jb2RpbmdJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1 +cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkJh +c2VEYXRhVHlwZSIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl +IiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0cnVjdHVyZVR5cGUiIHR5cGU9InRu +czpTdHJ1Y3R1cmVUeXBlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iRmllbGRzIiB0eXBlPSJ0bnM6TGlzdE9mU3RydWN0dXJlRmllbGQiIG1pbk9jY3Vycz0i +MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hz +OmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBl +Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTdHJ1Y3R1cmVEZWZpbml0aW9uIiB0eXBlPSJ0bnM6U3Ry +dWN0dXJlRGVmaW5pdGlvbiIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mU3Ry +dWN0dXJlRGVmaW5pdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iU3RydWN0dXJlRGVmaW5pdGlvbiIgdHlwZT0idG5zOlN0cnVjdHVyZURlZmluaXRpb24i +IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h +bWU9Ikxpc3RPZlN0cnVjdHVyZURlZmluaXRpb24iIHR5cGU9InRuczpMaXN0T2ZTdHJ1Y3R1cmVE +ZWZpbml0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4 +VHlwZSBuYW1lPSJFbnVtRGVmaW5pdGlvbiI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVk +PSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpEYXRhVHlwZURlZmluaXRp +b24iPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +RmllbGRzIiB0eXBlPSJ0bnM6TGlzdE9mRW51bUZpZWxkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl +PSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+ +DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs +ZW1lbnQgbmFtZT0iRW51bURlZmluaXRpb24iIHR5cGU9InRuczpFbnVtRGVmaW5pdGlvbiIgLz4N +Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRW51bURlZmluaXRpb24iPg0KICAgIDx4 +czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVudW1EZWZpbml0aW9uIiB0eXBl +PSJ0bnM6RW51bURlZmluaXRpb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5 +cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkVudW1EZWZpbml0aW9uIiB0eXBlPSJ0bnM6 +TGlzdE9mRW51bURlZmluaXRpb24iIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAg +PHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik5vZGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4 +czplbGVtZW50IG5hbWU9Ik5vZGVJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5p +bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZUNsYXNzIiB0eXBl +PSJ0bnM6Tm9kZUNsYXNzIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l +PSJCcm93c2VOYW1lIiB0eXBlPSJ1YTpRdWFsaWZpZWROYW1lIiBtaW5PY2N1cnM9IjAiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlzcGxheU5hbWUiIHR5cGU9 InVhOkxvY2FsaXplZFRleHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg -PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i -RW51bVZhbHVlVHlwZSIgdHlwZT0idG5zOkVudW1WYWx1ZVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBs -ZXhUeXBlIG5hbWU9Ikxpc3RPZkVudW1WYWx1ZVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg -ICAgIDx4czplbGVtZW50IG5hbWU9IkVudW1WYWx1ZVR5cGUiIHR5cGU9InRuczpFbnVtVmFsdWVU -eXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu -dCBuYW1lPSJMaXN0T2ZFbnVtVmFsdWVUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mRW51bVZhbHVlVHlw -ZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt -ZT0iRW51bUZpZWxkIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAg -ICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkVudW1WYWx1ZVR5cGUiPg0KICAgICAgICA8eHM6 -c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmFtZSIgdHlwZT0ieHM6c3Ry -aW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVl -bmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAg -PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRW51bUZpZWxkIiB0eXBlPSJ0 -bnM6RW51bUZpZWxkIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZFbnVtRmll -bGQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVudW1GaWVs -ZCIgdHlwZT0idG5zOkVudW1GaWVsZCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRl -ZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 -VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRW51bUZpZWxkIiB0eXBlPSJ0bnM6TGlz -dE9mRW51bUZpZWxkIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21w -bGV4VHlwZSBuYW1lPSJPcHRpb25TZXQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl -bGVtZW50IG5hbWU9IlZhbHVlIiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0iMCIg -bmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYWxpZEJpdHMiIHR5 -cGU9InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg -ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l -PSJPcHRpb25TZXQiIHR5cGU9InRuczpPcHRpb25TZXQiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl -IG5hbWU9Ikxpc3RPZk9wdGlvblNldCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iT3B0aW9uU2V0IiB0eXBlPSJ0bnM6T3B0aW9uU2V0IiBtaW5PY2N1cnM9IjAi -IG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVl -bmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZPcHRp -b25TZXQiIHR5cGU9InRuczpMaXN0T2ZPcHRpb25TZXQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVs -ZW1lbnQ+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iTm9ybWFsaXplZFN0cmluZyIgdHlwZT0ieHM6 -c3RyaW5nIiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IkRlY2ltYWxTdHJpbmciIHR5cGU9Inhz -OnN0cmluZyIgLz4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEdXJhdGlvblN0cmluZyIgdHlwZT0i -eHM6c3RyaW5nIiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IlRpbWVTdHJpbmciIHR5cGU9Inhz -OnN0cmluZyIgLz4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRlU3RyaW5nIiB0eXBlPSJ4czpz -dHJpbmciIC8+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iRHVyYXRpb24iIHR5cGU9InhzOmRvdWJs -ZSIgLz4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJVdGNUaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIg -Lz4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJUaW1lIiB0eXBlPSJ4czpzdHJpbmciIC8+DQoNCiAg -PHhzOmVsZW1lbnQgbmFtZT0iRGF0ZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIC8+DQoNCiAgPHhzOmVs -ZW1lbnQgbmFtZT0iTG9jYWxlSWQiIHR5cGU9InhzOnN0cmluZyIgLz4NCg0KICA8eHM6Y29tcGxl -eFR5cGUgbmFtZT0iVGltZVpvbmVEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iT2Zmc2V0IiB0eXBlPSJ4czpzaG9ydCIgbWluT2NjdXJzPSIwIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF5bGlnaHRTYXZpbmdJbk9mZnNldCIgdHlwZT0i -eHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6 -Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlRpbWVab25lRGF0YVR5cGUiIHR5cGU9 -InRuczpUaW1lWm9uZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0 -T2ZUaW1lWm9uZURhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJUaW1lWm9uZURhdGFUeXBlIiB0eXBlPSJ0bnM6VGltZVpvbmVEYXRhVHlwZSIgbWlu -T2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg -PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i -TGlzdE9mVGltZVpvbmVEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlRpbWVab25lRGF0YVR5cGUi -IG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iSW5k -ZXgiIHR5cGU9InhzOnVuc2lnbmVkSW50IiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IkludGVn -ZXJJZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIC8+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9 -IkFwcGxpY2F0aW9uVHlwZSI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+ -DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlNlcnZlcl8wIiAvPg0KICAgICAgPHhzOmVu -dW1lcmF0aW9uIHZhbHVlPSJDbGllbnRfMSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1 -ZT0iQ2xpZW50QW5kU2VydmVyXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRp -c2NvdmVyeVNlcnZlcl8zIiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxl -VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQXBwbGljYXRpb25UeXBlIiB0eXBlPSJ0bnM6QXBw -bGljYXRpb25UeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJBcHBsaWNhdGlvbkRl -c2NyaXB0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJB -cHBsaWNhdGlvblVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0 -cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHJvZHVjdFVyaSIgdHlwZT0ieHM6c3Ry -aW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iQXBwbGljYXRpb25OYW1lIiB0eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9 -IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXBwbGljYXRp -b25UeXBlIiB0eXBlPSJ0bnM6QXBwbGljYXRpb25UeXBlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJHYXRld2F5U2VydmVyVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1p -bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJE -aXNjb3ZlcnlQcm9maWxlVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFi -bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaXNjb3ZlcnlVcmxzIiB0eXBl -PSJ1YTpMaXN0T2ZTdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg -PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i -QXBwbGljYXRpb25EZXNjcmlwdGlvbiIgdHlwZT0idG5zOkFwcGxpY2F0aW9uRGVzY3JpcHRpb24i -IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkFwcGxpY2F0aW9uRGVzY3JpcHRp -b24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkFwcGxpY2F0 -aW9uRGVzY3JpcHRpb24iIHR5cGU9InRuczpBcHBsaWNhdGlvbkRlc2NyaXB0aW9uIiBtaW5PY2N1 -cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz -OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0 -T2ZBcHBsaWNhdGlvbkRlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6TGlzdE9mQXBwbGljYXRpb25EZXNj -cmlwdGlvbiIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5 -cGUgbmFtZT0iUmVxdWVzdEhlYWRlciI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iQXV0aGVudGljYXRpb25Ub2tlbiIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1 -cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGltZXN0 -YW1wIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iUmVxdWVzdEhhbmRsZSIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0i -MCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJldHVybkRpYWdub3N0aWNzIiB0eXBlPSJ4 -czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i -QXVkaXRFbnRyeUlkIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy -dWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUaW1lb3V0SGludCIgdHlwZT0ieHM6dW5z -aWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkFkZGl0 -aW9uYWxIZWFkZXIiIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxs -YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K -ICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRl -ciIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVzcG9uc2VIZWFkZXIiPg0KICAgIDx4 -czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRpbWVzdGFtcCIgdHlwZT0ieHM6 -ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVl -c3RIYW5kbGUiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJTZXJ2aWNlUmVzdWx0IiB0eXBlPSJ1YTpTdGF0dXNDb2RlIiBtaW5P -Y2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2aWNlRGlhZ25vc3RpY3Mi -IHR5cGU9InVhOkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RyaW5nVGFibGUiIHR5cGU9InVhOkxpc3RPZlN0 -cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50 -IG5hbWU9IkFkZGl0aW9uYWxIZWFkZXIiIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2Nj -dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv -bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5z -OlJlc3BvbnNlSGVhZGVyIiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IlZlcnNpb25UaW1lIiB0 -eXBlPSJ4czp1bnNpZ25lZEludCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2Vydmlj -ZUZhdWx0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNw -b25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxh +ICA8eHM6ZWxlbWVudCBuYW1lPSJEZXNjcmlwdGlvbiIgdHlwZT0idWE6TG9jYWxpemVkVGV4dCIg +bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 +IldyaXRlTWFzayIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg +IDx4czplbGVtZW50IG5hbWU9IlVzZXJXcml0ZU1hc2siIHR5cGU9InhzOnVuc2lnbmVkSW50IiBt +aW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSb2xlUGVybWlzc2lvbnMi +IHR5cGU9InRuczpMaXN0T2ZSb2xlUGVybWlzc2lvblR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFi +bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVc2VyUm9sZVBlcm1pc3Npb25z +IiB0eXBlPSJ0bnM6TGlzdE9mUm9sZVBlcm1pc3Npb25UeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWNjZXNzUmVzdHJpY3Rpb25z +IiB0eXBlPSJ4czp1bnNpZ25lZFNob3J0IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl +bWVudCBuYW1lPSJSZWZlcmVuY2VzIiB0eXBlPSJ0bnM6TGlzdE9mUmVmZXJlbmNlTm9kZSIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz +OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJOb2RlIiB0eXBlPSJ0bnM6Tm9kZSIg +Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mTm9kZSI+DQogICAgPHhzOnNlcXVl +bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZSIgdHlwZT0idG5zOk5vZGUiIG1pbk9j +Y3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv +eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxp +c3RPZk5vZGUiIHR5cGU9InRuczpMaXN0T2ZOb2RlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVt +ZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJJbnN0YW5jZU5vZGUiPg0KICAgIDx4czpj +b21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0 +bnM6Tm9kZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4N +CiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6 +Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikluc3RhbmNlTm9kZSIgdHlwZT0idG5z +Okluc3RhbmNlTm9kZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVHlwZU5vZGUiPg0K +ICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lv +biBiYXNlPSJ0bnM6Tm9kZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgPC94czpz +ZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+ +DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlR5cGVOb2RlIiB0eXBl +PSJ0bnM6VHlwZU5vZGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik9iamVjdE5vZGUi +Pg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVu +c2lvbiBiYXNlPSJ0bnM6SW5zdGFuY2VOb2RlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAg +ICAgICAgIDx4czplbGVtZW50IG5hbWU9IkV2ZW50Tm90aWZpZXIiIHR5cGU9InhzOnVuc2lnbmVk +Qnl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94 +czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlw +ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iT2JqZWN0Tm9kZSIgdHlwZT0idG5zOk9iamVjdE5vZGUi +IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik9iamVjdFR5cGVOb2RlIj4NCiAgICA8eHM6 +Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0i +dG5zOlR5cGVOb2RlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVt +ZW50IG5hbWU9IklzQWJzdHJhY3QiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4N +CiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6 +Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 +Ik9iamVjdFR5cGVOb2RlIiB0eXBlPSJ0bnM6T2JqZWN0VHlwZU5vZGUiIC8+DQoNCiAgPHhzOmNv +bXBsZXhUeXBlIG5hbWU9IlZhcmlhYmxlTm9kZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1p +eGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpJbnN0YW5jZU5vZGUi +Pg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFs +dWUiIHR5cGU9InVhOlZhcmlhbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxl +bWVudCBuYW1lPSJEYXRhVHlwZSIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlZhbHVlUmFuayIgdHlw +ZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +QXJyYXlEaW1lbnNpb25zIiB0eXBlPSJ1YTpMaXN0T2ZVSW50MzIiIG1pbk9jY3Vycz0iMCIgbmls +bGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWNjZXNzTGV2ZWwi +IHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czpl +bGVtZW50IG5hbWU9IlVzZXJBY2Nlc3NMZXZlbCIgdHlwZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5P +Y2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWluaW11bVNhbXBsaW5n +SW50ZXJ2YWwiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4 +czplbGVtZW50IG5hbWU9Ikhpc3Rvcml6aW5nIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9 +IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWNjZXNzTGV2ZWxFeCIgdHlwZT0i +eHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4N +CiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6 +Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlZhcmlhYmxlTm9kZSIgdHlwZT0idG5z +OlZhcmlhYmxlTm9kZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVmFyaWFibGVUeXBl +Tm9kZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6 +ZXh0ZW5zaW9uIGJhc2U9InRuczpUeXBlTm9kZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAg +ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1ZSIgdHlwZT0idWE6VmFyaWFudCIgbWluT2Nj +dXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFUeXBlIiB0eXBlPSJ1 +YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iVmFsdWVSYW5rIiB0eXBlPSJ4czppbnQiIG1pbk9jY3Vycz0iMCIgLz4N +CiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBcnJheURpbWVuc2lvbnMiIHR5cGU9InVhOkxp +c3RPZlVJbnQzMiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJJc0Fic3RyYWN0IiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9 +IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAg +ICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu +dCBuYW1lPSJWYXJpYWJsZVR5cGVOb2RlIiB0eXBlPSJ0bnM6VmFyaWFibGVUeXBlTm9kZSIgLz4N +Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVmZXJlbmNlVHlwZU5vZGUiPg0KICAgIDx4czpj +b21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0 +bnM6VHlwZU5vZGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iSXNBYnN0cmFjdCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0K +ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlN5bW1ldHJpYyIgdHlwZT0ieHM6Ym9vbGVhbiIg +bWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkludmVyc2VOYW1l +IiB0eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv +Pg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94 +czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt +ZT0iUmVmZXJlbmNlVHlwZU5vZGUiIHR5cGU9InRuczpSZWZlcmVuY2VUeXBlTm9kZSIgLz4NCg0K +ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTWV0aG9kTm9kZSI+DQogICAgPHhzOmNvbXBsZXhDb250 +ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpJbnN0YW5j +ZU5vZGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFt +ZT0iRXhlY3V0YWJsZSIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg +ICAgIDx4czplbGVtZW50IG5hbWU9IlVzZXJFeGVjdXRhYmxlIiB0eXBlPSJ4czpib29sZWFuIiBt +aW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVu +c2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8 +eHM6ZWxlbWVudCBuYW1lPSJNZXRob2ROb2RlIiB0eXBlPSJ0bnM6TWV0aG9kTm9kZSIgLz4NCg0K +ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVmlld05vZGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVu +dCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6SW5zdGFuY2VO +b2RlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9 +IkNvbnRhaW5zTm9Mb29wcyIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAg +ICAgICAgIDx4czplbGVtZW50IG5hbWU9IkV2ZW50Tm90aWZpZXIiIHR5cGU9InhzOnVuc2lnbmVk +Qnl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94 +czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlw +ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVmlld05vZGUiIHR5cGU9InRuczpWaWV3Tm9kZSIgLz4N +Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGF0YVR5cGVOb2RlIj4NCiAgICA8eHM6Y29tcGxl +eENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOlR5 +cGVOb2RlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5h +bWU9IklzQWJzdHJhY3QiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhVHlwZURlZmluaXRpb24iIHR5cGU9InVhOkV4dGVu +c2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94 +czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRl +bnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRhdGFUeXBlTm9k +ZSIgdHlwZT0idG5zOkRhdGFUeXBlTm9kZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i +UmVmZXJlbmNlTm9kZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt +ZT0iUmVmZXJlbmNlVHlwZUlkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFi +bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJc0ludmVyc2UiIHR5cGU9Inhz +OmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRhcmdl +dElkIiB0eXBlPSJ1YTpFeHBhbmRlZE5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 +ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl +bWVudCBuYW1lPSJSZWZlcmVuY2VOb2RlIiB0eXBlPSJ0bnM6UmVmZXJlbmNlTm9kZSIgLz4NCg0K +ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUmVmZXJlbmNlTm9kZSI+DQogICAgPHhzOnNl +cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlTm9kZSIgdHlwZT0idG5z +OlJlZmVyZW5jZU5vZGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxh YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog -IDx4czplbGVtZW50IG5hbWU9IlNlcnZpY2VGYXVsdCIgdHlwZT0idG5zOlNlcnZpY2VGYXVsdCIg -Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2Vzc2lvbmxlc3NJbnZva2VSZXF1ZXN0VHlw -ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXJpc1ZlcnNp -b24iIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJOYW1lc3BhY2VVcmlzIiB0eXBlPSJ1YTpMaXN0T2ZTdHJpbmciIG1pbk9jY3Vy -cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJV -cmlzIiB0eXBlPSJ1YTpMaXN0T2ZTdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi -IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMb2NhbGVJZHMiIHR5cGU9InVhOkxpc3RPZlN0 -cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50 -IG5hbWU9IlNlcnZpY2VJZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4N -CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu -YW1lPSJTZXNzaW9ubGVzc0ludm9rZVJlcXVlc3RUeXBlIiB0eXBlPSJ0bnM6U2Vzc2lvbmxlc3NJ -bnZva2VSZXF1ZXN0VHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2Vzc2lvbmxl -c3NJbnZva2VSZXNwb25zZVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9Ik5hbWVzcGFjZVVyaXMiIHR5cGU9InVhOkxpc3RPZlN0cmluZyIgbWluT2NjdXJz -PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlclVy -aXMiIHR5cGU9InVhOkxpc3RPZlN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZpY2VJZCIgdHlwZT0ieHM6dW5zaWduZWRJ -bnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU -eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTZXNzaW9ubGVzc0ludm9rZVJlc3BvbnNlVHlwZSIg -dHlwZT0idG5zOlNlc3Npb25sZXNzSW52b2tlUmVzcG9uc2VUeXBlIiAvPg0KDQogIDx4czpjb21w -bGV4VHlwZSBuYW1lPSJGaW5kU2VydmVyc1JlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg -ICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVh -ZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iRW5kcG9pbnRVcmwiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJs -ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkxvY2FsZUlkcyIgdHlwZT0idWE6 -TGlzdE9mU3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz -OmVsZW1lbnQgbmFtZT0iU2VydmVyVXJpcyIgdHlwZT0idWE6TGlzdE9mU3RyaW5nIiBtaW5PY2N1 -cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29t -cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkZpbmRTZXJ2ZXJzUmVxdWVzdCIgdHlwZT0i -dG5zOkZpbmRTZXJ2ZXJzUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRmlu -ZFNlcnZlcnNSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJz -PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlcnMi -IHR5cGU9InRuczpMaXN0T2ZBcHBsaWNhdGlvbkRlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAiIG5p -bGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+ -DQogIDx4czplbGVtZW50IG5hbWU9IkZpbmRTZXJ2ZXJzUmVzcG9uc2UiIHR5cGU9InRuczpGaW5k -U2VydmVyc1Jlc3BvbnNlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJTZXJ2ZXJPbk5l -dHdvcmsiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlY29y -ZElkIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iU2VydmVyTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5p -bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlzY292ZXJ5VXJsIiB0 -eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJDYXBhYmlsaXRpZXMiIHR5cGU9InVhOkxpc3RPZlN0cmlu -ZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K -ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJPbk5ldHdvcmsi -IHR5cGU9InRuczpTZXJ2ZXJPbk5ldHdvcmsiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9 -Ikxpc3RPZlNlcnZlck9uTmV0d29yayI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iU2VydmVyT25OZXR3b3JrIiB0eXBlPSJ0bnM6U2VydmVyT25OZXR3b3JrIiBt +IDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlJlZmVyZW5jZU5vZGUiIHR5cGU9InRuczpMaXN0T2ZS +ZWZlcmVuY2VOb2RlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21w +bGV4VHlwZSBuYW1lPSJBcmd1bWVudCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl +PSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGUiIHR5cGU9InVhOk5v +ZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9IlZhbHVlUmFuayIgdHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJBcnJheURpbWVuc2lvbnMiIHR5cGU9InVhOkxpc3RPZlVJbnQzMiIg +bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 +IkRlc2NyaXB0aW9uIiB0eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog +IDx4czplbGVtZW50IG5hbWU9IkFyZ3VtZW50IiB0eXBlPSJ0bnM6QXJndW1lbnQiIC8+DQoNCiAg +PHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkFyZ3VtZW50Ij4NCiAgICA8eHM6c2VxdWVuY2U+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBcmd1bWVudCIgdHlwZT0idG5zOkFyZ3VtZW50IiBt aW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l -PSJMaXN0T2ZTZXJ2ZXJPbk5ldHdvcmsiIHR5cGU9InRuczpMaXN0T2ZTZXJ2ZXJPbk5ldHdvcmsi -IG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9 -IkZpbmRTZXJ2ZXJzT25OZXR3b3JrUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIi +PSJMaXN0T2ZBcmd1bWVudCIgdHlwZT0idG5zOkxpc3RPZkFyZ3VtZW50IiBuaWxsYWJsZT0idHJ1 +ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJFbnVtVmFsdWVUeXBl +Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1ZSIgdHlw +ZT0ieHM6bG9uZyIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlz +cGxheU5hbWUiIHR5cGU9InVhOkxvY2FsaXplZFRleHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 +InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZXNjcmlwdGlvbiIgdHlwZT0idWE6 +TG9jYWxpemVkVGV4dCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz +OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJFbnVt +VmFsdWVUeXBlIiB0eXBlPSJ0bnM6RW51bVZhbHVlVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5 +cGUgbmFtZT0iTGlzdE9mRW51bVZhbHVlVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iRW51bVZhbHVlVHlwZSIgdHlwZT0idG5zOkVudW1WYWx1ZVR5cGUi +IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h +bWU9Ikxpc3RPZkVudW1WYWx1ZVR5cGUiIHR5cGU9InRuczpMaXN0T2ZFbnVtVmFsdWVUeXBlIiBu +aWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJF +bnVtRmllbGQiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAg +PHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6RW51bVZhbHVlVHlwZSI+DQogICAgICAgIDx4czpzZXF1 +ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lIiB0eXBlPSJ4czpzdHJpbmci +IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+ +DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hz +OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJFbnVtRmllbGQiIHR5cGU9InRuczpF +bnVtRmllbGQiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkVudW1GaWVsZCI+ +DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW51bUZpZWxkIiB0 +eXBlPSJ0bnM6RW51bUZpZWxkIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBu +aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl +Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZFbnVtRmllbGQiIHR5cGU9InRuczpMaXN0T2ZF +bnVtRmllbGQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhU +eXBlIG5hbWU9Ik9wdGlvblNldCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iVmFsdWUiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxs +YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlZhbGlkQml0cyIgdHlwZT0i +eHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv +eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik9w +dGlvblNldCIgdHlwZT0idG5zOk9wdGlvblNldCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt +ZT0iTGlzdE9mT3B0aW9uU2V0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJPcHRpb25TZXQiIHR5cGU9InRuczpPcHRpb25TZXQiIG1pbk9jY3Vycz0iMCIgbWF4 +T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+ +DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk9wdGlvblNl +dCIgdHlwZT0idG5zOkxpc3RPZk9wdGlvblNldCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVu +dD4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJOb3JtYWxpemVkU3RyaW5nIiB0eXBlPSJ4czpzdHJp +bmciIC8+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGVjaW1hbFN0cmluZyIgdHlwZT0ieHM6c3Ry +aW5nIiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IkR1cmF0aW9uU3RyaW5nIiB0eXBlPSJ4czpz +dHJpbmciIC8+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iVGltZVN0cmluZyIgdHlwZT0ieHM6c3Ry +aW5nIiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IkRhdGVTdHJpbmciIHR5cGU9InhzOnN0cmlu +ZyIgLz4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEdXJhdGlvbiIgdHlwZT0ieHM6ZG91YmxlIiAv +Pg0KDQogIDx4czplbGVtZW50IG5hbWU9IlV0Y1RpbWUiIHR5cGU9InhzOmRhdGVUaW1lIiAvPg0K +DQogIDx4czplbGVtZW50IG5hbWU9IlRpbWUiIHR5cGU9InhzOnN0cmluZyIgLz4NCg0KICA8eHM6 +ZWxlbWVudCBuYW1lPSJEYXRlIiB0eXBlPSJ4czpkYXRlVGltZSIgLz4NCg0KICA8eHM6ZWxlbWVu +dCBuYW1lPSJMb2NhbGVJZCIgdHlwZT0ieHM6c3RyaW5nIiAvPg0KDQogIDx4czpjb21wbGV4VHlw +ZSBuYW1lPSJUaW1lWm9uZURhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJPZmZzZXQiIHR5cGU9InhzOnNob3J0IiBtaW5PY2N1cnM9IjAiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXlsaWdodFNhdmluZ0luT2Zmc2V0IiB0eXBlPSJ4czpi +b29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w +bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVGltZVpvbmVEYXRhVHlwZSIgdHlwZT0idG5z +OlRpbWVab25lRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlRp +bWVab25lRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h +bWU9IlRpbWVab25lRGF0YVR5cGUiIHR5cGU9InRuczpUaW1lWm9uZURhdGFUeXBlIiBtaW5PY2N1 +cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz +OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0 +T2ZUaW1lWm9uZURhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mVGltZVpvbmVEYXRhVHlwZSIgbmls +bGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJJbmRleCIg +dHlwZT0ieHM6dW5zaWduZWRJbnQiIC8+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iSW50ZWdlcklk +IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iQXBw +bGljYXRpb25UeXBlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAg +ICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU2VydmVyXzAiIC8+DQogICAgICA8eHM6ZW51bWVy +YXRpb24gdmFsdWU9IkNsaWVudF8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJD +bGllbnRBbmRTZXJ2ZXJfMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRGlzY292 +ZXJ5U2VydmVyXzMiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBl +Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBcHBsaWNhdGlvblR5cGUiIHR5cGU9InRuczpBcHBsaWNh +dGlvblR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFwcGxpY2F0aW9uRGVzY3Jp +cHRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkFwcGxp +Y2F0aW9uVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi +IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQcm9kdWN0VXJpIiB0eXBlPSJ4czpzdHJpbmci IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJTdGFydGluZ1JlY29yZElkIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF4UmVjb3Jkc1RvUmV0dXJuIiB0eXBlPSJ4czp1 -bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2Vy -dmVyQ2FwYWJpbGl0eUZpbHRlciIgdHlwZT0idWE6TGlzdE9mU3RyaW5nIiBtaW5PY2N1cnM9IjAi -IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5 -cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkZpbmRTZXJ2ZXJzT25OZXR3b3JrUmVxdWVzdCIgdHlw -ZT0idG5zOkZpbmRTZXJ2ZXJzT25OZXR3b3JrUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5 -cGUgbmFtZT0iRmluZFNlcnZlcnNPbk5ldHdvcmtSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNl -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNw -b25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl -bGVtZW50IG5hbWU9Ikxhc3RDb3VudGVyUmVzZXRUaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWlu -T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVycyIgdHlwZT0idG5z -Okxpc3RPZlNlcnZlck9uTmV0d29yayIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu -YW1lPSJGaW5kU2VydmVyc09uTmV0d29ya1Jlc3BvbnNlIiB0eXBlPSJ0bnM6RmluZFNlcnZlcnNP -bk5ldHdvcmtSZXNwb25zZSIgLz4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBcHBsaWNhdGlvbklu -c3RhbmNlQ2VydGlmaWNhdGUiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgLz4NCg0KICA8eHM6c2lt -cGxlVHlwZSAgbmFtZT0iTWVzc2FnZVNlY3VyaXR5TW9kZSI+DQogICAgPHhzOnJlc3RyaWN0aW9u -IGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkludmFsaWRf -MCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm9uZV8xIiAvPg0KICAgICAgPHhz -OmVudW1lcmF0aW9uIHZhbHVlPSJTaWduXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFs -dWU9IlNpZ25BbmRFbmNyeXB0XzMiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpz -aW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNZXNzYWdlU2VjdXJpdHlNb2RlIiB0eXBl -PSJ0bnM6TWVzc2FnZVNlY3VyaXR5TW9kZSIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0i -VXNlclRva2VuVHlwZSI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQog -ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkFub255bW91c18wIiAvPg0KICAgICAgPHhzOmVu -dW1lcmF0aW9uIHZhbHVlPSJVc2VyTmFtZV8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZh -bHVlPSJDZXJ0aWZpY2F0ZV8yIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJc3N1 -ZWRUb2tlbl8zIiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4N -CiAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlclRva2VuVHlwZSIgdHlwZT0idG5zOlVzZXJUb2tlblR5 -cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlVzZXJUb2tlblBvbGljeSI+DQogICAg -PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUG9saWN5SWQiIHR5cGU9Inhz -OnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IlRva2VuVHlwZSIgdHlwZT0idG5zOlVzZXJUb2tlblR5cGUiIG1pbk9jY3Vycz0i -MCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Iklzc3VlZFRva2VuVHlwZSIgdHlwZT0ieHM6 -c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iSXNzdWVyRW5kcG9pbnRVcmwiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIw -IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlY3VyaXR5UG9s -aWN5VXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+ -DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg -bmFtZT0iVXNlclRva2VuUG9saWN5IiB0eXBlPSJ0bnM6VXNlclRva2VuUG9saWN5IiAvPg0KDQog -IDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZVc2VyVG9rZW5Qb2xpY3kiPg0KICAgIDx4czpz -ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVzZXJUb2tlblBvbGljeSIgdHlwZT0i -dG5zOlVzZXJUb2tlblBvbGljeSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIg -bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw -ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVXNlclRva2VuUG9saWN5IiB0eXBlPSJ0bnM6 -TGlzdE9mVXNlclRva2VuUG9saWN5IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQog -IDx4czpjb21wbGV4VHlwZSBuYW1lPSJFbmRwb2ludERlc2NyaXB0aW9uIj4NCiAgICA8eHM6c2Vx -dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmRwb2ludFVybCIgdHlwZT0ieHM6c3Ry -aW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iU2VydmVyIiB0eXBlPSJ0bnM6QXBwbGljYXRpb25EZXNjcmlwdGlvbiIgbWluT2NjdXJz -PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlckNl -cnRpZmljYXRlIiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 -InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0eU1vZGUiIHR5cGU9InRu -czpNZXNzYWdlU2VjdXJpdHlNb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJTZWN1cml0eVBvbGljeVVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAi -IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlcklkZW50aXR5 -VG9rZW5zIiB0eXBlPSJ0bnM6TGlzdE9mVXNlclRva2VuUG9saWN5IiBtaW5PY2N1cnM9IjAiIG5p -bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNwb3J0UHJvZmls -ZVVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VjdXJpdHlMZXZlbCIgdHlwZT0ieHM6dW5zaWduZWRC -eXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 -VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRW5kcG9pbnREZXNjcmlwdGlvbiIgdHlwZT0idG5z -OkVuZHBvaW50RGVzY3JpcHRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RP -ZkVuZHBvaW50RGVzY3JpcHRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IkVuZHBvaW50RGVzY3JpcHRpb24iIHR5cGU9InRuczpFbmRwb2ludERlc2NyaXB0 -aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu -dCBuYW1lPSJMaXN0T2ZFbmRwb2ludERlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6TGlzdE9mRW5kcG9p -bnREZXNjcmlwdGlvbiIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29t -cGxleFR5cGUgbmFtZT0iR2V0RW5kcG9pbnRzUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RI -ZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJFbmRwb2ludFVybCIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxh -YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTG9jYWxlSWRzIiB0eXBlPSJ1 -YTpMaXN0T2ZTdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJQcm9maWxlVXJpcyIgdHlwZT0idWE6TGlzdE9mU3RyaW5nIiBtaW5P -Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6 -Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkdldEVuZHBvaW50c1JlcXVlc3QiIHR5 -cGU9InRuczpHZXRFbmRwb2ludHNSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l -PSJHZXRFbmRwb2ludHNSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWlu -T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVu -ZHBvaW50cyIgdHlwZT0idG5zOkxpc3RPZkVuZHBvaW50RGVzY3JpcHRpb24iIG1pbk9jY3Vycz0i -MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 -VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iR2V0RW5kcG9pbnRzUmVzcG9uc2UiIHR5cGU9InRu -czpHZXRFbmRwb2ludHNSZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVn -aXN0ZXJlZFNlcnZlciI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt -ZT0iU2VydmVyVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy -dWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQcm9kdWN0VXJpIiB0eXBlPSJ4czpzdHJp -bmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJTZXJ2ZXJOYW1lcyIgdHlwZT0idWE6TGlzdE9mTG9jYWxpemVkVGV4dCIgbWluT2NjdXJz -PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlclR5 +PSJBcHBsaWNhdGlvbk5hbWUiIHR5cGU9InVhOkxvY2FsaXplZFRleHQiIG1pbk9jY3Vycz0iMCIg +bmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBcHBsaWNhdGlvblR5 cGUiIHR5cGU9InRuczpBcHBsaWNhdGlvblR5cGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4 czplbGVtZW50IG5hbWU9IkdhdGV3YXlTZXJ2ZXJVcmkiIHR5cGU9InhzOnN0cmluZyIgbWluT2Nj dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpc2Nv -dmVyeVVybHMiIHR5cGU9InVhOkxpc3RPZlN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i -dHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlbWFwaG9yZUZpbGVQYXRoIiB0eXBl -PSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJJc09ubGluZSIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAv -Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50 -IG5hbWU9IlJlZ2lzdGVyZWRTZXJ2ZXIiIHR5cGU9InRuczpSZWdpc3RlcmVkU2VydmVyIiAvPg0K -DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZSZWdpc3RlcmVkU2VydmVyIj4NCiAgICA8 -eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWdpc3RlcmVkU2VydmVyIiB0 -eXBlPSJ0bnM6UmVnaXN0ZXJlZFNlcnZlciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91 -bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w -bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUmVnaXN0ZXJlZFNlcnZlciIgdHlw -ZT0idG5zOkxpc3RPZlJlZ2lzdGVyZWRTZXJ2ZXIiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1l -bnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlZ2lzdGVyU2VydmVyUmVxdWVzdCI+DQog -ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIg -dHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXIiIHR5cGU9InRuczpSZWdpc3RlcmVkU2Vy -dmVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+ -DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlZ2lzdGVyU2VydmVy -UmVxdWVzdCIgdHlwZT0idG5zOlJlZ2lzdGVyU2VydmVyUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29t -cGxleFR5cGUgbmFtZT0iUmVnaXN0ZXJTZXJ2ZXJSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNl -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNw -b25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl -cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZWdpc3Rl -clNlcnZlclJlc3BvbnNlIiB0eXBlPSJ0bnM6UmVnaXN0ZXJTZXJ2ZXJSZXNwb25zZSIgLz4NCg0K -ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGlzY292ZXJ5Q29uZmlndXJhdGlvbiI+DQogICAgPHhz -OnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 -czplbGVtZW50IG5hbWU9IkRpc2NvdmVyeUNvbmZpZ3VyYXRpb24iIHR5cGU9InRuczpEaXNjb3Zl -cnlDb25maWd1cmF0aW9uIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJNZG5zRGlzY292 -ZXJ5Q29uZmlndXJhdGlvbiI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+ -DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpEaXNjb3ZlcnlDb25maWd1cmF0aW9uIj4N -CiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1kbnNT -ZXJ2ZXJOYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi -IC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyQ2FwYWJpbGl0aWVzIiB0eXBl -PSJ1YTpMaXN0T2ZTdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg -ICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBs -ZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNZG5z -RGlzY292ZXJ5Q29uZmlndXJhdGlvbiIgdHlwZT0idG5zOk1kbnNEaXNjb3ZlcnlDb25maWd1cmF0 -aW9uIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWdpc3RlclNlcnZlcjJSZXF1ZXN0 -Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVh -ZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 -ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlciIgdHlwZT0idG5zOlJlZ2lzdGVy -ZWRTZXJ2ZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJEaXNjb3ZlcnlDb25maWd1cmF0aW9uIiB0eXBlPSJ1YTpMaXN0T2ZFeHRlbnNp -b25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1 -ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVnaXN0ZXJT -ZXJ2ZXIyUmVxdWVzdCIgdHlwZT0idG5zOlJlZ2lzdGVyU2VydmVyMlJlcXVlc3QiIC8+DQoNCiAg -PHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlZ2lzdGVyU2VydmVyMlJlc3BvbnNlIj4NCiAgICA8eHM6 -c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0i -dG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29uZmlndXJhdGlvblJlc3VsdHMiIHR5cGU9InVhOkxpc3RP -ZlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJ -bmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+ -DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlZ2lzdGVyU2VydmVy -MlJlc3BvbnNlIiB0eXBlPSJ0bnM6UmVnaXN0ZXJTZXJ2ZXIyUmVzcG9uc2UiIC8+DQoNCiAgPHhz -OnNpbXBsZVR5cGUgIG5hbWU9IlNlY3VyaXR5VG9rZW5SZXF1ZXN0VHlwZSI+DQogICAgPHhzOnJl -c3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9 -Iklzc3VlXzAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlJlbmV3XzEiIC8+DQog -ICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBu -YW1lPSJTZWN1cml0eVRva2VuUmVxdWVzdFR5cGUiIHR5cGU9InRuczpTZWN1cml0eVRva2VuUmVx -dWVzdFR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNoYW5uZWxTZWN1cml0eVRv -a2VuIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDaGFubmVs -SWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJUb2tlbklkIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ3JlYXRlZEF0IiB0eXBlPSJ4czpkYXRlVGltZSIg -bWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmV2aXNlZExpZmV0aW1l -IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVu -Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkNoYW5uZWxTZWN1 -cml0eVRva2VuIiB0eXBlPSJ0bnM6Q2hhbm5lbFNlY3VyaXR5VG9rZW4iIC8+DQoNCiAgPHhzOmNv -bXBsZXhUeXBlIG5hbWU9Ik9wZW5TZWN1cmVDaGFubmVsUmVxdWVzdCI+DQogICAgPHhzOnNlcXVl -bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJl -cXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJDbGllbnRQcm90b2NvbFZlcnNpb24iIHR5cGU9InhzOnVuc2lnbmVkSW50 -IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0VHlwZSIg -dHlwZT0idG5zOlNlY3VyaXR5VG9rZW5SZXF1ZXN0VHlwZSIgbWluT2NjdXJzPSIwIiAvPg0KICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VjdXJpdHlNb2RlIiB0eXBlPSJ0bnM6TWVzc2FnZVNlY3Vy -aXR5TW9kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ2xpZW50 -Tm9uY2UiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 -ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RlZExpZmV0aW1lIiB0eXBlPSJ4 -czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv -eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik9wZW5TZWN1cmVDaGFubmVsUmVx -dWVzdCIgdHlwZT0idG5zOk9wZW5TZWN1cmVDaGFubmVsUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29t -cGxleFR5cGUgbmFtZT0iT3BlblNlY3VyZUNoYW5uZWxSZXNwb25zZSI+DQogICAgPHhzOnNlcXVl -bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpS -ZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9IlNlcnZlclByb3RvY29sVmVyc2lvbiIgdHlwZT0ieHM6dW5zaWduZWRJ -bnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlY3VyaXR5VG9r -ZW4iIHR5cGU9InRuczpDaGFubmVsU2VjdXJpdHlUb2tlbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJs -ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlck5vbmNlIiB0eXBlPSJ4 -czpiYXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94 -czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iT3Bl -blNlY3VyZUNoYW5uZWxSZXNwb25zZSIgdHlwZT0idG5zOk9wZW5TZWN1cmVDaGFubmVsUmVzcG9u -c2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNsb3NlU2VjdXJlQ2hhbm5lbFJlcXVl -c3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RI -ZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0 -cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl -bGVtZW50IG5hbWU9IkNsb3NlU2VjdXJlQ2hhbm5lbFJlcXVlc3QiIHR5cGU9InRuczpDbG9zZVNl -Y3VyZUNoYW5uZWxSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJDbG9zZVNl -Y3VyZUNoYW5uZWxSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2Nj -dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv -bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJDbG9zZVNlY3VyZUNoYW5uZWxSZXNwb25z -ZSIgdHlwZT0idG5zOkNsb3NlU2VjdXJlQ2hhbm5lbFJlc3BvbnNlIiAvPg0KDQogIDx4czpjb21w -bGV4VHlwZSBuYW1lPSJTaWduZWRTb2Z0d2FyZUNlcnRpZmljYXRlIj4NCiAgICA8eHM6c2VxdWVu -Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDZXJ0aWZpY2F0ZURhdGEiIHR5cGU9InhzOmJh -c2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl -bGVtZW50IG5hbWU9IlNpZ25hdHVyZSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9 +dmVyeVByb2ZpbGVVcmkiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i +dHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpc2NvdmVyeVVybHMiIHR5cGU9InVh +Okxpc3RPZlN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz +OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBcHBs +aWNhdGlvbkRlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6QXBwbGljYXRpb25EZXNjcmlwdGlvbiIgLz4N +Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQXBwbGljYXRpb25EZXNjcmlwdGlvbiI+ +DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXBwbGljYXRpb25E +ZXNjcmlwdGlvbiIgdHlwZT0idG5zOkFwcGxpY2F0aW9uRGVzY3JpcHRpb24iIG1pbk9jY3Vycz0i +MCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2Vx +dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkFw +cGxpY2F0aW9uRGVzY3JpcHRpb24iIHR5cGU9InRuczpMaXN0T2ZBcHBsaWNhdGlvbkRlc2NyaXB0 +aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBu +YW1lPSJSZXF1ZXN0SGVhZGVyIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJBdXRoZW50aWNhdGlvblRva2VuIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0i +MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUaW1lc3RhbXAi +IHR5cGU9InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJSZXF1ZXN0SGFuZGxlIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAv +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmV0dXJuRGlhZ25vc3RpY3MiIHR5cGU9InhzOnVu +c2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBdWRp +dEVudHJ5SWQiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg +Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRpbWVvdXRIaW50IiB0eXBlPSJ4czp1bnNpZ25l +ZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWRkaXRpb25h +bEhlYWRlciIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl +PSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 +czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVyIiAv +Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZXNwb25zZUhlYWRlciI+DQogICAgPHhzOnNl +cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGltZXN0YW1wIiB0eXBlPSJ4czpkYXRl +VGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhh +bmRsZSIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IlNlcnZpY2VSZXN1bHQiIHR5cGU9InVhOlN0YXR1c0NvZGUiIG1pbk9jY3Vy +cz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZpY2VEaWFnbm9zdGljcyIgdHlw +ZT0idWE6RGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdHJpbmdUYWJsZSIgdHlwZT0idWE6TGlzdE9mU3RyaW5n +IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt +ZT0iQWRkaXRpb25hbEhlYWRlciIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1cnM9 IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlNpZ25lZFNvZnR3YXJlQ2VydGlmaWNhdGUiIHR5 -cGU9InRuczpTaWduZWRTb2Z0d2FyZUNlcnRpZmljYXRlIiAvPg0KDQogIDx4czpjb21wbGV4VHlw -ZSBuYW1lPSJMaXN0T2ZTaWduZWRTb2Z0d2FyZUNlcnRpZmljYXRlIj4NCiAgICA8eHM6c2VxdWVu -Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTaWduZWRTb2Z0d2FyZUNlcnRpZmljYXRlIiB0 -eXBlPSJ0bnM6U2lnbmVkU29mdHdhcmVDZXJ0aWZpY2F0ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1 -cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg -PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mU2lnbmVkU29mdHdh -cmVDZXJ0aWZpY2F0ZSIgdHlwZT0idG5zOkxpc3RPZlNpZ25lZFNvZnR3YXJlQ2VydGlmaWNhdGUi -IG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iU2Vz -c2lvbkF1dGhlbnRpY2F0aW9uVG9rZW4iIHR5cGU9InVhOk5vZGVJZCIgLz4NCg0KICA8eHM6Y29t -cGxleFR5cGUgbmFtZT0iU2lnbmF0dXJlRGF0YSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iQWxnb3JpdGhtIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0i -MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTaWduYXR1cmUi -IHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu -YW1lPSJTaWduYXR1cmVEYXRhIiB0eXBlPSJ0bnM6U2lnbmF0dXJlRGF0YSIgLz4NCg0KICA8eHM6 -Y29tcGxleFR5cGUgbmFtZT0iQ3JlYXRlU2Vzc2lvblJlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5j -ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1 -ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iQ2xpZW50RGVzY3JpcHRpb24iIHR5cGU9InRuczpBcHBsaWNhdGlvbkRlc2Ny -aXB0aW9uIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iU2VydmVyVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFi -bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmRwb2ludFVybCIgdHlwZT0i -eHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iU2Vzc2lvbk5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNsaWVudE5vbmNlIiB0 -eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog -ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDbGllbnRDZXJ0aWZpY2F0ZSIgdHlwZT0ieHM6YmFzZTY0 -QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iUmVxdWVzdGVkU2Vzc2lvblRpbWVvdXQiIHR5cGU9InhzOmRvdWJsZSIgbWluT2Nj -dXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF4UmVzcG9uc2VNZXNzYWdlU2l6 -ZSIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVl -bmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJDcmVhdGVTZXNz -aW9uUmVxdWVzdCIgdHlwZT0idG5zOkNyZWF0ZVNlc3Npb25SZXF1ZXN0IiAvPg0KDQogIDx4czpj -b21wbGV4VHlwZSBuYW1lPSJDcmVhdGVTZXNzaW9uUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5j -ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVz -cG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJTZXNzaW9uSWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkF1dGhlbnRpY2F0aW9u -VG9rZW4iIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJldmlzZWRTZXNzaW9uVGltZW91dCIgdHlwZT0ieHM6 -ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJO -b25jZSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl -IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyQ2VydGlmaWNhdGUiIHR5cGU9Inhz -OmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9IlNlcnZlckVuZHBvaW50cyIgdHlwZT0idG5zOkxpc3RPZkVuZHBvaW50 -RGVzY3JpcHRpb24iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJTZXJ2ZXJTb2Z0d2FyZUNlcnRpZmljYXRlcyIgdHlwZT0idG5zOkxpc3RP -ZlNpZ25lZFNvZnR3YXJlQ2VydGlmaWNhdGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi -IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJTaWduYXR1cmUiIHR5cGU9InRuczpT -aWduYXR1cmVEYXRhIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz -OmVsZW1lbnQgbmFtZT0iTWF4UmVxdWVzdE1lc3NhZ2VTaXplIiB0eXBlPSJ4czp1bnNpZ25lZElu -dCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5 -cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkNyZWF0ZVNlc3Npb25SZXNwb25zZSIgdHlwZT0idG5z -OkNyZWF0ZVNlc3Npb25SZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVXNl -cklkZW50aXR5VG9rZW4iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IlBvbGljeUlkIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy -dWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs -ZW1lbnQgbmFtZT0iVXNlcklkZW50aXR5VG9rZW4iIHR5cGU9InRuczpVc2VySWRlbnRpdHlUb2tl -biIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQW5vbnltb3VzSWRlbnRpdHlUb2tlbiI+ -DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5z -aW9uIGJhc2U9InRuczpVc2VySWRlbnRpdHlUb2tlbiI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4N -CiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6 -Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 -IkFub255bW91c0lkZW50aXR5VG9rZW4iIHR5cGU9InRuczpBbm9ueW1vdXNJZGVudGl0eVRva2Vu -IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJVc2VyTmFtZUlkZW50aXR5VG9rZW4iPg0K -ICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lv -biBiYXNlPSJ0bnM6VXNlcklkZW50aXR5VG9rZW4iPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQog -ICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlck5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWlu -T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJQYXNzd29yZCIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl -PSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkVuY3J5cHRpb25BbGdvcml0 -aG0iIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg -ICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29t -cGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlVz -ZXJOYW1lSWRlbnRpdHlUb2tlbiIgdHlwZT0idG5zOlVzZXJOYW1lSWRlbnRpdHlUb2tlbiIgLz4N -Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iWDUwOUlkZW50aXR5VG9rZW4iPg0KICAgIDx4czpj -b21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0 -bnM6VXNlcklkZW50aXR5VG9rZW4iPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iQ2VydGlmaWNhdGVEYXRhIiB0eXBlPSJ4czpiYXNlNjRCaW5hcnki -IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+ -DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hz -OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJYNTA5SWRlbnRpdHlUb2tlbiIgdHlw -ZT0idG5zOlg1MDlJZGVudGl0eVRva2VuIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJJ -c3N1ZWRJZGVudGl0eVRva2VuIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNl -Ij4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOlVzZXJJZGVudGl0eVRva2VuIj4NCiAg -ICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlRva2VuRGF0 -YSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv -Pg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkVuY3J5cHRpb25BbGdvcml0aG0iIHR5cGU9 -InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94 -czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRl -bnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Iklzc3VlZElkZW50 -aXR5VG9rZW4iIHR5cGU9InRuczpJc3N1ZWRJZGVudGl0eVRva2VuIiAvPg0KDQogIDx4czplbGVt -ZW50IG5hbWU9IlJzYUVuY3J5cHRlZFNlY3JldCIgdHlwZT0idWE6VmFyaWFudCIgLz4NCg0KICA8 -eHM6ZWxlbWVudCBuYW1lPSJFY2NFbmNyeXB0ZWRTZWNyZXQiIHR5cGU9InVhOlZhcmlhbnQiIC8+ -DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFjdGl2YXRlU2Vzc2lvblJlcXVlc3QiPg0KICAg -IDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5 -cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ2xpZW50U2lnbmF0dXJlIiB0eXBlPSJ0bnM6U2lnbmF0 -dXJlRGF0YSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IkNsaWVudFNvZnR3YXJlQ2VydGlmaWNhdGVzIiB0eXBlPSJ0bnM6TGlzdE9mU2ln -bmVkU29mdHdhcmVDZXJ0aWZpY2F0ZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N +eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVz +cG9uc2VIZWFkZXIiIC8+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iVmVyc2lvblRpbWUiIHR5cGU9 +InhzOnVuc2lnbmVkSW50IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJTZXJ2aWNlRmF1 +bHQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNl +SGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 +InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz +OmVsZW1lbnQgbmFtZT0iU2VydmljZUZhdWx0IiB0eXBlPSJ0bnM6U2VydmljZUZhdWx0IiAvPg0K +DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJTZXNzaW9ubGVzc0ludm9rZVJlcXVlc3RUeXBlIj4N +CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVcmlzVmVyc2lvbiIg +dHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9Ik5hbWVzcGFjZVVyaXMiIHR5cGU9InVhOkxpc3RPZlN0cmluZyIgbWluT2NjdXJzPSIw +IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlclVyaXMi +IHR5cGU9InVhOkxpc3RPZlN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N CiAgICAgIDx4czplbGVtZW50IG5hbWU9IkxvY2FsZUlkcyIgdHlwZT0idWE6TGlzdE9mU3RyaW5n IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt -ZT0iVXNlcklkZW50aXR5VG9rZW4iIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJz -PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVzZXJUb2tl -blNpZ25hdHVyZSIgdHlwZT0idG5zOlNpZ25hdHVyZURhdGEiIG1pbk9jY3Vycz0iMCIgbmlsbGFi +ZT0iU2VydmljZUlkIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAg +IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 +IlNlc3Npb25sZXNzSW52b2tlUmVxdWVzdFR5cGUiIHR5cGU9InRuczpTZXNzaW9ubGVzc0ludm9r +ZVJlcXVlc3RUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJTZXNzaW9ubGVzc0lu +dm9rZVJlc3BvbnNlVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iTmFtZXNwYWNlVXJpcyIgdHlwZT0idWE6TGlzdE9mU3RyaW5nIiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyVXJpcyIg +dHlwZT0idWE6TGlzdE9mU3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmljZUlkIiB0eXBlPSJ4czp1bnNpZ25lZEludCIg +bWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+ +DQogIDx4czplbGVtZW50IG5hbWU9IlNlc3Npb25sZXNzSW52b2tlUmVzcG9uc2VUeXBlIiB0eXBl +PSJ0bnM6U2Vzc2lvbmxlc3NJbnZva2VSZXNwb25zZVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhU +eXBlIG5hbWU9IkZpbmRTZXJ2ZXJzUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIi +IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l +PSJFbmRwb2ludFVybCIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0 +cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTG9jYWxlSWRzIiB0eXBlPSJ1YTpMaXN0 +T2ZTdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl +bWVudCBuYW1lPSJTZXJ2ZXJVcmlzIiB0eXBlPSJ1YTpMaXN0T2ZTdHJpbmciIG1pbk9jY3Vycz0i +MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 +VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRmluZFNlcnZlcnNSZXF1ZXN0IiB0eXBlPSJ0bnM6 +RmluZFNlcnZlcnNSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJGaW5kU2Vy +dmVyc1Jlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l +PSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVycyIgdHlw +ZT0idG5zOkxpc3RPZkFwcGxpY2F0aW9uRGVzY3JpcHRpb24iIG1pbk9jY3Vycz0iMCIgbmlsbGFi bGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg -PHhzOmVsZW1lbnQgbmFtZT0iQWN0aXZhdGVTZXNzaW9uUmVxdWVzdCIgdHlwZT0idG5zOkFjdGl2 -YXRlU2Vzc2lvblJlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFjdGl2YXRl -U2Vzc2lvblJlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9 -IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyTm9u -Y2UiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3VsdHMiIHR5cGU9InVhOkxpc3RPZlN0YXR1 -c0NvZGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJEaWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBt +PHhzOmVsZW1lbnQgbmFtZT0iRmluZFNlcnZlcnNSZXNwb25zZSIgdHlwZT0idG5zOkZpbmRTZXJ2 +ZXJzUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNlcnZlck9uTmV0d29y +ayI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVjb3JkSWQi +IHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJTZXJ2ZXJOYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFi +bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaXNjb3ZlcnlVcmwiIHR5cGU9 +InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IlNlcnZlckNhcGFiaWxpdGllcyIgdHlwZT0idWE6TGlzdE9mU3RyaW5nIiBt aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv -eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkFjdGl2YXRlU2Vzc2lvblJlc3Bv -bnNlIiB0eXBlPSJ0bnM6QWN0aXZhdGVTZXNzaW9uUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBs -ZXhUeXBlIG5hbWU9IkNsb3NlU2Vzc2lvblJlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg -ICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVh -ZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iRGVsZXRlU3Vic2NyaXB0aW9ucyIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIw -IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt -ZW50IG5hbWU9IkNsb3NlU2Vzc2lvblJlcXVlc3QiIHR5cGU9InRuczpDbG9zZVNlc3Npb25SZXF1 -ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJDbG9zZVNlc3Npb25SZXNwb25zZSI+ -DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFk -ZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 -ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl -bWVudCBuYW1lPSJDbG9zZVNlc3Npb25SZXNwb25zZSIgdHlwZT0idG5zOkNsb3NlU2Vzc2lvblJl -c3BvbnNlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJDYW5jZWxSZXF1ZXN0Ij4NCiAg -ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0 -eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIYW5kbGUiIHR5cGU9InhzOnVuc2lnbmVk -SW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 -VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQ2FuY2VsUmVxdWVzdCIgdHlwZT0idG5zOkNhbmNl -bFJlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNhbmNlbFJlc3BvbnNlIj4N -CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRl -ciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl -IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ2FuY2VsQ291bnQiIHR5cGU9InhzOnVuc2ln -bmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w -bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQ2FuY2VsUmVzcG9uc2UiIHR5cGU9InRuczpD -YW5jZWxSZXNwb25zZSIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iTm9kZUF0dHJpYnV0 -ZXNNYXNrIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4 -czplbnVtZXJhdGlvbiB2YWx1ZT0iTm9uZV8wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZh -bHVlPSJBY2Nlc3NMZXZlbF8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJBcnJh -eURpbWVuc2lvbnNfMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQnJvd3NlTmFt -ZV80IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDb250YWluc05vTG9vcHNfOCIg -Lz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRGF0YVR5cGVfMTYiIC8+DQogICAgICA8 -eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRlc2NyaXB0aW9uXzMyIiAvPg0KICAgICAgPHhzOmVudW1l -cmF0aW9uIHZhbHVlPSJEaXNwbGF5TmFtZV82NCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2 -YWx1ZT0iRXZlbnROb3RpZmllcl8xMjgiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9 -IkV4ZWN1dGFibGVfMjU2IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJIaXN0b3Jp -emluZ181MTIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkludmVyc2VOYW1lXzEw -MjQiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IklzQWJzdHJhY3RfMjA0OCIgLz4N -CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTWluaW11bVNhbXBsaW5nSW50ZXJ2YWxfNDA5 -NiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm9kZUNsYXNzXzgxOTIiIC8+DQog -ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik5vZGVJZF8xNjM4NCIgLz4NCiAgICAgIDx4czpl -bnVtZXJhdGlvbiB2YWx1ZT0iU3ltbWV0cmljXzMyNzY4IiAvPg0KICAgICAgPHhzOmVudW1lcmF0 -aW9uIHZhbHVlPSJVc2VyQWNjZXNzTGV2ZWxfNjU1MzYiIC8+DQogICAgICA8eHM6ZW51bWVyYXRp -b24gdmFsdWU9IlVzZXJFeGVjdXRhYmxlXzEzMTA3MiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlv -biB2YWx1ZT0iVXNlcldyaXRlTWFza18yNjIxNDQiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24g -dmFsdWU9IlZhbHVlUmFua181MjQyODgiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9 -IldyaXRlTWFza18xMDQ4NTc2IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJWYWx1 -ZV8yMDk3MTUyIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEYXRhVHlwZURlZmlu -aXRpb25fNDE5NDMwNCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUm9sZVBlcm1p -c3Npb25zXzgzODg2MDgiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkFjY2Vzc1Jl -c3RyaWN0aW9uc18xNjc3NzIxNiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQWxs -XzMzNTU0NDMxIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJCYXNlTm9kZV8yNjUw -MTIyMCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iT2JqZWN0XzI2NTAxMzQ4IiAv -Pg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJPYmplY3RUeXBlXzI2NTAzMjY4IiAvPg0K -ICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJWYXJpYWJsZV8yNjU3MTM4MyIgLz4NCiAgICAg -IDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVmFyaWFibGVUeXBlXzI4NjAwNDM4IiAvPg0KICAgICAg -PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJNZXRob2RfMjY2MzI1NDgiIC8+DQogICAgICA8eHM6ZW51 -bWVyYXRpb24gdmFsdWU9IlJlZmVyZW5jZVR5cGVfMjY1MzcwNjAiIC8+DQogICAgICA8eHM6ZW51 -bWVyYXRpb24gdmFsdWU9IlZpZXdfMjY1MDEzNTYiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4N -CiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJOb2RlQXR0cmlidXRlc01h -c2siIHR5cGU9InRuczpOb2RlQXR0cmlidXRlc01hc2siIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl -IG5hbWU9Ik5vZGVBdHRyaWJ1dGVzIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJTcGVjaWZpZWRBdHRyaWJ1dGVzIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWlu -T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlzcGxheU5hbWUiIHR5cGU9 -InVhOkxvY2FsaXplZFRleHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJEZXNjcmlwdGlvbiIgdHlwZT0idWE6TG9jYWxpemVkVGV4dCIg -bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IldyaXRlTWFzayIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IlVzZXJXcml0ZU1hc2siIHR5cGU9InhzOnVuc2lnbmVkSW50IiBt -aW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N -CiAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZUF0dHJpYnV0ZXMiIHR5cGU9InRuczpOb2RlQXR0cmli -dXRlcyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iT2JqZWN0QXR0cmlidXRlcyI+DQog -ICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9u -IGJhc2U9InRuczpOb2RlQXR0cmlidXRlcyI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg -ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFdmVudE5vdGlmaWVyIiB0eXBlPSJ4czp1bnNpZ25lZEJ5 -dGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6 -ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+ -DQogIDx4czplbGVtZW50IG5hbWU9Ik9iamVjdEF0dHJpYnV0ZXMiIHR5cGU9InRuczpPYmplY3RB -dHRyaWJ1dGVzIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJWYXJpYWJsZUF0dHJpYnV0 -ZXMiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4 -dGVuc2lvbiBiYXNlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+ -DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFsdWUiIHR5cGU9InVhOlZhcmlhbnQiIG1p -bk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhVHlwZSIgdHlw -ZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAg -IDx4czplbGVtZW50IG5hbWU9IlZhbHVlUmFuayIgdHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAi -IC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXJyYXlEaW1lbnNpb25zIiB0eXBlPSJ1 -YTpMaXN0T2ZVSW50MzIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iQWNjZXNzTGV2ZWwiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIg -bWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlVzZXJBY2Nlc3NM -ZXZlbCIgdHlwZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iTWluaW11bVNhbXBsaW5nSW50ZXJ2YWwiIHR5cGU9InhzOmRvdWJs -ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikhpc3Rvcml6 -aW5nIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDwveHM6c2Vx -dWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0K -ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJWYXJpYWJsZUF0dHJpYnV0 -ZXMiIHR5cGU9InRuczpWYXJpYWJsZUF0dHJpYnV0ZXMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl -IG5hbWU9Ik1ldGhvZEF0dHJpYnV0ZXMiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0i -ZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiPg0K -ICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRXhlY3V0 -YWJsZSIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czpl -bGVtZW50IG5hbWU9IlVzZXJFeGVjdXRhYmxlIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9 -IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAg -ICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu -dCBuYW1lPSJNZXRob2RBdHRyaWJ1dGVzIiB0eXBlPSJ0bnM6TWV0aG9kQXR0cmlidXRlcyIgLz4N -Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iT2JqZWN0VHlwZUF0dHJpYnV0ZXMiPg0KICAgIDx4 -czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNl -PSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iSXNBYnN0cmFjdCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJz -PSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQog -ICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l -bnQgbmFtZT0iT2JqZWN0VHlwZUF0dHJpYnV0ZXMiIHR5cGU9InRuczpPYmplY3RUeXBlQXR0cmli -dXRlcyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVmFyaWFibGVUeXBlQXR0cmlidXRl -cyI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0 -ZW5zaW9uIGJhc2U9InRuczpOb2RlQXR0cmlidXRlcyI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4N -CiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1ZSIgdHlwZT0idWE6VmFyaWFudCIgbWlu -T2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFUeXBlIiB0eXBl -PSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iVmFsdWVSYW5rIiB0eXBlPSJ4czppbnQiIG1pbk9jY3Vycz0iMCIg -Lz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBcnJheURpbWVuc2lvbnMiIHR5cGU9InVh -Okxpc3RPZlVJbnQzMiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJJc0Fic3RyYWN0IiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1 -cnM9IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4N -CiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl -bWVudCBuYW1lPSJWYXJpYWJsZVR5cGVBdHRyaWJ1dGVzIiB0eXBlPSJ0bnM6VmFyaWFibGVUeXBl -QXR0cmlidXRlcyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVmZXJlbmNlVHlwZUF0 -dHJpYnV0ZXMiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAg -PHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiPg0KICAgICAgICA8eHM6c2Vx -dWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXNBYnN0cmFjdCIgdHlwZT0ieHM6 -Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlN5 -bW1ldHJpYyIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4 -czplbGVtZW50IG5hbWU9IkludmVyc2VOYW1lIiB0eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5P -Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAg -ICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21w -bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlVHlwZUF0dHJpYnV0ZXMiIHR5 -cGU9InRuczpSZWZlcmVuY2VUeXBlQXR0cmlidXRlcyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg -bmFtZT0iRGF0YVR5cGVBdHRyaWJ1dGVzIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9 -ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOk5vZGVBdHRyaWJ1dGVzIj4N -CiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IklzQWJz -dHJhY3QiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpz -ZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+ -DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRhdGFUeXBlQXR0cmli -dXRlcyIgdHlwZT0idG5zOkRhdGFUeXBlQXR0cmlidXRlcyIgLz4NCg0KICA8eHM6Y29tcGxleFR5 -cGUgbmFtZT0iVmlld0F0dHJpYnV0ZXMiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0i -ZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiPg0K -ICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29udGFp -bnNOb0xvb3BzIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iRXZlbnROb3RpZmllciIgdHlwZT0ieHM6dW5zaWduZWRCeXRlIiBt -aW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVu -c2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8 -eHM6ZWxlbWVudCBuYW1lPSJWaWV3QXR0cmlidXRlcyIgdHlwZT0idG5zOlZpZXdBdHRyaWJ1dGVz -IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJHZW5lcmljQXR0cmlidXRlVmFsdWUiPg0K -ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkF0dHJpYnV0ZUlkIiB0 -eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iVmFsdWUiIHR5cGU9InVhOlZhcmlhbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hz -OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJHZW5l -cmljQXR0cmlidXRlVmFsdWUiIHR5cGU9InRuczpHZW5lcmljQXR0cmlidXRlVmFsdWUiIC8+DQoN -CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkdlbmVyaWNBdHRyaWJ1dGVWYWx1ZSI+DQog -ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iR2VuZXJpY0F0dHJpYnV0 -ZVZhbHVlIiB0eXBlPSJ0bnM6R2VuZXJpY0F0dHJpYnV0ZVZhbHVlIiBtaW5PY2N1cnM9IjAiIG1h -eE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNl -Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZHZW5lcmlj -QXR0cmlidXRlVmFsdWUiIHR5cGU9InRuczpMaXN0T2ZHZW5lcmljQXR0cmlidXRlVmFsdWUiIG5p -bGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikdl -bmVyaWNBdHRyaWJ1dGVzIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4N -CiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOk5vZGVBdHRyaWJ1dGVzIj4NCiAgICAgICAg -PHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkF0dHJpYnV0ZVZhbHVl -cyIgdHlwZT0idG5zOkxpc3RPZkdlbmVyaWNBdHRyaWJ1dGVWYWx1ZSIgbWluT2NjdXJzPSIwIiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0 -ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQog -IDx4czplbGVtZW50IG5hbWU9IkdlbmVyaWNBdHRyaWJ1dGVzIiB0eXBlPSJ0bnM6R2VuZXJpY0F0 -dHJpYnV0ZXMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFkZE5vZGVzSXRlbSI+DQog -ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFyZW50Tm9kZUlkIiB0 -eXBlPSJ1YTpFeHBhbmRlZE5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlZmVyZW5jZVR5cGVJZCIgdHlwZT0idWE6Tm9kZUlk -IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt -ZT0iUmVxdWVzdGVkTmV3Tm9kZUlkIiB0eXBlPSJ1YTpFeHBhbmRlZE5vZGVJZCIgbWluT2NjdXJz -PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZU5h -bWUiIHR5cGU9InVhOlF1YWxpZmllZE5hbWUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi -IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOb2RlQ2xhc3MiIHR5cGU9InRuczpOb2RlQ2xh -c3MiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVBdHRyaWJ1 -dGVzIiB0eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy -dWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUeXBlRGVmaW5pdGlvbiIgdHlwZT0idWE6 -RXhwYW5kZWROb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94 -czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQWRk -Tm9kZXNJdGVtIiB0eXBlPSJ0bnM6QWRkTm9kZXNJdGVtIiAvPg0KDQogIDx4czpjb21wbGV4VHlw -ZSBuYW1lPSJMaXN0T2ZBZGROb2Rlc0l0ZW0iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9IkFkZE5vZGVzSXRlbSIgdHlwZT0idG5zOkFkZE5vZGVzSXRlbSIgbWlu -T2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg -PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i -TGlzdE9mQWRkTm9kZXNJdGVtIiB0eXBlPSJ0bnM6TGlzdE9mQWRkTm9kZXNJdGVtIiBuaWxsYWJs -ZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJBZGROb2Rl -c1Jlc3VsdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3Rh -dHVzQ29kZSIgdHlwZT0idWE6U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhz -OmVsZW1lbnQgbmFtZT0iQWRkZWROb2RlSWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIw -IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU -eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBZGROb2Rlc1Jlc3VsdCIgdHlwZT0idG5zOkFkZE5v -ZGVzUmVzdWx0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZBZGROb2Rlc1Jl -c3VsdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWRkTm9k -ZXNSZXN1bHQiIHR5cGU9InRuczpBZGROb2Rlc1Jlc3VsdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1 -cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg -PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mQWRkTm9kZXNSZXN1 -bHQiIHR5cGU9InRuczpMaXN0T2ZBZGROb2Rlc1Jlc3VsdCIgbmlsbGFibGU9InRydWUiPjwveHM6 -ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQWRkTm9kZXNSZXF1ZXN0Ij4NCiAg -ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0 -eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVzVG9BZGQiIHR5cGU9InRuczpMaXN0T2ZBZGRO -b2Rlc0l0ZW0iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1 -ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQWRkTm9kZXNS -ZXF1ZXN0IiB0eXBlPSJ0bnM6QWRkTm9kZXNSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlw -ZSBuYW1lPSJBZGROb2Rlc1Jlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBt -aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i -UmVzdWx0cyIgdHlwZT0idG5zOkxpc3RPZkFkZE5vZGVzUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG5p -bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9z -IiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i -dHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6 -ZWxlbWVudCBuYW1lPSJBZGROb2Rlc1Jlc3BvbnNlIiB0eXBlPSJ0bnM6QWRkTm9kZXNSZXNwb25z -ZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQWRkUmVmZXJlbmNlc0l0ZW0iPg0KICAg -IDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNvdXJjZU5vZGVJZCIgdHlw -ZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz -OmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlVHlwZUlkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vy -cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJc0Zvcndh -cmQiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50 -IG5hbWU9IlRhcmdldFNlcnZlclVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5p -bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGFyZ2V0Tm9kZUlkIiB0 -eXBlPSJ1YTpFeHBhbmRlZE5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRhcmdldE5vZGVDbGFzcyIgdHlwZT0idG5zOk5vZGVD -bGFzcyIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkFkZFJlZmVyZW5jZXNJdGVtIiB0eXBlPSJ0bnM6 -QWRkUmVmZXJlbmNlc0l0ZW0iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkFk -ZFJlZmVyZW5jZXNJdGVtIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJBZGRSZWZlcmVuY2VzSXRlbSIgdHlwZT0idG5zOkFkZFJlZmVyZW5jZXNJdGVtIiBtaW5P -Y2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8 -L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJM -aXN0T2ZBZGRSZWZlcmVuY2VzSXRlbSIgdHlwZT0idG5zOkxpc3RPZkFkZFJlZmVyZW5jZXNJdGVt -IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l -PSJBZGRSZWZlcmVuY2VzUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9j -Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWZl -cmVuY2VzVG9BZGQiIHR5cGU9InRuczpMaXN0T2ZBZGRSZWZlcmVuY2VzSXRlbSIgbWluT2NjdXJz -PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs -ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBZGRSZWZlcmVuY2VzUmVxdWVzdCIgdHlwZT0i -dG5zOkFkZFJlZmVyZW5jZXNSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJB -ZGRSZWZlcmVuY2VzUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9j -Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1 -bHRzIiB0eXBlPSJ1YTpMaXN0T2ZTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0 -cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1 -YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu -YW1lPSJBZGRSZWZlcmVuY2VzUmVzcG9uc2UiIHR5cGU9InRuczpBZGRSZWZlcmVuY2VzUmVzcG9u -c2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRlbGV0ZU5vZGVzSXRlbSI+DQogICAg -PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZUlkIiB0eXBlPSJ1YTpO -b2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJEZWxldGVUYXJnZXRSZWZlcmVuY2VzIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1 -cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz -OmVsZW1lbnQgbmFtZT0iRGVsZXRlTm9kZXNJdGVtIiB0eXBlPSJ0bnM6RGVsZXRlTm9kZXNJdGVt -IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZEZWxldGVOb2Rlc0l0ZW0iPg0K -ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRlbGV0ZU5vZGVzSXRl -bSIgdHlwZT0idG5zOkRlbGV0ZU5vZGVzSXRlbSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVu -Ym91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpj -b21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRGVsZXRlTm9kZXNJdGVtIiB0 -eXBlPSJ0bnM6TGlzdE9mRGVsZXRlTm9kZXNJdGVtIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVt -ZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEZWxldGVOb2Rlc1JlcXVlc3QiPg0KICAg -IDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5 -cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZXNUb0RlbGV0ZSIgdHlwZT0idG5zOkxpc3RPZkRl -bGV0ZU5vZGVzSXRlbSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz -OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEZWxl -dGVOb2Rlc1JlcXVlc3QiIHR5cGU9InRuczpEZWxldGVOb2Rlc1JlcXVlc3QiIC8+DQoNCiAgPHhz -OmNvbXBsZXhUeXBlIG5hbWU9IkRlbGV0ZU5vZGVzUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5j -ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVz -cG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ1YTpMaXN0T2ZTdGF0dXNDb2RlIiBtaW5PY2N1 -cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25v -c3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl -Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEZWxldGVOb2Rlc1Jlc3BvbnNlIiB0eXBlPSJ0bnM6RGVs -ZXRlTm9kZXNSZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGVsZXRlUmVm -ZXJlbmNlc0l0ZW0iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IlNvdXJjZU5vZGVJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0 -cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlVHlwZUlkIiB0eXBlPSJ1 -YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJJc0ZvcndhcmQiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRhcmdldE5vZGVJZCIgdHlwZT0idWE6RXhwYW5kZWRO -b2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJEZWxldGVCaWRpcmVjdGlvbmFsIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9 -IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs -ZW1lbnQgbmFtZT0iRGVsZXRlUmVmZXJlbmNlc0l0ZW0iIHR5cGU9InRuczpEZWxldGVSZWZlcmVu -Y2VzSXRlbSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRGVsZXRlUmVmZXJl -bmNlc0l0ZW0iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRl -bGV0ZVJlZmVyZW5jZXNJdGVtIiB0eXBlPSJ0bnM6RGVsZXRlUmVmZXJlbmNlc0l0ZW0iIG1pbk9j +eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlNlcnZlck9uTmV0d29yayIgdHlw +ZT0idG5zOlNlcnZlck9uTmV0d29yayIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlz +dE9mU2VydmVyT25OZXR3b3JrIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJTZXJ2ZXJPbk5ldHdvcmsiIHR5cGU9InRuczpTZXJ2ZXJPbk5ldHdvcmsiIG1pbk9j Y3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxp -c3RPZkRlbGV0ZVJlZmVyZW5jZXNJdGVtIiB0eXBlPSJ0bnM6TGlzdE9mRGVsZXRlUmVmZXJlbmNl -c0l0ZW0iIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBl -IG5hbWU9IkRlbGV0ZVJlZmVyZW5jZXNSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRl -ciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IlJlZmVyZW5jZXNUb0RlbGV0ZSIgdHlwZT0idG5zOkxpc3RPZkRlbGV0ZVJlZmVyZW5jZXNJ -dGVtIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+ -DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRlbGV0ZVJlZmVyZW5j -ZXNSZXF1ZXN0IiB0eXBlPSJ0bnM6RGVsZXRlUmVmZXJlbmNlc1JlcXVlc3QiIC8+DQoNCiAgPHhz -OmNvbXBsZXhUeXBlIG5hbWU9IkRlbGV0ZVJlZmVyZW5jZXNSZXNwb25zZSI+DQogICAgPHhzOnNl -cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRu -czpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IlJlc3VsdHMiIHR5cGU9InVhOkxpc3RPZlN0YXR1c0NvZGUiIG1p -bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJE -aWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9 -IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRlbGV0ZVJlZmVyZW5jZXNSZXNwb25zZSIgdHlw -ZT0idG5zOkRlbGV0ZVJlZmVyZW5jZXNSZXNwb25zZSIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAg -bmFtZT0iQXR0cmlidXRlV3JpdGVNYXNrIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6 -dW5zaWduZWRJbnQiPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4N -CiAgPHhzOmVsZW1lbnQgbmFtZT0iQXR0cmlidXRlV3JpdGVNYXNrIiB0eXBlPSJ0bnM6QXR0cmli -dXRlV3JpdGVNYXNrIiAvPg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJCcm93c2VEaXJlY3Rp -b24iPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVu -dW1lcmF0aW9uIHZhbHVlPSJGb3J3YXJkXzAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFs -dWU9IkludmVyc2VfMSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQm90aF8yIiAv -Pg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJbnZhbGlkXzMiIC8+DQogICAgPC94czpy -ZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJCcm93 -c2VEaXJlY3Rpb24iIHR5cGU9InRuczpCcm93c2VEaXJlY3Rpb24iIC8+DQoNCiAgPHhzOmNvbXBs -ZXhUeXBlIG5hbWU9IlZpZXdEZXNjcmlwdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iVmlld0lkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIg -bmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUaW1lc3RhbXAiIHR5 -cGU9InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJWaWV3VmVyc2lvbiIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAg +c3RPZlNlcnZlck9uTmV0d29yayIgdHlwZT0idG5zOkxpc3RPZlNlcnZlck9uTmV0d29yayIgbmls +bGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRmlu +ZFNlcnZlcnNPbk5ldHdvcmtSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0 +YXJ0aW5nUmVjb3JkSWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYXhSZWNvcmRzVG9SZXR1cm4iIHR5cGU9InhzOnVuc2ln +bmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJD +YXBhYmlsaXR5RmlsdGVyIiB0eXBlPSJ1YTpMaXN0T2ZTdHJpbmciIG1pbk9jY3Vycz0iMCIgbmls +bGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N +CiAgPHhzOmVsZW1lbnQgbmFtZT0iRmluZFNlcnZlcnNPbk5ldHdvcmtSZXF1ZXN0IiB0eXBlPSJ0 +bnM6RmluZFNlcnZlcnNPbk5ldHdvcmtSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu +YW1lPSJGaW5kU2VydmVyc09uTmV0d29ya1Jlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNl +SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iTGFzdENvdW50ZXJSZXNldFRpbWUiIHR5cGU9InhzOmRhdGVUaW1lIiBtaW5PY2N1 +cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJzIiB0eXBlPSJ0bnM6TGlz +dE9mU2VydmVyT25OZXR3b3JrIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 +IkZpbmRTZXJ2ZXJzT25OZXR3b3JrUmVzcG9uc2UiIHR5cGU9InRuczpGaW5kU2VydmVyc09uTmV0 +d29ya1Jlc3BvbnNlIiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IkFwcGxpY2F0aW9uSW5zdGFu +Y2VDZXJ0aWZpY2F0ZSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiAvPg0KDQogIDx4czpzaW1wbGVU +eXBlICBuYW1lPSJNZXNzYWdlU2VjdXJpdHlNb2RlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFz +ZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSW52YWxpZF8wIiAv +Pg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJOb25lXzEiIC8+DQogICAgICA8eHM6ZW51 +bWVyYXRpb24gdmFsdWU9IlNpZ25fMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0i +U2lnbkFuZEVuY3J5cHRfMyIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBs +ZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik1lc3NhZ2VTZWN1cml0eU1vZGUiIHR5cGU9InRu +czpNZXNzYWdlU2VjdXJpdHlNb2RlIiAvPg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJVc2Vy +VG9rZW5UeXBlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAgICAg +IDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQW5vbnltb3VzXzAiIC8+DQogICAgICA8eHM6ZW51bWVy +YXRpb24gdmFsdWU9IlVzZXJOYW1lXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9 +IkNlcnRpZmljYXRlXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Iklzc3VlZFRv +a2VuXzMiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8 +eHM6ZWxlbWVudCBuYW1lPSJVc2VyVG9rZW5UeXBlIiB0eXBlPSJ0bnM6VXNlclRva2VuVHlwZSIg +Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVXNlclRva2VuUG9saWN5Ij4NCiAgICA8eHM6 +c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQb2xpY3lJZCIgdHlwZT0ieHM6c3Ry +aW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iVG9rZW5UeXBlIiB0eXBlPSJ0bnM6VXNlclRva2VuVHlwZSIgbWluT2NjdXJzPSIwIiAv +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXNzdWVkVG9rZW5UeXBlIiB0eXBlPSJ4czpzdHJp +bmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJJc3N1ZXJFbmRwb2ludFVybCIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5p +bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VjdXJpdHlQb2xpY3lV +cmkiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l -PSJWaWV3RGVzY3JpcHRpb24iIHR5cGU9InRuczpWaWV3RGVzY3JpcHRpb24iIC8+DQoNCiAgPHhz -OmNvbXBsZXhUeXBlIG5hbWU9IkJyb3dzZURlc2NyaXB0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOb2RlSWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2Nj -dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJyb3dz -ZURpcmVjdGlvbiIgdHlwZT0idG5zOkJyb3dzZURpcmVjdGlvbiIgbWluT2NjdXJzPSIwIiAvPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlVHlwZUlkIiB0eXBlPSJ1YTpOb2RlSWQi +PSJVc2VyVG9rZW5Qb2xpY3kiIHR5cGU9InRuczpVc2VyVG9rZW5Qb2xpY3kiIC8+DQoNCiAgPHhz +OmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlVzZXJUb2tlblBvbGljeSI+DQogICAgPHhzOnNlcXVl +bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlclRva2VuUG9saWN5IiB0eXBlPSJ0bnM6 +VXNlclRva2VuUG9saWN5IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxs +YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K +ICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZVc2VyVG9rZW5Qb2xpY3kiIHR5cGU9InRuczpMaXN0 +T2ZVc2VyVG9rZW5Qb2xpY3kiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhz +OmNvbXBsZXhUeXBlIG5hbWU9IkVuZHBvaW50RGVzY3JpcHRpb24iPg0KICAgIDx4czpzZXF1ZW5j +ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVuZHBvaW50VXJsIiB0eXBlPSJ4czpzdHJpbmci IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJJbmNsdWRlU3VidHlwZXMiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAg -ICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVDbGFzc01hc2siIHR5cGU9InhzOnVuc2lnbmVkSW50 -IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRNYXNrIiB0 -eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+ -DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZURlc2NyaXB0 -aW9uIiB0eXBlPSJ0bnM6QnJvd3NlRGVzY3JpcHRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl -IG5hbWU9Ikxpc3RPZkJyb3dzZURlc2NyaXB0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJCcm93c2VEZXNjcmlwdGlvbiIgdHlwZT0idG5zOkJyb3dzZURl -c2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0i -dHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6 -ZWxlbWVudCBuYW1lPSJMaXN0T2ZCcm93c2VEZXNjcmlwdGlvbiIgdHlwZT0idG5zOkxpc3RPZkJy -b3dzZURlc2NyaXB0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpz -aW1wbGVUeXBlICBuYW1lPSJCcm93c2VSZXN1bHRNYXNrIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24g -YmFzZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm9uZV8wIiAv -Pg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJSZWZlcmVuY2VUeXBlSWRfMSIgLz4NCiAg -ICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSXNGb3J3YXJkXzIiIC8+DQogICAgICA8eHM6ZW51 -bWVyYXRpb24gdmFsdWU9Ik5vZGVDbGFzc180IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZh -bHVlPSJCcm93c2VOYW1lXzgiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRpc3Bs -YXlOYW1lXzE2IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJUeXBlRGVmaW5pdGlv -bl8zMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQWxsXzYzIiAvPg0KICAgICAg -PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJSZWZlcmVuY2VUeXBlSW5mb18zIiAvPg0KICAgICAgPHhz -OmVudW1lcmF0aW9uIHZhbHVlPSJUYXJnZXRJbmZvXzYwIiAvPg0KICAgIDwveHM6cmVzdHJpY3Rp -b24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQnJvd3NlUmVzdWx0 -TWFzayIgdHlwZT0idG5zOkJyb3dzZVJlc3VsdE1hc2siIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl -IG5hbWU9IlJlZmVyZW5jZURlc2NyaXB0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJSZWZlcmVuY2VUeXBlSWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2Nj -dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IklzRm9y -d2FyZCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iTm9kZUlkIiB0eXBlPSJ1YTpFeHBhbmRlZE5vZGVJZCIgbWluT2NjdXJzPSIwIiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZU5hbWUiIHR5 -cGU9InVhOlF1YWxpZmllZE5hbWUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog -ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaXNwbGF5TmFtZSIgdHlwZT0idWE6TG9jYWxpemVkVGV4 -dCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9Ik5vZGVDbGFzcyIgdHlwZT0idG5zOk5vZGVDbGFzcyIgbWluT2NjdXJzPSIwIiAvPg0KICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iVHlwZURlZmluaXRpb24iIHR5cGU9InVhOkV4cGFuZGVkTm9k -ZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+ -DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlZmVyZW5jZURlc2Ny -aXB0aW9uIiB0eXBlPSJ0bnM6UmVmZXJlbmNlRGVzY3JpcHRpb24iIC8+DQoNCiAgPHhzOmNvbXBs -ZXhUeXBlIG5hbWU9Ikxpc3RPZlJlZmVyZW5jZURlc2NyaXB0aW9uIj4NCiAgICA8eHM6c2VxdWVu -Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWZlcmVuY2VEZXNjcmlwdGlvbiIgdHlwZT0i -dG5zOlJlZmVyZW5jZURlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3Vu -ZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs -ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZSZWZlcmVuY2VEZXNjcmlwdGlvbiIg -dHlwZT0idG5zOkxpc3RPZlJlZmVyZW5jZURlc2NyaXB0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94 -czplbGVtZW50Pg0KDQogIDx4czplbGVtZW50IG5hbWU9IkNvbnRpbnVhdGlvblBvaW50IiB0eXBl -PSJ4czpiYXNlNjRCaW5hcnkiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkJyb3dzZVJl -c3VsdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhdHVz -Q29kZSIgdHlwZT0idWE6U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iQ29udGludWF0aW9uUG9pbnQiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgbWlu -T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJl -ZmVyZW5jZXMiIHR5cGU9InRuczpMaXN0T2ZSZWZlcmVuY2VEZXNjcmlwdGlvbiIgbWluT2NjdXJz -PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs -ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJCcm93c2VSZXN1bHQiIHR5cGU9InRuczpCcm93 -c2VSZXN1bHQiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkJyb3dzZVJlc3Vs -dCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnJvd3NlUmVz -dWx0IiB0eXBlPSJ0bnM6QnJvd3NlUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5i -b3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv -bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZCcm93c2VSZXN1bHQiIHR5cGU9 -InRuczpMaXN0T2ZCcm93c2VSZXN1bHQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoN -CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkJyb3dzZVJlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5j -ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1 -ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iVmlldyIgdHlwZT0idG5zOlZpZXdEZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIw -IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RlZE1h -eFJlZmVyZW5jZXNQZXJOb2RlIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZXNUb0Jyb3dzZSIgdHlwZT0idG5zOkxpc3RP -ZkJyb3dzZURlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg -IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 -IkJyb3dzZVJlcXVlc3QiIHR5cGU9InRuczpCcm93c2VSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21w -bGV4VHlwZSBuYW1lPSJCcm93c2VSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRl +PSJTZXJ2ZXIiIHR5cGU9InRuczpBcHBsaWNhdGlvbkRlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyQ2VydGlm +aWNhdGUiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 +ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlY3VyaXR5TW9kZSIgdHlwZT0idG5zOk1l +c3NhZ2VTZWN1cml0eU1vZGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h +bWU9IlNlY3VyaXR5UG9saWN5VXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmls +bGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVc2VySWRlbnRpdHlUb2tl +bnMiIHR5cGU9InRuczpMaXN0T2ZVc2VyVG9rZW5Qb2xpY3kiIG1pbk9jY3Vycz0iMCIgbmlsbGFi +bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUcmFuc3BvcnRQcm9maWxlVXJp +IiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0eUxldmVsIiB0eXBlPSJ4czp1bnNpZ25lZEJ5dGUi +IG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl +Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJFbmRwb2ludERlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6RW5k +cG9pbnREZXNjcmlwdGlvbiIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRW5k +cG9pbnREZXNjcmlwdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iRW5kcG9pbnREZXNjcmlwdGlvbiIgdHlwZT0idG5zOkVuZHBvaW50RGVzY3JpcHRpb24i +IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h +bWU9Ikxpc3RPZkVuZHBvaW50RGVzY3JpcHRpb24iIHR5cGU9InRuczpMaXN0T2ZFbmRwb2ludERl +c2NyaXB0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4 +VHlwZSBuYW1lPSJHZXRFbmRwb2ludHNSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRl ciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IlJlc3VsdHMiIHR5cGU9InRuczpMaXN0T2ZCcm93c2VSZXN1bHQiIG1pbk9jY3Vycz0iMCIg -bmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGljSW5m -b3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl -PSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 -czplbGVtZW50IG5hbWU9IkJyb3dzZVJlc3BvbnNlIiB0eXBlPSJ0bnM6QnJvd3NlUmVzcG9uc2Ui -IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkJyb3dzZU5leHRSZXF1ZXN0Ij4NCiAgICA8 -eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBl -PSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg -ICAgIDx4czplbGVtZW50IG5hbWU9IlJlbGVhc2VDb250aW51YXRpb25Qb2ludHMiIHR5cGU9Inhz -OmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNvbnRp -bnVhdGlvblBvaW50cyIgdHlwZT0idWE6TGlzdE9mQnl0ZVN0cmluZyIgbWluT2NjdXJzPSIwIiBu +bWU9IkVuZHBvaW50VXJsIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 +InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMb2NhbGVJZHMiIHR5cGU9InVhOkxp +c3RPZlN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IlByb2ZpbGVVcmlzIiB0eXBlPSJ1YTpMaXN0T2ZTdHJpbmciIG1pbk9jY3Vy +cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w +bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iR2V0RW5kcG9pbnRzUmVxdWVzdCIgdHlwZT0i +dG5zOkdldEVuZHBvaW50c1JlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikdl +dEVuZHBvaW50c1Jlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1 +cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5kcG9p +bnRzIiB0eXBlPSJ0bnM6TGlzdE9mRW5kcG9pbnREZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIwIiBu aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl -Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJCcm93c2VOZXh0UmVxdWVzdCIgdHlwZT0idG5zOkJyb3dz -ZU5leHRSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJCcm93c2VOZXh0UmVz -cG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3Bv -bnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFi -bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ0bnM6 -TGlzdE9mQnJvd3NlUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFn -bm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl -cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJCcm93c2VO -ZXh0UmVzcG9uc2UiIHR5cGU9InRuczpCcm93c2VOZXh0UmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNv -bXBsZXhUeXBlIG5hbWU9IlJlbGF0aXZlUGF0aEVsZW1lbnQiPg0KICAgIDx4czpzZXF1ZW5jZT4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlZmVyZW5jZVR5cGVJZCIgdHlwZT0idWE6Tm9kZUlk -IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt -ZT0iSXNJbnZlcnNlIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJJbmNsdWRlU3VidHlwZXMiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9j -Y3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRhcmdldE5hbWUiIHR5cGU9InVh -OlF1YWxpZmllZE5hbWUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94 -czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVs -YXRpdmVQYXRoRWxlbWVudCIgdHlwZT0idG5zOlJlbGF0aXZlUGF0aEVsZW1lbnQiIC8+DQoNCiAg -PHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlJlbGF0aXZlUGF0aEVsZW1lbnQiPg0KICAgIDx4 -czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlbGF0aXZlUGF0aEVsZW1lbnQi -IHR5cGU9InRuczpSZWxhdGl2ZVBhdGhFbGVtZW50IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i -dW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz -OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZSZWxhdGl2ZVBhdGhFbGVt -ZW50IiB0eXBlPSJ0bnM6TGlzdE9mUmVsYXRpdmVQYXRoRWxlbWVudCIgbmlsbGFibGU9InRydWUi -PjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVsYXRpdmVQYXRoIj4N -CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbGVtZW50cyIgdHlw -ZT0idG5zOkxpc3RPZlJlbGF0aXZlUGF0aEVsZW1lbnQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 -InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz -OmVsZW1lbnQgbmFtZT0iUmVsYXRpdmVQYXRoIiB0eXBlPSJ0bnM6UmVsYXRpdmVQYXRoIiAvPg0K -DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJCcm93c2VQYXRoIj4NCiAgICA8eHM6c2VxdWVuY2U+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGFydGluZ05vZGUiIHR5cGU9InVhOk5vZGVJZCIg +Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJHZXRFbmRwb2ludHNSZXNwb25zZSIgdHlwZT0idG5zOkdl +dEVuZHBvaW50c1Jlc3BvbnNlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWdpc3Rl +cmVkU2VydmVyIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJT +ZXJ2ZXJVcmkiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg +Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlByb2R1Y3RVcmkiIHR5cGU9InhzOnN0cmluZyIg bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IlJlbGF0aXZlUGF0aCIgdHlwZT0idG5zOlJlbGF0aXZlUGF0aCIgbWluT2NjdXJzPSIwIiBuaWxs -YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K -ICA8eHM6ZWxlbWVudCBuYW1lPSJCcm93c2VQYXRoIiB0eXBlPSJ0bnM6QnJvd3NlUGF0aCIgLz4N -Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQnJvd3NlUGF0aCI+DQogICAgPHhzOnNl -cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnJvd3NlUGF0aCIgdHlwZT0idG5zOkJy -b3dzZVBhdGgiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0 -cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl -bGVtZW50IG5hbWU9Ikxpc3RPZkJyb3dzZVBhdGgiIHR5cGU9InRuczpMaXN0T2ZCcm93c2VQYXRo -IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l -PSJCcm93c2VQYXRoVGFyZ2V0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJUYXJnZXRJZCIgdHlwZT0idWE6RXhwYW5kZWROb2RlSWQiIG1pbk9jY3Vycz0iMCIg -bmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZW1haW5pbmdQYXRo -SW5kZXgiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpz -ZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQnJvd3Nl -UGF0aFRhcmdldCIgdHlwZT0idG5zOkJyb3dzZVBhdGhUYXJnZXQiIC8+DQoNCiAgPHhzOmNvbXBs -ZXhUeXBlIG5hbWU9Ikxpc3RPZkJyb3dzZVBhdGhUYXJnZXQiPg0KICAgIDx4czpzZXF1ZW5jZT4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZVBhdGhUYXJnZXQiIHR5cGU9InRuczpCcm93 -c2VQYXRoVGFyZ2V0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJs -ZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8 -eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZCcm93c2VQYXRoVGFyZ2V0IiB0eXBlPSJ0bnM6TGlzdE9m -QnJvd3NlUGF0aFRhcmdldCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6 -Y29tcGxleFR5cGUgbmFtZT0iQnJvd3NlUGF0aFJlc3VsdCI+DQogICAgPHhzOnNlcXVlbmNlPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhdHVzQ29kZSIgdHlwZT0idWE6U3RhdHVzQ29kZSIg -bWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGFyZ2V0cyIgdHlwZT0i -dG5zOkxpc3RPZkJyb3dzZVBhdGhUYXJnZXQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi -IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l -bnQgbmFtZT0iQnJvd3NlUGF0aFJlc3VsdCIgdHlwZT0idG5zOkJyb3dzZVBhdGhSZXN1bHQiIC8+ -DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkJyb3dzZVBhdGhSZXN1bHQiPg0KICAg -IDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZVBhdGhSZXN1bHQi -IHR5cGU9InRuczpCcm93c2VQYXRoUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5i -b3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv -bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZCcm93c2VQYXRoUmVzdWx0IiB0 -eXBlPSJ0bnM6TGlzdE9mQnJvd3NlUGF0aFJlc3VsdCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxl -bWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVHJhbnNsYXRlQnJvd3NlUGF0aHNUb05v -ZGVJZHNSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZVBhdGhzIiB0 -eXBlPSJ0bnM6TGlzdE9mQnJvd3NlUGF0aCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu -dCBuYW1lPSJUcmFuc2xhdGVCcm93c2VQYXRoc1RvTm9kZUlkc1JlcXVlc3QiIHR5cGU9InRuczpU -cmFuc2xhdGVCcm93c2VQYXRoc1RvTm9kZUlkc1JlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhU -eXBlIG5hbWU9IlRyYW5zbGF0ZUJyb3dzZVBhdGhzVG9Ob2RlSWRzUmVzcG9uc2UiPg0KICAgIDx4 -czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBl -PSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog -ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ0bnM6TGlzdE9mQnJvd3NlUGF0 -aFJlc3VsdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8i +IlNlcnZlck5hbWVzIiB0eXBlPSJ1YTpMaXN0T2ZMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyVHlwZSIg +dHlwZT0idG5zOkFwcGxpY2F0aW9uVHlwZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iR2F0ZXdheVNlcnZlclVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9 +IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlzY292ZXJ5 +VXJscyIgdHlwZT0idWE6TGlzdE9mU3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl +IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VtYXBob3JlRmlsZVBhdGgiIHR5cGU9Inhz +OnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IklzT25saW5lIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQog +ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt +ZT0iUmVnaXN0ZXJlZFNlcnZlciIgdHlwZT0idG5zOlJlZ2lzdGVyZWRTZXJ2ZXIiIC8+DQoNCiAg +PHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlJlZ2lzdGVyZWRTZXJ2ZXIiPg0KICAgIDx4czpz +ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlZ2lzdGVyZWRTZXJ2ZXIiIHR5cGU9 +InRuczpSZWdpc3RlcmVkU2VydmVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVk +IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU +eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZSZWdpc3RlcmVkU2VydmVyIiB0eXBlPSJ0 +bnM6TGlzdE9mUmVnaXN0ZXJlZFNlcnZlciIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4N +Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVnaXN0ZXJTZXJ2ZXJSZXF1ZXN0Ij4NCiAgICA8 +eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBl +PSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlciIgdHlwZT0idG5zOlJlZ2lzdGVyZWRTZXJ2ZXIi IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg -PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNsYXRlQnJvd3NlUGF0 -aHNUb05vZGVJZHNSZXNwb25zZSIgdHlwZT0idG5zOlRyYW5zbGF0ZUJyb3dzZVBhdGhzVG9Ob2Rl -SWRzUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlZ2lzdGVyTm9kZXNS -ZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1 -ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJs -ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVzVG9SZWdpc3RlciIgdHlw -ZT0idWE6TGlzdE9mTm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg -IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 -IlJlZ2lzdGVyTm9kZXNSZXF1ZXN0IiB0eXBlPSJ0bnM6UmVnaXN0ZXJOb2Rlc1JlcXVlc3QiIC8+ -DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlZ2lzdGVyTm9kZXNSZXNwb25zZSI+DQogICAg -PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5 -cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlZ2lzdGVyZWROb2RlSWRzIiB0eXBlPSJ1YTpMaXN0 -T2ZOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1 -ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVnaXN0ZXJO -b2Rlc1Jlc3BvbnNlIiB0eXBlPSJ0bnM6UmVnaXN0ZXJOb2Rlc1Jlc3BvbnNlIiAvPg0KDQogIDx4 -czpjb21wbGV4VHlwZSBuYW1lPSJVbnJlZ2lzdGVyTm9kZXNSZXF1ZXN0Ij4NCiAgICA8eHM6c2Vx -dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6 -UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9Ik5vZGVzVG9VbnJlZ2lzdGVyIiB0eXBlPSJ1YTpMaXN0T2ZOb2RlSWQi +PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVnaXN0ZXJTZXJ2ZXJSZXF1 +ZXN0IiB0eXBlPSJ0bnM6UmVnaXN0ZXJTZXJ2ZXJSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4 +VHlwZSBuYW1lPSJSZWdpc3RlclNlcnZlclJlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNl +SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVu +Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlZ2lzdGVyU2Vy +dmVyUmVzcG9uc2UiIHR5cGU9InRuczpSZWdpc3RlclNlcnZlclJlc3BvbnNlIiAvPg0KDQogIDx4 +czpjb21wbGV4VHlwZSBuYW1lPSJEaXNjb3ZlcnlDb25maWd1cmF0aW9uIj4NCiAgICA8eHM6c2Vx +dWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs +ZW1lbnQgbmFtZT0iRGlzY292ZXJ5Q29uZmlndXJhdGlvbiIgdHlwZT0idG5zOkRpc2NvdmVyeUNv +bmZpZ3VyYXRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1kbnNEaXNjb3ZlcnlD +b25maWd1cmF0aW9uIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAg +ICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkRpc2NvdmVyeUNvbmZpZ3VyYXRpb24iPg0KICAg +ICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWRuc1NlcnZl +ck5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N +CiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJDYXBhYmlsaXRpZXMiIHR5cGU9InVh +Okxpc3RPZlN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAg +PC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENv +bnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik1kbnNEaXNj +b3ZlcnlDb25maWd1cmF0aW9uIiB0eXBlPSJ0bnM6TWRuc0Rpc2NvdmVyeUNvbmZpZ3VyYXRpb24i +IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlZ2lzdGVyU2VydmVyMlJlcXVlc3QiPg0K +ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIi +IHR5cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyIiB0eXBlPSJ0bnM6UmVnaXN0ZXJlZFNl +cnZlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9IkRpc2NvdmVyeUNvbmZpZ3VyYXRpb24iIHR5cGU9InVhOkxpc3RPZkV4dGVuc2lvbk9i +amVjdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNl +Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZWdpc3RlclNlcnZl +cjJSZXF1ZXN0IiB0eXBlPSJ0bnM6UmVnaXN0ZXJTZXJ2ZXIyUmVxdWVzdCIgLz4NCg0KICA8eHM6 +Y29tcGxleFR5cGUgbmFtZT0iUmVnaXN0ZXJTZXJ2ZXIyUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1 +ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6 +UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJDb25maWd1cmF0aW9uUmVzdWx0cyIgdHlwZT0idWE6TGlzdE9mU3Rh +dHVzQ29kZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8i IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg -PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVW5yZWdpc3Rlck5vZGVzUmVx -dWVzdCIgdHlwZT0idG5zOlVucmVnaXN0ZXJOb2Rlc1JlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBs -ZXhUeXBlIG5hbWU9IlVucmVnaXN0ZXJOb2Rlc1Jlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+ +PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVnaXN0ZXJTZXJ2ZXIyUmVz +cG9uc2UiIHR5cGU9InRuczpSZWdpc3RlclNlcnZlcjJSZXNwb25zZSIgLz4NCg0KICA8eHM6c2lt +cGxlVHlwZSAgbmFtZT0iU2VjdXJpdHlUb2tlblJlcXVlc3RUeXBlIj4NCiAgICA8eHM6cmVzdHJp +Y3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSXNz +dWVfMCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUmVuZXdfMSIgLz4NCiAgICA8 +L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 +IlNlY3VyaXR5VG9rZW5SZXF1ZXN0VHlwZSIgdHlwZT0idG5zOlNlY3VyaXR5VG9rZW5SZXF1ZXN0 +VHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ2hhbm5lbFNlY3VyaXR5VG9rZW4i +Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNoYW5uZWxJZCIg +dHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9IlRva2VuSWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDcmVhdGVkQXQiIHR5cGU9InhzOmRhdGVUaW1lIiBtaW5P +Y2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXZpc2VkTGlmZXRpbWUiIHR5 +cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4N +CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQ2hhbm5lbFNlY3VyaXR5 +VG9rZW4iIHR5cGU9InRuczpDaGFubmVsU2VjdXJpdHlUb2tlbiIgLz4NCg0KICA8eHM6Y29tcGxl +eFR5cGUgbmFtZT0iT3BlblNlY3VyZUNoYW5uZWxSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVz +dEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IkNsaWVudFByb3RvY29sVmVyc2lvbiIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1p +bk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RUeXBlIiB0eXBl +PSJ0bnM6U2VjdXJpdHlUb2tlblJlcXVlc3RUeXBlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0eU1vZGUiIHR5cGU9InRuczpNZXNzYWdlU2VjdXJpdHlN +b2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDbGllbnROb25j +ZSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdGVkTGlmZXRpbWUiIHR5cGU9InhzOnVu +c2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpj +b21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iT3BlblNlY3VyZUNoYW5uZWxSZXF1ZXN0 +IiB0eXBlPSJ0bnM6T3BlblNlY3VyZUNoYW5uZWxSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4 +VHlwZSBuYW1lPSJPcGVuU2VjdXJlQ2hhbm5lbFJlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+ DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3Bv -bnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2Vx -dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlVucmVnaXN0 -ZXJOb2Rlc1Jlc3BvbnNlIiB0eXBlPSJ0bnM6VW5yZWdpc3Rlck5vZGVzUmVzcG9uc2UiIC8+DQoN -CiAgPHhzOmVsZW1lbnQgbmFtZT0iQ291bnRlciIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIC8+DQoN -CiAgPHhzOmVsZW1lbnQgbmFtZT0iTnVtZXJpY1JhbmdlIiB0eXBlPSJ4czpzdHJpbmciIC8+DQoN -CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkVuZHBvaW50Q29uZmlndXJhdGlvbiI+DQogICAgPHhz -OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iT3BlcmF0aW9uVGltZW91dCIgdHlw -ZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVc2VC -aW5hcnlFbmNvZGluZyIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iTWF4U3RyaW5nTGVuZ3RoIiB0eXBlPSJ4czppbnQiIG1pbk9jY3Vy -cz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1heEJ5dGVTdHJpbmdMZW5ndGgiIHR5 -cGU9InhzOmludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF4 -QXJyYXlMZW5ndGgiIHR5cGU9InhzOmludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iTWF4TWVzc2FnZVNpemUiIHR5cGU9InhzOmludCIgbWluT2NjdXJzPSIwIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF4QnVmZmVyU2l6ZSIgdHlwZT0ieHM6aW50IiBt -aW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDaGFubmVsTGlmZXRpbWUi -IHR5cGU9InhzOmludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i -U2VjdXJpdHlUb2tlbkxpZmV0aW1lIiB0eXBlPSJ4czppbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAg -ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l -PSJFbmRwb2ludENvbmZpZ3VyYXRpb24iIHR5cGU9InRuczpFbmRwb2ludENvbmZpZ3VyYXRpb24i -IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkVuZHBvaW50Q29uZmlndXJhdGlv -biI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5kcG9pbnRD -b25maWd1cmF0aW9uIiB0eXBlPSJ0bnM6RW5kcG9pbnRDb25maWd1cmF0aW9uIiBtaW5PY2N1cnM9 -IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl -cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZF -bmRwb2ludENvbmZpZ3VyYXRpb24iIHR5cGU9InRuczpMaXN0T2ZFbmRwb2ludENvbmZpZ3VyYXRp -b24iIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h -bWU9IlF1ZXJ5RGF0YURlc2NyaXB0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJSZWxhdGl2ZVBhdGgiIHR5cGU9InRuczpSZWxhdGl2ZVBhdGgiIG1pbk9j -Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBdHRy -aWJ1dGVJZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9IkluZGV4UmFuZ2UiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIw -IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU -eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJRdWVyeURhdGFEZXNjcmlwdGlvbiIgdHlwZT0idG5z -OlF1ZXJ5RGF0YURlc2NyaXB0aW9uIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0 -T2ZRdWVyeURhdGFEZXNjcmlwdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iUXVlcnlEYXRhRGVzY3JpcHRpb24iIHR5cGU9InRuczpRdWVyeURhdGFEZXNj -cmlwdGlvbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRy -dWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs -ZW1lbnQgbmFtZT0iTGlzdE9mUXVlcnlEYXRhRGVzY3JpcHRpb24iIHR5cGU9InRuczpMaXN0T2ZR -dWVyeURhdGFEZXNjcmlwdGlvbiIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8 -eHM6Y29tcGxleFR5cGUgbmFtZT0iTm9kZVR5cGVEZXNjcmlwdGlvbiI+DQogICAgPHhzOnNlcXVl -bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHlwZURlZmluaXRpb25Ob2RlIiB0eXBlPSJ1 -YTpFeHBhbmRlZE5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IkluY2x1ZGVTdWJUeXBlcyIgdHlwZT0ieHM6Ym9vbGVhbiIgbWlu -T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVRvUmV0dXJuIiB0eXBl -PSJ0bnM6TGlzdE9mUXVlcnlEYXRhRGVzY3JpcHRpb24iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 -InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz -OmVsZW1lbnQgbmFtZT0iTm9kZVR5cGVEZXNjcmlwdGlvbiIgdHlwZT0idG5zOk5vZGVUeXBlRGVz -Y3JpcHRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZk5vZGVUeXBlRGVz -Y3JpcHRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5v -ZGVUeXBlRGVzY3JpcHRpb24iIHR5cGU9InRuczpOb2RlVHlwZURlc2NyaXB0aW9uIiBtaW5PY2N1 -cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz -OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0 -T2ZOb2RlVHlwZURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6TGlzdE9mTm9kZVR5cGVEZXNjcmlwdGlv -biIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFt -ZT0iRmlsdGVyT3BlcmF0b3IiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmci -Pg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJFcXVhbHNfMCIgLz4NCiAgICAgIDx4czpl -bnVtZXJhdGlvbiB2YWx1ZT0iSXNOdWxsXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFs -dWU9IkdyZWF0ZXJUaGFuXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ikxlc3NU -aGFuXzMiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkdyZWF0ZXJUaGFuT3JFcXVh -bF80IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJMZXNzVGhhbk9yRXF1YWxfNSIg -Lz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTGlrZV82IiAvPg0KICAgICAgPHhzOmVu -dW1lcmF0aW9uIHZhbHVlPSJOb3RfNyIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0i -QmV0d2Vlbl84IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJbkxpc3RfOSIgLz4N -CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQW5kXzEwIiAvPg0KICAgICAgPHhzOmVudW1l -cmF0aW9uIHZhbHVlPSJPcl8xMSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ2Fz -dF8xMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSW5WaWV3XzEzIiAvPg0KICAg -ICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJPZlR5cGVfMTQiIC8+DQogICAgICA8eHM6ZW51bWVy -YXRpb24gdmFsdWU9IlJlbGF0ZWRUb18xNSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1 -ZT0iQml0d2lzZUFuZF8xNiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQml0d2lz -ZU9yXzE3IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAg -PHhzOmVsZW1lbnQgbmFtZT0iRmlsdGVyT3BlcmF0b3IiIHR5cGU9InRuczpGaWx0ZXJPcGVyYXRv -ciIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUXVlcnlEYXRhU2V0Ij4NCiAgICA8eHM6 -c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOb2RlSWQiIHR5cGU9InVhOkV4cGFu -ZGVkTm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iVHlwZURlZmluaXRpb25Ob2RlIiB0eXBlPSJ1YTpFeHBhbmRlZE5vZGVJZCIg -bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IlZhbHVlcyIgdHlwZT0idWE6TGlzdE9mVmFyaWFudCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i -dHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6 -ZWxlbWVudCBuYW1lPSJRdWVyeURhdGFTZXQiIHR5cGU9InRuczpRdWVyeURhdGFTZXQiIC8+DQoN -CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlF1ZXJ5RGF0YVNldCI+DQogICAgPHhzOnNl -cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUXVlcnlEYXRhU2V0IiB0eXBlPSJ0bnM6 -UXVlcnlEYXRhU2V0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJs -ZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8 -eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZRdWVyeURhdGFTZXQiIHR5cGU9InRuczpMaXN0T2ZRdWVy -eURhdGFTZXQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhU -eXBlIG5hbWU9Ik5vZGVSZWZlcmVuY2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl -bGVtZW50IG5hbWU9Ik5vZGVJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxh -YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlVHlwZUlkIiB0 -eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJJc0ZvcndhcmQiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0i -MCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlZmVyZW5jZWROb2RlSWRzIiB0eXBlPSJ1 -YTpMaXN0T2ZOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94 -czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTm9k -ZVJlZmVyZW5jZSIgdHlwZT0idG5zOk5vZGVSZWZlcmVuY2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhU -eXBlIG5hbWU9Ikxpc3RPZk5vZGVSZWZlcmVuY2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9Ik5vZGVSZWZlcmVuY2UiIHR5cGU9InRuczpOb2RlUmVmZXJlbmNl -IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu -YW1lPSJMaXN0T2ZOb2RlUmVmZXJlbmNlIiB0eXBlPSJ0bnM6TGlzdE9mTm9kZVJlZmVyZW5jZSIg -bmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i -Q29udGVudEZpbHRlckVsZW1lbnQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IkZpbHRlck9wZXJhdG9yIiB0eXBlPSJ0bnM6RmlsdGVyT3BlcmF0b3IiIG1pbk9j -Y3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkZpbHRlck9wZXJhbmRzIiB0eXBl -PSJ1YTpMaXN0T2ZFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi +bnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iU2VydmVyUHJvdG9jb2xWZXJzaW9uIiB0eXBlPSJ4czp1bnNpZ25lZEludCIg +bWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VjdXJpdHlUb2tlbiIg +dHlwZT0idG5zOkNoYW5uZWxTZWN1cml0eVRva2VuIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0 +cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyTm9uY2UiIHR5cGU9InhzOmJh +c2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl +cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJPcGVuU2Vj +dXJlQ2hhbm5lbFJlc3BvbnNlIiB0eXBlPSJ0bnM6T3BlblNlY3VyZUNoYW5uZWxSZXNwb25zZSIg +Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ2xvc2VTZWN1cmVDaGFubmVsUmVxdWVzdCI+ +DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRl +ciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l -bnQgbmFtZT0iQ29udGVudEZpbHRlckVsZW1lbnQiIHR5cGU9InRuczpDb250ZW50RmlsdGVyRWxl -bWVudCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQ29udGVudEZpbHRlckVs -ZW1lbnQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNvbnRl -bnRGaWx0ZXJFbGVtZW50IiB0eXBlPSJ0bnM6Q29udGVudEZpbHRlckVsZW1lbnQiIG1pbk9jY3Vy -cz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6 -c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RP -ZkNvbnRlbnRGaWx0ZXJFbGVtZW50IiB0eXBlPSJ0bnM6TGlzdE9mQ29udGVudEZpbHRlckVsZW1l -bnQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h -bWU9IkNvbnRlbnRGaWx0ZXIiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50 -IG5hbWU9IkVsZW1lbnRzIiB0eXBlPSJ0bnM6TGlzdE9mQ29udGVudEZpbHRlckVsZW1lbnQiIG1p -bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94 -czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQ29udGVudEZpbHRlciIgdHlwZT0i -dG5zOkNvbnRlbnRGaWx0ZXIiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkNv -bnRlbnRGaWx0ZXIiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IkNvbnRlbnRGaWx0ZXIiIHR5cGU9InRuczpDb250ZW50RmlsdGVyIiBtaW5PY2N1cnM9IjAiIG1h -eE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNl -Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZDb250ZW50 -RmlsdGVyIiB0eXBlPSJ0bnM6TGlzdE9mQ29udGVudEZpbHRlciIgbmlsbGFibGU9InRydWUiPjwv -eHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRmlsdGVyT3BlcmFuZCI+DQog -ICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+ -DQogIDx4czplbGVtZW50IG5hbWU9IkZpbHRlck9wZXJhbmQiIHR5cGU9InRuczpGaWx0ZXJPcGVy -YW5kIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJFbGVtZW50T3BlcmFuZCI+DQogICAg +bnQgbmFtZT0iQ2xvc2VTZWN1cmVDaGFubmVsUmVxdWVzdCIgdHlwZT0idG5zOkNsb3NlU2VjdXJl +Q2hhbm5lbFJlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNsb3NlU2VjdXJl +Q2hhbm5lbFJlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9 +IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl +eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkNsb3NlU2VjdXJlQ2hhbm5lbFJlc3BvbnNlIiB0 +eXBlPSJ0bnM6Q2xvc2VTZWN1cmVDaGFubmVsUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhU +eXBlIG5hbWU9IlNpZ25lZFNvZnR3YXJlQ2VydGlmaWNhdGUiPg0KICAgIDx4czpzZXF1ZW5jZT4N +CiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNlcnRpZmljYXRlRGF0YSIgdHlwZT0ieHM6YmFzZTY0 +QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iU2lnbmF0dXJlIiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0iMCIg +bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw +ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iU2lnbmVkU29mdHdhcmVDZXJ0aWZpY2F0ZSIgdHlwZT0i +dG5zOlNpZ25lZFNvZnR3YXJlQ2VydGlmaWNhdGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h +bWU9Ikxpc3RPZlNpZ25lZFNvZnR3YXJlQ2VydGlmaWNhdGUiPg0KICAgIDx4czpzZXF1ZW5jZT4N +CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNpZ25lZFNvZnR3YXJlQ2VydGlmaWNhdGUiIHR5cGU9 +InRuczpTaWduZWRTb2Z0d2FyZUNlcnRpZmljYXRlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i +dW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz +OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZTaWduZWRTb2Z0d2FyZUNl +cnRpZmljYXRlIiB0eXBlPSJ0bnM6TGlzdE9mU2lnbmVkU29mdHdhcmVDZXJ0aWZpY2F0ZSIgbmls +bGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTZXNzaW9u +QXV0aGVudGljYXRpb25Ub2tlbiIgdHlwZT0idWE6Tm9kZUlkIiAvPg0KDQogIDx4czpjb21wbGV4 +VHlwZSBuYW1lPSJTaWduYXR1cmVEYXRhIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJBbGdvcml0aG0iIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBu +aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNpZ25hdHVyZSIgdHlw +ZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 +IlNpZ25hdHVyZURhdGEiIHR5cGU9InRuczpTaWduYXR1cmVEYXRhIiAvPg0KDQogIDx4czpjb21w +bGV4VHlwZSBuYW1lPSJDcmVhdGVTZXNzaW9uUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0K +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RI +ZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJDbGllbnREZXNjcmlwdGlvbiIgdHlwZT0idG5zOkFwcGxpY2F0aW9uRGVzY3JpcHRp +b24iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJTZXJ2ZXJVcmkiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i +dHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVuZHBvaW50VXJsIiB0eXBlPSJ4czpz +dHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJTZXNzaW9uTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ2xpZW50Tm9uY2UiIHR5cGU9 +InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg +IDx4czplbGVtZW50IG5hbWU9IkNsaWVudENlcnRpZmljYXRlIiB0eXBlPSJ4czpiYXNlNjRCaW5h +cnkiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJSZXF1ZXN0ZWRTZXNzaW9uVGltZW91dCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9 +IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYXhSZXNwb25zZU1lc3NhZ2VTaXplIiB0 +eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+ +DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkNyZWF0ZVNlc3Npb25S +ZXF1ZXN0IiB0eXBlPSJ0bnM6Q3JlYXRlU2Vzc2lvblJlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBs +ZXhUeXBlIG5hbWU9IkNyZWF0ZVNlc3Npb25SZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0K +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25z +ZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IlNlc3Npb25JZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXV0aGVudGljYXRpb25Ub2tl +biIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iUmV2aXNlZFNlc3Npb25UaW1lb3V0IiB0eXBlPSJ4czpkb3Vi +bGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlck5vbmNl +IiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJDZXJ0aWZpY2F0ZSIgdHlwZT0ieHM6YmFz +ZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iU2VydmVyRW5kcG9pbnRzIiB0eXBlPSJ0bnM6TGlzdE9mRW5kcG9pbnREZXNj +cmlwdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IlNlcnZlclNvZnR3YXJlQ2VydGlmaWNhdGVzIiB0eXBlPSJ0bnM6TGlzdE9mU2ln +bmVkU29mdHdhcmVDZXJ0aWZpY2F0ZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N +CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlclNpZ25hdHVyZSIgdHlwZT0idG5zOlNpZ25h +dHVyZURhdGEiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl +bWVudCBuYW1lPSJNYXhSZXF1ZXN0TWVzc2FnZVNpemUiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBt +aW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N +CiAgPHhzOmVsZW1lbnQgbmFtZT0iQ3JlYXRlU2Vzc2lvblJlc3BvbnNlIiB0eXBlPSJ0bnM6Q3Jl +YXRlU2Vzc2lvblJlc3BvbnNlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJVc2VySWRl +bnRpdHlUb2tlbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +UG9saWN5SWQiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg +Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu +dCBuYW1lPSJVc2VySWRlbnRpdHlUb2tlbiIgdHlwZT0idG5zOlVzZXJJZGVudGl0eVRva2VuIiAv +Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJBbm9ueW1vdXNJZGVudGl0eVRva2VuIj4NCiAg +ICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24g +YmFzZT0idG5zOlVzZXJJZGVudGl0eVRva2VuIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAg +ICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21w +bGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQW5v +bnltb3VzSWRlbnRpdHlUb2tlbiIgdHlwZT0idG5zOkFub255bW91c0lkZW50aXR5VG9rZW4iIC8+ +DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlVzZXJOYW1lSWRlbnRpdHlUb2tlbiI+DQogICAg PHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJh -c2U9InRuczpGaWx0ZXJPcGVyYW5kIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAg -IDx4czplbGVtZW50IG5hbWU9IkluZGV4IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJz -PSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQog -ICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l -bnQgbmFtZT0iRWxlbWVudE9wZXJhbmQiIHR5cGU9InRuczpFbGVtZW50T3BlcmFuZCIgLz4NCg0K -ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGl0ZXJhbE9wZXJhbmQiPg0KICAgIDx4czpjb21wbGV4 -Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6Rmls -dGVyT3BlcmFuZCI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJWYWx1ZSIgdHlwZT0idWE6VmFyaWFudCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg +c2U9InRuczpVc2VySWRlbnRpdHlUb2tlbiI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVc2VyTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1 +cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlBh +c3N3b3JkIiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy +dWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5jcnlwdGlvbkFsZ29yaXRobSIg +dHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg ICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4 -Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGl0ZXJh -bE9wZXJhbmQiIHR5cGU9InRuczpMaXRlcmFsT3BlcmFuZCIgLz4NCg0KICA8eHM6Y29tcGxleFR5 -cGUgbmFtZT0iQXR0cmlidXRlT3BlcmFuZCI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVk -PSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpGaWx0ZXJPcGVyYW5kIj4N -CiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVJ -ZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg -ICAgICAgIDx4czplbGVtZW50IG5hbWU9IkFsaWFzIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vy -cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnJv -d3NlUGF0aCIgdHlwZT0idG5zOlJlbGF0aXZlUGF0aCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i -dHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBdHRyaWJ1dGVJZCIgdHlwZT0i -eHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJJbmRleFJhbmdlIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 -InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4N -CiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl -bWVudCBuYW1lPSJBdHRyaWJ1dGVPcGVyYW5kIiB0eXBlPSJ0bnM6QXR0cmlidXRlT3BlcmFuZCIg -Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2ltcGxlQXR0cmlidXRlT3BlcmFuZCI+DQog -ICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9u -IGJhc2U9InRuczpGaWx0ZXJPcGVyYW5kIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAg -ICAgIDx4czplbGVtZW50IG5hbWU9IlR5cGVEZWZpbml0aW9uSWQiIHR5cGU9InVhOk5vZGVJZCIg -bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJCcm93c2VQYXRoIiB0eXBlPSJ1YTpMaXN0T2ZRdWFsaWZpZWROYW1lIiBtaW5PY2N1cnM9 -IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkF0dHJp -YnV0ZUlkIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAg -IDx4czplbGVtZW50IG5hbWU9IkluZGV4UmFuZ2UiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJz -PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwv -eHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5 -cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlNpbXBsZUF0dHJpYnV0ZU9wZXJhbmQiIHR5cGU9InRu -czpTaW1wbGVBdHRyaWJ1dGVPcGVyYW5kIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJM -aXN0T2ZTaW1wbGVBdHRyaWJ1dGVPcGVyYW5kIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJTaW1wbGVBdHRyaWJ1dGVPcGVyYW5kIiB0eXBlPSJ0bnM6U2ltcGxl -QXR0cmlidXRlT3BlcmFuZCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmls -bGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N -CiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mU2ltcGxlQXR0cmlidXRlT3BlcmFuZCIgdHlwZT0i -dG5zOkxpc3RPZlNpbXBsZUF0dHJpYnV0ZU9wZXJhbmQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVs -ZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNvbnRlbnRGaWx0ZXJFbGVtZW50UmVz +Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlck5h +bWVJZGVudGl0eVRva2VuIiB0eXBlPSJ0bnM6VXNlck5hbWVJZGVudGl0eVRva2VuIiAvPg0KDQog +IDx4czpjb21wbGV4VHlwZSBuYW1lPSJYNTA5SWRlbnRpdHlUb2tlbiI+DQogICAgPHhzOmNvbXBs +ZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpV +c2VySWRlbnRpdHlUb2tlbiI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJDZXJ0aWZpY2F0ZURhdGEiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAg +ICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29t +cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ilg1MDlJZGVudGl0eVRva2VuIiB0eXBlPSJ0 +bnM6WDUwOUlkZW50aXR5VG9rZW4iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Iklzc3Vl +ZElkZW50aXR5VG9rZW4iPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0K +ICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6VXNlcklkZW50aXR5VG9rZW4iPg0KICAgICAg +ICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVG9rZW5EYXRhIiB0 +eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog +ICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5jcnlwdGlvbkFsZ29yaXRobSIgdHlwZT0ieHM6 +c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNl +cXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4N +CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSXNzdWVkSWRlbnRpdHlU +b2tlbiIgdHlwZT0idG5zOklzc3VlZElkZW50aXR5VG9rZW4iIC8+DQoNCiAgPHhzOmVsZW1lbnQg +bmFtZT0iUnNhRW5jcnlwdGVkU2VjcmV0IiB0eXBlPSJ1YTpWYXJpYW50IiAvPg0KDQogIDx4czpl +bGVtZW50IG5hbWU9IkVjY0VuY3J5cHRlZFNlY3JldCIgdHlwZT0idWE6VmFyaWFudCIgLz4NCg0K +ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQWN0aXZhdGVTZXNzaW9uUmVxdWVzdCI+DQogICAgPHhz +OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0i +dG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJDbGllbnRTaWduYXR1cmUiIHR5cGU9InRuczpTaWduYXR1cmVE +YXRhIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iQ2xpZW50U29mdHdhcmVDZXJ0aWZpY2F0ZXMiIHR5cGU9InRuczpMaXN0T2ZTaWduZWRT +b2Z0d2FyZUNlcnRpZmljYXRlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iTG9jYWxlSWRzIiB0eXBlPSJ1YTpMaXN0T2ZTdHJpbmciIG1p +bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJV +c2VySWRlbnRpdHlUb2tlbiIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlclRva2VuU2ln +bmF0dXJlIiB0eXBlPSJ0bnM6U2lnbmF0dXJlRGF0YSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i +dHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6 +ZWxlbWVudCBuYW1lPSJBY3RpdmF0ZVNlc3Npb25SZXF1ZXN0IiB0eXBlPSJ0bnM6QWN0aXZhdGVT +ZXNzaW9uUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQWN0aXZhdGVTZXNz +aW9uUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 +IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIg +bmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJOb25jZSIg +dHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzdWx0cyIgdHlwZT0idWE6TGlzdE9mU3RhdHVzQ29k +ZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h +bWU9IkRpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9j +Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpj +b21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQWN0aXZhdGVTZXNzaW9uUmVzcG9uc2Ui +IHR5cGU9InRuczpBY3RpdmF0ZVNlc3Npb25SZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5 +cGUgbmFtZT0iQ2xvc2VTZXNzaW9uUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIi +IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l +PSJEZWxldGVTdWJzY3JpcHRpb25zIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+ +DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg +bmFtZT0iQ2xvc2VTZXNzaW9uUmVxdWVzdCIgdHlwZT0idG5zOkNsb3NlU2Vzc2lvblJlcXVlc3Qi +IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNsb3NlU2Vzc2lvblJlc3BvbnNlIj4NCiAg +ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIg +dHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv +Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50 +IG5hbWU9IkNsb3NlU2Vzc2lvblJlc3BvbnNlIiB0eXBlPSJ0bnM6Q2xvc2VTZXNzaW9uUmVzcG9u +c2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNhbmNlbFJlcXVlc3QiPg0KICAgIDx4 +czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9 +InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhhbmRsZSIgdHlwZT0ieHM6dW5zaWduZWRJbnQi +IG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl +Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJDYW5jZWxSZXF1ZXN0IiB0eXBlPSJ0bnM6Q2FuY2VsUmVx +dWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ2FuY2VsUmVzcG9uc2UiPg0KICAg +IDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0 +eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDYW5jZWxDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJ +bnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU +eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJDYW5jZWxSZXNwb25zZSIgdHlwZT0idG5zOkNhbmNl +bFJlc3BvbnNlIiAvPg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJOb2RlQXR0cmlidXRlc01h +c2siPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVu +dW1lcmF0aW9uIHZhbHVlPSJOb25lXzAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9 +IkFjY2Vzc0xldmVsXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkFycmF5RGlt +ZW5zaW9uc18yIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJCcm93c2VOYW1lXzQi +IC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkNvbnRhaW5zTm9Mb29wc184IiAvPg0K +ICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEYXRhVHlwZV8xNiIgLz4NCiAgICAgIDx4czpl +bnVtZXJhdGlvbiB2YWx1ZT0iRGVzY3JpcHRpb25fMzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRp +b24gdmFsdWU9IkRpc3BsYXlOYW1lXzY0IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVl +PSJFdmVudE5vdGlmaWVyXzEyOCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRXhl +Y3V0YWJsZV8yNTYiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ikhpc3Rvcml6aW5n +XzUxMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSW52ZXJzZU5hbWVfMTAyNCIg +Lz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSXNBYnN0cmFjdF8yMDQ4IiAvPg0KICAg +ICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJNaW5pbXVtU2FtcGxpbmdJbnRlcnZhbF80MDk2IiAv +Pg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJOb2RlQ2xhc3NfODE5MiIgLz4NCiAgICAg +IDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm9kZUlkXzE2Mzg0IiAvPg0KICAgICAgPHhzOmVudW1l +cmF0aW9uIHZhbHVlPSJTeW1tZXRyaWNfMzI3NjgiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24g +dmFsdWU9IlVzZXJBY2Nlc3NMZXZlbF82NTUzNiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2 +YWx1ZT0iVXNlckV4ZWN1dGFibGVfMTMxMDcyIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZh +bHVlPSJVc2VyV3JpdGVNYXNrXzI2MjE0NCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1 +ZT0iVmFsdWVSYW5rXzUyNDI4OCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iV3Jp +dGVNYXNrXzEwNDg1NzYiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlZhbHVlXzIw +OTcxNTIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRhdGFUeXBlRGVmaW5pdGlv +bl80MTk0MzA0IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJSb2xlUGVybWlzc2lv +bnNfODM4ODYwOCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQWNjZXNzUmVzdHJp +Y3Rpb25zXzE2Nzc3MjE2IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJBbGxfMzM1 +NTQ0MzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkJhc2VOb2RlXzI2NTAxMjIw +IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJPYmplY3RfMjY1MDEzNDgiIC8+DQog +ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik9iamVjdFR5cGVfMjY1MDMyNjgiIC8+DQogICAg +ICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlZhcmlhYmxlXzI2NTcxMzgzIiAvPg0KICAgICAgPHhz +OmVudW1lcmF0aW9uIHZhbHVlPSJWYXJpYWJsZVR5cGVfMjg2MDA0MzgiIC8+DQogICAgICA8eHM6 +ZW51bWVyYXRpb24gdmFsdWU9Ik1ldGhvZF8yNjYzMjU0OCIgLz4NCiAgICAgIDx4czplbnVtZXJh +dGlvbiB2YWx1ZT0iUmVmZXJlbmNlVHlwZV8yNjUzNzA2MCIgLz4NCiAgICAgIDx4czplbnVtZXJh +dGlvbiB2YWx1ZT0iVmlld18yNjUwMTM1NiIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8 +L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik5vZGVBdHRyaWJ1dGVzTWFzayIg +dHlwZT0idG5zOk5vZGVBdHRyaWJ1dGVzTWFzayIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt +ZT0iTm9kZUF0dHJpYnV0ZXMiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9IlNwZWNpZmllZEF0dHJpYnV0ZXMiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1 +cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaXNwbGF5TmFtZSIgdHlwZT0idWE6 +TG9jYWxpemVkVGV4dCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4 +czplbGVtZW50IG5hbWU9IkRlc2NyaXB0aW9uIiB0eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5P +Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iV3Jp +dGVNYXNrIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iVXNlcldyaXRlTWFzayIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9j +Y3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8 +eHM6ZWxlbWVudCBuYW1lPSJOb2RlQXR0cmlidXRlcyIgdHlwZT0idG5zOk5vZGVBdHRyaWJ1dGVz +IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJPYmplY3RBdHRyaWJ1dGVzIj4NCiAgICA8 +eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFz +ZT0idG5zOk5vZGVBdHRyaWJ1dGVzIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAg +IDx4czplbGVtZW50IG5hbWU9IkV2ZW50Tm90aWZpZXIiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIg +bWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRl +bnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg +PHhzOmVsZW1lbnQgbmFtZT0iT2JqZWN0QXR0cmlidXRlcyIgdHlwZT0idG5zOk9iamVjdEF0dHJp +YnV0ZXMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlZhcmlhYmxlQXR0cmlidXRlcyI+ +DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5z +aW9uIGJhc2U9InRuczpOb2RlQXR0cmlidXRlcyI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAg +ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1ZSIgdHlwZT0idWE6VmFyaWFudCIgbWluT2Nj +dXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFUeXBlIiB0eXBlPSJ1 +YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iVmFsdWVSYW5rIiB0eXBlPSJ4czppbnQiIG1pbk9jY3Vycz0iMCIgLz4N +CiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBcnJheURpbWVuc2lvbnMiIHR5cGU9InVhOkxp +c3RPZlVJbnQzMiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJBY2Nlc3NMZXZlbCIgdHlwZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5P +Y2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlckFjY2Vzc0xldmVs +IiB0eXBlPSJ4czp1bnNpZ25lZEJ5dGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJNaW5pbXVtU2FtcGxpbmdJbnRlcnZhbCIgdHlwZT0ieHM6ZG91YmxlIiBt +aW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yaXppbmci +IHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5j +ZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwv +eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlZhcmlhYmxlQXR0cmlidXRlcyIg +dHlwZT0idG5zOlZhcmlhYmxlQXR0cmlidXRlcyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt +ZT0iTWV0aG9kQXR0cmlidXRlcyI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxz +ZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpOb2RlQXR0cmlidXRlcyI+DQogICAg +ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFeGVjdXRhYmxl +IiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iVXNlckV4ZWN1dGFibGUiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIg +Lz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwv +eHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h +bWU9Ik1ldGhvZEF0dHJpYnV0ZXMiIHR5cGU9InRuczpNZXRob2RBdHRyaWJ1dGVzIiAvPg0KDQog +IDx4czpjb21wbGV4VHlwZSBuYW1lPSJPYmplY3RUeXBlQXR0cmlidXRlcyI+DQogICAgPHhzOmNv +bXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRu +czpOb2RlQXR0cmlidXRlcyI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJJc0Fic3RyYWN0IiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAi +IC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8 +L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu +YW1lPSJPYmplY3RUeXBlQXR0cmlidXRlcyIgdHlwZT0idG5zOk9iamVjdFR5cGVBdHRyaWJ1dGVz +IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJWYXJpYWJsZVR5cGVBdHRyaWJ1dGVzIj4N +CiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNp +b24gYmFzZT0idG5zOk5vZGVBdHRyaWJ1dGVzIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAg +ICAgICAgIDx4czplbGVtZW50IG5hbWU9IlZhbHVlIiB0eXBlPSJ1YTpWYXJpYW50IiBtaW5PY2N1 +cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGUiIHR5cGU9InVh +Ok5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJWYWx1ZVJhbmsiIHR5cGU9InhzOmludCIgbWluT2NjdXJzPSIwIiAvPg0K +ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkFycmF5RGltZW5zaW9ucyIgdHlwZT0idWE6TGlz +dE9mVUludDMyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4 +czplbGVtZW50IG5hbWU9IklzQWJzdHJhY3QiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0i +MCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAg +IDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50 +IG5hbWU9IlZhcmlhYmxlVHlwZUF0dHJpYnV0ZXMiIHR5cGU9InRuczpWYXJpYWJsZVR5cGVBdHRy +aWJ1dGVzIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWZlcmVuY2VUeXBlQXR0cmli +dXRlcyI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6 +ZXh0ZW5zaW9uIGJhc2U9InRuczpOb2RlQXR0cmlidXRlcyI+DQogICAgICAgIDx4czpzZXF1ZW5j +ZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJc0Fic3RyYWN0IiB0eXBlPSJ4czpib29s +ZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3ltbWV0 +cmljIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iSW52ZXJzZU5hbWUiIHR5cGU9InVhOkxvY2FsaXplZFRleHQiIG1pbk9jY3Vy +cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8 +L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhU +eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZWZlcmVuY2VUeXBlQXR0cmlidXRlcyIgdHlwZT0i +dG5zOlJlZmVyZW5jZVR5cGVBdHRyaWJ1dGVzIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l +PSJEYXRhVHlwZUF0dHJpYnV0ZXMiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFs +c2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiPg0KICAg +ICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXNBYnN0cmFj +dCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVl +bmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAg +PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGVBdHRyaWJ1dGVz +IiB0eXBlPSJ0bnM6RGF0YVR5cGVBdHRyaWJ1dGVzIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu +YW1lPSJWaWV3QXR0cmlidXRlcyI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxz +ZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpOb2RlQXR0cmlidXRlcyI+DQogICAg +ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDb250YWluc05v +TG9vcHMiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJFdmVudE5vdGlmaWVyIiB0eXBlPSJ4czp1bnNpZ25lZEJ5dGUiIG1pbk9j +Y3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9u +Pg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl +bGVtZW50IG5hbWU9IlZpZXdBdHRyaWJ1dGVzIiB0eXBlPSJ0bnM6Vmlld0F0dHJpYnV0ZXMiIC8+ +DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkdlbmVyaWNBdHRyaWJ1dGVWYWx1ZSI+DQogICAg +PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXR0cmlidXRlSWQiIHR5cGU9 +InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l +PSJWYWx1ZSIgdHlwZT0idWE6VmFyaWFudCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2Vx +dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkdlbmVyaWNB +dHRyaWJ1dGVWYWx1ZSIgdHlwZT0idG5zOkdlbmVyaWNBdHRyaWJ1dGVWYWx1ZSIgLz4NCg0KICA8 +eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mR2VuZXJpY0F0dHJpYnV0ZVZhbHVlIj4NCiAgICA8 +eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJHZW5lcmljQXR0cmlidXRlVmFs +dWUiIHR5cGU9InRuczpHZW5lcmljQXR0cmlidXRlVmFsdWUiIG1pbk9jY3Vycz0iMCIgbWF4T2Nj +dXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQog +IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkdlbmVyaWNBdHRy +aWJ1dGVWYWx1ZSIgdHlwZT0idG5zOkxpc3RPZkdlbmVyaWNBdHRyaWJ1dGVWYWx1ZSIgbmlsbGFi +bGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iR2VuZXJp +Y0F0dHJpYnV0ZXMiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAg +ICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiPg0KICAgICAgICA8eHM6 +c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXR0cmlidXRlVmFsdWVzIiB0 +eXBlPSJ0bnM6TGlzdE9mR2VuZXJpY0F0dHJpYnV0ZVZhbHVlIiBtaW5PY2N1cnM9IjAiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNp +b24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz +OmVsZW1lbnQgbmFtZT0iR2VuZXJpY0F0dHJpYnV0ZXMiIHR5cGU9InRuczpHZW5lcmljQXR0cmli +dXRlcyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQWRkTm9kZXNJdGVtIj4NCiAgICA8 +eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQYXJlbnROb2RlSWQiIHR5cGU9 +InVhOkV4cGFuZGVkTm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlVHlwZUlkIiB0eXBlPSJ1YTpOb2RlSWQiIG1p +bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJS +ZXF1ZXN0ZWROZXdOb2RlSWQiIHR5cGU9InVhOkV4cGFuZGVkTm9kZUlkIiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnJvd3NlTmFtZSIg +dHlwZT0idWE6UXVhbGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N +CiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVDbGFzcyIgdHlwZT0idG5zOk5vZGVDbGFzcyIg +bWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZUF0dHJpYnV0ZXMi +IHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg +Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlR5cGVEZWZpbml0aW9uIiB0eXBlPSJ1YTpFeHBh +bmRlZE5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl +cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBZGROb2Rl +c0l0ZW0iIHR5cGU9InRuczpBZGROb2Rlc0l0ZW0iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h +bWU9Ikxpc3RPZkFkZE5vZGVzSXRlbSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iQWRkTm9kZXNJdGVtIiB0eXBlPSJ0bnM6QWRkTm9kZXNJdGVtIiBtaW5PY2N1 +cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz +OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0 +T2ZBZGROb2Rlc0l0ZW0iIHR5cGU9InRuczpMaXN0T2ZBZGROb2Rlc0l0ZW0iIG5pbGxhYmxlPSJ0 +cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFkZE5vZGVzUmVz dWx0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0dXND b2RlIiB0eXBlPSJ1YTpTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJPcGVyYW5kU3RhdHVzQ29kZXMiIHR5cGU9InVhOkxpc3RPZlN0YXR1c0NvZGUi -IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJPcGVyYW5kRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIg -bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8 -L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJDb250ZW50RmlsdGVyRWxlbWVu -dFJlc3VsdCIgdHlwZT0idG5zOkNvbnRlbnRGaWx0ZXJFbGVtZW50UmVzdWx0IiAvPg0KDQogIDx4 -czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZDb250ZW50RmlsdGVyRWxlbWVudFJlc3VsdCI+DQog -ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29udGVudEZpbHRlckVs -ZW1lbnRSZXN1bHQiIHR5cGU9InRuczpDb250ZW50RmlsdGVyRWxlbWVudFJlc3VsdCIgbWluT2Nj -dXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94 -czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlz -dE9mQ29udGVudEZpbHRlckVsZW1lbnRSZXN1bHQiIHR5cGU9InRuczpMaXN0T2ZDb250ZW50Rmls -dGVyRWxlbWVudFJlc3VsdCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6 -Y29tcGxleFR5cGUgbmFtZT0iQ29udGVudEZpbHRlclJlc3VsdCI+DQogICAgPHhzOnNlcXVlbmNl -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRWxlbWVudFJlc3VsdHMiIHR5cGU9InRuczpMaXN0 -T2ZDb250ZW50RmlsdGVyRWxlbWVudFJlc3VsdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 -ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVsZW1lbnREaWFnbm9zdGljSW5mb3MiIHR5 +bWVudCBuYW1lPSJBZGRlZE5vZGVJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5p +bGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+ +DQogIDx4czplbGVtZW50IG5hbWU9IkFkZE5vZGVzUmVzdWx0IiB0eXBlPSJ0bnM6QWRkTm9kZXNS +ZXN1bHQiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkFkZE5vZGVzUmVzdWx0 +Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBZGROb2Rlc1Jl +c3VsdCIgdHlwZT0idG5zOkFkZE5vZGVzUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i +dW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz +OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZBZGROb2Rlc1Jlc3VsdCIg +dHlwZT0idG5zOkxpc3RPZkFkZE5vZGVzUmVzdWx0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVt +ZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJBZGROb2Rlc1JlcXVlc3QiPg0KICAgIDx4 +czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9 +InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZXNUb0FkZCIgdHlwZT0idG5zOkxpc3RPZkFkZE5vZGVz +SXRlbSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNl +Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBZGROb2Rlc1JlcXVl +c3QiIHR5cGU9InRuczpBZGROb2Rlc1JlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h +bWU9IkFkZE5vZGVzUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9j +Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1 +bHRzIiB0eXBlPSJ0bnM6TGlzdE9mQWRkTm9kZXNSZXN1bHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFi +bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGljSW5mb3MiIHR5 cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt -ZW50IG5hbWU9IkNvbnRlbnRGaWx0ZXJSZXN1bHQiIHR5cGU9InRuczpDb250ZW50RmlsdGVyUmVz -dWx0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJQYXJzaW5nUmVzdWx0Ij4NCiAgICA8 -eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0dXNDb2RlIiB0eXBlPSJ1 -YTpTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJE -YXRhU3RhdHVzQ29kZXMiIHR5cGU9InVhOkxpc3RPZlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIg -bmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhRGlhZ25vc3Rp -Y0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxs -YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K -ICA8eHM6ZWxlbWVudCBuYW1lPSJQYXJzaW5nUmVzdWx0IiB0eXBlPSJ0bnM6UGFyc2luZ1Jlc3Vs -dCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUGFyc2luZ1Jlc3VsdCI+DQog -ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFyc2luZ1Jlc3VsdCIg -dHlwZT0idG5zOlBhcnNpbmdSZXN1bHQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k +ZW50IG5hbWU9IkFkZE5vZGVzUmVzcG9uc2UiIHR5cGU9InRuczpBZGROb2Rlc1Jlc3BvbnNlIiAv +Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJBZGRSZWZlcmVuY2VzSXRlbSI+DQogICAgPHhz +OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU291cmNlTm9kZUlkIiB0eXBlPSJ1 +YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl +bWVudCBuYW1lPSJSZWZlcmVuY2VUeXBlSWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIw +IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IklzRm9yd2FyZCIg +dHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt +ZT0iVGFyZ2V0U2VydmVyVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFi +bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUYXJnZXROb2RlSWQiIHR5cGU9 +InVhOkV4cGFuZGVkTm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iVGFyZ2V0Tm9kZUNsYXNzIiB0eXBlPSJ0bnM6Tm9kZUNsYXNz +IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw +ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQWRkUmVmZXJlbmNlc0l0ZW0iIHR5cGU9InRuczpBZGRS +ZWZlcmVuY2VzSXRlbSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQWRkUmVm +ZXJlbmNlc0l0ZW0iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 +IkFkZFJlZmVyZW5jZXNJdGVtIiB0eXBlPSJ0bnM6QWRkUmVmZXJlbmNlc0l0ZW0iIG1pbk9jY3Vy +cz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6 +c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RP +ZkFkZFJlZmVyZW5jZXNJdGVtIiB0eXBlPSJ0bnM6TGlzdE9mQWRkUmVmZXJlbmNlc0l0ZW0iIG5p +bGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFk +ZFJlZmVyZW5jZXNSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJz +PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlZmVyZW5j +ZXNUb0FkZCIgdHlwZT0idG5zOkxpc3RPZkFkZFJlZmVyZW5jZXNJdGVtIiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5 +cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkFkZFJlZmVyZW5jZXNSZXF1ZXN0IiB0eXBlPSJ0bnM6 +QWRkUmVmZXJlbmNlc1JlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFkZFJl +ZmVyZW5jZXNSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJz +PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3VsdHMi +IHR5cGU9InVhOkxpc3RPZlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi +IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxp +c3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 +IkFkZFJlZmVyZW5jZXNSZXNwb25zZSIgdHlwZT0idG5zOkFkZFJlZmVyZW5jZXNSZXNwb25zZSIg +Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGVsZXRlTm9kZXNJdGVtIj4NCiAgICA8eHM6 +c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOb2RlSWQiIHR5cGU9InVhOk5vZGVJ +ZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h +bWU9IkRlbGV0ZVRhcmdldFJlZmVyZW5jZXMiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0i +MCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl +bWVudCBuYW1lPSJEZWxldGVOb2Rlc0l0ZW0iIHR5cGU9InRuczpEZWxldGVOb2Rlc0l0ZW0iIC8+ +DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkRlbGV0ZU5vZGVzSXRlbSI+DQogICAg +PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVsZXRlTm9kZXNJdGVtIiB0 +eXBlPSJ0bnM6RGVsZXRlTm9kZXNJdGVtIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3Vu +ZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs +ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZEZWxldGVOb2Rlc0l0ZW0iIHR5cGU9 +InRuczpMaXN0T2ZEZWxldGVOb2Rlc0l0ZW0iIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+ +DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRlbGV0ZU5vZGVzUmVxdWVzdCI+DQogICAgPHhz +OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0i +dG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJOb2Rlc1RvRGVsZXRlIiB0eXBlPSJ0bnM6TGlzdE9mRGVsZXRl +Tm9kZXNJdGVtIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2Vx +dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRlbGV0ZU5v +ZGVzUmVxdWVzdCIgdHlwZT0idG5zOkRlbGV0ZU5vZGVzUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29t +cGxleFR5cGUgbmFtZT0iRGVsZXRlTm9kZXNSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0K +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25z +ZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IlJlc3VsdHMiIHR5cGU9InVhOkxpc3RPZlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0i +MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGlj +SW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog +IDx4czplbGVtZW50IG5hbWU9IkRlbGV0ZU5vZGVzUmVzcG9uc2UiIHR5cGU9InRuczpEZWxldGVO +b2Rlc1Jlc3BvbnNlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEZWxldGVSZWZlcmVu +Y2VzSXRlbSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU291 +cmNlTm9kZUlkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi +IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWZlcmVuY2VUeXBlSWQiIHR5cGU9InVhOk5v +ZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9IklzRm9yd2FyZCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iVGFyZ2V0Tm9kZUlkIiB0eXBlPSJ1YTpFeHBhbmRlZE5vZGVJ +ZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h +bWU9IkRlbGV0ZUJpZGlyZWN0aW9uYWwiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIg +Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu +dCBuYW1lPSJEZWxldGVSZWZlcmVuY2VzSXRlbSIgdHlwZT0idG5zOkRlbGV0ZVJlZmVyZW5jZXNJ +dGVtIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZEZWxldGVSZWZlcmVuY2Vz +SXRlbSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVsZXRl +UmVmZXJlbmNlc0l0ZW0iIHR5cGU9InRuczpEZWxldGVSZWZlcmVuY2VzSXRlbSIgbWluT2NjdXJz +PSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpz +ZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9m +RGVsZXRlUmVmZXJlbmNlc0l0ZW0iIHR5cGU9InRuczpMaXN0T2ZEZWxldGVSZWZlcmVuY2VzSXRl +bSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt +ZT0iRGVsZXRlUmVmZXJlbmNlc1JlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4 +czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBt +aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +UmVmZXJlbmNlc1RvRGVsZXRlIiB0eXBlPSJ0bnM6TGlzdE9mRGVsZXRlUmVmZXJlbmNlc0l0ZW0i +IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg +PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGVsZXRlUmVmZXJlbmNlc1Jl +cXVlc3QiIHR5cGU9InRuczpEZWxldGVSZWZlcmVuY2VzUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29t +cGxleFR5cGUgbmFtZT0iRGVsZXRlUmVmZXJlbmNlc1Jlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVu +Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJl +c3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iUmVzdWx0cyIgdHlwZT0idWE6TGlzdE9mU3RhdHVzQ29kZSIgbWluT2Nj +dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdu +b3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIg +bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw +ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGVsZXRlUmVmZXJlbmNlc1Jlc3BvbnNlIiB0eXBlPSJ0 +bnM6RGVsZXRlUmVmZXJlbmNlc1Jlc3BvbnNlIiAvPg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1l +PSJBdHRyaWJ1dGVXcml0ZU1hc2siPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp1bnNp +Z25lZEludCI+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8 +eHM6ZWxlbWVudCBuYW1lPSJBdHRyaWJ1dGVXcml0ZU1hc2siIHR5cGU9InRuczpBdHRyaWJ1dGVX +cml0ZU1hc2siIC8+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IkJyb3dzZURpcmVjdGlvbiI+ +DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVy +YXRpb24gdmFsdWU9IkZvcndhcmRfMCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0i +SW52ZXJzZV8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJCb3RoXzIiIC8+DQog +ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkludmFsaWRfMyIgLz4NCiAgICA8L3hzOnJlc3Ry +aWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZURp +cmVjdGlvbiIgdHlwZT0idG5zOkJyb3dzZURpcmVjdGlvbiIgLz4NCg0KICA8eHM6Y29tcGxleFR5 +cGUgbmFtZT0iVmlld0Rlc2NyaXB0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJWaWV3SWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxs +YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRpbWVzdGFtcCIgdHlwZT0i +eHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlZp +ZXdWZXJzaW9uIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwv +eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlZp +ZXdEZXNjcmlwdGlvbiIgdHlwZT0idG5zOlZpZXdEZXNjcmlwdGlvbiIgLz4NCg0KICA8eHM6Y29t +cGxleFR5cGUgbmFtZT0iQnJvd3NlRGVzY3JpcHRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9 +IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnJvd3NlRGly +ZWN0aW9uIiB0eXBlPSJ0bnM6QnJvd3NlRGlyZWN0aW9uIiBtaW5PY2N1cnM9IjAiIC8+DQogICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJSZWZlcmVuY2VUeXBlSWQiIHR5cGU9InVhOk5vZGVJZCIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Iklu +Y2x1ZGVTdWJ0eXBlcyIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iTm9kZUNsYXNzTWFzayIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1p +bk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3VsdE1hc2siIHR5cGU9 +InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg +PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQnJvd3NlRGVzY3JpcHRpb24i +IHR5cGU9InRuczpCcm93c2VEZXNjcmlwdGlvbiIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt +ZT0iTGlzdE9mQnJvd3NlRGVzY3JpcHRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4 +czplbGVtZW50IG5hbWU9IkJyb3dzZURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6QnJvd3NlRGVzY3Jp +cHRpb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVl +IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt +ZW50IG5hbWU9Ikxpc3RPZkJyb3dzZURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6TGlzdE9mQnJvd3Nl +RGVzY3JpcHRpb24iIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBs +ZVR5cGUgIG5hbWU9IkJyb3dzZVJlc3VsdE1hc2siPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNl +PSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJOb25lXzAiIC8+DQog +ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlJlZmVyZW5jZVR5cGVJZF8xIiAvPg0KICAgICAg +PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJc0ZvcndhcmRfMiIgLz4NCiAgICAgIDx4czplbnVtZXJh +dGlvbiB2YWx1ZT0iTm9kZUNsYXNzXzQiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9 +IkJyb3dzZU5hbWVfOCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRGlzcGxheU5h +bWVfMTYiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlR5cGVEZWZpbml0aW9uXzMy +IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJBbGxfNjMiIC8+DQogICAgICA8eHM6 +ZW51bWVyYXRpb24gdmFsdWU9IlJlZmVyZW5jZVR5cGVJbmZvXzMiIC8+DQogICAgICA8eHM6ZW51 +bWVyYXRpb24gdmFsdWU9IlRhcmdldEluZm9fNjAiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4N +CiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJCcm93c2VSZXN1bHRNYXNr +IiB0eXBlPSJ0bnM6QnJvd3NlUmVzdWx0TWFzayIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt +ZT0iUmVmZXJlbmNlRGVzY3JpcHRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IlJlZmVyZW5jZVR5cGVJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9 +IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXNGb3J3YXJk +IiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJOb2RlSWQiIHR5cGU9InVhOkV4cGFuZGVkTm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnJvd3NlTmFtZSIgdHlwZT0i +dWE6UXVhbGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg +IDx4czplbGVtZW50IG5hbWU9IkRpc3BsYXlOYW1lIiB0eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBt +aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +Tm9kZUNsYXNzIiB0eXBlPSJ0bnM6Tm9kZUNsYXNzIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJUeXBlRGVmaW5pdGlvbiIgdHlwZT0idWE6RXhwYW5kZWROb2RlSWQi +IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg +PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlRGVzY3JpcHRp +b24iIHR5cGU9InRuczpSZWZlcmVuY2VEZXNjcmlwdGlvbiIgLz4NCg0KICA8eHM6Y29tcGxleFR5 +cGUgbmFtZT0iTGlzdE9mUmVmZXJlbmNlRGVzY3JpcHRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4N +CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlZmVyZW5jZURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6 +UmVmZXJlbmNlRGVzY3JpcHRpb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5 +cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlJlZmVyZW5jZURlc2NyaXB0aW9uIiB0eXBl +PSJ0bnM6TGlzdE9mUmVmZXJlbmNlRGVzY3JpcHRpb24iIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVs +ZW1lbnQ+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iQ29udGludWF0aW9uUG9pbnQiIHR5cGU9Inhz +OmJhc2U2NEJpbmFyeSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQnJvd3NlUmVzdWx0 +Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0dXNDb2Rl +IiB0eXBlPSJ1YTpTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJDb250aW51YXRpb25Qb2ludCIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1 +cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVmZXJl +bmNlcyIgdHlwZT0idG5zOkxpc3RPZlJlZmVyZW5jZURlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5 +cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZVJlc3VsdCIgdHlwZT0idG5zOkJyb3dzZVJl +c3VsdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQnJvd3NlUmVzdWx0Ij4N +CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCcm93c2VSZXN1bHQi +IHR5cGU9InRuczpCcm93c2VSZXN1bHQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k ZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlBhcnNpbmdSZXN1bHQiIHR5cGU9InRu -czpMaXN0T2ZQYXJzaW5nUmVzdWx0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQog -IDx4czpjb21wbGV4VHlwZSBuYW1lPSJRdWVyeUZpcnN0UmVxdWVzdCI+DQogICAgPHhzOnNlcXVl -bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJl -cXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJWaWV3IiB0eXBlPSJ0bnM6Vmlld0Rlc2NyaXB0aW9uIiBtaW5PY2N1cnM9 -IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZVR5cGVz -IiB0eXBlPSJ0bnM6TGlzdE9mTm9kZVR5cGVEZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxs -YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkZpbHRlciIgdHlwZT0idG5z -OkNvbnRlbnRGaWx0ZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJNYXhEYXRhU2V0c1RvUmV0dXJuIiB0eXBlPSJ4czp1bnNpZ25lZElu -dCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF4UmVmZXJlbmNl -c1RvUmV0dXJuIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwv -eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlF1 -ZXJ5Rmlyc3RSZXF1ZXN0IiB0eXBlPSJ0bnM6UXVlcnlGaXJzdFJlcXVlc3QiIC8+DQoNCiAgPHhz -OmNvbXBsZXhUeXBlIG5hbWU9IlF1ZXJ5Rmlyc3RSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNl -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNw -b25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl -bGVtZW50IG5hbWU9IlF1ZXJ5RGF0YVNldHMiIHR5cGU9InRuczpMaXN0T2ZRdWVyeURhdGFTZXQi -IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJDb250aW51YXRpb25Qb2ludCIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAi -IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFyc2luZ1Jlc3Vs -dHMiIHR5cGU9InRuczpMaXN0T2ZQYXJzaW5nUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl -PSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9zIiB0eXBl -PSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkZpbHRlclJlc3VsdCIgdHlwZT0idG5zOkNvbnRl -bnRGaWx0ZXJSZXN1bHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94 -czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUXVl -cnlGaXJzdFJlc3BvbnNlIiB0eXBlPSJ0bnM6UXVlcnlGaXJzdFJlc3BvbnNlIiAvPg0KDQogIDx4 -czpjb21wbGV4VHlwZSBuYW1lPSJRdWVyeU5leHRSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVz -dEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IlJlbGVhc2VDb250aW51YXRpb25Qb2ludCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWlu -T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29udGludWF0aW9uUG9pbnQi -IHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N +eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkJyb3dzZVJlc3VsdCIgdHlwZT0idG5z +Okxpc3RPZkJyb3dzZVJlc3VsdCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8 +eHM6Y29tcGxleFR5cGUgbmFtZT0iQnJvd3NlUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0K +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RI +ZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJWaWV3IiB0eXBlPSJ0bnM6Vmlld0Rlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAiIG5p +bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdGVkTWF4UmVm +ZXJlbmNlc1Blck5vZGUiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOb2Rlc1RvQnJvd3NlIiB0eXBlPSJ0bnM6TGlzdE9mQnJv +d3NlRGVzY3JpcHRpb24iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94 +czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQnJv +d3NlUmVxdWVzdCIgdHlwZT0idG5zOkJyb3dzZVJlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhU +eXBlIG5hbWU9IkJyb3dzZVJlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBt +aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +UmVzdWx0cyIgdHlwZT0idG5zOkxpc3RPZkJyb3dzZVJlc3VsdCIgbWluT2NjdXJzPSIwIiBuaWxs +YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvcyIg +dHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy +dWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs +ZW1lbnQgbmFtZT0iQnJvd3NlUmVzcG9uc2UiIHR5cGU9InRuczpCcm93c2VSZXNwb25zZSIgLz4N +Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQnJvd3NlTmV4dFJlcXVlc3QiPg0KICAgIDx4czpz +ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRu +czpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iUmVsZWFzZUNvbnRpbnVhdGlvblBvaW50cyIgdHlwZT0ieHM6Ym9v +bGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29udGludWF0 +aW9uUG9pbnRzIiB0eXBlPSJ1YTpMaXN0T2ZCeXRlU3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog +IDx4czplbGVtZW50IG5hbWU9IkJyb3dzZU5leHRSZXF1ZXN0IiB0eXBlPSJ0bnM6QnJvd3NlTmV4 +dFJlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkJyb3dzZU5leHRSZXNwb25z +ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VI +ZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i +dHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3VsdHMiIHR5cGU9InRuczpMaXN0 +T2ZCcm93c2VSZXN1bHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0 +aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVu +Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZU5leHRS +ZXNwb25zZSIgdHlwZT0idG5zOkJyb3dzZU5leHRSZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxl +eFR5cGUgbmFtZT0iUmVsYXRpdmVQYXRoRWxlbWVudCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlVHlwZUlkIiB0eXBlPSJ1YTpOb2RlSWQiIG1p +bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJ +c0ludmVyc2UiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IkluY2x1ZGVTdWJ0eXBlcyIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJz +PSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGFyZ2V0TmFtZSIgdHlwZT0idWE6UXVh +bGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl +cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZWxhdGl2 +ZVBhdGhFbGVtZW50IiB0eXBlPSJ0bnM6UmVsYXRpdmVQYXRoRWxlbWVudCIgLz4NCg0KICA8eHM6 +Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUmVsYXRpdmVQYXRoRWxlbWVudCI+DQogICAgPHhzOnNl +cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVsYXRpdmVQYXRoRWxlbWVudCIgdHlw +ZT0idG5zOlJlbGF0aXZlUGF0aEVsZW1lbnQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJv +dW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29t +cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlJlbGF0aXZlUGF0aEVsZW1lbnQi +IHR5cGU9InRuczpMaXN0T2ZSZWxhdGl2ZVBhdGhFbGVtZW50IiBuaWxsYWJsZT0idHJ1ZSI+PC94 +czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWxhdGl2ZVBhdGgiPg0KICAg +IDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVsZW1lbnRzIiB0eXBlPSJ0 +bnM6TGlzdE9mUmVsYXRpdmVQYXRoRWxlbWVudCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 +ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl +bWVudCBuYW1lPSJSZWxhdGl2ZVBhdGgiIHR5cGU9InRuczpSZWxhdGl2ZVBhdGgiIC8+DQoNCiAg +PHhzOmNvbXBsZXhUeXBlIG5hbWU9IkJyb3dzZVBhdGgiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXJ0aW5nTm9kZSIgdHlwZT0idWE6Tm9kZUlkIiBtaW5P +Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVs +YXRpdmVQYXRoIiB0eXBlPSJ0bnM6UmVsYXRpdmVQYXRoIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl +PSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 +czplbGVtZW50IG5hbWU9IkJyb3dzZVBhdGgiIHR5cGU9InRuczpCcm93c2VQYXRoIiAvPg0KDQog +IDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZCcm93c2VQYXRoIj4NCiAgICA8eHM6c2VxdWVu +Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCcm93c2VQYXRoIiB0eXBlPSJ0bnM6QnJvd3Nl +UGF0aCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUi +IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l +bnQgbmFtZT0iTGlzdE9mQnJvd3NlUGF0aCIgdHlwZT0idG5zOkxpc3RPZkJyb3dzZVBhdGgiIG5p +bGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkJy +b3dzZVBhdGhUYXJnZXQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h +bWU9IlRhcmdldElkIiB0eXBlPSJ1YTpFeHBhbmRlZE5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxs +YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlbWFpbmluZ1BhdGhJbmRl +eCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVl +bmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJCcm93c2VQYXRo +VGFyZ2V0IiB0eXBlPSJ0bnM6QnJvd3NlUGF0aFRhcmdldCIgLz4NCg0KICA8eHM6Y29tcGxleFR5 +cGUgbmFtZT0iTGlzdE9mQnJvd3NlUGF0aFRhcmdldCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iQnJvd3NlUGF0aFRhcmdldCIgdHlwZT0idG5zOkJyb3dzZVBh +dGhUYXJnZXQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0 +cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl +bGVtZW50IG5hbWU9Ikxpc3RPZkJyb3dzZVBhdGhUYXJnZXQiIHR5cGU9InRuczpMaXN0T2ZCcm93 +c2VQYXRoVGFyZ2V0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21w +bGV4VHlwZSBuYW1lPSJCcm93c2VQYXRoUmVzdWx0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0dXNDb2RlIiB0eXBlPSJ1YTpTdGF0dXNDb2RlIiBtaW5P +Y2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUYXJnZXRzIiB0eXBlPSJ0bnM6 +TGlzdE9mQnJvd3NlUGF0aFRhcmdldCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu -YW1lPSJRdWVyeU5leHRSZXF1ZXN0IiB0eXBlPSJ0bnM6UXVlcnlOZXh0UmVxdWVzdCIgLz4NCg0K -ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUXVlcnlOZXh0UmVzcG9uc2UiPg0KICAgIDx4czpzZXF1 -ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6 -UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJRdWVyeURhdGFTZXRzIiB0eXBlPSJ0bnM6TGlzdE9mUXVlcnlEYXRh -U2V0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iUmV2aXNlZENvbnRpbnVhdGlvblBvaW50IiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1p -bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94 -czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUXVlcnlOZXh0UmVzcG9uc2UiIHR5 -cGU9InRuczpRdWVyeU5leHRSZXNwb25zZSIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0i -VGltZXN0YW1wc1RvUmV0dXJuIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5n -Ij4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU291cmNlXzAiIC8+DQogICAgICA8eHM6 -ZW51bWVyYXRpb24gdmFsdWU9IlNlcnZlcl8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZh -bHVlPSJCb3RoXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik5laXRoZXJfMyIg -Lz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSW52YWxpZF80IiAvPg0KICAgIDwveHM6 -cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVGlt -ZXN0YW1wc1RvUmV0dXJuIiB0eXBlPSJ0bnM6VGltZXN0YW1wc1RvUmV0dXJuIiAvPg0KDQogIDx4 -czpjb21wbGV4VHlwZSBuYW1lPSJSZWFkVmFsdWVJZCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZUlkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0i -MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBdHRyaWJ1dGVJ -ZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IkluZGV4UmFuZ2UiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxs -YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFFbmNvZGluZyIgdHlw -ZT0idWE6UXVhbGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg -ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l -PSJSZWFkVmFsdWVJZCIgdHlwZT0idG5zOlJlYWRWYWx1ZUlkIiAvPg0KDQogIDx4czpjb21wbGV4 -VHlwZSBuYW1lPSJMaXN0T2ZSZWFkVmFsdWVJZCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iUmVhZFZhbHVlSWQiIHR5cGU9InRuczpSZWFkVmFsdWVJZCIgbWlu -T2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg -PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i -TGlzdE9mUmVhZFZhbHVlSWQiIHR5cGU9InRuczpMaXN0T2ZSZWFkVmFsdWVJZCIgbmlsbGFibGU9 -InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVhZFJlcXVl +YW1lPSJCcm93c2VQYXRoUmVzdWx0IiB0eXBlPSJ0bnM6QnJvd3NlUGF0aFJlc3VsdCIgLz4NCg0K +ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQnJvd3NlUGF0aFJlc3VsdCI+DQogICAgPHhz +OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnJvd3NlUGF0aFJlc3VsdCIgdHlw +ZT0idG5zOkJyb3dzZVBhdGhSZXN1bHQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k +ZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl +eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkJyb3dzZVBhdGhSZXN1bHQiIHR5cGU9 +InRuczpMaXN0T2ZCcm93c2VQYXRoUmVzdWx0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50 +Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJUcmFuc2xhdGVCcm93c2VQYXRoc1RvTm9kZUlk +c1JlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJl +cXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnJvd3NlUGF0aHMiIHR5cGU9 +InRuczpMaXN0T2ZCcm93c2VQYXRoIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h +bWU9IlRyYW5zbGF0ZUJyb3dzZVBhdGhzVG9Ob2RlSWRzUmVxdWVzdCIgdHlwZT0idG5zOlRyYW5z +bGF0ZUJyb3dzZVBhdGhzVG9Ob2RlSWRzUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg +bmFtZT0iVHJhbnNsYXRlQnJvd3NlUGF0aHNUb05vZGVJZHNSZXNwb25zZSI+DQogICAgPHhzOnNl +cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRu +czpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg +IDx4czplbGVtZW50IG5hbWU9IlJlc3VsdHMiIHR5cGU9InRuczpMaXN0T2ZCcm93c2VQYXRoUmVz +dWx0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz +OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJUcmFuc2xhdGVCcm93c2VQYXRoc1Rv +Tm9kZUlkc1Jlc3BvbnNlIiB0eXBlPSJ0bnM6VHJhbnNsYXRlQnJvd3NlUGF0aHNUb05vZGVJZHNS +ZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVnaXN0ZXJOb2Rlc1JlcXVl c3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RI ZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0 -cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF4QWdlIiB0eXBlPSJ4czpkb3VibGUi -IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRpbWVzdGFtcHNUb1Jl -dHVybiIgdHlwZT0idG5zOlRpbWVzdGFtcHNUb1JldHVybiIgbWluT2NjdXJzPSIwIiAvPg0KICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZXNUb1JlYWQiIHR5cGU9InRuczpMaXN0T2ZSZWFkVmFs -dWVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNl -Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZWFkUmVxdWVzdCIg -dHlwZT0idG5zOlJlYWRSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWFk -UmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJl -c3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmls -bGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ1 -YTpMaXN0T2ZEYXRhVmFsdWUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdu -b3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2Vx -dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlYWRSZXNw -b25zZSIgdHlwZT0idG5zOlJlYWRSZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt -ZT0iSGlzdG9yeVJlYWRWYWx1ZUlkIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJOb2RlSWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJs -ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkluZGV4UmFuZ2UiIHR5cGU9Inhz -OnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IkRhdGFFbmNvZGluZyIgdHlwZT0idWE6UXVhbGlmaWVkTmFtZSIgbWluT2NjdXJz -PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNvbnRpbnVh -dGlvblBvaW50IiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 -InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz -OmVsZW1lbnQgbmFtZT0iSGlzdG9yeVJlYWRWYWx1ZUlkIiB0eXBlPSJ0bnM6SGlzdG9yeVJlYWRW -YWx1ZUlkIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZIaXN0b3J5UmVhZFZh -bHVlSWQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikhpc3Rv -cnlSZWFkVmFsdWVJZCIgdHlwZT0idG5zOkhpc3RvcnlSZWFkVmFsdWVJZCIgbWluT2NjdXJzPSIw +cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZXNUb1JlZ2lzdGVyIiB0eXBlPSJ1 +YTpMaXN0T2ZOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94 +czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVn +aXN0ZXJOb2Rlc1JlcXVlc3QiIHR5cGU9InRuczpSZWdpc3Rlck5vZGVzUmVxdWVzdCIgLz4NCg0K +ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVnaXN0ZXJOb2Rlc1Jlc3BvbnNlIj4NCiAgICA8eHM6 +c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0i +dG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVnaXN0ZXJlZE5vZGVJZHMiIHR5cGU9InVhOkxpc3RPZk5v +ZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNl +Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZWdpc3Rlck5vZGVz +UmVzcG9uc2UiIHR5cGU9InRuczpSZWdpc3Rlck5vZGVzUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNv +bXBsZXhUeXBlIG5hbWU9IlVucmVnaXN0ZXJOb2Rlc1JlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5j +ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1 +ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iTm9kZXNUb1VucmVnaXN0ZXIiIHR5cGU9InVhOkxpc3RPZk5vZGVJZCIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz +OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJVbnJlZ2lzdGVyTm9kZXNSZXF1ZXN0 +IiB0eXBlPSJ0bnM6VW5yZWdpc3Rlck5vZGVzUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5 +cGUgbmFtZT0iVW5yZWdpc3Rlck5vZGVzUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VI +ZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j +ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVW5yZWdpc3Rlck5v +ZGVzUmVzcG9uc2UiIHR5cGU9InRuczpVbnJlZ2lzdGVyTm9kZXNSZXNwb25zZSIgLz4NCg0KICA8 +eHM6ZWxlbWVudCBuYW1lPSJDb3VudGVyIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgLz4NCg0KICA8 +eHM6ZWxlbWVudCBuYW1lPSJOdW1lcmljUmFuZ2UiIHR5cGU9InhzOnN0cmluZyIgLz4NCg0KICA8 +eHM6Y29tcGxleFR5cGUgbmFtZT0iRW5kcG9pbnRDb25maWd1cmF0aW9uIj4NCiAgICA8eHM6c2Vx +dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJPcGVyYXRpb25UaW1lb3V0IiB0eXBlPSJ4 +czppbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVzZUJpbmFy +eUVuY29kaW5nIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJNYXhTdHJpbmdMZW5ndGgiIHR5cGU9InhzOmludCIgbWluT2NjdXJzPSIw +IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF4Qnl0ZVN0cmluZ0xlbmd0aCIgdHlwZT0i +eHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYXhBcnJh +eUxlbmd0aCIgdHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJNYXhNZXNzYWdlU2l6ZSIgdHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYXhCdWZmZXJTaXplIiB0eXBlPSJ4czppbnQiIG1pbk9j +Y3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNoYW5uZWxMaWZldGltZSIgdHlw +ZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZWN1 +cml0eVRva2VuTGlmZXRpbWUiIHR5cGU9InhzOmludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwv +eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkVu +ZHBvaW50Q29uZmlndXJhdGlvbiIgdHlwZT0idG5zOkVuZHBvaW50Q29uZmlndXJhdGlvbiIgLz4N +Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRW5kcG9pbnRDb25maWd1cmF0aW9uIj4N +CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmRwb2ludENvbmZp +Z3VyYXRpb24iIHR5cGU9InRuczpFbmRwb2ludENvbmZpZ3VyYXRpb24iIG1pbk9jY3Vycz0iMCIg +bWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVu +Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkVuZHBv +aW50Q29uZmlndXJhdGlvbiIgdHlwZT0idG5zOkxpc3RPZkVuZHBvaW50Q29uZmlndXJhdGlvbiIg +bmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i +UXVlcnlEYXRhRGVzY3JpcHRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IlJlbGF0aXZlUGF0aCIgdHlwZT0idG5zOlJlbGF0aXZlUGF0aCIgbWluT2NjdXJz +PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkF0dHJpYnV0 +ZUlkIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iSW5kZXhSYW5nZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5p +bGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+ +DQogIDx4czplbGVtZW50IG5hbWU9IlF1ZXJ5RGF0YURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6UXVl +cnlEYXRhRGVzY3JpcHRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlF1 +ZXJ5RGF0YURlc2NyaXB0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJRdWVyeURhdGFEZXNjcmlwdGlvbiIgdHlwZT0idG5zOlF1ZXJ5RGF0YURlc2NyaXB0 +aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIg +Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu +dCBuYW1lPSJMaXN0T2ZRdWVyeURhdGFEZXNjcmlwdGlvbiIgdHlwZT0idG5zOkxpc3RPZlF1ZXJ5 +RGF0YURlc2NyaXB0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpj +b21wbGV4VHlwZSBuYW1lPSJOb2RlVHlwZURlc2NyaXB0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUeXBlRGVmaW5pdGlvbk5vZGUiIHR5cGU9InVhOkV4 +cGFuZGVkTm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iSW5jbHVkZVN1YlR5cGVzIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1 +cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhVG9SZXR1cm4iIHR5cGU9InRu +czpMaXN0T2ZRdWVyeURhdGFEZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 +ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl +bWVudCBuYW1lPSJOb2RlVHlwZURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6Tm9kZVR5cGVEZXNjcmlw +dGlvbiIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mTm9kZVR5cGVEZXNjcmlw +dGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZVR5 +cGVEZXNjcmlwdGlvbiIgdHlwZT0idG5zOk5vZGVUeXBlRGVzY3JpcHRpb24iIG1pbk9jY3Vycz0i +MCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2Vx +dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk5v +ZGVUeXBlRGVzY3JpcHRpb24iIHR5cGU9InRuczpMaXN0T2ZOb2RlVHlwZURlc2NyaXB0aW9uIiBu +aWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJG +aWx0ZXJPcGVyYXRvciI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQog +ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkVxdWFsc18wIiAvPg0KICAgICAgPHhzOmVudW1l +cmF0aW9uIHZhbHVlPSJJc051bGxfMSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0i +R3JlYXRlclRoYW5fMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTGVzc1RoYW5f +MyIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iR3JlYXRlclRoYW5PckVxdWFsXzQi +IC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ikxlc3NUaGFuT3JFcXVhbF81IiAvPg0K +ICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJMaWtlXzYiIC8+DQogICAgICA8eHM6ZW51bWVy +YXRpb24gdmFsdWU9Ik5vdF83IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJCZXR3 +ZWVuXzgiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkluTGlzdF85IiAvPg0KICAg +ICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJBbmRfMTAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRp +b24gdmFsdWU9Ik9yXzExIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDYXN0XzEy +IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJblZpZXdfMTMiIC8+DQogICAgICA8 +eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik9mVHlwZV8xNCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlv +biB2YWx1ZT0iUmVsYXRlZFRvXzE1IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJC +aXR3aXNlQW5kXzE2IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJCaXR3aXNlT3Jf +MTciIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6 +ZWxlbWVudCBuYW1lPSJGaWx0ZXJPcGVyYXRvciIgdHlwZT0idG5zOkZpbHRlck9wZXJhdG9yIiAv +Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJRdWVyeURhdGFTZXQiPg0KICAgIDx4czpzZXF1 +ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVJZCIgdHlwZT0idWE6RXhwYW5kZWRO +b2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJUeXBlRGVmaW5pdGlvbk5vZGUiIHR5cGU9InVhOkV4cGFuZGVkTm9kZUlkIiBtaW5P +Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFs +dWVzIiB0eXBlPSJ1YTpMaXN0T2ZWYXJpYW50IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl +IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt +ZW50IG5hbWU9IlF1ZXJ5RGF0YVNldCIgdHlwZT0idG5zOlF1ZXJ5RGF0YVNldCIgLz4NCg0KICA8 +eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUXVlcnlEYXRhU2V0Ij4NCiAgICA8eHM6c2VxdWVu +Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJRdWVyeURhdGFTZXQiIHR5cGU9InRuczpRdWVy +eURhdGFTZXQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0 +cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl +bGVtZW50IG5hbWU9Ikxpc3RPZlF1ZXJ5RGF0YVNldCIgdHlwZT0idG5zOkxpc3RPZlF1ZXJ5RGF0 +YVNldCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUg +bmFtZT0iTm9kZVJlZmVyZW5jZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iTm9kZUlkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 +InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWZlcmVuY2VUeXBlSWQiIHR5cGU9 +InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IklzRm9yd2FyZCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAv +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlZE5vZGVJZHMiIHR5cGU9InVhOkxp +c3RPZk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl +cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJOb2RlUmVm +ZXJlbmNlIiB0eXBlPSJ0bnM6Tm9kZVJlZmVyZW5jZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg +bmFtZT0iTGlzdE9mTm9kZVJlZmVyZW5jZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iTm9kZVJlZmVyZW5jZSIgdHlwZT0idG5zOk5vZGVSZWZlcmVuY2UiIG1p +bk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 +Ikxpc3RPZk5vZGVSZWZlcmVuY2UiIHR5cGU9InRuczpMaXN0T2ZOb2RlUmVmZXJlbmNlIiBuaWxs +YWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJDb250 +ZW50RmlsdGVyRWxlbWVudCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iRmlsdGVyT3BlcmF0b3IiIHR5cGU9InRuczpGaWx0ZXJPcGVyYXRvciIgbWluT2NjdXJz +PSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRmlsdGVyT3BlcmFuZHMiIHR5cGU9InVh +Okxpc3RPZkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N +CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu +YW1lPSJDb250ZW50RmlsdGVyRWxlbWVudCIgdHlwZT0idG5zOkNvbnRlbnRGaWx0ZXJFbGVtZW50 +IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZDb250ZW50RmlsdGVyRWxlbWVu +dCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29udGVudEZp +bHRlckVsZW1lbnQiIHR5cGU9InRuczpDb250ZW50RmlsdGVyRWxlbWVudCIgbWluT2NjdXJzPSIw IiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1 -ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mSGlz -dG9yeVJlYWRWYWx1ZUlkIiB0eXBlPSJ0bnM6TGlzdE9mSGlzdG9yeVJlYWRWYWx1ZUlkIiBuaWxs -YWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJIaXN0 -b3J5UmVhZFJlc3VsdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt -ZT0iU3RhdHVzQ29kZSIgdHlwZT0idWE6U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29udGludWF0aW9uUG9pbnQiIHR5cGU9InhzOmJhc2U2NEJp -bmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50 -IG5hbWU9Ikhpc3RvcnlEYXRhIiB0eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0i -MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 -VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yeVJlYWRSZXN1bHQiIHR5cGU9InRuczpI -aXN0b3J5UmVhZFJlc3VsdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mSGlz -dG9yeVJlYWRSZXN1bHQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9Ikhpc3RvcnlSZWFkUmVzdWx0IiB0eXBlPSJ0bnM6SGlzdG9yeVJlYWRSZXN1bHQiIG1pbk9j -Y3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv -eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxp -c3RPZkhpc3RvcnlSZWFkUmVzdWx0IiB0eXBlPSJ0bnM6TGlzdE9mSGlzdG9yeVJlYWRSZXN1bHQi -IG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9 -Ikhpc3RvcnlSZWFkRGV0YWlscyI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVu -Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikhpc3RvcnlSZWFk -RGV0YWlscyIgdHlwZT0idG5zOkhpc3RvcnlSZWFkRGV0YWlscyIgLz4NCg0KICA8eHM6Y29tcGxl -eFR5cGUgbmFtZT0iUmVhZEV2ZW50RGV0YWlscyI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1p -eGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpIaXN0b3J5UmVhZERl -dGFpbHMiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFt -ZT0iTnVtVmFsdWVzUGVyTm9kZSIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIg -Lz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGFydFRpbWUiIHR5cGU9InhzOmRhdGVU -aW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5kVGlt -ZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJGaWx0ZXIiIHR5cGU9InRuczpFdmVudEZpbHRlciIgbWluT2NjdXJzPSIwIiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0 -ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQog -IDx4czplbGVtZW50IG5hbWU9IlJlYWRFdmVudERldGFpbHMiIHR5cGU9InRuczpSZWFkRXZlbnRE -ZXRhaWxzIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWFkUmF3TW9kaWZpZWREZXRh -aWxzIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpl -eHRlbnNpb24gYmFzZT0idG5zOkhpc3RvcnlSZWFkRGV0YWlscyI+DQogICAgICAgIDx4czpzZXF1 -ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJc1JlYWRNb2RpZmllZCIgdHlwZT0i -eHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9 -IlN0YXJ0VGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJFbmRUaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJz -PSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik51bVZhbHVlc1Blck5vZGUiIHR5 -cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iUmV0dXJuQm91bmRzIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+ -DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hz -OmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l -PSJSZWFkUmF3TW9kaWZpZWREZXRhaWxzIiB0eXBlPSJ0bnM6UmVhZFJhd01vZGlmaWVkRGV0YWls -cyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVhZFByb2Nlc3NlZERldGFpbHMiPg0K -ICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lv -biBiYXNlPSJ0bnM6SGlzdG9yeVJlYWREZXRhaWxzIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0K +ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mQ29u +dGVudEZpbHRlckVsZW1lbnQiIHR5cGU9InRuczpMaXN0T2ZDb250ZW50RmlsdGVyRWxlbWVudCIg +bmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i +Q29udGVudEZpbHRlciI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt +ZT0iRWxlbWVudHMiIHR5cGU9InRuczpMaXN0T2ZDb250ZW50RmlsdGVyRWxlbWVudCIgbWluT2Nj +dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv +bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJDb250ZW50RmlsdGVyIiB0eXBlPSJ0bnM6 +Q29udGVudEZpbHRlciIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQ29udGVu +dEZpbHRlciI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29u +dGVudEZpbHRlciIgdHlwZT0idG5zOkNvbnRlbnRGaWx0ZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2Nj +dXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQog +IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkNvbnRlbnRGaWx0 +ZXIiIHR5cGU9InRuczpMaXN0T2ZDb250ZW50RmlsdGVyIiBuaWxsYWJsZT0idHJ1ZSI+PC94czpl +bGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJGaWx0ZXJPcGVyYW5kIj4NCiAgICA8 +eHM6c2VxdWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg +PHhzOmVsZW1lbnQgbmFtZT0iRmlsdGVyT3BlcmFuZCIgdHlwZT0idG5zOkZpbHRlck9wZXJhbmQi +IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkVsZW1lbnRPcGVyYW5kIj4NCiAgICA8eHM6 +Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0i +dG5zOkZpbHRlck9wZXJhbmQiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iSW5kZXgiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAi +IC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8 +L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu +YW1lPSJFbGVtZW50T3BlcmFuZCIgdHlwZT0idG5zOkVsZW1lbnRPcGVyYW5kIiAvPg0KDQogIDx4 +czpjb21wbGV4VHlwZSBuYW1lPSJMaXRlcmFsT3BlcmFuZCI+DQogICAgPHhzOmNvbXBsZXhDb250 +ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpGaWx0ZXJP +cGVyYW5kIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5h +bWU9IlZhbHVlIiB0eXBlPSJ1YTpWYXJpYW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDwv +eHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250 +ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXRlcmFsT3Bl +cmFuZCIgdHlwZT0idG5zOkxpdGVyYWxPcGVyYW5kIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu +YW1lPSJBdHRyaWJ1dGVPcGVyYW5kIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZh +bHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkZpbHRlck9wZXJhbmQiPg0KICAg +ICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZUlkIiB0 +eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iQWxpYXMiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIw +IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCcm93c2VQ +YXRoIiB0eXBlPSJ0bnM6UmVsYXRpdmVQYXRoIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl +IiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkF0dHJpYnV0ZUlkIiB0eXBlPSJ4czp1 +bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9 +IkluZGV4UmFuZ2UiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 +ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAg +IDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50 +IG5hbWU9IkF0dHJpYnV0ZU9wZXJhbmQiIHR5cGU9InRuczpBdHRyaWJ1dGVPcGVyYW5kIiAvPg0K +DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJTaW1wbGVBdHRyaWJ1dGVPcGVyYW5kIj4NCiAgICA8 +eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFz +ZT0idG5zOkZpbHRlck9wZXJhbmQiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iVHlwZURlZmluaXRpb25JZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5P +Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9 +IkJyb3dzZVBhdGgiIHR5cGU9InVhOkxpc3RPZlF1YWxpZmllZE5hbWUiIG1pbk9jY3Vycz0iMCIg +bmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXR0cmlidXRl +SWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iSW5kZXhSYW5nZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpl +eHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4N +CiAgPHhzOmVsZW1lbnQgbmFtZT0iU2ltcGxlQXR0cmlidXRlT3BlcmFuZCIgdHlwZT0idG5zOlNp +bXBsZUF0dHJpYnV0ZU9wZXJhbmQiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RP +ZlNpbXBsZUF0dHJpYnV0ZU9wZXJhbmQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IlNpbXBsZUF0dHJpYnV0ZU9wZXJhbmQiIHR5cGU9InRuczpTaW1wbGVBdHRy +aWJ1dGVPcGVyYW5kIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJs +ZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8 +eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZTaW1wbGVBdHRyaWJ1dGVPcGVyYW5kIiB0eXBlPSJ0bnM6 +TGlzdE9mU2ltcGxlQXR0cmlidXRlT3BlcmFuZCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVu +dD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ29udGVudEZpbHRlckVsZW1lbnRSZXN1bHQi +Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXR1c0NvZGUi +IHR5cGU9InVhOlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9Ik9wZXJhbmRTdGF0dXNDb2RlcyIgdHlwZT0idWE6TGlzdE9mU3RhdHVzQ29kZSIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik9w +ZXJhbmREaWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5P +Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6 +Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkNvbnRlbnRGaWx0ZXJFbGVtZW50UmVz +dWx0IiB0eXBlPSJ0bnM6Q29udGVudEZpbHRlckVsZW1lbnRSZXN1bHQiIC8+DQoNCiAgPHhzOmNv +bXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkNvbnRlbnRGaWx0ZXJFbGVtZW50UmVzdWx0Ij4NCiAgICA8 +eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDb250ZW50RmlsdGVyRWxlbWVu +dFJlc3VsdCIgdHlwZT0idG5zOkNvbnRlbnRGaWx0ZXJFbGVtZW50UmVzdWx0IiBtaW5PY2N1cnM9 +IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl +cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZD +b250ZW50RmlsdGVyRWxlbWVudFJlc3VsdCIgdHlwZT0idG5zOkxpc3RPZkNvbnRlbnRGaWx0ZXJF +bGVtZW50UmVzdWx0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21w +bGV4VHlwZSBuYW1lPSJDb250ZW50RmlsdGVyUmVzdWx0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbGVtZW50UmVzdWx0cyIgdHlwZT0idG5zOkxpc3RPZkNv +bnRlbnRGaWx0ZXJFbGVtZW50UmVzdWx0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRWxlbWVudERpYWdub3N0aWNJbmZvcyIgdHlwZT0i +dWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+ +DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg +bmFtZT0iQ29udGVudEZpbHRlclJlc3VsdCIgdHlwZT0idG5zOkNvbnRlbnRGaWx0ZXJSZXN1bHQi +IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlBhcnNpbmdSZXN1bHQiPg0KICAgIDx4czpz +ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXR1c0NvZGUiIHR5cGU9InVhOlN0 +YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFT +dGF0dXNDb2RlcyIgdHlwZT0idWE6TGlzdE9mU3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiBuaWxs +YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFEaWFnbm9zdGljSW5m +b3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl +PSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 +czplbGVtZW50IG5hbWU9IlBhcnNpbmdSZXN1bHQiIHR5cGU9InRuczpQYXJzaW5nUmVzdWx0IiAv +Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZQYXJzaW5nUmVzdWx0Ij4NCiAgICA8 +eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQYXJzaW5nUmVzdWx0IiB0eXBl +PSJ0bnM6UGFyc2luZ1Jlc3VsdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIg +bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw +ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUGFyc2luZ1Jlc3VsdCIgdHlwZT0idG5zOkxp +c3RPZlBhcnNpbmdSZXN1bHQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhz +OmNvbXBsZXhUeXBlIG5hbWU9IlF1ZXJ5Rmlyc3RSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVz +dEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IlZpZXciIHR5cGU9InRuczpWaWV3RGVzY3JpcHRpb24iIG1pbk9jY3Vycz0iMCIg +bmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOb2RlVHlwZXMiIHR5 +cGU9InRuczpMaXN0T2ZOb2RlVHlwZURlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl +PSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRmlsdGVyIiB0eXBlPSJ0bnM6Q29u +dGVudEZpbHRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9Ik1heERhdGFTZXRzVG9SZXR1cm4iIHR5cGU9InhzOnVuc2lnbmVkSW50IiBt +aW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYXhSZWZlcmVuY2VzVG9S +ZXR1cm4iIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpz +ZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUXVlcnlG +aXJzdFJlcXVlc3QiIHR5cGU9InRuczpRdWVyeUZpcnN0UmVxdWVzdCIgLz4NCg0KICA8eHM6Y29t +cGxleFR5cGUgbmFtZT0iUXVlcnlGaXJzdFJlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNl +SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iUXVlcnlEYXRhU2V0cyIgdHlwZT0idG5zOkxpc3RPZlF1ZXJ5RGF0YVNldCIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNv +bnRpbnVhdGlvblBvaW50IiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0iMCIgbmls +bGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQYXJzaW5nUmVzdWx0cyIg +dHlwZT0idG5zOkxpc3RPZlBhcnNpbmdSZXN1bHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy +dWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGljSW5mb3MiIHR5cGU9InVh +Okxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRmlsdGVyUmVzdWx0IiB0eXBlPSJ0bnM6Q29udGVudEZp +bHRlclJlc3VsdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl +cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJRdWVyeUZp +cnN0UmVzcG9uc2UiIHR5cGU9InRuczpRdWVyeUZpcnN0UmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNv +bXBsZXhUeXBlIG5hbWU9IlF1ZXJ5TmV4dFJlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVh +ZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iUmVsZWFzZUNvbnRpbnVhdGlvblBvaW50IiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1 +cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDb250aW51YXRpb25Qb2ludCIgdHlw +ZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 +IlF1ZXJ5TmV4dFJlcXVlc3QiIHR5cGU9InRuczpRdWVyeU5leHRSZXF1ZXN0IiAvPg0KDQogIDx4 +czpjb21wbGV4VHlwZSBuYW1lPSJRdWVyeU5leHRSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNl +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNw +b25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IlF1ZXJ5RGF0YVNldHMiIHR5cGU9InRuczpMaXN0T2ZRdWVyeURhdGFTZXQi +IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l +PSJSZXZpc2VkQ29udGludWF0aW9uUG9pbnQiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgbWluT2Nj +dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv +bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJRdWVyeU5leHRSZXNwb25zZSIgdHlwZT0i +dG5zOlF1ZXJ5TmV4dFJlc3BvbnNlIiAvPg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJUaW1l +c3RhbXBzVG9SZXR1cm4iPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0K +ICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTb3VyY2VfMCIgLz4NCiAgICAgIDx4czplbnVt +ZXJhdGlvbiB2YWx1ZT0iU2VydmVyXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9 +IkJvdGhfMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTmVpdGhlcl8zIiAvPg0K +ICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJbnZhbGlkXzQiIC8+DQogICAgPC94czpyZXN0 +cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJUaW1lc3Rh +bXBzVG9SZXR1cm4iIHR5cGU9InRuczpUaW1lc3RhbXBzVG9SZXR1cm4iIC8+DQoNCiAgPHhzOmNv +bXBsZXhUeXBlIG5hbWU9IlJlYWRWYWx1ZUlkIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJOb2RlSWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBu +aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkF0dHJpYnV0ZUlkIiB0 +eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iSW5kZXhSYW5nZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl +PSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YUVuY29kaW5nIiB0eXBlPSJ1 +YTpRdWFsaWZpZWROYW1lIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv +eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJl +YWRWYWx1ZUlkIiB0eXBlPSJ0bnM6UmVhZFZhbHVlSWQiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl +IG5hbWU9Ikxpc3RPZlJlYWRWYWx1ZUlkIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJSZWFkVmFsdWVJZCIgdHlwZT0idG5zOlJlYWRWYWx1ZUlkIiBtaW5PY2N1 +cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz +OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0 +T2ZSZWFkVmFsdWVJZCIgdHlwZT0idG5zOkxpc3RPZlJlYWRWYWx1ZUlkIiBuaWxsYWJsZT0idHJ1 +ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWFkUmVxdWVzdCI+ +DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRl +ciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi +IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYXhBZ2UiIHR5cGU9InhzOmRvdWJsZSIgbWlu +T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGltZXN0YW1wc1RvUmV0dXJu +IiB0eXBlPSJ0bnM6VGltZXN0YW1wc1RvUmV0dXJuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJOb2Rlc1RvUmVhZCIgdHlwZT0idG5zOkxpc3RPZlJlYWRWYWx1ZUlk +IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQog +IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlYWRSZXF1ZXN0IiB0eXBl +PSJ0bnM6UmVhZFJlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlYWRSZXNw +b25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9u +c2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJs +ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3VsdHMiIHR5cGU9InVhOkxp +c3RPZkRhdGFWYWx1ZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4 +czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3Rp +Y0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j +ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVhZFJlc3BvbnNl +IiB0eXBlPSJ0bnM6UmVhZFJlc3BvbnNlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJI +aXN0b3J5UmVhZFZhbHVlSWQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9Ik5vZGVJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0 +cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSW5kZXhSYW5nZSIgdHlwZT0ieHM6c3Ry +aW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iRGF0YUVuY29kaW5nIiB0eXBlPSJ1YTpRdWFsaWZpZWROYW1lIiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29udGludWF0aW9u +UG9pbnQiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 +ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl +bWVudCBuYW1lPSJIaXN0b3J5UmVhZFZhbHVlSWQiIHR5cGU9InRuczpIaXN0b3J5UmVhZFZhbHVl +SWQiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkhpc3RvcnlSZWFkVmFsdWVJ +ZCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yeVJl +YWRWYWx1ZUlkIiB0eXBlPSJ0bnM6SGlzdG9yeVJlYWRWYWx1ZUlkIiBtaW5PY2N1cnM9IjAiIG1h +eE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNl +Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZIaXN0b3J5 +UmVhZFZhbHVlSWQiIHR5cGU9InRuczpMaXN0T2ZIaXN0b3J5UmVhZFZhbHVlSWQiIG5pbGxhYmxl +PSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikhpc3RvcnlS +ZWFkUmVzdWx0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJT +dGF0dXNDb2RlIiB0eXBlPSJ1YTpTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJDb250aW51YXRpb25Qb2ludCIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5 +IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt +ZT0iSGlzdG9yeURhdGEiIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBu +aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl +Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJIaXN0b3J5UmVhZFJlc3VsdCIgdHlwZT0idG5zOkhpc3Rv +cnlSZWFkUmVzdWx0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZIaXN0b3J5 +UmVhZFJlc3VsdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +SGlzdG9yeVJlYWRSZXN1bHQiIHR5cGU9InRuczpIaXN0b3J5UmVhZFJlc3VsdCIgbWluT2NjdXJz +PSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpz +ZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9m +SGlzdG9yeVJlYWRSZXN1bHQiIHR5cGU9InRuczpMaXN0T2ZIaXN0b3J5UmVhZFJlc3VsdCIgbmls +bGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iSGlz +dG9yeVJlYWREZXRhaWxzIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4N +CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yeVJlYWREZXRh +aWxzIiB0eXBlPSJ0bnM6SGlzdG9yeVJlYWREZXRhaWxzIiAvPg0KDQogIDx4czpjb21wbGV4VHlw +ZSBuYW1lPSJSZWFkRXZlbnREZXRhaWxzIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9 +ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkhpc3RvcnlSZWFkRGV0YWls +cyI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJO +dW1WYWx1ZXNQZXJOb2RlIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0K ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXJ0VGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUi IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmRUaW1lIiB0 eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50 -IG5hbWU9IlByb2Nlc3NpbmdJbnRlcnZhbCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAi -IC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWdncmVnYXRlVHlwZSIgdHlwZT0idWE6 -TGlzdE9mTm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAg -IDx4czplbGVtZW50IG5hbWU9IkFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24iIHR5cGU9InRuczpBZ2dy -ZWdhdGVDb25maWd1cmF0aW9uIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg -ICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21w -bGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVh -ZFByb2Nlc3NlZERldGFpbHMiIHR5cGU9InRuczpSZWFkUHJvY2Vzc2VkRGV0YWlscyIgLz4NCg0K -ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVhZEF0VGltZURldGFpbHMiPg0KICAgIDx4czpjb21w -bGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6 -SGlzdG9yeVJlYWREZXRhaWxzIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4 -czplbGVtZW50IG5hbWU9IlJlcVRpbWVzIiB0eXBlPSJ1YTpMaXN0T2ZEYXRlVGltZSIgbWluT2Nj -dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJV -c2VTaW1wbGVCb3VuZHMiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg -ICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxl -eENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlYWRB -dFRpbWVEZXRhaWxzIiB0eXBlPSJ0bnM6UmVhZEF0VGltZURldGFpbHMiIC8+DQoNCiAgPHhzOmNv -bXBsZXhUeXBlIG5hbWU9IlJlYWRBbm5vdGF0aW9uRGF0YURldGFpbHMiPg0KICAgIDx4czpjb21w -bGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6 -SGlzdG9yeVJlYWREZXRhaWxzIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4 -czplbGVtZW50IG5hbWU9IlJlcVRpbWVzIiB0eXBlPSJ1YTpMaXN0T2ZEYXRlVGltZSIgbWluT2Nj -dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAg -IDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlYWRBbm5vdGF0aW9uRGF0YURldGFpbHMiIHR5 -cGU9InRuczpSZWFkQW5ub3RhdGlvbkRhdGFEZXRhaWxzIiAvPg0KDQogIDx4czpjb21wbGV4VHlw -ZSBuYW1lPSJIaXN0b3J5RGF0YSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iRGF0YVZhbHVlcyIgdHlwZT0idWE6TGlzdE9mRGF0YVZhbHVlIiBtaW5PY2N1cnM9 -IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikhpc3RvcnlEYXRhIiB0eXBlPSJ0bnM6SGlzdG9y -eURhdGEiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vZGlmaWNhdGlvbkluZm8iPg0K -ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1vZGlmaWNhdGlvblRp -bWUiIHR5cGU9InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJVcGRhdGVUeXBlIiB0eXBlPSJ0bnM6SGlzdG9yeVVwZGF0ZVR5cGUiIG1pbk9jY3Vy -cz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVzZXJOYW1lIiB0eXBlPSJ4czpzdHJp -bmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4N -CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTW9kaWZpY2F0aW9uSW5m -byIgdHlwZT0idG5zOk1vZGlmaWNhdGlvbkluZm8iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h -bWU9Ikxpc3RPZk1vZGlmaWNhdGlvbkluZm8iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9Ik1vZGlmaWNhdGlvbkluZm8iIHR5cGU9InRuczpNb2RpZmljYXRpb25J -bmZvIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu -dCBuYW1lPSJMaXN0T2ZNb2RpZmljYXRpb25JbmZvIiB0eXBlPSJ0bnM6TGlzdE9mTW9kaWZpY2F0 -aW9uSW5mbyIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5 -cGUgbmFtZT0iSGlzdG9yeU1vZGlmaWVkRGF0YSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1p -eGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpIaXN0b3J5RGF0YSI+ -DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNb2Rp -ZmljYXRpb25JbmZvcyIgdHlwZT0idG5zOkxpc3RPZk1vZGlmaWNhdGlvbkluZm8iIG1pbk9jY3Vy -cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8 -L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhU -eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJIaXN0b3J5TW9kaWZpZWREYXRhIiB0eXBlPSJ0bnM6 -SGlzdG9yeU1vZGlmaWVkRGF0YSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iSGlzdG9y -eUV2ZW50Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFdmVu -dHMiIHR5cGU9InRuczpMaXN0T2ZIaXN0b3J5RXZlbnRGaWVsZExpc3QiIG1pbk9jY3Vycz0iMCIg +IG5hbWU9IkZpbHRlciIgdHlwZT0idG5zOkV2ZW50RmlsdGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNp +b24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz +OmVsZW1lbnQgbmFtZT0iUmVhZEV2ZW50RGV0YWlscyIgdHlwZT0idG5zOlJlYWRFdmVudERldGFp +bHMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlYWRSYXdNb2RpZmllZERldGFpbHMi +Pg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVu +c2lvbiBiYXNlPSJ0bnM6SGlzdG9yeVJlYWREZXRhaWxzIj4NCiAgICAgICAgPHhzOnNlcXVlbmNl +Pg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IklzUmVhZE1vZGlmaWVkIiB0eXBlPSJ4czpi +b29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3Rh +cnRUaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4 +czplbGVtZW50IG5hbWU9IkVuZFRpbWUiIHR5cGU9InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAi +IC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTnVtVmFsdWVzUGVyTm9kZSIgdHlwZT0i +eHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJSZXR1cm5Cb3VuZHMiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAg +ICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29t +cGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJl +YWRSYXdNb2RpZmllZERldGFpbHMiIHR5cGU9InRuczpSZWFkUmF3TW9kaWZpZWREZXRhaWxzIiAv +Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWFkUHJvY2Vzc2VkRGV0YWlscyI+DQogICAg +PHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJh +c2U9InRuczpIaXN0b3J5UmVhZERldGFpbHMiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAg +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhcnRUaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWlu +T2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkVuZFRpbWUiIHR5cGU9 +InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFt +ZT0iUHJvY2Vzc2luZ0ludGVydmFsIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4N +CiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBZ2dyZWdhdGVUeXBlIiB0eXBlPSJ1YTpMaXN0 +T2ZOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iQWdncmVnYXRlQ29uZmlndXJhdGlvbiIgdHlwZT0idG5zOkFnZ3JlZ2F0 +ZUNvbmZpZ3VyYXRpb24iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAg +IDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhD +b250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZWFkUHJv +Y2Vzc2VkRGV0YWlscyIgdHlwZT0idG5zOlJlYWRQcm9jZXNzZWREZXRhaWxzIiAvPg0KDQogIDx4 +czpjb21wbGV4VHlwZSBuYW1lPSJSZWFkQXRUaW1lRGV0YWlscyI+DQogICAgPHhzOmNvbXBsZXhD +b250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpIaXN0 +b3J5UmVhZERldGFpbHMiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iUmVxVGltZXMiIHR5cGU9InVhOkxpc3RPZkRhdGVUaW1lIiBtaW5PY2N1cnM9 +IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlVzZVNp +bXBsZUJvdW5kcyIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8 +L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29u +dGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVhZEF0VGlt +ZURldGFpbHMiIHR5cGU9InRuczpSZWFkQXRUaW1lRGV0YWlscyIgLz4NCg0KICA8eHM6Y29tcGxl +eFR5cGUgbmFtZT0iUmVhZEFubm90YXRpb25EYXRhRGV0YWlscyI+DQogICAgPHhzOmNvbXBsZXhD +b250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpIaXN0 +b3J5UmVhZERldGFpbHMiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iUmVxVGltZXMiIHR5cGU9InVhOkxpc3RPZkRhdGVUaW1lIiBtaW5PY2N1cnM9 +IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94 +czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlw +ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVhZEFubm90YXRpb25EYXRhRGV0YWlscyIgdHlwZT0i +dG5zOlJlYWRBbm5vdGF0aW9uRGF0YURldGFpbHMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h +bWU9Ikhpc3RvcnlEYXRhIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJEYXRhVmFsdWVzIiB0eXBlPSJ1YTpMaXN0T2ZEYXRhVmFsdWUiIG1pbk9jY3Vycz0iMCIg +bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw +ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yeURhdGEiIHR5cGU9InRuczpIaXN0b3J5RGF0 +YSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTW9kaWZpY2F0aW9uSW5mbyI+DQogICAg +PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9kaWZpY2F0aW9uVGltZSIg +dHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h +bWU9IlVwZGF0ZVR5cGUiIHR5cGU9InRuczpIaXN0b3J5VXBkYXRlVHlwZSIgbWluT2NjdXJzPSIw +IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlck5hbWUiIHR5cGU9InhzOnN0cmluZyIg +bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8 +L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNb2RpZmljYXRpb25JbmZvIiB0 +eXBlPSJ0bnM6TW9kaWZpY2F0aW9uSW5mbyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i +TGlzdE9mTW9kaWZpY2F0aW9uSW5mbyI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iTW9kaWZpY2F0aW9uSW5mbyIgdHlwZT0idG5zOk1vZGlmaWNhdGlvbkluZm8i +IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h +bWU9Ikxpc3RPZk1vZGlmaWNhdGlvbkluZm8iIHR5cGU9InRuczpMaXN0T2ZNb2RpZmljYXRpb25J +bmZvIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBu +YW1lPSJIaXN0b3J5TW9kaWZpZWREYXRhIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9 +ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkhpc3RvcnlEYXRhIj4NCiAg +ICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1vZGlmaWNh +dGlvbkluZm9zIiB0eXBlPSJ0bnM6TGlzdE9mTW9kaWZpY2F0aW9uSW5mbyIgbWluT2NjdXJzPSIw +IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6 +ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+ +DQogIDx4czplbGVtZW50IG5hbWU9Ikhpc3RvcnlNb2RpZmllZERhdGEiIHR5cGU9InRuczpIaXN0 +b3J5TW9kaWZpZWREYXRhIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJIaXN0b3J5RXZl +bnQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkV2ZW50cyIg +dHlwZT0idG5zOkxpc3RPZkhpc3RvcnlFdmVudEZpZWxkTGlzdCIgbWluT2NjdXJzPSIwIiBuaWxs +YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K +ICA8eHM6ZWxlbWVudCBuYW1lPSJIaXN0b3J5RXZlbnQiIHR5cGU9InRuczpIaXN0b3J5RXZlbnQi +IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikhpc3RvcnlSZWFkUmVxdWVzdCI+DQogICAg +PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlw +ZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJIaXN0b3J5UmVhZERldGFpbHMiIHR5cGU9InVhOkV4dGVu +c2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IlRpbWVzdGFtcHNUb1JldHVybiIgdHlwZT0idG5zOlRpbWVzdGFtcHNUb1Jl +dHVybiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVsZWFzZUNv +bnRpbnVhdGlvblBvaW50cyIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZXNUb1JlYWQiIHR5cGU9InRuczpMaXN0T2ZIaXN0b3J5 +UmVhZFZhbHVlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpz +ZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9y +eVJlYWRSZXF1ZXN0IiB0eXBlPSJ0bnM6SGlzdG9yeVJlYWRSZXF1ZXN0IiAvPg0KDQogIDx4czpj +b21wbGV4VHlwZSBuYW1lPSJIaXN0b3J5UmVhZFJlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3Bv +bnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iUmVzdWx0cyIgdHlwZT0idG5zOkxpc3RPZkhpc3RvcnlSZWFkUmVzdWx0IiBt +aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +RGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJz +PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs +ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJIaXN0b3J5UmVhZFJlc3BvbnNlIiB0eXBlPSJ0 +bnM6SGlzdG9yeVJlYWRSZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iV3Jp +dGVWYWx1ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9k +ZUlkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBdHRyaWJ1dGVJZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQi +IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkluZGV4UmFuZ2UiIHR5 +cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4 +czplbGVtZW50IG5hbWU9IlZhbHVlIiB0eXBlPSJ1YTpEYXRhVmFsdWUiIG1pbk9jY3Vycz0iMCIg +bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw +ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iV3JpdGVWYWx1ZSIgdHlwZT0idG5zOldyaXRlVmFsdWUi +IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZldyaXRlVmFsdWUiPg0KICAgIDx4 +czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IldyaXRlVmFsdWUiIHR5cGU9InRu +czpXcml0ZVZhbHVlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJs +ZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8 +eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZXcml0ZVZhbHVlIiB0eXBlPSJ0bnM6TGlzdE9mV3JpdGVW +YWx1ZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUg +bmFtZT0iV3JpdGVSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJz +PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVzVG9X +cml0ZSIgdHlwZT0idG5zOkxpc3RPZldyaXRlVmFsdWUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 +InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz +OmVsZW1lbnQgbmFtZT0iV3JpdGVSZXF1ZXN0IiB0eXBlPSJ0bnM6V3JpdGVSZXF1ZXN0IiAvPg0K +DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJXcml0ZVJlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVu +Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJl +c3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iUmVzdWx0cyIgdHlwZT0idWE6TGlzdE9mU3RhdHVzQ29kZSIgbWluT2Nj +dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdu +b3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIg bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw -ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yeUV2ZW50IiB0eXBlPSJ0bnM6SGlzdG9yeUV2 -ZW50IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJIaXN0b3J5UmVhZFJlcXVlc3QiPg0K +ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iV3JpdGVSZXNwb25zZSIgdHlwZT0idG5zOldyaXRlUmVz +cG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikhpc3RvcnlVcGRhdGVEZXRhaWxz +Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOb2RlSWQiIHR5 +cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz +OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJIaXN0 +b3J5VXBkYXRlRGV0YWlscyIgdHlwZT0idG5zOkhpc3RvcnlVcGRhdGVEZXRhaWxzIiAvPg0KDQog +IDx4czpzaW1wbGVUeXBlICBuYW1lPSJIaXN0b3J5VXBkYXRlVHlwZSI+DQogICAgPHhzOnJlc3Ry +aWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Iklu +c2VydF8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJSZXBsYWNlXzIiIC8+DQog +ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlVwZGF0ZV8zIiAvPg0KICAgICAgPHhzOmVudW1l +cmF0aW9uIHZhbHVlPSJEZWxldGVfNCIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hz +OnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikhpc3RvcnlVcGRhdGVUeXBlIiB0eXBl +PSJ0bnM6SGlzdG9yeVVwZGF0ZVR5cGUiIC8+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IlBl +cmZvcm1VcGRhdGVUeXBlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4N +CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSW5zZXJ0XzEiIC8+DQogICAgICA8eHM6ZW51 +bWVyYXRpb24gdmFsdWU9IlJlcGxhY2VfMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1 +ZT0iVXBkYXRlXzMiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlJlbW92ZV80IiAv +Pg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1l +bnQgbmFtZT0iUGVyZm9ybVVwZGF0ZVR5cGUiIHR5cGU9InRuczpQZXJmb3JtVXBkYXRlVHlwZSIg +Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVXBkYXRlRGF0YURldGFpbHMiPg0KICAgIDx4 +czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNl +PSJ0bnM6SGlzdG9yeVVwZGF0ZURldGFpbHMiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAg +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUGVyZm9ybUluc2VydFJlcGxhY2UiIHR5cGU9InRuczpQ +ZXJmb3JtVXBkYXRlVHlwZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50 +IG5hbWU9IlVwZGF0ZVZhbHVlcyIgdHlwZT0idWE6TGlzdE9mRGF0YVZhbHVlIiBtaW5PY2N1cnM9 +IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94 +czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlw +ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVXBkYXRlRGF0YURldGFpbHMiIHR5cGU9InRuczpVcGRh +dGVEYXRhRGV0YWlscyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVXBkYXRlU3RydWN0 +dXJlRGF0YURldGFpbHMiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0K +ICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6SGlzdG9yeVVwZGF0ZURldGFpbHMiPg0KICAg +ICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUGVyZm9ybUlu +c2VydFJlcGxhY2UiIHR5cGU9InRuczpQZXJmb3JtVXBkYXRlVHlwZSIgbWluT2NjdXJzPSIwIiAv +Pg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlVwZGF0ZVZhbHVlcyIgdHlwZT0idWE6TGlz +dE9mRGF0YVZhbHVlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8 +L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29u +dGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVXBkYXRlU3Ry +dWN0dXJlRGF0YURldGFpbHMiIHR5cGU9InRuczpVcGRhdGVTdHJ1Y3R1cmVEYXRhRGV0YWlscyIg +Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVXBkYXRlRXZlbnREZXRhaWxzIj4NCiAgICA8 +eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFz +ZT0idG5zOkhpc3RvcnlVcGRhdGVEZXRhaWxzIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAg +ICAgICAgIDx4czplbGVtZW50IG5hbWU9IlBlcmZvcm1JbnNlcnRSZXBsYWNlIiB0eXBlPSJ0bnM6 +UGVyZm9ybVVwZGF0ZVR5cGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJGaWx0ZXIiIHR5cGU9InRuczpFdmVudEZpbHRlciIgbWluT2NjdXJzPSIwIiBuaWxs +YWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFdmVudERhdGEiIHR5 +cGU9InRuczpMaXN0T2ZIaXN0b3J5RXZlbnRGaWVsZExpc3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFi +bGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lv +bj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6 +ZWxlbWVudCBuYW1lPSJVcGRhdGVFdmVudERldGFpbHMiIHR5cGU9InRuczpVcGRhdGVFdmVudERl +dGFpbHMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRlbGV0ZVJhd01vZGlmaWVkRGV0 +YWlscyI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6 +ZXh0ZW5zaW9uIGJhc2U9InRuczpIaXN0b3J5VXBkYXRlRGV0YWlscyI+DQogICAgICAgIDx4czpz +ZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJc0RlbGV0ZU1vZGlmaWVkIiB0 +eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iU3RhcnRUaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAg +ICAgICAgIDx4czplbGVtZW50IG5hbWU9IkVuZFRpbWUiIHR5cGU9InhzOmRhdGVUaW1lIiBtaW5P +Y2N1cnM9IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lv +bj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6 +ZWxlbWVudCBuYW1lPSJEZWxldGVSYXdNb2RpZmllZERldGFpbHMiIHR5cGU9InRuczpEZWxldGVS +YXdNb2RpZmllZERldGFpbHMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRlbGV0ZUF0 +VGltZURldGFpbHMiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAg +ICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6SGlzdG9yeVVwZGF0ZURldGFpbHMiPg0KICAgICAg +ICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxVGltZXMiIHR5 +cGU9InVhOkxpc3RPZkRhdGVUaW1lIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpj +b21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i +RGVsZXRlQXRUaW1lRGV0YWlscyIgdHlwZT0idG5zOkRlbGV0ZUF0VGltZURldGFpbHMiIC8+DQoN +CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRlbGV0ZUV2ZW50RGV0YWlscyI+DQogICAgPHhzOmNv +bXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRu +czpIaXN0b3J5VXBkYXRlRGV0YWlscyI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJFdmVudElkcyIgdHlwZT0idWE6TGlzdE9mQnl0ZVN0cmluZyIg +bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4N +CiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6 +Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRlbGV0ZUV2ZW50RGV0YWlscyIgdHlw +ZT0idG5zOkRlbGV0ZUV2ZW50RGV0YWlscyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i +SGlzdG9yeVVwZGF0ZVJlc3VsdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iU3RhdHVzQ29kZSIgdHlwZT0idWE6U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAv +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iT3BlcmF0aW9uUmVzdWx0cyIgdHlwZT0idWE6TGlz +dE9mU3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4 +czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3Rp +Y0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j +ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yeVVwZGF0 +ZVJlc3VsdCIgdHlwZT0idG5zOkhpc3RvcnlVcGRhdGVSZXN1bHQiIC8+DQoNCiAgPHhzOmNvbXBs +ZXhUeXBlIG5hbWU9Ikxpc3RPZkhpc3RvcnlVcGRhdGVSZXN1bHQiPg0KICAgIDx4czpzZXF1ZW5j +ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikhpc3RvcnlVcGRhdGVSZXN1bHQiIHR5cGU9InRu +czpIaXN0b3J5VXBkYXRlUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVk +IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU +eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZIaXN0b3J5VXBkYXRlUmVzdWx0IiB0eXBl +PSJ0bnM6TGlzdE9mSGlzdG9yeVVwZGF0ZVJlc3VsdCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxl +bWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iSGlzdG9yeVVwZGF0ZVJlcXVlc3QiPg0K ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIi IHR5cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yeVJlYWREZXRhaWxzIiB0eXBlPSJ1YTpF -eHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJUaW1lc3RhbXBzVG9SZXR1cm4iIHR5cGU9InRuczpUaW1lc3RhbXBz -VG9SZXR1cm4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlbGVh -c2VDb250aW51YXRpb25Qb2ludHMiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVzVG9SZWFkIiB0eXBlPSJ0bnM6TGlzdE9mSGlz -dG9yeVJlYWRWYWx1ZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv -eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikhp -c3RvcnlSZWFkUmVxdWVzdCIgdHlwZT0idG5zOkhpc3RvcnlSZWFkUmVxdWVzdCIgLz4NCg0KICA8 -eHM6Y29tcGxleFR5cGUgbmFtZT0iSGlzdG9yeVJlYWRSZXNwb25zZSI+DQogICAgPHhzOnNlcXVl -bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpS -ZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9IlJlc3VsdHMiIHR5cGU9InRuczpMaXN0T2ZIaXN0b3J5UmVhZFJlc3Vs -dCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IkRpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9j -Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpj -b21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yeVJlYWRSZXNwb25zZSIgdHlw -ZT0idG5zOkhpc3RvcnlSZWFkUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9 -IldyaXRlVmFsdWUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -Ik5vZGVJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXR0cmlidXRlSWQiIHR5cGU9InhzOnVuc2lnbmVk -SW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbmRleFJhbmdl -IiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1ZSIgdHlwZT0idWE6RGF0YVZhbHVlIiBtaW5PY2N1cnM9 -IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IldyaXRlVmFsdWUiIHR5cGU9InRuczpXcml0ZVZh -bHVlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZXcml0ZVZhbHVlIj4NCiAg -ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJXcml0ZVZhbHVlIiB0eXBl -PSJ0bnM6V3JpdGVWYWx1ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmls -bGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N -CiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mV3JpdGVWYWx1ZSIgdHlwZT0idG5zOkxpc3RPZldy -aXRlVmFsdWUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhU -eXBlIG5hbWU9IldyaXRlUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9j -Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOb2Rl -c1RvV3JpdGUiIHR5cGU9InRuczpMaXN0T2ZXcml0ZVZhbHVlIiBtaW5PY2N1cnM9IjAiIG5pbGxh -YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog -IDx4czplbGVtZW50IG5hbWU9IldyaXRlUmVxdWVzdCIgdHlwZT0idG5zOldyaXRlUmVxdWVzdCIg -Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iV3JpdGVSZXNwb25zZSI+DQogICAgPHhzOnNl -cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRu -czpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IlJlc3VsdHMiIHR5cGU9InVhOkxpc3RPZlN0YXR1c0NvZGUiIG1p -bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJE -aWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9 -IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IldyaXRlUmVzcG9uc2UiIHR5cGU9InRuczpXcml0 -ZVJlc3BvbnNlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJIaXN0b3J5VXBkYXRlRGV0 -YWlscyI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZUlk -IiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg -PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i -SGlzdG9yeVVwZGF0ZURldGFpbHMiIHR5cGU9InRuczpIaXN0b3J5VXBkYXRlRGV0YWlscyIgLz4N -Cg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iSGlzdG9yeVVwZGF0ZVR5cGUiPg0KICAgIDx4czpy -ZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVl -PSJJbnNlcnRfMSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUmVwbGFjZV8yIiAv -Pg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJVcGRhdGVfMyIgLz4NCiAgICAgIDx4czpl -bnVtZXJhdGlvbiB2YWx1ZT0iRGVsZXRlXzQiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAg -PC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJIaXN0b3J5VXBkYXRlVHlwZSIg -dHlwZT0idG5zOkhpc3RvcnlVcGRhdGVUeXBlIiAvPg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1l -PSJQZXJmb3JtVXBkYXRlVHlwZSI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmlu -ZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ikluc2VydF8xIiAvPg0KICAgICAgPHhz -OmVudW1lcmF0aW9uIHZhbHVlPSJSZXBsYWNlXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24g -dmFsdWU9IlVwZGF0ZV8zIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJSZW1vdmVf -NCIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czpl -bGVtZW50IG5hbWU9IlBlcmZvcm1VcGRhdGVUeXBlIiB0eXBlPSJ0bnM6UGVyZm9ybVVwZGF0ZVR5 -cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlVwZGF0ZURhdGFEZXRhaWxzIj4NCiAg +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yeVVwZGF0ZURldGFpbHMiIHR5cGU9InVh +Okxpc3RPZkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N +CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu +YW1lPSJIaXN0b3J5VXBkYXRlUmVxdWVzdCIgdHlwZT0idG5zOkhpc3RvcnlVcGRhdGVSZXF1ZXN0 +IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJIaXN0b3J5VXBkYXRlUmVzcG9uc2UiPg0K +ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVy +IiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi +IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ0bnM6TGlzdE9mSGlz +dG9yeVVwZGF0ZVJlc3VsdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg +IDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25v +c3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1 +ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yeVVw +ZGF0ZVJlc3BvbnNlIiB0eXBlPSJ0bnM6SGlzdG9yeVVwZGF0ZVJlc3BvbnNlIiAvPg0KDQogIDx4 +czpjb21wbGV4VHlwZSBuYW1lPSJDYWxsTWV0aG9kUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNl +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iT2JqZWN0SWQiIHR5cGU9InVhOk5vZGVJZCIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1l +dGhvZElkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbnB1dEFyZ3VtZW50cyIgdHlwZT0idWE6TGlzdE9m +VmFyaWFudCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVl +bmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJDYWxsTWV0aG9k +UmVxdWVzdCIgdHlwZT0idG5zOkNhbGxNZXRob2RSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4 +VHlwZSBuYW1lPSJMaXN0T2ZDYWxsTWV0aG9kUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0K +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ2FsbE1ldGhvZFJlcXVlc3QiIHR5cGU9InRuczpDYWxs +TWV0aG9kUmVxdWVzdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFi +bGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg +PHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mQ2FsbE1ldGhvZFJlcXVlc3QiIHR5cGU9InRuczpMaXN0 +T2ZDYWxsTWV0aG9kUmVxdWVzdCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8 +eHM6Y29tcGxleFR5cGUgbmFtZT0iQ2FsbE1ldGhvZFJlc3VsdCI+DQogICAgPHhzOnNlcXVlbmNl +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhdHVzQ29kZSIgdHlwZT0idWE6U3RhdHVzQ29k +ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSW5wdXRBcmd1bWVu +dFJlc3VsdHMiIHR5cGU9InVhOkxpc3RPZlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFi +bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbnB1dEFyZ3VtZW50RGlhZ25v +c3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBu +aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik91dHB1dEFyZ3VtZW50 +cyIgdHlwZT0idWE6TGlzdE9mVmFyaWFudCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg +Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu +dCBuYW1lPSJDYWxsTWV0aG9kUmVzdWx0IiB0eXBlPSJ0bnM6Q2FsbE1ldGhvZFJlc3VsdCIgLz4N +Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQ2FsbE1ldGhvZFJlc3VsdCI+DQogICAg +PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ2FsbE1ldGhvZFJlc3VsdCIg +dHlwZT0idG5zOkNhbGxNZXRob2RSZXN1bHQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJv +dW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29t +cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkNhbGxNZXRob2RSZXN1bHQiIHR5 +cGU9InRuczpMaXN0T2ZDYWxsTWV0aG9kUmVzdWx0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVt +ZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJDYWxsUmVxdWVzdCI+DQogICAgPHhzOnNl +cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5z +OlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJNZXRob2RzVG9DYWxsIiB0eXBlPSJ0bnM6TGlzdE9mQ2FsbE1ldGhv +ZFJlcXVlc3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1 +ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQ2FsbFJlcXVl +c3QiIHR5cGU9InRuczpDYWxsUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i +Q2FsbFJlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l +PSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzdWx0cyIgdHlw +ZT0idG5zOkxpc3RPZkNhbGxNZXRob2RSZXN1bHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy +dWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGljSW5mb3MiIHR5cGU9InVh +Okxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h +bWU9IkNhbGxSZXNwb25zZSIgdHlwZT0idG5zOkNhbGxSZXNwb25zZSIgLz4NCg0KICA8eHM6c2lt +cGxlVHlwZSAgbmFtZT0iTW9uaXRvcmluZ01vZGUiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNl +PSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEaXNhYmxlZF8wIiAv +Pg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTYW1wbGluZ18xIiAvPg0KICAgICAgPHhz +OmVudW1lcmF0aW9uIHZhbHVlPSJSZXBvcnRpbmdfMiIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9u +Pg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik1vbml0b3JpbmdNb2Rl +IiB0eXBlPSJ0bnM6TW9uaXRvcmluZ01vZGUiIC8+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9 +IkRhdGFDaGFuZ2VUcmlnZ2VyIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5n +Ij4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU3RhdHVzXzAiIC8+DQogICAgICA8eHM6 +ZW51bWVyYXRpb24gdmFsdWU9IlN0YXR1c1ZhbHVlXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRp +b24gdmFsdWU9IlN0YXR1c1ZhbHVlVGltZXN0YW1wXzIiIC8+DQogICAgPC94czpyZXN0cmljdGlv +bj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhQ2hhbmdlVHJp +Z2dlciIgdHlwZT0idG5zOkRhdGFDaGFuZ2VUcmlnZ2VyIiAvPg0KDQogIDx4czpzaW1wbGVUeXBl +ICBuYW1lPSJEZWFkYmFuZFR5cGUiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJp +bmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJOb25lXzAiIC8+DQogICAgICA8eHM6 +ZW51bWVyYXRpb24gdmFsdWU9IkFic29sdXRlXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24g +dmFsdWU9IlBlcmNlbnRfMiIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBs +ZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRlYWRiYW5kVHlwZSIgdHlwZT0idG5zOkRlYWRi +YW5kVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTW9uaXRvcmluZ0ZpbHRlciI+ +DQogICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5 +cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik1vbml0b3JpbmdGaWx0ZXIiIHR5cGU9InRuczpNb25p +dG9yaW5nRmlsdGVyIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEYXRhQ2hhbmdlRmls +dGVyIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpl +eHRlbnNpb24gYmFzZT0idG5zOk1vbml0b3JpbmdGaWx0ZXIiPg0KICAgICAgICA8eHM6c2VxdWVu +Y2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJpZ2dlciIgdHlwZT0idG5zOkRhdGFD +aGFuZ2VUcmlnZ2VyIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFt +ZT0iRGVhZGJhbmRUeXBlIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0K +ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRlYWRiYW5kVmFsdWUiIHR5cGU9InhzOmRvdWJs +ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpl +eHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4N +CiAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YUNoYW5nZUZpbHRlciIgdHlwZT0idG5zOkRhdGFDaGFu +Z2VGaWx0ZXIiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkV2ZW50RmlsdGVyIj4NCiAg ICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24g -YmFzZT0idG5zOkhpc3RvcnlVcGRhdGVEZXRhaWxzIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0K -ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlBlcmZvcm1JbnNlcnRSZXBsYWNlIiB0eXBlPSJ0 -bnM6UGVyZm9ybVVwZGF0ZVR5cGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJVcGRhdGVWYWx1ZXMiIHR5cGU9InVhOkxpc3RPZkRhdGFWYWx1ZSIgbWluT2Nj +YmFzZT0idG5zOk1vbml0b3JpbmdGaWx0ZXIiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAg +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VsZWN0Q2xhdXNlcyIgdHlwZT0idG5zOkxpc3RPZlNp +bXBsZUF0dHJpYnV0ZU9wZXJhbmQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog +ICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iV2hlcmVDbGF1c2UiIHR5cGU9InRuczpDb250ZW50 +RmlsdGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNl +cXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4N +CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRXZlbnRGaWx0ZXIiIHR5 +cGU9InRuczpFdmVudEZpbHRlciIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQWdncmVn +YXRlQ29uZmlndXJhdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iVXNlU2VydmVyQ2FwYWJpbGl0aWVzRGVmYXVsdHMiIHR5cGU9InhzOmJvb2xlYW4iIG1p +bk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRyZWF0VW5jZXJ0YWluQXNC +YWQiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9IlBlcmNlbnREYXRhQmFkIiB0eXBlPSJ4czp1bnNpZ25lZEJ5dGUiIG1pbk9jY3Vycz0i +MCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlBlcmNlbnREYXRhR29vZCIgdHlwZT0ieHM6 +dW5zaWduZWRCeXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJV +c2VTbG9wZWRFeHRyYXBvbGF0aW9uIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+ +DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg +bmFtZT0iQWdncmVnYXRlQ29uZmlndXJhdGlvbiIgdHlwZT0idG5zOkFnZ3JlZ2F0ZUNvbmZpZ3Vy +YXRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFnZ3JlZ2F0ZUZpbHRlciI+DQog +ICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9u +IGJhc2U9InRuczpNb25pdG9yaW5nRmlsdGVyIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAg +ICAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXJ0VGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1p +bk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBZ2dyZWdhdGVUeXBl +IiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHJvY2Vzc2luZ0ludGVydmFsIiB0eXBlPSJ4czpkb3Vi +bGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBZ2dyZWdh +dGVDb25maWd1cmF0aW9uIiB0eXBlPSJ0bnM6QWdncmVnYXRlQ29uZmlndXJhdGlvbiIgbWluT2Nj dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAg IDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlVwZGF0ZURhdGFEZXRhaWxzIiB0eXBlPSJ0bnM6 -VXBkYXRlRGF0YURldGFpbHMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlVwZGF0ZVN0 -cnVjdHVyZURhdGFEZXRhaWxzIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNl -Ij4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkhpc3RvcnlVcGRhdGVEZXRhaWxzIj4N -CiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlBlcmZv -cm1JbnNlcnRSZXBsYWNlIiB0eXBlPSJ0bnM6UGVyZm9ybVVwZGF0ZVR5cGUiIG1pbk9jY3Vycz0i -MCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVcGRhdGVWYWx1ZXMiIHR5cGU9InVh -Okxpc3RPZkRhdGFWYWx1ZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg -ICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxl -eENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlVwZGF0 -ZVN0cnVjdHVyZURhdGFEZXRhaWxzIiB0eXBlPSJ0bnM6VXBkYXRlU3RydWN0dXJlRGF0YURldGFp -bHMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlVwZGF0ZUV2ZW50RGV0YWlscyI+DQog -ICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9u -IGJhc2U9InRuczpIaXN0b3J5VXBkYXRlRGV0YWlscyI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4N -CiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQZXJmb3JtSW5zZXJ0UmVwbGFjZSIgdHlwZT0i -dG5zOlBlcmZvcm1VcGRhdGVUeXBlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iRmlsdGVyIiB0eXBlPSJ0bnM6RXZlbnRGaWx0ZXIiIG1pbk9jY3Vycz0iMCIg -bmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRXZlbnREYXRh -IiB0eXBlPSJ0bnM6TGlzdE9mSGlzdG9yeUV2ZW50RmllbGRMaXN0IiBtaW5PY2N1cnM9IjAiIG5p -bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRl -bnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg -PHhzOmVsZW1lbnQgbmFtZT0iVXBkYXRlRXZlbnREZXRhaWxzIiB0eXBlPSJ0bnM6VXBkYXRlRXZl -bnREZXRhaWxzIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEZWxldGVSYXdNb2RpZmll -ZERldGFpbHMiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAg -PHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6SGlzdG9yeVVwZGF0ZURldGFpbHMiPg0KICAgICAgICA8 -eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXNEZWxldGVNb2RpZmll -ZCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVt -ZW50IG5hbWU9IlN0YXJ0VGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4N -CiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmRUaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIg -bWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRl -bnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg -PHhzOmVsZW1lbnQgbmFtZT0iRGVsZXRlUmF3TW9kaWZpZWREZXRhaWxzIiB0eXBlPSJ0bnM6RGVs -ZXRlUmF3TW9kaWZpZWREZXRhaWxzIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEZWxl -dGVBdFRpbWVEZXRhaWxzIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4N -CiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkhpc3RvcnlVcGRhdGVEZXRhaWxzIj4NCiAg -ICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcVRpbWVz -IiB0eXBlPSJ1YTpMaXN0T2ZEYXRlVGltZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwv -eHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h -bWU9IkRlbGV0ZUF0VGltZURldGFpbHMiIHR5cGU9InRuczpEZWxldGVBdFRpbWVEZXRhaWxzIiAv -Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEZWxldGVFdmVudERldGFpbHMiPg0KICAgIDx4 -czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNl -PSJ0bnM6SGlzdG9yeVVwZGF0ZURldGFpbHMiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAg -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRXZlbnRJZHMiIHR5cGU9InVhOkxpc3RPZkJ5dGVTdHJp -bmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVu +eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkFnZ3JlZ2F0ZUZpbHRlciIgdHlwZT0idG5zOkFn +Z3JlZ2F0ZUZpbHRlciIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTW9uaXRvcmluZ0Zp +bHRlclJlc3VsdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv +eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik1vbml0b3JpbmdGaWx0ZXJSZXN1 +bHQiIHR5cGU9InRuczpNb25pdG9yaW5nRmlsdGVyUmVzdWx0IiAvPg0KDQogIDx4czpjb21wbGV4 +VHlwZSBuYW1lPSJFdmVudEZpbHRlclJlc3VsdCI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1p +eGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpNb25pdG9yaW5nRmls +dGVyUmVzdWx0Ij4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50 +IG5hbWU9IlNlbGVjdENsYXVzZVJlc3VsdHMiIHR5cGU9InVhOkxpc3RPZlN0YXR1c0NvZGUiIG1p +bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFt +ZT0iU2VsZWN0Q2xhdXNlRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGlj +SW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxl +bWVudCBuYW1lPSJXaGVyZUNsYXVzZVJlc3VsdCIgdHlwZT0idG5zOkNvbnRlbnRGaWx0ZXJSZXN1 +bHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVu Y2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8 -L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEZWxldGVFdmVudERldGFpbHMi -IHR5cGU9InRuczpEZWxldGVFdmVudERldGFpbHMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h -bWU9Ikhpc3RvcnlVcGRhdGVSZXN1bHQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl -bGVtZW50IG5hbWU9IlN0YXR1c0NvZGUiIHR5cGU9InVhOlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0i -MCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik9wZXJhdGlvblJlc3VsdHMiIHR5cGU9InVh +L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJFdmVudEZpbHRlclJlc3VsdCIg +dHlwZT0idG5zOkV2ZW50RmlsdGVyUmVzdWx0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l +PSJBZ2dyZWdhdGVGaWx0ZXJSZXN1bHQiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0i +ZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6TW9uaXRvcmluZ0ZpbHRlclJl +c3VsdCI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1l +PSJSZXZpc2VkU3RhcnRUaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0K +ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlJldmlzZWRQcm9jZXNzaW5nSW50ZXJ2YWwiIHR5 +cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5h +bWU9IlJldmlzZWRBZ2dyZWdhdGVDb25maWd1cmF0aW9uIiB0eXBlPSJ0bnM6QWdncmVnYXRlQ29u +ZmlndXJhdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94 +czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRl +bnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkFnZ3JlZ2F0ZUZp +bHRlclJlc3VsdCIgdHlwZT0idG5zOkFnZ3JlZ2F0ZUZpbHRlclJlc3VsdCIgLz4NCg0KICA8eHM6 +Y29tcGxleFR5cGUgbmFtZT0iTW9uaXRvcmluZ1BhcmFtZXRlcnMiPg0KICAgIDx4czpzZXF1ZW5j +ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNsaWVudEhhbmRsZSIgdHlwZT0ieHM6dW5zaWdu +ZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNhbXBsaW5n +SW50ZXJ2YWwiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iRmlsdGVyIiB0eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0i +MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJRdWV1ZVNpemUi +IHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJEaXNjYXJkT2xkZXN0IiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+ +DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg +bmFtZT0iTW9uaXRvcmluZ1BhcmFtZXRlcnMiIHR5cGU9InRuczpNb25pdG9yaW5nUGFyYW1ldGVy +cyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTW9uaXRvcmVkSXRlbUNyZWF0ZVJlcXVl +c3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikl0ZW1Ub01v +bml0b3IiIHR5cGU9InRuczpSZWFkVmFsdWVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 +ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1vbml0b3JpbmdNb2RlIiB0eXBlPSJ0bnM6 +TW9uaXRvcmluZ01vZGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 +IlJlcXVlc3RlZFBhcmFtZXRlcnMiIHR5cGU9InRuczpNb25pdG9yaW5nUGFyYW1ldGVycyIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz +OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yZWRJdGVtQ3JlYXRlUmVx +dWVzdCIgdHlwZT0idG5zOk1vbml0b3JlZEl0ZW1DcmVhdGVSZXF1ZXN0IiAvPg0KDQogIDx4czpj +b21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZNb25pdG9yZWRJdGVtQ3JlYXRlUmVxdWVzdCI+DQogICAg +PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9uaXRvcmVkSXRlbUNyZWF0 +ZVJlcXVlc3QiIHR5cGU9InRuczpNb25pdG9yZWRJdGVtQ3JlYXRlUmVxdWVzdCIgbWluT2NjdXJz +PSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpz +ZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9m +TW9uaXRvcmVkSXRlbUNyZWF0ZVJlcXVlc3QiIHR5cGU9InRuczpMaXN0T2ZNb25pdG9yZWRJdGVt +Q3JlYXRlUmVxdWVzdCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29t +cGxleFR5cGUgbmFtZT0iTW9uaXRvcmVkSXRlbUNyZWF0ZVJlc3VsdCI+DQogICAgPHhzOnNlcXVl +bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhdHVzQ29kZSIgdHlwZT0idWE6U3RhdHVz +Q29kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9uaXRvcmVk +SXRlbUlkIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iUmV2aXNlZFNhbXBsaW5nSW50ZXJ2YWwiIHR5cGU9InhzOmRvdWJsZSIg +bWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmV2aXNlZFF1ZXVlU2l6 +ZSIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IkZpbHRlclJlc3VsdCIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1 +cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29t +cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik1vbml0b3JlZEl0ZW1DcmVhdGVSZXN1bHQi +IHR5cGU9InRuczpNb25pdG9yZWRJdGVtQ3JlYXRlUmVzdWx0IiAvPg0KDQogIDx4czpjb21wbGV4 +VHlwZSBuYW1lPSJMaXN0T2ZNb25pdG9yZWRJdGVtQ3JlYXRlUmVzdWx0Ij4NCiAgICA8eHM6c2Vx +dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yZWRJdGVtQ3JlYXRlUmVzdWx0 +IiB0eXBlPSJ0bnM6TW9uaXRvcmVkSXRlbUNyZWF0ZVJlc3VsdCIgbWluT2NjdXJzPSIwIiBtYXhP +Y2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4N +CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mTW9uaXRvcmVk +SXRlbUNyZWF0ZVJlc3VsdCIgdHlwZT0idG5zOkxpc3RPZk1vbml0b3JlZEl0ZW1DcmVhdGVSZXN1 +bHQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h +bWU9IkNyZWF0ZU1vbml0b3JlZEl0ZW1zUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFk +ZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJTdWJzY3JpcHRpb25JZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIg +Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRpbWVzdGFtcHNUb1JldHVybiIgdHlwZT0idG5z +OlRpbWVzdGFtcHNUb1JldHVybiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iSXRlbXNUb0NyZWF0ZSIgdHlwZT0idG5zOkxpc3RPZk1vbml0b3JlZEl0ZW1DcmVhdGVS +ZXF1ZXN0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVu +Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkNyZWF0ZU1vbml0 +b3JlZEl0ZW1zUmVxdWVzdCIgdHlwZT0idG5zOkNyZWF0ZU1vbml0b3JlZEl0ZW1zUmVxdWVzdCIg +Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ3JlYXRlTW9uaXRvcmVkSXRlbXNSZXNwb25z +ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VI +ZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i +dHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3VsdHMiIHR5cGU9InRuczpMaXN0 +T2ZNb25pdG9yZWRJdGVtQ3JlYXRlUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl +IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1YTpM +aXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg +ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l +PSJDcmVhdGVNb25pdG9yZWRJdGVtc1Jlc3BvbnNlIiB0eXBlPSJ0bnM6Q3JlYXRlTW9uaXRvcmVk +SXRlbXNSZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTW9uaXRvcmVkSXRl +bU1vZGlmeVJlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h +bWU9Ik1vbml0b3JlZEl0ZW1JZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIg +Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RlZFBhcmFtZXRlcnMiIHR5cGU9InRu +czpNb25pdG9yaW5nUGFyYW1ldGVycyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N +CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu +YW1lPSJNb25pdG9yZWRJdGVtTW9kaWZ5UmVxdWVzdCIgdHlwZT0idG5zOk1vbml0b3JlZEl0ZW1N +b2RpZnlSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZNb25pdG9y +ZWRJdGVtTW9kaWZ5UmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iTW9uaXRvcmVkSXRlbU1vZGlmeVJlcXVlc3QiIHR5cGU9InRuczpNb25pdG9yZWRJ +dGVtTW9kaWZ5UmVxdWVzdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmls +bGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N +CiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mTW9uaXRvcmVkSXRlbU1vZGlmeVJlcXVlc3QiIHR5 +cGU9InRuczpMaXN0T2ZNb25pdG9yZWRJdGVtTW9kaWZ5UmVxdWVzdCIgbmlsbGFibGU9InRydWUi +PjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTW9uaXRvcmVkSXRlbU1v +ZGlmeVJlc3VsdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +U3RhdHVzQ29kZSIgdHlwZT0idWE6U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iUmV2aXNlZFNhbXBsaW5nSW50ZXJ2YWwiIHR5cGU9InhzOmRvdWJs +ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmV2aXNlZFF1ZXVl +U2l6ZSIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IkZpbHRlclJlc3VsdCIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5P +Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6 +Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik1vbml0b3JlZEl0ZW1Nb2RpZnlSZXN1 +bHQiIHR5cGU9InRuczpNb25pdG9yZWRJdGVtTW9kaWZ5UmVzdWx0IiAvPg0KDQogIDx4czpjb21w +bGV4VHlwZSBuYW1lPSJMaXN0T2ZNb25pdG9yZWRJdGVtTW9kaWZ5UmVzdWx0Ij4NCiAgICA8eHM6 +c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yZWRJdGVtTW9kaWZ5UmVz +dWx0IiB0eXBlPSJ0bnM6TW9uaXRvcmVkSXRlbU1vZGlmeVJlc3VsdCIgbWluT2NjdXJzPSIwIiBt +YXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j +ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mTW9uaXRv +cmVkSXRlbU1vZGlmeVJlc3VsdCIgdHlwZT0idG5zOkxpc3RPZk1vbml0b3JlZEl0ZW1Nb2RpZnlS +ZXN1bHQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBl +IG5hbWU9Ik1vZGlmeU1vbml0b3JlZEl0ZW1zUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0K +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RI +ZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJTdWJzY3JpcHRpb25JZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0i +MCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRpbWVzdGFtcHNUb1JldHVybiIgdHlwZT0i +dG5zOlRpbWVzdGFtcHNUb1JldHVybiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iSXRlbXNUb01vZGlmeSIgdHlwZT0idG5zOkxpc3RPZk1vbml0b3JlZEl0ZW1Nb2Rp +ZnlSZXF1ZXN0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2Vx +dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik1vZGlmeU1v +bml0b3JlZEl0ZW1zUmVxdWVzdCIgdHlwZT0idG5zOk1vZGlmeU1vbml0b3JlZEl0ZW1zUmVxdWVz +dCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTW9kaWZ5TW9uaXRvcmVkSXRlbXNSZXNw +b25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9u +c2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJs +ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3VsdHMiIHR5cGU9InRuczpM +aXN0T2ZNb25pdG9yZWRJdGVtTW9kaWZ5UmVzdWx0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0 +cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1 +YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N +CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu +YW1lPSJNb2RpZnlNb25pdG9yZWRJdGVtc1Jlc3BvbnNlIiB0eXBlPSJ0bnM6TW9kaWZ5TW9uaXRv +cmVkSXRlbXNSZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2V0TW9uaXRv +cmluZ01vZGVSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIw +IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN1YnNjcmlwdGlv +bklkIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iTW9uaXRvcmluZ01vZGUiIHR5cGU9InRuczpNb25pdG9yaW5nTW9kZSIgbWlu +T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9uaXRvcmVkSXRlbUlkcyIg +dHlwZT0idWE6TGlzdE9mVUludDMyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h +bWU9IlNldE1vbml0b3JpbmdNb2RlUmVxdWVzdCIgdHlwZT0idG5zOlNldE1vbml0b3JpbmdNb2Rl +UmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2V0TW9uaXRvcmluZ01vZGVS +ZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVz +cG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxs +YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3VsdHMiIHR5cGU9InVh Okxpc3RPZlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg ICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdu b3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2Vx -dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikhpc3RvcnlV -cGRhdGVSZXN1bHQiIHR5cGU9InRuczpIaXN0b3J5VXBkYXRlUmVzdWx0IiAvPg0KDQogIDx4czpj -b21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZIaXN0b3J5VXBkYXRlUmVzdWx0Ij4NCiAgICA8eHM6c2Vx -dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJIaXN0b3J5VXBkYXRlUmVzdWx0IiB0eXBl -PSJ0bnM6SGlzdG9yeVVwZGF0ZVJlc3VsdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91 -bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w -bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mSGlzdG9yeVVwZGF0ZVJlc3VsdCIg -dHlwZT0idG5zOkxpc3RPZkhpc3RvcnlVcGRhdGVSZXN1bHQiIG5pbGxhYmxlPSJ0cnVlIj48L3hz -OmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikhpc3RvcnlVcGRhdGVSZXF1ZXN0 -Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVh -ZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 -ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikhpc3RvcnlVcGRhdGVEZXRhaWxzIiB0eXBl -PSJ1YTpMaXN0T2ZFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi -IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l -bnQgbmFtZT0iSGlzdG9yeVVwZGF0ZVJlcXVlc3QiIHR5cGU9InRuczpIaXN0b3J5VXBkYXRlUmVx -dWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iSGlzdG9yeVVwZGF0ZVJlc3BvbnNl -Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhl -YWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0 -cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzdWx0cyIgdHlwZT0idG5zOkxpc3RP -Zkhpc3RvcnlVcGRhdGVSZXN1bHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog -ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRp -YWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6 -c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikhpc3Rv -cnlVcGRhdGVSZXNwb25zZSIgdHlwZT0idG5zOkhpc3RvcnlVcGRhdGVSZXNwb25zZSIgLz4NCg0K -ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ2FsbE1ldGhvZFJlcXVlc3QiPg0KICAgIDx4czpzZXF1 -ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik9iamVjdElkIiB0eXBlPSJ1YTpOb2RlSWQi -IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJNZXRob2RJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl -IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSW5wdXRBcmd1bWVudHMiIHR5cGU9InVhOkxp -c3RPZlZhcmlhbnQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpz -ZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQ2FsbE1l -dGhvZFJlcXVlc3QiIHR5cGU9InRuczpDYWxsTWV0aG9kUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29t -cGxleFR5cGUgbmFtZT0iTGlzdE9mQ2FsbE1ldGhvZFJlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5j -ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNhbGxNZXRob2RSZXF1ZXN0IiB0eXBlPSJ0bnM6 -Q2FsbE1ldGhvZFJlcXVlc3QiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5p -bGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+ -DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkNhbGxNZXRob2RSZXF1ZXN0IiB0eXBlPSJ0bnM6 -TGlzdE9mQ2FsbE1ldGhvZFJlcXVlc3QiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoN -CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNhbGxNZXRob2RSZXN1bHQiPg0KICAgIDx4czpzZXF1 -ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXR1c0NvZGUiIHR5cGU9InVhOlN0YXR1 -c0NvZGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IklucHV0QXJn -dW1lbnRSZXN1bHRzIiB0eXBlPSJ1YTpMaXN0T2ZTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIG5p -bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSW5wdXRBcmd1bWVudERp -YWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0i -MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJPdXRwdXRBcmd1 -bWVudHMiIHR5cGU9InVhOkxpc3RPZlZhcmlhbnQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy +dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlNldE1vbml0 +b3JpbmdNb2RlUmVzcG9uc2UiIHR5cGU9InRuczpTZXRNb25pdG9yaW5nTW9kZVJlc3BvbnNlIiAv +Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJTZXRUcmlnZ2VyaW5nUmVxdWVzdCI+DQogICAg +PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlw +ZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpcHRpb25JZCIgdHlwZT0ieHM6dW5zaWduZWRJ +bnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRyaWdnZXJpbmdJ +dGVtSWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJMaW5rc1RvQWRkIiB0eXBlPSJ1YTpMaXN0T2ZVSW50MzIiIG1pbk9jY3Vy +cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaW5rc1Rv +UmVtb3ZlIiB0eXBlPSJ1YTpMaXN0T2ZVSW50MzIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy dWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs -ZW1lbnQgbmFtZT0iQ2FsbE1ldGhvZFJlc3VsdCIgdHlwZT0idG5zOkNhbGxNZXRob2RSZXN1bHQi -IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkNhbGxNZXRob2RSZXN1bHQiPg0K -ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNhbGxNZXRob2RSZXN1 -bHQiIHR5cGU9InRuczpDYWxsTWV0aG9kUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i -dW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz -OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZDYWxsTWV0aG9kUmVzdWx0 -IiB0eXBlPSJ0bnM6TGlzdE9mQ2FsbE1ldGhvZFJlc3VsdCIgbmlsbGFibGU9InRydWUiPjwveHM6 -ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ2FsbFJlcXVlc3QiPg0KICAgIDx4 -czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9 -InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iTWV0aG9kc1RvQ2FsbCIgdHlwZT0idG5zOkxpc3RPZkNhbGxN -ZXRob2RSZXF1ZXN0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6 -c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkNhbGxS -ZXF1ZXN0IiB0eXBlPSJ0bnM6Q2FsbFJlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h -bWU9IkNhbGxSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJz -PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3VsdHMi -IHR5cGU9InRuczpMaXN0T2ZDYWxsTWV0aG9kUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl -PSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9zIiB0eXBl -PSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu -dCBuYW1lPSJDYWxsUmVzcG9uc2UiIHR5cGU9InRuczpDYWxsUmVzcG9uc2UiIC8+DQoNCiAgPHhz -OnNpbXBsZVR5cGUgIG5hbWU9Ik1vbml0b3JpbmdNb2RlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24g -YmFzZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRGlzYWJsZWRf -MCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU2FtcGxpbmdfMSIgLz4NCiAgICAg -IDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUmVwb3J0aW5nXzIiIC8+DQogICAgPC94czpyZXN0cmlj -dGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yaW5n -TW9kZSIgdHlwZT0idG5zOk1vbml0b3JpbmdNb2RlIiAvPg0KDQogIDx4czpzaW1wbGVUeXBlICBu -YW1lPSJEYXRhQ2hhbmdlVHJpZ2dlciI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0 -cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlN0YXR1c18wIiAvPg0KICAgICAg -PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTdGF0dXNWYWx1ZV8xIiAvPg0KICAgICAgPHhzOmVudW1l -cmF0aW9uIHZhbHVlPSJTdGF0dXNWYWx1ZVRpbWVzdGFtcF8yIiAvPg0KICAgIDwveHM6cmVzdHJp -Y3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YUNoYW5n -ZVRyaWdnZXIiIHR5cGU9InRuczpEYXRhQ2hhbmdlVHJpZ2dlciIgLz4NCg0KICA8eHM6c2ltcGxl -VHlwZSAgbmFtZT0iRGVhZGJhbmRUeXBlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6 -c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm9uZV8wIiAvPg0KICAgICAg -PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJBYnNvbHV0ZV8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0 -aW9uIHZhbHVlPSJQZXJjZW50XzIiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpz -aW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEZWFkYmFuZFR5cGUiIHR5cGU9InRuczpE -ZWFkYmFuZFR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vbml0b3JpbmdGaWx0 -ZXIiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs -ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yaW5nRmlsdGVyIiB0eXBlPSJ0bnM6 -TW9uaXRvcmluZ0ZpbHRlciIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGF0YUNoYW5n -ZUZpbHRlciI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8 -eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpNb25pdG9yaW5nRmlsdGVyIj4NCiAgICAgICAgPHhzOnNl -cXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlRyaWdnZXIiIHR5cGU9InRuczpE -YXRhQ2hhbmdlVHJpZ2dlciIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50 -IG5hbWU9IkRlYWRiYW5kVHlwZSIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIg -Lz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZWFkYmFuZFZhbHVlIiB0eXBlPSJ4czpk -b3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwv -eHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5 -cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRhdGFDaGFuZ2VGaWx0ZXIiIHR5cGU9InRuczpEYXRh -Q2hhbmdlRmlsdGVyIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJFdmVudEZpbHRlciI+ -DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5z -aW9uIGJhc2U9InRuczpNb25pdG9yaW5nRmlsdGVyIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0K -ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlbGVjdENsYXVzZXMiIHR5cGU9InRuczpMaXN0 -T2ZTaW1wbGVBdHRyaWJ1dGVPcGVyYW5kIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv -Pg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IldoZXJlQ2xhdXNlIiB0eXBlPSJ0bnM6Q29u -dGVudEZpbHRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94 -czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRl -bnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkV2ZW50RmlsdGVy -IiB0eXBlPSJ0bnM6RXZlbnRGaWx0ZXIiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFn -Z3JlZ2F0ZUNvbmZpZ3VyYXRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IlVzZVNlcnZlckNhcGFiaWxpdGllc0RlZmF1bHRzIiB0eXBlPSJ4czpib29sZWFu -IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUcmVhdFVuY2VydGFp -bkFzQmFkIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJQZXJjZW50RGF0YUJhZCIgdHlwZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5PY2N1 -cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQZXJjZW50RGF0YUdvb2QiIHR5cGU9 -InhzOnVuc2lnbmVkQnl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt -ZT0iVXNlU2xvcGVkRXh0cmFwb2xhdGlvbiIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIw -IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt -ZW50IG5hbWU9IkFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24iIHR5cGU9InRuczpBZ2dyZWdhdGVDb25m -aWd1cmF0aW9uIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJBZ2dyZWdhdGVGaWx0ZXIi -Pg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVu -c2lvbiBiYXNlPSJ0bnM6TW9uaXRvcmluZ0ZpbHRlciI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4N -CiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGFydFRpbWUiIHR5cGU9InhzOmRhdGVUaW1l -IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWdncmVnYXRl -VHlwZSIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K -ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlByb2Nlc3NpbmdJbnRlcnZhbCIgdHlwZT0ieHM6 -ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWdn -cmVnYXRlQ29uZmlndXJhdGlvbiIgdHlwZT0idG5zOkFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24iIG1p -bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQog -ICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNv -bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBZ2dyZWdhdGVGaWx0ZXIiIHR5cGU9InRu -czpBZ2dyZWdhdGVGaWx0ZXIiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vbml0b3Jp -bmdGaWx0ZXJSZXN1bHQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0K -ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yaW5nRmlsdGVy -UmVzdWx0IiB0eXBlPSJ0bnM6TW9uaXRvcmluZ0ZpbHRlclJlc3VsdCIgLz4NCg0KICA8eHM6Y29t -cGxleFR5cGUgbmFtZT0iRXZlbnRGaWx0ZXJSZXN1bHQiPg0KICAgIDx4czpjb21wbGV4Q29udGVu -dCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6TW9uaXRvcmlu -Z0ZpbHRlclJlc3VsdCI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJTZWxlY3RDbGF1c2VSZXN1bHRzIiB0eXBlPSJ1YTpMaXN0T2ZTdGF0dXNDb2Rl -IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50 -IG5hbWU9IlNlbGVjdENsYXVzZURpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25v -c3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhz -OmVsZW1lbnQgbmFtZT0iV2hlcmVDbGF1c2VSZXN1bHQiIHR5cGU9InRuczpDb250ZW50RmlsdGVy -UmVzdWx0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNl -cXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4N -CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRXZlbnRGaWx0ZXJSZXN1 -bHQiIHR5cGU9InRuczpFdmVudEZpbHRlclJlc3VsdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg -bmFtZT0iQWdncmVnYXRlRmlsdGVyUmVzdWx0Ij4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4 -ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOk1vbml0b3JpbmdGaWx0 -ZXJSZXN1bHQiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iUmV2aXNlZFN0YXJ0VGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIg -Lz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXZpc2VkUHJvY2Vzc2luZ0ludGVydmFs -IiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJSZXZpc2VkQWdncmVnYXRlQ29uZmlndXJhdGlvbiIgdHlwZT0idG5zOkFnZ3JlZ2F0 -ZUNvbmZpZ3VyYXRpb24iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAg -IDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhD -b250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBZ2dyZWdh -dGVGaWx0ZXJSZXN1bHQiIHR5cGU9InRuczpBZ2dyZWdhdGVGaWx0ZXJSZXN1bHQiIC8+DQoNCiAg -PHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vbml0b3JpbmdQYXJhbWV0ZXJzIj4NCiAgICA8eHM6c2Vx -dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDbGllbnRIYW5kbGUiIHR5cGU9InhzOnVu -c2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTYW1w -bGluZ0ludGVydmFsIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9IkZpbHRlciIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1 -cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUXVldWVT -aXplIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iRGlzY2FyZE9sZGVzdCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIw -IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt -ZW50IG5hbWU9Ik1vbml0b3JpbmdQYXJhbWV0ZXJzIiB0eXBlPSJ0bnM6TW9uaXRvcmluZ1BhcmFt -ZXRlcnMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vbml0b3JlZEl0ZW1DcmVhdGVS -ZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJdGVt -VG9Nb25pdG9yIiB0eXBlPSJ0bnM6UmVhZFZhbHVlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 -InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yaW5nTW9kZSIgdHlwZT0i -dG5zOk1vbml0b3JpbmdNb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJSZXF1ZXN0ZWRQYXJhbWV0ZXJzIiB0eXBlPSJ0bnM6TW9uaXRvcmluZ1BhcmFtZXRlcnMi -IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg -PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTW9uaXRvcmVkSXRlbUNyZWF0 -ZVJlcXVlc3QiIHR5cGU9InRuczpNb25pdG9yZWRJdGVtQ3JlYXRlUmVxdWVzdCIgLz4NCg0KICA8 -eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mTW9uaXRvcmVkSXRlbUNyZWF0ZVJlcXVlc3QiPg0K -ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1vbml0b3JlZEl0ZW1D -cmVhdGVSZXF1ZXN0IiB0eXBlPSJ0bnM6TW9uaXRvcmVkSXRlbUNyZWF0ZVJlcXVlc3QiIG1pbk9j -Y3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv -eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxp -c3RPZk1vbml0b3JlZEl0ZW1DcmVhdGVSZXF1ZXN0IiB0eXBlPSJ0bnM6TGlzdE9mTW9uaXRvcmVk -SXRlbUNyZWF0ZVJlcXVlc3QiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhz -OmNvbXBsZXhUeXBlIG5hbWU9Ik1vbml0b3JlZEl0ZW1DcmVhdGVSZXN1bHQiPg0KICAgIDx4czpz -ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXR1c0NvZGUiIHR5cGU9InVhOlN0 -YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1vbml0 -b3JlZEl0ZW1JZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IlJldmlzZWRTYW1wbGluZ0ludGVydmFsIiB0eXBlPSJ4czpkb3Vi -bGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJldmlzZWRRdWV1 -ZVNpemUiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJGaWx0ZXJSZXN1bHQiIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWlu +ZW1lbnQgbmFtZT0iU2V0VHJpZ2dlcmluZ1JlcXVlc3QiIHR5cGU9InRuczpTZXRUcmlnZ2VyaW5n +UmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2V0VHJpZ2dlcmluZ1Jlc3Bv +bnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25z +ZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl +PSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWRkUmVzdWx0cyIgdHlwZT0idWE6 +TGlzdE9mU3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg +IDx4czplbGVtZW50IG5hbWU9IkFkZERpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlh +Z25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJSZW1vdmVSZXN1bHRzIiB0eXBlPSJ1YTpMaXN0T2ZTdGF0dXNDb2RlIiBt +aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +UmVtb3ZlRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWlu T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz -OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yZWRJdGVtQ3JlYXRlUmVz -dWx0IiB0eXBlPSJ0bnM6TW9uaXRvcmVkSXRlbUNyZWF0ZVJlc3VsdCIgLz4NCg0KICA8eHM6Y29t -cGxleFR5cGUgbmFtZT0iTGlzdE9mTW9uaXRvcmVkSXRlbUNyZWF0ZVJlc3VsdCI+DQogICAgPHhz -OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9uaXRvcmVkSXRlbUNyZWF0ZVJl -c3VsdCIgdHlwZT0idG5zOk1vbml0b3JlZEl0ZW1DcmVhdGVSZXN1bHQiIG1pbk9jY3Vycz0iMCIg -bWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVu -Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk1vbml0 -b3JlZEl0ZW1DcmVhdGVSZXN1bHQiIHR5cGU9InRuczpMaXN0T2ZNb25pdG9yZWRJdGVtQ3JlYXRl -UmVzdWx0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlw -ZSBuYW1lPSJDcmVhdGVNb25pdG9yZWRJdGVtc1JlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0 -SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iU3Vic2NyaXB0aW9uSWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9 -IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUaW1lc3RhbXBzVG9SZXR1cm4iIHR5cGU9 -InRuczpUaW1lc3RhbXBzVG9SZXR1cm4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9Ikl0ZW1zVG9DcmVhdGUiIHR5cGU9InRuczpMaXN0T2ZNb25pdG9yZWRJdGVtQ3Jl -YXRlUmVxdWVzdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl -cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJDcmVhdGVN -b25pdG9yZWRJdGVtc1JlcXVlc3QiIHR5cGU9InRuczpDcmVhdGVNb25pdG9yZWRJdGVtc1JlcXVl -c3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNyZWF0ZU1vbml0b3JlZEl0ZW1zUmVz -cG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3Bv -bnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFi -bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ0bnM6 -TGlzdE9mTW9uaXRvcmVkSXRlbUNyZWF0ZVJlc3VsdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i -dHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvcyIgdHlwZT0i -dWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+ -DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg -bmFtZT0iQ3JlYXRlTW9uaXRvcmVkSXRlbXNSZXNwb25zZSIgdHlwZT0idG5zOkNyZWF0ZU1vbml0 -b3JlZEl0ZW1zUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vbml0b3Jl -ZEl0ZW1Nb2RpZnlSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJNb25pdG9yZWRJdGVtSWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9 -IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0ZWRQYXJhbWV0ZXJzIiB0eXBl -PSJ0bnM6TW9uaXRvcmluZ1BhcmFtZXRlcnMiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi -IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l -bnQgbmFtZT0iTW9uaXRvcmVkSXRlbU1vZGlmeVJlcXVlc3QiIHR5cGU9InRuczpNb25pdG9yZWRJ -dGVtTW9kaWZ5UmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mTW9u -aXRvcmVkSXRlbU1vZGlmeVJlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl -bGVtZW50IG5hbWU9Ik1vbml0b3JlZEl0ZW1Nb2RpZnlSZXF1ZXN0IiB0eXBlPSJ0bnM6TW9uaXRv -cmVkSXRlbU1vZGlmeVJlcXVlc3QiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQi -IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5 -cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk1vbml0b3JlZEl0ZW1Nb2RpZnlSZXF1ZXN0 -IiB0eXBlPSJ0bnM6TGlzdE9mTW9uaXRvcmVkSXRlbU1vZGlmeVJlcXVlc3QiIG5pbGxhYmxlPSJ0 -cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vbml0b3JlZEl0 -ZW1Nb2RpZnlSZXN1bHQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IlN0YXR1c0NvZGUiIHR5cGU9InVhOlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAg -ICAgIDx4czplbGVtZW50IG5hbWU9IlJldmlzZWRTYW1wbGluZ0ludGVydmFsIiB0eXBlPSJ4czpk -b3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJldmlzZWRR -dWV1ZVNpemUiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJGaWx0ZXJSZXN1bHQiIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIg -bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8 -L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yZWRJdGVtTW9kaWZ5 -UmVzdWx0IiB0eXBlPSJ0bnM6TW9uaXRvcmVkSXRlbU1vZGlmeVJlc3VsdCIgLz4NCg0KICA8eHM6 -Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mTW9uaXRvcmVkSXRlbU1vZGlmeVJlc3VsdCI+DQogICAg -PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9uaXRvcmVkSXRlbU1vZGlm -eVJlc3VsdCIgdHlwZT0idG5zOk1vbml0b3JlZEl0ZW1Nb2RpZnlSZXN1bHQiIG1pbk9jY3Vycz0i -MCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2Vx -dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk1v -bml0b3JlZEl0ZW1Nb2RpZnlSZXN1bHQiIHR5cGU9InRuczpMaXN0T2ZNb25pdG9yZWRJdGVtTW9k -aWZ5UmVzdWx0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4 -VHlwZSBuYW1lPSJNb2RpZnlNb25pdG9yZWRJdGVtc1JlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5j -ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1 -ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iU3Vic2NyaXB0aW9uSWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1 -cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUaW1lc3RhbXBzVG9SZXR1cm4iIHR5 -cGU9InRuczpUaW1lc3RhbXBzVG9SZXR1cm4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl -bGVtZW50IG5hbWU9Ikl0ZW1zVG9Nb2RpZnkiIHR5cGU9InRuczpMaXN0T2ZNb25pdG9yZWRJdGVt -TW9kaWZ5UmVxdWVzdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz -OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNb2Rp -ZnlNb25pdG9yZWRJdGVtc1JlcXVlc3QiIHR5cGU9InRuczpNb2RpZnlNb25pdG9yZWRJdGVtc1Jl -cXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vZGlmeU1vbml0b3JlZEl0ZW1z +OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTZXRUcmlnZ2VyaW5nUmVzcG9uc2Ui +IHR5cGU9InRuczpTZXRUcmlnZ2VyaW5nUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl +IG5hbWU9IkRlbGV0ZU1vbml0b3JlZEl0ZW1zUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0K +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RI +ZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJTdWJzY3JpcHRpb25JZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0i +MCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1vbml0b3JlZEl0ZW1JZHMiIHR5cGU9InVh +Okxpc3RPZlVJbnQzMiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz +OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEZWxl +dGVNb25pdG9yZWRJdGVtc1JlcXVlc3QiIHR5cGU9InRuczpEZWxldGVNb25pdG9yZWRJdGVtc1Jl +cXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRlbGV0ZU1vbml0b3JlZEl0ZW1z UmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJl c3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmls -bGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ0 -bnM6TGlzdE9mTW9uaXRvcmVkSXRlbU1vZGlmeVJlc3VsdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJs -ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvcyIgdHlw -ZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi -IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l -bnQgbmFtZT0iTW9kaWZ5TW9uaXRvcmVkSXRlbXNSZXNwb25zZSIgdHlwZT0idG5zOk1vZGlmeU1v -bml0b3JlZEl0ZW1zUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNldE1v -bml0b3JpbmdNb2RlUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vy -cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3Jp -cHRpb25JZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9Ik1vbml0b3JpbmdNb2RlIiB0eXBlPSJ0bnM6TW9uaXRvcmluZ01vZGUi -IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1vbml0b3JlZEl0ZW1J -ZHMiIHR5cGU9InVhOkxpc3RPZlVJbnQzMiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu -dCBuYW1lPSJTZXRNb25pdG9yaW5nTW9kZVJlcXVlc3QiIHR5cGU9InRuczpTZXRNb25pdG9yaW5n -TW9kZVJlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNldE1vbml0b3JpbmdN -b2RlUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIg -bmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBl -PSJ1YTpMaXN0T2ZTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZE -aWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz -OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTZXRN -b25pdG9yaW5nTW9kZVJlc3BvbnNlIiB0eXBlPSJ0bnM6U2V0TW9uaXRvcmluZ01vZGVSZXNwb25z -ZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2V0VHJpZ2dlcmluZ1JlcXVlc3QiPg0K -ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIi -IHR5cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3Vic2NyaXB0aW9uSWQiIHR5cGU9InhzOnVuc2ln -bmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUcmlnZ2Vy -aW5nSXRlbUlkIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iTGlua3NUb0FkZCIgdHlwZT0idWE6TGlzdE9mVUludDMyIiBtaW5P -Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGlu -a3NUb1JlbW92ZSIgdHlwZT0idWE6TGlzdE9mVUludDMyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl -PSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 -czplbGVtZW50IG5hbWU9IlNldFRyaWdnZXJpbmdSZXF1ZXN0IiB0eXBlPSJ0bnM6U2V0VHJpZ2dl -cmluZ1JlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNldFRyaWdnZXJpbmdS -ZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVz -cG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxs -YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkFkZFJlc3VsdHMiIHR5cGU9 -InVhOkxpc3RPZlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog -ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBZGREaWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RP -ZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iUmVtb3ZlUmVzdWx0cyIgdHlwZT0idWE6TGlzdE9mU3RhdHVzQ29k -ZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IlJlbW92ZURpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8i -IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg -PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iU2V0VHJpZ2dlcmluZ1Jlc3Bv -bnNlIiB0eXBlPSJ0bnM6U2V0VHJpZ2dlcmluZ1Jlc3BvbnNlIiAvPg0KDQogIDx4czpjb21wbGV4 -VHlwZSBuYW1lPSJEZWxldGVNb25pdG9yZWRJdGVtc1JlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5j -ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1 -ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iU3Vic2NyaXB0aW9uSWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1 -cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yZWRJdGVtSWRzIiB0eXBl -PSJ1YTpMaXN0T2ZVSW50MzIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg -PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i -RGVsZXRlTW9uaXRvcmVkSXRlbXNSZXF1ZXN0IiB0eXBlPSJ0bnM6RGVsZXRlTW9uaXRvcmVkSXRl -bXNSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEZWxldGVNb25pdG9yZWRJ -dGVtc1Jlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAi -IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzdWx0cyIgdHlw -ZT0idWE6TGlzdE9mU3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9m -RGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94 -czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGVs -ZXRlTW9uaXRvcmVkSXRlbXNSZXNwb25zZSIgdHlwZT0idG5zOkRlbGV0ZU1vbml0b3JlZEl0ZW1z -UmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNyZWF0ZVN1YnNjcmlwdGlv -blJlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJl -cXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxh -YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdGVkUHVibGlzaGlu +bGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ1 +YTpMaXN0T2ZTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFn +bm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl +cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEZWxldGVN +b25pdG9yZWRJdGVtc1Jlc3BvbnNlIiB0eXBlPSJ0bnM6RGVsZXRlTW9uaXRvcmVkSXRlbXNSZXNw +b25zZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ3JlYXRlU3Vic2NyaXB0aW9uUmVx +dWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVz +dEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 +InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0ZWRQdWJsaXNoaW5nSW50 +ZXJ2YWwiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iUmVxdWVzdGVkTGlmZXRpbWVDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1p +bk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RlZE1heEtlZXBB +bGl2ZUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iTWF4Tm90aWZpY2F0aW9uc1BlclB1Ymxpc2giIHR5cGU9InhzOnVu +c2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJs +aXNoaW5nRW5hYmxlZCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iUHJpb3JpdHkiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIgbWluT2Nj +dXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 +czplbGVtZW50IG5hbWU9IkNyZWF0ZVN1YnNjcmlwdGlvblJlcXVlc3QiIHR5cGU9InRuczpDcmVh +dGVTdWJzY3JpcHRpb25SZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJDcmVh +dGVTdWJzY3JpcHRpb25SZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN1 +YnNjcmlwdGlvbklkIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iUmV2aXNlZFB1Ymxpc2hpbmdJbnRlcnZhbCIgdHlwZT0ieHM6 +ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXZpc2Vk +TGlmZXRpbWVDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9IlJldmlzZWRNYXhLZWVwQWxpdmVDb3VudCIgdHlwZT0ieHM6 +dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz +OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJDcmVhdGVTdWJzY3JpcHRpb25SZXNw +b25zZSIgdHlwZT0idG5zOkNyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlIiAvPg0KDQogIDx4czpj +b21wbGV4VHlwZSBuYW1lPSJNb2RpZnlTdWJzY3JpcHRpb25SZXF1ZXN0Ij4NCiAgICA8eHM6c2Vx +dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6 +UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4 +czplbGVtZW50IG5hbWU9IlN1YnNjcmlwdGlvbklkIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWlu +T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdGVkUHVibGlzaGlu Z0ludGVydmFsIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl bGVtZW50IG5hbWU9IlJlcXVlc3RlZExpZmV0aW1lQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50 IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0ZWRNYXhL ZWVwQWxpdmVDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAg ICAgIDx4czplbGVtZW50IG5hbWU9Ik1heE5vdGlmaWNhdGlvbnNQZXJQdWJsaXNoIiB0eXBlPSJ4 czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i -UHVibGlzaGluZ0VuYWJsZWQiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAg -ICAgIDx4czplbGVtZW50IG5hbWU9IlByaW9yaXR5IiB0eXBlPSJ4czp1bnNpZ25lZEJ5dGUiIG1p -bk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K -ICA8eHM6ZWxlbWVudCBuYW1lPSJDcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0IiB0eXBlPSJ0bnM6 -Q3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i -Q3JlYXRlU3Vic2NyaXB0aW9uUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIi -IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJTdWJzY3JpcHRpb25JZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJldmlzZWRQdWJsaXNoaW5nSW50ZXJ2YWwiIHR5cGU9 -InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmV2 -aXNlZExpZmV0aW1lQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXZpc2VkTWF4S2VlcEFsaXZlQ291bnQiIHR5cGU9 -InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg -PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQ3JlYXRlU3Vic2NyaXB0aW9u -UmVzcG9uc2UiIHR5cGU9InRuczpDcmVhdGVTdWJzY3JpcHRpb25SZXNwb25zZSIgLz4NCg0KICA8 -eHM6Y29tcGxleFR5cGUgbmFtZT0iTW9kaWZ5U3Vic2NyaXB0aW9uUmVxdWVzdCI+DQogICAgPHhz -OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0i -dG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpcHRpb25JZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQi -IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RlZFB1Ymxp -c2hpbmdJbnRlcnZhbCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0ZWRMaWZldGltZUNvdW50IiB0eXBlPSJ4czp1bnNpZ25l -ZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdGVk -TWF4S2VlcEFsaXZlQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaCIgdHlw -ZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IlByaW9yaXR5IiB0eXBlPSJ4czp1bnNpZ25lZEJ5dGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAg -ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l -PSJNb2RpZnlTdWJzY3JpcHRpb25SZXF1ZXN0IiB0eXBlPSJ0bnM6TW9kaWZ5U3Vic2NyaXB0aW9u -UmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTW9kaWZ5U3Vic2NyaXB0aW9u -UmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJl -c3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmls -bGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXZpc2VkUHVibGlzaGlu -Z0ludGVydmFsIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl -bGVtZW50IG5hbWU9IlJldmlzZWRMaWZldGltZUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIg -bWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmV2aXNlZE1heEtlZXBB -bGl2ZUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwv +UHJpb3JpdHkiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwv eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik1v -ZGlmeVN1YnNjcmlwdGlvblJlc3BvbnNlIiB0eXBlPSJ0bnM6TW9kaWZ5U3Vic2NyaXB0aW9uUmVz -cG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNldFB1Ymxpc2hpbmdNb2RlUmVx -dWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVz -dEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 -InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNoaW5nRW5hYmxlZCIgdHlw -ZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i -U3Vic2NyaXB0aW9uSWRzIiB0eXBlPSJ1YTpMaXN0T2ZVSW50MzIiIG1pbk9jY3Vycz0iMCIgbmls -bGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N -CiAgPHhzOmVsZW1lbnQgbmFtZT0iU2V0UHVibGlzaGluZ01vZGVSZXF1ZXN0IiB0eXBlPSJ0bnM6 -U2V0UHVibGlzaGluZ01vZGVSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJT -ZXRQdWJsaXNoaW5nTW9kZVJlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBt -aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i -UmVzdWx0cyIgdHlwZT0idWE6TGlzdE9mU3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJs -ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvcyIgdHlw -ZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi -IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l -bnQgbmFtZT0iU2V0UHVibGlzaGluZ01vZGVSZXNwb25zZSIgdHlwZT0idG5zOlNldFB1Ymxpc2hp -bmdNb2RlUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik5vdGlmaWNhdGlv -bk1lc3NhZ2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNl -cXVlbmNlTnVtYmVyIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iUHVibGlzaFRpbWUiIHR5cGU9InhzOmRhdGVUaW1lIiBtaW5P -Y2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOb3RpZmljYXRpb25EYXRhIiB0 -eXBlPSJ1YTpMaXN0T2ZFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy -dWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs -ZW1lbnQgbmFtZT0iTm90aWZpY2F0aW9uTWVzc2FnZSIgdHlwZT0idG5zOk5vdGlmaWNhdGlvbk1l -c3NhZ2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik5vdGlmaWNhdGlvbkRhdGEiPg0K -ICAgIDx4czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl -Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJOb3RpZmljYXRpb25EYXRhIiB0eXBlPSJ0bnM6Tm90aWZp -Y2F0aW9uRGF0YSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGF0YUNoYW5nZU5vdGlm -aWNhdGlvbiI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8 -eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpOb3RpZmljYXRpb25EYXRhIj4NCiAgICAgICAgPHhzOnNl -cXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1vbml0b3JlZEl0ZW1zIiB0eXBl -PSJ0bnM6TGlzdE9mTW9uaXRvcmVkSXRlbU5vdGlmaWNhdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxs -YWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGljSW5m -b3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl -PSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+ -DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs -ZW1lbnQgbmFtZT0iRGF0YUNoYW5nZU5vdGlmaWNhdGlvbiIgdHlwZT0idG5zOkRhdGFDaGFuZ2VO -b3RpZmljYXRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vbml0b3JlZEl0ZW1O -b3RpZmljYXRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IkNsaWVudEhhbmRsZSIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAg -ICAgIDx4czplbGVtZW50IG5hbWU9IlZhbHVlIiB0eXBlPSJ1YTpEYXRhVmFsdWUiIG1pbk9jY3Vy -cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w -bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTW9uaXRvcmVkSXRlbU5vdGlmaWNhdGlvbiIg -dHlwZT0idG5zOk1vbml0b3JlZEl0ZW1Ob3RpZmljYXRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhU -eXBlIG5hbWU9Ikxpc3RPZk1vbml0b3JlZEl0ZW1Ob3RpZmljYXRpb24iPg0KICAgIDx4czpzZXF1 -ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1vbml0b3JlZEl0ZW1Ob3RpZmljYXRpb24i -IHR5cGU9InRuczpNb25pdG9yZWRJdGVtTm90aWZpY2F0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9j -Y3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K -ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZNb25pdG9yZWRJ -dGVtTm90aWZpY2F0aW9uIiB0eXBlPSJ0bnM6TGlzdE9mTW9uaXRvcmVkSXRlbU5vdGlmaWNhdGlv -biIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt -ZT0iRXZlbnROb3RpZmljYXRpb25MaXN0Ij4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9 -ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOk5vdGlmaWNhdGlvbkRhdGEi -Pg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRXZl -bnRzIiB0eXBlPSJ0bnM6TGlzdE9mRXZlbnRGaWVsZExpc3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFi -bGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lv -bj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6 -ZWxlbWVudCBuYW1lPSJFdmVudE5vdGlmaWNhdGlvbkxpc3QiIHR5cGU9InRuczpFdmVudE5vdGlm -aWNhdGlvbkxpc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkV2ZW50RmllbGRMaXN0 -Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDbGllbnRIYW5k -bGUiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJFdmVudEZpZWxkcyIgdHlwZT0idWE6TGlzdE9mVmFyaWFudCIgbWluT2NjdXJz -PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs -ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJFdmVudEZpZWxkTGlzdCIgdHlwZT0idG5zOkV2 -ZW50RmllbGRMaXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZFdmVudEZp -ZWxkTGlzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRXZl -bnRGaWVsZExpc3QiIHR5cGU9InRuczpFdmVudEZpZWxkTGlzdCIgbWluT2NjdXJzPSIwIiBtYXhP -Y2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4N -CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRXZlbnRGaWVs -ZExpc3QiIHR5cGU9InRuczpMaXN0T2ZFdmVudEZpZWxkTGlzdCIgbmlsbGFibGU9InRydWUiPjwv -eHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iSGlzdG9yeUV2ZW50RmllbGRM -aXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFdmVudEZp -ZWxkcyIgdHlwZT0idWE6TGlzdE9mVmFyaWFudCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 -ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl -bWVudCBuYW1lPSJIaXN0b3J5RXZlbnRGaWVsZExpc3QiIHR5cGU9InRuczpIaXN0b3J5RXZlbnRG -aWVsZExpc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkhpc3RvcnlFdmVu -dEZpZWxkTGlzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i -SGlzdG9yeUV2ZW50RmllbGRMaXN0IiB0eXBlPSJ0bnM6SGlzdG9yeUV2ZW50RmllbGRMaXN0IiBt -aW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg -ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l -PSJMaXN0T2ZIaXN0b3J5RXZlbnRGaWVsZExpc3QiIHR5cGU9InRuczpMaXN0T2ZIaXN0b3J5RXZl -bnRGaWVsZExpc3QiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBs -ZXhUeXBlIG5hbWU9IlN0YXR1c0NoYW5nZU5vdGlmaWNhdGlvbiI+DQogICAgPHhzOmNvbXBsZXhD -b250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpOb3Rp -ZmljYXRpb25EYXRhIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVt -ZW50IG5hbWU9IlN0YXR1cyIgdHlwZT0idWE6U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAvPg0K -ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvIiB0eXBlPSJ1YTpEaWFn -bm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94 -czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRl -bnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlN0YXR1c0NoYW5n -ZU5vdGlmaWNhdGlvbiIgdHlwZT0idG5zOlN0YXR1c0NoYW5nZU5vdGlmaWNhdGlvbiIgLz4NCg0K -ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU3Vic2NyaXB0aW9uQWNrbm93bGVkZ2VtZW50Ij4NCiAg -ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpcHRpb25JZCIg +ZGlmeVN1YnNjcmlwdGlvblJlcXVlc3QiIHR5cGU9InRuczpNb2RpZnlTdWJzY3JpcHRpb25SZXF1 +ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJNb2RpZnlTdWJzY3JpcHRpb25SZXNw +b25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9u +c2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJs +ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJldmlzZWRQdWJsaXNoaW5nSW50 +ZXJ2YWwiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iUmV2aXNlZExpZmV0aW1lQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5P +Y2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXZpc2VkTWF4S2VlcEFsaXZl +Q291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpz +ZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTW9kaWZ5 +U3Vic2NyaXB0aW9uUmVzcG9uc2UiIHR5cGU9InRuczpNb2RpZnlTdWJzY3JpcHRpb25SZXNwb25z +ZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2V0UHVibGlzaGluZ01vZGVSZXF1ZXN0 +Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVh +ZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 +ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlB1Ymxpc2hpbmdFbmFibGVkIiB0eXBlPSJ4 +czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJz +Y3JpcHRpb25JZHMiIHR5cGU9InVhOkxpc3RPZlVJbnQzMiIgbWluT2NjdXJzPSIwIiBuaWxsYWJs +ZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8 +eHM6ZWxlbWVudCBuYW1lPSJTZXRQdWJsaXNoaW5nTW9kZVJlcXVlc3QiIHR5cGU9InRuczpTZXRQ +dWJsaXNoaW5nTW9kZVJlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNldFB1 +Ymxpc2hpbmdNb2RlUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9j +Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1 +bHRzIiB0eXBlPSJ1YTpMaXN0T2ZTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0 +cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1 +YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N +CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu +YW1lPSJTZXRQdWJsaXNoaW5nTW9kZVJlc3BvbnNlIiB0eXBlPSJ0bnM6U2V0UHVibGlzaGluZ01v +ZGVSZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTm90aWZpY2F0aW9uTWVz +c2FnZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VxdWVu +Y2VOdW1iZXIiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNoVGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vy +cz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vdGlmaWNhdGlvbkRhdGEiIHR5cGU9 +InVhOkxpc3RPZkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg +Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu +dCBuYW1lPSJOb3RpZmljYXRpb25NZXNzYWdlIiB0eXBlPSJ0bnM6Tm90aWZpY2F0aW9uTWVzc2Fn +ZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTm90aWZpY2F0aW9uRGF0YSI+DQogICAg +PHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog +IDx4czplbGVtZW50IG5hbWU9Ik5vdGlmaWNhdGlvbkRhdGEiIHR5cGU9InRuczpOb3RpZmljYXRp +b25EYXRhIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEYXRhQ2hhbmdlTm90aWZpY2F0 +aW9uIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpl +eHRlbnNpb24gYmFzZT0idG5zOk5vdGlmaWNhdGlvbkRhdGEiPg0KICAgICAgICA8eHM6c2VxdWVu +Y2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9uaXRvcmVkSXRlbXMiIHR5cGU9InRu +czpMaXN0T2ZNb25pdG9yZWRJdGVtTm90aWZpY2F0aW9uIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl +PSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvcyIg +dHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy +dWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAg +ICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu +dCBuYW1lPSJEYXRhQ2hhbmdlTm90aWZpY2F0aW9uIiB0eXBlPSJ0bnM6RGF0YUNoYW5nZU5vdGlm +aWNhdGlvbiIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTW9uaXRvcmVkSXRlbU5vdGlm +aWNhdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ2xp +ZW50SGFuZGxlIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iVmFsdWUiIHR5cGU9InVhOkRhdGFWYWx1ZSIgbWluT2NjdXJzPSIw +IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU +eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yZWRJdGVtTm90aWZpY2F0aW9uIiB0eXBl +PSJ0bnM6TW9uaXRvcmVkSXRlbU5vdGlmaWNhdGlvbiIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg +bmFtZT0iTGlzdE9mTW9uaXRvcmVkSXRlbU5vdGlmaWNhdGlvbiI+DQogICAgPHhzOnNlcXVlbmNl +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9uaXRvcmVkSXRlbU5vdGlmaWNhdGlvbiIgdHlw +ZT0idG5zOk1vbml0b3JlZEl0ZW1Ob3RpZmljYXRpb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJz +PSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv +eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk1vbml0b3JlZEl0ZW1O +b3RpZmljYXRpb24iIHR5cGU9InRuczpMaXN0T2ZNb25pdG9yZWRJdGVtTm90aWZpY2F0aW9uIiBu +aWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJF +dmVudE5vdGlmaWNhdGlvbkxpc3QiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFs +c2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6Tm90aWZpY2F0aW9uRGF0YSI+DQog +ICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFdmVudHMi +IHR5cGU9InRuczpMaXN0T2ZFdmVudEZpZWxkTGlzdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i +dHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0K +ICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt +ZW50IG5hbWU9IkV2ZW50Tm90aWZpY2F0aW9uTGlzdCIgdHlwZT0idG5zOkV2ZW50Tm90aWZpY2F0 +aW9uTGlzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRXZlbnRGaWVsZExpc3QiPg0K +ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNsaWVudEhhbmRsZSIg dHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50 -IG5hbWU9IlNlcXVlbmNlTnVtYmVyIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIw -IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt -ZW50IG5hbWU9IlN1YnNjcmlwdGlvbkFja25vd2xlZGdlbWVudCIgdHlwZT0idG5zOlN1YnNjcmlw -dGlvbkFja25vd2xlZGdlbWVudCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9m -U3Vic2NyaXB0aW9uQWNrbm93bGVkZ2VtZW50Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpcHRpb25BY2tub3dsZWRnZW1lbnQiIHR5cGU9InRuczpT -dWJzY3JpcHRpb25BY2tub3dsZWRnZW1lbnQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJv -dW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29t -cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlN1YnNjcmlwdGlvbkFja25vd2xl -ZGdlbWVudCIgdHlwZT0idG5zOkxpc3RPZlN1YnNjcmlwdGlvbkFja25vd2xlZGdlbWVudCIgbmls -bGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUHVi -bGlzaFJlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5p -bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3Vic2NyaXB0aW9uQWNr -bm93bGVkZ2VtZW50cyIgdHlwZT0idG5zOkxpc3RPZlN1YnNjcmlwdGlvbkFja25vd2xlZGdlbWVu -dCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K -ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNoUmVxdWVzdCIg -dHlwZT0idG5zOlB1Ymxpc2hSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJQ -dWJsaXNoUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0i -MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpcHRp -b25JZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl -bGVtZW50IG5hbWU9IkF2YWlsYWJsZVNlcXVlbmNlTnVtYmVycyIgdHlwZT0idWE6TGlzdE9mVUlu -dDMyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iTW9yZU5vdGlmaWNhdGlvbnMiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIg -Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vdGlmaWNhdGlvbk1lc3NhZ2UiIHR5cGU9InRu -czpOb3RpZmljYXRpb25NZXNzYWdlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzdWx0cyIgdHlwZT0idWE6TGlzdE9mU3RhdHVzQ29k -ZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IkRpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9j -Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpj -b21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUHVibGlzaFJlc3BvbnNlIiB0eXBlPSJ0 -bnM6UHVibGlzaFJlc3BvbnNlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZXB1Ymxp -c2hSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJS -ZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxs -YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN1YnNjcmlwdGlvbklkIiB0 -eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg -bmFtZT0iUmV0cmFuc21pdFNlcXVlbmNlTnVtYmVyIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWlu -T2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog -IDx4czplbGVtZW50IG5hbWU9IlJlcHVibGlzaFJlcXVlc3QiIHR5cGU9InRuczpSZXB1Ymxpc2hS -ZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZXB1Ymxpc2hSZXNwb25zZSI+ -DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFk -ZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 -ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vdGlmaWNhdGlvbk1lc3NhZ2UiIHR5cGU9 -InRuczpOb3RpZmljYXRpb25NZXNzYWdlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv +IG5hbWU9IkV2ZW50RmllbGRzIiB0eXBlPSJ1YTpMaXN0T2ZWYXJpYW50IiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5 +cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkV2ZW50RmllbGRMaXN0IiB0eXBlPSJ0bnM6RXZlbnRG +aWVsZExpc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkV2ZW50RmllbGRM +aXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFdmVudEZp +ZWxkTGlzdCIgdHlwZT0idG5zOkV2ZW50RmllbGRMaXN0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vy +cz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8 +L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZFdmVudEZpZWxkTGlz +dCIgdHlwZT0idG5zOkxpc3RPZkV2ZW50RmllbGRMaXN0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czpl +bGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJIaXN0b3J5RXZlbnRGaWVsZExpc3Qi +Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkV2ZW50RmllbGRz +IiB0eXBlPSJ1YTpMaXN0T2ZWYXJpYW50IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50 -IG5hbWU9IlJlcHVibGlzaFJlc3BvbnNlIiB0eXBlPSJ0bnM6UmVwdWJsaXNoUmVzcG9uc2UiIC8+ -DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRyYW5zZmVyUmVzdWx0Ij4NCiAgICA8eHM6c2Vx -dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0dXNDb2RlIiB0eXBlPSJ1YTpTdGF0 -dXNDb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBdmFpbGFi -bGVTZXF1ZW5jZU51bWJlcnMiIHR5cGU9InVhOkxpc3RPZlVJbnQzMiIgbWluT2NjdXJzPSIwIiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl -Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJUcmFuc2ZlclJlc3VsdCIgdHlwZT0idG5zOlRyYW5zZmVy -UmVzdWx0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZUcmFuc2ZlclJlc3Vs -dCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNmZXJS -ZXN1bHQiIHR5cGU9InRuczpUcmFuc2ZlclJlc3VsdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9 -InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94 -czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVHJhbnNmZXJSZXN1bHQi -IHR5cGU9InRuczpMaXN0T2ZUcmFuc2ZlclJlc3VsdCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxl -bWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVHJhbnNmZXJTdWJzY3JpcHRpb25zUmVx -dWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVz -dEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 -InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpcHRpb25JZHMiIHR5cGU9 -InVhOkxpc3RPZlVJbnQzMiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IlNlbmRJbml0aWFsVmFsdWVzIiB0eXBlPSJ4czpib29sZWFuIiBt -aW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N -CiAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNmZXJTdWJzY3JpcHRpb25zUmVxdWVzdCIgdHlwZT0i -dG5zOlRyYW5zZmVyU3Vic2NyaXB0aW9uc1JlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl -IG5hbWU9IlRyYW5zZmVyU3Vic2NyaXB0aW9uc1Jlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3Bv -bnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iUmVzdWx0cyIgdHlwZT0idG5zOkxpc3RPZlRyYW5zZmVyUmVzdWx0IiBtaW5P -Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlh -Z25vc3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIw -IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU -eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJUcmFuc2ZlclN1YnNjcmlwdGlvbnNSZXNwb25zZSIg -dHlwZT0idG5zOlRyYW5zZmVyU3Vic2NyaXB0aW9uc1Jlc3BvbnNlIiAvPg0KDQogIDx4czpjb21w -bGV4VHlwZSBuYW1lPSJEZWxldGVTdWJzY3JpcHRpb25zUmVxdWVzdCI+DQogICAgPHhzOnNlcXVl -bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJl -cXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJTdWJzY3JpcHRpb25JZHMiIHR5cGU9InVhOkxpc3RPZlVJbnQzMiIgbWlu -T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz -OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEZWxldGVTdWJzY3JpcHRpb25zUmVx -dWVzdCIgdHlwZT0idG5zOkRlbGV0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0IiAvPg0KDQogIDx4czpj -b21wbGV4VHlwZSBuYW1lPSJEZWxldGVTdWJzY3JpcHRpb25zUmVzcG9uc2UiPg0KICAgIDx4czpz -ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0 -bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg +IG5hbWU9Ikhpc3RvcnlFdmVudEZpZWxkTGlzdCIgdHlwZT0idG5zOkhpc3RvcnlFdmVudEZpZWxk +TGlzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mSGlzdG9yeUV2ZW50Rmll +bGRMaXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJIaXN0 +b3J5RXZlbnRGaWVsZExpc3QiIHR5cGU9InRuczpIaXN0b3J5RXZlbnRGaWVsZExpc3QiIG1pbk9j +Y3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv +eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxp +c3RPZkhpc3RvcnlFdmVudEZpZWxkTGlzdCIgdHlwZT0idG5zOkxpc3RPZkhpc3RvcnlFdmVudEZp +ZWxkTGlzdCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5 +cGUgbmFtZT0iU3RhdHVzQ2hhbmdlTm90aWZpY2F0aW9uIj4NCiAgICA8eHM6Y29tcGxleENvbnRl +bnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOk5vdGlmaWNh +dGlvbkRhdGEiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iU3RhdHVzIiB0eXBlPSJ1YTpTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAg +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm8iIHR5cGU9InVhOkRpYWdub3N0 +aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNl +cXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4N +CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhdHVzQ2hhbmdlTm90 +aWZpY2F0aW9uIiB0eXBlPSJ0bnM6U3RhdHVzQ2hhbmdlTm90aWZpY2F0aW9uIiAvPg0KDQogIDx4 +czpjb21wbGV4VHlwZSBuYW1lPSJTdWJzY3JpcHRpb25BY2tub3dsZWRnZW1lbnQiPg0KICAgIDx4 +czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN1YnNjcmlwdGlvbklkIiB0eXBl +PSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt +ZT0iU2VxdWVuY2VOdW1iZXIiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+ +DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg +bmFtZT0iU3Vic2NyaXB0aW9uQWNrbm93bGVkZ2VtZW50IiB0eXBlPSJ0bnM6U3Vic2NyaXB0aW9u +QWNrbm93bGVkZ2VtZW50IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZTdWJz +Y3JpcHRpb25BY2tub3dsZWRnZW1lbnQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IlN1YnNjcmlwdGlvbkFja25vd2xlZGdlbWVudCIgdHlwZT0idG5zOlN1YnNj +cmlwdGlvbkFja25vd2xlZGdlbWVudCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRl +ZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4 +VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mU3Vic2NyaXB0aW9uQWNrbm93bGVkZ2Vt +ZW50IiB0eXBlPSJ0bnM6TGlzdE9mU3Vic2NyaXB0aW9uQWNrbm93bGVkZ2VtZW50IiBuaWxsYWJs +ZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJQdWJsaXNo +UmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVx +dWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFi +bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpcHRpb25BY2tub3ds +ZWRnZW1lbnRzIiB0eXBlPSJ0bnM6TGlzdE9mU3Vic2NyaXB0aW9uQWNrbm93bGVkZ2VtZW50IiBt +aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv +eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlB1Ymxpc2hSZXF1ZXN0IiB0eXBl +PSJ0bnM6UHVibGlzaFJlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlB1Ymxp +c2hSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +UmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBu +aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN1YnNjcmlwdGlvbklk +IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1l +bnQgbmFtZT0iQXZhaWxhYmxlU2VxdWVuY2VOdW1iZXJzIiB0eXBlPSJ1YTpMaXN0T2ZVSW50MzIi +IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l +PSJNb3JlTm90aWZpY2F0aW9ucyIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0K +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm90aWZpY2F0aW9uTWVzc2FnZSIgdHlwZT0idG5zOk5v +dGlmaWNhdGlvbk1lc3NhZ2UiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg ICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ1YTpMaXN0T2ZTdGF0dXNDb2RlIiBt aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i RGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJz PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs -ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEZWxldGVTdWJzY3JpcHRpb25zUmVzcG9uc2Ui -IHR5cGU9InRuczpEZWxldGVTdWJzY3JpcHRpb25zUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBs -ZXhUeXBlIG5hbWU9IkJ1aWxkSW5mbyI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iUHJvZHVjdFVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5p -bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWFudWZhY3R1cmVyTmFt -ZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iUHJvZHVjdE5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2Nj -dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNvZnR3 -YXJlVmVyc2lvbiIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl -IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnVpbGROdW1iZXIiIHR5cGU9InhzOnN0cmlu -ZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IkJ1aWxkRGF0ZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8 -L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJC -dWlsZEluZm8iIHR5cGU9InRuczpCdWlsZEluZm8iIC8+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5h -bWU9IlJlZHVuZGFuY3lTdXBwb3J0Ij4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3Ry -aW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm9uZV8wIiAvPg0KICAgICAgPHhz -OmVudW1lcmF0aW9uIHZhbHVlPSJDb2xkXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFs -dWU9Ildhcm1fMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSG90XzMiIC8+DQog -ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlRyYW5zcGFyZW50XzQiIC8+DQogICAgICA8eHM6 -ZW51bWVyYXRpb24gdmFsdWU9IkhvdEFuZE1pcnJvcmVkXzUiIC8+DQogICAgPC94czpyZXN0cmlj -dGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZWR1bmRhbmN5 -U3VwcG9ydCIgdHlwZT0idG5zOlJlZHVuZGFuY3lTdXBwb3J0IiAvPg0KDQogIDx4czpzaW1wbGVU -eXBlICBuYW1lPSJTZXJ2ZXJTdGF0ZSI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0 -cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlJ1bm5pbmdfMCIgLz4NCiAgICAg -IDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRmFpbGVkXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRp -b24gdmFsdWU9Ik5vQ29uZmlndXJhdGlvbl8yIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZh -bHVlPSJTdXNwZW5kZWRfMyIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU2h1dGRv -d25fNCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVGVzdF81IiAvPg0KICAgICAg -PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDb21tdW5pY2F0aW9uRmF1bHRfNiIgLz4NCiAgICAgIDx4 -czplbnVtZXJhdGlvbiB2YWx1ZT0iVW5rbm93bl83IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+ -DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyU3RhdGUiIHR5 -cGU9InRuczpTZXJ2ZXJTdGF0ZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVkdW5k -YW50U2VydmVyRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50 -IG5hbWU9IlNlcnZlcklkIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9 -InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2aWNlTGV2ZWwiIHR5cGU9Inhz -OnVuc2lnbmVkQnl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i -U2VydmVyU3RhdGUiIHR5cGU9InRuczpTZXJ2ZXJTdGF0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAg -IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 -IlJlZHVuZGFudFNlcnZlckRhdGFUeXBlIiB0eXBlPSJ0bnM6UmVkdW5kYW50U2VydmVyRGF0YVR5 -cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlJlZHVuZGFudFNlcnZlckRh -dGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWR1 -bmRhbnRTZXJ2ZXJEYXRhVHlwZSIgdHlwZT0idG5zOlJlZHVuZGFudFNlcnZlckRhdGFUeXBlIiBt -aW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg -ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l -PSJMaXN0T2ZSZWR1bmRhbnRTZXJ2ZXJEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlJlZHVuZGFu -dFNlcnZlckRhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpj -b21wbGV4VHlwZSBuYW1lPSJFbmRwb2ludFVybExpc3REYXRhVHlwZSI+DQogICAgPHhzOnNlcXVl -bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5kcG9pbnRVcmxMaXN0IiB0eXBlPSJ1YTpM -aXN0T2ZTdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpz -ZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRW5kcG9p -bnRVcmxMaXN0RGF0YVR5cGUiIHR5cGU9InRuczpFbmRwb2ludFVybExpc3REYXRhVHlwZSIgLz4N -Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRW5kcG9pbnRVcmxMaXN0RGF0YVR5cGUi -Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVuZHBvaW50VXJs -TGlzdERhdGFUeXBlIiB0eXBlPSJ0bnM6RW5kcG9pbnRVcmxMaXN0RGF0YVR5cGUiIG1pbk9jY3Vy -cz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6 -c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RP -ZkVuZHBvaW50VXJsTGlzdERhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mRW5kcG9pbnRVcmxMaXN0 -RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhU -eXBlIG5hbWU9Ik5ldHdvcmtHcm91cERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJVcmkiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJz -PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5ldHdvcmtQ -YXRocyIgdHlwZT0idG5zOkxpc3RPZkVuZHBvaW50VXJsTGlzdERhdGFUeXBlIiBtaW5PY2N1cnM9 -IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl -eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik5ldHdvcmtHcm91cERhdGFUeXBlIiB0eXBlPSJ0 -bnM6TmV0d29ya0dyb3VwRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxp -c3RPZk5ldHdvcmtHcm91cERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJOZXR3b3JrR3JvdXBEYXRhVHlwZSIgdHlwZT0idG5zOk5ldHdvcmtHcm91 -cERhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0i -dHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6 -ZWxlbWVudCBuYW1lPSJMaXN0T2ZOZXR3b3JrR3JvdXBEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RP -Zk5ldHdvcmtHcm91cERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQog -IDx4czpjb21wbGV4VHlwZSBuYW1lPSJTYW1wbGluZ0ludGVydmFsRGlhZ25vc3RpY3NEYXRhVHlw -ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2FtcGxpbmdJ -bnRlcnZhbCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJNb25pdG9yZWRJdGVtQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5P -Y2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYXhNb25pdG9yZWRJdGVtQ291 -bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJEaXNhYmxlZE1vbml0b3JlZEl0ZW1Db3VudCIgdHlwZT0ieHM6dW5zaWduZWRJ -bnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU -eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTYW1wbGluZ0ludGVydmFsRGlhZ25vc3RpY3NEYXRh -VHlwZSIgdHlwZT0idG5zOlNhbXBsaW5nSW50ZXJ2YWxEaWFnbm9zdGljc0RhdGFUeXBlIiAvPg0K -DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZTYW1wbGluZ0ludGVydmFsRGlhZ25vc3Rp -Y3NEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i -U2FtcGxpbmdJbnRlcnZhbERpYWdub3N0aWNzRGF0YVR5cGUiIHR5cGU9InRuczpTYW1wbGluZ0lu -dGVydmFsRGlhZ25vc3RpY3NEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91 -bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w -bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mU2FtcGxpbmdJbnRlcnZhbERpYWdu -b3N0aWNzRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZTYW1wbGluZ0ludGVydmFsRGlhZ25vc3Rp -Y3NEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxl -eFR5cGUgbmFtZT0iU2VydmVyRGlhZ25vc3RpY3NTdW1tYXJ5RGF0YVR5cGUiPg0KICAgIDx4czpz -ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlclZpZXdDb3VudCIgdHlwZT0i -eHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IkN1cnJlbnRTZXNzaW9uQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAi -IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDdW11bGF0ZWRTZXNzaW9uQ291bnQiIHR5cGU9 +ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNoUmVzcG9uc2UiIHR5cGU9InRuczpQ +dWJsaXNoUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlcHVibGlzaFJl +cXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVl +c3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl +PSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3Vic2NyaXB0aW9uSWQiIHR5cGU9 InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJTZWN1cml0eVJlamVjdGVkU2Vzc2lvbkNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWlu -T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVqZWN0ZWRTZXNzaW9uQ291 -bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJTZXNzaW9uVGltZW91dENvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWlu -T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2Vzc2lvbkFib3J0Q291bnQi -IHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJDdXJyZW50U3Vic2NyaXB0aW9uQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBt -aW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDdW11bGF0ZWRTdWJzY3Jp -cHRpb25Db3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IlB1Ymxpc2hpbmdJbnRlcnZhbENvdW50IiB0eXBlPSJ4czp1bnNp -Z25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VjdXJp -dHlSZWplY3RlZFJlcXVlc3RzQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9 -IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWplY3RlZFJlcXVlc3RzQ291bnQiIHR5 -cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4N -CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyRGlhZ25vc3Rp -Y3NTdW1tYXJ5RGF0YVR5cGUiIHR5cGU9InRuczpTZXJ2ZXJEaWFnbm9zdGljc1N1bW1hcnlEYXRh -VHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2VydmVyU3RhdHVzRGF0YVR5cGUi -Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXJ0VGltZSIg -dHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IkN1cnJlbnRUaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhdGUiIHR5cGU9InRuczpTZXJ2ZXJTdGF0ZSIgbWluT2Nj -dXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnVpbGRJbmZvIiB0eXBlPSJ0bnM6 -QnVpbGRJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iU2Vjb25kc1RpbGxTaHV0ZG93biIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1p -bk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNodXRkb3duUmVhc29uIiB0 -eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K -ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h -bWU9IlNlcnZlclN0YXR1c0RhdGFUeXBlIiB0eXBlPSJ0bnM6U2VydmVyU3RhdHVzRGF0YVR5cGUi -IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNlc3Npb25EaWFnbm9zdGljc0RhdGFUeXBl -Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXNzaW9uSWQi -IHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IlNlc3Npb25OYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vy -cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDbGllbnRE -ZXNjcmlwdGlvbiIgdHlwZT0idG5zOkFwcGxpY2F0aW9uRGVzY3JpcHRpb24iIG1pbk9jY3Vycz0i -MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJVcmki -IHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IkVuZHBvaW50VXJsIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vy -cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMb2NhbGVJ -ZHMiIHR5cGU9InVhOkxpc3RPZlN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkFjdHVhbFNlc3Npb25UaW1lb3V0IiB0eXBlPSJ4 -czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1heFJl -c3BvbnNlTWVzc2FnZVNpemUiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDbGllbnRDb25uZWN0aW9uVGltZSIgdHlwZT0ieHM6 -ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNsaWVu -dExhc3RDb250YWN0VGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAg -ICAgIDx4czplbGVtZW50IG5hbWU9IkN1cnJlbnRTdWJzY3JpcHRpb25zQ291bnQiIHR5cGU9Inhz -OnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJD -dXJyZW50TW9uaXRvcmVkSXRlbXNDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vy -cz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkN1cnJlbnRQdWJsaXNoUmVxdWVzdHNJ -blF1ZXVlIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhz -OmVsZW1lbnQgbmFtZT0iVG90YWxSZXF1ZXN0Q291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291bnRl -ckRhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iVW5hdXRob3JpemVkUmVxdWVzdENvdW50IiB0eXBlPSJ4czp1bnNpZ25lZElu -dCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVhZENvdW50IiB0 -eXBlPSJ0bnM6U2VydmljZUNvdW50ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i -dHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikhpc3RvcnlSZWFkQ291bnQiIHR5cGU9 +PSJSZXRyYW5zbWl0U2VxdWVuY2VOdW1iZXIiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1 +cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz +OmVsZW1lbnQgbmFtZT0iUmVwdWJsaXNoUmVxdWVzdCIgdHlwZT0idG5zOlJlcHVibGlzaFJlcXVl +c3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlcHVibGlzaFJlc3BvbnNlIj4NCiAg +ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIg +dHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm90aWZpY2F0aW9uTWVzc2FnZSIgdHlwZT0idG5z +Ok5vdGlmaWNhdGlvbk1lc3NhZ2UiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog +ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt +ZT0iUmVwdWJsaXNoUmVzcG9uc2UiIHR5cGU9InRuczpSZXB1Ymxpc2hSZXNwb25zZSIgLz4NCg0K +ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVHJhbnNmZXJSZXN1bHQiPg0KICAgIDx4czpzZXF1ZW5j +ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXR1c0NvZGUiIHR5cGU9InVhOlN0YXR1c0Nv +ZGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkF2YWlsYWJsZVNl +cXVlbmNlTnVtYmVycyIgdHlwZT0idWE6TGlzdE9mVUludDMyIiBtaW5PY2N1cnM9IjAiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog +IDx4czplbGVtZW50IG5hbWU9IlRyYW5zZmVyUmVzdWx0IiB0eXBlPSJ0bnM6VHJhbnNmZXJSZXN1 +bHQiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlRyYW5zZmVyUmVzdWx0Ij4N +CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUcmFuc2ZlclJlc3Vs +dCIgdHlwZT0idG5zOlRyYW5zZmVyUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5i +b3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv +bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZUcmFuc2ZlclJlc3VsdCIgdHlw +ZT0idG5zOkxpc3RPZlRyYW5zZmVyUmVzdWx0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50 +Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJUcmFuc2ZlclN1YnNjcmlwdGlvbnNSZXF1ZXN0 +Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVh +ZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 +ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN1YnNjcmlwdGlvbklkcyIgdHlwZT0idWE6 +TGlzdE9mVUludDMyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iU2VuZEluaXRpYWxWYWx1ZXMiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9j +Y3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8 +eHM6ZWxlbWVudCBuYW1lPSJUcmFuc2ZlclN1YnNjcmlwdGlvbnNSZXF1ZXN0IiB0eXBlPSJ0bnM6 +VHJhbnNmZXJTdWJzY3JpcHRpb25zUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt +ZT0iVHJhbnNmZXJTdWJzY3JpcHRpb25zUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VI +ZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ0bnM6TGlzdE9mVHJhbnNmZXJSZXN1bHQiIG1pbk9jY3Vy +cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9z +dGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5p +bGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+ +DQogIDx4czplbGVtZW50IG5hbWU9IlRyYW5zZmVyU3Vic2NyaXB0aW9uc1Jlc3BvbnNlIiB0eXBl +PSJ0bnM6VHJhbnNmZXJTdWJzY3JpcHRpb25zUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhU +eXBlIG5hbWU9IkRlbGV0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVz +dEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IlN1YnNjcmlwdGlvbklkcyIgdHlwZT0idWE6TGlzdE9mVUludDMyIiBtaW5PY2N1 +cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29t +cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRlbGV0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0 +IiB0eXBlPSJ0bnM6RGVsZXRlU3Vic2NyaXB0aW9uc1JlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBs +ZXhUeXBlIG5hbWU9IkRlbGV0ZVN1YnNjcmlwdGlvbnNSZXNwb25zZSI+DQogICAgPHhzOnNlcXVl +bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpS +ZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4 +czplbGVtZW50IG5hbWU9IlJlc3VsdHMiIHR5cGU9InVhOkxpc3RPZlN0YXR1c0NvZGUiIG1pbk9j +Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFn +bm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5 +cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRlbGV0ZVN1YnNjcmlwdGlvbnNSZXNwb25zZSIgdHlw +ZT0idG5zOkRlbGV0ZVN1YnNjcmlwdGlvbnNSZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5 +cGUgbmFtZT0iQnVpbGRJbmZvIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJQcm9kdWN0VXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFi +bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYW51ZmFjdHVyZXJOYW1lIiB0 +eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJQcm9kdWN0TmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9 +IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU29mdHdhcmVW +ZXJzaW9uIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCdWlsZE51bWJlciIgdHlwZT0ieHM6c3RyaW5nIiBt +aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +QnVpbGREYXRlIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6 +c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkJ1aWxk +SW5mbyIgdHlwZT0idG5zOkJ1aWxkSW5mbyIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0i +UmVkdW5kYW5jeVN1cHBvcnQiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmci +Pg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJOb25lXzAiIC8+DQogICAgICA8eHM6ZW51 +bWVyYXRpb24gdmFsdWU9IkNvbGRfMSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0i +V2FybV8yIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJIb3RfMyIgLz4NCiAgICAg +IDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVHJhbnNwYXJlbnRfNCIgLz4NCiAgICAgIDx4czplbnVt +ZXJhdGlvbiB2YWx1ZT0iSG90QW5kTWlycm9yZWRfNSIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9u +Pg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlZHVuZGFuY3lTdXBw +b3J0IiB0eXBlPSJ0bnM6UmVkdW5kYW5jeVN1cHBvcnQiIC8+DQoNCiAgPHhzOnNpbXBsZVR5cGUg +IG5hbWU9IlNlcnZlclN0YXRlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5n +Ij4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUnVubmluZ18wIiAvPg0KICAgICAgPHhz +OmVudW1lcmF0aW9uIHZhbHVlPSJGYWlsZWRfMSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2 +YWx1ZT0iTm9Db25maWd1cmF0aW9uXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9 +IlN1c3BlbmRlZF8zIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTaHV0ZG93bl80 +IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJUZXN0XzUiIC8+DQogICAgICA8eHM6 +ZW51bWVyYXRpb24gdmFsdWU9IkNvbW11bmljYXRpb25GYXVsdF82IiAvPg0KICAgICAgPHhzOmVu +dW1lcmF0aW9uIHZhbHVlPSJVbmtub3duXzciIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAg +PC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJTdGF0ZSIgdHlwZT0i +dG5zOlNlcnZlclN0YXRlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWR1bmRhbnRT +ZXJ2ZXJEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt +ZT0iU2VydmVySWQiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 +ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZpY2VMZXZlbCIgdHlwZT0ieHM6dW5z +aWduZWRCeXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2 +ZXJTdGF0ZSIgdHlwZT0idG5zOlNlcnZlclN0YXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94 +czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVk +dW5kYW50U2VydmVyRGF0YVR5cGUiIHR5cGU9InRuczpSZWR1bmRhbnRTZXJ2ZXJEYXRhVHlwZSIg +Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUmVkdW5kYW50U2VydmVyRGF0YVR5 +cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlZHVuZGFu +dFNlcnZlckRhdGFUeXBlIiB0eXBlPSJ0bnM6UmVkdW5kYW50U2VydmVyRGF0YVR5cGUiIG1pbk9j +Y3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv +eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxp +c3RPZlJlZHVuZGFudFNlcnZlckRhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mUmVkdW5kYW50U2Vy +dmVyRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBs +ZXhUeXBlIG5hbWU9IkVuZHBvaW50VXJsTGlzdERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmRwb2ludFVybExpc3QiIHR5cGU9InVhOkxpc3RP +ZlN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVl +bmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJFbmRwb2ludFVy +bExpc3REYXRhVHlwZSIgdHlwZT0idG5zOkVuZHBvaW50VXJsTGlzdERhdGFUeXBlIiAvPg0KDQog +IDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZFbmRwb2ludFVybExpc3REYXRhVHlwZSI+DQog +ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5kcG9pbnRVcmxMaXN0 +RGF0YVR5cGUiIHR5cGU9InRuczpFbmRwb2ludFVybExpc3REYXRhVHlwZSIgbWluT2NjdXJzPSIw +IiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1 +ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRW5k +cG9pbnRVcmxMaXN0RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZFbmRwb2ludFVybExpc3REYXRh +VHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUg +bmFtZT0iTmV0d29ya0dyb3VwRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4 +czplbGVtZW50IG5hbWU9IlNlcnZlclVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmV0d29ya1BhdGhz +IiB0eXBlPSJ0bnM6TGlzdE9mRW5kcG9pbnRVcmxMaXN0RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIg +bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw +ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTmV0d29ya0dyb3VwRGF0YVR5cGUiIHR5cGU9InRuczpO +ZXR3b3JrR3JvdXBEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9m +TmV0d29ya0dyb3VwRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9Ik5ldHdvcmtHcm91cERhdGFUeXBlIiB0eXBlPSJ0bnM6TmV0d29ya0dyb3VwRGF0 +YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVl +IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt +ZW50IG5hbWU9Ikxpc3RPZk5ldHdvcmtHcm91cERhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mTmV0 +d29ya0dyb3VwRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhz +OmNvbXBsZXhUeXBlIG5hbWU9IlNhbXBsaW5nSW50ZXJ2YWxEaWFnbm9zdGljc0RhdGFUeXBlIj4N +CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTYW1wbGluZ0ludGVy +dmFsIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9Ik1vbml0b3JlZEl0ZW1Db3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vy +cz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1heE1vbml0b3JlZEl0ZW1Db3VudCIg +dHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9IkRpc2FibGVkTW9uaXRvcmVkSXRlbUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIg +bWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+ +DQogIDx4czplbGVtZW50IG5hbWU9IlNhbXBsaW5nSW50ZXJ2YWxEaWFnbm9zdGljc0RhdGFUeXBl +IiB0eXBlPSJ0bnM6U2FtcGxpbmdJbnRlcnZhbERpYWdub3N0aWNzRGF0YVR5cGUiIC8+DQoNCiAg +PHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlNhbXBsaW5nSW50ZXJ2YWxEaWFnbm9zdGljc0Rh +dGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTYW1w +bGluZ0ludGVydmFsRGlhZ25vc3RpY3NEYXRhVHlwZSIgdHlwZT0idG5zOlNhbXBsaW5nSW50ZXJ2 +YWxEaWFnbm9zdGljc0RhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVk +IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU +eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZTYW1wbGluZ0ludGVydmFsRGlhZ25vc3Rp +Y3NEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlNhbXBsaW5nSW50ZXJ2YWxEaWFnbm9zdGljc0Rh +dGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlw +ZSBuYW1lPSJTZXJ2ZXJEaWFnbm9zdGljc1N1bW1hcnlEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVl +bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyVmlld0NvdW50IiB0eXBlPSJ4czp1 +bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ3Vy +cmVudFNlc3Npb25Db3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4N +CiAgICAgIDx4czplbGVtZW50IG5hbWU9IkN1bXVsYXRlZFNlc3Npb25Db3VudCIgdHlwZT0ieHM6 +dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNl +Y3VyaXR5UmVqZWN0ZWRTZXNzaW9uQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1 +cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWplY3RlZFNlc3Npb25Db3VudCIg +dHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9IlNlc3Npb25UaW1lb3V0Q291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1 +cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXNzaW9uQWJvcnRDb3VudCIgdHlw +ZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h +bWU9IkN1cnJlbnRTdWJzY3JpcHRpb25Db3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9j +Y3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkN1bXVsYXRlZFN1YnNjcmlwdGlv +bkNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iUHVibGlzaGluZ0ludGVydmFsQ291bnQiIHR5cGU9InhzOnVuc2lnbmVk +SW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0eVJl +amVjdGVkUmVxdWVzdHNDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIg +Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlamVjdGVkUmVxdWVzdHNDb3VudCIgdHlwZT0i +eHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8 +L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJEaWFnbm9zdGljc1N1 +bW1hcnlEYXRhVHlwZSIgdHlwZT0idG5zOlNlcnZlckRpYWdub3N0aWNzU3VtbWFyeURhdGFUeXBl +IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJTZXJ2ZXJTdGF0dXNEYXRhVHlwZSI+DQog +ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhcnRUaW1lIiB0eXBl +PSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +Q3VycmVudFRpbWUiIHR5cGU9InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJTdGF0ZSIgdHlwZT0idG5zOlNlcnZlclN0YXRlIiBtaW5PY2N1cnM9 +IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCdWlsZEluZm8iIHR5cGU9InRuczpCdWls +ZEluZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJTZWNvbmRzVGlsbFNodXRkb3duIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2Nj +dXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2h1dGRvd25SZWFzb24iIHR5cGU9 +InVhOkxvY2FsaXplZFRleHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg +PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i +U2VydmVyU3RhdHVzRGF0YVR5cGUiIHR5cGU9InRuczpTZXJ2ZXJTdGF0dXNEYXRhVHlwZSIgLz4N +Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2Vzc2lvbkRpYWdub3N0aWNzRGF0YVR5cGUiPg0K +ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlc3Npb25JZCIgdHlw +ZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iU2Vzc2lvbk5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIw +IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNsaWVudERlc2Ny +aXB0aW9uIiB0eXBlPSJ0bnM6QXBwbGljYXRpb25EZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIwIiBu +aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlclVyaSIgdHlw +ZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iRW5kcG9pbnRVcmwiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIw +IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkxvY2FsZUlkcyIg +dHlwZT0idWE6TGlzdE9mU3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWN0dWFsU2Vzc2lvblRpbWVvdXQiIHR5cGU9InhzOmRv +dWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF4UmVzcG9u +c2VNZXNzYWdlU2l6ZSIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9IkNsaWVudENvbm5lY3Rpb25UaW1lIiB0eXBlPSJ4czpkYXRl +VGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ2xpZW50TGFz +dENvbnRhY3RUaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iQ3VycmVudFN1YnNjcmlwdGlvbnNDb3VudCIgdHlwZT0ieHM6dW5z +aWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkN1cnJl +bnRNb25pdG9yZWRJdGVtc0NvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIw +IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ3VycmVudFB1Ymxpc2hSZXF1ZXN0c0luUXVl +dWUiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl +bWVudCBuYW1lPSJUb3RhbFJlcXVlc3RDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0 +YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJVbmF1dGhvcml6ZWRSZXF1ZXN0Q291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBt +aW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWFkQ291bnQiIHR5cGU9 InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl -IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iV3JpdGVDb3VudCIgdHlwZT0idG5zOlNlcnZp -Y2VDb3VudGVyRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg -ICA8eHM6ZWxlbWVudCBuYW1lPSJIaXN0b3J5VXBkYXRlQ291bnQiIHR5cGU9InRuczpTZXJ2aWNl +IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yeVJlYWRDb3VudCIgdHlwZT0idG5z +OlNlcnZpY2VDb3VudGVyRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJXcml0ZUNvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNv +dW50ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4 +czplbGVtZW50IG5hbWU9Ikhpc3RvcnlVcGRhdGVDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VDb3Vu +dGVyRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6 +ZWxlbWVudCBuYW1lPSJDYWxsQ291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBl +IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt +ZT0iQ3JlYXRlTW9uaXRvcmVkSXRlbXNDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0 +YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJNb2RpZnlNb25pdG9yZWRJdGVtc0NvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50 +ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IlNldE1vbml0b3JpbmdNb2RlQ291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291 +bnRlckRhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iU2V0VHJpZ2dlcmluZ0NvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50 +ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IkRlbGV0ZU1vbml0b3JlZEl0ZW1zQ291bnQiIHR5cGU9InRuczpTZXJ2aWNl +Q291bnRlckRhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iQ3JlYXRlU3Vic2NyaXB0aW9uQ291bnQiIHR5cGU9InRuczpTZXJ2 +aWNlQ291bnRlckRhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +ICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9kaWZ5U3Vic2NyaXB0aW9uQ291bnQiIHR5cGU9InRuczpT +ZXJ2aWNlQ291bnRlckRhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2V0UHVibGlzaGluZ01vZGVDb3VudCIgdHlwZT0idG5z +OlNlcnZpY2VDb3VudGVyRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNoQ291bnQiIHR5cGU9InRuczpTZXJ2aWNl Q291bnRlckRhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg -PHhzOmVsZW1lbnQgbmFtZT0iQ2FsbENvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50ZXJEYXRh -VHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50 -IG5hbWU9IkNyZWF0ZU1vbml0b3JlZEl0ZW1zQ291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291bnRl +PHhzOmVsZW1lbnQgbmFtZT0iUmVwdWJsaXNoQ291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291bnRl ckRhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iTW9kaWZ5TW9uaXRvcmVkSXRlbXNDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VD -b3VudGVyRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJTZXRNb25pdG9yaW5nTW9kZUNvdW50IiB0eXBlPSJ0bnM6U2Vydmlj -ZUNvdW50ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IlNldFRyaWdnZXJpbmdDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VD -b3VudGVyRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJEZWxldGVNb25pdG9yZWRJdGVtc0NvdW50IiB0eXBlPSJ0bnM6U2Vy -dmljZUNvdW50ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg -ICAgIDx4czplbGVtZW50IG5hbWU9IkNyZWF0ZVN1YnNjcmlwdGlvbkNvdW50IiB0eXBlPSJ0bnM6 -U2VydmljZUNvdW50ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1vZGlmeVN1YnNjcmlwdGlvbkNvdW50IiB0eXBlPSJ0 -bnM6U2VydmljZUNvdW50ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNldFB1Ymxpc2hpbmdNb2RlQ291bnQiIHR5cGU9 -InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl -IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHVibGlzaENvdW50IiB0eXBlPSJ0bnM6U2Vy -dmljZUNvdW50ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg -ICAgIDx4czplbGVtZW50IG5hbWU9IlJlcHVibGlzaENvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNv -dW50ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9IlRyYW5zZmVyU3Vic2NyaXB0aW9uc0NvdW50IiB0eXBlPSJ0bnM6U2Vy +ZW1lbnQgbmFtZT0iVHJhbnNmZXJTdWJzY3JpcHRpb25zQ291bnQiIHR5cGU9InRuczpTZXJ2aWNl +Q291bnRlckRhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iRGVsZXRlU3Vic2NyaXB0aW9uc0NvdW50IiB0eXBlPSJ0bnM6U2Vy dmljZUNvdW50ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg -ICAgIDx4czplbGVtZW50IG5hbWU9IkRlbGV0ZVN1YnNjcmlwdGlvbnNDb3VudCIgdHlwZT0idG5z -OlNlcnZpY2VDb3VudGVyRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBZGROb2Rlc0NvdW50IiB0eXBlPSJ0bnM6U2Vydmlj -ZUNvdW50ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IkFkZFJlZmVyZW5jZXNDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VD -b3VudGVyRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJEZWxldGVOb2Rlc0NvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50 +ICAgIDx4czplbGVtZW50IG5hbWU9IkFkZE5vZGVzQ291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291 +bnRlckRhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iQWRkUmVmZXJlbmNlc0NvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50 ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl -bGVtZW50IG5hbWU9IkRlbGV0ZVJlZmVyZW5jZXNDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VDb3Vu -dGVyRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJCcm93c2VDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0YVR5 -cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJCcm93c2VOZXh0Q291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBlIiBt -aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i -VHJhbnNsYXRlQnJvd3NlUGF0aHNUb05vZGVJZHNDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VDb3Vu -dGVyRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJRdWVyeUZpcnN0Q291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291bnRlckRh +bGVtZW50IG5hbWU9IkRlbGV0ZU5vZGVzQ291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291bnRlckRh dGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iUXVlcnlOZXh0Q291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBl -IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt -ZT0iUmVnaXN0ZXJOb2Rlc0NvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50ZXJEYXRhVHlwZSIg +bnQgbmFtZT0iRGVsZXRlUmVmZXJlbmNlc0NvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50ZXJE +YXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IkJyb3dzZUNvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50ZXJEYXRhVHlwZSIg bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IlVucmVnaXN0ZXJOb2Rlc0NvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50ZXJEYXRhVHlwZSIg -bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8 -L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTZXNzaW9uRGlhZ25vc3RpY3NE -YXRhVHlwZSIgdHlwZT0idG5zOlNlc3Npb25EaWFnbm9zdGljc0RhdGFUeXBlIiAvPg0KDQogIDx4 -czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZTZXNzaW9uRGlhZ25vc3RpY3NEYXRhVHlwZSI+DQog -ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2Vzc2lvbkRpYWdub3N0 -aWNzRGF0YVR5cGUiIHR5cGU9InRuczpTZXNzaW9uRGlhZ25vc3RpY3NEYXRhVHlwZSIgbWluT2Nj -dXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94 -czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlz -dE9mU2Vzc2lvbkRpYWdub3N0aWNzRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZTZXNzaW9uRGlh -Z25vc3RpY3NEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6 -Y29tcGxleFR5cGUgbmFtZT0iU2Vzc2lvblNlY3VyaXR5RGlhZ25vc3RpY3NEYXRhVHlwZSI+DQog -ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2Vzc2lvbklkIiB0eXBl -PSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJDbGllbnRVc2VySWRPZlNlc3Npb24iIHR5cGU9InhzOnN0cmluZyIgbWlu -T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNs -aWVudFVzZXJJZEhpc3RvcnkiIHR5cGU9InVhOkxpc3RPZlN0cmluZyIgbWluT2NjdXJzPSIwIiBu -aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkF1dGhlbnRpY2F0aW9u -TWVjaGFuaXNtIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi -IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmNvZGluZyIgdHlwZT0ieHM6c3RyaW5nIiBt -aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i -VHJhbnNwb3J0UHJvdG9jb2wiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJs -ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlY3VyaXR5TW9kZSIgdHlwZT0i -dG5zOk1lc3NhZ2VTZWN1cml0eU1vZGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IlNlY3VyaXR5UG9saWN5VXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0i -MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDbGllbnRDZXJ0 -aWZpY2F0ZSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0 -cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl -bGVtZW50IG5hbWU9IlNlc3Npb25TZWN1cml0eURpYWdub3N0aWNzRGF0YVR5cGUiIHR5cGU9InRu -czpTZXNzaW9uU2VjdXJpdHlEaWFnbm9zdGljc0RhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4 -VHlwZSBuYW1lPSJMaXN0T2ZTZXNzaW9uU2VjdXJpdHlEaWFnbm9zdGljc0RhdGFUeXBlIj4NCiAg -ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXNzaW9uU2VjdXJpdHlE -aWFnbm9zdGljc0RhdGFUeXBlIiB0eXBlPSJ0bnM6U2Vzc2lvblNlY3VyaXR5RGlhZ25vc3RpY3NE -YXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRy -dWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs -ZW1lbnQgbmFtZT0iTGlzdE9mU2Vzc2lvblNlY3VyaXR5RGlhZ25vc3RpY3NEYXRhVHlwZSIgdHlw -ZT0idG5zOkxpc3RPZlNlc3Npb25TZWN1cml0eURpYWdub3N0aWNzRGF0YVR5cGUiIG5pbGxhYmxl -PSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNlcnZpY2VD -b3VudGVyRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IlRvdGFsQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQog -ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFcnJvckNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIg -bWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+ -DQogIDx4czplbGVtZW50IG5hbWU9IlNlcnZpY2VDb3VudGVyRGF0YVR5cGUiIHR5cGU9InRuczpT -ZXJ2aWNlQ291bnRlckRhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJTdGF0 -dXNSZXN1bHQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0 -YXR1c0NvZGUiIHR5cGU9InVhOlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvIiB0eXBlPSJ1YTpEaWFnbm9zdGljSW5mbyIg -bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8 -L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0dXNSZXN1bHQiIHR5cGU9 -InRuczpTdGF0dXNSZXN1bHQiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlN0 -YXR1c1Jlc3VsdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i -U3RhdHVzUmVzdWx0IiB0eXBlPSJ0bnM6U3RhdHVzUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG1heE9j -Y3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K -ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZTdGF0dXNSZXN1 -bHQiIHR5cGU9InRuczpMaXN0T2ZTdGF0dXNSZXN1bHQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVs -ZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlN1YnNjcmlwdGlvbkRpYWdub3N0aWNz -RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNl -c3Npb25JZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3Vic2NyaXB0aW9uSWQiIHR5cGU9InhzOnVuc2ln -bmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQcmlvcml0 -eSIgdHlwZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl -bWVudCBuYW1lPSJQdWJsaXNoaW5nSW50ZXJ2YWwiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJz -PSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF4S2VlcEFsaXZlQ291bnQiIHR5cGU9 -InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJNYXhMaWZldGltZUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF4Tm90aWZpY2F0aW9uc1BlclB1Ymxpc2giIHR5 -cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJQdWJsaXNoaW5nRW5hYmxlZCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9kaWZ5Q291bnQiIHR5cGU9InhzOnVuc2lnbmVk -SW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmFibGVDb3Vu -dCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IkRpc2FibGVDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0i -MCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcHVibGlzaFJlcXVlc3RDb3VudCIgdHlw -ZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h -bWU9IlJlcHVibGlzaE1lc3NhZ2VSZXF1ZXN0Q291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBt -aW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXB1Ymxpc2hNZXNzYWdl -Q291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6 -ZWxlbWVudCBuYW1lPSJUcmFuc2ZlclJlcXVlc3RDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQi -IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRyYW5zZmVycmVkVG9B -bHRDbGllbnRDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAg -ICAgIDx4czplbGVtZW50IG5hbWU9IlRyYW5zZmVycmVkVG9TYW1lQ2xpZW50Q291bnQiIHR5cGU9 -InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJQdWJsaXNoUmVxdWVzdENvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIw -IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YUNoYW5nZU5vdGlmaWNhdGlvbnNDb3Vu +IkJyb3dzZU5leHRDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0YVR5cGUiIG1pbk9j +Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUcmFu +c2xhdGVCcm93c2VQYXRoc1RvTm9kZUlkc0NvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50ZXJE +YXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IlF1ZXJ5Rmlyc3RDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0YVR5 +cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJRdWVyeU5leHRDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0YVR5cGUiIG1p +bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJS +ZWdpc3Rlck5vZGVzQ291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBlIiBtaW5P +Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVW5y +ZWdpc3Rlck5vZGVzQ291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBlIiBtaW5P +Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6 +Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlNlc3Npb25EaWFnbm9zdGljc0RhdGFU +eXBlIiB0eXBlPSJ0bnM6U2Vzc2lvbkRpYWdub3N0aWNzRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNv +bXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlNlc3Npb25EaWFnbm9zdGljc0RhdGFUeXBlIj4NCiAgICA8 +eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXNzaW9uRGlhZ25vc3RpY3NE +YXRhVHlwZSIgdHlwZT0idG5zOlNlc3Npb25EaWFnbm9zdGljc0RhdGFUeXBlIiBtaW5PY2N1cnM9 +IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl +cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZT +ZXNzaW9uRGlhZ25vc3RpY3NEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlNlc3Npb25EaWFnbm9z +dGljc0RhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21w +bGV4VHlwZSBuYW1lPSJTZXNzaW9uU2VjdXJpdHlEaWFnbm9zdGljc0RhdGFUeXBlIj4NCiAgICA8 +eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXNzaW9uSWQiIHR5cGU9InVh +Ok5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt +ZW50IG5hbWU9IkNsaWVudFVzZXJJZE9mU2Vzc2lvbiIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1 +cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ2xpZW50 +VXNlcklkSGlzdG9yeSIgdHlwZT0idWE6TGlzdE9mU3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxh +YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXV0aGVudGljYXRpb25NZWNo +YW5pc20iIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N +CiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVuY29kaW5nIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9j +Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUcmFu +c3BvcnRQcm90b2NvbCIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0 +cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VjdXJpdHlNb2RlIiB0eXBlPSJ0bnM6 +TWVzc2FnZVNlY3VyaXR5TW9kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iU2VjdXJpdHlQb2xpY3lVcmkiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBu +aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNsaWVudENlcnRpZmlj +YXRlIiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi +IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l +bnQgbmFtZT0iU2Vzc2lvblNlY3VyaXR5RGlhZ25vc3RpY3NEYXRhVHlwZSIgdHlwZT0idG5zOlNl +c3Npb25TZWN1cml0eURpYWdub3N0aWNzRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl +IG5hbWU9Ikxpc3RPZlNlc3Npb25TZWN1cml0eURpYWdub3N0aWNzRGF0YVR5cGUiPg0KICAgIDx4 +czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlc3Npb25TZWN1cml0eURpYWdu +b3N0aWNzRGF0YVR5cGUiIHR5cGU9InRuczpTZXNzaW9uU2VjdXJpdHlEaWFnbm9zdGljc0RhdGFU +eXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIg +Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu +dCBuYW1lPSJMaXN0T2ZTZXNzaW9uU2VjdXJpdHlEaWFnbm9zdGljc0RhdGFUeXBlIiB0eXBlPSJ0 +bnM6TGlzdE9mU2Vzc2lvblNlY3VyaXR5RGlhZ25vc3RpY3NEYXRhVHlwZSIgbmlsbGFibGU9InRy +dWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2VydmljZUNvdW50 +ZXJEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +VG90YWxDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg +IDx4czplbGVtZW50IG5hbWU9IkVycm9yQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5P +Y2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg +PHhzOmVsZW1lbnQgbmFtZT0iU2VydmljZUNvdW50ZXJEYXRhVHlwZSIgdHlwZT0idG5zOlNlcnZp +Y2VDb3VudGVyRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlN0YXR1c1Jl +c3VsdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhdHVz +Q29kZSIgdHlwZT0idWE6U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm8iIHR5cGU9InVhOkRpYWdub3N0aWNJbmZvIiBtaW5P +Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6 +Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlN0YXR1c1Jlc3VsdCIgdHlwZT0idG5z +OlN0YXR1c1Jlc3VsdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mU3RhdHVz +UmVzdWx0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0 +dXNSZXN1bHQiIHR5cGU9InRuczpTdGF0dXNSZXN1bHQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJz +PSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv +eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlN0YXR1c1Jlc3VsdCIg +dHlwZT0idG5zOkxpc3RPZlN0YXR1c1Jlc3VsdCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVu +dD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU3Vic2NyaXB0aW9uRGlhZ25vc3RpY3NEYXRh +VHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2Vzc2lv +bklkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpcHRpb25JZCIgdHlwZT0ieHM6dW5zaWduZWRJ +bnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlByaW9yaXR5IiB0 +eXBlPSJ4czp1bnNpZ25lZEJ5dGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50 +IG5hbWU9IlB1Ymxpc2hpbmdJbnRlcnZhbCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAi +IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYXhLZWVwQWxpdmVDb3VudCIgdHlwZT0ieHM6 +dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1h +eExpZmV0aW1lQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaCIgdHlwZT0i +eHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 +IlB1Ymxpc2hpbmdFbmFibGVkIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNb2RpZnlDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQi +IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVuYWJsZUNvdW50IiB0 +eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iRGlzYWJsZUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAv +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVwdWJsaXNoUmVxdWVzdENvdW50IiB0eXBlPSJ4 +czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i +UmVwdWJsaXNoTWVzc2FnZVJlcXVlc3RDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9j +Y3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcHVibGlzaE1lc3NhZ2VDb3Vu dCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVt -ZW50IG5hbWU9IkV2ZW50Tm90aWZpY2F0aW9uc0NvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIg -bWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm90aWZpY2F0aW9uc0Nv -dW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs -ZW1lbnQgbmFtZT0iTGF0ZVB1Ymxpc2hSZXF1ZXN0Q291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50 -IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDdXJyZW50S2VlcEFs -aXZlQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJDdXJyZW50TGlmZXRpbWVDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJ -bnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVuYWNrbm93bGVk -Z2VkTWVzc2FnZUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlzY2FyZGVkTWVzc2FnZUNvdW50IiB0eXBlPSJ4czp1 -bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9u -aXRvcmVkSXRlbUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlzYWJsZWRNb25pdG9yZWRJdGVtQ291bnQiIHR5cGU9 -InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJNb25pdG9yaW5nUXVldWVPdmVyZmxvd0NvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWlu -T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmV4dFNlcXVlbmNlTnVtYmVy -IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iRXZlbnRRdWV1ZU92ZXJGbG93Q291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBt -aW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N -CiAgPHhzOmVsZW1lbnQgbmFtZT0iU3Vic2NyaXB0aW9uRGlhZ25vc3RpY3NEYXRhVHlwZSIgdHlw -ZT0idG5zOlN1YnNjcmlwdGlvbkRpYWdub3N0aWNzRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBs -ZXhUeXBlIG5hbWU9Ikxpc3RPZlN1YnNjcmlwdGlvbkRpYWdub3N0aWNzRGF0YVR5cGUiPg0KICAg -IDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN1YnNjcmlwdGlvbkRpYWdu -b3N0aWNzRGF0YVR5cGUiIHR5cGU9InRuczpTdWJzY3JpcHRpb25EaWFnbm9zdGljc0RhdGFUeXBl -IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu -YW1lPSJMaXN0T2ZTdWJzY3JpcHRpb25EaWFnbm9zdGljc0RhdGFUeXBlIiB0eXBlPSJ0bnM6TGlz -dE9mU3Vic2NyaXB0aW9uRGlhZ25vc3RpY3NEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6 -ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iTW9kZWxDaGFuZ2VTdHJ1Y3R1cmVW -ZXJiTWFzayI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8 -eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik5vZGVBZGRlZF8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0 -aW9uIHZhbHVlPSJOb2RlRGVsZXRlZF8yIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVl -PSJSZWZlcmVuY2VBZGRlZF80IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJSZWZl -cmVuY2VEZWxldGVkXzgiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRhdGFUeXBl -Q2hhbmdlZF8xNiIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+ -DQogIDx4czplbGVtZW50IG5hbWU9Ik1vZGVsQ2hhbmdlU3RydWN0dXJlVmVyYk1hc2siIHR5cGU9 -InRuczpNb2RlbENoYW5nZVN0cnVjdHVyZVZlcmJNYXNrIiAvPg0KDQogIDx4czpjb21wbGV4VHlw -ZSBuYW1lPSJNb2RlbENoYW5nZVN0cnVjdHVyZURhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBZmZlY3RlZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5P -Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWZm -ZWN0ZWRUeXBlIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi -IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWZXJiIiB0eXBlPSJ4czp1bnNpZ25lZEJ5dGUi -IG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl -Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNb2RlbENoYW5nZVN0cnVjdHVyZURhdGFUeXBlIiB0eXBl -PSJ0bnM6TW9kZWxDaGFuZ2VTdHJ1Y3R1cmVEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5 -cGUgbmFtZT0iTGlzdE9mTW9kZWxDaGFuZ2VTdHJ1Y3R1cmVEYXRhVHlwZSI+DQogICAgPHhzOnNl -cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9kZWxDaGFuZ2VTdHJ1Y3R1cmVEYXRh -VHlwZSIgdHlwZT0idG5zOk1vZGVsQ2hhbmdlU3RydWN0dXJlRGF0YVR5cGUiIG1pbk9jY3Vycz0i -MCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2Vx -dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk1v -ZGVsQ2hhbmdlU3RydWN0dXJlRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZNb2RlbENoYW5nZVN0 -cnVjdHVyZURhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpj -b21wbGV4VHlwZSBuYW1lPSJTZW1hbnRpY0NoYW5nZVN0cnVjdHVyZURhdGFUeXBlIj4NCiAgICA8 -eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBZmZlY3RlZCIgdHlwZT0idWE6 -Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iQWZmZWN0ZWRUeXBlIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmls -bGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N -CiAgPHhzOmVsZW1lbnQgbmFtZT0iU2VtYW50aWNDaGFuZ2VTdHJ1Y3R1cmVEYXRhVHlwZSIgdHlw -ZT0idG5zOlNlbWFudGljQ2hhbmdlU3RydWN0dXJlRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBs -ZXhUeXBlIG5hbWU9Ikxpc3RPZlNlbWFudGljQ2hhbmdlU3RydWN0dXJlRGF0YVR5cGUiPg0KICAg -IDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlbWFudGljQ2hhbmdlU3Ry -dWN0dXJlRGF0YVR5cGUiIHR5cGU9InRuczpTZW1hbnRpY0NoYW5nZVN0cnVjdHVyZURhdGFUeXBl -IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4N -CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu -YW1lPSJMaXN0T2ZTZW1hbnRpY0NoYW5nZVN0cnVjdHVyZURhdGFUeXBlIiB0eXBlPSJ0bnM6TGlz -dE9mU2VtYW50aWNDaGFuZ2VTdHJ1Y3R1cmVEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6 -ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmFuZ2UiPg0KICAgIDx4czpzZXF1 -ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkxvdyIgdHlwZT0ieHM6ZG91YmxlIiBtaW5P -Y2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJIaWdoIiB0eXBlPSJ4czpkb3Vi -bGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU -eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSYW5nZSIgdHlwZT0idG5zOlJhbmdlIiAvPg0KDQog -IDx4czpjb21wbGV4VHlwZSBuYW1lPSJFVUluZm9ybWF0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lc3BhY2VVcmkiIHR5cGU9InhzOnN0cmluZyIg -bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IlVuaXRJZCIgdHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVu -dCBuYW1lPSJEaXNwbGF5TmFtZSIgdHlwZT0idWE6TG9jYWxpemVkVGV4dCIgbWluT2NjdXJzPSIw -IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRlc2NyaXB0aW9u -IiB0eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv -Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50 -IG5hbWU9IkVVSW5mb3JtYXRpb24iIHR5cGU9InRuczpFVUluZm9ybWF0aW9uIiAvPg0KDQogIDx4 -czpzaW1wbGVUeXBlICBuYW1lPSJBeGlzU2NhbGVFbnVtZXJhdGlvbiI+DQogICAgPHhzOnJlc3Ry -aWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ikxp -bmVhcl8wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJMb2dfMSIgLz4NCiAgICAg -IDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTG5fMiIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0K -ICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkF4aXNTY2FsZUVudW1lcmF0 -aW9uIiB0eXBlPSJ0bnM6QXhpc1NjYWxlRW51bWVyYXRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhU -eXBlIG5hbWU9IkNvbXBsZXhOdW1iZXJUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJSZWFsIiB0eXBlPSJ4czpmbG9hdCIgbWluT2NjdXJzPSIwIiAvPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSW1hZ2luYXJ5IiB0eXBlPSJ4czpmbG9hdCIgbWluT2Nj -dXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4 -czplbGVtZW50IG5hbWU9IkNvbXBsZXhOdW1iZXJUeXBlIiB0eXBlPSJ0bnM6Q29tcGxleE51bWJl -clR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRvdWJsZUNvbXBsZXhOdW1iZXJU -eXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWFsIiB0 -eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -IkltYWdpbmFyeSIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpz -ZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRG91Ymxl -Q29tcGxleE51bWJlclR5cGUiIHR5cGU9InRuczpEb3VibGVDb21wbGV4TnVtYmVyVHlwZSIgLz4N -Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQXhpc0luZm9ybWF0aW9uIj4NCiAgICA8eHM6c2Vx -dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmdpbmVlcmluZ1VuaXRzIiB0eXBlPSJ0 -bnM6RVVJbmZvcm1hdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IkVVUmFuZ2UiIHR5cGU9InRuczpSYW5nZSIgbWluT2NjdXJzPSIw -IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRpdGxlIiB0eXBl -PSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg -ICAgPHhzOmVsZW1lbnQgbmFtZT0iQXhpc1NjYWxlVHlwZSIgdHlwZT0idG5zOkF4aXNTY2FsZUVu -dW1lcmF0aW9uIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBeGlz -U3RlcHMiIHR5cGU9InVhOkxpc3RPZkRvdWJsZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1 -ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl -bWVudCBuYW1lPSJBeGlzSW5mb3JtYXRpb24iIHR5cGU9InRuczpBeGlzSW5mb3JtYXRpb24iIC8+ -DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlhWVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0K -ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iWCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAi -IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1ZSIgdHlwZT0ieHM6ZmxvYXQiIG1pbk9j +ZW50IG5hbWU9IlRyYW5zZmVyUmVxdWVzdENvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWlu +T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNmZXJyZWRUb0FsdENs +aWVudENvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg +PHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNmZXJyZWRUb1NhbWVDbGllbnRDb3VudCIgdHlwZT0ieHM6 +dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlB1 +Ymxpc2hSZXF1ZXN0Q291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+ +DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhQ2hhbmdlTm90aWZpY2F0aW9uc0NvdW50IiB0 +eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg +bmFtZT0iRXZlbnROb3RpZmljYXRpb25zQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5P +Y2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOb3RpZmljYXRpb25zQ291bnQi +IHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVu +dCBuYW1lPSJMYXRlUHVibGlzaFJlcXVlc3RDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1p +bk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkN1cnJlbnRLZWVwQWxpdmVD +b3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IkN1cnJlbnRMaWZldGltZUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIg +bWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVW5hY2tub3dsZWRnZWRN +ZXNzYWdlQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJEaXNjYXJkZWRNZXNzYWdlQ291bnQiIHR5cGU9InhzOnVuc2ln +bmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9y +ZWRJdGVtQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJEaXNhYmxlZE1vbml0b3JlZEl0ZW1Db3VudCIgdHlwZT0ieHM6 +dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1v +bml0b3JpbmdRdWV1ZU92ZXJmbG93Q291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1 +cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOZXh0U2VxdWVuY2VOdW1iZXIiIHR5 +cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJFdmVudFF1ZXVlT3ZlckZsb3dDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9j Y3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8 -eHM6ZWxlbWVudCBuYW1lPSJYVlR5cGUiIHR5cGU9InRuczpYVlR5cGUiIC8+DQoNCiAgPHhzOmNv -bXBsZXhUeXBlIG5hbWU9IlByb2dyYW1EaWFnbm9zdGljRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1 -ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNyZWF0ZVNlc3Npb25JZCIgdHlwZT0idWE6 -Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iQ3JlYXRlQ2xpZW50TmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAi -IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSW52b2NhdGlvbkNy -ZWF0aW9uVGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9Ikxhc3RUcmFuc2l0aW9uVGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1p -bk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxhc3RNZXRob2RDYWxsIiB0 -eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 -eHM6ZWxlbWVudCBuYW1lPSJMYXN0TWV0aG9kU2Vzc2lvbklkIiB0eXBlPSJ1YTpOb2RlSWQiIG1p -bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJM -YXN0TWV0aG9kSW5wdXRBcmd1bWVudHMiIHR5cGU9InRuczpMaXN0T2ZBcmd1bWVudCIgbWluT2Nj -dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxhc3RN -ZXRob2RPdXRwdXRBcmd1bWVudHMiIHR5cGU9InRuczpMaXN0T2ZBcmd1bWVudCIgbWluT2NjdXJz -PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxhc3RNZXRo -b2RDYWxsVGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4 -czplbGVtZW50IG5hbWU9Ikxhc3RNZXRob2RSZXR1cm5TdGF0dXMiIHR5cGU9InRuczpTdGF0dXNS -ZXN1bHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j -ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUHJvZ3JhbURpYWdu -b3N0aWNEYXRhVHlwZSIgdHlwZT0idG5zOlByb2dyYW1EaWFnbm9zdGljRGF0YVR5cGUiIC8+DQoN -CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlByb2dyYW1EaWFnbm9zdGljMkRhdGFUeXBlIj4NCiAg -ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDcmVhdGVTZXNzaW9uSWQi -IHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg -IDx4czplbGVtZW50IG5hbWU9IkNyZWF0ZUNsaWVudE5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWlu -T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Iklu -dm9jYXRpb25DcmVhdGlvblRpbWUiIHR5cGU9InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAiIC8+ -DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMYXN0VHJhbnNpdGlvblRpbWUiIHR5cGU9InhzOmRh -dGVUaW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMYXN0TWV0 -aG9kQ2FsbCIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv -Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGFzdE1ldGhvZFNlc3Npb25JZCIgdHlwZT0idWE6 -Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iTGFzdE1ldGhvZElucHV0QXJndW1lbnRzIiB0eXBlPSJ0bnM6TGlzdE9mQXJndW1l -bnQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu -YW1lPSJMYXN0TWV0aG9kT3V0cHV0QXJndW1lbnRzIiB0eXBlPSJ0bnM6TGlzdE9mQXJndW1lbnQi -IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l -PSJMYXN0TWV0aG9kSW5wdXRWYWx1ZXMiIHR5cGU9InVhOkxpc3RPZlZhcmlhbnQiIG1pbk9jY3Vy -cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMYXN0TWV0 -aG9kT3V0cHV0VmFsdWVzIiB0eXBlPSJ1YTpMaXN0T2ZWYXJpYW50IiBtaW5PY2N1cnM9IjAiIG5p -bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGFzdE1ldGhvZENhbGxU -aW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1l -bnQgbmFtZT0iTGFzdE1ldGhvZFJldHVyblN0YXR1cyIgdHlwZT0idWE6U3RhdHVzQ29kZSIgbWlu +eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpcHRpb25EaWFnbm9zdGljc0RhdGFUeXBlIiB0eXBlPSJ0 +bnM6U3Vic2NyaXB0aW9uRGlhZ25vc3RpY3NEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5 +cGUgbmFtZT0iTGlzdE9mU3Vic2NyaXB0aW9uRGlhZ25vc3RpY3NEYXRhVHlwZSI+DQogICAgPHhz +OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3Vic2NyaXB0aW9uRGlhZ25vc3Rp +Y3NEYXRhVHlwZSIgdHlwZT0idG5zOlN1YnNjcmlwdGlvbkRpYWdub3N0aWNzRGF0YVR5cGUiIG1p +bk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 +Ikxpc3RPZlN1YnNjcmlwdGlvbkRpYWdub3N0aWNzRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZT +dWJzY3JpcHRpb25EaWFnbm9zdGljc0RhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVt +ZW50Pg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJNb2RlbENoYW5nZVN0cnVjdHVyZVZlcmJN +YXNrIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4czpl +bnVtZXJhdGlvbiB2YWx1ZT0iTm9kZUFkZGVkXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24g +dmFsdWU9Ik5vZGVEZWxldGVkXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlJl +ZmVyZW5jZUFkZGVkXzQiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlJlZmVyZW5j +ZURlbGV0ZWRfOCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRGF0YVR5cGVDaGFu +Z2VkXzE2IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAg +PHhzOmVsZW1lbnQgbmFtZT0iTW9kZWxDaGFuZ2VTdHJ1Y3R1cmVWZXJiTWFzayIgdHlwZT0idG5z +Ok1vZGVsQ2hhbmdlU3RydWN0dXJlVmVyYk1hc2siIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h +bWU9Ik1vZGVsQ2hhbmdlU3RydWN0dXJlRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9IkFmZmVjdGVkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vy +cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBZmZlY3Rl +ZFR5cGUiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N +CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlZlcmIiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIgbWlu T2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog -IDx4czplbGVtZW50IG5hbWU9IlByb2dyYW1EaWFnbm9zdGljMkRhdGFUeXBlIiB0eXBlPSJ0bnM6 -UHJvZ3JhbURpYWdub3N0aWMyRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9 -IkFubm90YXRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 -Ik1lc3NhZ2UiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg -Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVzZXJOYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1p -bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJB -bm5vdGF0aW9uVGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8 -L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJB -bm5vdGF0aW9uIiB0eXBlPSJ0bnM6QW5ub3RhdGlvbiIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAg -bmFtZT0iRXhjZXB0aW9uRGV2aWF0aW9uRm9ybWF0Ij4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFz -ZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQWJzb2x1dGVWYWx1 -ZV8wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJQZXJjZW50T2ZWYWx1ZV8xIiAv -Pg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJQZXJjZW50T2ZSYW5nZV8yIiAvPg0KICAg -ICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJQZXJjZW50T2ZFVVJhbmdlXzMiIC8+DQogICAgICA8 -eHM6ZW51bWVyYXRpb24gdmFsdWU9IlVua25vd25fNCIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9u -Pg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkV4Y2VwdGlvbkRldmlh -dGlvbkZvcm1hdCIgdHlwZT0idG5zOkV4Y2VwdGlvbkRldmlhdGlvbkZvcm1hdCIgLz4NCg0KPC94 -czpzY2hlbWE+ +IDx4czplbGVtZW50IG5hbWU9Ik1vZGVsQ2hhbmdlU3RydWN0dXJlRGF0YVR5cGUiIHR5cGU9InRu +czpNb2RlbENoYW5nZVN0cnVjdHVyZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu +YW1lPSJMaXN0T2ZNb2RlbENoYW5nZVN0cnVjdHVyZURhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVu +Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNb2RlbENoYW5nZVN0cnVjdHVyZURhdGFUeXBl +IiB0eXBlPSJ0bnM6TW9kZWxDaGFuZ2VTdHJ1Y3R1cmVEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBt +YXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j +ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mTW9kZWxD +aGFuZ2VTdHJ1Y3R1cmVEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZk1vZGVsQ2hhbmdlU3RydWN0 +dXJlRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBs +ZXhUeXBlIG5hbWU9IlNlbWFudGljQ2hhbmdlU3RydWN0dXJlRGF0YVR5cGUiPg0KICAgIDx4czpz +ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkFmZmVjdGVkIiB0eXBlPSJ1YTpOb2Rl +SWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJBZmZlY3RlZFR5cGUiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJs +ZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8 +eHM6ZWxlbWVudCBuYW1lPSJTZW1hbnRpY0NoYW5nZVN0cnVjdHVyZURhdGFUeXBlIiB0eXBlPSJ0 +bnM6U2VtYW50aWNDaGFuZ2VTdHJ1Y3R1cmVEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5 +cGUgbmFtZT0iTGlzdE9mU2VtYW50aWNDaGFuZ2VTdHJ1Y3R1cmVEYXRhVHlwZSI+DQogICAgPHhz +OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VtYW50aWNDaGFuZ2VTdHJ1Y3R1 +cmVEYXRhVHlwZSIgdHlwZT0idG5zOlNlbWFudGljQ2hhbmdlU3RydWN0dXJlRGF0YVR5cGUiIG1p +bk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg +IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9 +Ikxpc3RPZlNlbWFudGljQ2hhbmdlU3RydWN0dXJlRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZT +ZW1hbnRpY0NoYW5nZVN0cnVjdHVyZURhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVt +ZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSYW5nZSI+DQogICAgPHhzOnNlcXVlbmNl +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTG93IiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vy +cz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkhpZ2giIHR5cGU9InhzOmRvdWJsZSIg +bWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+ +DQogIDx4czplbGVtZW50IG5hbWU9IlJhbmdlIiB0eXBlPSJ0bnM6UmFuZ2UiIC8+DQoNCiAgPHhz +OmNvbXBsZXhUeXBlIG5hbWU9IkVVSW5mb3JtYXRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9Ik5hbWVzcGFjZVVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5P +Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVW5p +dElkIiB0eXBlPSJ4czppbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h +bWU9IkRpc3BsYXlOYW1lIiB0eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIG5p +bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVzY3JpcHRpb24iIHR5 +cGU9InVhOkxvY2FsaXplZFRleHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog +ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt +ZT0iRVVJbmZvcm1hdGlvbiIgdHlwZT0idG5zOkVVSW5mb3JtYXRpb24iIC8+DQoNCiAgPHhzOnNp +bXBsZVR5cGUgIG5hbWU9IkF4aXNTY2FsZUVudW1lcmF0aW9uIj4NCiAgICA8eHM6cmVzdHJpY3Rp +b24gYmFzZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTGluZWFy +XzAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkxvZ18xIiAvPg0KICAgICAgPHhz +OmVudW1lcmF0aW9uIHZhbHVlPSJMbl8yIiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwv +eHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQXhpc1NjYWxlRW51bWVyYXRpb24i +IHR5cGU9InRuczpBeGlzU2NhbGVFbnVtZXJhdGlvbiIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg +bmFtZT0iQ29tcGxleE51bWJlclR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9IlJlYWwiIHR5cGU9InhzOmZsb2F0IiBtaW5PY2N1cnM9IjAiIC8+DQogICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJJbWFnaW5hcnkiIHR5cGU9InhzOmZsb2F0IiBtaW5PY2N1cnM9 +IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs +ZW1lbnQgbmFtZT0iQ29tcGxleE51bWJlclR5cGUiIHR5cGU9InRuczpDb21wbGV4TnVtYmVyVHlw +ZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRG91YmxlQ29tcGxleE51bWJlclR5cGUi +Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlYWwiIHR5cGU9 +InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSW1h +Z2luYXJ5IiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVl +bmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEb3VibGVDb21w +bGV4TnVtYmVyVHlwZSIgdHlwZT0idG5zOkRvdWJsZUNvbXBsZXhOdW1iZXJUeXBlIiAvPg0KDQog +IDx4czpjb21wbGV4VHlwZSBuYW1lPSJBeGlzSW5mb3JtYXRpb24iPg0KICAgIDx4czpzZXF1ZW5j +ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVuZ2luZWVyaW5nVW5pdHMiIHR5cGU9InRuczpF +VUluZm9ybWF0aW9uIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iRVVSYW5nZSIgdHlwZT0idG5zOlJhbmdlIiBtaW5PY2N1cnM9IjAiIG5p +bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGl0bGUiIHR5cGU9InVh +OkxvY2FsaXplZFRleHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8 +eHM6ZWxlbWVudCBuYW1lPSJBeGlzU2NhbGVUeXBlIiB0eXBlPSJ0bnM6QXhpc1NjYWxlRW51bWVy +YXRpb24iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkF4aXNTdGVw +cyIgdHlwZT0idWE6TGlzdE9mRG91YmxlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv +Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50 +IG5hbWU9IkF4aXNJbmZvcm1hdGlvbiIgdHlwZT0idG5zOkF4aXNJbmZvcm1hdGlvbiIgLz4NCg0K +ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iWFZUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg +ICA8eHM6ZWxlbWVudCBuYW1lPSJYIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4N +CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlZhbHVlIiB0eXBlPSJ4czpmbG9hdCIgbWluT2NjdXJz +PSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl +bGVtZW50IG5hbWU9IlhWVHlwZSIgdHlwZT0idG5zOlhWVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxl +eFR5cGUgbmFtZT0iUHJvZ3JhbURpYWdub3N0aWNEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNl +Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ3JlYXRlU2Vzc2lvbklkIiB0eXBlPSJ1YTpOb2Rl +SWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJDcmVhdGVDbGllbnROYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmls +bGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbnZvY2F0aW9uQ3JlYXRp +b25UaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iTGFzdFRyYW5zaXRpb25UaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2Nj +dXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGFzdE1ldGhvZENhbGwiIHR5cGU9 +InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl +bGVtZW50IG5hbWU9Ikxhc3RNZXRob2RTZXNzaW9uSWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2Nj +dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxhc3RN +ZXRob2RJbnB1dEFyZ3VtZW50cyIgdHlwZT0idG5zOkxpc3RPZkFyZ3VtZW50IiBtaW5PY2N1cnM9 +IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGFzdE1ldGhv +ZE91dHB1dEFyZ3VtZW50cyIgdHlwZT0idG5zOkxpc3RPZkFyZ3VtZW50IiBtaW5PY2N1cnM9IjAi +IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGFzdE1ldGhvZENh +bGxUaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs +ZW1lbnQgbmFtZT0iTGFzdE1ldGhvZFJldHVyblN0YXR1cyIgdHlwZT0idG5zOlN0YXR1c1Jlc3Vs +dCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K +ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJQcm9ncmFtRGlhZ25vc3Rp +Y0RhdGFUeXBlIiB0eXBlPSJ0bnM6UHJvZ3JhbURpYWdub3N0aWNEYXRhVHlwZSIgLz4NCg0KICA8 +eHM6Y29tcGxleFR5cGUgbmFtZT0iUHJvZ3JhbURpYWdub3N0aWMyRGF0YVR5cGUiPg0KICAgIDx4 +czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNyZWF0ZVNlc3Npb25JZCIgdHlw +ZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz +OmVsZW1lbnQgbmFtZT0iQ3JlYXRlQ2xpZW50TmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1 +cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSW52b2Nh +dGlvbkNyZWF0aW9uVGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAg +ICAgIDx4czplbGVtZW50IG5hbWU9Ikxhc3RUcmFuc2l0aW9uVGltZSIgdHlwZT0ieHM6ZGF0ZVRp +bWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxhc3RNZXRob2RD +YWxsIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog +ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMYXN0TWV0aG9kU2Vzc2lvbklkIiB0eXBlPSJ1YTpOb2Rl +SWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJMYXN0TWV0aG9kSW5wdXRBcmd1bWVudHMiIHR5cGU9InRuczpMaXN0T2ZBcmd1bWVudCIg +bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9 +Ikxhc3RNZXRob2RPdXRwdXRBcmd1bWVudHMiIHR5cGU9InRuczpMaXN0T2ZBcmd1bWVudCIgbWlu +T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxh +c3RNZXRob2RJbnB1dFZhbHVlcyIgdHlwZT0idWE6TGlzdE9mVmFyaWFudCIgbWluT2NjdXJzPSIw +IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxhc3RNZXRob2RP +dXRwdXRWYWx1ZXMiIHR5cGU9InVhOkxpc3RPZlZhcmlhbnQiIG1pbk9jY3Vycz0iMCIgbmlsbGFi +bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMYXN0TWV0aG9kQ2FsbFRpbWUi +IHR5cGU9InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu +YW1lPSJMYXN0TWV0aG9kUmV0dXJuU3RhdHVzIiB0eXBlPSJ1YTpTdGF0dXNDb2RlIiBtaW5PY2N1 +cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz +OmVsZW1lbnQgbmFtZT0iUHJvZ3JhbURpYWdub3N0aWMyRGF0YVR5cGUiIHR5cGU9InRuczpQcm9n +cmFtRGlhZ25vc3RpYzJEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQW5u +b3RhdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWVz +c2FnZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K +ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlck5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2Nj +dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkFubm90 +YXRpb25UaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6 +c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkFubm90 +YXRpb24iIHR5cGU9InRuczpBbm5vdGF0aW9uIiAvPg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1l +PSJFeGNlcHRpb25EZXZpYXRpb25Gb3JtYXQiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4 +czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJBYnNvbHV0ZVZhbHVlXzAi +IC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBlcmNlbnRPZlZhbHVlXzEiIC8+DQog +ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBlcmNlbnRPZlJhbmdlXzIiIC8+DQogICAgICA8 +eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBlcmNlbnRPZkVVUmFuZ2VfMyIgLz4NCiAgICAgIDx4czpl +bnVtZXJhdGlvbiB2YWx1ZT0iVW5rbm93bl80IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQog +IDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRXhjZXB0aW9uRGV2aWF0aW9u +Rm9ybWF0IiB0eXBlPSJ0bnM6RXhjZXB0aW9uRGV2aWF0aW9uRm9ybWF0IiAvPg0KDQo8L3hzOnNj +aGVtYT4= From 85c032133b92ee99df35171bbac7875daf216b94 Mon Sep 17 00:00:00 2001 From: Martin Regen Date: Tue, 20 Jun 2023 09:40:43 +0200 Subject: [PATCH 3/5] Fix session reconnect exponential backoff (#2185) - With exponential backoff enabled, a KeepAlive calling `BeginReconnect` could retrigger the timer in a way that a reconnect would never occur. - Throttle `ISession.BeginPublish` on `BadTooManyOperations` error. - Add reverse connect option to console client to test reconnect with reverse connect manager. - null events in session on dispose to suppress spurious events. - mark `TransferSubscription` service calls obsolete to avoid accidential use by applications. - for reverse connection testing of session reconnect handler, add options for no security and reverse connect endpoint to console client --- .../ConsoleReferenceClient/Program.cs | 33 +++++++++-- .../ConsoleReferenceClient/UAClient.cs | 59 ++++++++++++++++--- .../ConsoleReferenceServer/ConsoleUtils.cs | 3 +- Docs/ReverseConnect.md | 6 +- Libraries/Opc.Ua.Client/Session.cs | 21 ++++++- Libraries/Opc.Ua.Client/SessionObsolete.cs | 18 ++++++ .../Opc.Ua.Client/SessionReconnectHandler.cs | 38 ++++++++---- 7 files changed, 147 insertions(+), 31 deletions(-) diff --git a/Applications/ConsoleReferenceClient/Program.cs b/Applications/ConsoleReferenceClient/Program.cs index 70235dd86..d718dfbe2 100644 --- a/Applications/ConsoleReferenceClient/Program.cs +++ b/Applications/ConsoleReferenceClient/Program.cs @@ -36,6 +36,7 @@ using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Opc.Ua; +using Opc.Ua.Client; using Opc.Ua.Configuration; namespace Quickstarts.ConsoleReferenceClient @@ -77,14 +78,17 @@ public static async Task Main(string[] args) bool jsonvalues = false; bool verbose = false; bool subscribe = false; + bool noSecurity = false; string password = null; int timeout = Timeout.Infinite; string logFile = null; + string reverseConnectUrlString = null; Mono.Options.OptionSet options = new Mono.Options.OptionSet { usage, { "h|help", "show this message and exit", h => showHelp = h != null }, { "a|autoaccept", "auto accept certificates (for testing only)", a => autoAccept = a != null }, + { "nsec|nosecurity", "select endpoint with security NONE, least secure if unavailable", s => noSecurity = s != null }, { "un|username=", "the name of the user identity for the connection", (string u) => username = u }, { "up|userpassword=", "the password of the user identity for the connection", (string u) => userpassword = u }, { "c|console", "log to console", c => logConsole = c != null }, @@ -99,8 +103,11 @@ public static async Task Main(string[] args) { "j|json", "Output all Values as JSON", j => { if (j != null) jsonvalues = true; } }, { "v|verbose", "Verbose output", v => { if (v != null) verbose = true; } }, { "s|subscribe", "Subscribe", s => { if (s != null) subscribe = true; } }, + { "rc|reverseconnect=", "Connect using the reverse connect endpoint. (e.g. rc=opc.tcp://localhost:65300)", (string url) => reverseConnectUrlString = url}, }; + ReverseConnectManager reverseConnectManager = null; + try { // parse command line and set options @@ -158,8 +165,18 @@ public static async Task Main(string[] args) throw new ErrorExitException("Application instance certificate invalid!", ExitCode.ErrorCertificate); } + if (reverseConnectUrlString != null) + { + // start the reverse connection manager + output.WriteLine("Create reverse connection endpoint at {0}.", reverseConnectUrlString); + reverseConnectManager = new ReverseConnectManager(); + reverseConnectManager.AddEndpoint(new Uri(reverseConnectUrlString)); + reverseConnectManager.StartService(config); + } + // wait for timeout or Ctrl-C - var quitEvent = ConsoleUtils.CtrlCHandler(); + var quitCTS = new CancellationTokenSource(); + var quitEvent = ConsoleUtils.CtrlCHandler(quitCTS); // connect to a server until application stops bool quit = false; @@ -177,10 +194,9 @@ public static async Task Main(string[] args) } // create the UA Client object and connect to configured server. - using (UAClient uaClient = new UAClient( - application.ApplicationConfiguration, output, ClientBase.ValidateResponse) { + using (UAClient uaClient = new UAClient(application.ApplicationConfiguration, reverseConnectManager, output, ClientBase.ValidateResponse) { AutoAccept = autoAccept, - SessionLifeTime = 60000, + SessionLifeTime = 60_000, }) { // set user identity @@ -189,7 +205,7 @@ public static async Task Main(string[] args) uaClient.UserIdentity = new UserIdentity(username, userpassword ?? string.Empty); } - bool connected = await uaClient.ConnectAsync(serverUrl.ToString(), false).ConfigureAwait(false); + bool connected = await uaClient.ConnectAsync(serverUrl.ToString(), !noSecurity, quitCTS.Token).ConfigureAwait(false); if (connected) { output.WriteLine("Connected! Ctrl-C to quit."); @@ -257,7 +273,7 @@ public static async Task Main(string[] args) } await samples.SubscribeAllValuesAsync(uaClient, - variableIds: new NodeCollection(variables.Take(100)), + variableIds: new NodeCollection(variables), samplingInterval: 1000, publishingInterval: 5000, queueSize: 10, @@ -307,6 +323,11 @@ await samples.SubscribeAllValuesAsync(uaClient, { output.WriteLine(ex.Message); } + finally + { + Utils.SilentDispose(reverseConnectManager); + output.Close(); + } } } } diff --git a/Applications/ConsoleReferenceClient/UAClient.cs b/Applications/ConsoleReferenceClient/UAClient.cs index 79f5ed190..44c9bd42e 100644 --- a/Applications/ConsoleReferenceClient/UAClient.cs +++ b/Applications/ConsoleReferenceClient/UAClient.cs @@ -30,6 +30,7 @@ using System; using System.Collections; using System.IO; +using System.Threading; using System.Threading.Tasks; using Opc.Ua; using Opc.Ua.Client; @@ -51,6 +52,19 @@ public UAClient(ApplicationConfiguration configuration, TextWriter writer, Actio m_output = writer; m_configuration = configuration; m_configuration.CertificateValidator.CertificateValidation += CertificateValidation; + m_reverseConnectManager = null; + } + + /// + /// Initializes a new instance of the UAClient class for reverse connections. + /// + public UAClient(ApplicationConfiguration configuration, ReverseConnectManager reverseConnectManager, TextWriter writer, Action validateResponse) + { + m_validateResponse = validateResponse; + m_output = writer; + m_configuration = configuration; + m_configuration.CertificateValidator.CertificateValidation += CertificateValidation; + m_reverseConnectManager = reverseConnectManager; } #endregion @@ -112,7 +126,7 @@ public void Dispose() /// /// Creates a session with the UA server /// - public async Task ConnectAsync(string serverUrl, bool useSecurity = true) + public async Task ConnectAsync(string serverUrl, bool useSecurity = true, CancellationToken ct = default) { if (serverUrl == null) throw new ArgumentNullException(nameof(serverUrl)); @@ -124,19 +138,47 @@ public async Task ConnectAsync(string serverUrl, bool useSecurity = true) } else { - m_output.WriteLine("Connecting to... {0}", serverUrl); + ITransportWaitingConnection connection = null; + EndpointDescription endpointDescription = null; + if (m_reverseConnectManager != null) + { + m_output.WriteLine("Waiting for reverse connection to.... {0}", serverUrl); + do + { + using (var cts = new CancellationTokenSource(30_000)) + using (var linkedCTS = CancellationTokenSource.CreateLinkedTokenSource(ct, cts.Token)) + { + connection = await m_reverseConnectManager.WaitForConnection(new Uri(serverUrl), null, linkedCTS.Token); + if (connection == null) + { + throw new ServiceResultException(StatusCodes.BadTimeout, "Waiting for a reverse connection timed out."); + } + if (endpointDescription == null) + { + m_output.WriteLine("Discover reverse connection endpoints...."); + endpointDescription = CoreClientUtils.SelectEndpoint(m_configuration, connection, useSecurity); + connection = null; + } + } + } while (connection == null); + } + else + { + m_output.WriteLine("Connecting to... {0}", serverUrl); + endpointDescription = CoreClientUtils.SelectEndpoint(m_configuration, serverUrl, useSecurity); + } // Get the endpoint by connecting to server's discovery endpoint. // Try to find the first endopint with security. - EndpointDescription endpointDescription = CoreClientUtils.SelectEndpoint(m_configuration, serverUrl, useSecurity); EndpointConfiguration endpointConfiguration = EndpointConfiguration.Create(m_configuration); ConfiguredEndpoint endpoint = new ConfiguredEndpoint(null, endpointDescription, endpointConfiguration); // Create the session var session = await Opc.Ua.Client.Session.Create( m_configuration, + connection, endpoint, - true, + connection == null, false, m_configuration.ApplicationName, SessionLifeTime, @@ -235,7 +277,7 @@ private void Session_KeepAlive(ISession session, KeepAliveEventArgs e) return; } - var state = m_reconnectHandler.BeginReconnect(m_session, ReconnectPeriod, Client_ReconnectComplete); + var state = m_reconnectHandler.BeginReconnect(m_session, m_reverseConnectManager, ReconnectPeriod, Client_ReconnectComplete); if (state == SessionReconnectHandler.ReconnectState.Triggered) { Utils.LogInfo("KeepAlive status {0}, reconnect status {1}, reconnect period {2}ms.", e.Status, state, ReconnectPeriod); @@ -276,9 +318,7 @@ private void Client_ReconnectComplete(object sender, EventArgs e) { m_output.WriteLine("--- RECONNECTED TO NEW SESSION --- {0}", m_reconnectHandler.Session.SessionId); var session = m_session; - session.KeepAlive -= Session_KeepAlive; - m_session = m_reconnectHandler.Session as Session; - m_session.KeepAlive += Session_KeepAlive; + m_session = m_reconnectHandler.Session; Utils.SilentDispose(session); } else @@ -330,9 +370,10 @@ protected virtual void CertificateValidation(CertificateValidator sender, Certif #region Private Fields private object m_lock = new object(); + private ReverseConnectManager m_reverseConnectManager; private ApplicationConfiguration m_configuration; private SessionReconnectHandler m_reconnectHandler; - private Session m_session; + private ISession m_session; private readonly TextWriter m_output; private readonly Action m_validateResponse; #endregion diff --git a/Applications/ConsoleReferenceServer/ConsoleUtils.cs b/Applications/ConsoleReferenceServer/ConsoleUtils.cs index 3dc7635df..22237ec40 100644 --- a/Applications/ConsoleReferenceServer/ConsoleUtils.cs +++ b/Applications/ConsoleReferenceServer/ConsoleUtils.cs @@ -395,12 +395,13 @@ public static void LogTest() /// Create an event which is set if a user /// enters the Ctrl-C key combination. /// - public static ManualResetEvent CtrlCHandler() + public static ManualResetEvent CtrlCHandler(CancellationTokenSource cts = default) { var quitEvent = new ManualResetEvent(false); try { Console.CancelKeyPress += (_, eArgs) => { + cts.Cancel(); quitEvent.Set(); eArgs.Cancel = true; }; diff --git a/Docs/ReverseConnect.md b/Docs/ReverseConnect.md index 61a892e2a..bdec00fa4 100644 --- a/Docs/ReverseConnect.md +++ b/Docs/ReverseConnect.md @@ -11,8 +11,8 @@ The Reverse Connect option consists of the following elements: * Updated client library which support to - Configure a client endpoint to accept *ReverseHello* messages using a *ReverseConnectManager*. - A client API extension to allow applications to register for reverse connections either by callback or by waiting for the *ReverseHello* message for a specific server endpoint and application Uri combination. An optional filter for server Uris or endpoint Urls can be applied to allow multiple clients to use the same endpoint. -* The updated C# [Reference Server](../Applications/ConsoleReferenceServer) with reverse connect support. -* The C# Core [Client](https://github.com/OPCFoundation/UA-.NETStandard-Samples/tree/master/Samples/NetCoreComplexClient) and [Server](https://github.com/OPCFoundation/UA-.NETStandard-Samples/tree/master/Samples/NetCoreConsoleServer) samples that can initiate a Reverse connection with command line options. +* The C# [Console Reference Server](../Applications/ConsoleReferenceServer) with reverse connect support in the configuration xml. +* The C# Core [Console Reference Client](../Applications/ConsoleReferenceClient) that can initiate a Reverse connection with command line options. * A modified C# [Aggregation Server](https://github.com/OPCFoundation/UA-.NETStandard-Samples/tree/master/Workshop/Aggregation) that supports incoming and outgoing reverse connections. ## Reverse Connect Handshake ## @@ -83,4 +83,4 @@ The Client configuration extension to allow incoming connections for one or more - Only a limited number of samples is available yet, the Reference Server, the Aggregation Server and the Console server and client. - \ No newline at end of file + diff --git a/Libraries/Opc.Ua.Client/Session.cs b/Libraries/Opc.Ua.Client/Session.cs index abfd09bb0..ca2a09cae 100644 --- a/Libraries/Opc.Ua.Client/Session.cs +++ b/Libraries/Opc.Ua.Client/Session.cs @@ -387,6 +387,17 @@ protected override void Dispose(bool disposing) } base.Dispose(disposing); + + if (disposing) + { + // suppress spurious events + m_KeepAlive = null; + m_Publish = null; + m_PublishError = null; + m_PublishSequenceNumbersToAcknowledge = null; + m_SubscriptionsChanged = null; + m_SessionClosing = null; + } } #endregion @@ -5293,7 +5304,8 @@ private void OnPublishComplete(IAsyncResult result) } } - // don't send another publish for these errors. + // don't send another publish for these errors, + // or throttle to avoid server overload. switch (error.Code) { case StatusCodes.BadTooManyPublishRequests: @@ -5311,6 +5323,13 @@ private void OnPublishComplete(IAsyncResult result) case StatusCodes.BadSecureChannelClosed: case StatusCodes.BadServerHalted: return; + + // Servers may return this error when overloaded + case StatusCodes.BadTooManyOperations: + case StatusCodes.BadTcpServerTooBusy: + // throttle the resend to reduce server load + Thread.Sleep(100); + break; } Utils.LogError(e, "PUBLISH #{0} - Unhandled error {1} during Publish.", requestHeader.RequestHandle, error.StatusCode); diff --git a/Libraries/Opc.Ua.Client/SessionObsolete.cs b/Libraries/Opc.Ua.Client/SessionObsolete.cs index eedb3dc9b..12c75a9f5 100644 --- a/Libraries/Opc.Ua.Client/SessionObsolete.cs +++ b/Libraries/Opc.Ua.Client/SessionObsolete.cs @@ -99,6 +99,24 @@ public override Task CloseSessionAsync( RequestHeader requestHeader, bool deleteSubscriptions, CancellationToken ct) => base.CloseSessionAsync(requestHeader, deleteSubscriptions, ct); + + /// + [Obsolete("Call ISession.TransferSubscriptions(SubscriptionIds, bool) instead.")] + public override ResponseHeader TransferSubscriptions( + RequestHeader requestHeader, + UInt32Collection subscriptionIds, + bool sendInitialValues, + out TransferResultCollection results, + out DiagnosticInfoCollection diagnosticInfos) => base.TransferSubscriptions( + requestHeader, subscriptionIds, sendInitialValues, out results, out diagnosticInfos); + + /// + [Obsolete("Call ISession.TransferSubscriptionsAsync(SubscriptionIds, bool) instead.")] + public override Task TransferSubscriptionsAsync( + RequestHeader requestHeader, + UInt32Collection subscriptionIds, + bool sendInitialValues, + CancellationToken ct) => base.TransferSubscriptionsAsync(requestHeader, subscriptionIds, sendInitialValues, ct); } } #endif diff --git a/Libraries/Opc.Ua.Client/SessionReconnectHandler.cs b/Libraries/Opc.Ua.Client/SessionReconnectHandler.cs index 6edabe27a..d4485934e 100644 --- a/Libraries/Opc.Ua.Client/SessionReconnectHandler.cs +++ b/Libraries/Opc.Ua.Client/SessionReconnectHandler.cs @@ -53,6 +53,11 @@ public class SessionReconnectHandler : IDisposable /// public const int DefaultReconnectPeriod = 1000; + /// + /// The default reconnect operation timeout in ms. + /// + public const int MinReconnectOperationTimeout = 5000; + /// /// The internal state of the reconnect handler. /// @@ -213,12 +218,13 @@ public ReconnectState BeginReconnect(ISession session, ReverseConnectManager rev } // set reconnect period within boundaries - m_baseReconnectPeriod = reconnectPeriod = CheckedReconnectPeriod(reconnectPeriod); + reconnectPeriod = CheckedReconnectPeriod(reconnectPeriod); // ignore subsequent trigger requests if (m_state == ReconnectState.Ready) { m_session = session; + m_baseReconnectPeriod = reconnectPeriod; m_reconnectFailed = false; m_cancelReconnect = false; m_callback = callback; @@ -229,9 +235,10 @@ public ReconnectState BeginReconnect(ISession session, ReverseConnectManager rev return m_state; } - // if triggered, reset timer if requested reconnect period is smaller - if (m_state == ReconnectState.Triggered && reconnectPeriod < m_reconnectPeriod) + // if triggered, reset timer only if requested reconnect period is shorter + if (m_state == ReconnectState.Triggered && reconnectPeriod < m_baseReconnectPeriod) { + m_baseReconnectPeriod = reconnectPeriod; m_reconnectTimer.Change(JitteredReconnectPeriod(reconnectPeriod), Timeout.Infinite); m_reconnectPeriod = CheckedReconnectPeriod(reconnectPeriod, true); } @@ -342,9 +349,12 @@ await DoReconnect().ConfigureAwait(false)) } else { - int adjustedReconnectPeriod = JitteredReconnectPeriod(m_reconnectPeriod) - - (int)DateTime.UtcNow.Subtract(reconnectStart).TotalMilliseconds; - m_reconnectTimer.Change(CheckedReconnectPeriod(adjustedReconnectPeriod), Timeout.Infinite); + int elapsed = (int)DateTime.UtcNow.Subtract(reconnectStart).TotalMilliseconds; + Utils.LogInfo("Reconnect period is {0} ms, {1} ms elapsed in reconnect.", m_reconnectPeriod, elapsed); + int adjustedReconnectPeriod = CheckedReconnectPeriod(m_reconnectPeriod - elapsed); + adjustedReconnectPeriod = JitteredReconnectPeriod(adjustedReconnectPeriod); + m_reconnectTimer.Change(adjustedReconnectPeriod, Timeout.Infinite); + Utils.LogInfo("Next adjusted reconnect scheduled in {0} ms.", adjustedReconnectPeriod); m_reconnectPeriod = CheckedReconnectPeriod(m_reconnectPeriod, true); m_state = ReconnectState.Triggered; } @@ -359,8 +369,7 @@ private async Task DoReconnect() { // helper to override operation timeout int operationTimeout = m_session.OperationTimeout; - int reconnectOperationTimeout = m_reconnectPeriod >= DefaultReconnectPeriod ? - m_reconnectPeriod : DefaultReconnectPeriod; + int reconnectOperationTimeout = Math.Max(m_reconnectPeriod, MinReconnectOperationTimeout); // try a reconnect. if (!m_reconnectFailed) @@ -399,10 +408,11 @@ private async Task DoReconnect() sre.StatusCode == StatusCodes.BadRequestTimeout || sre.StatusCode == StatusCodes.BadTimeout) { - // check if reconnecting is still an option. - if (m_session.LastKeepAliveTime.AddMilliseconds(m_session.SessionTimeout) > DateTime.UtcNow) + // check if reactivating is still an option. + TimeSpan timeout = m_session.LastKeepAliveTime.AddMilliseconds(m_session.SessionTimeout) - DateTime.UtcNow; + if (timeout.TotalMilliseconds > 0) { - Utils.LogInfo("Calling OnReconnectSession in {0} ms.", m_reconnectPeriod); + Utils.LogInfo("Retry to reactivate, est. session timeout in {0} ms.", timeout.TotalMilliseconds); return false; } } @@ -413,6 +423,12 @@ private async Task DoReconnect() m_updateFromServer = true; Utils.LogInfo("Reconnect failed due to security check. Request endpoint update from server. {0}", sre.Message); } + else + { + // next attempt is to recreate session + m_reconnectFailed = true; + return false; + } } else { From 010a839ee81fe08083122cd156fa7acf27cd44a8 Mon Sep 17 00:00:00 2001 From: Martin Regen Date: Thu, 22 Jun 2023 16:31:21 +0200 Subject: [PATCH 4/5] Support custom cert store with flat directory structure (#2198) In some use cases (e.g. Kubernetes secrets) it would be beneficial to store the certificates, private keys, crl etc. in a flat directory instead of having a root which contains a hierarchy with certs/crl/private etc. - Modify the `DirectoryCertificateStore` to allow it to use a flat structure by adding a special constructor. - Add the configuration builder functions to allow to specify custom certificate stores for app/user/https. - Add a test sample which shows how to use the 'flat store' with a custom cert store wrapper. - By default, behavior of `DirectoryCertificateStore` is unchanged. Needs an external wrapper to expose the flat mode. --- .../ApplicationConfigurationBuilder.cs | 130 +++++++-- .../IApplicationConfigurationBuilder.cs | 47 ++++ .../Certificates/DirectoryCertificateStore.cs | 119 +++++---- .../CertificateStoreTypeTest.cs | 250 ++++++++++++++++++ 4 files changed, 483 insertions(+), 63 deletions(-) create mode 100644 Tests/Opc.Ua.Configuration.Tests/CertificateStoreTypeTest.cs diff --git a/Libraries/Opc.Ua.Configuration/ApplicationConfigurationBuilder.cs b/Libraries/Opc.Ua.Configuration/ApplicationConfigurationBuilder.cs index 56efc4968..6deed9b56 100644 --- a/Libraries/Opc.Ua.Configuration/ApplicationConfigurationBuilder.cs +++ b/Libraries/Opc.Ua.Configuration/ApplicationConfigurationBuilder.cs @@ -141,19 +141,95 @@ public IApplicationConfigurationBuilderSecurityOptions AddSecurityConfiguration( StoreType = rejectedRootType, StorePath = DefaultCertificateStorePath(TrustlistType.Rejected, rejectedRoot) }, - // ensure secure default settings - AutoAcceptUntrustedCertificates = false, - AddAppCertToTrustedStore = false, - RejectSHA1SignedCertificates = true, - RejectUnknownRevocationStatus = true, - SuppressNonceValidationErrors = false, - SendCertificateChain = true, - MinimumCertificateKeySize = CertificateFactory.DefaultKeySize }; + SetSecureDefaults(ApplicationConfiguration.SecurityConfiguration); return this; } + /// + public IApplicationConfigurationBuilderSecurityOptionStores AddSecurityConfigurationStores( + string subjectName, + string appRoot, + string trustedRoot, + string issuerRoot, + string rejectedRoot = null + ) + { + string appStoreType = CertificateStoreIdentifier.DetermineStoreType(appRoot); + string issuerRootType = CertificateStoreIdentifier.DetermineStoreType(issuerRoot); + string trustedRootType = CertificateStoreIdentifier.DetermineStoreType(trustedRoot); + rejectedRoot = rejectedRoot ?? DefaultPKIRoot(null); + string rejectedRootType = CertificateStoreIdentifier.DetermineStoreType(rejectedRoot); + ApplicationConfiguration.SecurityConfiguration = new SecurityConfiguration { + // app cert store + ApplicationCertificate = new CertificateIdentifier() { + StoreType = appStoreType, + StorePath = DefaultCertificateStorePath(TrustlistType.Application, appRoot), + SubjectName = Utils.ReplaceDCLocalhost(subjectName) + }, + // App trusted & issuer + TrustedPeerCertificates = new CertificateTrustList() { + StoreType = trustedRootType, + StorePath = DefaultCertificateStorePath(TrustlistType.Trusted, trustedRoot) + }, + TrustedIssuerCertificates = new CertificateTrustList() { + StoreType = issuerRootType, + StorePath = DefaultCertificateStorePath(TrustlistType.Issuer, issuerRoot) + }, + // rejected store + RejectedCertificateStore = new CertificateTrustList() { + StoreType = rejectedRootType, + StorePath = DefaultCertificateStorePath(TrustlistType.Rejected, rejectedRoot) + }, + }; + SetSecureDefaults(ApplicationConfiguration.SecurityConfiguration); + + return this; + } + + /// + public IApplicationConfigurationBuilderSecurityOptionStores AddSecurityConfigurationUserStore( + string trustedRoot, + string issuerRoot + ) + { + string trustedRootType = CertificateStoreIdentifier.DetermineStoreType(trustedRoot); + string issuerRootType = CertificateStoreIdentifier.DetermineStoreType(issuerRoot); + + // User trusted & issuer + ApplicationConfiguration.SecurityConfiguration.TrustedUserCertificates = new CertificateTrustList() { + StoreType = trustedRootType, + StorePath = DefaultCertificateStorePath(TrustlistType.TrustedUser, trustedRoot) + }; + ApplicationConfiguration.SecurityConfiguration.UserIssuerCertificates = new CertificateTrustList() { + StoreType = issuerRootType, + StorePath = DefaultCertificateStorePath(TrustlistType.IssuerUser, issuerRoot) + }; + return this; + } + + /// + public IApplicationConfigurationBuilderSecurityOptionStores AddSecurityConfigurationHttpsStore( + string trustedRoot, + string issuerRoot + ) + { + string trustedRootType = CertificateStoreIdentifier.DetermineStoreType(trustedRoot); + string issuerRootType = CertificateStoreIdentifier.DetermineStoreType(issuerRoot); + + // Https trusted & issuer + ApplicationConfiguration.SecurityConfiguration.TrustedHttpsCertificates = new CertificateTrustList() { + StoreType = trustedRootType, + StorePath = DefaultCertificateStorePath(TrustlistType.TrustedHttps, trustedRootType) + }; + ApplicationConfiguration.SecurityConfiguration.HttpsIssuerCertificates = new CertificateTrustList() { + StoreType = issuerRootType, + StorePath = DefaultCertificateStorePath(TrustlistType.IssuerHttps, issuerRoot) + }; + return this; + } + /// public async Task Create() { @@ -217,7 +293,7 @@ public IApplicationConfigurationBuilderServerSelected AsServer( serverConfiguration.MaxRegistrationInterval = 0; // base addresses - foreach (var baseAddress in baseAddresses) + foreach (string baseAddress in baseAddresses) { serverConfiguration.BaseAddresses.Add(Utils.ReplaceLocalhost(baseAddress)); } @@ -225,7 +301,7 @@ public IApplicationConfigurationBuilderServerSelected AsServer( // alternate base addresses if (alternateBaseAddresses != null) { - foreach (var alternateBaseAddress in alternateBaseAddresses) + foreach (string alternateBaseAddress in alternateBaseAddresses) { serverConfiguration.AlternateBaseAddresses.Add(Utils.ReplaceLocalhost(alternateBaseAddress)); } @@ -247,7 +323,7 @@ public IApplicationConfigurationBuilderServerSelected AddUnsecurePolicyNone(bool { if (addPolicy) { - var policies = ApplicationConfiguration.ServerConfiguration.SecurityPolicies; + ServerSecurityPolicyCollection policies = ApplicationConfiguration.ServerConfiguration.SecurityPolicies; InternalAddPolicy(policies, MessageSecurityMode.None, SecurityPolicies.None); } return this; @@ -794,7 +870,7 @@ private string DefaultPKIRoot(string root) /// A PKI root for which the store path is needed. private string DefaultCertificateStorePath(TrustlistType trustListType, string pkiRoot) { - var pkiRootType = CertificateStoreIdentifier.DetermineStoreType(pkiRoot); + string pkiRootType = CertificateStoreIdentifier.DetermineStoreType(pkiRoot); if (pkiRootType.Equals(CertificateStoreType.Directory, StringComparison.OrdinalIgnoreCase)) { string leafPath = ""; @@ -856,6 +932,11 @@ private string DefaultCertificateStorePath(TrustlistType trustListType, string p return pkiRoot + "UA_Rejected"; } } + else + { + // return custom root store + return pkiRoot; + } throw new NotSupportedException("Unsupported store type."); } @@ -871,11 +952,11 @@ private void AddSecurityPolicies(bool includeSign = false, bool deprecated = fal string[] defaultPolicyUris = SecurityPolicies.GetDefaultUris(); if (deprecated) { - var names = SecurityPolicies.GetDisplayNames(); + string[] names = SecurityPolicies.GetDisplayNames(); var deprecatedPolicyList = new List(); - foreach (var name in names) + foreach (string name in names) { - var uri = SecurityPolicies.GetUri(name); + string uri = SecurityPolicies.GetUri(name); if (uri != null) { deprecatedPolicyList.Add(uri); @@ -886,7 +967,7 @@ private void AddSecurityPolicies(bool includeSign = false, bool deprecated = fal foreach (MessageSecurityMode securityMode in typeof(MessageSecurityMode).GetEnumValues()) { - var policies = ApplicationConfiguration.ServerConfiguration.SecurityPolicies; + ServerSecurityPolicyCollection policies = ApplicationConfiguration.ServerConfiguration.SecurityPolicies; if (policyNone && securityMode == MessageSecurityMode.None) { InternalAddPolicy(policies, MessageSecurityMode.None, SecurityPolicies.None); @@ -894,7 +975,7 @@ private void AddSecurityPolicies(bool includeSign = false, bool deprecated = fal else if (securityMode >= MessageSecurityMode.SignAndEncrypt || (includeSign && securityMode == MessageSecurityMode.Sign)) { - foreach (var policyUri in defaultPolicyUris) + foreach (string policyUri in defaultPolicyUris) { InternalAddPolicy(policies, securityMode, policyUri); } @@ -902,6 +983,21 @@ private void AddSecurityPolicies(bool includeSign = false, bool deprecated = fal } } + /// + /// Set secure defaults for flags. + /// + private void SetSecureDefaults(SecurityConfiguration securityConfiguration) + { + // ensure secure default settings + securityConfiguration.AutoAcceptUntrustedCertificates = false; + securityConfiguration.AddAppCertToTrustedStore = false; + securityConfiguration.RejectSHA1SignedCertificates = true; + securityConfiguration.RejectUnknownRevocationStatus = true; + securityConfiguration.SuppressNonceValidationErrors = false; + securityConfiguration.SendCertificateChain = true; + securityConfiguration.MinimumCertificateKeySize = CertificateFactory.DefaultKeySize; + } + /// /// Add security policy if it doesn't exist yet. /// diff --git a/Libraries/Opc.Ua.Configuration/IApplicationConfigurationBuilder.cs b/Libraries/Opc.Ua.Configuration/IApplicationConfigurationBuilder.cs index 7576f9de5..aecaa618e 100644 --- a/Libraries/Opc.Ua.Configuration/IApplicationConfigurationBuilder.cs +++ b/Libraries/Opc.Ua.Configuration/IApplicationConfigurationBuilder.cs @@ -44,6 +44,7 @@ public interface IApplicationConfigurationBuilder : IApplicationConfigurationBuilderClientSelected, IApplicationConfigurationBuilderSecurity, IApplicationConfigurationBuilderSecurityOptions, + IApplicationConfigurationBuilderSecurityOptionStores, IApplicationConfigurationBuilderServerPolicies, IApplicationConfigurationBuilderCreate { @@ -381,6 +382,52 @@ IApplicationConfigurationBuilderSecurityOptions AddSecurityConfiguration( string appRoot = null, string rejectedRoot = null ); + + /// + /// Add the security configuration for mandatory application, issuer and trusted stores. + /// + /// Application certificate subject name as distinguished name. + /// A DC=localhost entry is converted to the hostname. The common name CN= is mandatory. + /// The path to the app cert store. + /// The path to the trusted cert store. + /// The path to the issuer cert store. + /// The path to the rejected certificate store. + IApplicationConfigurationBuilderSecurityOptionStores AddSecurityConfigurationStores( + string subjectName, + string appRoot, + string trustedRoot, + string issuerRoot, + string rejectedRoot = null + ); + } + + /// + /// Add security options to the configuration. + /// + public interface IApplicationConfigurationBuilderSecurityOptionStores : + IApplicationConfigurationBuilderTraceConfiguration, + IApplicationConfigurationBuilderExtension, + IApplicationConfigurationBuilderCreate + { + /// + /// Add the security configuration for the user certificate issuer and trusted stores. + /// + /// The path to the trusted cert store. + /// The path to the issuer cert store. + IApplicationConfigurationBuilderSecurityOptionStores AddSecurityConfigurationUserStore( + string trustedRoot, + string issuerRoot + ); + + /// + /// Add the security configuration for the https certificate issuer and trusted stores. + /// + /// The path to the trusted cert store. + /// The path to the issuer cert store. + IApplicationConfigurationBuilderSecurityOptionStores AddSecurityConfigurationHttpsStore( + string trustedRoot, + string issuerRoot + ); } /// diff --git a/Stack/Opc.Ua.Core/Security/Certificates/DirectoryCertificateStore.cs b/Stack/Opc.Ua.Core/Security/Certificates/DirectoryCertificateStore.cs index a96f07c24..e96a23988 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/DirectoryCertificateStore.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/DirectoryCertificateStore.cs @@ -14,10 +14,8 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. using System.Collections.Generic; using System.IO; using System.Linq; -using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Text; -using System.Threading; using System.Threading.Tasks; using Opc.Ua.Security.Certificates; @@ -28,14 +26,33 @@ namespace Opc.Ua /// public class DirectoryCertificateStore : ICertificateStore { + // the sub directories and extensions used in a directory store + private const string kCertsPath = "certs"; + private const string kPrivateKeyPath = "private"; + private const string kCrlPath = "crl"; + private const string kCertExtension = ".der"; + private const string kCrlExtension = ".crl"; + private const string kPemExtension = ".pem"; + private const string kPfxExtension = ".pfx"; + #region Constructors /// - /// Initializes a store with the specified directory path. + /// Initializes a store for a directory path. + /// + public DirectoryCertificateStore() : this(false) + { + } + + /// + /// Initializes a store with a directory path. /// - public DirectoryCertificateStore() + public DirectoryCertificateStore(bool noSubDirs) { + m_noSubDirs = noSubDirs; m_certificates = new Dictionary(); } + + #endregion #region IDisposable Members @@ -61,6 +78,7 @@ protected virtual void Dispose(bool disposing) m_directory = null; m_certificateSubdir = null; m_privateKeySubdir = null; + m_crlSubdir = null; m_lastDirectoryCheck = DateTime.MinValue; } } @@ -91,8 +109,18 @@ public void Open(string location, bool noPrivateKeys = false) NoPrivateKeys = noPrivateKeys; StorePath = location; m_directory = new DirectoryInfo(trimmedLocation); - m_certificateSubdir = new DirectoryInfo(Path.Combine(m_directory.FullName, "certs")); - m_privateKeySubdir = new DirectoryInfo(Path.Combine(m_directory.FullName, "private")); + if (m_noSubDirs) + { + m_certificateSubdir = m_directory; + m_crlSubdir = m_directory; + m_privateKeySubdir = !noPrivateKeys ? m_directory : null; + } + else + { + m_certificateSubdir = new DirectoryInfo(Path.Combine(m_directory.FullName, kCertsPath)); + m_crlSubdir = new DirectoryInfo(Path.Combine(m_directory.FullName, kCrlPath)); + m_privateKeySubdir = !noPrivateKeys ? new DirectoryInfo(Path.Combine(m_directory.FullName, kPrivateKeyPath)) : null; + } m_certificates.Clear(); m_lastDirectoryCheck = DateTime.MinValue; } @@ -117,7 +145,7 @@ public Task Enumerate() lock (m_lock) { IDictionary certificatesInStore = Load(null); - X509Certificate2Collection certificates = new X509Certificate2Collection(); + var certificates = new X509Certificate2Collection(); foreach (Entry entry in certificatesInStore.Values) { @@ -238,7 +266,7 @@ public async Task Delete(string thumbprint) /// public Task FindByThumbprint(string thumbprint) { - X509Certificate2Collection certificates = new X509Certificate2Collection(); + var certificates = new X509Certificate2Collection(); lock (m_lock) { @@ -312,7 +340,8 @@ public string GetPrivateKeyFilePath(string thumbprint) /// public async Task LoadPrivateKey(string thumbprint, string subjectName, string password) { - if (NoPrivateKeys || m_certificateSubdir == null || !m_certificateSubdir.Exists) + if (NoPrivateKeys || m_privateKeySubdir == null || + m_certificateSubdir == null || !m_certificateSubdir.Exists) { return null; } @@ -330,11 +359,11 @@ public async Task LoadPrivateKey(string thumbprint, string sub { bool certificateFound = false; Exception importException = null; - foreach (FileInfo file in m_certificateSubdir.GetFiles("*.der")) + foreach (FileInfo file in m_certificateSubdir.GetFiles("*" + kCertExtension)) { try { - X509Certificate2 certificate = new X509Certificate2(file.FullName); + var certificate = new X509Certificate2(file.FullName); if (!String.IsNullOrEmpty(thumbprint)) { @@ -378,8 +407,8 @@ public async Task LoadPrivateKey(string thumbprint, string sub X509KeyStorageFlags.Exportable | X509KeyStorageFlags.UserKeySet }; - FileInfo privateKeyFilePfx = new FileInfo(filePath + ".pfx"); - FileInfo privateKeyFilePem = new FileInfo(filePath + ".pem"); + var privateKeyFilePfx = new FileInfo(filePath + kPfxExtension); + var privateKeyFilePem = new FileInfo(filePath + kPemExtension); password = password ?? String.Empty; if (privateKeyFilePfx.Exists) { @@ -481,13 +510,11 @@ public Task IsRevoked(X509Certificate2 issuer, X509Certificate2 cert } // check for CRL. - DirectoryInfo info = new DirectoryInfo(this.Directory.FullName + Path.DirectorySeparatorChar + "crl"); - - if (info.Exists) + if (m_crlSubdir.Exists) { bool crlExpired = true; - foreach (FileInfo file in info.GetFiles("*.crl")) + foreach (FileInfo file in m_crlSubdir.GetFiles("*" + kCrlExtension)) { X509CRL crl = null; @@ -542,13 +569,11 @@ public Task EnumerateCRLs() var crls = new X509CRLCollection(); // check for CRL. - DirectoryInfo info = new DirectoryInfo(this.Directory.FullName + Path.DirectorySeparatorChar + "crl"); - - if (info.Exists) + if (m_crlSubdir.Exists) { - foreach (FileInfo file in info.GetFiles("*.crl")) + foreach (FileInfo file in m_crlSubdir.GetFiles("*" + kCrlExtension)) { - X509CRL crl = new X509CRL(file.FullName); + var crl = new X509CRL(file.FullName); crls.Add(crl); } } @@ -615,13 +640,11 @@ public async Task AddCRL(X509CRL crl) throw new ServiceResultException(StatusCodes.BadCertificateInvalid, "Could not find issuer of the CRL."); } - StringBuilder builder = new StringBuilder(); - builder.Append(m_directory.FullName); - builder.Append(Path.DirectorySeparatorChar).Append("crl").Append(Path.DirectorySeparatorChar); - builder.Append(GetFileName(issuer)); - builder.Append(".crl"); + var builder = new StringBuilder(); + builder.Append(m_crlSubdir.FullName).Append(Path.DirectorySeparatorChar); + builder.Append(GetFileName(issuer)).Append(kCrlExtension); - FileInfo fileInfo = new FileInfo(builder.ToString()); + var fileInfo = new FileInfo(builder.ToString()); if (!fileInfo.Directory.Exists) { @@ -639,14 +662,10 @@ public Task DeleteCRL(X509CRL crl) throw new ArgumentNullException(nameof(crl)); } - string filePath = m_directory.FullName; - filePath += Path.DirectorySeparatorChar + "crl"; - - DirectoryInfo dirInfo = new DirectoryInfo(filePath); - if (dirInfo.Exists) + if (m_crlSubdir.Exists) { - foreach (FileInfo fileInfo in dirInfo.GetFiles("*.crl")) + foreach (FileInfo fileInfo in m_crlSubdir.GetFiles("*" + kCrlExtension)) { if (fileInfo.Length == crl.RawData.Length) { @@ -706,7 +725,8 @@ private IDictionary Load(string thumbprint) // check if cache is still good. if ((m_certificateSubdir.LastWriteTimeUtc < m_lastDirectoryCheck) && - (NoPrivateKeys || !m_privateKeySubdir.Exists || m_privateKeySubdir.LastWriteTimeUtc < m_lastDirectoryCheck)) + (NoPrivateKeys || m_privateKeySubdir == null || !m_privateKeySubdir.Exists || + m_privateKeySubdir.LastWriteTimeUtc < m_lastDirectoryCheck)) { return m_certificates; } @@ -720,7 +740,7 @@ private IDictionary Load(string thumbprint) { try { - Entry entry = new Entry { + var entry = new Entry { Certificate = new X509Certificate2(file.FullName), CertificateFile = file, PrivateKeyFile = null, @@ -731,20 +751,20 @@ private IDictionary Load(string thumbprint) { string fileRoot = file.Name.Substring(0, entry.CertificateFile.Name.Length - entry.CertificateFile.Extension.Length); - StringBuilder filePath = new StringBuilder(); + var filePath = new StringBuilder(); filePath.Append(m_privateKeySubdir.FullName); filePath.Append(Path.DirectorySeparatorChar); filePath.Append(fileRoot); // check for PFX file. - entry.PrivateKeyFile = new FileInfo(filePath.ToString() + ".pfx"); + entry.PrivateKeyFile = new FileInfo(filePath.ToString() + kPfxExtension); // note: only obtain the filenames for delete, loading the private keys // without authorization causes false negatives (LogErrors) if (!entry.PrivateKeyFile.Exists) { // check for PEM file. - entry.PrivateKeyFile = new FileInfo(filePath.ToString() + ".pem"); + entry.PrivateKeyFile = new FileInfo(filePath.ToString() + kPemExtension); if (!entry.PrivateKeyFile.Exists) { @@ -816,7 +836,7 @@ private string GetFileName(X509Certificate2 certificate) } } - StringBuilder fileName = new StringBuilder(); + var fileName = new StringBuilder(); // remove any special characters. for (int ii = 0; ii < commonName.Length; ii++) @@ -843,7 +863,7 @@ private string GetFileName(X509Certificate2 certificate) /// private void WriteFile(byte[] data, string fileName, bool includePrivateKey) { - StringBuilder filePath = new StringBuilder(); + var filePath = new StringBuilder(); if (!m_directory.Exists) { @@ -852,6 +872,11 @@ private void WriteFile(byte[] data, string fileName, bool includePrivateKey) if (includePrivateKey) { + if (m_privateKeySubdir == null) + { + // nothing to do + return; + } filePath.Append(m_privateKeySubdir.FullName); } else @@ -864,22 +889,22 @@ private void WriteFile(byte[] data, string fileName, bool includePrivateKey) if (includePrivateKey) { - filePath.Append(".pfx"); + filePath.Append(kPfxExtension); } else { - filePath.Append(".der"); + filePath.Append(kCertExtension); } // create the directory. - FileInfo fileInfo = new FileInfo(filePath.ToString()); + var fileInfo = new FileInfo(filePath.ToString()); if (!fileInfo.Directory.Exists) { fileInfo.Directory.Create(); } // write file. - BinaryWriter writer = new BinaryWriter(fileInfo.Open(FileMode.Create)); + var writer = new BinaryWriter(fileInfo.Open(FileMode.Create)); try { writer.Write(data); @@ -891,7 +916,7 @@ private void WriteFile(byte[] data, string fileName, bool includePrivateKey) } m_certificateSubdir.Refresh(); - m_privateKeySubdir.Refresh(); + m_privateKeySubdir?.Refresh(); } #endregion @@ -907,8 +932,10 @@ private class Entry #region Private Fields private object m_lock = new object(); + private bool m_noSubDirs; private DirectoryInfo m_directory; private DirectoryInfo m_certificateSubdir; + private DirectoryInfo m_crlSubdir; private DirectoryInfo m_privateKeySubdir; private Dictionary m_certificates; private DateTime m_lastDirectoryCheck; diff --git a/Tests/Opc.Ua.Configuration.Tests/CertificateStoreTypeTest.cs b/Tests/Opc.Ua.Configuration.Tests/CertificateStoreTypeTest.cs new file mode 100644 index 000000000..f58f13b39 --- /dev/null +++ b/Tests/Opc.Ua.Configuration.Tests/CertificateStoreTypeTest.cs @@ -0,0 +1,250 @@ +/* ======================================================================== + * Copyright (c) 2005-2023 The OPC Foundation, Inc. All rights reserved. + * + * OPC Foundation MIT License 1.00 + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * The complete license agreement can be found here: + * http://opcfoundation.org/License/MIT/1.00/ + * ======================================================================*/ + + +using System; +using System.IO; +using System.Security.Cryptography.X509Certificates; +using System.Threading.Tasks; +using NUnit.Framework; +using Opc.Ua.Security.Certificates; + +namespace Opc.Ua.Configuration.Tests +{ + /// + /// Tests for the custom certificate store config extensions. + /// + [TestFixture, Category("CertificateStore")] + [SetCulture("en-us")] + public class CertificateStoreTypeTest + { + [OneTimeSetUp] + protected void OneTimeSetUp() + { + CertificateStoreType.RegisterCertificateStoreType(TestCertStore.StoreTypePrefix, new TestStoreType()); + } + + [SetUp] + public void SetUp() + { + m_tempPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); + Directory.CreateDirectory(m_tempPath); + } + + [TearDown] + public void TearDown() + { + Directory.Delete(m_tempPath, true); + } + + #region Test Methods + [Test] + public async Task CertifcateStoreTypeNoConfigTest() + { + ApplicationInstance application = new ApplicationInstance() { + ApplicationName = "Application", + }; + + string appStorePath = m_tempPath + Path.DirectorySeparatorChar + "own"; + string trustedStorePath = m_tempPath + Path.DirectorySeparatorChar + "trusted"; + string issuerStorePath = m_tempPath + Path.DirectorySeparatorChar + "issuer"; + string trustedUserStorePath = m_tempPath + Path.DirectorySeparatorChar + "trustedUser"; + string issuerUserStorePath = m_tempPath + Path.DirectorySeparatorChar + "userIssuer"; + + var appConfigBuilder = application.Build( + applicationUri: "urn:localhost:CertStoreTypeTest", + productUri: "uri:opcfoundation.org:Tests:CertStoreTypeTest") + .AsClient() + .AddSecurityConfigurationStores( + subjectName: "CN=CertStoreTypeTest, O=OPC Foundation", + appRoot: TestCertStore.StoreTypePrefix + appStorePath, + trustedRoot: TestCertStore.StoreTypePrefix + trustedStorePath, + issuerRoot: TestCertStore.StoreTypePrefix + issuerStorePath + ) + .AddSecurityConfigurationUserStore( + trustedRoot: TestCertStore.StoreTypePrefix + trustedUserStorePath, + issuerRoot: TestCertStore.StoreTypePrefix + issuerUserStorePath + ); + + // patch custom stores before creating the config + ApplicationConfiguration appConfig = await appConfigBuilder.Create().ConfigureAwait(false); + + bool certOK = await application.CheckApplicationInstanceCertificate(true, 0).ConfigureAwait(false); + Assert.True(certOK); + + int instancesCreatedWhileLoadingConfig = TestCertStore.InstancesCreated; + Assert.IsTrue(instancesCreatedWhileLoadingConfig > 0); + + OpenCertStore(appConfig.SecurityConfiguration.TrustedIssuerCertificates); + OpenCertStore(appConfig.SecurityConfiguration.TrustedPeerCertificates); + OpenCertStore(appConfig.SecurityConfiguration.UserIssuerCertificates); + OpenCertStore(appConfig.SecurityConfiguration.TrustedUserCertificates); + + int instancesCreatedWhileOpeningAuthRootStore = TestCertStore.InstancesCreated; + Assert.IsTrue(instancesCreatedWhileLoadingConfig < instancesCreatedWhileOpeningAuthRootStore); + CertificateStoreIdentifier.OpenStore(TestCertStore.StoreTypePrefix + trustedUserStorePath); + Assert.IsTrue(instancesCreatedWhileOpeningAuthRootStore < TestCertStore.InstancesCreated); + } + #endregion Test Methods + + #region Private Methods + private void OpenCertStore(CertificateTrustList trustList) + { + using (ICertificateStore trustListStore = trustList.OpenStore()) + { + var certs = trustListStore.Enumerate(); + var crls = trustListStore.EnumerateCRLs(); + trustListStore.Close(); + } + } + #endregion + + #region Private Members + private string m_tempPath; + #endregion + } + + internal sealed class TestStoreType : ICertificateStoreType + { + public ICertificateStore CreateStore() + { + return new TestCertStore(); + } + + public bool SupportsStorePath(string storePath) + { + return storePath != null && storePath.StartsWith(TestCertStore.StoreTypePrefix); + } + } + + internal sealed class TestCertStore : ICertificateStore + { + public const string StoreTypePrefix = "testStoreType:"; + + public TestCertStore() + { + s_instancesCreated++; + m_innerStore = new DirectoryCertificateStore(true); + } + + /// + public void Dispose() + { + m_innerStore.Dispose(); + } + + /// + public void Open(string location, bool noPrivateKeys) + { + if (location == null) + { + throw new ArgumentNullException(nameof(location)); + } + if (!location.StartsWith(StoreTypePrefix, StringComparison.Ordinal)) + { + throw new ArgumentException($"Expected argument {nameof(location)} starting with {StoreTypePrefix}"); + } + m_innerStore.Open(location.Substring(StoreTypePrefix.Length), noPrivateKeys); + } + + /// + public void Close() + { + m_innerStore.Close(); + } + + /// + public string StoreType => StoreTypePrefix.Substring(0, StoreTypePrefix.Length - 1); + + /// + public string StorePath => m_innerStore.StorePath; + + /// + public Task Add(X509Certificate2 certificate, string password = null) + { + return m_innerStore.Add(certificate, password); + } + + /// + public Task Delete(string thumbprint) + { + return m_innerStore.Delete(thumbprint); + } + + /// + public Task Enumerate() + { + return m_innerStore.Enumerate(); + } + + /// + public Task FindByThumbprint(string thumbprint) + { + return m_innerStore.FindByThumbprint(thumbprint); + } + + /// + public bool SupportsCRLs + => m_innerStore.SupportsCRLs; + + /// + public Task AddCRL(X509CRL crl) + => m_innerStore.AddCRL(crl); + + /// + public Task DeleteCRL(X509CRL crl) + => m_innerStore.DeleteCRL(crl); + + /// + public Task EnumerateCRLs() + => m_innerStore.EnumerateCRLs(); + + /// + public Task EnumerateCRLs(X509Certificate2 issuer, bool validateUpdateTime = true) + => m_innerStore.EnumerateCRLs(issuer, validateUpdateTime); + + /// + public Task IsRevoked(X509Certificate2 issuer, X509Certificate2 certificate) + => m_innerStore.IsRevoked(issuer, certificate); + + /// + public bool SupportsLoadPrivateKey => m_innerStore.SupportsLoadPrivateKey; + + /// + public Task LoadPrivateKey(string thumbprint, string subjectName, string password) + => m_innerStore.LoadPrivateKey(thumbprint, subjectName, password); + + public static int InstancesCreated => s_instancesCreated; + + #region Private Members + private static int s_instancesCreated = 0; + private readonly DirectoryCertificateStore m_innerStore; + #endregion + } +} From 1dfda2bf3bcc9f3082dd3f75a921988acf9e925a Mon Sep 17 00:00:00 2001 From: Martin Regen Date: Tue, 27 Jun 2023 09:53:23 +0200 Subject: [PATCH 5/5] Make client NodeCache thread safe (#2201) -Add a readwritelockslim to NodeCache functions which access the underlying NodeTable and TypeTree, to support multi threading --- .../Alarms/AlarmNodeManager.cs | 2 +- Libraries/Opc.Ua.Client/NodeCache.cs | 392 +++++++++++++++--- Tests/Opc.Ua.Client.Tests/NodeCacheTest.cs | 188 ++++++++- 3 files changed, 515 insertions(+), 67 deletions(-) diff --git a/Applications/Quickstarts.Servers/Alarms/AlarmNodeManager.cs b/Applications/Quickstarts.Servers/Alarms/AlarmNodeManager.cs index 7673aa6e9..9c0b29494 100644 --- a/Applications/Quickstarts.Servers/Alarms/AlarmNodeManager.cs +++ b/Applications/Quickstarts.Servers/Alarms/AlarmNodeManager.cs @@ -343,7 +343,7 @@ private void DoSimulation(object state) if (m_success > 0) { m_missed++; - Utils.LogInfo("Alarms: Missed Loop {1} Success {2}", m_missed, m_success); + Utils.LogInfo("Alarms: Missed Loop {0} Success {1}", m_missed, m_success); } } } diff --git a/Libraries/Opc.Ua.Client/NodeCache.cs b/Libraries/Opc.Ua.Client/NodeCache.cs index 7a9d08cf6..2f57f4491 100644 --- a/Libraries/Opc.Ua.Client/NodeCache.cs +++ b/Libraries/Opc.Ua.Client/NodeCache.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; +using System.Threading; namespace Opc.Ua.Client { @@ -51,6 +52,18 @@ public NodeCache(ISession session) m_typeTree = new TypeTable(m_session.NamespaceUris); m_nodes = new NodeTable(m_session.NamespaceUris, m_session.ServerUris, m_typeTree); m_uaTypesLoaded = false; + m_cacheLock = new ReaderWriterLockSlim(); + } + + /// + /// Destructor to clean up. + /// + ~NodeCache() + { + if (m_cacheLock != null) + { + m_cacheLock.Dispose(); + } } #endregion @@ -79,8 +92,18 @@ public INode Find(ExpandedNodeId nodeId) return null; } - // check if node alredy exists. - INode node = m_nodes.Find(nodeId); + INode node; + try + { + m_cacheLock.EnterReadLock(); + + // check if node alredy exists. + node = m_nodes.Find(nodeId); + } + finally + { + m_cacheLock.ExitReadLock(); + } if (node != null) { @@ -120,8 +143,18 @@ public IList Find(IList nodeIds) int ii; for (ii = 0; ii < count; ii++) { - // check if node already exists. - INode node = m_nodes.Find(nodeIds[ii]); + INode node; + try + { + m_cacheLock.EnterReadLock(); + + // check if node already exists. + node = m_nodes.Find(nodeIds[ii]); + } + finally + { + m_cacheLock.ExitReadLock(); + } // do not return temporary nodes created after a Browse(). if (node != null && @@ -149,7 +182,7 @@ public IList Find(IList nodeIds) } catch (Exception e) { - Utils.LogError("Could not fetch nodes from server: Reason='{1}'.", e.Message); + Utils.LogError("Could not fetch nodes from server: Reason='{0}'.", e.Message); // m_nodes[nodeId] = null; return nodes; } @@ -185,14 +218,24 @@ public INode Find( { // find the source. Node source = Find(sourceId) as Node; - if (source == null) { return null; } - // find all references. - IList references = source.ReferenceTable.Find(referenceTypeId, isInverse, includeSubtypes, m_typeTree); + IList references; + try + { + m_cacheLock.EnterReadLock(); + + // find all references. + references = source.ReferenceTable.Find(referenceTypeId, isInverse, includeSubtypes, m_typeTree); + } + finally + { + m_cacheLock.ExitReadLock(); + } + foreach (IReference reference in references) { @@ -230,8 +273,19 @@ public IList Find( return hits; } - // find all references. - IList references = source.ReferenceTable.Find(referenceTypeId, isInverse, includeSubtypes, m_typeTree); + IList references; + try + { + m_cacheLock.EnterReadLock(); + + // find all references. + references = source.ReferenceTable.Find(referenceTypeId, isInverse, includeSubtypes, m_typeTree); + } + finally + { + m_cacheLock.ExitReadLock(); + } + foreach (IReference reference in references) { @@ -260,7 +314,16 @@ public bool IsKnown(ExpandedNodeId typeId) return false; } - return m_typeTree.IsKnown(typeId); + try + { + m_cacheLock.EnterReadLock(); + + return m_typeTree.IsKnown(typeId); + } + finally + { + m_cacheLock.ExitReadLock(); + } } /// @@ -273,7 +336,16 @@ public bool IsKnown(NodeId typeId) return false; } - return m_typeTree.IsKnown(typeId); + try + { + m_cacheLock.EnterReadLock(); + + return m_typeTree.IsKnown(typeId); + } + finally + { + m_cacheLock.ExitReadLock(); + } } /// @@ -286,7 +358,17 @@ public NodeId FindSuperType(ExpandedNodeId typeId) return null; } - return m_typeTree.FindSuperType(typeId); + try + { + m_cacheLock.EnterReadLock(); + + return m_typeTree.FindSuperType(typeId); + } + finally + { + m_cacheLock.ExitReadLock(); + } + } /// @@ -299,7 +381,17 @@ public NodeId FindSuperType(NodeId typeId) return null; } - return m_typeTree.FindSuperType(typeId); + try + { + m_cacheLock.EnterReadLock(); + + return m_typeTree.FindSuperType(typeId); + } + finally + { + m_cacheLock.ExitReadLock(); + } + } /// @@ -313,8 +405,19 @@ public IList FindSubTypes(ExpandedNodeId typeId) } List subtypes = new List(); + IList references; + try + { + m_cacheLock.EnterReadLock(); + + references = type.References.Find(ReferenceTypeIds.HasSubtype, false, true, m_typeTree); + } + finally + { + m_cacheLock.ExitReadLock(); + } - foreach (IReference reference in type.References.Find(ReferenceTypeIds.HasSubtype, false, true, m_typeTree)) + foreach (IReference reference in references) { if (!reference.TargetId.IsAbsolute) { @@ -344,7 +447,17 @@ public bool IsTypeOf(ExpandedNodeId subTypeId, ExpandedNodeId superTypeId) while (supertype != null) { - ExpandedNodeId currentId = supertype.References.FindTarget(ReferenceTypeIds.HasSubtype, true, true, m_typeTree, 0); + ExpandedNodeId currentId; + try + { + m_cacheLock.EnterReadLock(); + + currentId = supertype.References.FindTarget(ReferenceTypeIds.HasSubtype, true, true, m_typeTree, 0); + } + finally + { + m_cacheLock.ExitReadLock(); + } if (currentId == superTypeId) { @@ -376,7 +489,17 @@ public bool IsTypeOf(NodeId subTypeId, NodeId superTypeId) while (supertype != null) { - ExpandedNodeId currentId = supertype.References.FindTarget(ReferenceTypeIds.HasSubtype, true, true, m_typeTree, 0); + ExpandedNodeId currentId; + try + { + m_cacheLock.EnterReadLock(); + + currentId = supertype.References.FindTarget(ReferenceTypeIds.HasSubtype, true, true, m_typeTree, 0); + } + finally + { + m_cacheLock.ExitReadLock(); + } if (currentId == superTypeId) { @@ -392,13 +515,31 @@ public bool IsTypeOf(NodeId subTypeId, NodeId superTypeId) /// public QualifiedName FindReferenceTypeName(NodeId referenceTypeId) { - return m_typeTree.FindReferenceTypeName(referenceTypeId); + try + { + m_cacheLock.EnterReadLock(); + + return m_typeTree.FindReferenceTypeName(referenceTypeId); + } + finally + { + m_cacheLock.ExitReadLock(); + } } /// public NodeId FindReferenceType(QualifiedName browseName) { - return m_typeTree.FindReferenceType(browseName); + try + { + m_cacheLock.EnterReadLock(); + + return m_typeTree.FindReferenceType(browseName); + } + finally + { + m_cacheLock.ExitReadLock(); + } } /// @@ -411,7 +552,19 @@ public bool IsEncodingOf(ExpandedNodeId encodingId, ExpandedNodeId datatypeId) return false; } - foreach (IReference reference in encoding.References.Find(ReferenceTypeIds.HasEncoding, true, true, m_typeTree)) + IList references; + try + { + m_cacheLock.EnterReadLock(); + + references = encoding.References.Find(ReferenceTypeIds.HasEncoding, true, true, m_typeTree); + } + finally + { + m_cacheLock.ExitReadLock(); + } + + foreach (IReference reference in references) { if (reference.TargetId == datatypeId) { @@ -446,8 +599,20 @@ public bool IsEncodingFor(NodeId expectedTypeId, ExtensionObject value) return false; } + IList references; + try + { + m_cacheLock.EnterReadLock(); + + references = encoding.References.Find(ReferenceTypeIds.HasEncoding, true, true, m_typeTree); + } + finally + { + m_cacheLock.ExitReadLock(); + } + // find data type. - foreach (IReference reference in encoding.References.Find(ReferenceTypeIds.HasEncoding, true, true, m_typeTree)) + foreach (IReference reference in references) { if (reference.TargetId == expectedTypeId) { @@ -529,7 +694,17 @@ public NodeId FindDataTypeId(ExpandedNodeId encodingId) return NodeId.Null; } - IList references = encoding.References.Find(ReferenceTypeIds.HasEncoding, true, true, m_typeTree); + IList references; + try + { + m_cacheLock.EnterReadLock(); + + references = encoding.References.Find(ReferenceTypeIds.HasEncoding, true, true, m_typeTree); + } + finally + { + m_cacheLock.ExitReadLock(); + } if (references.Count > 0) { @@ -549,7 +724,17 @@ public NodeId FindDataTypeId(NodeId encodingId) return NodeId.Null; } - IList references = encoding.References.Find(ReferenceTypeIds.HasEncoding, true, true, m_typeTree); + IList references; + try + { + m_cacheLock.EnterReadLock(); + + references = encoding.References.Find(ReferenceTypeIds.HasEncoding, true, true, m_typeTree); + } + finally + { + m_cacheLock.ExitReadLock(); + } if (references.Count > 0) { @@ -573,16 +758,25 @@ public void LoadUaDefinedTypes(ISystemContext context) var assembly = typeof(ArgumentCollection).GetTypeInfo().Assembly; predefinedNodes.LoadFromBinaryResource(context, "Opc.Ua.Stack.Generated.Opc.Ua.PredefinedNodes.uanodes", assembly, true); - for (int ii = 0; ii < predefinedNodes.Count; ii++) + try { - BaseTypeState type = predefinedNodes[ii] as BaseTypeState; + m_cacheLock.EnterWriteLock(); - if (type == null) + for (int ii = 0; ii < predefinedNodes.Count; ii++) { - continue; - } + BaseTypeState type = predefinedNodes[ii] as BaseTypeState; + + if (type == null) + { + continue; + } - type.Export(context, m_nodes); + type.Export(context, m_nodes); + } + } + finally + { + m_cacheLock.ExitWriteLock(); } m_uaTypesLoaded = true; } @@ -591,7 +785,16 @@ public void LoadUaDefinedTypes(ISystemContext context) public void Clear() { m_uaTypesLoaded = false; - m_nodes.Clear(); + try + { + m_cacheLock.EnterWriteLock(); + + m_nodes.Clear(); + } + finally + { + m_cacheLock.ExitWriteLock(); + } } /// @@ -612,23 +815,33 @@ public Node FetchNode(ExpandedNodeId nodeId) // fetch references from server. ReferenceDescriptionCollection references = m_session.FetchReferences(localId); - foreach (ReferenceDescription reference in references) + try { - // create a placeholder for the node if it does not already exist. - if (!m_nodes.Exists(reference.NodeId)) + m_cacheLock.EnterUpgradeableReadLock(); + + foreach (ReferenceDescription reference in references) { - // transform absolute identifiers. - if (reference.NodeId != null && reference.NodeId.IsAbsolute) + // create a placeholder for the node if it does not already exist. + if (!m_nodes.Exists(reference.NodeId)) { - reference.NodeId = ExpandedNodeId.ToNodeId(reference.NodeId, NamespaceUris); + // transform absolute identifiers. + if (reference.NodeId != null && reference.NodeId.IsAbsolute) + { + reference.NodeId = ExpandedNodeId.ToNodeId(reference.NodeId, NamespaceUris); + } + + Node target = new Node(reference); + + InternalWriteLockedAttach(target); } - Node target = new Node(reference); - m_nodes.Attach(target); + // add the reference. + source.ReferenceTable.Add(reference.ReferenceTypeId, !reference.IsForward, reference.NodeId); } - - // add the reference. - source.ReferenceTable.Add(reference.ReferenceTypeId, !reference.IsForward, reference.NodeId); + } + finally + { + m_cacheLock.ExitUpgradeableReadLock(); } } catch (Exception e) @@ -636,8 +849,7 @@ public Node FetchNode(ExpandedNodeId nodeId) Utils.LogError("Could not fetch references for valid node with NodeId = {0}. Error = {1}", nodeId, e.Message); } - // add to cache. - m_nodes.Attach(source); + InternalWriteLockedAttach(source); return source; } @@ -658,6 +870,7 @@ public IList FetchNodes(IList nodeIds) m_session.ReadNodes(localIds, out IList sourceNodes, out IList readErrors); m_session.FetchReferences(localIds, out IList referenceCollectionList, out IList fetchErrors); + int ii = 0; for (ii = 0; ii < count; ii++) { @@ -673,17 +886,27 @@ public IList FetchNodes(IList nodeIds) foreach (ReferenceDescription reference in references) { - // create a placeholder for the node if it does not already exist. - if (!m_nodes.Exists(reference.NodeId)) + try { - // transform absolute identifiers. - if (reference.NodeId != null && reference.NodeId.IsAbsolute) + m_cacheLock.EnterUpgradeableReadLock(); + + // create a placeholder for the node if it does not already exist. + if (!m_nodes.Exists(reference.NodeId)) { - reference.NodeId = ExpandedNodeId.ToNodeId(reference.NodeId, NamespaceUris); - } + // transform absolute identifiers. + if (reference.NodeId != null && reference.NodeId.IsAbsolute) + { + reference.NodeId = ExpandedNodeId.ToNodeId(reference.NodeId, NamespaceUris); + } - Node target = new Node(reference); - m_nodes.Attach(target); + Node target = new Node(reference); + + InternalWriteLockedAttach(target); + } + } + finally + { + m_cacheLock.ExitUpgradeableReadLock(); } // add the reference. @@ -691,8 +914,7 @@ public IList FetchNodes(IList nodeIds) } } - // add to cache. - m_nodes.Attach(sourceNodes[ii]); + InternalWriteLockedAttach(sourceNodes[ii]); } return sourceNodes; @@ -743,11 +965,17 @@ public IList FindReferences( return targets; } - IList references = source.ReferenceTable.Find( - referenceTypeId, - isInverse, - includeSubtypes, - m_typeTree); + IList references; + try + { + m_cacheLock.EnterReadLock(); + + references = source.ReferenceTable.Find(referenceTypeId, isInverse, includeSubtypes, m_typeTree); + } + finally + { + m_cacheLock.ExitReadLock(); + } var targetIds = new ExpandedNodeIdCollection( references.Select(reference => reference.TargetId)); @@ -787,11 +1015,17 @@ public IList FindReferences( foreach (var referenceTypeId in referenceTypeIds) { - IList references = node.ReferenceTable.Find( - referenceTypeId, - isInverse, - includeSubtypes, - m_typeTree); + IList references; + try + { + m_cacheLock.EnterReadLock(); + + references = node.ReferenceTable.Find(referenceTypeId, isInverse, includeSubtypes, m_typeTree); + } + finally + { + m_cacheLock.ExitReadLock(); + } targetIds.AddRange( references.Select(reference => reference.TargetId)); @@ -832,7 +1066,19 @@ public string GetDisplayText(INode node) // use the modelling rule to determine which parent to follow. NodeId modellingRule = target.ModellingRule; - foreach (IReference reference in target.ReferenceTable.Find(ReferenceTypeIds.Aggregates, true, true, m_typeTree)) + IList references; + try + { + m_cacheLock.EnterReadLock(); + + references = target.ReferenceTable.Find(ReferenceTypeIds.Aggregates, true, true, m_typeTree); + } + finally + { + m_cacheLock.ExitReadLock(); + } + + foreach (IReference reference in references) { Node parent = Find(reference.TargetId) as Node; @@ -908,7 +1154,25 @@ public NodeId BuildBrowsePath(ILocalNode node, IList browsePath) } #endregion + #region Private Methods + private void InternalWriteLockedAttach(ILocalNode node) + { + try + { + m_cacheLock.EnterWriteLock(); + + // add to cache. + m_nodes.Attach(node); + } + finally + { + m_cacheLock.ExitWriteLock(); + } + } + #endregion + #region Private Fields + private ReaderWriterLockSlim m_cacheLock = new ReaderWriterLockSlim(); private ISession m_session; private TypeTable m_typeTree; private NodeTable m_nodes; diff --git a/Tests/Opc.Ua.Client.Tests/NodeCacheTest.cs b/Tests/Opc.Ua.Client.Tests/NodeCacheTest.cs index 9a5be8385..021e29132 100644 --- a/Tests/Opc.Ua.Client.Tests/NodeCacheTest.cs +++ b/Tests/Opc.Ua.Client.Tests/NodeCacheTest.cs @@ -48,6 +48,8 @@ namespace Opc.Ua.Client.Tests [DisassemblyDiagnoser] public class NodeCacheTest : ClientTestFramework { + private const int kTestSetSize = 100; + public NodeCacheTest(string uriScheme = Utils.UriSchemeOpcTcp) : base(uriScheme) { @@ -182,7 +184,7 @@ public void NodeCache_BrowseAllVariables() /// /// Browse all variables in the objects folder. /// - [Test, Order(100)] + [Test, Order(200)] public void NodeCache_BrowseAllVariables_MultipleNodes() { var result = new List(); @@ -346,7 +348,8 @@ public void FetchTypeTree() [Test, Order(910)] public void FetchAllReferenceTypes() { - var bindingFlags = BindingFlags.Instance | + var bindingFlags = + BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public; var fieldValues = typeof(ReferenceTypeIds) @@ -355,6 +358,187 @@ public void FetchAllReferenceTypes() Session.FetchTypeTree(new ExpandedNodeIdCollection(fieldValues)); } + + /// + /// Test concurrent access of FetchNodes. + /// + [Test, Order(1000)] + public void NodeCacheFetchNodesConcurrent() + { + if (ReferenceDescriptions == null) + { + BrowseFullAddressSpace(); + } + + Random random = new Random(62541); + var testSet = ReferenceDescriptions.OrderBy(o => random.Next()).Take(kTestSetSize).Select(r => r.NodeId).ToList(); + var taskList = new List(); + + // test concurrent access of FetchNodes + for (int i = 0; i < 10; i++) + { + Task t = Task.Run( + () => { + IList nodeCollection = Session.NodeCache.FetchNodes(testSet); + } + ); + taskList.Add(t); + } + Task.WaitAll(taskList.ToArray()); + } + + /// + /// Test concurrent access of Find. + /// + [Test, Order(1100)] + public void NodeCacheFindNodesConcurrent() + { + if (ReferenceDescriptions == null) + { + BrowseFullAddressSpace(); + } + + Random random = new Random(62541); + var testSet = ReferenceDescriptions.OrderBy(o => random.Next()).Take(kTestSetSize).Select(r => r.NodeId).ToList(); + var taskList = new List(); + + // test concurrent access of FetchNodes + for (int i = 0; i < 10; i++) + { + Task t = Task.Run(() => { + IList nodeCollection = Session.NodeCache.Find(testSet); + }); + taskList.Add(t); + } + Task.WaitAll(taskList.ToArray()); + } + + /// + /// Test concurrent access of FindReferences. + /// + [Test, Order(1200)] + public void NodeCacheFindReferencesConcurrent() + { + if (ReferenceDescriptions == null) + { + BrowseFullAddressSpace(); + } + + Random random = new Random(62541); + var testSet = ReferenceDescriptions.OrderBy(o => random.Next()).Take(kTestSetSize).Select(r => r.NodeId).ToList(); + var taskList = new List(); + var refTypeIds = new List() { ReferenceTypeIds.HierarchicalReferences }; + FetchAllReferenceTypes(); + + // test concurrent access of FetchNodes + for (int i = 0; i < 10; i++) + { + Task t = Task.Run(() => { + IList nodeCollection = Session.NodeCache.FindReferences(testSet, refTypeIds, false, true); + }); + taskList.Add(t); + } + Task.WaitAll(taskList.ToArray()); + } + + /// + /// Test concurrent access of many methods in INodecache interface + /// + [Test, Order(1300)] + public void NodeCacheTestAllMethodsConcurrently() + { + const int testCases = 10; + const int testCaseRunTime = 5_000; + + if (ReferenceDescriptions == null) + { + BrowseFullAddressSpace(); + } + + Random random = new Random(62541); + var testSet1 = ReferenceDescriptions.OrderBy(o => random.Next()).Take(kTestSetSize).Select(r => r.NodeId).ToList(); + var testSet2 = ReferenceDescriptions.OrderBy(o => random.Next()).Take(kTestSetSize).Select(r => r.NodeId).ToList(); + var testSet3 = ReferenceDescriptions.OrderBy(o => random.Next()).Take(kTestSetSize).Select(r => r.NodeId).ToList(); + var taskList = new List(); + var refTypeIds = new List() { ReferenceTypeIds.HierarchicalReferences }; + + // test concurrent access of many methods in INodecache interface + for (int i = 0; i < testCases; i++) + { + int iteration = i; + Task t = Task.Run(() => { + DateTime start = DateTime.UtcNow; + do + { + switch (iteration) + { + case 0: + FetchAllReferenceTypes(); + IList result = Session.NodeCache.FindReferences(testSet1, refTypeIds, false, true); + break; + case 1: + IList result1 = Session.NodeCache.Find(testSet2); + break; + case 2: + IList result2 = Session.NodeCache.FetchNodes(testSet3); + string displayText = Session.NodeCache.GetDisplayText(result2[0]); + break; + case 3: + IList result3 = Session.NodeCache.FindReferences(testSet1[0], refTypeIds[0], false, true); + break; + case 4: + INode result4 = Session.NodeCache.Find(testSet2[0]); + Assert.NotNull(result4); + Assert.True(result4 is VariableNode); + break; + case 5: + Node result5 = Session.NodeCache.FetchNode(testSet3[0]); + Assert.NotNull(result5); + Assert.True(result5 is VariableNode); + Session.NodeCache.FetchSuperTypes(result5.NodeId); + break; + case 6: + string text = Session.NodeCache.GetDisplayText(testSet2[0]); + Assert.NotNull(text); + break; + case 7: + NodeId number = new NodeId((int)BuiltInType.Number); + bool isKnown = Session.NodeCache.IsKnown(new ExpandedNodeId((int)BuiltInType.Int64)); + Assert.True(isKnown); + bool isKnown2 = Session.NodeCache.IsKnown(TestData.DataTypeIds.ScalarValueDataType); + Assert.True(isKnown2); + NodeId nodeId = Session.NodeCache.FindSuperType(TestData.DataTypeIds.Vector); + Assert.AreEqual(DataTypeIds.Structure, nodeId); + NodeId nodeId2 = Session.NodeCache.FindSuperType(ExpandedNodeId.ToNodeId(TestData.DataTypeIds.Vector, Session.NamespaceUris)); + Assert.AreEqual(DataTypeIds.Structure, nodeId2); + IList subTypes = Session.NodeCache.FindSubTypes(new ExpandedNodeId((int)BuiltInType.Number)); + bool isTypeOf = Session.NodeCache.IsTypeOf(new ExpandedNodeId((int)BuiltInType.Int32), new ExpandedNodeId((int)BuiltInType.Number)); + bool isTypeOf2 = Session.NodeCache.IsTypeOf(new NodeId((int)BuiltInType.UInt32), number); + break; + case 8: + bool isEncodingOf = Session.NodeCache.IsEncodingOf(new ExpandedNodeId((int)BuiltInType.Int32), DataTypeIds.Structure); + Assert.False(isEncodingOf); + bool isEncodingFor = Session.NodeCache.IsEncodingFor(DataTypeIds.Structure, + new TestData.ScalarValueDataType()); + Assert.True(isEncodingFor); + bool isEncodingFor2 = Session.NodeCache.IsEncodingFor(new NodeId((int)BuiltInType.UInt32), new NodeId((int)BuiltInType.UInteger)); + Assert.False(isEncodingFor2); + break; + case 9: + NodeId findDataTypeId = Session.NodeCache.FindDataTypeId(new ExpandedNodeId((int)Objects.DataTypeAttributes_Encoding_DefaultBinary)); + NodeId findDataTypeId2 = Session.NodeCache.FindDataTypeId((int)Objects.DataTypeAttributes_Encoding_DefaultBinary); + break; + default: + Assert.Fail("Invalid test case"); + break; + } + } while ((DateTime.UtcNow - start).TotalMilliseconds < testCaseRunTime); + + }); + taskList.Add(t); + } + Task.WaitAll(taskList.ToArray()); + } #endregion #region Benchmarks