From 986bb9552e23345713461849481e9db4e109920d Mon Sep 17 00:00:00 2001 From: b3hr4d Date: Fri, 16 Feb 2024 14:13:20 +0300 Subject: [PATCH] Add typedoc plugins and remove unused code --- .../_ic_reactor_store.ActorManager.html | 43 +++- .../_ic_reactor_store.AgentManager.html | 43 +++- .../classes/_ic_reactor_store.AuthClient.html | 43 +++- .../_ic_reactor_store.CandidManager.html | 43 +++- docs/classes/_ic_reactor_store.HttpAgent.html | 43 +++- docs/classes/_ic_reactor_store.Principal.html | 43 +++- .../_ic_reactor_visitor.VisitDetails.html | 43 +++- .../_ic_reactor_visitor.VisitFields.html | 43 +++- .../_ic_reactor_visitor.VisitRandomArgs.html | 43 +++- ...c_reactor_visitor.VisitRandomResponse.html | 43 +++- .../_ic_reactor_visitor.VisitTransform.html | 43 +++- ...c_reactor_visitor.VisitTransformTable.html | 43 +++- .../_ic_reactor_store.createActorManager.html | 50 ++++- .../_ic_reactor_store.createAgentManager.html | 60 +++++- .../_ic_reactor_store.createReActorStore.html | 47 ++++- ...store.createStoreWithOptionalDevtools.html | 41 +++- .../_ic_reactor_store.generateActorHash.html | 41 +++- .../_ic_reactor_store.generateHash.html | 41 +++- ..._ic_reactor_store.generateRequestHash.html | 41 +++- .../_ic_reactor_store.jsonToString.html | 41 +++- .../_ic_reactor_store.stringToHash.html | 41 +++- ...reactor_visitor.convertStringToNumber.html | 41 +++- ...ic_reactor_visitor.extractAndSortArgs.html | 41 +++- .../_ic_reactor_visitor.isImage.html | 41 +++- .../_ic_reactor_visitor.isQuery.html | 41 +++- docs/functions/_ic_reactor_visitor.isUrl.html | 41 +++- .../_ic_reactor_visitor.validateError.html | 41 +++- ...c_reactor_visitor.validateNumberError.html | 41 +++- docs/hierarchy.html | 41 +++- docs/ic-reactor.png | Bin 0 -> 125268 bytes docs/index.html | 43 +++- ..._ic_reactor_store.ActorManagerOptions.html | 43 +++- .../_ic_reactor_store.ActorMethod.html | 43 +++- .../_ic_reactor_store.ActorMethodState.html | 41 +++- .../_ic_reactor_store.AgentAuthState.html | 43 +++- ..._ic_reactor_store.AgentManagerOptions.html | 45 +++- ...ic_reactor_store.CreateReActorOptions.html | 47 ++++- .../_ic_reactor_store.DefaultActorType.html | 41 +++- .../_ic_reactor_store.HttpAgentOptions.html | 43 +++- .../_ic_reactor_store.Identity.html | 43 +++- .../_ic_reactor_store.UpdateAgentOptions.html | 45 +++- .../_ic_reactor_visitor.DefaultField.html | 43 +++- .../_ic_reactor_visitor.DynamicDataArgs.html | 43 +++- ...actor_visitor.ExtractedServiceDetails.html | 43 +++- ...eactor_visitor.ExtractedServiceFields.html | 43 +++- .../_ic_reactor_visitor.FieldDetails.html | 43 +++- ...reactor_visitor.FieldDetailsWithChild.html | 43 +++- .../_ic_reactor_visitor.InputDetails.html | 43 +++- .../_ic_reactor_visitor.InputField.html | 43 +++- .../_ic_reactor_visitor.MethodFields.html | 43 +++- .../_ic_reactor_visitor.NumberField.html | 43 +++- .../_ic_reactor_visitor.OptionalFields.html | 43 +++- .../_ic_reactor_visitor.PrincipalField.html | 43 +++- .../_ic_reactor_visitor.RecordFields.html | 43 +++- .../_ic_reactor_visitor.RecursiveFields.html | 43 +++- .../_ic_reactor_visitor.ResultArrayData.html | 43 +++- .../_ic_reactor_visitor.ResultRecordData.html | 43 +++- .../_ic_reactor_visitor.TupleFields.html | 43 +++- .../_ic_reactor_visitor.VariantFields.html | 43 +++- .../_ic_reactor_visitor.VectorFields.html | 43 +++- docs/modules/_ic_reactor_core.html | 43 +++- docs/modules/_ic_reactor_react.html | 43 +++- docs/modules/_ic_reactor_store.html | 81 +++++-- docs/modules/_ic_reactor_svelte.html | 43 +++- docs/modules/_ic_reactor_visitor.html | 43 +++- .../_ic_reactor_store.ActorMethodStates.html | 41 +++- docs/types/_ic_reactor_store.ActorState.html | 41 +++- docs/types/_ic_reactor_store.ActorStore.html | 41 +++- .../_ic_reactor_store.ActorSubclass.html | 43 +++- .../_ic_reactor_store.AgentAuthStore.html | 41 +++- .../_ic_reactor_store.CallActorMethod.html | 41 +++- docs/types/_ic_reactor_store.CanisterId.html | 41 +++- ..._reactor_store.ExtractActorMethodArgs.html | 41 +++- ...or_store.ExtractActorMethodReturnType.html | 41 +++- .../_ic_reactor_store.ExtractVisitorType.html | 41 +++- .../_ic_reactor_store.ExtractedService.html | 41 +++- .../types/_ic_reactor_store.FunctionName.html | 41 +++- .../types/_ic_reactor_store.FunctionType.html | 41 +++- .../_ic_reactor_visitor.AllFieldTypes.html | 41 +++- .../_ic_reactor_visitor.AllNumberTypes.html | 41 +++- .../_ic_reactor_visitor.DynamicFieldType.html | 41 +++- ...actor_visitor.DynamicFieldTypeByClass.html | 41 +++- ..._reactor_visitor.ExtraInputFormFields.html | 41 +++- ..._reactor_visitor.FieldTypeFromIDLType.html | 41 +++- .../_ic_reactor_visitor.FunctionCategory.html | 41 +++- ...c_reactor_visitor.MethodDefaultValues.html | 41 +++- .../_ic_reactor_visitor.MethodDetails.html | 41 +++- .../_ic_reactor_visitor.MethodResult.html | 41 +++- ..._ic_reactor_visitor.MethodResultValue.html | 41 +++- .../_ic_reactor_visitor.OtherDetails.html | 41 +++- ..._reactor_visitor.ServiceDefaultValues.html | 41 +++- .../_ic_reactor_visitor.ServiceDetails.html | 41 +++- .../_ic_reactor_visitor.ServiceFields.html | 41 +++- ..._ic_reactor_store.IC_HOST_NETWORK_URI.html | 41 +++- ..._reactor_store.LOCAL_HOST_NETWORK_URI.html | 41 +++- ic-reactor.png | Bin 0 -> 125268 bytes package.json | 2 + packages/react/src/index.ts | 62 ++---- packages/react/src/types.ts | 32 +-- packages/store/README.md | 95 +++++---- packages/store/example/candid/candid.did | 169 --------------- packages/store/example/candid/candid.did.d.ts | 186 ---------------- packages/store/example/candid/candid.did.js | 199 ------------------ packages/store/example/candid/index.d.ts | 50 ----- packages/store/example/candid/index.js | 39 ---- packages/store/example/index.ts | 24 --- packages/store/src/index.ts | 65 +----- react.svg | 5 + typedoc.json | 20 +- yarn.lock | 20 ++ 110 files changed, 3977 insertions(+), 1017 deletions(-) create mode 100644 docs/ic-reactor.png create mode 100644 ic-reactor.png delete mode 100644 packages/store/example/candid/candid.did delete mode 100644 packages/store/example/candid/candid.did.d.ts delete mode 100644 packages/store/example/candid/candid.did.js delete mode 100644 packages/store/example/candid/index.d.ts delete mode 100644 packages/store/example/candid/index.js delete mode 100644 packages/store/example/index.ts create mode 100644 react.svg diff --git a/docs/classes/_ic_reactor_store.ActorManager.html b/docs/classes/_ic_reactor_store.ActorManager.html index ee06342a67..a4ec8725df 100644 --- a/docs/classes/_ic_reactor_store.ActorManager.html +++ b/docs/classes/_ic_reactor_store.ActorManager.html @@ -1,4 +1,5 @@ -ActorManager | IC ReActor

Type Parameters

Constructors

constructor +ActorManager | IC ReActor +

Type Parameters

Constructors

Properties

DEFAULT_ACTOR_STATE: ActorState<A> = ...
actor: null | A = null
actorStore: ActorStore<A>
agentManager: AgentManager
canisterId: CanisterId
idlFactory: InterfaceFactory
unsubscribeAgent: (() => void) = ...

Type declaration

    • (): void
    • Returns void

visitFunction: ExtractedService<A>

Methods

Generated using TypeDoc

\ No newline at end of file +

Constructors

Properties

DEFAULT_ACTOR_STATE: ActorState<A> = ...
actor: null | A = null
actorStore: ActorStore<A>
agentManager: AgentManager
canisterId: CanisterId
idlFactory: InterfaceFactory
unsubscribeAgent: (() => void) = ...

Type declaration

    • (): void
    • Returns void

visitFunction: ExtractedService<A>

Methods

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/classes/_ic_reactor_store.AgentManager.html b/docs/classes/_ic_reactor_store.AgentManager.html index fbe852b7e0..4f5af2789a 100644 --- a/docs/classes/_ic_reactor_store.AgentManager.html +++ b/docs/classes/_ic_reactor_store.AgentManager.html @@ -1,4 +1,5 @@ -AgentManager | IC ReActor

Constructors

constructor +AgentManager | IC ReActor +

Constructors

Properties

DEFAULT_AUTH_STATE: AgentAuthState = ...
agent: HttpAgent
authStore: AgentAuthStore
isLocalEnv: boolean
subscribers: ((agent) => void)[] = []

Type declaration

    • (agent): void
    • Parameters

      Returns void

Methods

Generated using TypeDoc

\ No newline at end of file +

Constructors

Properties

DEFAULT_AUTH_STATE: AgentAuthState = ...
agent: HttpAgent
authStore: AgentAuthStore
isLocalEnv: boolean
subscribers: ((agent) => void)[] = []

Type declaration

    • (agent): void
    • Parameters

      Returns void

Methods

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/classes/_ic_reactor_store.AuthClient.html b/docs/classes/_ic_reactor_store.AuthClient.html index 62ef42a94a..379cad61d9 100644 --- a/docs/classes/_ic_reactor_store.AuthClient.html +++ b/docs/classes/_ic_reactor_store.AuthClient.html @@ -1,4 +1,5 @@ -AuthClient | IC ReActor

Tool to manage authentication and identity

+AuthClient | IC ReActor +

Tool to manage authentication and identity

Constructors

Properties

_chain @@ -54,4 +55,42 @@

See

Example

const authClient = await AuthClient.create({
idleOptions: {
disableIdle: true
}
})
-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/classes/_ic_reactor_store.CandidManager.html b/docs/classes/_ic_reactor_store.CandidManager.html index fa1b5e1f5a..216392cd51 100644 --- a/docs/classes/_ic_reactor_store.CandidManager.html +++ b/docs/classes/_ic_reactor_store.CandidManager.html @@ -1,7 +1,46 @@ -CandidManager | IC ReActor

Constructors

constructor +CandidManager | IC ReActor +

Constructors

Properties

agent: HttpAgent
didjsId: string

Methods

Generated using TypeDoc

\ No newline at end of file +

Constructors

Properties

agent: HttpAgent
didjsId: string

Methods

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/classes/_ic_reactor_store.HttpAgent.html b/docs/classes/_ic_reactor_store.HttpAgent.html index 9eb11bb2f6..71842fc6b8 100644 --- a/docs/classes/_ic_reactor_store.HttpAgent.html +++ b/docs/classes/_ic_reactor_store.HttpAgent.html @@ -1,4 +1,5 @@ -HttpAgent | IC ReActor

Implements

  • Agent

Constructors

constructor +HttpAgent | IC ReActor +

Implements

  • Agent

Constructors

Properties

Constructors

Properties

#private: any
_callOptions?: any
_credentials: any
_fetch: any
_fetchOptions?: any
_host: any
_identity: any
_isAgent: true = true
_requestAndRetry: any
_retryTimes: any
_rootKeyFetched: any
_timeDiffMsecs: any
rootKey: ArrayBuffer

Methods

  • Parameters

    • request: HttpAgentRequest

    Returns Promise<HttpAgentRequest>

  • Parameters

    • type: "query" | "update"
    • fn: HttpAgentRequestTransformFn
    • Optional priority: number

    Returns void

  • Parameters

    Returns Promise<SubmitResponse>

  • Parameters

    Returns Promise<any>

  • Parameters

    Returns Promise<undefined | SubnetStatus>

  • Returns Promise<Principal>

  • Returns void

  • Returns boolean

  • Parameters

    Returns Promise<ApiQueryResponse>

  • Parameters

    Returns Promise<ReadStateResponse>

  • Parameters

    Returns void

  • Returns Promise<JsonObject>

  • Allows agent to sync its time with the network. Can be called during intialization or mid-lifecycle if the device's clock has drifted away from the network time. This is necessary to set the Expiry for a request

    Parameters

    • Optional canisterId: Principal

      Pass a canister ID if you need to sync the time with a particular replica. Uses the management canister by default

      -

    Returns Promise<void>

Generated using TypeDoc

\ No newline at end of file +

Returns Promise<void>

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/classes/_ic_reactor_store.Principal.html b/docs/classes/_ic_reactor_store.Principal.html index 4018492669..97fdeccf4d 100644 --- a/docs/classes/_ic_reactor_store.Principal.html +++ b/docs/classes/_ic_reactor_store.Principal.html @@ -1,4 +1,5 @@ -Principal | IC ReActor

Constructors

constructor +Principal | IC ReActor +

Constructors

Properties

Methods

compareTo @@ -30,4 +31,42 @@

Returns JsonnablePrincipal

a JSON object with a single key, JSON_KEY_PRINCIPAL, whose value is the principal as a string

  • Returns string

  • Returns string

  • Returns Uint8Array

  • Returns Principal

  • Parameters

    • other: unknown

    Returns Principal

  • Parameters

    • hex: string

    Returns Principal

  • Parameters

    • text: string

    Returns Principal

  • Utility method, returning the principal representing the management canister, decoded from the hex string 'aaaaa-aa'

    Returns Principal

    principal of the management canister

    -
  • Parameters

    Returns Principal

Generated using TypeDoc

\ No newline at end of file +
  • Parameters

    Returns Principal

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/classes/_ic_reactor_visitor.VisitDetails.html b/docs/classes/_ic_reactor_visitor.VisitDetails.html index 00d7621f1b..d685d9ce28 100644 --- a/docs/classes/_ic_reactor_visitor.VisitDetails.html +++ b/docs/classes/_ic_reactor_visitor.VisitDetails.html @@ -1,4 +1,5 @@ -VisitDetails | IC ReActor

Type Parameters

Hierarchy

Constructors

constructor +VisitDetails | IC ReActor +

Type Parameters

Hierarchy

Constructors

Properties

counter visitFixedInt visitFixedNat @@ -31,4 +32,42 @@ | MethodDetails<A> | FieldDetailsWithChild | FieldDetails ->.constructor

Properties

counter: number = 0
visitFixedInt: (<T>(t, __label) => InputDetails) = ...

Type declaration

visitFixedNat: (<T>(t, __label) => InputDetails) = ...

Type declaration

visitFloat: (<T>(t, __label) => InputDetails) = ...

Type declaration

visitInt: (<T>(t, __label) => InputDetails) = ...

Type declaration

visitNat: (<T>(t, __label) => InputDetails) = ...

Type declaration

visitedRecursive: Record<string, true> = {}

Methods

Generated using TypeDoc

\ No newline at end of file +>.constructor

Properties

counter: number = 0
visitFixedInt: (<T>(t, __label) => InputDetails) = ...

Type declaration

visitFixedNat: (<T>(t, __label) => InputDetails) = ...

Type declaration

visitFloat: (<T>(t, __label) => InputDetails) = ...

Type declaration

visitInt: (<T>(t, __label) => InputDetails) = ...

Type declaration

visitNat: (<T>(t, __label) => InputDetails) = ...

Type declaration

visitedRecursive: Record<string, true> = {}

Methods

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/classes/_ic_reactor_visitor.VisitFields.html b/docs/classes/_ic_reactor_visitor.VisitFields.html index c4fe2958ee..12b7c597e5 100644 --- a/docs/classes/_ic_reactor_visitor.VisitFields.html +++ b/docs/classes/_ic_reactor_visitor.VisitFields.html @@ -1,4 +1,5 @@ -VisitFields | IC ReActor

Type Parameters

Hierarchy

Constructors

constructor +VisitFields | IC ReActor +

Type Parameters

Hierarchy

Constructors

Methods

visitBool visitConstruct visitEmpty @@ -25,4 +26,42 @@

Constructors

Methods

Generated using TypeDoc

\ No newline at end of file +>.constructor

Methods

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/classes/_ic_reactor_visitor.VisitRandomArgs.html b/docs/classes/_ic_reactor_visitor.VisitRandomArgs.html index f05e2f6d16..9ed3c8d0df 100644 --- a/docs/classes/_ic_reactor_visitor.VisitRandomArgs.html +++ b/docs/classes/_ic_reactor_visitor.VisitRandomArgs.html @@ -1,4 +1,5 @@ -VisitRandomArgs | IC ReActor

Type Parameters

Hierarchy

  • Visitor<any, any>
    • VisitRandomArgs

Constructors

constructor +VisitRandomArgs | IC ReActor +

Type Parameters

Hierarchy

  • Visitor<any, any>
    • VisitRandomArgs

Constructors

Properties

Methods

Constructors

Properties

savedRec: Record<string, any> = {}

Methods

  • Type Parameters

    • T

    Parameters

    • t: ConstructType<T>
    • data: any

    Returns any

  • Parameters

    • t: EmptyClass
    • data: any

    Returns any

  • Type Parameters

    • T

    Parameters

    • t: PrimitiveType<T>
    • data: any

    Returns any

  • Type Parameters

    • T

    Parameters

    • _t: OptClass<T>
    • type: Type<any>
    • isRecursive: boolean

    Returns any

  • Type Parameters

    • T

    Parameters

    • t: PrimitiveType<T>
    • data: any

    Returns any

  • Parameters

    • _t: RecordClass
    • fields: [string, Type<any>][]
    • isRecursive: boolean

    Returns any

  • Parameters

    • t: ReservedClass
    • data: any

    Returns any

  • Parameters

    • t: ServiceClass
    • data: any

    Returns any

  • Type Parameters

    • T extends any[]

    Parameters

    • _t: TupleClass<T>
    • components: Type<any>[]
    • isRecursive: boolean

    Returns any

  • Type Parameters

    • T

    Parameters

    • t: Type<T>
    • data: any

    Returns any

  • Parameters

    • _t: VariantClass
    • fields: [string, Type<any>][]
    • isRecursive: boolean

    Returns any

  • Type Parameters

    • T

    Parameters

    • _t: VecClass<T>
    • type: Type<any>
    • isRecursive: boolean

    Returns any

Generated using TypeDoc

\ No newline at end of file +

Constructors

Properties

savedRec: Record<string, any> = {}

Methods

  • Type Parameters

    • T

    Parameters

    • t: ConstructType<T>
    • data: any

    Returns any

  • Parameters

    • t: EmptyClass
    • data: any

    Returns any

  • Type Parameters

    • T

    Parameters

    • t: PrimitiveType<T>
    • data: any

    Returns any

  • Type Parameters

    • T

    Parameters

    • _t: OptClass<T>
    • type: Type<any>
    • isRecursive: boolean

    Returns any

  • Type Parameters

    • T

    Parameters

    • t: PrimitiveType<T>
    • data: any

    Returns any

  • Parameters

    • _t: RecordClass
    • fields: [string, Type<any>][]
    • isRecursive: boolean

    Returns any

  • Parameters

    • t: ReservedClass
    • data: any

    Returns any

  • Parameters

    • t: ServiceClass
    • data: any

    Returns any

  • Type Parameters

    • T extends any[]

    Parameters

    • _t: TupleClass<T>
    • components: Type<any>[]
    • isRecursive: boolean

    Returns any

  • Type Parameters

    • T

    Parameters

    • t: Type<T>
    • data: any

    Returns any

  • Parameters

    • _t: VariantClass
    • fields: [string, Type<any>][]
    • isRecursive: boolean

    Returns any

  • Type Parameters

    • T

    Parameters

    • _t: VecClass<T>
    • type: Type<any>
    • isRecursive: boolean

    Returns any

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/classes/_ic_reactor_visitor.VisitRandomResponse.html b/docs/classes/_ic_reactor_visitor.VisitRandomResponse.html index 70ae0e54d8..61c03d7e4f 100644 --- a/docs/classes/_ic_reactor_visitor.VisitRandomResponse.html +++ b/docs/classes/_ic_reactor_visitor.VisitRandomResponse.html @@ -1,4 +1,5 @@ -VisitRandomResponse | IC ReActor

Type Parameters

Hierarchy

Constructors

constructor +VisitRandomResponse | IC ReActor +

Type Parameters

Hierarchy

Constructors

Properties

Methods

Constructors

Properties

savedRec: Record<string, any> = {}

Methods

  • Type Parameters

    • T

    Parameters

    • t: ConstructType<T>
    • data: any

    Returns any

  • Parameters

    • t: EmptyClass
    • data: any

    Returns any

  • Type Parameters

    • T

    Parameters

    • t: PrimitiveType<T>
    • data: any

    Returns any

  • Type Parameters

    • T

    Parameters

    • t: PrimitiveType<T>
    • data: any

    Returns any

  • Parameters

    • _t: RecordClass
    • fields: [string, Type<any>][]
    • isRecursive: boolean

    Returns any

  • Parameters

    • t: ReservedClass
    • data: any

    Returns any

  • Parameters

    • t: ServiceClass
    • data: any

    Returns any

  • Type Parameters

    • T extends any[]

    Parameters

    • _t: TupleClass<T>
    • components: Type<any>[]
    • isRecursive: boolean

    Returns any

  • Parameters

    • _t: VariantClass
    • fields: [string, Type<any>][]
    • isRecursive: boolean

    Returns any

Generated using TypeDoc

\ No newline at end of file +

Constructors

Properties

savedRec: Record<string, any> = {}

Methods

  • Type Parameters

    • T

    Parameters

    • t: ConstructType<T>
    • data: any

    Returns any

  • Parameters

    • t: EmptyClass
    • data: any

    Returns any

  • Type Parameters

    • T

    Parameters

    • t: PrimitiveType<T>
    • data: any

    Returns any

  • Type Parameters

    • T

    Parameters

    • t: PrimitiveType<T>
    • data: any

    Returns any

  • Parameters

    • _t: RecordClass
    • fields: [string, Type<any>][]
    • isRecursive: boolean

    Returns any

  • Parameters

    • t: ReservedClass
    • data: any

    Returns any

  • Parameters

    • t: ServiceClass
    • data: any

    Returns any

  • Type Parameters

    • T extends any[]

    Parameters

    • _t: TupleClass<T>
    • components: Type<any>[]
    • isRecursive: boolean

    Returns any

  • Parameters

    • _t: VariantClass
    • fields: [string, Type<any>][]
    • isRecursive: boolean

    Returns any

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/classes/_ic_reactor_visitor.VisitTransform.html b/docs/classes/_ic_reactor_visitor.VisitTransform.html index 9d47cd961d..4988895e5e 100644 --- a/docs/classes/_ic_reactor_visitor.VisitTransform.html +++ b/docs/classes/_ic_reactor_visitor.VisitTransform.html @@ -1,4 +1,5 @@ -VisitTransform | IC ReActor

Type Parameters

Hierarchy

Constructors

constructor +VisitTransform | IC ReActor +

Type Parameters

Hierarchy

Constructors

Methods

  • Type Parameters

    • T

    Parameters

    Returns MethodResult<A, M>

  • Type Parameters

    • T

    Parameters

    Returns MethodResult<A, M>

  • Parameters

    Returns MethodResult<A, M>

  • Parameters

    Returns MethodResult<A, M>

Generated using TypeDoc

\ No newline at end of file +

Constructors

Methods

  • Type Parameters

    • T

    Parameters

    Returns MethodResult<A, M>

  • Type Parameters

    • T

    Parameters

    Returns MethodResult<A, M>

  • Parameters

    Returns MethodResult<A, M>

  • Parameters

    Returns MethodResult<A, M>

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/classes/_ic_reactor_visitor.VisitTransformTable.html b/docs/classes/_ic_reactor_visitor.VisitTransformTable.html index 07b6017f56..860e0287d6 100644 --- a/docs/classes/_ic_reactor_visitor.VisitTransformTable.html +++ b/docs/classes/_ic_reactor_visitor.VisitTransformTable.html @@ -1,4 +1,5 @@ -VisitTransformTable | IC ReActor

Type Parameters

Hierarchy

  • Visitor<DynamicDataArgs, MethodResult<A, M>>
    • VisitTransformTable

Constructors

constructor +VisitTransformTable | IC ReActor +

Type Parameters

Hierarchy

  • Visitor<DynamicDataArgs, MethodResult<A, M>>
    • VisitTransformTable

Constructors

Methods

  • Type Parameters

    • T

    Parameters

    • t: ConstructType<T>
    • data: DynamicDataArgs<any>

    Returns MethodResult<A, M>

  • Parameters

    • t: EmptyClass
    • data: DynamicDataArgs<any>

    Returns MethodResult<A, M>

  • Parameters

    • t: NullClass
    • data: DynamicDataArgs<any>

    Returns MethodResult<A, M>

  • Type Parameters

    • T

    Parameters

    • t: PrimitiveType<T>
    • data: DynamicDataArgs<any>

    Returns MethodResult<A, M>

  • Parameters

    • _t: RecordClass
    • fields: [string, Type<any>][]
    • __namedParameters: DynamicDataArgs<Record<string, unknown>>

    Returns MethodResult<A, M>

  • Parameters

    • t: ReservedClass
    • data: DynamicDataArgs<any>

    Returns MethodResult<A, M>

  • Parameters

    • t: ServiceClass
    • data: DynamicDataArgs<any>

    Returns MethodResult<A, M>

  • Type Parameters

    • T extends any[]

    Parameters

    • _t: TupleClass<T>
    • components: Type<any>[]
    • __namedParameters: DynamicDataArgs<T>

    Returns MethodResult<A, M>

  • Parameters

    • t: VariantClass
    • fields: [string, Type<any>][]
    • __namedParameters: DynamicDataArgs<Record<string, unknown>>

    Returns MethodResult<A, M>

Generated using TypeDoc

\ No newline at end of file +

Constructors

Methods

  • Type Parameters

    • T

    Parameters

    • t: ConstructType<T>
    • data: DynamicDataArgs<any>

    Returns MethodResult<A, M>

  • Parameters

    • t: EmptyClass
    • data: DynamicDataArgs<any>

    Returns MethodResult<A, M>

  • Parameters

    • t: NullClass
    • data: DynamicDataArgs<any>

    Returns MethodResult<A, M>

  • Type Parameters

    • T

    Parameters

    • t: PrimitiveType<T>
    • data: DynamicDataArgs<any>

    Returns MethodResult<A, M>

  • Parameters

    • _t: RecordClass
    • fields: [string, Type<any>][]
    • __namedParameters: DynamicDataArgs<Record<string, unknown>>

    Returns MethodResult<A, M>

  • Parameters

    • t: ReservedClass
    • data: DynamicDataArgs<any>

    Returns MethodResult<A, M>

  • Parameters

    • t: ServiceClass
    • data: DynamicDataArgs<any>

    Returns MethodResult<A, M>

  • Type Parameters

    • T extends any[]

    Parameters

    • _t: TupleClass<T>
    • components: Type<any>[]
    • __namedParameters: DynamicDataArgs<T>

    Returns MethodResult<A, M>

  • Parameters

    • t: VariantClass
    • fields: [string, Type<any>][]
    • __namedParameters: DynamicDataArgs<Record<string, unknown>>

    Returns MethodResult<A, M>

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/functions/_ic_reactor_store.createActorManager.html b/docs/functions/_ic_reactor_store.createActorManager.html index 188f0c1b67..14df35fdd2 100644 --- a/docs/functions/_ic_reactor_store.createActorManager.html +++ b/docs/functions/_ic_reactor_store.createActorManager.html @@ -1,6 +1,46 @@ -createActorManager | IC ReActor
  • Create an actor manager

    -

    Type Parameters

    Parameters

    Returns ActorManager<A>

    ActorManager - The actor manager

    -
    import { createActorManager } from "@ic-reactor/store"
    import { candid, canisterId, idlFactory } from "./candid"

    type Candid = typeof candid

    const actorManager = createActorManager<Candid>({
    idlFactory,
    canisterId,
    })

    const version = actorManager.callMethod("version") +createActorManager | IC ReActor +
    • Create an actor manager

      +

      Example


      // actor.ts
      import { createActorManager } from "@ic-reactor/store"
      import { candid, canisterId, idlFactory } from "./candid"
      import { agentManager } from "./agent"

      type Candid = typeof candid

      const actorManager = createActorManager<Candid>({
      agentManager,
      canisterId,
      idlFactory,
      })

      // later in your code
      const data = await actorManager.callMethod("version")
      -

    Generated using TypeDoc

    \ No newline at end of file +

Type Parameters

Parameters

Returns ActorManager<A>

+

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/functions/_ic_reactor_store.createAgentManager.html b/docs/functions/_ic_reactor_store.createAgentManager.html index b3ed5a0737..dd3c167653 100644 --- a/docs/functions/_ic_reactor_store.createAgentManager.html +++ b/docs/functions/_ic_reactor_store.createAgentManager.html @@ -1,8 +1,56 @@ -createAgentManager | IC ReActor
  • Create an agent manager

    -

    Parameters

    Returns AgentManager

    AgentManager - The agent manager

    -

    IC

    import { createAgentManager } from "@ic-reactor/store"

    const agentManager = createAgentManager() // connect to the default ic network

    const identity = await agentManager.authenticate() +createAgentManager | IC ReActor +
    • Create an agent manager

      +

      Example


      // agent.ts
      import { createAgentManager } from "@ic-reactor/store"

      export const agentManager = createAgentManager() // connect to the default ic network

      // later in your code
      const identity = await agentManager.authenticate()
      -

      Local

      import { createAgentManager } from "@ic-reactor/store"

      const agentManager = createAgentManager({
      isLocalEnv: true,
      port: 8000, // default port is 4943
      })
      // or you can use the host option directly
      const agentManager = createAgentManager({ host: "http://localhost:8000" })

      const identity = await agentManager.authenticate() +
        +
      • Local Agent
      • +
      +
      // agent.ts
      import { createAgentManager } from "@ic-reactor/store"

      export const agentManager = createAgentManager({
      isLocalEnv: true,
      port: 8000, // default port is 4943
      })
      -

    Generated using TypeDoc

    \ No newline at end of file +
      +
    • Or you can use the host option directly
    • +
    +
    export const agentManager = createAgentManager({
    host: "http://localhost:8000",
    }) +
    +

    Parameters

    Returns AgentManager

      +
    • The agent manager
    • +
    +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/functions/_ic_reactor_store.createReActorStore.html b/docs/functions/_ic_reactor_store.createReActorStore.html index 049bf780a9..4bf83c5def 100644 --- a/docs/functions/_ic_reactor_store.createReActorStore.html +++ b/docs/functions/_ic_reactor_store.createReActorStore.html @@ -1,8 +1,47 @@ -createReActorStore | IC ReActor
  • Create a ReActor store.

    +createReActorStore | IC ReActor +
    • Create a ReActor store.

      +

      Example


      import { createReActorStore } from "@ic-reactor/store"
      import { candid, canisterId, idlFactory } from "./candid"

      type Candid = typeof candid

      const { callMethod, agentManager } = createReActorStore<Candid>({
      canisterId,
      idlFactory,
      })

      // later in your code
      const identity = await agentManager.authenticate()
      const data = await callMethod("version") +

      Type Parameters

      Parameters

      Returns ActorManager<A>

      • The actor manager.
      -
      import { createReActorStore } from "@ic-reactor/store";
      import { candid, canisterId, idlFactory } from "./candid";

      type Candid = typeof candid;

      const { callMethod } = createReActorStore<Candid>({
      canisterId,
      idlFactory,
      });

      const data = await callMethod("version"); -
      -

    Generated using TypeDoc

    \ No newline at end of file +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/functions/_ic_reactor_store.createStoreWithOptionalDevtools.html b/docs/functions/_ic_reactor_store.createStoreWithOptionalDevtools.html index 91e0096abb..96b5e57126 100644 --- a/docs/functions/_ic_reactor_store.createStoreWithOptionalDevtools.html +++ b/docs/functions/_ic_reactor_store.createStoreWithOptionalDevtools.html @@ -1 +1,40 @@ -createStoreWithOptionalDevtools | IC ReActor

Function createStoreWithOptionalDevtools

  • Parameters

    • initialState: any
    • options: StoreOptions

    Returns WithDevtools<StoreApi<any>>

Generated using TypeDoc

\ No newline at end of file +createStoreWithOptionalDevtools | IC ReActor +

Function createStoreWithOptionalDevtools

  • Parameters

    • initialState: any
    • options: StoreOptions

    Returns WithDevtools<StoreApi<any>>

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/functions/_ic_reactor_store.generateActorHash.html b/docs/functions/_ic_reactor_store.generateActorHash.html index 26eed4df1d..46833138f0 100644 --- a/docs/functions/_ic_reactor_store.generateActorHash.html +++ b/docs/functions/_ic_reactor_store.generateActorHash.html @@ -1 +1,40 @@ -generateActorHash | IC ReActor

Generated using TypeDoc

\ No newline at end of file +generateActorHash | IC ReActor +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/functions/_ic_reactor_store.generateHash.html b/docs/functions/_ic_reactor_store.generateHash.html index 326e4a944d..0d00339884 100644 --- a/docs/functions/_ic_reactor_store.generateHash.html +++ b/docs/functions/_ic_reactor_store.generateHash.html @@ -1 +1,40 @@ -generateHash | IC ReActor

Generated using TypeDoc

\ No newline at end of file +generateHash | IC ReActor +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/functions/_ic_reactor_store.generateRequestHash.html b/docs/functions/_ic_reactor_store.generateRequestHash.html index 21c18dff19..d082290591 100644 --- a/docs/functions/_ic_reactor_store.generateRequestHash.html +++ b/docs/functions/_ic_reactor_store.generateRequestHash.html @@ -1 +1,40 @@ -generateRequestHash | IC ReActor

Generated using TypeDoc

\ No newline at end of file +generateRequestHash | IC ReActor +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/functions/_ic_reactor_store.jsonToString.html b/docs/functions/_ic_reactor_store.jsonToString.html index 67cc67e8d4..eafc01cf02 100644 --- a/docs/functions/_ic_reactor_store.jsonToString.html +++ b/docs/functions/_ic_reactor_store.jsonToString.html @@ -1 +1,40 @@ -jsonToString | IC ReActor

Generated using TypeDoc

\ No newline at end of file +jsonToString | IC ReActor +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/functions/_ic_reactor_store.stringToHash.html b/docs/functions/_ic_reactor_store.stringToHash.html index 7d6ad36a1d..87a8f46820 100644 --- a/docs/functions/_ic_reactor_store.stringToHash.html +++ b/docs/functions/_ic_reactor_store.stringToHash.html @@ -1 +1,40 @@ -stringToHash | IC ReActor

Generated using TypeDoc

\ No newline at end of file +stringToHash | IC ReActor +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/functions/_ic_reactor_visitor.convertStringToNumber.html b/docs/functions/_ic_reactor_visitor.convertStringToNumber.html index 5ec642e595..c4c4a3790b 100644 --- a/docs/functions/_ic_reactor_visitor.convertStringToNumber.html +++ b/docs/functions/_ic_reactor_visitor.convertStringToNumber.html @@ -1 +1,40 @@ -convertStringToNumber | IC ReActor

Generated using TypeDoc

\ No newline at end of file +convertStringToNumber | IC ReActor +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/functions/_ic_reactor_visitor.extractAndSortArgs.html b/docs/functions/_ic_reactor_visitor.extractAndSortArgs.html index 849f0d7cf6..6fe2a03132 100644 --- a/docs/functions/_ic_reactor_visitor.extractAndSortArgs.html +++ b/docs/functions/_ic_reactor_visitor.extractAndSortArgs.html @@ -1 +1,40 @@ -extractAndSortArgs | IC ReActor

Generated using TypeDoc

\ No newline at end of file +extractAndSortArgs | IC ReActor +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/functions/_ic_reactor_visitor.isImage.html b/docs/functions/_ic_reactor_visitor.isImage.html index 6129412c94..757ea461fb 100644 --- a/docs/functions/_ic_reactor_visitor.isImage.html +++ b/docs/functions/_ic_reactor_visitor.isImage.html @@ -1 +1,40 @@ -isImage | IC ReActor

Generated using TypeDoc

\ No newline at end of file +isImage | IC ReActor +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/functions/_ic_reactor_visitor.isQuery.html b/docs/functions/_ic_reactor_visitor.isQuery.html index 5f404b9d5e..9fd9baccdb 100644 --- a/docs/functions/_ic_reactor_visitor.isQuery.html +++ b/docs/functions/_ic_reactor_visitor.isQuery.html @@ -1 +1,40 @@ -isQuery | IC ReActor

Generated using TypeDoc

\ No newline at end of file +isQuery | IC ReActor +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/functions/_ic_reactor_visitor.isUrl.html b/docs/functions/_ic_reactor_visitor.isUrl.html index f7a63d3689..33d870e597 100644 --- a/docs/functions/_ic_reactor_visitor.isUrl.html +++ b/docs/functions/_ic_reactor_visitor.isUrl.html @@ -1 +1,40 @@ -isUrl | IC ReActor

Generated using TypeDoc

\ No newline at end of file +isUrl | IC ReActor +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/functions/_ic_reactor_visitor.validateError.html b/docs/functions/_ic_reactor_visitor.validateError.html index 5f1ff5b467..e825cd3ccd 100644 --- a/docs/functions/_ic_reactor_visitor.validateError.html +++ b/docs/functions/_ic_reactor_visitor.validateError.html @@ -1 +1,40 @@ -validateError | IC ReActor
  • Parameters

    • t: Type<any>

    Returns ((value) => string | true)

      • (value): string | true
      • Parameters

        • value: any

        Returns string | true

Generated using TypeDoc

\ No newline at end of file +validateError | IC ReActor +
  • Parameters

    • t: Type<any>

    Returns ((value) => string | true)

      • (value): string | true
      • Parameters

        • value: any

        Returns string | true

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/functions/_ic_reactor_visitor.validateNumberError.html b/docs/functions/_ic_reactor_visitor.validateNumberError.html index 73e2abc951..eb1496cce5 100644 --- a/docs/functions/_ic_reactor_visitor.validateNumberError.html +++ b/docs/functions/_ic_reactor_visitor.validateNumberError.html @@ -1 +1,40 @@ -validateNumberError | IC ReActor
  • Parameters

    • t: Type<any>

    Returns ((value) => string | true)

      • (value): string | true
      • Parameters

        • value: string

        Returns string | true

Generated using TypeDoc

\ No newline at end of file +validateNumberError | IC ReActor +
  • Parameters

    • t: Type<any>

    Returns ((value) => string | true)

      • (value): string | true
      • Parameters

        • value: string

        Returns string | true

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 01776ba03d..3a80adca14 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -1 +1,40 @@ -IC ReActor

Generated using TypeDoc

\ No newline at end of file +IC ReActor +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/ic-reactor.png b/docs/ic-reactor.png new file mode 100644 index 0000000000000000000000000000000000000000..e48f4a20f20faf6df9e27c91f4d4c631688ec48b GIT binary patch literal 125268 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

F=^DSZ=!ayr^VJz9q3Hs|uoD?&&X6cVMG?~N znE$8FpPAhTN}!9`fL2^IJJQ{OV$MQ0(|+bNqdVm9!<$x(n~QQIcC90JXPNot!|=#& z{D+Q+e;fAl*MAN0tG~Lm;{Tp|0N($8fY-ea;Gh3gnuw@x8Hm*d3X{!N~?T{7bl%AoJZ}j$}v}%I*7mo>&bqe#{ z23O3&Y{&WmcEkWMV)n-JwCCS32_q*?Qu*0MoHd_Xr^P9=iq5^Mi`0J7_3vnHYt2sMi zJN*u0#-F+9W;UR@jSAeYw4dhM+))*?dg%Iqco&cJ&<|1J2o?IrB+E=QmcjNqr*5AhZc@GHVO z?_xX;hBt^?EC`}3;M-n%6VYKR>%EO4k>TiyBa5C+v~~ z#bU#MhBfxT3TljOF*nVWw3uBOP9ELuK_x>Xq!ER3OY8>X`v~Nn1tF?N=F??C=%RYK z42=DVgS8$-xOeDhVazAu!O0*PAQ;RN3__0!^l}lvk4#LV({RXggwB!=mH}pQ4^bKn zr2~p|Ep&)Q8vwSGQMqH{MTZ`S=l=cSVmIjQ5;=Jsfw$p{=1TpT*Cdm9Jn-lJ=#auqYQ;#B~hc7n}Aw5*`1`&IL*wfF~crXyd z3g-KVhB@QUT)1pNT>$Y$s0pTZZF^TZixFTu{64blKQG$z zZ#%x;bQ8edy#OzI5p*1zspr>z&1Dj@MuzRwYd!r{A?5vy-KYKg0p9#(fLFg7V0_#e zJ)Op8E84vqV8;%3?iRz}e)BZ^=-)kxrci~#wvfZ&y9(Vl#|=4jX2PeiG= z%claBZZVRXfI?$K@EGm5^p76c4Cjb3;lj)j}(V-irwQw;~UCeqZkbfA0LFF zPjTD?fUxdeEn|Am*pETho4w8`1Yt3c*Gukx*Lr|HTtozw#1KFdi@G|jpV|NY>!AZI z+5niDX(ZlK8~StkpMKH*!VqL1A8kl7fdW=|<%z1AO4;GUFGrEPll)*?5Ds>*{V;5U zLIEX14Seo?{~N;~1biO3Na?Kc7lv=K$y3`?T;29(=G%!tbayCSx6ZgA-1EC%d;ieK z4Ys43VL){l+P=uFh52Ua0_M`)aW=1&H3H5X&9CXQC-IzVKKUJZ_?Lfd(c=I4&j*KHh?EPy82!n1xFy_;O_7sHdM(83M{?p3xpZ?;6IWjkg{QZmSQcJ^H)`i)kdFB4N(6sZxWT{tRZKjG zf~Tk$ZytQP(OlT|yjIQq z_RT-~4S4#2yJ0ar_qhPK-s-a3bQ0?c|D|7Y*@J9ojE$KeR_wmp)(;z2^}hE3eCIpR zQU3M62Kci-bLVm~-1+F!@UFjq40y-^6awE*2%i1|(R_nh7W?_7FSk%uvMzx9E#y!! zb=yM4KXd*_z6-n93Sf5pre3xJSSN~kR&}jUmxlke=lpknX{&jk-NP!42iRiak0G3f zQZqRT)c0fd@@!0vWQO9}5C`mn*hq&!!upPP8b|hfhkx;rNn-*04N5}%$B>>N5Rs*! z3;zMX8|D70$Oe!Y;}%iu9wNwHf#74HAM3=(z>6{fih+qlW&xY^=Q(#B4)Zb1?t{V{ z3+*$00>w{)vQZ#*KCz!LF68p{hu$8-`_IeBG6^`F50APFt`jhaQ#`=+D{dS{P8)+fjjw7gslO{#%T&fOEul z4z8mS@YwEgn7-pvuo%{_cWEW}9UQ^EbZ< z9l<_&U;lcSDs(aD(mtg3A3F)Z{*}k!*_?t`DCiKP*fyMs5sHz+K?AtOqDLz=CZOaU z^oqs2DYjht$*(WEb=Vs4c@Eu7FtMVStpJUg#(L-?Ibio%So)Azz%9ayit&bsZef|9 z-^~Lypks4dEHbf?IYh`C24Mu>AidC+=jA$3F`B z&{Eh^X!+o?8;lIG7eyu@TaGyiH-GH#2PQx{D_si%GR@b$3|6Rab zfO`(TW#xj7Y2A!~@BHz{VEV5=35&tzvfsDQ3H455JM>zQza6Dlsm2;fHk;4G4?{<> z;}Y2Z2S4xwuqb}h7yzF-@)XEWAf8wB76VA)_@U&vf@lcvYk{Zv_f0e^+)JiVJk!k# z-f+n$9@qmN!ngKKK$ozs0BiOiAA=rHj!;-~nxhk-wB@3Ae_@hx_>hl?DL`*QhlRwq zAf4lF5dvX^1s;{9ShWbe0Em5T#q8j*2e0hBn6yi0nD!2~EfriqH1G+MrU%zDL4E{c zR-y6!&s<9f8y7i+hD28Zwsl0P5^s!1wuwm7XYt8F78e495c29i|Bic13&2S?8Bq%2 zmP|kpLVNrf@TojS*uHd_AO!!4_>UDl21CF%4{)ag7nZ{vZ(9U9`QF_jG{}wC>rYcO zU&w97ZJ2_A>9(GGi$Fwf`CUNZ0l_F76E;X)YXxz}*`v#5n&Y6%i*AMi<&dw39?(ti ze>v^vxnhlg9H{3hYfpahFX3B%^c#?$S$K+>AO2y0Pkn0fAtP11<~0DDHi2>$>^ZQ< zs?*pJjQ`L7aoLC#ihW+c_Y2>GzdHVO)jWR7m0JR+G(URBVygjylmWiGiNCKPySYXE_O?-$- zd*_y68_f%Fp5rea2+z#uq6cYoxVbJw2x5jH^ur5;Pxmi``(%8fK}Fi4XdZ?-`7A@p zrp2{r`w1t82)7DQGvB5uKhKSBg#l5IvH{_2V>fgG>;3P<3+ro}R_!v^^%m$6&raP7 z$A9k^%{{j8VR7H_4uDUZ#)B8W5S9eniP(00wP7wwHMaAv?Gw=H4%dtwyTKZGZ+|;1 zm>J```>D@;6TUM2tehN0K0p11%MM%LYmPjRPO{j}?Ia83Q)cdl%RceIl8m5m*bUM( z0bRm6G`iiQ+U@WkvyWYQFAW0bSZ$-SmF$JI%a(&7Wu|obLiDlv@SfZ$Lkh-p2+bi9 znST5{N<(>&jRQ=w_P78Kb}NVMoZx-;To)FO+?qg`4spOnM+V$CIPQV7KiInP;}-b) z-){-a9i|hC#V&0&nv3eIxL^Zdq}kle-=F{2U#8I$C;2DGE%~FtVKX3}jabnt;15gd zbnYh2|5;Bx3weryJGW;_jJnGLUxZK*2jNgl`L1<_FdAIsmUq!aA}5#I z0mnc7ewaP+7%UVk{{P4SSbWBqv+>fG0=(xvptRvbA97idmXhZ^58&e;2YBZ@VZr?W z?0pGsEc|obR0TmD?8Z^Y8mAZe8Rg?NPAt10(*NM8t7@T_@H07b0TxVSX^!yl&** zrn<1$>G!qk=3u@2XMAz+^Z#p4dDUM^PV%Cnxu`1FMnLKD|LR}97Po!kzcDI)@CSiE z{KN8rbTB%>vz`S!%jeO&%AQelKjuCsJriK5z2yw`vAJbTvt(mUj8%wIB3hlCFO;Gizoe+x7M7h zU}je}-pe|Y$(`gu)m!N+NLKRGQ_5%vP%0^!Bt;fgP~DH)N;oK!G$12kqKJvaE_xul z=bDTsS|I~=)$0kCctd% z#rN&gwG*#$NUf%$MKzV26Rc~m-x&c}muXA5*40e@lQyxU&Q&rlF(rvkiW}7l?0wJMaLXzx{)D8^cfND|J^vnu9Tuwq^~iD2MZjI|g3b_{goUWjY7&Frb>nyF z?KgZ2qCrRxGop;tN8vFymMcUSL7;i&&7F{c#X&QJ9n@i2(5|8Yz5HkVLFZq$m$Qmg zM$4GAD^~$)td;C+a>UtW9kMOKM+5R5$`{jA+fJ{of^c1ntZIyXZ`H?Z28EP{K~0{d zR)K{8D;CPGjyyB~0Z<-6)H_9fKnxqkWI`HH#5NRzkt-ICWB_blh`OUA{^v6|)6qFXzDH;l zHfo8`&>QTc4}2Zh-7NV4`mjsMZPCf6#(|RpIjFI4Lsy=EkE$#vcN+x|nd7>mYx&RZ zn-_a2?+7^f`R~7?{08i)NK+BNC|SO&hSoSqbBsU|rG{Kay}eUe$+&rjS-S_PFQG*h zl&P8!Ddn-UY5LV(XTU;#tn}0NZ|ibVWNv)-UN!;N{j*gEQVe`_(8>{|NJUA7c=TqW zBT9gZ%HlX?_lIEK@o1e?hgLq5Q{7F~z9d7yAHF|1l(ykmQ$G=N`zWN1S1RlT@#-go zjZ|kZ0wUIiT{cHHL&eCtujmOIRhM{akn|9cDT?%&<^5l2)34QFU5$X!ZS=LbzYc?2zlBi{s{91+@3swVPXzqx zuSPHQfsUh&iXD+R3gKFK;~Ph>{PfK`2DtbG-|$at_2`iZe#!BTdbL93IyVjmn;zRW z`B#MIU|mTn0|o^y#yX;N`496o^Q9q$9wQ-@l8(%(aQOg3>z3rIC{pzpA664RJ>cXb z$v{xgIjMD#Jn5do>EF(Xs4;T$-bW)q;sPmZz_#~tp_cn((XCh&A@e}1e>m;XWejI0 zA?eN;w$~U18CeF@+5phbdfPtm87uo4NiVb0Q<)(k2V_QDa+1X4hdf%~)J=Adl-x67 z@l*@Z)b6?7n=dArt)qH=&OGsUtM;@%T!I57`Kb)4eIzLkKm<$Z;3WMq1B74^0V^LB z{@?kgkG^zWle-Qa@HOZF>s<{fe5cA=#ddUn8KU#i5!S^BCDv;M|pl{pTzj$InM#kJQEv=kbiL1Rlq&&fswH1%eUeWKe1Qpks$dlQ+QjA zfRyYj9?W2nZ-nRHBSZl@Eepz+eZW;W?!Y>sYxz(4fVcuZM#jNE^Iv<)uS)eS58s?f zno|KE5>jQ1p3`#ZMx@?z^Cb)MSMr}qeL_ov%4_{vDtWaKK=J^yeyK_G1dPNRg>?;M zl>|q^AC9Mx`6zKuK5tIW0rJPiekjLvy;Y=!0Je?V6s)xYpkJ<|-}51<=2O{1@)0P( zkHlEdLm37ky&XC`2WfqSy`2IDu|k@XXx#~!=|s`XU;ftp!~|ZpOGwGQ%7n<-TkfOR zk3^ch>DV$^j-lK_wvs$_+b&ib)#!p;Y8Drg2v7OCPyAgw9JHw;8PIw+1zXs3UKif~ z@?yQ>BeDEnXIN_^;JY9EXMFSTF2^Vc9{14X>-5vH;RrX5SG)qa*S&DS;`rl%m%PM3 z6E+UP2)Xjg(epuG@xgE6J*6SQN-vPR?>IRP(}Qvh$iHGEnuE>mx?x>naGlD3LO#`q zjTCz%@a9c17eKw}$o%qTRJU5j;ziG;Fn}^ImJ*<5f2XiqQt!Yhq^Fy4iDvg^c7cWy zbS;@@iW}IxIg3u1O(A4o)ku!O$D?AC0c8_mvs%2@I#F&}d8Bfntqp+iaSoV{> zlf!%DNlJZIzf%WY*U&5rZMc(+EU2T|w?j~)FPeSQgi$>AWd3?1{?UMdN`PQ)89x)! zTXb%e#0FtP_BA;fF14IA8W61xf-^kSs*6zp+Sw=mt{tw6Vb?wA0PEEhtn&VYcc25T zW!cX*SSurd7x&>SfBs4=e(ReU1;6ndzz_fMco5EjBaZ~0|NPRaGJ^vWzy9m-9E=Md z^(f$Z&l~OY_|C!rmt6M^+_uQ|x75?6ZuijNWJdys0ZREi7+6K7*J|25Pkg=iFaJ$YW3%z zd9upvQ{^;-soK77ncstp6*uz%WkZZm0n%4k7{^J-4AG-Mt{Mn~& z@r!&li1dgVL-HTcd2_IJhyu_;v8u*MZBa1oM2|JWmg3G!OQN;c=&`S+0+=8>ci<-~ z9A!eBxHRBG2|!+}QVfdBsBkZ9R)zSGLC&k6$M+(sES$(EYW`UdMjgm*Bd!gQjvF@n zG$9`9o@FBjQoU{8uG8nx60Hn?N9_3L?T6g(6>Q#{ntq8fq^BcAZqxwE&SCY-pI6F0 zAX{(9Lh>g^O*n=a5K`gCeI822({*CyIxUkLND?8N9aqMNgb<>nC>|b#ueupy@tnt) z0R{IUy!;y`h}5UEics zB2rcN4CyYcTB6ls=k{ZdJn!iDe27Jtq=~hZ&qlkN>si$IYBb*@LoRY)eBAr- zIr~eU^C_~Rb_cPm?ju`pvaKWnK;(=!GbUt4?n;u#gpqt5H_r!W|86D;f~)=$mi6BM z^+A=u#@$2#7J0Cy-lfjG|KLl;rAf^wMgT7^;A?MtUDfrsErO=|EpLf>^KnHe33?!v z1%3SEfhRo)V~das9J&RMk`HjpzC~Q}!LMUszzy#P&;Q0%`&kKM6o7Z4BdlcbPd&BAOVvJ>(ie&x(+1XvD0+LRoF9f|-zkGI;Uyydj!Co47p z&N}JUvs=FYt+_*Q_%f;W#hjZf*)L=E8X;gG6(ERi-g(iJ#~kTn7w{sKiG~YXuD}?ftr76;|NMJ=`+a|lQ4n<6B{C9QSHQ4!BCx%Rw1;$lndd$mZ>xBm`!u!yz@4W2@c`DVY#c;SBc8_yht zwZ;V(01tW)CIS~;IC_(?5C!<=9gF%T8hg*bN9eKAWpl7WdFiiFv&E4+qP9gzZmt{0 z`|32H$^`(lW`0CfnlUx$QnHmKK+K8U1IqMsNr;1R{ft8!8%+@h`2srwLcG#dhhieD z?Qg@%xH`e)2=`nW`Ri2cM+kqd8}L%FNwbzLYFiF;#RkCb#~pdzT|WM~q2)x=@ zy}PP+B=a{zgvqxF^N|BM!zTNn%M-k__x`Uxx_V%(g$(GV(unBF``<;=uTgRRIVbGc zpAm4&zq|`~e(|$ti_M#(r+L(}jvImJJ{LIV7)&kheQ)6Be;yNqyW9o%o!^Oh0c~;P zclP03H+?5Ob#9y#&%Z}#4%T55pmd1rTa`m3+*3Pgq$ntvLzmr?4=7Yo0MIqw`%5r| zJ?HWm@f$0(xF9GD8GIbI8kj${s|L#9|f5 ze#8nXoOEfX*Zy~eVh_3i(Rr)Ytd`fxsvdSLMezP(%(0viu(0=Q`1(8Fh}ze6zX%Dn zp_M{xt z93rcUt`@}Sp-U`o-h&?NhQb?I>hmW@&Ep$nq@09Fn-||bGoqB=kvpr@!-+Z%SXJMY z>iZKjz|M(m`;};bjuUeO*rE}Mw5wO&^hXNMgY|c|j5KG#9ZO0CCh~1_Z5?h`0(V8X zwE}~=gZ6$W^K8QfOl)pSkMmQl6BJUOnrG$4m5rDFZis_8BdavpV$N}WxoU67c0y+S zQ3?iVl))ya$K#>`PS2m*`%+F6DH5d#$Zl1x-v4gUVF|l!hb?RxInnH-_>h~! zdSlGJ{~k*j0ek=HtysAED`<;Q&;122z(gW+2Y&RUF?9&X6uSOSB3}IB(eg;Xa{J<; zFZhoyJp~hruA=~pt8k2z_m4Sr1?Fpd`Oo@d^ZEb2r({xlytm(z^8oSb+Cp;75wcOH zz^TX^o3uy?f844t@s4ZYW$OI6FY<8)$8O0IgKf927HJ~>)h;+u-VD0F9WU4F4Y}90 zn)9D)WaQK~c>pW(YYgz@O*enHAyg6PASM`VQm|AA@)lDiqbXctEI26+xj+E&yD;QjZg8vzS@zlv}C%^#yJf?Ojc)Nb91iA0$9o8C0J^KZft zM?@*jB!4Ead);VKpb|e*{@fiCh_0gmCFVwn0-XGgo6hP|{u4@iqsO|Vq-~e6(LmE! zi(}VFy5nQc^PET|TwI`Hri_$X8zT#3L=JG3UXapA;|3}vl1=iIRhtH<*U@f>^?O9I zLS&{3G6q_$?`BHKq%DI;TAQcN5*w(tUc}-YR*01u02Dly%B6?n@s!GeYDxg5v<9*Y zK3a!Ao-JP>Rnu)PD?^WvQ^PIg<+0T+8-e$qQ8f;y8vLBuf@H=aS^ZE?=EE}W`kQPL z;uHYz1%#MY+T@KFq!09lH-7q}J?POHLQep6gSk;;K&M=J)AmjtR1@U=_b?-%{BnQe zU2nwTw(qna9+t-*@TWJ?}tU-1V-&%U*`; zyE=&o^AE>y$RU_`gk$)v-}NW0U`JVavpy>@=TKC@((zT6^5Rf>63&u0^L2VsFl~LGw*+C08M&# z%9}2E#|t?= z5ZE>`E+kY!%(T*XR3*s&`$fb|EH$Z=R*}+3L5-=S)CKwkGlX>!(<0{8jdo z>^;%`hvX0fL8BWf;h0I}Onu|84MK-K0p{A& zuI|eF&kLK+$7CZY#aq*?(CPQt&&E_CRLwc@L`*Ec=X+vO^EBZ_FB`P*5v0qgq8#;6<*GjbmY%1d_UVD;Kou-R6D?7iL-;97C_1dNR$(Pk zfY41HT~t&P^tJyt3VgMZeoEQ1Fb^@j!(F2QX>$T<9(lGTTeB5>@~`uz8@YAEkuuRb zm-kc4->_%`@@k-2Bm&^fk1vPg=0nZnldedq-VLvf0Z`8H)HFM{Hqu-NvV33SGhG$Vc8m`FYJWvq zNP6I0RWnM4NJ<(|LxAQl{p3Y`lF){to1OsW2Y9wDjuhkghXhbKRI^e(#Nj`PkdW9$#cC~aA{$irF{`r7{+g3SvD z?<|SdE#b9z_1Qc5>zvwN5Ik4pAn#F`4QVm~bLuZZiAXD_%SQB^JOu>&Yp3PUh&p8! zO7m+*&CBnNhO~}f?naTbAO-~&Gg#3bYFPu|X(zpUPKmkq{)>6#Pc+%-8$?~d*UyXL zRx@4FF(m0t8qbq+ImGDWk4Xop7%VAf^co0h6%;EMFFTw`OkFRUndfD{+_*eQ*6 z;s7ipJj!gGXs94o>5Yj~)Ua?4cNY>cvp^~fr5#rLr1}=a$CE1d`01%YX zfAaRb*TQ<)*Q|%K;k+h4J2_8^Iy8LMSq%|*AGG7a(Xh!AfgS0u4@fmGt^drfBoTO7 z1Awap;H>J8=3(c{Y`2jDBb%{W4pDw%U3ATghys4{B%Wc?ooL_b7^&tzI9VZ-&!ooG zjm9%cO@A{VWz|^PDU$v)Cvqpp)hU(Fmym2W%RwNTzqGIYKNbi*0lG*AE-%fqmg))6 zd;eQu7A^I>!NYvP1;Ej*GX^FPp)BZ;M`G*|D*gnG{LBod8lmLug%^$#$kvBZD=L{ zk_+Bk{6b+VBi)q$DWQmAm%lR*bUk*v0kkPrLt=14LNJ>4;iiz*609TDSufGm?(OJ7D)%M;*qK8fH%;Dkn7;F^MjIkF*qzLR8RG`k5u9YTFFOq15L(k`9;*1EfP6g#GVCkFi1d4d^Htd$=b+@BMFukQjM3S|Z3|LZzGo1;6kMu_Nuc zA|%GX^rbjpaKsTK8=#>Y&;(_5(XWa;1 z1fKlVi9A<90+X4rB?Oai%9VN9bvPmYX=lUweDc2|tsIUZAekjJ#OA9h)XD>?M5vl! z%0;kE!#oNuMvnk!2ViZ19OEn2HO(IarHBTZXFf`FrIzlKu7fOr_z@keha88cKp z0l;0Kqtw-OpE4~>b?K1@p!b9|D1k$ zZ2oniA(Ym9{Npipc;XX*GtR&Phx^?Rc+6wa7U7ZcqnKc9R1~1=+W#fb*ohuvfvOr1 z(Y0=gBYeptZ0}OdTZ|;wi9TiKLK202nlFh?1lf+90U=|^x-pnQLxi4PqAzE}oY{pF z*aszaj*UsjZb7YlsFem~XLf|&v)B)oHUMa|>4$3WewEfR<<#8*C)L3AI(6TT>%?xk zS&lPXlz_9tRKGim%qZDJlzHbxmY)I)vE-)&2(o11!b-y`xo2(C9Bn4a0T6pK?S@lq zMGXwiKafjn4|a#1 zHb_?Pb06RbegJs%qoXkqNP8f#k9Y)d|N8?+9o7E4hO(cpe)WO*d4y*`xE4o1ki1QF z>$;7I0u+lgo!nb1Fy^m6_xLN&V{A|ovpwNA!x8`J*A>?5jQ~~KBzaF&J*Zk9e-ElY z0EB1=#Njxv(37GG>h311dmk-{_?r?5x0Pk8I;kvg*%5Zu-Ka5Og-Xe}%;65$&C3XX zgtt;?8}FK%#WGm3NA1V9b{Ya+M$@3RQa4F*X>)pIdJQ?z|KD!WYW# z&2_+g-wV9|{iV0}df>L(n)eg7f6jA&2Rr}=EW))IuF0=|z13#-MU(=)9}|iY1vvSt z>fSns4iKXNJd4cjxPG9bcj}ED2F0~hEOMoNFPI%AgX;Dx+E-*Qd8KOPoaEU>#6vp@ zZ_Vh0LoELja8IVFhoeS%wC9kq{7lPOH(q8f1CVA#!ME2Bi5|-b*ewT)JSqW zq$E&$qcqh*!flK|kkjD1s6eO@n|5QK`k0684Gd)aN`{D?MIvX&kp7C10;CW8gO^_a zl6mwPOO%(?W#wnM?uld71F9$=P`v&Rs44OO2Rya>+0tf%K)4Pxt$7_Ue>w2J_W_^$ zWWGF*{--@HdZkY}Wo2IZuuk~VW@>@VhJ@ZQ#=-*d;SU3Ee><>i7x0$-VV6KaMt73}ou~UQ1&-~XtcmCBQZz+BE zN0eSy@+6M5r&nRLPaM9g2N$V~I+uZ1;m1TH$j6cdTjq>xQ|1b1@407-25222WLd81 zecc?W8x3k4=$^%-abq-ZXJ(Lpk3%mnEQ6&bK;TnZKmP;##a~3(kR~FB(xk!YIMDIbr;c>K ze+=@LkHsti2}xM=?VW!ZK*QWu0~Ej!^w)8&UI-2=C=Y zh}jm)DK;rij0BLb$#S5%Jtb3C!mS6Hl5K&ML~KdPkhE|8bZBV5Sw$aCRzdXk`zd%C zPz)|)mZc4;FEOaCDpt&P(T0Gq$NdDaV(NZGXr?W4uT<{%gOjMQav(x51lVIm{v zMC6)&K}&n)wf`lTm%T9|pRsi4P3gyJUT|K0X9RJL=p)LEDBDlE7Hog<=sEo@r@_oL z3pLPP?p)l19%GHJl7ZJ7Q{?>*cpPG5q!r__kBwbedjMOu0B?LFaORoacHRy94g37# zKc4=Mzbi#Zuztc5&=%qBJr)y=sfz;i$-iTbk^zTkJ~@7BN0h&(JH6N3oBPtuj} z{(!~*uf$dUhEhD{jF7t|U#^D>e4?+y85HECKF)KWc)qTt5a&>-YdDq;MMnIzhKr=J5kg7e|a{roz|62lZ%Azn&yUdGd`0&^TGDwnrhimI| zcKVCL+jp$hm;jR?sZl}JsaI!9T9(voG_w_0PGwYt>0II|tUg<-A{7%H#JprRxVq4m z_gDjjWME7%rp)^v#44w?*&ulSPiwVBj~?A2$bgPJ4sG$!^5<|&IHoBI&?oFz2tSg_?*xQj~$sl*qs$)3NPM17w>+=a5?hFk^uT zxs~C5hxZ2An9M`#z!+_c64cSo0KfnzM7BI2QcpU}X>O)gl>11?fzx`i3XgVYPFkU8 zhNYxlA^eU}$I(^Zm3i=0Y!nZg(=zAnw{3j+Q5h1JE1=dwd_Ok%iUx)ph@C>ISDKgp zB$F>y+ZTfmqQ^vF(jQV&_F($n^5^I_8-%*`z2v0FxFTGer?-x2A(#yJ#}r^nq5ysJ z?*yRaVAm#EmeFGI)(SaSa_?xdB<=DNq<;vhNmx#<9Z}SOh?3{qZ4atd{>darDGJb# z8Jza%IkF$!85j+3m$(ymEZGrwsk#NHx@tEzg+j@%xXXz$FTa#6BA9eYYWgdYmQ|~N z)n-w`t;T~H6spoUTS||g*t+sEX}Cu}pcF?SmjKMELjV!TlX;{xW4R*OwyBzqhtoR9 zPOjEPjbkqM5rD}8Ph>LilzIOH9*AYi5I12QJK*-{;W0v2;80I#D$?4gA__3TL`R7a z6!2hhow?NGKU)41;x?uf0g#Q%LC(mVdo_dd#9UBK|6em8NSEdEpW$I;y?jsA^1|f~ zG#LYq>Nhh|ZVG^Kt@~K(hhBye%z~PVG+#l>hsK;;q;9)a zhhRMr@!Ff@Mm|QFzE5>_gqzgHBj0?Cp^*e~m4Dm^XAuA~M#%QTdMdS>u&+Gij0sXh zlhxv=)_?t{FWQ416N7^`4X&8PWZ)?bOSkfshVq{edl-837;A(QsUvi0ek7&@6CDL$ z%zymp$6t*eD9A~JTPrPj963h z;Hz_9mH1K-RBPuKJ_$E&q{WLuV*;zlQ$+w$IzV#rbMp8rk>}V`0ELqi#o@`10qH_4 zy$X<`7o2H>l98ZB2C0cf+IqPfr_k6>yk_)5l1M?H06d8ZUaFI?x@iw4qXgeHCZ&bu zUz^)(&^P~D9TpaVk9{n5^Zm$2fUkZP*t@rCs#7%&JL)LlK@W=O`Fp=Nb^z`%8Xom1 z;N9l=b6%^6x~Uq+!>U6m3>hMJejDjr%!QGC8@AkY{x_ z$F&pvPTablB&_cB{O>5e(GsMrtzz@!U8H@g3!9xsA4qf2-3a02WK^(qrOHDXx`D0} zDYu&^cos{b={7&Bq*fq;r_t29Fk0h^FrBq%qRMYoYB)ovHWSR@Kl8Va{b+5#M z+5>Rj{w#>%@{QpF6R}k^>+!Hf2cn+Hk$gEO{X8@n!E8~6w7;TH0G?D3E-OFBIgB}G zrm)LqiHD;l9^QJ39)a{~zr3>Tf`sKMPl;WAANtVV7-);o5bVMW z(H0?ncq$Blfbwy+Jm~ zcxRtK5PpZ9Q@z3u%tg$e%n#7CZ>5|-iXbG9f3|Oq@1Ap;^nO%Zpn7~sH!}qA%i4!Dh89^S@uB1K{JbcCLkGj&qt!B zcG_@io0ShfIBKhVtQ_<6zzbdwtJ1vXEh{Jg0b$)Yy$N{IlYnPE3;5jU(4z&u@B2oQ zt4-AvUUkxCp2sABF+ZjE*{KE(_=8$=CklG9luyq)IsG=S&UGGL-_C8T3AUUY5#%L5 zesibAak`n|;r+gq?$#>-k-6ZxaXTB6hD(d;>m!zG2G(Ez6tmF-9tnJ*(il>b?dfvV z>!<>s>e46?&6wek#bc~8r~FMamdbgQ*85Q@l6OLyi5VE)yKnDH^uTM92+kyEeJbLWq zzk7Gg@8}mQA&;UZ?pppFfhod7lw6+P`|Q+X-^{-2%rBnkwj;rbd{;`6 z1{b=(k$b0H{3Uk$8(LiBbdr@RfF|^A(MS^kK+0VP=K=CMTyMbLZz-zCrS%AB!^( zoJ=TAw6IT~8$KuT-m~qCECaaq8Bw;(x=YtXEn$Rt^q6RbC;-N^WZe{dr2^48tjz|2 zOcm4R8(njJ{`0`opANk5eONc_*#n$^e%x1&y6g9W0kQlB~t zd9TZMLPSA5{)Fr_#KW_^0j<=-X&*>)ibf1r|6^I^ z>!#Z)6}Kl-xL!Rh2mGk5p zWA$KdF+jQsQD#(FBC@O~$;7tLkj8sL)5t>xKuNcch<1ao>z^`Zqx0MQ#aSzHCcQt& zOcR?=hJf3$V&elJDG-t#Uz(|-zoozvOJ`x$XoyBDL^4!Kko4~=5+Mn^>9^W8)p?|p z%nTQ2anT8B3Z^L;(sXPdJtiLG*tlkjz5fBq4DFI)Dal!O!Qd`maPyuM$ zHuP8mp<2)G-RK;_;JB>so4O=I=jxCQ+!9k40SFk^D8LLAaMIXHtmRzTF~|}|c#{QUw9q*3nnTt1r_weg4Rrk24tVH2eeI|wC!cmf!}$qAGfR7k z9GUZ|Kr%+Eu?9t>kuz)n@L*e(@+wjr(#kvO@ZbV0c9e2DvYjbUFYHXQ)7i(p6>==e z^G+~h$YLwv-6vQQveEryG=+FUB>g0&hYUl~<~Ig4M0(`Pd&1;IWMzZW-|0B2-4OLT z08@f-3R4djwp@YfMk|sNNYr7iQicx?%q?fuY>FEoivEyNIIv;gCp$BrZtl6Vs`5% zgD?;2uo*ikFTf%hY4(GK8_{EGFb*X_%ggYJ13;5{WSf?>1=d=&1FWtF<|GS zpvFi-VelCXYGXR6BW&CZmPe&WnROQ*M5chjckq>3JsiE$_idVo}{;=xc|!zdbhU+GvDEV}JUm=+S@?BtTPZ00fLn#kElSb3WehdrUZZfZ&K_^~C3T zek1?h)9$4}Iuut<^)%f!GEiO?6pqL@&|jmOTCs-{`S%pGuHPpk|JrCQmpA3> z)wWM_8E_*dZ;$}-HXY8q|CSWYWV=#H4GGaUavrMi#F3Og6I9P1xqT4^97sMucyo|K zBBt4~2!YHCD*KVMrJc#xdFJ&Di&c;kev`4pk}RyYK|yLaSY;w-M7St`k6iw=rJ`YFe8rG0ju-5nOMso zL&IH(Iq7R;CAXf__Ah}U`4CV~z^$Pv2f!ryJ^`4-GEkx{6h9RnN?vt|PsBfz*vHrG zIs&Ulo^yGYj-@|o2Cf;I?7+n(NNo?7pWrKmsLjfoHlariANml+4j=s}dekt&wcF~uF{vmYts8Q` zD_Poged*8XLP^W^Qeu5+apu~mnr@zIzFnUb+Nh<6O9fC8-az{Oc9HArI^?*j9}~iu zeX_4R7IN$PW6Q>&#+-n-D(9K3Ll`yySjjz5D+h{L(I<{8c2D@QIA zB=Vj(y89%uZoDQbQlr4?{#3(PpMacUAFeU6SBg-WAtdA2obu*oww-i07W+^m1nFQ( z?3mxt8vs*^PD_GLf8(z@TD3=->2vLe@QrU^?C_PZphpcO7y#{ChfN?hs_)7G)VHpi zLU@nSkBnCsJMNCP8e85-1FpRm6M@i?`n%snk2OMYvfQySb1}LCjYp%$9_s<)>J5L_--DIZOijbgJ6*dA z>+)14l%41u$STOYZ7M{)c`T4q?N8EFwSJEqPbZYyC~2-1$&lOyTkh6lpVy$fx9yjD zybKutRQoO7eO+3)%PAQ}NtTl&@-?EYm3rKmLbO@N1H-HgHR6!YWG09*YeNkIwtX|@ zU4$tk{oF7QH!ipqI*Qv$h=pyxa(E*=?s`lLPPy`??WG+*iw>{|4iCXSIB?MFyE6*0 z3?(Ti#Q?bVRv`EN>>u0K-7Ia7wsRT`;?JaD^Ja8`2|6RI!@hkpXLTFzpeL9Aj8!+{ z9%}`Y!)VnVDactk0$=zD0aO;GL>@x~-^MkGQPX?w@2GsSKDe45! z85vsEQ^|SUXEexI_4`^fHI2+Zh-2g)CMQBJ)v;ILW)bEjPS`BTwjTA_|%iUJtNQ!7e3sD}syrt;zDq~0u) z(6~<>AQJPaR~NZYeKpycIh8q)=pwC@jxZ(x*8Frav_ zN`t9MDjgaUdfP@T9`FE+9Ul0=R;yQ$kDG7C#9$NyU|%a!x59+PtyYJVuKL_u`8e&I zj1RE59X+NV%{c%?M%ITmSvt}zauQG0bsS5~9jXeX9(gqg+*nAmpG0g^L_$W^nP#~P zG*lAQ&qa5Q+@Fr+(4Z#eTL7?6qLq+?STCvQ&rn=Mz4l@Vr0&5&)Gfwgc>$&s(vQb% zrgEKvTta~w7|A?HhJicBW`V`Od=3VXtTS60j;nC?Q95oW9e~IR7sY4+`aIxi#pcC9 z*Pf|xA)hz9>xKixpuDxs%D1;N7a}If00<=bJKt%w2_Ezyj2(X92U@LOMLxd%bxaHn z8lgaEIL4M3;cA~e6vXFYBXD5dXAcN42DAFw6MNq>DqCITFf}89hK7|CZj>86mIjhWu2T)@4729)?5>IQRbh<8@ormMn*+bh5qT8Hakp<bW*EL@P#i-R^^~0k3?&XaD3m!lw$+$u>l9tefEGuWXnU` zOzQU!w5gQPygETv#;b#fQeTDdxuyv9ib6?)FQk;S^*Q}AC6Ajoy!+cl5r&ASQdB>z zmjZDvd&-7u#8No`u_bTZosoI6ok(r`bRcoZRaKtcBOiy%8;VgR`W2ZMFF&coM%RIO z=GDiqI{bn(@&YSUL}^-aF6?>-gx`f04prkMcj0F-7`X;0MPnpKfFyDtna2xv%%aCs zp;+v&Dn$+D6?ee_;+<+m>D!XyfN>(nE5S!T(rWdpzWiBdVQlb}r?jtm|G^JVRub?i zc^6;%8rtGpm~w37JvJcRXVGJdP*v(PqD`@;PmOp3^%6TUPOs}3Ij<3YGZ>Uo4|&#y zgh6RF^1Dy=$FO%^Bt~h&^fx)>J1i+R-@3N%I4d_s_`A^^(a;CLY#~aWaR*ivhfMlJ zX?^p&+ayK)Q~k&O;~Vbh0y2>+w07o5#iNbr{gVuP? zbH*dmarDu^dFP=u-uqrm6h<)szSW-2k70|qwZjH`{}tQ5@2bzup~qB!3O)jk_Qi6W ziH8Qn=3kjBoOQWwSCiq8Bhz(bfZXo%{YFCW$CNUlZiSpeGG~KwPWai+0W|}Hkjqna zzvLqe<$o(Q02q5s4kM$g?1#u_El6b^d96SBnTSMQbod-4IqYpLc1DBP9a2$<$QdIk ztU!7=6de0LW+IV_$mQ7=N%eMKoQDpd@)=+T1zR71lxUnH4r)1+d!I#*sX-|HS$?py z*htU;;hp+so0Y%(<@TQ9@A)1~6#nbK+8^Vorvm4kgAK#iCDL`M1{x_&VXNTfuXWE{Qw;iu3KwdxbhY7@x#G0%Vpwb+Y0h`K6Df1A{Z zvUN#~4Os2~>k;u7_TuTW3Ji)dcqlMt4*>5}tJKes1l+a(Q(LmO(YWzO;A0({=vz5M6H9|o?!9utLo-K*8=RbqGBrA)nl%Y0!#8{w{o=%L*5LAe}?K5|9nadF}qBVb2}>H4nf3 zYmp9a2tsf^c2#kxF_u2WV~e8L8>0@|^hpgPszlUdO;LU~PpB^n|FF{5Y~AHN;;Cz{ zAIIy*DbZcGA2bkg)+A#Z-dD06$jXS4jZIm7|C*aUJ=C00kc^ysTaRkpl}UgGJh&z4 z;0x#JH@T08@On%rit&0FOuKigl>rc%MSY{C zGWza!pR8tJ0aso*T3!4LE&v|+NOX?JJq~!m3(y+DE52(NCJLbkK)9ybAXESv!N_SZ z8k!J{MTFI%eAJ)Smjs=B6fp_dkdkc~qMdh=9QB0c*;#i%{r3>g%TYne>O8F`7lg*)~#jM~x|ta-fv7>j=F>4`^s#!)BdEiK=Zm<`d{A zkcn1(;ffRtyuTKYO!UF5yzwQ4*_ zF&U(TRK0(s;il!+zQDRz#DUJdJ zlG92Y@ySoNCyiZt#McV{{olYp{v$?0FnF%MI!bfa3&Fq$^BdK;3Z*|Mt^8-eqaKCU zIVB(eINBl@#b3dcVNAXMioPW11mn(Kr=1#KCFwSh%Xgx)Ir*N4N68l@c}*noIhhXx zeNbyBP`4_)%t%Es>~`cOKt56tN$65K{ye8a-1Fr8)y*Q_aHSC zbMMzJFFg??xyJ4j08}O>#t9eT+C`$%1E5uj+)2Q=djA!DNzlm!Z7Q}AHD=jXP_KV3`Qe(}CN~-y zy6-wLjHWKJPcb@JWi4LzlQ$lNRSJ@MI0B#M@8%6R*P0Y4pM#&UuEQ9tunz#yUQ&y~ z5@qY{eIrRPD!YJ_r{AIgX+}oS)l<)r`b(ssTsknK@3zTp9mMt1dn`gMHlsm92{IQc z=1-iPU5vb!fy77bbG6e}83XG5H={u$OImXDkjyn$ek0jTr$$y+jo{={K6JN3=0;6GG#)OAtM}B|xxwr!%l@)Eq zmK92XxR{R~ajCQ;Nwu|@r|5g>yc^WFBu>j0;YYE!$|TfYy9OR7#4w$ zhyhtw;XKd4=3!EQh8hU^9*HC0rw6C{|7qkjAX8ixKU=ZZBz+;C^?fK#MURO@csP|G z?^u6+Q(URyx;87{dMogm&!828M*YMSF_C!Fn^vDF8xo;IY0-DRD^}~d+uc^aZAf^1 z-t&Ne`X}HI{s1`P1gr`{4<8JGNkl0B**4iZkpB@X0DTfu2AUA>`XUd`LXU|96*!@; ztCx3>$n=mz2WZL$7#<|sKz@|m8zC3>I^~-D#4#Hp6vzVx%ryy<-zQAj!!{m7SL2L= zw7=mr*O(JPXYZLu1BP0-%*^cDI~Y`pSv~GCN)e5L6w0vqrEb0&IPfgq^g+=x4=1s) zRO4*s@jO>!47A>8W^lw!WL(m$;jH19UpJi&wwnGnxwxJf2OOgnCTFs=0sWMnRTW;& zfLf-8^%xg~(x1#2cW9-G9hffsH(KIf{}p)bV_R*4M?V_)^rta#_}bTi=R61ayT4nV zlxOqicn-o(NH7jW{6GE!_|S)9Y1L4wGI+QH!41-$Q%(UM^q`nO(YCqQQV3mtpZnbQ zrCi4aPj~`aW5hg;f5Q}^^8Sx$e$^0&&MO@)JLb@%5_g?ZESZx9!;OvQc^qC`i*E9P>GN_~4M{NQq*=~J^vOxNCt$Gd`p}5y__S7XSGQ549B@zzH)U8g|;jpEgwqpwYRuf^ANNm5KG;o z@%AA1Xhv1~b78zne=dbksiJ&1T{>kCry!6BYVge~-QYi4iH0JA!EpKIm`Lo|1H7WV z4Zrf0Xq|xCgh1%O@B89UR|xmva18%8!PItc4y_T4)s_g~g{d+C$_L~H7=H(gV%xzB z#rE>|rRXt12t5E;2)~hJDZt4_u-WnBNXNZw-uPpEY#Fasa1zOxjNHduiz|>fGBRVt z`SHnddrG+jXu9K*%6atI#MH@GF+Dr`SegGb? ze?9Owe}jp|pZ_`VyT6NxMaX$*TTLp+)k1`&C2lBxT4uS7FM@-md`3=~tcIS99uouJ zH5bT##lLu1%kRjt((Oo&os@=^$SqUWhmd*Iz1QCS$Veo)PTa|jNfwES$;lZ(M>-Cw z84KyPmkU|SaJDle%C^61Ib%uZVWR;+(l$6Ar4jgA{r{xHx8z$+27$h(f5+`ef-kOH zFPr2iomKPH8xe;l8M`^!Z}M9Hc)*r7AQOnMEjQRq2e*qj_ae@%vP3Ah1Yq*(XZ!BE z0Z$^vy)s1|5(SvHT!2=20HLu`+kOD|xesu^`(a`cl1W1%@BjHfm^g%PzajS^bpD-G z1W8oe>nF&pf`qFj{sU8lG3~9gKlI7K6NCjU1oFR3j7dHI>fKKffa+ZlpU~1(gc`?A zk{$U=R(0I8@-Wwub}4!0hd}kbfqXmN6MI7^o2SbKaJ1MpG@EH10l;I44IkgCy-qPK#Fq4En_mSB^?VR*SL*U2$DVmK8@FlvLF(jR2q~pAZMhI z*=bs4ln9hX7sLoq*%s?@n#mWU26hh0ooxHiBD{w3-Mq7)jm>H;-4`k7{|`)E5#yn z-xzE{P~O`^Y|iOYFw8fd7GD?DNHmrz`$@wj)2%mPB+b71;>kSjA;Zw352SN&hDf#_ zmp5ShlQE5~>WtXWNz_7=!4L8KMza2Q|oc4Vi#tnh^|M-uiHA3QcO9cIY`=X&^iV5}pM-b+wwCdW_VZehq zeNCifJfn}1cxDZ>bp6EkniM}y=7Th@XYVQ_$pj%7CgQB3e!>!g2Ch}}QCgao6~mQG zGXV_Oy#MT@8gb>p%#BzA#S%+zaE6a?V#%FmjRR;&%p~VYqAQrkd}!*7jG4%9z38B3j}8_XqBKUraoLH~klX5xC@%SXpP>5WLy(0K^_8onlirnbkdP!{ z|0WM-{OUVMLKQC$V&o)Th@}zzVZ+1m=bBU78y`9!qGT|r;R2JP1ro{ z^g6eXgy?GofK<+-6K1tyV5z?>QG?h3*{T60LtvnLwSE9%|Ak~|oPi#bfmrEbVlib= zfZ!wkpEetO^{cT_RvUyQ;HN(w&FaeuL&ymTO~OKDnxHiw7lfV#K`!&ESH(F_1Ah32 z+c!RY?|VlocUo>$b;q7~Otkl35bm+)G1iC)z%b>7Pw15;5a~-?-_cFsh7E*110_QM zmb{C^Ln$Zn$?HyyiMzwQBFc3qp1`MZXo;wX(Ciw~M;47p2e=8F=CK4C4S>Z>3m>#f zs?pY{+~mTgwezppU8G64@tmg`pU4j(uHzFX$Z`u@B%#`G0kWfoSQ+(ac-n8=osQv~ zdP$go*t@@jX#>g`rM;!|aYeY&ZcZKg9De*_bvD)gH9O zC^goDB<08>F*OKfHBUbscFQ%4$eO66>7@=IQ%f_CI}znxc9{d$x&XVs+1%DJ zS{wJM&8sM_m&iTWyyrgY*UFz-RKSix7;5!;i6&qHjRwHh+p*WkwdiW%)GLp-vF?o6 zlM(Vrx5;EY7z&}(Y$9n6P@OxVwDa__hPgDs=)}(@KD1h7XE~O ztTA$+-has%Fey$A> zkPgNNEDCe0Hx98MpNwu*iTiaqSK)5}>$GP5AXu0cbox%7W_0Ct25G zHjx=MF)u)323A=pRYV$q=FnrTF_?VszhauA0HIIsXWDEKYOMeB2sKkeH`-}JsBrY6 z7XkOYCpHYn9}oQO&tj@DGXp&9S!j)a|99Y{A4OYyto->bCLB}b{a5tKz~c~ZxQ3e}tV6J~N;jF@_7#Hy*@)_tcwy2VS z%bPmZ8;tq#!ddr@y;Bqg2vy?W-DZQ3X!*`}qBS1%sF>I}EeIWbUpNM4;IIBF@X&{1 zYH;s+15bDYTH~s#Mk@dLPl(@viN-W}{}p{Q@OVP>|7QTXq=Z~0ohH;v>1g6@Lw$W4 z)4ibKH}k~exQ}F53`Y#qP^c&M3aw`m88sh+PM`99M#@Zi)gqgV9BKOqK)?+1yb^hK zjkTh@$GrY*WEn{WC5I(b^bNx_-C4sd$=M#)P1zb=-yg>nYeTyI7O{lCbp9nXCJF+4 z4S)TdWXx>8?lX1>kb$GvFbogs1Kscq$*C5>v+S%lm5E9 znFtO0@&NrpzcNETrt!{9_jaUXt-nL7IJ#WOGoVPwMa)+Qh)h1rD zE{n&W*m>G@;v)aaOr&_iyvgJYrdX>J@waXeOM8l;Aew!KcKd}tQ!+!bK-dzEwZ4DD z@u&e4Uxo%?MYLTwH6ydnXIq~KFuo{1vN?2t#m#%RZW>(LM*&*lgXPbs+HCOkuLFPc zH)xF@?Py!sWgHO_fS>Xdj17Xv{LC{k@d(#OD7D%aq48O`CR<{@{P}N8IJ)%ym(SdF zzppy<$-rZXlK-9O|CHa2-v2tm&q+CpE1S@?oAff}6`0@HCH6YQ!;^E@+)J2yDyieZ z+4^;95cAL?T4J8w_+htY0F;}5u=wxv>8wtYf0?hj{+V~5zwYc4_x4eMRtTQZ)}o$2|8wAu zJ6dg0>E(lNev)y}LBQ)@pZPU59Krkln%4kF9D#{OApap!)CS@4{>OieQE*lH(_S<* zM(Eo6KVXD!?;do7zBBOnVNgkVlk}zbZuYl2&7CXRN_-)e zb&x#yItlTnvl;|G$rq;G&!(DWKv84lvO8q|S&o37Z^@f*PWb52hjcAwvdThw0AvjY z6mDD7^fR=ymLSU}%aK*{8vixVIV)KNlAa%R z8f;#E(xNkjnrk|n#?aUlYvvmv9dIrqqHJIJYbCx$g8e=zMLzguI(yG(Nx-2JQ0axA zM>aUrm^VMoLr*{~1*(Uq5e}*kD3yTJ@KD1*VgLcNZ#ZekEP9L$I_vyv52uJe3eXy% ze#%GMY!GzUfAS}2jZnE}9Fk{8LGVt$`qks9w-0lA#Vg92;4CH*AwOi4WadBpQ{Y?Q zLR$o{-1{-X=-T@q@~gt{gEkGW=)$=o=sN?C5oTs)!n52Fb+~%@OQG50pUZhDQ;Iv! zI}LmInf-S0HN#c=aXaQ(ltR-W&JF)LuwBAo){+KLz0U}5@_p(YtK`)20Q0ZM~+ zPkmV*1!#qDmp@mcB|PN*DzM{q?I6C3%~r! zXpOz)xBD;u5~Cnwu-t|T#>RO6qjRNv-gg!SDDSUlpvPE%2CA~)y41%rxH`2~nFxD1 zPF-44EBop98vkvqGBl`p-+cqGN|5f7g4J8^4Usf%$^&2@d62oW`%6L?`A;O*)(}mk z^t8PGKVVq{pd8~y^N5p5bfV^`a7L4K1AsSEs+kNpNra%JpSbRYw~tLK3l*dvSM<7j2Z0KIVF1$L3u4b`(II5v7FgAxyn+yG zpkuBt2Ra@&DcrP~X0gsF?>X0f^xP90E$u!E&0s!zy(Cz3j4h4YtG{#0o$Yi;eRBE3QB1UVErJ z84wnE&=>gFV9cPH^M9*$pPas4r(3>-YLS6_|R z2xR(IubPY~z~deVoHaod6Dv!=EcEG#uxptwY`#%as8`CwjH&V z&7HBpZWJC?{VQ*#rnzU^){G9@Kc@7T&VKLeBtVy5zhl1K!_BFsS?s>6rUv;A zx~#9wzi($JP2E=p(%1)*z@F{1O0pvot$oz_bBYXb9{2!!xlhVkqlrvtsiLa!3{%nx ziSYu`)&VIH5u-0LAGneqiEzsX>Z;~^k0sIRLuzsJp5@-|qX4b&Zx|stGI(O|Y}HCE zB9Q7Qk9qB`&6}e~eUju#Aqw!)m&Un|GoJAb;75NHtr3!b-|`lWf{>K=UQ94H+WT)< z7+itwu zxa+$DJNL7W#MwcSdXoW{Q;Z#jmp84i9Kfv*8+%nl$CJc%Dz(Zexr1&nFrX@-I1{ebZ_-kq(9z@XR0&9jCXx6+ zYW#3Y`jywQnV1rPH88?!I^*~6yJHSLHVj=Q|3Yg2FSkk`1!#p(7rk|DpHF-OxZ(x|y^B=k?kAlDbTi_$DYE~I`VuEY`2U+Dfc>e>g zf98qv=&&b1`E>8gd~Xmo6~%eX&8(h=mr@lUsx{(@>#84^+`3CaJ@lsSab9<#VNXBT zbR{+pr+t&`lij{EPOlaAbHdG;$KQ^o{=Q384g__--v5C88UQSL0OE3|nin7D$@lK~ zwN@R^U20}`&WkTg63LZ-@SEyKnHeBwQ+gK|dd*tFGi_s4T*ULvs3~buLT~)D zwj4S0G-B@@)g*Hj$G9trLqpa}HAYrCbP2D&o{O3hlGfXVnYA$hh>Jbx5LNMB-3-K> z@y)X07G$OlyWjD%qF6pO9Uv^cAxXRg($`_c$`dcHb)5sW0uLz@r<&a*av?cYluCla ze#d#$Z4*u(4BI|oWrZr;kNhn%ruZ?q24aJ3$@4uqso&YEo?%a+Zonqgv)91=-VOFa6nCG2MJ44Qo>=R>$ z$aVZTXWgXLfkYBi-^fP*8FmHNAWy%CO(0&9wY<-EwGtZhFuB=T85WtRt#fQ>yVv3A&mk zAdvx`jcW=3>B(m-bkQ`*PvDHSA-=)!VL@xu{7<8pkZL0mh z96F2wTs#Gys^2evzKNFj&EEt*`&qO`(5i=~V&l{y_<;`up8tGIJbvn@#!JF<;)x{_ zfAeVh2_fnC(o4}A#nwXyNB#KE{R<`<{04M|6?y-qCqRcXpb%k2k4{0cn1?!vIg0@d zvwTP5+5VxdQqYjI94Jy?5#|siP2(_^)gl~2kOGavu^fIl z@Vmb|nk*??Q{gynz8S4?#F^(7$Nkhx|7cPT^HZ+8X?qtXl@%-T{@c1t-BklBBdmQ- zfbI~If6HrOJ0kJrx;DN6%GT<1FGG^yRGXO48%u=^Y(2LNWVEtLrlV9hGaSUbzvL5& zD`89XA=c$U%+1I7X};%*$bZ1fl&@9iJ>6R>-r?Lk8m0)E_bvv~!24Fu!{UnkZW$Zpq%jFfY>D&e6EA6BxLUf)J`Odt{*%m54 zBFZBXuyO0Jo04`@voc#x#Z7L$L*+zS7yDg$Vrnxi@nzg~#f7m~WB`PQU`gu_Bz=t% zVXuc#`HVIUfSl(-4@Aj2$1cBWCdq$s2hq!Kn+y4m1fBfnn|bubh@fO4B3Mi z-G%Je2jBc(Tkm--T4G@VxagwNdvqIGBY3Gpg6BgXf(=9HPY`O;&&*(I5RT=IZ`{~M zW+BI8)COhYTDstZk(z$ts2}?o%p4{M&XZ>ZjI;MYZNod!5lRAZR^Jn#8!T42l$kn* z8zeNo6K>FZ^sKK?z5`3Ko?4ka1a zg95cEL1ex>;P>+b@F-lj;^*dy41j(623I?|kxtC@0bu7`M=}b?$5ohofX3whl0K{1 z5$a8cg%70SCek)38Ces7%`kz^L*|v7{6kfP()l$J6ST{5()$-C^U0H)Rml|oE<_F_ zmSrqsTJ4%&czNF$xD#|)`=1xLjGzRLsJvUu^H_gObPM~h-|Ho3{pHc;oHM(r{nsZ% z04~2ABO%B{uDlX>(1Wlc2px(;^`B`&IHq6vC2R%XEkHXV5^ zw*AmgirHE=FhtI5PU403G1YU8ij?Db{RlF>zw>3Uf0P4Qu{w zLyBxIZJ-eV9YhIy+C+sb@;b508o^K73^HP`tHT*CoR}?!X}v9FZ^I-hQ5Gf0^(JEE ze2Pz)U#b2-U_}N%$O9;U%`>wruc;E4M2Ow=k{l?8Ga^y8^GjlSk;;GKI~GWYwtya9 zs_3KEkws46(yC=sn*u^fQ8NxSQ5W7!bRB}V%1p}b-*K?hjuvTWZP;^x^4Pc6T!mmgIej29gK189qIdw5~_ zt^1$stEd?0P7B-i_^=@@t%|=>09ZjAR2Y{D*I87 zy)3PJ_2Db<=sJE5b>kwHBGp`iG`Ezbt5E@SqKh%mcvEpb49sZobIFd`?T5dJW9YB> zF?-MgEvjGBHHEtL)yoYyqF?>RD#1x7t|%iDF(n{V;=q0N;q(KR?QlPo9f}}ap{q&UsIzU&o z{|8uo(wTU<_F(-naZ!Lk{s#lzU4EyI2w&W@4>=jfj}Qe2y#apZS4Qg%5OD8%N7+i~ zYTFfFRMMZLkH*yE&_iQmv#t<6yEnaQbfe?D-;I*6#YMEnmV4YAhd=u4rB?_>z`~uo z##K%dBC6eb|FLJ3yedWc1m216FxSg~)(;E29(`8u{!67D&WSSDtMB-~lwbnLJ?3>! zzejFh)JeJ4@z0G68_lFbg#3Lk1>)p=R;hW8%#%-@-mF*u$bW+E2g|cwGZT6=E=&wM8E`@bKF z>w4qNGh>qKwBy;&1|IPUtUE%P&rq`S+;cG!!Zq_dzXM!*Ek?pIPyZFn9CDZatVO3D zyin{OOES5z>AX(0{|lSX$7--JxB?ww3i_>#Etm$C)0As9^dl%+=4C&Qd_$RO?y=X+ z1~vK2aD^W?8}ZcFjRqT!G?GA#B|dcz$#Gvx4z@AUx=74gmGZ1*P<1|u9IK&lEr0*s zwnp@d4S+ir7x$2L0hV3>rhb8w>qv7far%=xDwM{7km%|-w8ST5b^ERCp6tAs3SZL- zNgBgsN--t| z-DxuStXBS`xITVS_h9`oSB3J&9EtpMBtx9MCO>}gNqojZvls<|z<>C|7#V@EzVxN* zTgEaN7#CmMjiIs8xJ${2FS~4gk2NG62lBoeIaQGUgktl-3fh0yq`y!oHu7S&00jl9dk+%rG4naXOM z1c;PuM)K}m#<>n$q&>F45&bN5;Bo_O0^~?0)w&tSWtN6)!{rIdY|9#wkV*G&&EPTg z`N1*Qq9s;r0K_~1+Ee|ZU2yF+d{{>6@2i(zmR5hT%Kc+hfLuLMBwMIZag7{t0Wwd! zBm}ducb6VO>?K7);A0d5CiBrMK}P1?=R`j5Adz_=0ibj^va4tiu}YxgI_%{~<$~Ea z_l?2U4b+kRr~FWNVhzz%6kt%`;&BdH-#oix*2q7Rxm46^vY86J^oYms5ye)tMUZiX zW>jDJ0!Bjk{stMyC6}yUWuDN9_%V;c0fUD>JbotYf$$k!cp>ofKaZwR`-*VWO~7-X z8?T+#`@hSPxckq&rhLG)u^7k82x3ijZ6w+Vz5lPfS9sU#=j>VtorS}=WaY5FHK)n8$Tq&!B6weEp z!Iqkwg;8c0m!rp;GG zZ9W>mcKGQS1t9|P3%?LcgpL9=0s^sI>qx-e?;ew5MHt2)5tlA$ZW{<1h;T=5K)C_zjGVKqv#T{Jr0c`tr5H&;4AiI&`2RB<8;4C0H{A zNl~cQ6O6P`$$voje6Jp{sN_NSItfSq=yNeTHr@!BRPTR4=(B<@WkA&T`B_Vp zi2vA2jcO7nZ)7muyztbKs}r`mRlera7wsu0wO8~~@}Op_5$~v@VPZ$xQ)4f-N&jDQeLomB6C!e~tz zN5r;X2DCN^b^pt+;0YMw?Gbqu9{ZL{QfzqXzxmu)?I$gxNc}CLSSckfxos`NK+ece zX^OtCv-u|dKJvNp@Isp-GDE*JDE+nL0k&$OTHQ#if5tML+1TXHz78N}L<~hh$i7Aql;P_(7I}c`bR;U^$E{wl zvlTQ%piv0+b{WObzK}M>S-`_ejoO?DCoc4T0oDvBzvHH}x|09gzIk!on$7US;`!(R zAqp@KwZ~(^FO}qHSw6w5i)_K!dI#(9@5Llgrf!CzA9AwcoN5)g46+o>`mCQ2R-n zs*k@OWx(*W$i`Mjv5Nvoq=J^&R<~~o8pu>!6hfs%lyxPJ5rQ`_KCRklhDK|K*ZS7W z7+gb^+^c4d68%_G6YA}cHWsN)M!eu`ZhSpjiw+?A&{@Y$`g*k_3UlXcGO!j4DPI;! z9b8mmsIrgC)Ih4qn)MuT*M}MoHrM#WnzH~-5s&Ojgdh7c;Ow(;z#~-ZdB!s^5<<7;_rE`uYh4XK{pt8w zjG8EZ=&5Jm=(B%ubr#4FN+V$3%;o3^T{rzINx{zbkW_Xp11fJ-XZ1Y+R);&UdE^B} zQOv^eu_()7_N720tuvvBE4$f5rYm^XzXaI5hz1BV)k}IhW^Vg5Sx_y{K;~+jQ=Ye= zZv-*?fSabQ5d$N(HV$Pi3$9*#3U zJ*z|}{>4>afRwl^3|T`R9-`6LbwzF?#F|WILpf=8pPTO6wgsmmvMNAAN*qqIAFn-% zo_)1VDIKaO`8FbST`;10e_MIhH@ICA9d2EGr=Gbl7Q?g3^hnD7+`r`KM-D>;yK+bI$T%z!?YZ z^!w4!Q(Zr~>~EN{#Bizt<>#p#K(##TbI6nij-<<&6i<%y00xr2hlS*e%*QSmCvEb_ z5GU+@;w~<@{C+!5MURoOZ(nye-Sw3JD1zr|z@0<^Hl#UNR_EWlM`}0Bx-DSA0evlZ zkOytKJN@R7k1fBWqv=ONldz{e1^CKWuqxdD{=nb;U6chKe)!6^2^EP(jT}rPLRrxB z&tKWP!DtG}!=XXfYLll!m*}(3ir2y@prXJrKm8JHz3+puZYYg_^_Byj{Ep9E&}q{z z;F9%>sCF&`8gx^JdK$5rW-czThuPdqo;?E^gTW0l9WM=nFu5Ap7I(8n5!m>vdn9pE z+30WY#!UnIIeMv5+*`^K7|tmmoge4(V`l&jj3eiH5AoMq2S1Fe@=thw5hEMCBRxGs z+ikL%`r*I}C*6e@148)C2$1OuX;0qtymM~mJr}7>A&~Qu4!ZK&pK>$^7YUE44ik~>LUSx z`2WEl06TXAC!V}= z*!K8mVcTOz)GxKd`sD<~F6x8s^3qE0|Mlk{e+AYNomT@Y1Jb<=s6B%Bzr3e!PfOI3 zKgi+$O;8Pdw#0P!tifadKD>87Z3U>dBYEoekp%heJB4wLmmoyBN+f&_6@Es>25_-B3G`w@i9E_)(e!_ zB=|zvNh|$B$+M7hug1~Oof6MhqMd%TolhVJ6_VbcVdFEj*1vTwtJ`8SK>9S@-+Ca` zGwa6<_;13DitcbQRbK_zgn+6@^N_3meERs2K>W6Lugt4qK51WXT70TM zj#crKkqm$!11gX7IucQT9(a>PdXu%%K<+fAJSl2R=&Y*E&L8z`NfKy!p+;Rf2-lC3L9m z(TrdI< zz(!cyi5SjE@*AtN6BBRqkF)$;3_bionP%R43&?xsWQQ3PLhcEw%NI|(lNE_Ikr#^+ z5^iw89?E~~#iN%>yt-I)|5*e!y8g!T7haH&|A3WI%Jh3}|Ht z(x1{5RJ-=FnqBm{$3Zhj_{MVEwT! z&B1Oy{=$pP3*V}IklfKLG->>sq>d>rn}PN3tLF$K z8vsEDR8ID4Jz^5AJseq2vR<~2N|Gv) zUp?Ys4kMnI=cze=n})35!ZmjR6*_FZ$DN`I=qiJTi<$y=uSOn&4# zf%kG5pxNu*oCm=0B|qbO(u%4V5i7%Gy_*kej+{M?cq(<>`Olx|L7;1P$4H%-1+2HIl5zz zj{w9)?#Jvf@v;LZA%a%tk?{((9$d+wBt?qbnBf6e)raj!pywbnC`<+vwMhBA(!t1f zvzvP<(2CHR{HOH5cP;<%xITKz_F(<7jTZK;2^qNg_?Nt4ASFhX^eYIp@GE-@9NBu1 zZMk+g<@A%js&34KXa>Jg8USY>a&q{-VpN2(kdJr-@Gt*@C4v*}L8DLSfWumztMFN# zamMJSJ{8*@_jDY$eFw%0jM-6)fbN@q;fnQW`n5mwGNAE7RrQByM~&pek?UdiHxBh(>wN*AH^*ut1;4xYUaK!laXO^B{!kJlZRX?ZJMTDz4l6=eWI=I zN8JDHt`GZNZO18j*CG$qJYv2AgB{Uu$6)(NFEvO7DMeb?YdHt0`IsDdCHG-}jCr>N z$#22nh5!3LFY6nMEQ3zvKa8E&U=&<*RWNeZWkE~N|K$T9$cdWho6>!*S-}~62?WZ% z#n~NlXk&8g1mgedBOi~49CUZA20=3N6F(6v&-9o~gdB{Z`Co0B*RA(^D2{o?uaBn{ z7mR>~eIGdauWnk=vm@L?J8k-fjq&~`^fI7vL6rXF-tn3jAK9CN;dRJ+-s2KNgHfQ5 zlKK~yz2;tcUES4V`@l-TS+`=qk$Bxd@si#o^80ji48I3lm;T86YjRz$Iw)Pv@v`W% zQ&|m3;6@3&$a&&vA=T_^FwQw_|1w!8?w91|E6Py|5a5{_|0a@`_ggx7>mr6M}^W;8%VHc>Lpm zFMbiL!Xe-HNX%aRHf-8<48|CtyZo*PT=lvAe}@+~o!6=NAAHG1c>fi=Fz8su*~@^M zuz1a*-%#G5XY<>)a4{NM=)Ll3MYoF90P=~#Fz>l;%x?SK2FS~L=Ej3{tF2Y^L46WK z&M1>G`G|wcfASq>L$DtqGkm^?W2r9vsoq=Maw*mTt5>DcrmG9B|08A?9MMK9&7bP< zlR49&k8d@8w9*emJ70*u+}br$(&rPAZ)g8;LgO^*LZSHmWF2T2XW&OjlN)vdDpB(cKea;UrPM-qf$EIWc|>}Kh=-Z{3I`aW^Z~64pk2T4j%g=vs4L|unf(8 zh?x%B-B`v@TS(`pe*b85M7fhNopSrRzr6RweV5=Gx|IK*g{p(#+~}NOS>5I9-PXExa-Uz^tz*-fctDd z3aiD{r62J}eq?R)0(z_+!e{cK4*@^?!@#axF$%C6Y`Oc1xW@}#KklCYAp|4f}UCrT(XgQREhxxy$ooBz`N#V%iD3qXEeZDm)4|;JVQL2Vpm|6sz8$ZN!d!& zuv>MuvW!p5tlJcUsLP4SO?7yZ0HQ0NQ%7CdkTNg3llVkwP~1+4eFe@c0Y%SzYBrWC z3=v?Jdi0udKFQojsa79Q;gWh~Z)AN3;t*+{>eMRbsf~Ixl$X4Z98@b#QirPjdvXL41Ux>$78h!)nuOdMBq1n6Zp<|&|^#xdN;h}CBSK?0U!P_ zR*geT&;PxC{ZFv@*wsnMHV||5h7XC%L2L$5I9CX(;Td2Q3$xPI=##z0Q&>lzRLY@(V`VaHUP zKVdijFTB}x{B`fH>Gx_)41k3@23M4avNs-!>huAX{a79VXQo~CFgIPk5`TN9t6?yV zU=)M6YWs;TkWN)%SD;}v?BasJ700vWiE^6qi;gOP? zDFu&WUj#0g`+NY0uH--Exxa2)q5v^#5shOQ3EGu!{&Fl^E4=WyeEMYdf77)HLc^^J)oWoh_bG(IwbjOZ)5lxRY9 z>*wnXJFeIolu=sJFx`|Kn;v6dm$C?-bp(j9jxI49S4?F3-*jQv9 ze!!hsmCERQ945q8GBiqT%vdO_u0Ei3|CI(5R=>YyH0b$7jUd#G5sey{U_T}!r+kEz zv)~&7*m^=X;#e}e9J`u1)g`A!gBB*L1(YheQM8q|(Ve_|SKl9?vx zj>i^<;BCj8i!-*)Vl5E*1)P35aLFaWZMUIE$GH9WXox-h;qkLrEkfSbp$|MA$G`M{ zW9EpvVoFdY2M0+|*JVFf+o5!=QQn1iqC*_$GN8q4PQSRk|6Y)8$mG4E#&+Cq_XpL8 zcAfkK-uv!IcKlbUI_2Gg;e1uX+2Cb2j3huoZY;oln?NOlKc=Nfe_BYjF2~V4GKz=` z7Jmf*;Xoe0UqrL?aIGt9tzByxF0N)R_31t?BgBq`S46m68fyM$3IHS}48b~k83|{t zTp&koMb-K;9p1PedoNZm$6UIl8dvOb9A_8 z0qOc)I7KkW&?zhpP%3pumsk;ILVqB02h7wqCMro z?8&w8Qqt2@0D>y&6O=9kwS$c0>-o0Ipz)(sRv&+H((hNs1X&cpq%_{(km5XXOj0Ed zsRgF{OIM(I_kB{cRr#-f-cZ?&{6(;Q0~q7aj8u-_1T{cnHKW)opz2*Lx~52K_^hk$ z{ql=(0Hd?&KWo%nW4+K}b1*DYG(1C@&u`xACA&h6e@a$u%^O2-8h`ovWhFiHo9ke} zW-#PV65stKk$Y~^NoK$6uWftMapRqZ?z-tvy6mn$g3vX1D{aDR5oQ(=gM%mfr^~4A z_1B}vI^naQjU9a-_qb>Ttc}4%IQpCmaL*UMvGn{OjUKB5ZBWy%{bB2-h3k45(E1}Z z`{LAP+OeKIq)Xm)GYsc^&6|GFux3IDzdW2k^~Vh?a7;_=D_bvni?d{4vNw`yzSs;~$dQCudMj ztbUG_6v&kpC8i>|{o$&6!h!?DS+&)qDoe|gn=!c)(~n-4YPiAg0kATjF`<~;e4}Ae z$f4!zg(OEo)@0oRNLk_5DM757it^_3y7Tx;i3QJ-z3Gb6le&xU3y+{{&sD)!^`vyZ&cXAS8w}4 ze$A1O$7WiaTVSX<^A~>+6H)sl;k89b@(t%SoZEN3YxNa=6g0CLcYoe%arD{00MLFf z$sYSd=|CAr?|(qdqw4nlexS*K0{P!eGw(r_^qVEvQo506%d401my%{0@~YRQJT(J? z8lDAQGZd7Jr!jMu<|7D=KBb}ehK&hxJ!`8Q8XnIdL%#hN_?XK3za-WvseVljfQvr8 zV-JO7;Jgf`Nn{l1Z#H4Q$b_I|IgxCzC-Ca|j|17*WZiyUiBH=XiI*NJVxV*-eGHDr zaGD29y93t!70_4!Bh`0e@!}V-N=4pw{}CqZERW*pO|JowxG!rGGVh;B^Y_ zwEE8?#-{w|QV4ae%Zug`tTXQSg>T@MJO5#Oc}dRdSI^nd)oT&6kr90tPt_OPR%{Q0U`o+L0rvQKX zm%z8ag&rf~&O3oW`Xk^$4~pmXD__ByVbhVv;$AQQGi-a@GeDaULXR~7@nz%a{Z|x& zuJ7*$jtnT2`<$U-cX^|oO=LbGI>2o`_MXg7gfT(l zpO?oMD4WjE>$HDPB|TZk6vL)|Y`PA+b>R;q`~uDpdFHRF0T95U zGcc$gSAmrJw1tFPHT>X1PjVY)n?>)xdGcK(AaxbCYCvhz8e3u0^~0TeI8VFnPzXa> zTDXvdH36p7kWp;oLrpvv$lip#H@z3@~V zK^V^%PD!^;N9huA2#Y4FotZ ze}2c;xPk`Pn1=Vo&V4le)R3ROnZWup)Us6+(fk`~_QvJshe)}iwPuYK3C)VtQ z%`K)17nJ5FIRMbjb$g38K#dT6%~o4T=Wds8tVJtK#=>1xtBI>Ugq=YFl`({UZYzpS zp)$}c4gj1QZ=Q4L27AV#Y0XLy!r6|TNOf(q zjC5y)gRMbJZ5x-@Zo2G^0yRqNW2T+^8%^VT-?!yh{KYX(!?O-MHALmGmiX`gjwCiz z4En=ATw5>pwBeRpfIt3Y;QPNHc$ytNu2PT@5Di~r=Z8$VZA(* zYl-XP{e2HQ#G!+ksgK&15V)I=j2Lh-VfD=vOFR4 z>ZA#v>H7rsuf5UY-;=nlZGKd7FkXM;57X<8dOQv zs9uW>F&K0g!QKcgT>Yra%d`66TyyX4!OrVVl)sk(x88eiMBg*LG@2V1W?ZCUlS$zX z0&>ZnHoR?1q*9<1()I+OhARD7?}A3>QXT=Ywm8|NDvTLA{l0baiP#_3Gp}aN4S;~# z7WlGA?5iEbMr=_RPl?dS53TZ`57^h(fqj@PA|HwTvrF{V90BH9LNHl^F0+&P3z1jd zzm*8J&4eyUX%e_nqiH>oZA@k`NZkaiv6qWm+4#PDa4PwUVW*@>g7o`BA_sE1ra1Ts zd;k~$g96=YDAy^(ww@TESd(TuLF)5ozk3xP@|iC-uTUrC>8@rMF*RMxL>ThaJCP>x zc(J+&;?Qy@cVbJif79r0x$TehBFx!M*Uf`d?oQfvru;eou!r!wj(r9myY=2!Ym{W5 zs$}!ZR{{@yaBL=a<&_6!!frB+ieF* zzui5*;VGoI`}!M7)Y&TZq{IckesbkzTf2G2ahwsMMu{0I`lILKO^Z*Z#!kQW$**%& zEy6nCwfDQ^it=#Jv%358L5PQ5uN1&Vb<$;%2ye}fV^~u$t*>O;r1zjEm|6_gb6@w5 z^c!wJ{%^mGlYtOFU+3AEia;cDbH)f|*DP1Wz9wp8bxLY3L1_pvhLV%x`h^lD-<^Un z4=&C;dw$0}rVtN!$4xhvhrIqb&!AsD_xKYrfvB4NtU@OBBk#W+zjV!eaae=o$Dns_ z6W&nz9@M(D@bEoFngg0PKdr9gHSBK*_qctT(Xb!)9{g)+p4W2wDUB<}8@}~k{NcC% z3*T7073+z+-ZdHnp~Pi~5FB+BrV>Ho6UukK^PRxE-@X2M5yjR+aqLh0I*xq8_NJzv zJ=Oq$pnU9U$DfZ0LTAqv!3^lkaV{@C3LN>D$3x`07-sCr2}>y>Z28d%@?fF-cAu*I zNVI^}lfSZY{e1jB{CnvU635ktToyoH^7)hIXY1G2Wxi(d47zCWe5?e#u=&LGGyv8m z0uWGg*(=O>ZN^YQ@~oRKnA4>bwfHO^I?7r+RHR#&xB4E1NOMRRr8K^{&^7T_n|>wp zBCf>tx6Mf-6MDh1_6smm)(nr}@Gl4{8Ch*odDG^sL(3WkB^$uzA;|%h4mBtHT3nXl zj1@kCrZf_8@;h!itE-#zB$WSL3ZX10jhGO8{y)4Q7ruRWBL9?KcIj`x+$~7I$-MRQ z6?RnGv+C4v!x^yfiTX5tLZ|}+fdSQ&qelCadmeFZ7phX@`O&&m%@H<5QbMHC1N;}$uC655u?YQv< z9Fu{mmOC(r-dFbC`Ra>p<5JeuH=ni+?cev}5%-?kCRKM?>QUs6RYs;^DN~xqHG`Ft zf9jy8#=71aUw7Z%+|3xw)x7J0y_5OO%hxlMs{D}j`i*fH)I9%Cdkn(rDanR}@JBkJ z3BtNxHBaL>(wvLUXz=?G;x7hfT#u8HQmq*@OXbDK1M!N=_OgF5MB*GvDv|a>&gjrN z>-KRQJC^jr-nK9!Ms3sTb$KJ6vPeMbrMbL3-0kQ9lkTB8>8cxdlvmcpD_uWGelGm0 z-6r{wui3JMxD5zdhE*N$`|ToP6z|1kZXJ0&v`tkKtnek+GB*oSBQZuEv-Qym_3LC& z0rDnzigHxL>>DiN&EI}MF8kK|aP#0cbcGNZn4616!NVR_e$FQWha7^j#_hMqe1|=I z;?H~E3w-sf=nTc7hvS&1y%0w}{-;1&);^b`M?(4aIDb;K{~o7YdDHd*;c|3`y&pg4 z_#-jlsK`I|?Jn<-z7Tb}Y@+TztTKp3VWssS zK(#<*7Z1gQfY$hNmugPly1z?>CVNO8&(oAdB|tJP(EC*gq>rJSUyMH41Z=ijnnL zK3}c~Bll^4{_o10Pi6$Dfnwf#awjR<#{kj0uSv&pQQLk^>y$1K2(dS^Lsl)w-uK>1 z@$$Pl&;Iexyt3FakYSr~uUA_87)i6w5tK)NRDM0$VYHz17{NqmYJ_kMqECJ@dig{3p6g0?!)@IKMH;dBxO?H)XZ{B6@`xV+&1^!C z4luykAAkDs6Z@Q5ZSGWSFkklZb5D37CJ@r$cXxTCoP}2@|5@m?zJ~H{tIkjAnYUp%`uD~2Pss;L zHlkD*BAXw<`zxz?6zt}KME;WjQ`PXP$$I3nf?K(63dghJt}Dt(BHd1!d3g%Y2?b@|^{k{`Q-<*uf8 z$>csy#5uc**KX86vY3sK>;02NK*vjbh)t1%y6i{oUX2#$HO}nU&At9^o$LvcPg*yO z>lKAQaT=onGBqn0w5fdS$%mXwkKKB2zVgkgOYIJK=Zm=7;@+N=2bF??!m` zm%^5k_#gFSKZnCl`?0FbXOC_`A@O&D$$vm72O4=vM<}YUz!PTx+_~$tQ%i=ltGxTo zMjd`(BzqZB+<=@MtK=rR%pv;zK}N!5&E$i%D1-Oa#6Odl-X1-Uyz^4?b%sTe87aEH zx?$5Jr}5Za#2^_I*Yhk@U4C1T{}Ow;iWYUkvR;4R9lOiZGMC5))bpw%R`JwTnH8VQ|T$8UYWu>T@69)L3L)QSjnJK6>tnQz4sbikztA z=WgHp_VQo$CXe~bA^|W1K<=_28Y11?bgyyIE;nXocQox!w+5E;%GBQTku|;7>~CDZ zP2Jd#*Ma=+{LXcF)3^T<-ySSeNvX%0Vbc*uW834NiKBk>xjpgU2oUCr0WSII1nU14 z9Y>if@TSctUVrxbCUveQ7Or{JdF72RbayUY2=V@IG_3}?mohNqG55Zu23@_4fZ=L8 zo=*=&9&`oWjW-;!ea3g=%-z2jM&o{#m@k?gOzx5L*Ml?YwS%8tvF6_fUgyd`9)u1M zaskSa#(ThZVlR*r7Jc#Yv!k3~&je}B?TV~07TK&kgc{L7C=1bxw3<{M{eYG?M-f+u% z@wV@Ns5AubM31${%wgMb_@mFpG3UOhdfj7V5h4MDna!6>5~=m*x*TYE(|FOx&pF{z zOaS&>bK1q_b7V(avMd?*3!T@9>KpCHDDcQjfx0{cw~wVk%gc5koNLG!XfiIAa1<@O z?`swxLoZugS+$?qww;#MUAHoz9>4bK9ec{pZ)bQ-M%UwC;dP;1x0s>bz9?(4i`>gj zaN!>@80zGo(ezx`i!*xNl`6B_4`qf4yD3187xI~hQEq@3ZQv>bKtnrB*S*vKxMex{ zmt8vp0d*sYV#Bcbemo!XAIWBj1yq^NI*1lO@OKkbCUj=s%p5wxB$xkO3J1*$cHHBe zx9kmFeTT?@K>bGM$ah*KAzr^eClRKD*s5|V=3ltFyM(g+r!TP@wDnjm*T=A-mWWJb z`**QrTSTTZ)Gv)LYreZLkqba^4rHs8KgSk_;#Eif5WnZR^Z8egI30JL8S`>I6NF7i z-5q!R@t?(sulqaP?b(;~Xs8N zPD;jw`&aq{XfiRR@((%r4pWx!Yrl0AZ^t4UEASnLDXnMAkQT_CB-W589Qtnt)qIgf zEy-66r0nP*$;M=*Q4w|3usI4tyI}zSAOXPXI;k1EAS*&itM%)X{hf%{XI;?b#Lr$AWI)&qxWfvzlYC< zk5Zr^V$g7|?%)Od`FE}>BLW}BNB4ad3%m|3Zl@Sj6xe#72V>jgo`EAC^AynLgV1Aq zF^SQDldrn*h2_lOfDUonro|)Y&pvT1Bl5Z4KfvEQYYzS)p9yn*<4hW9Zce1FMFGgj zxVTqozg=Q;SbLDoO~#Y?*f%5^H*(-w?_7-o>o82T;|XJ&7tnQiwl1}H z>y4XdcWh(69lyw=@*nV zVF!}lUw$Qtv0IjHy9AjYdeqQe5aCy04tF;fPNg{Gw(*T>?vm(REjK2l5iz*vL@gf1v7u2?1LfZe zvSb=(Ld!MijDXC`FTdGOJw^lE{Nu3mTevv$%rR^l7P|kIN3{zbpgb?veeB#59)c;r z*JodHRxzMI3toRTkZLc|^uN<8!`k~sL!pNKth3zPi6r~#Kkj{MmB%d!xq$gD}rCo6nqtXu!!=-grZK0nVZ$Y=oD0IaJNP=+4VaMsrq9Y?b^s z-NTc|o$^wdNVoPn;m^G3Zd^~OmwLT_P_68z+}0_7{1GiR=1^gaA!B9f`Fw$o!3!6D z1)snP7!~F2F8SCwC+tAS=p+X~@uK-1d&|>!sq$2ouDs!O^}C9?#8*mY3yTS`D1@r6 z(iNc(s}_NZ%ZK9{h>=$RB$Funf1Dv876!@1o2n5(uYX&&(5}OkCv_m>aU7#Y{vq>- z21(3*)~nCF@{oPHE05y))kD#ikw})A*+nF(VTzjLlhe^Nsp(p6$MKvJX7|zJ?*DtA zm!F3*Lpi_BG?L|cx)u|T;PwCJ2^a1vugx-S%SXcVVH5JRHxP3WWvhA*c|l84d%1|0 zV)u+XX-?!A{yqI}$lTZ@J(AqRx?I*pcKPd%iZ&bHQeM5b>}FsRr90)%WG* zho*diBrL7gnccLFf93E;;r|@>EL?reGx4IsPs2TC4*zcX)`6Hc9FF;8TTeLoPfvK| zyDorn9Ruv!b^6>s+V=re&t10L zRe&VjHr?V`Zks|a)E6R~Iaeoh{x@=VZ)0UcBa-hL*=Atr=TWtSwuO>>1SS3X=rH5`LvG_DL2n<3aiWL@&Ag7CsKSoZ=Y6mzH-bQZzu~C1nkalhGk0hBT#^ zjU>odiQ`3MJR}PyxL5uVm8-|MD!ay3Gu9Q2fmjngE_T?(-(6sh2NFx-#5dS{Cq<<8xg; zt6S-X|9Oxuvm@Z(JL* znqOu(xcNITe|-qndHZ#@(k7g?^?1B&+Zpq(zw49kQ@-`s@+WAKKV1GSVtNsdEwoV% z$9j7C^N`zb{P=UX-tVF37hBtv%Ih)y;0Z_)E+eO1mw?{(eOG;M4jYIn(f681y`j7t z?Jn<3Cn&LHbAoz_O|wHpMoL5@Ey*4(HDXP}V+|V!X$*Uh@*(WD?MaW10@P8rGB`a( znn6kAO=)aaL!;X6n#IT9*$Wrpi)930H7EzWWTT|Wgbl#&-)F~JCB@y9yW~XEPe@O9 z>(&LEENLGg^T3OBW?CY4iL-Ic0#*#xataDK8Bit(0#LiG3)VaYu>$iNiAMI3ob$26 zFtS>o4a~>=M!K{KPTU})+I!4wrA3J}HQvgI=CUDY9kEg^*;gDUyu7j8$0d)Of5jEp zK-_QF=TF_VF!%sE!Z;^mEr-(UKfB0xT#nGhhSRlIw_}@@4MCz^`+ZMe(=wS{OJfDA zEU{iq;-gFbEuwLG?b~BUP;ytrBhv4TJ6A(8Ao;#$hKLy7L-HfPPV6x3-X6kyQSg~Z z&c9~fEjz6I2`=!*ArjV!kwTe@ea^r8t>=F#MWoBs?SjzW#rDduSF| z!jRB6n;`p1{vN-42}34(?~A2B=7N2z)BAhOfX?iy>u(b}mjD?EmsDPRrXkU;ey}vO zNp29xx)Phu-R$_&@_Qi8wJK-g}d9ZkCMgGZMPa&CHk?G55Nn-7<1rtpoznvy?7U>E`wnDy3 z;k@F3&sMD&E8dvptk&Cd(TF8r`y*<4Oyq}^?(pVG%6bFnHr1DjkOd$7+$2X~XgfU? z{Y>mOkUlR8^2e2t|A63`3`F`*%AfGP48}l+2t29$c~$vyRr&Mr^5?7N&v&uXC-~|R z_VI1mXV~{U%b(wtIfc0eW928ypEn|U{#Qi)13q!i373|)!AsC%YN4{Al5}5;F+u4O zzZTtMZnlg(pd;M5>$L3)wC{#M{=?tRdiN%8`!EAbQ3J~Et7tJuEk4+{nl)l1a%E6I<0%sCe^DTgDK_qaz1`$s3eXYeqbv+vbwM*f2_ypiO; zngccvWfUNk1-&2=+33ly_yPOwyd>dvCZp8qRrg(bt1*g7)Nc}>3a%c$>iK>9AA%+T zbB&YRrQ#CaLC%@yA^|MZN#6Igd1i9fz4JzfVBe7DvY#qHN>jDv>G)*UHd~1>$Q)|k z;`(;7b+zq0^WxcO&cCV?ePq{R*p0TjSBjA2yD+%p;_?G|p}(W5aq2zUX!GIcVO8$rejLhuQPb7ha(WkEOaR<3iNfN^MXs+qDzZASDoU*$7 zVM%u1uRl`Y{x*`G`(WzNExU;>HLsz^77Z&=y>F+y7Z=27vgF@O54Gm#usm+Eb-%@j z;4OovVNE1Iy07y7I#}5Jkc}=wzTb;sJrT-+Zl1vnB}Lh0b(lEUKm<$m#6!c{I;?Wd=yTNj{%6 z-@0+(UaoW>-tcI6TMeNb*Ma;`EqWv1z(M&1zizN;%h?+x3)+x8fORYf8st8UwC@e& z&2u}%uk8tQx}}Od5~)UZBV$!RP829?m2;4K0sVaA96sJTd?FQ z06@+A)9DO2zuDKfjgz^4a6B$p_!WE+t4s8)VUe$~&|dFRt5TqE4x%e@qqBiFTv zfY<(4zunGcp84i}-X1;J^ZHV1B>`At4N=wfFYdgcyrZe($kBlzVqY^1>SVd;cA7v# zc>@|J@P>l!KRp%5RU7gIydmna{Bvq}J0tzTa?dzFm!*uFxXx<2`YwwNPW<)QxEuh% z3qHN$QYvt5B)*>fBcuLc_1r}kU-+^;Lg*9OC(cMP9Cy)j-kkonUIcN0l^P{K6Ib~s z5}$#enahP-Pg%q1FrvcU+&xP~U%T z4887Y*lm^FEvUYoY{l*?Y1=ZJs|wsKh;>g2`(`$pDZ@r|PyR>5^`(cb&j~ni5S&08 z)jwbZ@&LA-a^($cVsKO*|7%Xac(K^`+44YkAa?Ubc1Nr{-ri9%`~YA}yp0L94dh=R zJ;G2}$26kv*gasL{q*2q%O9{Cx!#iP0p#al+96RHc#X_e~%mPi?C~L>Gc{0 zGh@?{=-NDO4qVF?Q=`Rs*V9jK3^d-gb(Zo^+K(=0_bhU+DeXrr7JXPDOP+5y1~qy} zM+Lja9h`mtd-A_Z^hUse2Qvh&`rO6c83MEi9b-Vn99Dr?&;PWG7ieGT2eYF*ZyHfh zG7X`~dP625)R0?a&FiDLK;Jec^Rwh086op}XEsuju^n5WBd~v{=zbCbCpY(eo>aTv z`&G+50qkL*#9A4KM zOPXZ-;0l*7P`$4*9$Ce-M4ZSzoKsLA^-JxCY+q6kq}qp11WtrQzE$?saS|IF%gTb* zJo}adAYR(cb87B*^4(Iaeb)D3`-von0dFixvoJXZ8#BB)@Ockau0l3%nMW2xjHAXx z;d1_aN=m(|9D$C@e~yj*|4Xwko-Gz}ad{rM>oWTc1L9{DKk_AX@L7HOVK{G(4KJS_ zvO6i&;;*uQIFmOs1colYl_Sl?5pp6L+K0S>CIh5?3`0{ImO70-W&M7*bM3$X4O{4U zd2hMtnLYVm8}xFZ0~8dRhSC*-O`CSEr!;6I@&GWR9CcXgqsZ&lQ%busavX1|b&`#m z?1s=pl9ztZFB|gyWX~bFrPC7oP)3CP?O&f+D~HX?&&THZU;F^PY~gupuJzBSfce`t zFFs_P@()LRj;{~?@ZLK#>V^f95mb?UAmc+M zV-)@*$iYOT0m=$R&XEq)PMF*+A{nBc1r{%R_y}a@Yw3+U%TNokYax`Y`QTv5aybdnyxDwpY|ifta;Q?o7<3KvD7dPb89@t zruCZNPlvXI0U>BI3hKst9J6k$Fb~a#+*7IYn-zG<(etmK=x)>FhTaG`fYE^=aPpNm z-cWvrXVD$@mJX>CS4s#&RUewc1?4mStej{Mk?v}t+yLdz-zC-~xwRs>U~_N(5>6O$eww(iWPI3a{6!o~7cD*??;o6u^+vhx^RM6FidS`v zhXhDa6nK&FV|W#DeC0d;Rs@<0(eA7M!APvI*yycyeE?Y1{>pG-BQUbdXh3O?45emq zKHf=b#;nXGn%NdKuxh1H&pXtr7_yDwi~!PqSdNG7hs2xj<6*WV^7D*x1kwC(L8iKZ zMKj_i)jx&hKFZcQ3wHSiM*ig!;8gBZPR(|vnGgKui7)%Wf8OV!?P!5=@EiMp7Il#(>s}SiP#;rq1sOq`Ijpm%aQ-&skZo7{JqT*9+E zDe=?MTTuC>dv;I$*B-qb=l}*|w*2gOXb*vPkp>mG2Hj%YVGEmC- z9<{r?v+R!KKOjAwjWoz6F#n6nf8t^qvJr-@g5=j5TIOz%Ua|wqe#s{CzWq?rQP+aa z>1I!qt1sEfgW~IgnEgRCu_>JlqrMOSNc%P)iZ?GljedCF?{z}{%XwTeZsb3JFlH#D z0BOV|^q6U`i1R@>hFB42$eQ-Mng*eun0du6el$P@1fl2N7Hn0Htl}`3JfW zO6Nf%AfSS3Cbiy*_7>o)%XfDEulZN*!4f#>s?W`p1N{H?-aW{U>(1}{{rb-EAyEn_ zQSp+JfPtiq08+95M@njUt<}t?{8%Sh0wn@k*{KjvRUW$)7lBP&aXGu;K#!#=wgX^O z_PX*gfLL3*B9H(qS1OMG2!@GWm3WonZ0(YOY)iNRDamWeA}C4(NzCnE&gnjn-|5?T zFqpY>yZhenM*`7_9E4kak>~$A`7hGf+r-jI~X>l#r$%_?^lOBQY=WO^+5n%T^A z=CyPCD=9*IFI+!mj_fI#5VAJEdlFy5Lip!zKgHI_iaZ!n$4GrX-e8r_{asfzb{$c# z-yb1xi)|~J?$@I7npl6^YMV8`BI$CvIqtRf(td)7j>j8!QFkosh;emnX*0cfrsQWL zoCEhd*B(#B*lghauy6C=$U`@tIY(gIfe8Q}9#i?yJ->Txf#-VHXo8sg|LRMJckQ>2 zi;253e%yp+j+l2`8BeNaf4UHzR8n<3Aqsh??91V{RMz1n1*gsw)Zgwo9eXg+l*Dx_ zck1E2&~RKRZll=n=#--H+H?8O7nOa!E8CdoU&Fuz9{=eC1CMvZU0ooP;=ljt<$YOB zFNhY(6zl$bGIlxpN(m%+{7UeKTql(-Q9k$Ul}}Q;G29=yA;!L!kmPUL|$!AzOhyJtEQJ6Ym8wGA9 z0^_f#s<`!Q)igV_XFb6?bn{=wbPV0?>wk&T9|EfMXw)1l)wF-aan&!Yektmn)9?zT z-mBfdiToc$1_L>s@1tWTR+5%Hc z`5!*Ae9Wkulf?|aR!bHYYrNR@lXsQ*K`vFt=jyxQzn=?0I5=q^Xrvff_Y%bx;S?5K zUQ?~3Q-Rc%%C(i%P+#wPS-A4vYx!!yJ`dRa3f0DL|NBH~n3;YfGRQ3{mlCIFZ_$U6Y5ICcCqTxO&Kb#6=U(G5h zIf>Y=-okiPR6iBu!E}sjUp3BCYYf!m%8o`IZ~A&{3z5FHD>J}p=*dR>KT}NRwXKzX z)}w`0f2wRqdo;!W_~EB7o16Qh7mc>LWn@~X`%v)4rNGRKrx|A|y++R*EGh-V%keVB zg=6Llr((Ylvemz_cD~(xkmKIk>gc*N8SHE8yS7JB7@k*i{8frgGzgTM3R2&&U=ozL zWMvh?_LXxgw--basryB;t+2hg=kmPAGNFopNm_B1nsm<>%qBj06NosrwQ%pC}uTgxS%*I@8GO72fH)|zc-3v@qcQcQ# z2hmLF=jj{?htDr;W&Q1~`+BmI;n&i)C5}@Fi^c;^HZyeG)%T+5(d)*?MLt``b-f*N z=K9L^E5D!=Kf9YIF7btjUdDjmCV>e6wJ`OwoK6hp=T|n`D=_Y|)O)h)M(DppALZ*s zwBH(lY9oh*?y!K?qTLd2>9r`yFtp9u`{G8Hsi!mm^r8yT&ZeuFl!VhRy*PVOaz2~&AS8g0*Qz-zC(yuQWjJ+h3fS@_SUa!5xU(o-!;%q5Hxw8hnX67viI$6eYc1SIQ$U zEd{5-KNyYDK-ukF`OqU9y*Z499t}2CkKGFX-r%i8BN;zq&gwprw->YGo}_wT?0;g6 zSt$0*uri7M^D6I@c^>cPG#rtp%1t+19d4;Q5zKYsI9^xEe}zWH<&yMc>6QI#q*%X^6|jD5U$w zgo`)Xmc*QzaFteUa52-bmm+CBD^d~S@R-8>h9mRkxzI5IQmIH1dK2O)5Z0nSQ_;*I z&_$g;Qf*)gJp@GYe23A&qHjmT=~DU_ikp>L@2~#a6Wo8~y)+?iUOBY$!Sxm>(|Kse zZF*~;@sSIrm7g$8T{LZ8urL>*S_JE5 zM0A?VkbzL5S=`q{ebB=sAGW_4tA(pQ5~J3sZOlffn2yjhp?d|mayIn3qF2;E7?s_q zUm;12Liiq6J_~W;ACr8wj6KiZIKq>z;sQE`tY*Tee=!wd$<8W2 zH>0EIb?r$FhJUXv?WlGes+~+)Q^odBNFfT{N~nSuKHKi-5E6z zmrwa|+jONr?NYJ6jyEJ+Npnc{SBlBf$i!yWFY6!2?`0I}UUn-nAIy@9>{GbQ#H^qg z$M<1~a6X;L4ce%pB$HGi4xf+P{r4Yy7yaeG_7`bVeB_lM+&p#a!b)amXZ1y5O?1ds zhcc#YmucjK=7r*hpH?+Wk3GES&l`oq)kcyN*)M9&glGsy=c`Am0+uT8`SsNOQmxOm z)pPWEVSmaTsMX^S#3*4uYCp9*8F2vVi|Trb`1%^OPnYFWbX9gyt7vh_&pMbofGrKmt~6*8r4B;Y{UuUj%+~$M!@K1osmS+&TIbn& z-E7~_+!~n{CTf|mKec~-`MV8CA{NV@JpZu#E2$%9=YsWk0Iqz2IP4?XWDZe(_pQp3 z0XQ7aK{6w;-<~gLs*cH}2gUq;e=`Vo1RCxgDDzW7z&5-dw=ds#Y=QsAk;&!%|HXg! z4f;#}@EgH^_+~N1QA?H2xLiVlZ*C>+YR~Xy%X|5p2w)LUy$Or zNbQH!HzTWjGkMr@7Y)mtt;xdnLL|RDc2Nc)Y^rWs{(QNO1Yut}7vXQbt)=HWo?q7n z^0&di^SMP@`Q%4wQvCYae?UL`hy9r5l-%ZqkBvp0yu=LUNy=3a$mPG-Qxg*wLx`hh zzJ#HhFzNT|BmaqLUYGdUR-@)aX0t}{1~XF^*{|ErhN&(;+|Jm~#>t@g`s1h{)LZ%S zp{l_ceGY2gcl5JNjQIa*pFrz*?AcfLNtR!R2>^G49jN6<#9e;4&2r`=%g0Ql_9Q0>%wc?K6xKS*t`4y<4K@uZB*c4_ z#T+8reo^IDgHYySahQ2!tJK}FaggM>7uLbN=xA$Vz|Mcu{oS_G9z2zF?#JRf$ z#C;Bx;D0(HT=CGQ^7wFgaVBJ{tZ`#v7s+#5$56+n0!5 zZ9ay!Q&0LnS5kY_d8i8?`PX9unCf~6>eh=-xpse{J+b#<_*mk$);CtpG^h@&ApTWr zs?F@16Atm;F{}y5X>ieefC~h`UGhm|1|AP)z@`D|ThDqTe$@LZ>c&o00X$mhZ$y-@ zyMOV!xbyne?bN+KYG3-c>i0|44rET-Mf^IwL$1mKU(P>C&&kiXVnFW(=}g|ghN)xx z&mUPnX|9}OAu=oF#9um!p9RV4djUj6&Xv2S^Z?L6FTV>|Jh#i`X{5JUGZy&_YZQNV z>WCM7vAJRAoaXw6FS(8u>s2}3&QRNuHu!~9q&bUy5piIudo2rPJImF4s*o-Z;~Wtu zV=YQWsCzN=H`!&%h_WKl1Ni2A|G@|7Kbv6w|DX8b>vZNfe}~k4Cq1u9IA?ZL0}T!C zRz^stKg9@5(i2b>weg?6!zYz^!X0u{)ZcGw^p6773GNM0+tX0(mahH9socqjUZ-%8 z(?)OywLS7NBvJ$HJ0b~*JOBSii?O)fI%|Db;d!hM~NNC3*EV%TP=L4!2#=VY{Jb#brfryQb;u8i08Jt-s~h#ea(B ztjM=w--`aLw5v;^zocV%|C&~p0j*=OMknSnS~OSqC&&fzowW>6QD2b9OOZmHh97@X z0@sV5n&i6jLD+hxBCSa<*FEtOZ*ieh*2_vXzix|eoni4`mzLvAM*LRk^d8?*w@f@I zLHs)*A4NGQUw(HY${S0j{84q=>?(=|Bjwtf1>GObO{P+uq@1m}ID-EB-+R|0Z!3K0 zyFUnz)#v0}97>iJr9F$pMkVYi-ZuRp-{J%W6C`0|gS(~@)u}~oMcjs-AG^=!43ZmZ zygvO|lr*KMY=LNXTb1R*=bAa4YeFRU6tKU#;+@=Ii(bqJv0we`m#LVa#0*e9;gr=x z{q=J#;)|AO^HN;GxzELm=SQC>)vVqYHX{F>=j!Ko_l*fyf(Zay!RDR+{-De~ zw_^rARrC)0UuCIJvZX$KL@kPBKfjQ_tq8D-fM9kmUBNlqwbn?!t%nLogYB_Buw#(m)QzGlZiIvn*@2T{jAn1zgJ$KqV>LS)@1WH82 zTyLl0{0frxFmRS>(MF`kG98e@qAe?>{UXqtmxYf5zz-fvfKaT~5I`CZB;m zFU;v3IHk#6&|7m?rN6ZYsCL@YiDr;8wWiBV7u_W1AF*-kv23; z{L%HspzhumUyC=`s*(;{WcE=F*4yXN9j?{;qWByCD8s?ZyliZ{p&i;G6axSE=~4P- zzN;`&-)vjuo-HBAuN>NSiaN?2f2-Td-}}h&BIj~B^RxU)6!-o*%zWsbqJ<^>SEa(R zH_1xd)QQ8aMnpz`97VnohvfD-B%-+{3RxAUPF6*Mt&M_TNqlNbc{5-o%2-8A{VG{B zB;iiO`b1Hsr-Jl(q7Vq+#6YRuhOkEowB>R^s(noe3of+EIdDhGxT!>+;6ZS7;;RcX(qlw8P9B+|Mvo zL9Gly@pPSKhBsC7qc>t*P7PFY{NcFBU)J&a?`{{-6eXW2tuWtv5aNHjuqGgz%PyJ^ zeIEg^O;|(l$?QsD25b+(yVYc1!#C$3nro>M-cduOxAJxG{hSO04(rvf!|pe6xEDe0 z^jjn*y3gOB$BgKIh`y0OTBP)JJ;FbVE)M#w!qj2D_Mzotrr-ahjrx~0{-X}44)oOq zz~}6F0chXLhQ)&t*wGaD_b51HRsx*4D!7%H4`zgv-lp_@Z4QP$oT2ieq*P2IOv?#6 z^gb%%6FBK{2u3Mw7AJpw#!OUPK~W{=L047s=b~Kljr;DEBVRf)(QEF)Z=9ibzVTK# zvLNV(s{BNpd5ZyatrL~U4DYGWn$x>^FdjjGs^CuLy=W5jsU_da+Q)7$OcfKUMR9ez zRW`OCbuRS&>V84)5Tc%4-fzoz)l!u2N8cNd#QMAdkV_5p@_RN)docBDQ{<~LGZUYQHsUCmXzJ( zbeS^1RY?X|cfYnGj}`W|4!`~PJ^I(__wzliuhcU}IyvaK%0$K3cJMnN`mawJIrfxS zbIuIdC#-AFlQIB)-BPf*FA|Yxjn7VQWJ)R583JGPJ%~p4gjM%kj3!6d%_IH>p{)&p z?nzMb_3+0Fat>{aDl-aHV!ta^#~@YlTh_iOAK;fFkFj#zg!}?N4Jd3;He~J3pYmeeyyQ_4O5!+_(idJ|YP-$Met1_c`sU%TjXXTGD^x=0-{1gGu0Pixr0((sFKw%ED@6#hv&M<6^ z!n^nls!W0ve*fdGUq+?mR7?S>_5E$1;^t`RK3eScJNf(Aiuv!DNd9-}eTCS6UEX0L z`U~dyL){ywJ5D-0=(oz9L`f(3-48!~*?cIALC{9QJuLV`ZUL1E@s$X!UN%|JKT)D4 zh<;yEGUiZlk{|CyOcXP5+bR-Y*np!vPbqEHIdt44n= zLWnw^mt>zoB&+?q2Dr6#Z;XHK>@WQ+{coTCI8BP5`J-#JeD?qFijmwgm478>y$~fv zEIlTFewfp9?|TBOV*uRR>a|fKT#M|Xo`JBaUw<9Zn-~pcB1Wdr+<99=W@N(=Du0Ej z>wVPzM75EJkLB+1>x#Z0hkFLXXUV$!1%L6qH-2-Oz|64c{Pkt?#d?|mXc5*N*f|K^ zZF&jbMQ_l<{C#>izaggAfbDbpqw{|Hf%>UR@0YCZ!5%B({r%Ajdn@LDWd8ox{PpjD zhsso)X-(M~3sWTiEuE_ZRL7eGK6rm7FPMva7m*I2m%RYus^ApD)X7{fh7N=X>9F{Z z0x^y5`p9azRj)HxW$AM$lOs-idx7IJZImqXUshqS!7HS7|3e#`W{;E9dX4A=5c#GC z?!OA=qxdj&k5DQ7 z%gF!Y&e@hr*+=;y`bc!TyIqrQ`;%d4CDkg13wJC52S3WLnU zGI~(3+7DOv6Z?WiwO<{YRF5~dPn6NpuT^>oL@lFJt*Cz6i2hjuL+6F@KlpiS85`Zskdjk={em_Q?BlpTC=O2oes-4R5n^NNn!kxe^&VG1K(QbD84?PCHa%3rc4ViC{7O>uUl;?#j=gr4y%l4KJ zlWeJ|zbN%7#p7a-t&}I=#ScG1ljKi+>$~oA7xDInoe=Z`mVJA}I0lZNZ#bq9Fb;>! zE*&VCs^nUU(R}|Ii^OXnjn;E?tG*@v5skRfOWGDnw&_>ongPYScYwl&%|qK0|1BY= z%IhL=V6TqgSK1ejr6T78nR-vE!oPBC9RIivk*nrMdx~l}EIbOIfigGd-;wv-`06r& znZ%j^b0Hih003AQIsW3|53JG@F%<^D^7;O9Kg;=``MrNFL~>)q*QIL2RD%%NEc8R> zq+g77dchlBbTZC8mk{A}|AIiSiDHK3$ps)Oikcuu!_qO>$)OvAgJE!OQ;p@AlJB?R z&5N#9RJ1>jv)}p#NGwF}&X{Yj-(P5{Ql{}NmU_&eFOIVYix0Y&r+?Do-%|7d_-1-R z>rb5zAjkg%aqbPB?@@^-mTJ3KeKdJUM3XXpYNezHg-8o^R>n}hJ@iQ= z2e}+~zxbuh^MZ;)6uTn0Q*FSNkfxJOl5s__c)_Qm!u~-t4~dxb+S~2NJ(noBB`SGV z#=l*!*Au^y!dry!!K#kj|B*A44g0{rRd!=lwEK z)Jpg${bx}X=V=d7(o|9ghA5`#_;we6tf1FsRHdI)8Wg@Cl~kLdb|uffu~65D#Qh|V z&Ach78l>1$GQX`= zlCMfePl)sr#cfa-k#??tDWsKnA)S@&&|;fJ55N_7P#jW@C{d;9p%rr&cu866cqe4z z_Pv^{p0MCr{NAf!Y}Xd?5nC6AF0`)s`%gZ$nDa^K zKO>dSWl0BQC*n7X>oiI&@oG^k`5pq71|)Gir#lKPz>R7pN~&UJS$yIm1OduNL^$&lsojn+hqCJ>@242r~_q}lH&#zJ8hP6 zXuqn0lAeH==TAX2#)ibmzwQAj#aI;4?3(M1Mdp%j8X5r1F1?E?61klJA*TCyQ64^? z;G=XpiuOU}1OIxdgX4nY1aB!!)vyxhi&(FxBlYeol4Lv4vc+|rSgs-TD)?Yk`=j3fi#Ns061xo)ptud*TKXT95I9_ra}-#xcXI^db<`7FD4 zKg2&6g*5^9&gV8A=n??{W)^!7xN>OM5t?GA(g0Wvefx{c=BNLJ6>=Ht9C``*R*7Bm zTDW-XYs0IAZ)OT&k;(tB6li{XB9itZP!u{U6fZuCtm@Ab#R@v4Cf1T@IwYCdIJ_1& zTv`wt@g9yByKR*n5#=aeaZ1$t5+UE)KoZ{@3NL#@RH|7gaFh4hSO4+h-~J;H(NFHb zmnO+4{`q&vf2iRzkT7D1{L#Cd67b8D+$d@2K^2XR@awDjUn;h4gEY>zAg=j z)4{{Rex|(zEWUxRy}sSSocr%*d3m3D&-G`PFuO0f6RQVz-+bwbod?a8e}Vu2Gl;Cd z(Hk74DQ9X8fTb`2d4AT33|3KloultkZ~V-`G*oBbM;f&$2vK`SrUSq}jYsE@`)mm( zP&g6%wOdEDBL4cOFK>QenQg@0^i4dPml=*0=3S0X`CNKDjt3l{YjT?0^ofI>M<_C}%1SDJMGzvZW1eciP?hQUcSJBIniee`O)g%j6WDiIoKUa49&puiWawb^`l)G9?@El2+vQ3VQ}%TSVfYXEY(f)Xu`M318RjQmnrsO!>`L(YOBtP-q zm!COK0Ne#dg&>#!0A>tXy)~CF^-UmvrktrZ0G22EUpi`T;%9Yv&k*VM3Ywg*2)W-J zU$3p)5`_lqTDseIDb+wl; zzDJZ#kgz!4l#IWCGM`|xSQB8bCR<$&Jx2gcJ9eV4wR;ZEg7~*gy#cU%_S;`NYHs4^ zw4ey#dXBjlKI&QyijC3FAi9}@;PoV;p5iuCZn9U4qSvYXjae369CWiqU?r0E6ie4#KuMHH)kUF-oAOWkVL@4RjsazDCAXR(*1;MRT*A=eO3-9ihkd=Y6pcj1F;8$lJq6r z09Xzh z6JVsm*&vqF=qi<&H5>!vwg``p-n!TPb6+*5OoNZx@R3NarZy-Ip2din+$?L&5>1ccSj8xB1jga(bIE=~gy#O&SrX*Z9(Juy+7^m2l z@LuB3I2n{IG;9dUZTXdar-bu*J}RDk{8W#QnkV~VuCC918Q*J?Zb%Zr9yU{b%(2g@ z>O4Y9l{N-y-J!H3-_AT2olfNJYCp?tr5}{}1mnS12r^e1t|-y|vJ}O?Cg0dgQ3DC0VLnO|qEagO5{&LU}^{Nr5P@M0okoPtE{kGM6qMxVX z_Rto$EuD50Yuu;eymmW0>QE^{-VlU?NfxV^C+1-n zq|d)PcJpk78I^v(_^~G7r9->+o14RF0su@0Gb;WqGi3lQ2d{nci21l^OF@`YVh}i8PL-aFg0HMx;|iI&UV$j+!?t{j zgJxIi()}mb=`H@T#GQnv$`Ck}=2QFCEXyu}?t3*{YPnmd|NhBF|1BRWQ-I2k${&(T zy(vFaWw*jWZDCG@CMR-MrCwD9JE!^g$!Z}YPyVywAX@z*;T*_vc&wM-2=B{;41S*!7sGlB@os)4e)Hlt09xRWg2vfG4Rs z?!6?x-oHdHBcCdIl~OUBPP(P8x8nVnq7;l}I!v4DX9rHQ#VGBmaBW};GyeK(I88-k zm3riN5W2pS^P+{jyCjJdgQR<1!bQWCj))4(;R5u}!vV$1IJPYuZ1IV{niCy=?~Sh> zBLF5qIXD<&0s!bPvO3G+-!hX1!17DR1Q?NcmR+dYi6fRI3!D?tqa(yY@3@-qDrcWn z=-g>^BC16BLn%^;N!+Z8qiB&8qx4b8`boaDBMI^XConUEAvQx`}}~IevX!bT5`9^9c;~49M^~_2*L^7!U3E_51I=XSbdCl1nu% z!Bokvao3}Mt+LtJo#E1}Lb{dTr&OgrrQIaHcR;`Idl9PZ#`9nN{pat0FMZ+H4(<54 zzy2$a695z9v1e}_F<0m^0RXzl%B1;=PM z>xjNr!f94j+)k3Z!r_zUN=l39D7<1Q+Fz{#rK9<3t>{iv3XW)>!`7 z`Ii?7fNf^a#cKKoq`s`Hz!4AtHQq~G|$ll#Y`c$ zgS3&Ng80$Idh<&991QQU#t76~lJGr9dKG@_@t-ySelA&bz;b5c;me6}rno<67^0S^DA>IaSE|gX6^R%29M^MVU#I_ChGs}r~f1kx1AR5U+Y~Y0Je!D@1J-d0RTFM z75^{Uf%_l<20-x_`d>O_M8_`}`SGe(vLSG;1f%;KYV>DO=zGx@gjmKLg72YvPuK{% zJRXTko}(cMx#1zgpM{CUN|ELw{1SR2C<^v+jbf=XrtAzuGy_pWx~&E4q8ve)k5N_z zlF&oqTgqBZTgjLCkS#Ye0Qe){{a564YV19U$0_Eal5g!d?y!2wEU+HF!%V-flx&it)wQ#S#S6xe`RjC=c!WHc$dyT0{&#mgo z(69Mpmx_sb;Un+2`Tq3J)-Nl&xcB$2qY@ApJ2u4(dH(=(3-cRt(+ISq5dZbS095$J z{+CyB$^Mj)Cw)>POHT}y#l!?k(mCQXoTfkoQO+SM@7Hqz%1=z?h6jW$1h;`Ca$GDQ zby)en3js&FK`PIplwW>AG17Ve;>}Dl7$8*f;cDuKifh~bWg)~KnpPaxPwu;i{&>Oz zfGzKO<885~s~o`0F@o(I=O5VrIN>cSf-b|OTy-ahH-2Rgi59Uc1;(wX{@j5fB}~Fv z^j9P0)jI!_m=M;fHA%Npx`L153#SGom=9KFf|c=PWm3qUH=?x6sC^@t#Y)6qq>}gV z+gV8s^8DRD_bK|zzw%4A;t$=C9-n;d*;f#y1!KeJ{SP=lLjZv8Ak=5cmacww=UD=^ zzyQ?ni~Z%kF#$_dnt+(*;iQR|TIG{my{W{HP4ZExIeu|x1EMf3qwAsCPUgg)m+)B> zVxb0nsZ=SL4hlO7+YO7mI{xD34@<(-zE?uI4$ef)7vNvkHT8W*Lh+JqdOR4_o6$)6 zkL4rZ{eFy!muX7H`OcI8PQvCM2_LfdGUP>VSc=F;zROdi^WI4rGG!QOJ(Ph^QTRjw zD={8>nu5OPDDu6IciU3tCFJlkYoix0$&ljX+f-5QqN4jlwLo2aTz5!vu99fJGA8Uc zoh)5>{9_~d|MIUsPJj2$ev| zaF1mBjb^!|gqasmB`%{Ts4=PJ+WUXrHuw#Y8yKtwn3vBL(IiS+mJ+?(r85R@`+6Ty z+hs{FfLpn&k5kMjT)vovL?rSHg#p0fAY2h4Wqe#yLLyK&L*+Zy9)6F|gehhK<`Ab2 z;dwvy*MDw7)O)e41uy9nE{TXHAMK7}*=4pcC3{et5_iUH(NXUT$v6bpOA)Sz)VBoD zu6hi7yVXV{yptF~_ijA&a#=eEfZG>W7Ub|y^oa@Ik#Jsyb`Zy8cykqvfig1ouTA+m z`fG>ih0P2kx8nhB8_@>97Af=oX^{W`U18RHmXY`*-=q|k z63Xq9PtkF?66H%}+Ig~$-<~%L_N5s4mk{yyy0Kg__5}D~elQ(EI@DjzBy3ZI?5n=m ze_8#(FdrT8pFbgzsL<*QDUYWhr?4pS0^ zZYpRirXtxN4GCtU)Z1ynUX7;53Ol5_e1_W-a`@Ag{oDsb6My;j)uPFEM7LG%t6~-s z^Pvoeww%>{75J2&YKhNH)8mtv9{_9yD zZ*$A+b3aS2!~|$5Q)^gUT7ArvVV}d{RB4Es`(6Ypm-LZoc9Cm|1BT0ys>Sn2%+n?> ztz3yucG3PYAAw5yk??=7--KdGQfE}ke1E52$q6~v8xVx5^8g|8UpfMLE4{6ijje$!65;YdUi+Jzvd|DCdZL8?NZ;R>$p>SdPcKTV1hkG)(?r4iu zI9xi(XR@V~pLM|e0AMqq-ah~x!43Aka%k5n0(S)rz+JG^U+!nrTQbV&5_v&fS*9F^ z>9n6j5gsZgN)*^pb8|EU#YU_`3xkVUIfI}mOVg1~EEX1~apv zz~}n7eW?2TN#wtL9M`Q92OdWQ;TM)TW3j~jl5St6$AGJ2AIc1{xDAfWQr)mBJc$}U2#4TRcNxukw0G|5#X)&3wcCqDA7dmG|L!t0zK z3n`b+vHp zCjRAv@1`br_|?~mv{eGjq6XOyeglK#sx`&RzxaZ>c z76^a}cAN+gvdc~7{fmueKC$bV6*lGz(L_T)>=7S%b-`$&kgF2%L&`s)7ohT&vZ9kgiAlFs>~WCrROgz62?d;v z=U@_IsZj3_NW4K|ALD1;Bf&KS@>>lUfS>x|>!eaqc;tdH+RZvTF8aC8fmdlT!8C~L zLUAHjYjU02&c3IBh9c^reG*T-dzvgPbBLBR|()UcF88CVIo?d_M>z*g+I5DD4b%NfTFG*8v+?%2*sZxDNU!gXi2=M;eCDn^D)W1-ila(x!{SUqT%%$o!uYP`a->iF- zCQNR`9wrF`7Mu5PF4D$?g}G@T9W`U=)x$f_${=4tZvdECL{8tD%a>5)XM2DF7&CVE z;GgS%$%q=Z!lqAN9Fj}6_aSr%X*4dCB!<=FsNNvLOJ$z>5Iw8E=@?HR)Qu*fd^d~9 z{BA}4u9Rs#dP5S$zZ>wXg<^0vEV1g5-A7~j|F6D2EI=);CccZ#lWu>AUi-TFN)(6n zB0Tg!oqX1UUFG1HkAgPWy$`kRm1@sJ9EXrB#%lk;%4N1D z8NC5u=5Paj?ZjS4`Pn{T0JaHZ0?xABUNSfNv-Y_U>iaYrpKnvX#cE7I@s?yE&)#QX zL}5>U?11^3#fiDtzgBL_Md&$*#WLdW;>ocTXh>o4=}NBfyXs$1QD46!9S)A8h>8CA zJ(HgS*iwuEaKhcc#$F)%V~D9cKHWv9sRV|`5mb6T)P!NoX%2o|&iA&&?WBU*jv=T< z+bd?GMp!2~^`yFau&1an9;3I<8i&XF?L|DN4-QU5yb z?d8i2h?^aGmS4mqVY3Ub_0BXl*_RPGcT>d#y#Zimuu*>u^qmMW0NcpVn8@eP^uKbn z=nas(AM{y>`TM*IHyf~v-e<*h!W=pR>|0q-fj&-KMuv+b{1UZ2hv${3vxu+TPo+vO zrw?$oilTJWnJ?wS#furK2hIO<_7 zh=an{;<=hi<4uLA_rm~hSHDx%%l}tGJoE;n`Ab8_L>-IYMtCS9Nn6!{#Ql`7MUyzX zeYK{bI7fPLvrcU)54mqn@lrL{|4!JPXDe3Ck_n21o#=#8z3~Wm4eRN=U#TX5}Tq`;Jv=ch7ARwHSIKkkQIFM%6itWIueLO9j%{^P3oFzVr8!X&wJf?x9+ zmdYoaMD%0iUSb*=ReBzV#}iXHC!yW`d`o^h%kJI(zE{4wLYu&fn?X@YYvN#%uo=S+ z`fYNuFY~QAF)HtWBiP;mTPetv4kZAl0DCPX>OXmyz(o0f7k>SK(M%_enBGO?6I8_M zNh&@Oj;R|edRwNO2&G9ZesHl@vTl1y$tqPF1J=c2!TqV82I8P*mAofc?#A!gPg*RA z1pUeV_t0m*^aW~yvw!oveB`@7D4S?RZIjSR`!}vVxr)GPh zD@HhehRM3+PGg(Xbw{?HDrr7?zsgvK_c*3K5!KfF(Q8T4eu_Ow$$2%8Rt795Y-vv# z1CL&~anWq~08N^l4qo}(&JCq3f$n1S{R^gSHD=+UIWg_`lP0J|Bon#pQYc zih;f4^LChHJ%4g3Enfaf$W;l^YL-;v`Q8SWkW}tN(-hN=O7ZX4(E`&h-BkLI<)?1G z&OYy+W96M{7(2~+VOISs6s(MnDQBzRgX_Mwrt;PInnX=Tz_V1T;ktyPjApndP7EMFiF^S z;|KjVC;q8_Yd&A5F;b)j9p1GYX+fY%a9JAqsIBV{@!uRU01fe}{+E~MXl}RpBAhMb zyHPpn1Q9RhgIRDf-0(h^RbXNXN-y)uWxYqxMdo9^5e5Ijy4F2KcTfmwa=Y}eNvHu| zZcobne(RC<3N^$7WeSiM!$VPcDmyZigNZ3D?4Jk66IK!xwNH=F4FJ{yyer!fw;z$Z z0l!{(OO4{LEMI3F{QfD)^wC{J_3LUgp>o0EIrD~~W?RMUxtz+fdw0L@#xr9tpID3s z;Or<(o*g{6eHnv-rYd(9GP6c~U8+23F8|C{}< z95u@Es8M14Qt*4BE=l#CQ1_pM0564{%ggsO`-Z%H6*cy%&dW`245EnFp=q7huZ6TP z1Im68CKV{R;`fi=^KPaFc-U3|Dw-(1`c0gq%HjJ;!bAUto6%Q^WUizP>GGKIBeBo3 z%)jq85#LlEi`{Z5uKZ}SM%n{Wnv3#<*pXr1EGr0!-#;adB2ra~!rqcy$DRQ39X^y4 z_z#94@g`+W|K2aW_vL4f-_0Q3yT#^#<|M~y(qK^V)Y9mn-vT+l-I2~PNO*0q8@&Ob zh1hhT-5BKC9vTsBpq>{Ne%<^?e}ZJF zXQA#~*qZ*FAAhL-)w47~_MX3SnHmsn=95@{>CgvH5SR*znSL9b?8|(m&c5`-&Z9J8 z_B?yT{Fcbm7#{!{#a8#R6W(EfZ|gu0K#SPl|FRJsMK|tQA8q#~K0SqA_o+V|L)684 zPG+*MP~)D&D8EZbcb-C*5DjaDzJQ<(lh=r<7NOkBkMF;in&5$3Z|SGQ!e4cQ&~V0$ zUQsH?6@|R7b`#$4eGTE{C((BwRTn=pA)0`I#NG%|oiK6kf~q(lj_gzQSSk^F3j1^e zkXffC={8mK|4Tz-qBMLWvo-xEEdGlotTi(pz?_`rJr`bil0fGv^8OpF_+!OSetW(V zGa1r?nwV%0%sl4D<)-cVx^j5uZixSOf*ydD^1{Nh`Qf_#wE2LJsK|Sf{v&BLKBNVS zs|Mu7o?k>K^@Q1jwT3U%YIrYN4vG7Sy#Qqog7_S9=Q+&dKl3;KQ)+@w|Isyi=FC5c zFK7|3MY9&mqVsBoqvInY;nmlwy$w{|oOA`HA&r@tp*F&cD29T6vi!&&^CSOhMma!c4zS=KZhD?{32&$D&%$ zT()e!*D$tVTd~4FCprD*Tz(3vKJ5lQ04>Fi57^iL%F&z#yNyCy@!@CTm=2@`yqgfL z)S6D3XD-_B7t8G2Pn7m3*kv=N{>q+*sB3vxdq z93FRssJ?zlM&HfT-Tgfw7dhdp z86QBjLI8{zEBx)fx)|VlXxB2tfBS&}XgT|h2>W>d%S-0#W&f2%fc+?3ax?V$D7`3S zAe1YQ;6y&hWr@lNwTpyHP{DpOGAert98m^`kbki+H!0bV@4ttsAs&7;%mU1QqN-p7 zJUSi5!Rd3ZdCk8bRkwa$r`u3zhNO~XU$f10edgNp=Ch8%Ol1^Pg@}jzibxdssk!mv zJN%&Inu0^+{^)rt{Ks9^a~#+o6KX=V2rcm1+ZYtwLH3@%anfAX`=}v`y#MmLZ55>v z*tvwVp*iOPkR%nE?tNH@x?rTJr6=WCa&zD zeA`y`X{GSjG<ipa+bF$ubYtN1gv$+qsA2J`+miX9(-`2)aKfbj1=jYVz2*7(DP zUtjEzJZ+@!VktUZiatAqsmjLqv>$PWe!PHmO4P0B4TM{u(2yDXUI4$G&z&!N9-INO z;{pEGfuE!Q_0u130J8- zQPil`khAZr{V=(D{so~*4UrE@7q4cqJgE4}mTr0Sk#h0MlK=R@2O2Yz{+Pto^smXk z56_E6mv!_>3uCRLxzcMO^=UJ4UB7Q-IJ9BX5%{ndpV{MI@)kj-8PyIC5M?8{T8+sS z_E%X(etWT_r^xYt&&%zO_}9_kcmSdvpZu6HAOu=VG3d8PXQ)Bil=pu(php1Q5!16} z{&O4=|LLJI(FVrLm4&~$(4*{WBk~qaM1EJ95HG?m&!jX5J`i5^2UvWPj8mcHX8aXa zBZZ@ArI7niPTczR^#A174pCESK>yv}evbasx4x@Wc>E!gjH&`eM58JJCAIX6E)?dW z==|N_cae@m814~pJs0am^;zZnSLYE(DhE}L)R?&EyB6^uMN{(wknQrGo8N!+Af~Qw z8*Qlg!wuE@-wx0t02C(h!Y5G5bNWCJz?87J|JDA#(f`e(Ips?x{QL!@4*L`;21%JE z?}TNhb*##4DMt)A)8Iq=N;B&qd8{}jh0*vI4?aLm6C(V@6QM9c7nSCxnzLVt`p2FF ziRP%1gReIbYwD}*sr|=1eAnZkcEuFUgiZ$<$~Ow_(QWWqT9xA+(PLmE{=d-0i2o>> z8xKG`cyRmj!o_Pl2(*f(EBg@~4cZJW!UYkuYLppV5^?W13Ouv7p)k!@8e9 zcTI4OPawY?vJ-fToXs*h-G)-0+d-q_0Z3M_9NM*?Kr1LK{xmq~m%5qve>arhxBLiU z9)W3R#azwL-I~kKBE@I=fdQBSt}Xo4g`Bb@CTeeQ-V5m@U=m{3{0!it}Io8a;CJ$K)s8wXZ309tQtv@n0PPyrJ}-n!&@#z~lOX z!hT&=DL_18e}28NzfneFX#KLs;Wf(mbVm1_da%Dd^*8U2p1*!9BW|QZkGbwoy?AKn zaRQBEEB-V(({F(sH->N~28f3V#e_bC^q}d$M*Gdr$2sBb5+ePx1q{H9an1A!m>;Yo zMle2EMEQk6uK=srWc`H^XAX|A653XV{^O7Brr$XF=cy?Q1MuqWNo3y_--!wSq#mlO zI4Zy24V$3a@d96?S0nU?3;n_sVpn_}mST zUbu15oPq+zqX3!nZt zHN`*r&wra-Q|i)s+{1!lQC>~gsYc&j6u($-I5J-~4C_b#{ceY|8BAALDcIlW-L!hgR?M$ zAy!O~?|GWL=PW9i0SycQNGQ#KEhTEBIlP!fAzHwCpsK*+f7a34M5o_ zC9<6bTj0w2aLpsQI zv-kY<7pURrvYqVfr9-=x32cavB7}j%+lK9tGXJ^6IX#b@ey~ws0KkSZhG0>0I*@Vp z86#8oxw`lCx&P`f(Z6``UDOmw4}fD-gxwJb0$0mvx?>_$`g3UTZB4pQt-z1vMTzQD zll1F$kj3*o;Y)93`Ew6XY5C6W=20UMn@c}HdC={o4dp%!E4D5=flX1E0m<#4ee?`$ zofRA9&!o446hyEYU;x0Tu)PD>zz8j-1B-w2SDvH>DGY!wnQ33BkK8A@{_HFMjEdgh zAysEY+0XcP{dk1xc1)CpFNx&O_j>nTLZpA|xYUEoO^J(Xnhmy1w4&UnP+tb~OUU~l z53Z!BF#}xmFcY{dG8ycD@$ha4f3Rs_0Kk?gZ{odc)DRE<@O8TIm9L4OP>Ynvr@DIo zBg$+J8HiEi2C5T>jW7}%hD(hcT)jauwfynce(Fz9gZV$~)5=JNwI%f7>c=;*w zO=`T({Bn z*6pmh$|D(_F`}i90eW|jul3*PL|+!6{w&V)+eX~?$o>na+V>RnL>7c)!5V|&nvvr1 z0!=f_y9j_S00RKFL~+w?a45-7?z`uv5%MdhB|EIf&)iL4idcPSe+YJ1@y})S-j@Y+ zixh(XdPvqcKlXV>H(A(3pYqp?g1ebZ-j^Qr*No7=kM6sP6rSyU`6HCy_xLko7_x8K z!YE5Bj6M4(Ygtpu5+jjaA=%BKvTsQelBb!-cH_2S@&mq_V}=yJYuCg;f0QQgju1b4-KCFV&Lp;wEF?eslp zphAonq&ikY^wTs;F_xh7k0Uprf`)Gx*gL#NMTnYFqFRQ1{w_{%k1sR}d9GnWt! zFeb<+qdO7} zVQF-N?G7R8LJKjk3r2^#?uzh-20uj;a6DS={wJIC`o%xbp`>@G!ri|A2vfcm$zR&yk37(eCI8{g~P> zoqT4e{&{H{77@^O_i_&LWtGd^o06eI+vNMD{Lv*xfW=D+zaBV)N9G~{DEZaZj9#$T zSVZp6Hr_ATE`Ber?A^H*U?-a>$K}nOfA?|AF6z9k)e>@uolYfi7@Cm`f!c|~b|Ocl zGIUj2aT8Bd;%RJSH@1B5ZYnVCb&5+tnu!y~8)0gk0JkbSo-G|nh9_kAve+26bOlvA zq1Mu4)4R+0Nuv%V+2*8Z9w$;!*{^7HeVl$hshz}(>^p>pNGs^BpVG`~<}UE~oK(c( zSi}5FRai04!96_nR(y1+tbOLT*U#hwRXFwmz^(Z)IU)l#ot1u=m-G8VO-(GU9x%(9 z6|#8bZhnZ3I+&dfb~*|{1Q#rXnbwy=pgBqg8c61snR1kPu_uF;fYmJbtH8hloO9nH z$~?>IglcClC>H@xB>W_JC?a4L!YR6(WFRu%DqkD>rwMUoDf%EMVVC!V8*ZiT;pbZS zum#4_+wYFRWYD5uL!F=FM3e-@x9p=zXWK9%h@ji4Nk0;zFYdxzpUS;_%a|+%m4*V6 zoBA2dhB*WFV_|PYjCF<@zIs4MLV&SmZ%3o>EOz%S)PwmKOup;=V575*@$>%<)oDN1fG%hmR*tt6JPK!$|BC zQ?0zy#}&l(G3BnBGvQ#Gciw)dwQ?*a7UmlOxq1 zx4=Xn7r_lR_2QN@+p#mOwk-8UD}b5`aN`JvihS2EQsr$q7e4hTE|V@MhiWX(+!eX; zg0Vtj*}pwi6#%;aCw*^H3|V`z#*MH;uuZDIcrV zdb3UEp*|)0J-gXFPvp@#>m=P5HDDuFp#lppsJm5`pa`2kzoQR^@1b3PgrarmBtt7= zsR9kGp$84wNY&mbE%%3Rn&?@4gD>B~@eLMfI1>~r3;xWILr(`N*x%J*A=CZAS;+Th zC7MvsVfk`tkJSaNO*%pvv->{yGt4xf}+Ce;Ez)SyKYZl57qC$W$ zZzmJwtxxue@nS#po?G(o)N0ZrNS^wLfy`LI?lsXmkZ-;eznQ|uDwFY`qA~8d3T*rY zyGOlEaJU?0%Q^D%<2!I{3^U6s2>%jrA~W{Ik10+NI&?tA7{jtS-Y_qh3n}c+ufH&_ zvOkCn9AUw+EYSp<@ta5+Mu2v)Fr6Wi{;^FBxVO-_s!tFYWv?lzB)rt+C-z|F9)0OT}=bNHBh zW$$MOm8`EcT+P9OMqj7<6lIzXoJop=EnWnf@9%sP_L7ir(Iwuyc8^&?=K9wH34^Eh zr3wqzKk`8A_zN`bz~9ME!0_4Bl7z+=n|>3I(^O#VYXFlDe-3`%xRWmh3C9uB;fSI` zbdG2L;LjV36pDIy&cLNu31*;`%o5@PI9`5_Le$)Dds60PG5^7fHO`!7TS!R5Ce*Y~2IRpqpCeZlC#6>lazMq)(~5-z(;fYuS8;2wFL4f#hfvNasE7@a z^d&6mu!l%+CAQGL%Q|;v>1$orNR>wi^qxoK4lsFK5tx(dhF-FlIj>>0`#^{R`-+Ug zQjHe!+SA_OsKg>^FfXZhVUyI7V+f1`7b2UyO2-H*8-hu$sq=6|m*b}%OeC4T1iC}hWS()9 z|F2HilVS781ghZDawugpixZJXeMyX_EVJ61yuJbXxk%|!Md=*JbGE}c9%Ok|@DXr_ zxDH4i=qO8a5V&D#X|3Kp7V9oYAP?mcM8z%n6w^inb%}lb+KlyeNN~mMudqR<%#lw+ z)ZjNPW7@fPyx1>#=b4r`?UVALHz~XmFf_;CHOg)_fI*B-+PnDgb}BINHNJ5f$i8i8 z0Gk03E`T9LE}m~a=wtZbFn0!OS|}UjcLT;wjoQ5Br6_%qDg&vp&>7FS1)l3kf=H;Q zksd=&q*~{|Bnt~K>(#EDf>8sK$$qy_yqqW&y^qwSOL7(B&DXTUBg74RO`0t9nG(Z- z+eBV%_;H{<+G2~$aIcGp`h@9xg5bAnI~qah5b?y2Z1|*c69{t&pH$Xg;z4(lCr!OH z&%3=e^U9e-49cEZ8#`zU0;#wPey$8D_g%e?2t`nqi*OsxtAFnbw7sn$m%q ztqZN4??z@ZFy>v)F@u`)W`wWG9`v^ld_XR{;N#lc=uH zWuI}Kc6O44G|vf`(^orjHD~XGf6Pq;SsF~_5Id;H?1@?iO*1@|o}_|FYACy?#pXpu zX&8e8UAA#oTln5rlogzjUayHNR`19>$hR0hoTw znDNDEDZXHZ+Vff8Y7>RHhlLa`7<%A){p$biD_2kDf<*CJO2CIF^PfIO3@YMSI?BWl zD_^<+l1NT%+3{{Ih6#71KAxo%PCG||1{NBXEgcclsaBWCU~`6GmF$pkU5DqXI1Lyk zw+w!LaqEu);eLxpB3GtcxT6UR-1lDZJHI_$EZEflhRX~u*j&a&@x=1#iEeb$k|zs+L%GLR7>*)|5=Pb%A4(2;!>(X6n(Gk3LfO?_dvhh4WKY)F$uuhTWii zHq6nuerak!BV=vtb0nPPLN|enU75zF9-h_ut2u`OsJPn>a5W6)Vq%)hUZUOFx=tlV zpC|IfozN$FuJ`@o8h%~*omh5X*stsqwr2wuxGZqrzVy z@I@|}omZoi4`Hxubn1C9IaKTs$1N7G9b;-^HupaJYLV>g63C-epU9M3*Pp*`2L zo<9+I=^gI~j)fV}uF};LjK9AspXuQ?ORf`eit?&?z3aoReyeX}w3Z_fA#Eg3cyM^u zp2}W9*Gb(pFCFS}MIf7)`uy4k_SNNcocOz@_>@A%s5JsS~;9*hx<#gRE~(A(axE{ zpRL!l6zgE?AD=oN7esCpcj$bdTznB9w~YjfG613 zeC7VRf8sUG(rPZ>=B(fayFOe3GKC6i)g%bl$N@~%&0~I;o_bhYz>{9I8su}&N3PaH zbh;(b8(`xUIHod*Z$D?hrj&+E+jGh?Vb7YK?-?~XtF@K4=E|VEzb1lY#<63kf2F5( zeQr4VI?~}b=l|eF-qBL;PCWDsj$bRao(9%T)oFg~=nR^I=)iktpc@M)7DdVxCK1%3 zp#)Epy)tHQckpom1|}#ug@Y5pf#PRQZZzT=Rh+r1taCLlO;bcM=vUj%tA>kTz5`E; zmN%Svg$bwiId*ROV%CIP7Q{II_uW)ZguJ5lmmU8ND}H8#Sor$GNSbQy+au~32X1@k zT;Or37cSpgVVa9vZ#G^r*lZB6Y8qTART;i}}2QrSGinvtNJ zD{W8mIC&sfxDJGU6WHctTs3Z1^rSwN2^RemK%^p^NQinEjC=)%y}`zj8*iO+)iTELEHj5I zk6_hi@*dw4iZDLf({)^{s{5Rt!xQvo-Q2QDRJ{wLrlle&dT00(J#r1lQc#S{KAb}4 zzK@=F2(=J!>#ld}_a287-|>C*rT+D*GRu02ekT>VSc`lpfTz-IF9GH*eVd?pAB~lDzBv$5TT1HX14M(eIq^7+JCSh|GYaX{J1bNwvPB3CbA+8LK9xqW3)v|h-P-95Q>zL{c29N)j72Iov-t=BFdby2 z9djPe_)JK%Pc%Jr9=V-JzH-x3H%*zA(XW)nkwN<~wK7=}kGB&PNXOEkKwYVoz^;bf zw6tI0U0cL{<(;@y@zQy~XMNq&UctV*wo6XUu=lALPWV$DRQARy+bBmnP6h0?Jy{@r zrN?UCwCt|F5mM8#Ag>;Jyi@o$OIg-k$p~Ny z4R%)a9vbDcU_)K55))YppSBNfVjgMnEGpc~U!UIb&uT`qJ+M~51_e?E527ye8j^mXVJ&YnU$$3{4d)rou9(g>U-(WbO@f$?9P&dMOo<@&j z|5YGJ0?@Bv(f?*&Q9Q7f{bzbIf9t#S1w@*$D} zJBfa2hy84Ry{QN*M_hq(06==iwahk}oCevYIT&m>pB|7Ts0@&F=kJDL^=?*>jJi@N z-*leqz~S?h!Sn~@&db)TNbELdRa}KJ48j~E2|#9Y%|jzOU5{>fUVCeb>u+l4!O!S< zZ~-Tt5k>(bsLf%Vzs|fUUS?R*iz*Qtcz?<}b{OQM)8Jq&fPakZkou#7#xxBAPaFPI zfuT_Syd)c!w1zPhB*eRC+;2&hG=YIoEpkhdCIlzN@>xe`^0uxOXn(1To$$# z_~WYa3pOTUU_YsFxFeZ{4Q!QXMI-6o31Cq^JaU&2_>bh^##`iA0AsI**;R<2K`9SO1Z{k!&$52a< zZ{-sB5@;YUK9Gl&Pb?A`^^7DWQ~}RoWGqHb>S)2j7%<-YVB1Fl9_{gRteRZ~qL*uCfj&rlS5YJ20vbrZ zfZ}XpE~2Q=$#-heeEgb4xjNHt6_l4~2r{DdQnb?<%cC9=02L4WUSa5ATucRrk5*-c z%u4rb!oxuK<1$=-`h{BQHR@+=&HaBx!AW<4TI3;Bc_RJhy+js}yEUu(VG0R0cO!}J zYp)ORn9gJt1610VRPWbxBqVG2vfrESMV;xb8;z4xpX&71z^5J(FmiaGX z>_I4gjXVUyo(F|lGaxOT#LL%R?G!Ae*M{XK)o@mM`)s>3?`AR2qaZZ|(_YL1PM=KT z?b8nzTI0BuiM}cDrcc{ZtB?1W_>f#MPu1=^R!^FnL8Q@QUG;`c9s@}PU^yu9nv!^C zJA%xd7$p8=ymbXR{`AQ4AuUgX5g445DC(d>Febr*fTxVAk$B{4kuunG=svc#pDyy- zCM7R$>qEfT!3Un3>W1xamnCmX!Z2<+(ah0kS+tcPA7(d}1B4(nS*MtxBAFSVsPKJ6 z6i%O)%uGQ8@)`$+Xb~GkB7WicR|lUEj1j?cgUp-#20mbQX{L3ws|qX&W&O!zLG9{$ zi>aK#`h$4Vgv?}&p=}SbT zc+g=%{A@!+s*Dr8?Kwo?0nG7Y*&?Xb_vZ{#6J=hj(PCrTi1CCQk!txS?<#9Xt(6ll zBh2X9!3q7lqy@a@K6XHMikmB}P1{kD8ino?FjE8%y=2|lvv=8^`pq*nic^FQYkq;; zzmk0!mI~g#YJ=O*19Ao3?JT@Yt<2$Xn_Yd_HUH57qM#P`FRmX#S#@*x^b~9zZx+RS z0zVN2(c0jPR2xt@IvrPjeiP4#`Zc9ehEFtvci>*=5$Mq+3T^}^opDJbjKfnGdSh8- z$r8x~OEPs?wCulykRqP~UP1TNYbYmqnWgcXI@ACs`A2CT+|DSi@Kyi1)li{{g`-Br zAJD186(FC;=&3*0oS5)J=Z?3$UXq6%J;i zzH>dbDw#|^%r(nO(*S7&bKhf+6OrWLpVHde?qa&B;Xj69KRGdgSwUx1Q_X)G>badX zS%P7gwb$oP?gR+;HGD46?;?Akc42}*Q@|ZEVYh$8FA*yCR2&z~9V6J3#(RP#)Yf2T zD0e0HJl8(-31~1)2&ZW&peh5dpKQ~ez%nUixHTYY{zq7dbXaE!DL)ptS3~d|y{C5NT z)qU?l{4G#bI2MAcSkI_(teo{a>YXI5`6*U2RbV%3sjYYf%NQe$n{5_>yDQc`UQH-T z5&u``fr&AK?m&Y|8GUlBjH(skyFx2&1HEBqQQvMHTQ#qk%>jNJ8r zLu%(T_N&xByp?%}I(1hOU3XWDvghV9fPZZeZ+JSt;(GcXLyl>nS^kEU3 z5xI`+*=?Oav7b42d|zp?s?Zw!bY$P9a(Fc2!93@6`M3Skr-sDQ8=ih8Y4{olXKFPx zIP*!gqOuZO;7~X=+CIN$F-)WE&AUqIC ReActor

IC ReActor

IC-Reactor: A Suite of Frontend Utilities for Internet Computer (IC) Development

Welcome to IC-Reactor, a comprehensive collection of JavaScript libraries designed to simplify and enhance frontend development on the Internet Computer (IC) blockchain platform. This project provides a set of tools that cater to various aspects of frontend development, ranging from vanilla JavaScript applications to sophisticated React-based projects.

+IC ReActor +

IC ReActor

IC-Reactor: A Suite of Frontend Utilities for Internet Computer (IC) Development

Welcome to IC-Reactor, a comprehensive collection of JavaScript libraries designed to simplify and enhance frontend development on the Internet Computer (IC) blockchain platform. This project provides a set of tools that cater to various aspects of frontend development, ranging from vanilla JavaScript applications to sophisticated React-based projects.

Packages Overview

IC-Reactor comprises the following packages, each tailored for specific needs and use cases within the IC ecosystem:

1. @ic-reactor/react

Aimed at React developers, this library integrates seamlessly with React applications, providing custom hooks and context for managing blockchain interactions. Whether you're querying data from IC actors, updating states, or handling authentication, @ic-reactor/react streamlines these processes in a React-friendly way.

2. @ic-reactor/core

The core library serves as the foundation for managing and interacting with IC actors. It provides essential functionalities like actor initialization, state tracking, and simplified methods for queries and updates. It's a versatile toolkit that can be utilized in various JavaScript environments, ensuring flexibility across different front-end development scenarios.

@@ -69,4 +70,42 @@

Join Our Community

We believe in the power of community collaboration to create amazing tools. Your contributions, whether code, ideas, or feedback, are crucial to the success and growth of IC-Reactor. Join us in our mission to build effective and user-friendly tools for Internet Computer blockchain development!

License

This project is licensed under the MIT License. See the LICENSE file for more details.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_store.ActorManagerOptions.html b/docs/interfaces/_ic_reactor_store.ActorManagerOptions.html index db9afada29..174fd07745 100644 --- a/docs/interfaces/_ic_reactor_store.ActorManagerOptions.html +++ b/docs/interfaces/_ic_reactor_store.ActorManagerOptions.html @@ -1,7 +1,46 @@ -ActorManagerOptions | IC ReActor
interface ActorManagerOptions {
    agentManager: AgentManager;
    canisterId: CanisterId;
    idlFactory: InterfaceFactory;
    initializeOnCreate?: boolean;
    withDevtools?: boolean;
    withVisitor?: boolean;
}

Properties

agentManager +ActorManagerOptions | IC ReActor +
interface ActorManagerOptions {
    agentManager: AgentManager;
    canisterId: CanisterId;
    idlFactory: InterfaceFactory;
    initializeOnCreate?: boolean;
    withDevtools?: boolean;
    withVisitor?: boolean;
}

Properties

agentManager: AgentManager
canisterId: CanisterId
idlFactory: InterfaceFactory
initializeOnCreate?: boolean
withDevtools?: boolean
withVisitor?: boolean

Generated using TypeDoc

\ No newline at end of file +

Properties

agentManager: AgentManager
canisterId: CanisterId
idlFactory: InterfaceFactory
initializeOnCreate?: boolean
withDevtools?: boolean
withVisitor?: boolean

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_store.ActorMethod.html b/docs/interfaces/_ic_reactor_store.ActorMethod.html index 25540dacfc..28fa018fb8 100644 --- a/docs/interfaces/_ic_reactor_store.ActorMethod.html +++ b/docs/interfaces/_ic_reactor_store.ActorMethod.html @@ -1,3 +1,42 @@ -ActorMethod | IC ReActor

Interface ActorMethod<Args, Ret>

An actor method type, defined for each methods of the actor service.

+ActorMethod | IC ReActor +

Interface ActorMethod<Args, Ret>

An actor method type, defined for each methods of the actor service.

interface ActorMethod<Args, Ret> {
    withOptions(options): ((...args) => Promise<Ret>);
    (...args): Promise<Ret>;
}

Type Parameters

  • Args extends unknown[] = unknown[]

  • Ret = unknown

  • Parameters

    Returns Promise<Ret>

Methods

Methods

  • Parameters

    • options: CallConfig

    Returns ((...args) => Promise<Ret>)

Generated using TypeDoc

\ No newline at end of file +

Methods

  • Parameters

    • options: CallConfig

    Returns ((...args) => Promise<Ret>)

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_store.ActorMethodState.html b/docs/interfaces/_ic_reactor_store.ActorMethodState.html index 5bb514ddc9..9a9beacfb1 100644 --- a/docs/interfaces/_ic_reactor_store.ActorMethodState.html +++ b/docs/interfaces/_ic_reactor_store.ActorMethodState.html @@ -1 +1,40 @@ -ActorMethodState | IC ReActor

Interface ActorMethodState<A, M>

interface ActorMethodState<A, M> {
    [key: string]: {
        data: ExtractActorMethodReturnType<A[M]> | undefined;
        error: Error | undefined;
        loading: boolean;
    };
}

Type Parameters

Indexable

[key: string]: {
    data: ExtractActorMethodReturnType<A[M]> | undefined;
    error: Error | undefined;
    loading: boolean;
}

Generated using TypeDoc

\ No newline at end of file +ActorMethodState | IC ReActor +

Interface ActorMethodState<A, M>

interface ActorMethodState<A, M> {
    [key: string]: {
        data: ExtractActorMethodReturnType<A[M]> | undefined;
        error: Error | undefined;
        loading: boolean;
    };
}

Type Parameters

Indexable

[key: string]: {
    data: ExtractActorMethodReturnType<A[M]> | undefined;
    error: Error | undefined;
    loading: boolean;
}

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_store.AgentAuthState.html b/docs/interfaces/_ic_reactor_store.AgentAuthState.html index cfdeafd279..58ed78f1a3 100644 --- a/docs/interfaces/_ic_reactor_store.AgentAuthState.html +++ b/docs/interfaces/_ic_reactor_store.AgentAuthState.html @@ -1,8 +1,47 @@ -AgentAuthState | IC ReActor
interface AgentAuthState {
    authClient: null | AuthClient;
    authenticated: boolean;
    authenticating: boolean;
    error: undefined | Error;
    identity: null | Identity;
    initialized: boolean;
    initializing: boolean;
}

Properties

authClient +AgentAuthState | IC ReActor +
interface AgentAuthState {
    authClient: null | AuthClient;
    authenticated: boolean;
    authenticating: boolean;
    error: undefined | Error;
    identity: null | Identity;
    initialized: boolean;
    initializing: boolean;
}

Properties

authClient: null | AuthClient
authenticated: boolean
authenticating: boolean
error: undefined | Error
identity: null | Identity
initialized: boolean
initializing: boolean

Generated using TypeDoc

\ No newline at end of file +

Properties

authClient: null | AuthClient
authenticated: boolean
authenticating: boolean
error: undefined | Error
identity: null | Identity
initialized: boolean
initializing: boolean

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_store.AgentManagerOptions.html b/docs/interfaces/_ic_reactor_store.AgentManagerOptions.html index 1614e1de63..a626caefeb 100644 --- a/docs/interfaces/_ic_reactor_store.AgentManagerOptions.html +++ b/docs/interfaces/_ic_reactor_store.AgentManagerOptions.html @@ -1,4 +1,5 @@ -AgentManagerOptions | IC ReActor
interface AgentManagerOptions {
    callOptions?: Record<string, unknown>;
    credentials?: {
        name: string;
        password?: string;
    };
    fetch?: ((input, init?) => Promise<Response>);
    fetchOptions?: Record<string, unknown>;
    host?: string;
    identity?: Identity | Promise<Identity>;
    isLocalEnv?: boolean;
    port?: number;
    retryTimes?: number;
    source?: HttpAgent;
    useQueryNonces?: boolean;
    verifyQuerySignatures?: boolean;
    withDevtools?: boolean;
}

Hierarchy (view full)

Properties

callOptions? +AgentManagerOptions | IC ReActor +
interface AgentManagerOptions {
    callOptions?: Record<string, unknown>;
    credentials?: {
        name: string;
        password?: string;
    };
    fetch?: ((input, init?) => Promise<Response>);
    fetchOptions?: Record<string, unknown>;
    host?: string;
    identity?: Identity | Promise<Identity>;
    isLocalEnv?: boolean;
    port?: number;
    retryTimes?: number;
    source?: HttpAgent;
    useQueryNonces?: boolean;
    verifyQuerySignatures?: boolean;
    withDevtools?: boolean;
}

Hierarchy (view full)

Properties

callOptions?: Record<string, unknown>
credentials?: {
    name: string;
    password?: string;
}

Type declaration

  • name: string
  • Optional password?: string
fetch?: ((input, init?) => Promise<Response>)

Type declaration

fetchOptions?: Record<string, unknown>
host?: string
identity?: Identity | Promise<Identity>
isLocalEnv?: boolean
port?: number
retryTimes?: number

Number of times to retry requests before throwing an error

+

Parameters

  • input: RequestInfo | URL
  • Optional init: RequestInit

Returns Promise<Response>

fetchOptions?: Record<string, unknown>
host?: string
identity?: Identity | Promise<Identity>
isLocalEnv?: boolean
port?: number
retryTimes?: number

Number of times to retry requests before throwing an error

Default

3
 
source?: HttpAgent
useQueryNonces?: boolean

Adds a unique Nonce with each query. @@ -24,4 +25,42 @@

Default

false
 
verifyQuerySignatures?: boolean

Whether the agent should verify signatures signed by node keys on query responses. Increases security, but adds overhead and must make a separate request to cache the node keys for the canister's subnet.

Default

true
 
-
withDevtools?: boolean

Generated using TypeDoc

\ No newline at end of file +
withDevtools?: boolean

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_store.CreateReActorOptions.html b/docs/interfaces/_ic_reactor_store.CreateReActorOptions.html index d610e123f8..b218cbf1d6 100644 --- a/docs/interfaces/_ic_reactor_store.CreateReActorOptions.html +++ b/docs/interfaces/_ic_reactor_store.CreateReActorOptions.html @@ -1,4 +1,5 @@ -CreateReActorOptions | IC ReActor
interface CreateReActorOptions {
    agentManager?: AgentManager;
    callOptions?: Record<string, unknown>;
    canisterId: CanisterId;
    credentials?: {
        name: string;
        password?: string;
    };
    fetch?: ((input, init?) => Promise<Response>);
    fetchOptions?: Record<string, unknown>;
    host?: string;
    identity?: Identity | Promise<Identity>;
    idlFactory: InterfaceFactory;
    initializeOnCreate?: boolean;
    isLocalEnv?: boolean;
    port?: number;
    retryTimes?: number;
    source?: HttpAgent;
    useQueryNonces?: boolean;
    verifyQuerySignatures?: boolean;
    withDevtools?: boolean;
    withVisitor?: boolean;
}

Hierarchy (view full)

Properties

agentManager? +CreateReActorOptions | IC ReActor +
interface CreateReActorOptions {
    agentManager?: AgentManager;
    callOptions?: Record<string, unknown>;
    canisterId: CanisterId;
    credentials?: {
        name: string;
        password?: string;
    };
    fetch?: ((input, init?) => Promise<Response>);
    fetchOptions?: Record<string, unknown>;
    host?: string;
    identity?: Identity | Promise<Identity>;
    idlFactory: InterfaceFactory;
    initializeOnCreate?: boolean;
    isLocalEnv?: boolean;
    port?: number;
    retryTimes?: number;
    source?: HttpAgent;
    useQueryNonces?: boolean;
    verifyQuerySignatures?: boolean;
    withDevtools?: boolean;
    withVisitor?: boolean;
}

Hierarchy (view full)

Properties

agentManager?: AgentManager
callOptions?: Record<string, unknown>
canisterId: CanisterId
credentials?: {
    name: string;
    password?: string;
}

Type declaration

  • name: string
  • Optional password?: string
fetch?: ((input, init?) => Promise<Response>)

Type declaration

fetchOptions?: Record<string, unknown>
host?: string
identity?: Identity | Promise<Identity>
idlFactory: InterfaceFactory
initializeOnCreate?: boolean
isLocalEnv?: boolean
port?: number
retryTimes?: number

Number of times to retry requests before throwing an error

+

Properties

agentManager?: AgentManager
callOptions?: Record<string, unknown>
canisterId: CanisterId
credentials?: {
    name: string;
    password?: string;
}

Type declaration

  • name: string
  • Optional password?: string
fetch?: ((input, init?) => Promise<Response>)

Type declaration

fetchOptions?: Record<string, unknown>
host?: string
identity?: Identity | Promise<Identity>
idlFactory: InterfaceFactory
initializeOnCreate?: boolean
isLocalEnv?: boolean
port?: number
retryTimes?: number

Number of times to retry requests before throwing an error

Default

3
 
source?: HttpAgent
useQueryNonces?: boolean

Adds a unique Nonce with each query. @@ -29,4 +30,42 @@

Default

false
 
verifyQuerySignatures?: boolean

Whether the agent should verify signatures signed by node keys on query responses. Increases security, but adds overhead and must make a separate request to cache the node keys for the canister's subnet.

Default

true
 
-
withDevtools?: boolean
withVisitor?: boolean

Generated using TypeDoc

\ No newline at end of file +
withDevtools?: boolean
withVisitor?: boolean

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_store.DefaultActorType.html b/docs/interfaces/_ic_reactor_store.DefaultActorType.html index f264cc795c..5047583e4f 100644 --- a/docs/interfaces/_ic_reactor_store.DefaultActorType.html +++ b/docs/interfaces/_ic_reactor_store.DefaultActorType.html @@ -1 +1,40 @@ -DefaultActorType | IC ReActor
interface DefaultActorType {
    [key: string]: ActorMethod<any, any>;
}

Indexable

[key: string]: ActorMethod<any, any>

Generated using TypeDoc

\ No newline at end of file +DefaultActorType | IC ReActor +
interface DefaultActorType {
    [key: string]: ActorMethod<any, any>;
}

Indexable

[key: string]: ActorMethod<any, any>

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_store.HttpAgentOptions.html b/docs/interfaces/_ic_reactor_store.HttpAgentOptions.html index 2689998304..6676385672 100644 --- a/docs/interfaces/_ic_reactor_store.HttpAgentOptions.html +++ b/docs/interfaces/_ic_reactor_store.HttpAgentOptions.html @@ -1,4 +1,5 @@ -HttpAgentOptions | IC ReActor
interface HttpAgentOptions {
    callOptions?: Record<string, unknown>;
    credentials?: {
        name: string;
        password?: string;
    };
    fetch?: ((input, init?) => Promise<Response>);
    fetchOptions?: Record<string, unknown>;
    host?: string;
    identity?: Identity | Promise<Identity>;
    retryTimes?: number;
    source?: HttpAgent;
    useQueryNonces?: boolean;
    verifyQuerySignatures?: boolean;
}

Hierarchy (view full)

Properties

callOptions? +HttpAgentOptions | IC ReActor +
interface HttpAgentOptions {
    callOptions?: Record<string, unknown>;
    credentials?: {
        name: string;
        password?: string;
    };
    fetch?: ((input, init?) => Promise<Response>);
    fetchOptions?: Record<string, unknown>;
    host?: string;
    identity?: Identity | Promise<Identity>;
    retryTimes?: number;
    source?: HttpAgent;
    useQueryNonces?: boolean;
    verifyQuerySignatures?: boolean;
}

Hierarchy (view full)

Properties

callOptions? credentials? fetch? fetchOptions? @@ -21,4 +22,42 @@

Default

false
 
verifyQuerySignatures?: boolean

Whether the agent should verify signatures signed by node keys on query responses. Increases security, but adds overhead and must make a separate request to cache the node keys for the canister's subnet.

Default

true
 
-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_store.Identity.html b/docs/interfaces/_ic_reactor_store.Identity.html index 5809efed5e..0e3966526f 100644 --- a/docs/interfaces/_ic_reactor_store.Identity.html +++ b/docs/interfaces/_ic_reactor_store.Identity.html @@ -1,4 +1,5 @@ -Identity | IC ReActor

A General Identity object. This does not have to be a private key (for example, +Identity | IC ReActor +

A General Identity object. This does not have to be a private key (for example, the Anonymous identity), but it must be able to transform request.

interface Identity {
    getPrincipal(): Principal;
    transformRequest(request): Promise<unknown>;
}

Methods

getPrincipal transformRequest @@ -7,4 +8,42 @@

Returns Principal

  • Transform a request into a signed version of the request. This is done last after the transforms on the body of a request. The returned object can be anything, but must be serializable to CBOR.

    -

    Parameters

    • request: HttpAgentRequest

    Returns Promise<unknown>

Generated using TypeDoc

\ No newline at end of file +

Parameters

  • request: HttpAgentRequest

Returns Promise<unknown>

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_store.UpdateAgentOptions.html b/docs/interfaces/_ic_reactor_store.UpdateAgentOptions.html index be8bf1e1d5..539bae7f6d 100644 --- a/docs/interfaces/_ic_reactor_store.UpdateAgentOptions.html +++ b/docs/interfaces/_ic_reactor_store.UpdateAgentOptions.html @@ -1,4 +1,5 @@ -UpdateAgentOptions | IC ReActor
interface UpdateAgentOptions {
    agent?: HttpAgent;
    callOptions?: Record<string, unknown>;
    credentials?: {
        name: string;
        password?: string;
    };
    fetch?: ((input, init?) => Promise<Response>);
    fetchOptions?: Record<string, unknown>;
    host?: string;
    identity?: Identity | Promise<Identity>;
    retryTimes?: number;
    source?: HttpAgent;
    useQueryNonces?: boolean;
    verifyQuerySignatures?: boolean;
}

Hierarchy (view full)

Properties

agent? +UpdateAgentOptions | IC ReActor +
interface UpdateAgentOptions {
    agent?: HttpAgent;
    callOptions?: Record<string, unknown>;
    credentials?: {
        name: string;
        password?: string;
    };
    fetch?: ((input, init?) => Promise<Response>);
    fetchOptions?: Record<string, unknown>;
    host?: string;
    identity?: Identity | Promise<Identity>;
    retryTimes?: number;
    source?: HttpAgent;
    useQueryNonces?: boolean;
    verifyQuerySignatures?: boolean;
}

Hierarchy (view full)

Properties

agent?: HttpAgent
callOptions?: Record<string, unknown>
credentials?: {
    name: string;
    password?: string;
}

Type declaration

  • name: string
  • Optional password?: string
fetch?: ((input, init?) => Promise<Response>)

Type declaration

Properties

agent?: HttpAgent
callOptions?: Record<string, unknown>
credentials?: {
    name: string;
    password?: string;
}

Type declaration

  • name: string
  • Optional password?: string
fetch?: ((input, init?) => Promise<Response>)

Type declaration

fetchOptions?: Record<string, unknown>
host?: string
identity?: Identity | Promise<Identity>
retryTimes?: number

Number of times to retry requests before throwing an error

Default

3
 
@@ -22,4 +23,42 @@

Default

false
 
verifyQuerySignatures?: boolean

Whether the agent should verify signatures signed by node keys on query responses. Increases security, but adds overhead and must make a separate request to cache the node keys for the canister's subnet.

Default

true
 
-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.DefaultField.html b/docs/interfaces/_ic_reactor_visitor.DefaultField.html index c505fdf2bc..d6229ebaea 100644 --- a/docs/interfaces/_ic_reactor_visitor.DefaultField.html +++ b/docs/interfaces/_ic_reactor_visitor.DefaultField.html @@ -1,8 +1,47 @@ -DefaultField | IC ReActor
interface DefaultField {
    defaultValue?: any;
    defaultValues?: any;
    label: string;
    maxLength?: number;
    minLength?: number;
    type: FieldType;
    validate: ((value) => string | boolean);
}

Hierarchy (view full)

Properties

defaultValue? +DefaultField | IC ReActor +
interface DefaultField {
    defaultValue?: any;
    defaultValues?: any;
    label: string;
    maxLength?: number;
    minLength?: number;
    type: FieldType;
    validate: ((value) => string | boolean);
}

Hierarchy (view full)

Properties

defaultValue?: any
defaultValues?: any
label: string
maxLength?: number
minLength?: number
type: FieldType
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc

\ No newline at end of file +

Properties

defaultValue?: any
defaultValues?: any
label: string
maxLength?: number
minLength?: number
type: FieldType
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.DynamicDataArgs.html b/docs/interfaces/_ic_reactor_visitor.DynamicDataArgs.html index abe0f5b9b0..d5f43ec4e5 100644 --- a/docs/interfaces/_ic_reactor_visitor.DynamicDataArgs.html +++ b/docs/interfaces/_ic_reactor_visitor.DynamicDataArgs.html @@ -1,3 +1,42 @@ -DynamicDataArgs | IC ReActor
interface DynamicDataArgs<V> {
    label: string;
    value: V;
}

Type Parameters

  • V = any

Properties

label +DynamicDataArgs | IC ReActor +
interface DynamicDataArgs<V> {
    label: string;
    value: V;
}

Type Parameters

  • V = any

Properties

Properties

label: string
value: V

Generated using TypeDoc

\ No newline at end of file +

Properties

label: string
value: V

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.ExtractedServiceDetails.html b/docs/interfaces/_ic_reactor_visitor.ExtractedServiceDetails.html index cccbcbd601..765c2ac6f7 100644 --- a/docs/interfaces/_ic_reactor_visitor.ExtractedServiceDetails.html +++ b/docs/interfaces/_ic_reactor_visitor.ExtractedServiceDetails.html @@ -1,4 +1,43 @@ -ExtractedServiceDetails | IC ReActor

Interface ExtractedServiceDetails<A>

interface ExtractedServiceDetails<A> {
    canisterId: string;
    description: string;
    methodDetails: ServiceDetails<A>;
}

Type Parameters

Properties

canisterId +ExtractedServiceDetails | IC ReActor +

Interface ExtractedServiceDetails<A>

interface ExtractedServiceDetails<A> {
    canisterId: string;
    description: string;
    methodDetails: ServiceDetails<A>;
}

Type Parameters

Properties

canisterId: string
description: string
methodDetails: ServiceDetails<A>

Generated using TypeDoc

\ No newline at end of file +

Properties

canisterId: string
description: string
methodDetails: ServiceDetails<A>

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.ExtractedServiceFields.html b/docs/interfaces/_ic_reactor_visitor.ExtractedServiceFields.html index e211b218e1..4fb938f579 100644 --- a/docs/interfaces/_ic_reactor_visitor.ExtractedServiceFields.html +++ b/docs/interfaces/_ic_reactor_visitor.ExtractedServiceFields.html @@ -1,3 +1,42 @@ -ExtractedServiceFields | IC ReActor

Interface ExtractedServiceFields<A>

interface ExtractedServiceFields<A> {
    canisterId: string;
    methodFields: ServiceFields<A, FunctionName<A>>;
}

Type Parameters

Properties

canisterId +ExtractedServiceFields | IC ReActor +

Interface ExtractedServiceFields<A>

interface ExtractedServiceFields<A> {
    canisterId: string;
    methodFields: ServiceFields<A, FunctionName<A>>;
}

Type Parameters

Properties

canisterId: string
methodFields: ServiceFields<A, FunctionName<A>>

Generated using TypeDoc

\ No newline at end of file +

Properties

canisterId: string
methodFields: ServiceFields<A, FunctionName<A>>

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.FieldDetails.html b/docs/interfaces/_ic_reactor_visitor.FieldDetails.html index a35db4d866..f314af4c23 100644 --- a/docs/interfaces/_ic_reactor_visitor.FieldDetails.html +++ b/docs/interfaces/_ic_reactor_visitor.FieldDetails.html @@ -1,4 +1,43 @@ -FieldDetails | IC ReActor
interface FieldDetails {
    __description: string;
    __label: string;
    __type: FieldType;
    [key: string]: string | boolean | undefined;
}

Hierarchy (view full)

Indexable

[key: string]: string | boolean | undefined

Properties

__description +FieldDetails | IC ReActor +
interface FieldDetails {
    __description: string;
    __label: string;
    __type: FieldType;
    [key: string]: string | boolean | undefined;
}

Hierarchy (view full)

Indexable

[key: string]: string | boolean | undefined

Properties

__description: string
__label: string
__type: FieldType

Generated using TypeDoc

\ No newline at end of file +

Properties

__description: string
__label: string
__type: FieldType

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.FieldDetailsWithChild.html b/docs/interfaces/_ic_reactor_visitor.FieldDetailsWithChild.html index ae52d6718f..88b3dbe6da 100644 --- a/docs/interfaces/_ic_reactor_visitor.FieldDetailsWithChild.html +++ b/docs/interfaces/_ic_reactor_visitor.FieldDetailsWithChild.html @@ -1,8 +1,47 @@ -FieldDetailsWithChild | IC ReActor
interface FieldDetailsWithChild {
    __checked?: boolean;
    __description: string;
    __hidden?: boolean;
    __label: string;
    __type: FieldType;
    optional?: OtherDetails;
    vector?: OtherDetails;
    [key: string]: string | boolean | undefined | OtherDetails;
}

Indexable

[key: string]: string | boolean | undefined | OtherDetails

Properties

__checked? +FieldDetailsWithChild | IC ReActor +
interface FieldDetailsWithChild {
    __checked?: boolean;
    __description: string;
    __hidden?: boolean;
    __label: string;
    __type: FieldType;
    optional?: OtherDetails;
    vector?: OtherDetails;
    [key: string]: string | boolean | undefined | OtherDetails;
}

Indexable

[key: string]: string | boolean | undefined | OtherDetails

Properties

__checked?: boolean
__description: string
__hidden?: boolean
__label: string
__type: FieldType
optional?: OtherDetails
vector?: OtherDetails

Generated using TypeDoc

\ No newline at end of file +

Properties

__checked?: boolean
__description: string
__hidden?: boolean
__label: string
__type: FieldType
optional?: OtherDetails
vector?: OtherDetails

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.InputDetails.html b/docs/interfaces/_ic_reactor_visitor.InputDetails.html index 6ef432132a..f164d2f474 100644 --- a/docs/interfaces/_ic_reactor_visitor.InputDetails.html +++ b/docs/interfaces/_ic_reactor_visitor.InputDetails.html @@ -1,5 +1,44 @@ -InputDetails | IC ReActor
interface InputDetails {
    __checked?: boolean;
    __description: string;
    __label: string;
    __type: FieldType;
    [key: string]: string | boolean | undefined;
}

Hierarchy (view full)

Indexable

[key: string]: string | boolean | undefined

Properties

__checked? +InputDetails | IC ReActor +
interface InputDetails {
    __checked?: boolean;
    __description: string;
    __label: string;
    __type: FieldType;
    [key: string]: string | boolean | undefined;
}

Hierarchy (view full)

Indexable

[key: string]: string | boolean | undefined

Properties

__checked?: boolean
__description: string
__label: string
__type: FieldType

Generated using TypeDoc

\ No newline at end of file +

Properties

__checked?: boolean
__description: string
__label: string
__type: FieldType

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.InputField.html b/docs/interfaces/_ic_reactor_visitor.InputField.html index b522deeb78..d1adaf83d3 100644 --- a/docs/interfaces/_ic_reactor_visitor.InputField.html +++ b/docs/interfaces/_ic_reactor_visitor.InputField.html @@ -1,4 +1,5 @@ -InputField | IC ReActor
interface InputField<T> {
    defaultValue: FieldTypeFromIDLType<T>;
    defaultValues?: any;
    label: string;
    maxLength?: number;
    minLength?: number;
    required: true;
    type: FieldType;
    validate: ((value) => string | boolean);
}

Type Parameters

  • T extends IDL.Type

Hierarchy (view full)

Properties

defaultValue +InputField | IC ReActor +
interface InputField<T> {
    defaultValue: FieldTypeFromIDLType<T>;
    defaultValues?: any;
    label: string;
    maxLength?: number;
    minLength?: number;
    required: true;
    type: FieldType;
    validate: ((value) => string | boolean);
}

Type Parameters

  • T extends IDL.Type

Hierarchy (view full)

Properties

defaultValue: FieldTypeFromIDLType<T>
defaultValues?: any
label: string
maxLength?: number
minLength?: number
required: true
type: FieldType
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc

\ No newline at end of file +

Properties

defaultValue: FieldTypeFromIDLType<T>
defaultValues?: any
label: string
maxLength?: number
minLength?: number
required: true
type: FieldType
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.MethodFields.html b/docs/interfaces/_ic_reactor_visitor.MethodFields.html index 0d6032282d..b0435d41ff 100644 --- a/docs/interfaces/_ic_reactor_visitor.MethodFields.html +++ b/docs/interfaces/_ic_reactor_visitor.MethodFields.html @@ -1,6 +1,45 @@ -MethodFields | IC ReActor

Interface MethodFields<A, M>

interface MethodFields<A, M> {
    defaultValues: ServiceDefaultValues<A, M>;
    fields: [] | AllFieldTypes<Type<any>>[];
    functionName: M;
    functionType: FunctionType;
    validate: ((value) => string | boolean);
}

Type Parameters

Properties

defaultValues +MethodFields | IC ReActor +

Interface MethodFields<A, M>

interface MethodFields<A, M> {
    defaultValues: ServiceDefaultValues<A, M>;
    fields: [] | AllFieldTypes<Type<any>>[];
    functionName: M;
    functionType: FunctionType;
    validate: ((value) => string | boolean);
}

Type Parameters

Properties

defaultValues: ServiceDefaultValues<A, M>
fields: [] | AllFieldTypes<Type<any>>[]
functionName: M
functionType: FunctionType
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc

\ No newline at end of file +

Properties

defaultValues: ServiceDefaultValues<A, M>
fields: [] | AllFieldTypes<Type<any>>[]
functionName: M
functionType: FunctionType
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.NumberField.html b/docs/interfaces/_ic_reactor_visitor.NumberField.html index d5210ff91a..719dcf6ac2 100644 --- a/docs/interfaces/_ic_reactor_visitor.NumberField.html +++ b/docs/interfaces/_ic_reactor_visitor.NumberField.html @@ -1,4 +1,5 @@ -NumberField | IC ReActor
interface NumberField {
    defaultValue: string;
    defaultValues?: any;
    label: string;
    max?: string | number;
    maxLength?: number;
    min?: string | number;
    minLength?: number;
    required: true;
    type: "number";
    validate: ((value) => string | boolean);
}

Hierarchy (view full)

Properties

defaultValue +NumberField | IC ReActor +
interface NumberField {
    defaultValue: string;
    defaultValues?: any;
    label: string;
    max?: string | number;
    maxLength?: number;
    min?: string | number;
    minLength?: number;
    required: true;
    type: "number";
    validate: ((value) => string | boolean);
}

Hierarchy (view full)

Properties

defaultValue: string
defaultValues?: any
label: string
max?: string | number
maxLength?: number
min?: string | number
minLength?: number
required: true
type: "number"
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc

\ No newline at end of file +

Properties

defaultValue: string
defaultValues?: any
label: string
max?: string | number
maxLength?: number
min?: string | number
minLength?: number
required: true
type: "number"
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.OptionalFields.html b/docs/interfaces/_ic_reactor_visitor.OptionalFields.html index 1793086a6a..07fb7e6bed 100644 --- a/docs/interfaces/_ic_reactor_visitor.OptionalFields.html +++ b/docs/interfaces/_ic_reactor_visitor.OptionalFields.html @@ -1,4 +1,5 @@ -OptionalFields | IC ReActor
interface OptionalFields {
    defaultValue: [];
    defaultValues?: any;
    field: AllFieldTypes<Type<any>>;
    label: string;
    maxLength?: number;
    minLength?: number;
    type: "optional";
    validate: ((value) => string | boolean);
}

Hierarchy (view full)

Properties

defaultValue +OptionalFields | IC ReActor +
interface OptionalFields {
    defaultValue: [];
    defaultValues?: any;
    field: AllFieldTypes<Type<any>>;
    label: string;
    maxLength?: number;
    minLength?: number;
    type: "optional";
    validate: ((value) => string | boolean);
}

Hierarchy (view full)

Properties

defaultValue: []
defaultValues?: any
field: AllFieldTypes<Type<any>>
label: string
maxLength?: number
minLength?: number
type: "optional"
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc

\ No newline at end of file +

Properties

defaultValue: []
defaultValues?: any
field: AllFieldTypes<Type<any>>
label: string
maxLength?: number
minLength?: number
type: "optional"
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.PrincipalField.html b/docs/interfaces/_ic_reactor_visitor.PrincipalField.html index 4ee36f89cc..a709983776 100644 --- a/docs/interfaces/_ic_reactor_visitor.PrincipalField.html +++ b/docs/interfaces/_ic_reactor_visitor.PrincipalField.html @@ -1,4 +1,5 @@ -PrincipalField | IC ReActor
interface PrincipalField {
    defaultValue: string;
    defaultValues?: any;
    label: string;
    maxLength: number;
    minLength: number;
    required: true;
    type: "principal";
    validate: ((value) => string | boolean);
}

Hierarchy (view full)

Properties

defaultValue +PrincipalField | IC ReActor +
interface PrincipalField {
    defaultValue: string;
    defaultValues?: any;
    label: string;
    maxLength: number;
    minLength: number;
    required: true;
    type: "principal";
    validate: ((value) => string | boolean);
}

Hierarchy (view full)

Properties

defaultValue: string
defaultValues?: any
label: string
maxLength: number
minLength: number
required: true
type: "principal"
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc

\ No newline at end of file +

Properties

defaultValue: string
defaultValues?: any
label: string
maxLength: number
minLength: number
required: true
type: "principal"
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.RecordFields.html b/docs/interfaces/_ic_reactor_visitor.RecordFields.html index da05c72454..dca54c91e7 100644 --- a/docs/interfaces/_ic_reactor_visitor.RecordFields.html +++ b/docs/interfaces/_ic_reactor_visitor.RecordFields.html @@ -1,4 +1,5 @@ -RecordFields | IC ReActor
interface RecordFields<T> {
    defaultValue?: any;
    defaultValues: Record<string, FieldTypeFromIDLType<T>>;
    fields: AllFieldTypes<T>[];
    label: string;
    maxLength?: number;
    minLength?: number;
    type: "record";
    validate: ((value) => string | boolean);
}

Type Parameters

  • T extends IDL.Type

Hierarchy (view full)

Properties

defaultValue? +RecordFields | IC ReActor +
interface RecordFields<T> {
    defaultValue?: any;
    defaultValues: Record<string, FieldTypeFromIDLType<T>>;
    fields: AllFieldTypes<T>[];
    label: string;
    maxLength?: number;
    minLength?: number;
    type: "record";
    validate: ((value) => string | boolean);
}

Type Parameters

  • T extends IDL.Type

Hierarchy (view full)

Properties

defaultValue?: any
defaultValues: Record<string, FieldTypeFromIDLType<T>>
fields: AllFieldTypes<T>[]
label: string
maxLength?: number
minLength?: number
type: "record"
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc

\ No newline at end of file +

Properties

defaultValue?: any
defaultValues: Record<string, FieldTypeFromIDLType<T>>
fields: AllFieldTypes<T>[]
label: string
maxLength?: number
minLength?: number
type: "record"
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.RecursiveFields.html b/docs/interfaces/_ic_reactor_visitor.RecursiveFields.html index 00129c4a4f..b008da935c 100644 --- a/docs/interfaces/_ic_reactor_visitor.RecursiveFields.html +++ b/docs/interfaces/_ic_reactor_visitor.RecursiveFields.html @@ -1,4 +1,5 @@ -RecursiveFields | IC ReActor
interface RecursiveFields {
    defaultValue?: any;
    defaultValues?: any;
    extract: (() => VariantFields<Type<any>>);
    label: string;
    maxLength?: number;
    minLength?: number;
    name: string;
    type: "recursive";
    validate: ((value) => string | boolean);
}

Hierarchy (view full)

Properties

defaultValue? +RecursiveFields | IC ReActor +
interface RecursiveFields {
    defaultValue?: any;
    defaultValues?: any;
    extract: (() => VariantFields<Type<any>>);
    label: string;
    maxLength?: number;
    minLength?: number;
    name: string;
    type: "recursive";
    validate: ((value) => string | boolean);
}

Hierarchy (view full)

Properties

defaultValue?: any
defaultValues?: any
extract: (() => VariantFields<Type<any>>)

Type declaration

label: string
maxLength?: number
minLength?: number
name: string
type: "recursive"
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc

\ No newline at end of file +

Properties

defaultValue?: any
defaultValues?: any
extract: (() => VariantFields<Type<any>>)

Type declaration

label: string
maxLength?: number
minLength?: number
name: string
type: "recursive"
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.ResultArrayData.html b/docs/interfaces/_ic_reactor_visitor.ResultArrayData.html index 78310ca0b3..3bbbf2dc3c 100644 --- a/docs/interfaces/_ic_reactor_visitor.ResultArrayData.html +++ b/docs/interfaces/_ic_reactor_visitor.ResultArrayData.html @@ -1,3 +1,42 @@ -ResultArrayData | IC ReActor

Interface ResultArrayData<A, M>

interface ResultArrayData<A, M> {
    label: string;
    value: ExtractActorMethodReturnType<A[M]>[];
}

Type Parameters

Properties

label +ResultArrayData | IC ReActor +

Interface ResultArrayData<A, M>

interface ResultArrayData<A, M> {
    label: string;
    value: ExtractActorMethodReturnType<A[M]>[];
}

Type Parameters

Properties

Properties

label: string

Generated using TypeDoc

\ No newline at end of file +

Properties

label: string

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.ResultRecordData.html b/docs/interfaces/_ic_reactor_visitor.ResultRecordData.html index 9b977a448a..8ffba77f49 100644 --- a/docs/interfaces/_ic_reactor_visitor.ResultRecordData.html +++ b/docs/interfaces/_ic_reactor_visitor.ResultRecordData.html @@ -1,3 +1,42 @@ -ResultRecordData | IC ReActor

Interface ResultRecordData<A, M>

interface ResultRecordData<A, M> {
    label: string;
    value: Record<string, ExtractActorMethodReturnType<A[M]>>;
}

Type Parameters

Properties

label +ResultRecordData | IC ReActor +

Interface ResultRecordData<A, M>

interface ResultRecordData<A, M> {
    label: string;
    value: Record<string, ExtractActorMethodReturnType<A[M]>>;
}

Type Parameters

Properties

Properties

label: string

Generated using TypeDoc

\ No newline at end of file +

Properties

label: string

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.TupleFields.html b/docs/interfaces/_ic_reactor_visitor.TupleFields.html index dafc32f8cb..74f655c894 100644 --- a/docs/interfaces/_ic_reactor_visitor.TupleFields.html +++ b/docs/interfaces/_ic_reactor_visitor.TupleFields.html @@ -1,4 +1,5 @@ -TupleFields | IC ReActor
interface TupleFields<T> {
    defaultValue?: any;
    defaultValues: FieldTypeFromIDLType<T>[];
    fields: AllFieldTypes<T>[];
    label: string;
    maxLength?: number;
    minLength?: number;
    type: "tuple";
    validate: ((value) => string | boolean);
}

Type Parameters

  • T extends IDL.Type

Hierarchy (view full)

Properties

defaultValue? +TupleFields | IC ReActor +
interface TupleFields<T> {
    defaultValue?: any;
    defaultValues: FieldTypeFromIDLType<T>[];
    fields: AllFieldTypes<T>[];
    label: string;
    maxLength?: number;
    minLength?: number;
    type: "tuple";
    validate: ((value) => string | boolean);
}

Type Parameters

  • T extends IDL.Type

Hierarchy (view full)

Properties

defaultValue?: any
defaultValues: FieldTypeFromIDLType<T>[]
fields: AllFieldTypes<T>[]
label: string
maxLength?: number
minLength?: number
type: "tuple"
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc

\ No newline at end of file +

Properties

defaultValue?: any
defaultValues: FieldTypeFromIDLType<T>[]
fields: AllFieldTypes<T>[]
label: string
maxLength?: number
minLength?: number
type: "tuple"
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.VariantFields.html b/docs/interfaces/_ic_reactor_visitor.VariantFields.html index ee07e6ac8f..81116f5730 100644 --- a/docs/interfaces/_ic_reactor_visitor.VariantFields.html +++ b/docs/interfaces/_ic_reactor_visitor.VariantFields.html @@ -1,4 +1,5 @@ -VariantFields | IC ReActor
interface VariantFields<T> {
    defaultValue: string;
    defaultValues: FieldTypeFromIDLType<T>;
    fields: AllFieldTypes<T>[];
    label: string;
    maxLength?: number;
    minLength?: number;
    options: string[];
    type: "variant";
    validate: ((value) => string | boolean);
}

Type Parameters

  • T extends IDL.Type

Hierarchy (view full)

Properties

defaultValue +VariantFields | IC ReActor +
interface VariantFields<T> {
    defaultValue: string;
    defaultValues: FieldTypeFromIDLType<T>;
    fields: AllFieldTypes<T>[];
    label: string;
    maxLength?: number;
    minLength?: number;
    options: string[];
    type: "variant";
    validate: ((value) => string | boolean);
}

Type Parameters

  • T extends IDL.Type

Hierarchy (view full)

Properties

defaultValue: string
defaultValues: FieldTypeFromIDLType<T>
fields: AllFieldTypes<T>[]
label: string
maxLength?: number
minLength?: number
options: string[]
type: "variant"
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc

\ No newline at end of file +

Properties

defaultValue: string
defaultValues: FieldTypeFromIDLType<T>
fields: AllFieldTypes<T>[]
label: string
maxLength?: number
minLength?: number
options: string[]
type: "variant"
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/interfaces/_ic_reactor_visitor.VectorFields.html b/docs/interfaces/_ic_reactor_visitor.VectorFields.html index 12a07d75d5..7d7829c7da 100644 --- a/docs/interfaces/_ic_reactor_visitor.VectorFields.html +++ b/docs/interfaces/_ic_reactor_visitor.VectorFields.html @@ -1,4 +1,5 @@ -VectorFields | IC ReActor
interface VectorFields {
    defaultValue: [];
    defaultValues?: any;
    field: AllFieldTypes<Type<any>>;
    label: string;
    maxLength?: number;
    minLength?: number;
    type: "vector";
    validate: ((value) => string | boolean);
}

Hierarchy (view full)

Properties

defaultValue +VectorFields | IC ReActor +
interface VectorFields {
    defaultValue: [];
    defaultValues?: any;
    field: AllFieldTypes<Type<any>>;
    label: string;
    maxLength?: number;
    minLength?: number;
    type: "vector";
    validate: ((value) => string | boolean);
}

Hierarchy (view full)

Properties

defaultValue: []
defaultValues?: any
field: AllFieldTypes<Type<any>>
label: string
maxLength?: number
minLength?: number
type: "vector"
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc

\ No newline at end of file +

Properties

defaultValue: []
defaultValues?: any
field: AllFieldTypes<Type<any>>
label: string
maxLength?: number
minLength?: number
type: "vector"
validate: ((value) => string | boolean)

Type declaration

    • (value): string | boolean
    • Parameters

      • value: any

      Returns string | boolean

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/modules/_ic_reactor_core.html b/docs/modules/_ic_reactor_core.html index 124bd36345..a625bb164e 100644 --- a/docs/modules/_ic_reactor_core.html +++ b/docs/modules/_ic_reactor_core.html @@ -1,4 +1,5 @@ -@ic-reactor/core | IC ReActor

Module @ic-reactor/core

IC-ReActor - Core

ReActor is a JavaScript utility designed to streamline state management and interaction with actors in the Internet Computer (IC) blockchain environment. It provides a simple and effective way to handle asynchronous calls, state updates, and subscriptions, making it easier to build responsive and data-driven applications.

+@ic-reactor/core | IC ReActor +

Module @ic-reactor/core

IC-ReActor - Core

ReActor is a JavaScript utility designed to streamline state management and interaction with actors in the Internet Computer (IC) blockchain environment. It provides a simple and effective way to handle asynchronous calls, state updates, and subscriptions, making it easier to build responsive and data-driven applications.

Features

  • State Management: Efficiently manage the state of your application with actor-based interactions.
  • Asynchronous Handling: Simplify asynchronous calls and data handling with built-in methods.
  • @@ -27,4 +28,42 @@

    For more detailed API usage and options, please refer to the documentation.

    Contributing

    Contributions are welcome! Please read our contributing guidelines to get started.

    License

    This project is licensed under MIT License.

    -

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/modules/_ic_reactor_react.html b/docs/modules/_ic_reactor_react.html index 5d5f1e8053..e13d4cb219 100644 --- a/docs/modules/_ic_reactor_react.html +++ b/docs/modules/_ic_reactor_react.html @@ -1,4 +1,5 @@ -@ic-reactor/react | IC ReActor

Module @ic-reactor/react

IC-ReActor - React

@ic-reactor/react is a comprehensive React library designed to streamline interactions with the Internet Computer (IC) blockchain. It provides React hooks and utilities for efficient state management, authentication, and interaction with IC actors.

+@ic-reactor/react | IC ReActor +

Module @ic-reactor/react

IC-ReActor - React

@ic-reactor/react is a comprehensive React library designed to streamline interactions with the Internet Computer (IC) blockchain. It provides React hooks and utilities for efficient state management, authentication, and interaction with IC actors.

Features

  • React Hooks Integration: Custom hooks for managing blockchain actor states and authentication within React applications.
  • Efficient State Management: Utilize the power of Zustand for global state management in React components.
  • @@ -34,4 +35,42 @@

    For detailed API usage and options, please refer to the documentation.

    Contributing

    Contributions to @ic-reactor/react are welcome! Please read our contributing guidelines for more information.

    License

    @ic-reactor/react is licensed under the MIT License. See the LICENSE file for more details.

    -

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/modules/_ic_reactor_store.html b/docs/modules/_ic_reactor_store.html index 0ebe0aed47..a66292bd61 100644 --- a/docs/modules/_ic_reactor_store.html +++ b/docs/modules/_ic_reactor_store.html @@ -1,4 +1,5 @@ -@ic-reactor/store | IC ReActor

Module @ic-reactor/store

IC-ReActor - Store

@ic-reactor/store is a state management library designed for applications interacting with the Internet Computer (IC) blockchain. It facilitates the management of actor states, authentication processes, and seamless interaction with IC actors, leveraging the power of zustand for global state management.

+@ic-reactor/store | IC ReActor +

Module @ic-reactor/store

IC-ReActor - Store

@ic-reactor/store is a state management library designed for applications interacting with the Internet Computer (IC) blockchain. It facilitates the management of actor states, authentication processes, and seamless interaction with IC actors, leveraging the power of zustand for global state management.

Features

  • Actor State Management: Efficiently manage and update the state of IC actors.
  • Authentication Handling: Integrated functionality for managing authentication with IC.
  • @@ -12,27 +13,33 @@

    or using yarn:

    yarn add @ic-reactor/store
     
    -

    Usage

    To use @ic-reactor/store, start by creating a ReActor manager with your actor configurations:

    -
    import createReActorManager from "@ic-reactor/store"
    import { idlFactory, canisterId } from "./declarations/actor"

    type Actor = typeof actor

    const { actorStore, authenticate, callMethod } = createReActorStore<Actor>({
    idlFactory,
    canisterId: "xeka7-ryaaa-aaaal-qb57a-cai",
    host: "https://icp-api.io",
    }) +

    Usage

    You can this packages in two ways:

    +
      +
    1. Automatic Agent Creation: You can use the createReActorStore factory function to create a new ReActor store instance. This will automatically create an agent and manage its state for you.
    2. +
    +
    import { createReActorStore } from "@ic-reactor/store"
    import { candid, canisterId, idlFactory } from "./candid"

    type Candid = typeof candid

    const { callMethod, agentManager } = createReActorStore<Candid>({
    canisterId,
    idlFactory,
    })

    // later in your code
    const identity = await agentManager.authenticate()
    const data = await callMethod("version")
    -

    Managing Actor State

    Utilize the ReActor manager to manage the state of your IC actors:

    -
    // Access and update actor state
    const actorState = actorStore.getState() -
    -

    Handling Authentication

    Manage authentication states and processes:

    -
    // Authenticate with the IC blockchain
    authenticate()
    .then(() => {
    // Handle successful authentication
    })
    .catch((error) => {
    // Handle authentication errors
    }) +
      +
    1. Manual Agent Creation: You can use the createAgentManager to manually create and manage an agent instance.
    2. +
    +
      +
    • IC Agent
    • +
    +
    // agent.ts
    import { createAgentManager } from "@ic-reactor/store"

    export const agentManager = createAgentManager() // connect to the default ic network

    // later in your code
    const identity = await agentManager.authenticate()
    -

    Calling Actor Methods

    Call actor methods and handle the results:

    -
    // Call an actor method
    callMethod({
    functionName: "get_balance",
    args: [principal],
    })
    .then((result) => {
    // Handle successful method call
    })
    .catch((error) => {
    // Handle method call errors
    }) +
      +
    • Local Agent
    • +
    +
    // agent.ts
    import { createAgentManager } from "@ic-reactor/store"

    export const agentManager = createAgentManager({
    isLocalEnv: true,
    port: 8000, // default port is 4943
    })
    -

    API Reference

    @ic-reactor/store provides several key functionalities:

      -
    • ReActorManager: The main class to manage actor states and interactions.
    • -
    • createReActorManager: Factory function to create a new ReActor manager instance.
    • -
    • State management actions: Methods to initialize actors, handle authentication, and manage global state.
    • +
    • Or you can use the host option directly
    -

    For a detailed API reference, including the complete list of methods and their usage, please refer to the documentation.

    -

    Contributing

    Contributions to @ic-reactor/store are welcome! Please read our contributing guidelines for more information.

    -

    License

    @ic-reactor/store is licensed under the MIT License. See the LICENSE file for more details.

    +
    export const agentManager = createAgentManager({
    host: "http://localhost:8000",
    }) +
    +

    then you can use the "createActorManager" to create an actor manager

    +
    // actor.ts
    import { createActorManager } from "@ic-reactor/store"
    import { candid, canisterId, idlFactory } from "./candid"
    import { agentManager } from "./agent"

    type Candid = typeof candid

    const actorManager = createActorManager<Candid>({
    agentManager,
    canisterId,
    idlFactory,
    })

    // later in your code
    const data = await actorManager.callMethod("version") +

Index

Main Functions

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/modules/_ic_reactor_svelte.html b/docs/modules/_ic_reactor_svelte.html index 10e8e3a00f..130621ce2a 100644 --- a/docs/modules/_ic_reactor_svelte.html +++ b/docs/modules/_ic_reactor_svelte.html @@ -1,4 +1,5 @@ -@ic-reactor/svelte | IC ReActor

Module @ic-reactor/svelte

IC-ReActor - Store

@ic-reactor/store is a state management library designed for applications interacting with the Internet Computer (IC) blockchain. It facilitates the management of actor states, authentication processes, and seamless interaction with IC actors, leveraging the power of zustand for global state management.

+@ic-reactor/svelte | IC ReActor +

Module @ic-reactor/svelte

IC-ReActor - Store

@ic-reactor/store is a state management library designed for applications interacting with the Internet Computer (IC) blockchain. It facilitates the management of actor states, authentication processes, and seamless interaction with IC actors, leveraging the power of zustand for global state management.

Features

  • Actor State Management: Efficiently manage and update the state of IC actors.
  • Authentication Handling: Integrated functionality for managing authentication with IC.
  • @@ -30,4 +31,42 @@

    For a detailed API reference, including the complete list of methods and their usage, please refer to the documentation.

    Contributing

    Contributions to @ic-reactor/store are welcome! Please read our contributing guidelines for more information.

    License

    @ic-reactor/store is licensed under the MIT License. See the LICENSE file for more details.

    -

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/modules/_ic_reactor_visitor.html b/docs/modules/_ic_reactor_visitor.html index fa9f678955..fb2a20ed56 100644 --- a/docs/modules/_ic_reactor_visitor.html +++ b/docs/modules/_ic_reactor_visitor.html @@ -1,4 +1,5 @@ -@ic-reactor/visitor | IC ReActor

Module @ic-reactor/visitor

IC-ReActor - Visitor

This package provides a visitor pattern implementation for the IC-ReActor framework.

+@ic-reactor/visitor | IC ReActor +

Module @ic-reactor/visitor

IC-ReActor - Visitor

This package provides a visitor pattern implementation for the IC-ReActor framework.

Index

Classes

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_store.ActorMethodStates.html b/docs/types/_ic_reactor_store.ActorMethodStates.html index 0d64693683..4b1e81dc63 100644 --- a/docs/types/_ic_reactor_store.ActorMethodStates.html +++ b/docs/types/_ic_reactor_store.ActorMethodStates.html @@ -1 +1,40 @@ -ActorMethodStates | IC ReActor

Type alias ActorMethodStates<A>

ActorMethodStates<A>: {
    [M in FunctionName<A>]: ActorMethodState<A, M>
}

Type Parameters

  • A

Generated using TypeDoc

\ No newline at end of file +ActorMethodStates | IC ReActor +

Type alias ActorMethodStates<A>

ActorMethodStates<A>: {
    [M in FunctionName<A>]: ActorMethodState<A, M>
}

Type Parameters

  • A

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_store.ActorState.html b/docs/types/_ic_reactor_store.ActorState.html index de24c9c7c7..f7258c5e02 100644 --- a/docs/types/_ic_reactor_store.ActorState.html +++ b/docs/types/_ic_reactor_store.ActorState.html @@ -1 +1,40 @@ -ActorState | IC ReActor
ActorState<A>: {
    error: Error | undefined;
    initialized: boolean;
    initializing: boolean;
    methodState: ActorMethodStates<A>;
}

Type Parameters

  • A

Type declaration

Generated using TypeDoc

\ No newline at end of file +ActorState | IC ReActor +
ActorState<A>: {
    error: Error | undefined;
    initialized: boolean;
    initializing: boolean;
    methodState: ActorMethodStates<A>;
}

Type Parameters

  • A

Type declaration

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_store.ActorStore.html b/docs/types/_ic_reactor_store.ActorStore.html index ad25866576..0292c99feb 100644 --- a/docs/types/_ic_reactor_store.ActorStore.html +++ b/docs/types/_ic_reactor_store.ActorStore.html @@ -1 +1,40 @@ -ActorStore | IC ReActor
ActorStore<A>: StoreApi<ActorState<A>>

Type Parameters

Generated using TypeDoc

\ No newline at end of file +ActorStore | IC ReActor +
ActorStore<A>: StoreApi<ActorState<A>>

Type Parameters

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_store.ActorSubclass.html b/docs/types/_ic_reactor_store.ActorSubclass.html index 5a7ccc1109..b532cd337e 100644 --- a/docs/types/_ic_reactor_store.ActorSubclass.html +++ b/docs/types/_ic_reactor_store.ActorSubclass.html @@ -1,2 +1,41 @@ -ActorSubclass | IC ReActor

Type alias ActorSubclass<T>

ActorSubclass<T>: Actor & T

A subclass of an actor. Actor class itself is meant to be a based class.

-

Type Parameters

Generated using TypeDoc

\ No newline at end of file +ActorSubclass | IC ReActor +

Type alias ActorSubclass<T>

ActorSubclass<T>: Actor & T

A subclass of an actor. Actor class itself is meant to be a based class.

+

Type Parameters

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_store.AgentAuthStore.html b/docs/types/_ic_reactor_store.AgentAuthStore.html index 54c50a4a44..77468411d3 100644 --- a/docs/types/_ic_reactor_store.AgentAuthStore.html +++ b/docs/types/_ic_reactor_store.AgentAuthStore.html @@ -1 +1,40 @@ -AgentAuthStore | IC ReActor
AgentAuthStore: StoreApi<AgentAuthState>

Generated using TypeDoc

\ No newline at end of file +AgentAuthStore | IC ReActor +
AgentAuthStore: StoreApi<AgentAuthState>

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_store.CallActorMethod.html b/docs/types/_ic_reactor_store.CallActorMethod.html index fd777c2ad1..cb45327d4b 100644 --- a/docs/types/_ic_reactor_store.CallActorMethod.html +++ b/docs/types/_ic_reactor_store.CallActorMethod.html @@ -1 +1,40 @@ -CallActorMethod | IC ReActor

Type alias CallActorMethod<A>

CallActorMethod<A>: (<M>(functionName, ...args) => Promise<ExtractActorMethodReturnType<A[M]>>)

Type Parameters

Type declaration

Generated using TypeDoc

\ No newline at end of file +CallActorMethod | IC ReActor +

Type alias CallActorMethod<A>

CallActorMethod<A>: (<M>(functionName, ...args) => Promise<ExtractActorMethodReturnType<A[M]>>)

Type Parameters

Type declaration

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_store.CanisterId.html b/docs/types/_ic_reactor_store.CanisterId.html index c8f23f866b..115857dd31 100644 --- a/docs/types/_ic_reactor_store.CanisterId.html +++ b/docs/types/_ic_reactor_store.CanisterId.html @@ -1 +1,40 @@ -CanisterId | IC ReActor

Generated using TypeDoc

\ No newline at end of file +CanisterId | IC ReActor +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_store.ExtractActorMethodArgs.html b/docs/types/_ic_reactor_store.ExtractActorMethodArgs.html index a4cc527a3e..3393f3bfe6 100644 --- a/docs/types/_ic_reactor_store.ExtractActorMethodArgs.html +++ b/docs/types/_ic_reactor_store.ExtractActorMethodArgs.html @@ -1 +1,40 @@ -ExtractActorMethodArgs | IC ReActor

Type alias ExtractActorMethodArgs<T>

ExtractActorMethodArgs<T>: T extends ActorMethod<infer A>
    ? A
    : never

Type Parameters

  • T

Generated using TypeDoc

\ No newline at end of file +ExtractActorMethodArgs | IC ReActor +

Type alias ExtractActorMethodArgs<T>

ExtractActorMethodArgs<T>: T extends ActorMethod<infer A>
    ? A
    : never

Type Parameters

  • T

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_store.ExtractActorMethodReturnType.html b/docs/types/_ic_reactor_store.ExtractActorMethodReturnType.html index 2a0a0e9182..ace506bfa8 100644 --- a/docs/types/_ic_reactor_store.ExtractActorMethodReturnType.html +++ b/docs/types/_ic_reactor_store.ExtractActorMethodReturnType.html @@ -1 +1,40 @@ -ExtractActorMethodReturnType | IC ReActor

Type alias ExtractActorMethodReturnType<T>

ExtractActorMethodReturnType<T>: T extends ActorMethod<any, infer R>
    ? R
    : never

Type Parameters

  • T

Generated using TypeDoc

\ No newline at end of file +ExtractActorMethodReturnType | IC ReActor +

Type alias ExtractActorMethodReturnType<T>

ExtractActorMethodReturnType<T>: T extends ActorMethod<any, infer R>
    ? R
    : never

Type Parameters

  • T

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_store.ExtractVisitorType.html b/docs/types/_ic_reactor_store.ExtractVisitorType.html index cf6c7d6c7d..92ec0af828 100644 --- a/docs/types/_ic_reactor_store.ExtractVisitorType.html +++ b/docs/types/_ic_reactor_store.ExtractVisitorType.html @@ -1 +1,40 @@ -ExtractVisitorType | IC ReActor

Type alias ExtractVisitorType<T>

ExtractVisitorType<T>: T extends IDL.Visitor<infer U, infer V>
    ? {
        data: U;
        return: V;
    }
    : never

Type Parameters

  • T

Generated using TypeDoc

\ No newline at end of file +ExtractVisitorType | IC ReActor +

Type alias ExtractVisitorType<T>

ExtractVisitorType<T>: T extends IDL.Visitor<infer U, infer V>
    ? {
        data: U;
        return: V;
    }
    : never

Type Parameters

  • T

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_store.ExtractedService.html b/docs/types/_ic_reactor_store.ExtractedService.html index 150f16bc0d..2609542dba 100644 --- a/docs/types/_ic_reactor_store.ExtractedService.html +++ b/docs/types/_ic_reactor_store.ExtractedService.html @@ -1 +1,40 @@ -ExtractedService | IC ReActor

Type alias ExtractedService<A, M>

ExtractedService<A, M>: {
    [K in M]: (<V>(extractorClass, data?) => ReturnType<V["visitFunc"]>)
}

Type Parameters

Generated using TypeDoc

\ No newline at end of file +ExtractedService | IC ReActor +

Type alias ExtractedService<A, M>

ExtractedService<A, M>: {
    [K in M]: (<V>(extractorClass, data?) => ReturnType<V["visitFunc"]>)
}

Type Parameters

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_store.FunctionName.html b/docs/types/_ic_reactor_store.FunctionName.html index d0026230ae..136ebd240c 100644 --- a/docs/types/_ic_reactor_store.FunctionName.html +++ b/docs/types/_ic_reactor_store.FunctionName.html @@ -1 +1,40 @@ -FunctionName | IC ReActor

Type alias FunctionName<A>

FunctionName<A>: keyof A & string

Type Parameters

Generated using TypeDoc

\ No newline at end of file +FunctionName | IC ReActor +

Type alias FunctionName<A>

FunctionName<A>: keyof A & string

Type Parameters

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_store.FunctionType.html b/docs/types/_ic_reactor_store.FunctionType.html index 307541d253..59b4f3ec52 100644 --- a/docs/types/_ic_reactor_store.FunctionType.html +++ b/docs/types/_ic_reactor_store.FunctionType.html @@ -1 +1,40 @@ -FunctionType | IC ReActor
FunctionType: "query" | "update"

Generated using TypeDoc

\ No newline at end of file +FunctionType | IC ReActor +
FunctionType: "query" | "update"

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_visitor.AllFieldTypes.html b/docs/types/_ic_reactor_visitor.AllFieldTypes.html index 751841e99e..d8d89e2448 100644 --- a/docs/types/_ic_reactor_visitor.AllFieldTypes.html +++ b/docs/types/_ic_reactor_visitor.AllFieldTypes.html @@ -1 +1,40 @@ -AllFieldTypes | IC ReActor

Generated using TypeDoc

\ No newline at end of file +AllFieldTypes | IC ReActor +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_visitor.AllNumberTypes.html b/docs/types/_ic_reactor_visitor.AllNumberTypes.html index 17c76c09fd..3f6c904d20 100644 --- a/docs/types/_ic_reactor_visitor.AllNumberTypes.html +++ b/docs/types/_ic_reactor_visitor.AllNumberTypes.html @@ -1 +1,40 @@ -AllNumberTypes | IC ReActor
AllNumberTypes: IDL.NatClass | IDL.IntClass | IDL.NatClass | IDL.FixedNatClass | IDL.FixedIntClass | IDL.FloatClass

Generated using TypeDoc

\ No newline at end of file +AllNumberTypes | IC ReActor +
AllNumberTypes: IDL.NatClass | IDL.IntClass | IDL.NatClass | IDL.FixedNatClass | IDL.FixedIntClass | IDL.FloatClass

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_visitor.DynamicFieldType.html b/docs/types/_ic_reactor_visitor.DynamicFieldType.html index 625f05ee61..3e0bafc1a3 100644 --- a/docs/types/_ic_reactor_visitor.DynamicFieldType.html +++ b/docs/types/_ic_reactor_visitor.DynamicFieldType.html @@ -1 +1,40 @@ -DynamicFieldType | IC ReActor

Type alias DynamicFieldType<T>

DynamicFieldType<T>: T extends "record"
    ? RecordFields<IDL.Type>
    : T extends "variant"
        ? VariantFields<IDL.Type>
        : T extends "tuple"
            ? TupleFields<IDL.Type>
            : T extends "optional"
                ? OptionalFields
                : T extends "vector"
                    ? VectorFields
                    : T extends "recursive"
                        ? RecursiveFields
                        : T extends "unknown"
                            ? InputField<IDL.Type>
                            : T extends "text"
                                ? InputField<IDL.TextClass>
                                : T extends "number"
                                    ? NumberField
                                    : T extends "principal"
                                        ? PrincipalField
                                        : T extends "boolean"
                                            ? InputField<IDL.BoolClass>
                                            : T extends "null"
                                                ? InputField<IDL.NullClass>
                                                : never

Type Parameters

  • T extends FieldType = any

Generated using TypeDoc

\ No newline at end of file +DynamicFieldType | IC ReActor +

Type alias DynamicFieldType<T>

DynamicFieldType<T>: T extends "record"
    ? RecordFields<IDL.Type>
    : T extends "variant"
        ? VariantFields<IDL.Type>
        : T extends "tuple"
            ? TupleFields<IDL.Type>
            : T extends "optional"
                ? OptionalFields
                : T extends "vector"
                    ? VectorFields
                    : T extends "recursive"
                        ? RecursiveFields
                        : T extends "unknown"
                            ? InputField<IDL.Type>
                            : T extends "text"
                                ? InputField<IDL.TextClass>
                                : T extends "number"
                                    ? NumberField
                                    : T extends "principal"
                                        ? PrincipalField
                                        : T extends "boolean"
                                            ? InputField<IDL.BoolClass>
                                            : T extends "null"
                                                ? InputField<IDL.NullClass>
                                                : never

Type Parameters

  • T extends FieldType = any

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_visitor.DynamicFieldTypeByClass.html b/docs/types/_ic_reactor_visitor.DynamicFieldTypeByClass.html index 71c4fec063..57a4430726 100644 --- a/docs/types/_ic_reactor_visitor.DynamicFieldTypeByClass.html +++ b/docs/types/_ic_reactor_visitor.DynamicFieldTypeByClass.html @@ -1 +1,40 @@ -DynamicFieldTypeByClass | IC ReActor

Type alias DynamicFieldTypeByClass<T>

DynamicFieldTypeByClass<T>: T extends IDL.RecordClass
    ? RecordFields<T>
    : T extends IDL.TupleClass<any>
        ? TupleFields<T>
        : T extends IDL.VariantClass
            ? VariantFields<T>
            : T extends IDL.VecClass<any>
                ? VectorFields
                : T extends IDL.OptClass<any>
                    ? OptionalFields
                    : T extends IDL.RecClass<any>
                        ? RecursiveFields
                        : T extends IDL.PrincipalClass
                            ? PrincipalField
                            : T extends AllNumberTypes
                                ? NumberField
                                : InputField<T>

Type Parameters

  • T extends IDL.Type

Generated using TypeDoc

\ No newline at end of file +DynamicFieldTypeByClass | IC ReActor +

Type alias DynamicFieldTypeByClass<T>

DynamicFieldTypeByClass<T>: T extends IDL.RecordClass
    ? RecordFields<T>
    : T extends IDL.TupleClass<any>
        ? TupleFields<T>
        : T extends IDL.VariantClass
            ? VariantFields<T>
            : T extends IDL.VecClass<any>
                ? VectorFields
                : T extends IDL.OptClass<any>
                    ? OptionalFields
                    : T extends IDL.RecClass<any>
                        ? RecursiveFields
                        : T extends IDL.PrincipalClass
                            ? PrincipalField
                            : T extends AllNumberTypes
                                ? NumberField
                                : InputField<T>

Type Parameters

  • T extends IDL.Type

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_visitor.ExtraInputFormFields.html b/docs/types/_ic_reactor_visitor.ExtraInputFormFields.html index c08c7cf88b..77122f6bf4 100644 --- a/docs/types/_ic_reactor_visitor.ExtraInputFormFields.html +++ b/docs/types/_ic_reactor_visitor.ExtraInputFormFields.html @@ -1 +1,40 @@ -ExtraInputFormFields | IC ReActor
ExtraInputFormFields: Partial<{
    maxLength: number;
    minLength: number;
}>

Type declaration

  • maxLength: number
  • minLength: number

Generated using TypeDoc

\ No newline at end of file +ExtraInputFormFields | IC ReActor +
ExtraInputFormFields: Partial<{
    maxLength: number;
    minLength: number;
}>

Type declaration

  • maxLength: number
  • minLength: number

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_visitor.FieldTypeFromIDLType.html b/docs/types/_ic_reactor_visitor.FieldTypeFromIDLType.html index ac5b4dbcb1..7786a518c2 100644 --- a/docs/types/_ic_reactor_visitor.FieldTypeFromIDLType.html +++ b/docs/types/_ic_reactor_visitor.FieldTypeFromIDLType.html @@ -1 +1,40 @@ -FieldTypeFromIDLType | IC ReActor

Type alias FieldTypeFromIDLType<T>

FieldTypeFromIDLType<T>: T extends IDL.Type
    ? ReturnType<T["decodeValue"]>
    : any

Type Parameters

  • T = any

Generated using TypeDoc

\ No newline at end of file +FieldTypeFromIDLType | IC ReActor +

Type alias FieldTypeFromIDLType<T>

FieldTypeFromIDLType<T>: T extends IDL.Type
    ? ReturnType<T["decodeValue"]>
    : any

Type Parameters

  • T = any

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_visitor.FunctionCategory.html b/docs/types/_ic_reactor_visitor.FunctionCategory.html index 52ab9a592c..b98f02b30a 100644 --- a/docs/types/_ic_reactor_visitor.FunctionCategory.html +++ b/docs/types/_ic_reactor_visitor.FunctionCategory.html @@ -1 +1,40 @@ -FunctionCategory | IC ReActor
FunctionCategory: "home" | "wallet" | "governance" | "setting"

Generated using TypeDoc

\ No newline at end of file +FunctionCategory | IC ReActor +
FunctionCategory: "home" | "wallet" | "governance" | "setting"

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_visitor.MethodDefaultValues.html b/docs/types/_ic_reactor_visitor.MethodDefaultValues.html index 7a8b52761e..b47ae433df 100644 --- a/docs/types/_ic_reactor_visitor.MethodDefaultValues.html +++ b/docs/types/_ic_reactor_visitor.MethodDefaultValues.html @@ -1 +1,40 @@ -MethodDefaultValues | IC ReActor

Type alias MethodDefaultValues<T>

MethodDefaultValues<T>: {
    [key: `arg${number}`]: FieldTypeFromIDLType<T>;
}

Type Parameters

  • T = string

Type declaration

Generated using TypeDoc

\ No newline at end of file +MethodDefaultValues | IC ReActor +

Type alias MethodDefaultValues<T>

MethodDefaultValues<T>: {
    [key: `arg${number}`]: FieldTypeFromIDLType<T>;
}

Type Parameters

  • T = string

Type declaration

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_visitor.MethodDetails.html b/docs/types/_ic_reactor_visitor.MethodDetails.html index 708c59db28..0ddb330827 100644 --- a/docs/types/_ic_reactor_visitor.MethodDetails.html +++ b/docs/types/_ic_reactor_visitor.MethodDetails.html @@ -1 +1,40 @@ -MethodDetails | IC ReActor
MethodDetails<A>: {
    __description: string;
    __label: string;
    category: FunctionCategory;
    functionName: FunctionName<A>;
    functionType: FunctionType;
    order: number;
    [key: `arg${number}`]: FieldDetailsWithChild;
}

Type Parameters

Type declaration

Generated using TypeDoc

\ No newline at end of file +MethodDetails | IC ReActor +
MethodDetails<A>: {
    __description: string;
    __label: string;
    category: FunctionCategory;
    functionName: FunctionName<A>;
    functionType: FunctionType;
    order: number;
    [key: `arg${number}`]: FieldDetailsWithChild;
}

Type Parameters

Type declaration

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_visitor.MethodResult.html b/docs/types/_ic_reactor_visitor.MethodResult.html index 28cfd8fb76..fbeda38473 100644 --- a/docs/types/_ic_reactor_visitor.MethodResult.html +++ b/docs/types/_ic_reactor_visitor.MethodResult.html @@ -1 +1,40 @@ -MethodResult | IC ReActor

Type alias MethodResult<A, M>

MethodResult<A, M>: {
    description: string;
    label: string;
    type: ReturnDataType;
    value?: MethodResultValue<A, M>;
    values?: MethodResult<A, M>[];
}

Type Parameters

Type declaration

Generated using TypeDoc

\ No newline at end of file +MethodResult | IC ReActor +

Type alias MethodResult<A, M>

MethodResult<A, M>: {
    description: string;
    label: string;
    type: ReturnDataType;
    value?: MethodResultValue<A, M>;
    values?: MethodResult<A, M>[];
}

Type Parameters

Type declaration

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_visitor.MethodResultValue.html b/docs/types/_ic_reactor_visitor.MethodResultValue.html index 3b76aa1400..3b7f48a47b 100644 --- a/docs/types/_ic_reactor_visitor.MethodResultValue.html +++ b/docs/types/_ic_reactor_visitor.MethodResultValue.html @@ -1 +1,40 @@ -MethodResultValue | IC ReActor

Type alias MethodResultValue<A, M>

MethodResultValue<A, M>: ExtractActorMethodReturnType<A[M]> | MethodResult<A, M> | number | string | boolean | Principal | Uint8Array | null

Type Parameters

Generated using TypeDoc

\ No newline at end of file +MethodResultValue | IC ReActor +

Type alias MethodResultValue<A, M>

MethodResultValue<A, M>: ExtractActorMethodReturnType<A[M]> | MethodResult<A, M> | number | string | boolean | Principal | Uint8Array | null

Type Parameters

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_visitor.OtherDetails.html b/docs/types/_ic_reactor_visitor.OtherDetails.html index ff7f5e2b8d..8f85ab4825 100644 --- a/docs/types/_ic_reactor_visitor.OtherDetails.html +++ b/docs/types/_ic_reactor_visitor.OtherDetails.html @@ -1 +1,40 @@ -OtherDetails | IC ReActor

Generated using TypeDoc

\ No newline at end of file +OtherDetails | IC ReActor +

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_visitor.ServiceDefaultValues.html b/docs/types/_ic_reactor_visitor.ServiceDefaultValues.html index 7f7c62dae1..ee19a5685d 100644 --- a/docs/types/_ic_reactor_visitor.ServiceDefaultValues.html +++ b/docs/types/_ic_reactor_visitor.ServiceDefaultValues.html @@ -1 +1,40 @@ -ServiceDefaultValues | IC ReActor

Type alias ServiceDefaultValues<A, M>

ServiceDefaultValues<A, M>: {
    [key in M]: MethodDefaultValues<M>
}

Type Parameters

Generated using TypeDoc

\ No newline at end of file +ServiceDefaultValues | IC ReActor +

Type alias ServiceDefaultValues<A, M>

ServiceDefaultValues<A, M>: {
    [key in M]: MethodDefaultValues<M>
}

Type Parameters

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_visitor.ServiceDetails.html b/docs/types/_ic_reactor_visitor.ServiceDetails.html index 5e76e555cb..9443c3ba53 100644 --- a/docs/types/_ic_reactor_visitor.ServiceDetails.html +++ b/docs/types/_ic_reactor_visitor.ServiceDetails.html @@ -1 +1,40 @@ -ServiceDetails | IC ReActor
ServiceDetails<A>: {
    [K in FunctionName<A>]: (<ExtractorClass>(extractorClass?) => MethodDetails<A>)
}

Type Parameters

Generated using TypeDoc

\ No newline at end of file +ServiceDetails | IC ReActor +
ServiceDetails<A>: {
    [K in FunctionName<A>]: (<ExtractorClass>(extractorClass?) => MethodDetails<A>)
}

Type Parameters

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/types/_ic_reactor_visitor.ServiceFields.html b/docs/types/_ic_reactor_visitor.ServiceFields.html index 60c5a91e9f..276cb574e0 100644 --- a/docs/types/_ic_reactor_visitor.ServiceFields.html +++ b/docs/types/_ic_reactor_visitor.ServiceFields.html @@ -1 +1,40 @@ -ServiceFields | IC ReActor

Type alias ServiceFields<A, M>

ServiceFields<A, M>: {
    [key in M]: (<ExtractorClass>(extractorClass?) => MethodFields<A, M>)
}

Type Parameters

Generated using TypeDoc

\ No newline at end of file +ServiceFields | IC ReActor +

Type alias ServiceFields<A, M>

ServiceFields<A, M>: {
    [key in M]: (<ExtractorClass>(extractorClass?) => MethodFields<A, M>)
}

Type Parameters

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/variables/_ic_reactor_store.IC_HOST_NETWORK_URI.html b/docs/variables/_ic_reactor_store.IC_HOST_NETWORK_URI.html index 61e58bbdf3..bd138a070c 100644 --- a/docs/variables/_ic_reactor_store.IC_HOST_NETWORK_URI.html +++ b/docs/variables/_ic_reactor_store.IC_HOST_NETWORK_URI.html @@ -1 +1,40 @@ -IC_HOST_NETWORK_URI | IC ReActor

Variable IC_HOST_NETWORK_URIConst

IC_HOST_NETWORK_URI: "https://ic0.app" = "https://ic0.app"

Generated using TypeDoc

\ No newline at end of file +IC_HOST_NETWORK_URI | IC ReActor +

Variable IC_HOST_NETWORK_URIConst

IC_HOST_NETWORK_URI: "https://ic0.app" = "https://ic0.app"

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/docs/variables/_ic_reactor_store.LOCAL_HOST_NETWORK_URI.html b/docs/variables/_ic_reactor_store.LOCAL_HOST_NETWORK_URI.html index 4445adb4fe..b114ec0bec 100644 --- a/docs/variables/_ic_reactor_store.LOCAL_HOST_NETWORK_URI.html +++ b/docs/variables/_ic_reactor_store.LOCAL_HOST_NETWORK_URI.html @@ -1 +1,40 @@ -LOCAL_HOST_NETWORK_URI | IC ReActor

Variable LOCAL_HOST_NETWORK_URIConst

LOCAL_HOST_NETWORK_URI: "http://127.0.0.1:4943" = "http://127.0.0.1:4943"

Generated using TypeDoc

\ No newline at end of file +LOCAL_HOST_NETWORK_URI | IC ReActor +

Variable LOCAL_HOST_NETWORK_URIConst

LOCAL_HOST_NETWORK_URI: "http://127.0.0.1:4943" = "http://127.0.0.1:4943"

Generated using TypeDoc
+ + +

\ No newline at end of file diff --git a/ic-reactor.png b/ic-reactor.png new file mode 100644 index 0000000000000000000000000000000000000000..e48f4a20f20faf6df9e27c91f4d4c631688ec48b GIT binary patch literal 125268 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

F=^DSZ=!ayr^VJz9q3Hs|uoD?&&X6cVMG?~N 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 = DefaultActorType >({ isLocalEnv, - withServiceFields, - withServiceDetails, + withVisitor, ...options }: CreateReactActorOptions) => { isLocalEnv = @@ -36,38 +26,19 @@ export const createReActor: CreateReActor = < (process.env.DFX_NETWORK === "local" || process.env.NODE_ENV === "development")) - let actorManager: ActorCandidManager + let actorManager = createReActorStore({ + isLocalEnv, + ...options, + }) - if (withServiceFields || withServiceDetails) { - actorManager = createReActorCandidStore({ - isLocalEnv, - ...options, - }) - } else { - actorManager = createReActorStore({ - isLocalEnv, - ...options, - }) as unknown as ActorCandidManager - } - - const getServiceFields = () => { - if (!withServiceFields || !actorManager.serviceFields) { + const getVisitFunction = () => { + if (!withVisitor) { throw new Error( - "Service fields not initialized. Pass `withServiceFields` to initialize service fields." + "Service fields not initialized. Pass `withVisitor` to initialize service fields." ) } - return actorManager.serviceFields - } - - const getServiceDetails = () => { - if (!withServiceDetails || !actorManager.serviceDetails) { - throw new Error( - "Service details not initialized. Pass `withServiceDetails` to initialize service details." - ) - } - - return actorManager.serviceDetails + return actorManager.visitFunction } const getAgent = () => { @@ -79,9 +50,8 @@ export const createReActor: CreateReActor = < return { getAgent, - getServiceFields, - getServiceDetails, + getVisitFunction, ...actorHooks, ...authHooks, - } as any + } } diff --git a/packages/react/src/types.ts b/packages/react/src/types.ts index 4b2df7cfbf..09c3a9ef85 100644 --- a/packages/react/src/types.ts +++ b/packages/react/src/types.ts @@ -5,7 +5,7 @@ import type { ServiceDetails, MethodDetails, MethodResult, -} from "@ic-reactor/candid" +} from "@ic-reactor/visitor" import type { ActorState, CanisterId, @@ -17,6 +17,7 @@ import type { Principal, FunctionType, FunctionName, + ExtractedService, } from "@ic-reactor/store" import type { AuthHooks } from "./hooks/auth" @@ -193,40 +194,21 @@ export interface ActorDefaultHooks { export type GetFunctions = { getAgent: () => HttpAgent - getServiceFields: () => ExtractedServiceFields - getServiceDetails: () => ExtractedServiceDetails + getVisitFunction: () => ExtractedService } export type CreateReActor = { - // When withServiceFields is true and withServiceDetails is true + // When withVisitor is true ( options: CreateReActorOptions & { - withServiceFields: true - withServiceDetails: true + withVisitor: true } ): GetFunctions & ActorHooks & AuthHooks - // When withServiceFields is true and withServiceDetails is false or undefined + // When withVisitor are false or undefined ( options: CreateReActorOptions & { - withServiceFields: true - withServiceDetails?: false | undefined - } - ): GetFunctions & ActorHooks & AuthHooks - - // When withServiceFields is false or undefined and withServiceDetails is true - ( - options: CreateReActorOptions & { - withServiceFields?: false | undefined - withServiceDetails: true - } - ): GetFunctions & ActorHooks & AuthHooks - - // When both withServiceFields and withServiceDetails are false or undefined - ( - options: CreateReActorOptions & { - withServiceFields?: false | undefined - withServiceDetails?: false | undefined + withVisitor?: false | undefined } ): GetFunctions & ActorHooks & AuthHooks } diff --git a/packages/store/README.md b/packages/store/README.md index 64590fa71f..e9ba4291a7 100644 --- a/packages/store/README.md +++ b/packages/store/README.md @@ -26,77 +26,76 @@ yarn add @ic-reactor/store ## Usage -To use `@ic-reactor/store`, start by creating a ReActor manager with your actor configurations: +You can this packages in two ways: + +1. **Automatic Agent Creation**: You can use the `createReActorStore` factory function to create a new ReActor store instance. This will automatically create an agent and manage its state for you. ```ts -import createReActorManager from "@ic-reactor/store" -import { idlFactory, canisterId } from "./declarations/actor" +import { createReActorStore } from "@ic-reactor/store" +import { candid, canisterId, idlFactory } from "./candid" -type Actor = typeof actor +type Candid = typeof candid -const { actorStore, authenticate, callMethod } = createReActorStore({ +const { callMethod, agentManager } = createReActorStore({ + canisterId, idlFactory, - canisterId: "xeka7-ryaaa-aaaal-qb57a-cai", - host: "https://icp-api.io", }) + +// later in your code +const identity = await agentManager.authenticate() +const data = await callMethod("version") ``` -### Managing Actor State +2. **Manual Agent Creation**: You can use the `createAgentManager` to manually create and manage an agent instance. -Utilize the ReActor manager to manage the state of your IC actors: +- IC Agent ```ts -// Access and update actor state -const actorState = actorStore.getState() -``` - -### Handling Authentication +// agent.ts +import { createAgentManager } from "@ic-reactor/store" -Manage authentication states and processes: +export const agentManager = createAgentManager() // connect to the default ic network -```javascript -// Authenticate with the IC blockchain -authenticate() - .then(() => { - // Handle successful authentication - }) - .catch((error) => { - // Handle authentication errors - }) +// later in your code +const identity = await agentManager.authenticate() ``` -### Calling Actor Methods +- Local Agent -Call actor methods and handle the results: +```ts +// agent.ts +import { createAgentManager } from "@ic-reactor/store" -```javascript -// Call an actor method -callMethod({ - functionName: "get_balance", - args: [principal], +export const agentManager = createAgentManager({ + isLocalEnv: true, + port: 8000, // default port is 4943 }) - .then((result) => { - // Handle successful method call - }) - .catch((error) => { - // Handle method call errors - }) ``` -## API Reference - -`@ic-reactor/store` provides several key functionalities: +- Or you can use the host option directly -- `ReActorManager`: The main class to manage actor states and interactions. -- `createReActorManager`: Factory function to create a new ReActor manager instance. -- State management actions: Methods to initialize actors, handle authentication, and manage global state. +```ts +export const agentManager = createAgentManager({ + host: "http://localhost:8000", +}) +``` -For a detailed API reference, including the complete list of methods and their usage, please refer to the [documentation](#). +then you can use the "createActorManager" to create an actor manager -## Contributing +```ts +// actor.ts +import { createActorManager } from "@ic-reactor/store" +import { candid, canisterId, idlFactory } from "./candid" +import { agentManager } from "./agent" -Contributions to `@ic-reactor/store` are welcome! Please read our [contributing guidelines](#) for more information. +type Candid = typeof candid -## License +const actorManager = createActorManager({ + agentManager, + canisterId, + idlFactory, +}) -`@ic-reactor/store` is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details. +// later in your code +const data = await actorManager.callMethod("version") +``` diff --git a/packages/store/example/candid/candid.did b/packages/store/example/candid/candid.did deleted file mode 100644 index 50ab45b0a0..0000000000 --- a/packages/store/example/candid/candid.did +++ /dev/null @@ -1,169 +0,0 @@ -type AppBug = record { - logs : vec text; - name : text; - canister_id : principal; - description : text; - version : text -}; -type AppView = record { - updated_at : nat64; - metadata : vec record { text; Value }; - name : text; - description : text; - created_at : nat64; - created_by : text; - releases : vec ReleaseView; - app_id : text; - install_count : nat64 -}; -type CanisterChange = record { - timestamp_nanos : nat64; - canister_version : nat64; - origin : CanisterChangeOrigin; - details : CanisterChangeDetails -}; -type CanisterChangeDetails = variant { - creation : CreationRecord; - code_deployment : CodeDeploymentRecord; - controllers_change : CreationRecord; - code_uninstall -}; -type CanisterChangeOrigin = variant { - from_user : FromUserRecord; - from_canister : FromCanisterRecord -}; -type CanisterInfoResponse = record { - controllers : vec principal; - module_hash : opt vec nat8; - recent_changes : vec CanisterChange; - total_num_changes : nat64 -}; -type CanisterInstallMode = variant { reinstall; upgrade; install }; -type CanisterStatusResponse = record { - status : CanisterStatusType; - memory_size : nat; - cycles : nat; - settings : DefiniteCanisterSettings; - query_stats : QueryStats; - idle_cycles_burned_per_day : nat; - module_hash : opt vec nat8 -}; -type CanisterStatusType = variant { stopped; stopping; running }; -type CodeDeploymentRecord = record { - mode : CanisterInstallMode; - module_hash : vec nat8 -}; -type CreateAppArgs = record { - metadata : vec record { text; Value }; - name : text; - description : text -}; -type CreateReleaseArgs = record { - features : text; - size : nat64; - version : text; - app_id : text; - wasm_hash : vec nat8 -}; -type CreateUserArgs = record { - metadata : vec record { text; Value }; - canister_id : opt principal -}; -type CreationRecord = record { controllers : vec principal }; -type DefiniteCanisterSettings = record { - freezing_threshold : nat; - controllers : vec principal; - memory_allocation : nat; - compute_allocation : nat -}; -type FromCanisterRecord = record { - canister_version : opt nat64; - canister_id : principal -}; -type FromUserRecord = record { user_id : principal }; -type LoadRelease = record { total : nat64; chunks : nat64 }; -type QueryStats = record { - response_payload_bytes_total : nat; - num_instructions_total : nat; - num_calls_total : nat; - request_payload_bytes_total : nat -}; -type ReleaseView = record { - features : text; - date : nat64; - name : text; - size : nat64; - version : text; - deprecated : bool; - wasm_hash : text -}; -type Result = variant { Ok : UserView; Err : text }; -type Result_1 = variant { Ok : AppView; Err : text }; -type Result_2 = variant { Ok : principal; Err : text }; -type Result_3 = variant { Ok : ReleaseView; Err : text }; -type SystemCanisterStatus = record { - user_status : nat64; - status_at : nat64; - version : text; - canister_status : CanisterStatusResponse -}; -type UserCanisterStatus = record { - version : text; - canister_status : CanisterStatusResponse -}; -type UserStatus = variant { - Unregistered; - Applications : vec principal; - Registered -}; -type UserView = record { - updated_at : nat64; - metadata : vec record { text; Value }; - created_at : nat64; - canisters : vec principal -}; -type Value = variant { - Int : int; - Map : vec record { text; Value }; - Nat : nat; - Nat64 : nat64; - Blob : vec nat8; - Text : text; - Array : vec Value -}; -service : () -> { - add_release : (CreateReleaseArgs) -> (ReleaseView); - add_user_app : (principal, text) -> (Result); - clear_bugs : (principal) -> (); - create_app : (CreateAppArgs) -> (Result_1); - create_app_canister : (text) -> (Result_2); - create_user : (CreateUserArgs) -> (UserView); - deprecate_release : (text, vec nat8) -> (); - get_app : (text) -> (Result_1) query; - get_app_version : (principal) -> (text) composite_query; - get_apps : () -> (vec AppView) query; - get_bugs : (principal) -> (vec AppBug) query; - get_canister_info : (principal) -> (CanisterInfoResponse); - get_canisters : () -> (vec principal) query; - get_create_canister_app_cycle : () -> (nat, nat) query; - get_latest_release : (text) -> (Result_3) query; - get_release : (vec nat8) -> (ReleaseView) query; - get_release_by_hash_string : (text) -> (ReleaseView) query; - get_states : () -> (UserView) query; - get_user_app_status : (principal) -> (UserCanisterStatus); - get_user_ids : () -> (vec principal) query; - get_user_states : () -> (vec UserView) query; - get_user_status : () -> (UserStatus) query; - install_app : (principal, text) -> (Result); - load_wasm_chunk : (vec nat8, vec nat8) -> (LoadRelease); - releases : (text) -> (vec ReleaseView) query; - remove_app : (text) -> (); - remove_release : (vec nat8) -> (); - remove_user : (principal) -> (); - remove_user_app : (principal) -> (); - report_bug : (AppBug) -> (); - status : () -> (SystemCanisterStatus); - uninstall_app : (principal) -> (Result); - update_app : (CreateAppArgs) -> (Result_1); - version : () -> (text) query -} diff --git a/packages/store/example/candid/candid.did.d.ts b/packages/store/example/candid/candid.did.d.ts deleted file mode 100644 index fcd8a2aff0..0000000000 --- a/packages/store/example/candid/candid.did.d.ts +++ /dev/null @@ -1,186 +0,0 @@ -import type { Principal } from "@dfinity/principal" -import type { ActorMethod } from "@dfinity/agent" -import type { IDL } from "@dfinity/candid" - -export interface AppBug { - logs: Array - name: string - canister_id: Principal - description: string - version: string -} -export interface AppView { - updated_at: bigint - metadata: Array<[string, Value]> - name: string - description: string - created_at: bigint - created_by: string - releases: Array - app_id: string - install_count: bigint -} -export interface CanisterChange { - timestamp_nanos: bigint - canister_version: bigint - origin: CanisterChangeOrigin - details: CanisterChangeDetails -} -export type CanisterChangeDetails = - | { creation: CreationRecord } - | { code_deployment: CodeDeploymentRecord } - | { controllers_change: CreationRecord } - | { code_uninstall: null } -export type CanisterChangeOrigin = - | { from_user: FromUserRecord } - | { from_canister: FromCanisterRecord } -export interface CanisterInfoResponse { - controllers: Array - module_hash: [] | [Uint8Array | number[]] - recent_changes: Array - total_num_changes: bigint -} -export type CanisterInstallMode = - | { reinstall: null } - | { upgrade: null } - | { install: null } -export interface CanisterStatusResponse { - status: CanisterStatusType - memory_size: bigint - cycles: bigint - settings: DefiniteCanisterSettings - query_stats: QueryStats - idle_cycles_burned_per_day: bigint - module_hash: [] | [Uint8Array | number[]] -} -export type CanisterStatusType = - | { stopped: null } - | { stopping: null } - | { running: null } -export interface CodeDeploymentRecord { - mode: CanisterInstallMode - module_hash: Uint8Array | number[] -} -export interface CreateAppArgs { - metadata: Array<[string, Value]> - name: string - description: string -} -export interface CreateReleaseArgs { - features: string - size: bigint - version: string - app_id: string - wasm_hash: Uint8Array | number[] -} -export interface CreateUserArgs { - metadata: Array<[string, Value]> - canister_id: [] | [Principal] -} -export interface CreationRecord { - controllers: Array -} -export interface DefiniteCanisterSettings { - freezing_threshold: bigint - controllers: Array - memory_allocation: bigint - compute_allocation: bigint -} -export interface FromCanisterRecord { - canister_version: [] | [bigint] - canister_id: Principal -} -export interface FromUserRecord { - user_id: Principal -} -export interface LoadRelease { - total: bigint - chunks: bigint -} -export interface QueryStats { - response_payload_bytes_total: bigint - num_instructions_total: bigint - num_calls_total: bigint - request_payload_bytes_total: bigint -} -export interface ReleaseView { - features: string - date: bigint - name: string - size: bigint - version: string - deprecated: boolean - wasm_hash: string -} -export type Result = { Ok: UserView } | { Err: string } -export type Result_1 = { Ok: AppView } | { Err: string } -export type Result_2 = { Ok: Principal } | { Err: string } -export type Result_3 = { Ok: ReleaseView } | { Err: string } -export interface SystemCanisterStatus { - user_status: bigint - status_at: bigint - version: string - canister_status: CanisterStatusResponse -} -export interface UserCanisterStatus { - version: string - canister_status: CanisterStatusResponse -} -export type UserStatus = - | { Unregistered: null } - | { Applications: Array } - | { Registered: null } -export interface UserView { - updated_at: bigint - metadata: Array<[string, Value]> - created_at: bigint - canisters: Array -} -export type Value = - | { Int: bigint } - | { Map: Array<[string, Value]> } - | { Nat: bigint } - | { Nat64: bigint } - | { Blob: Uint8Array | number[] } - | { Text: string } - | { Array: Array } -export interface _SERVICE { - add_release: ActorMethod<[CreateReleaseArgs], ReleaseView> - add_user_app: ActorMethod<[Principal, string], Result> - clear_bugs: ActorMethod<[Principal], undefined> - create_app: ActorMethod<[CreateAppArgs], Result_1> - create_app_canister: ActorMethod<[string], Result_2> - create_user: ActorMethod<[CreateUserArgs], UserView> - deprecate_release: ActorMethod<[string, Uint8Array | number[]], undefined> - get_app: ActorMethod<[string], Result_1> - get_app_version: ActorMethod<[Principal], string> - get_apps: ActorMethod<[], Array> - get_bugs: ActorMethod<[Principal], Array> - get_canister_info: ActorMethod<[Principal], CanisterInfoResponse> - get_canisters: ActorMethod<[], Array> - get_create_canister_app_cycle: ActorMethod<[], [bigint, bigint]> - get_latest_release: ActorMethod<[string], Result_3> - get_release: ActorMethod<[Uint8Array | number[]], ReleaseView> - get_release_by_hash_string: ActorMethod<[string], ReleaseView> - get_states: ActorMethod<[], UserView> - get_user_app_status: ActorMethod<[Principal], UserCanisterStatus> - get_user_ids: ActorMethod<[], Array> - get_user_states: ActorMethod<[], Array> - get_user_status: ActorMethod<[], UserStatus> - install_app: ActorMethod<[Principal, string], Result> - load_wasm_chunk: ActorMethod< - [Uint8Array | number[], Uint8Array | number[]], - LoadRelease - > - releases: ActorMethod<[string], Array> - remove_app: ActorMethod<[string], undefined> - remove_release: ActorMethod<[Uint8Array | number[]], undefined> - remove_user: ActorMethod<[Principal], undefined> - remove_user_app: ActorMethod<[Principal], undefined> - report_bug: ActorMethod<[AppBug], undefined> - status: ActorMethod<[], SystemCanisterStatus> - uninstall_app: ActorMethod<[Principal], Result> - update_app: ActorMethod<[CreateAppArgs], Result_1> - version: ActorMethod<[], string> -} -export declare const idlFactory: IDL.InterfaceFactory diff --git a/packages/store/example/candid/candid.did.js b/packages/store/example/candid/candid.did.js deleted file mode 100644 index 1c657193ce..0000000000 --- a/packages/store/example/candid/candid.did.js +++ /dev/null @@ -1,199 +0,0 @@ -export const idlFactory = ({ IDL }) => { - const Value = IDL.Rec(); - const CreateReleaseArgs = IDL.Record({ - 'features' : IDL.Text, - 'size' : IDL.Nat64, - 'version' : IDL.Text, - 'app_id' : IDL.Text, - 'wasm_hash' : IDL.Vec(IDL.Nat8), - }); - const ReleaseView = IDL.Record({ - 'features' : IDL.Text, - 'date' : IDL.Nat64, - 'name' : IDL.Text, - 'size' : IDL.Nat64, - 'version' : IDL.Text, - 'deprecated' : IDL.Bool, - 'wasm_hash' : IDL.Text, - }); - Value.fill( - IDL.Variant({ - 'Int' : IDL.Int, - 'Map' : IDL.Vec(IDL.Tuple(IDL.Text, Value)), - 'Nat' : IDL.Nat, - 'Nat64' : IDL.Nat64, - 'Blob' : IDL.Vec(IDL.Nat8), - 'Text' : IDL.Text, - 'Array' : IDL.Vec(Value), - }) - ); - const UserView = IDL.Record({ - 'updated_at' : IDL.Nat64, - 'metadata' : IDL.Vec(IDL.Tuple(IDL.Text, Value)), - 'created_at' : IDL.Nat64, - 'canisters' : IDL.Vec(IDL.Principal), - }); - const Result = IDL.Variant({ 'Ok' : UserView, 'Err' : IDL.Text }); - const CreateAppArgs = IDL.Record({ - 'metadata' : IDL.Vec(IDL.Tuple(IDL.Text, Value)), - 'name' : IDL.Text, - 'description' : IDL.Text, - }); - const AppView = IDL.Record({ - 'updated_at' : IDL.Nat64, - 'metadata' : IDL.Vec(IDL.Tuple(IDL.Text, Value)), - 'name' : IDL.Text, - 'description' : IDL.Text, - 'created_at' : IDL.Nat64, - 'created_by' : IDL.Text, - 'releases' : IDL.Vec(ReleaseView), - 'app_id' : IDL.Text, - 'install_count' : IDL.Nat64, - }); - const Result_1 = IDL.Variant({ 'Ok' : AppView, 'Err' : IDL.Text }); - const Result_2 = IDL.Variant({ 'Ok' : IDL.Principal, 'Err' : IDL.Text }); - const CreateUserArgs = IDL.Record({ - 'metadata' : IDL.Vec(IDL.Tuple(IDL.Text, Value)), - 'canister_id' : IDL.Opt(IDL.Principal), - }); - const AppBug = IDL.Record({ - 'logs' : IDL.Vec(IDL.Text), - 'name' : IDL.Text, - 'canister_id' : IDL.Principal, - 'description' : IDL.Text, - 'version' : IDL.Text, - }); - const FromUserRecord = IDL.Record({ 'user_id' : IDL.Principal }); - const FromCanisterRecord = IDL.Record({ - 'canister_version' : IDL.Opt(IDL.Nat64), - 'canister_id' : IDL.Principal, - }); - const CanisterChangeOrigin = IDL.Variant({ - 'from_user' : FromUserRecord, - 'from_canister' : FromCanisterRecord, - }); - const CreationRecord = IDL.Record({ 'controllers' : IDL.Vec(IDL.Principal) }); - const CanisterInstallMode = IDL.Variant({ - 'reinstall' : IDL.Null, - 'upgrade' : IDL.Null, - 'install' : IDL.Null, - }); - const CodeDeploymentRecord = IDL.Record({ - 'mode' : CanisterInstallMode, - 'module_hash' : IDL.Vec(IDL.Nat8), - }); - const CanisterChangeDetails = IDL.Variant({ - 'creation' : CreationRecord, - 'code_deployment' : CodeDeploymentRecord, - 'controllers_change' : CreationRecord, - 'code_uninstall' : IDL.Null, - }); - const CanisterChange = IDL.Record({ - 'timestamp_nanos' : IDL.Nat64, - 'canister_version' : IDL.Nat64, - 'origin' : CanisterChangeOrigin, - 'details' : CanisterChangeDetails, - }); - const CanisterInfoResponse = IDL.Record({ - 'controllers' : IDL.Vec(IDL.Principal), - 'module_hash' : IDL.Opt(IDL.Vec(IDL.Nat8)), - 'recent_changes' : IDL.Vec(CanisterChange), - 'total_num_changes' : IDL.Nat64, - }); - const Result_3 = IDL.Variant({ 'Ok' : ReleaseView, 'Err' : IDL.Text }); - const CanisterStatusType = IDL.Variant({ - 'stopped' : IDL.Null, - 'stopping' : IDL.Null, - 'running' : IDL.Null, - }); - const DefiniteCanisterSettings = IDL.Record({ - 'freezing_threshold' : IDL.Nat, - 'controllers' : IDL.Vec(IDL.Principal), - 'memory_allocation' : IDL.Nat, - 'compute_allocation' : IDL.Nat, - }); - const QueryStats = IDL.Record({ - 'response_payload_bytes_total' : IDL.Nat, - 'num_instructions_total' : IDL.Nat, - 'num_calls_total' : IDL.Nat, - 'request_payload_bytes_total' : IDL.Nat, - }); - const CanisterStatusResponse = IDL.Record({ - 'status' : CanisterStatusType, - 'memory_size' : IDL.Nat, - 'cycles' : IDL.Nat, - 'settings' : DefiniteCanisterSettings, - 'query_stats' : QueryStats, - 'idle_cycles_burned_per_day' : IDL.Nat, - 'module_hash' : IDL.Opt(IDL.Vec(IDL.Nat8)), - }); - const UserCanisterStatus = IDL.Record({ - 'version' : IDL.Text, - 'canister_status' : CanisterStatusResponse, - }); - const UserStatus = IDL.Variant({ - 'Unregistered' : IDL.Null, - 'Applications' : IDL.Vec(IDL.Principal), - 'Registered' : IDL.Null, - }); - const LoadRelease = IDL.Record({ 'total' : IDL.Nat64, 'chunks' : IDL.Nat64 }); - const SystemCanisterStatus = IDL.Record({ - 'user_status' : IDL.Nat64, - 'status_at' : IDL.Nat64, - 'version' : IDL.Text, - 'canister_status' : CanisterStatusResponse, - }); - return IDL.Service({ - 'add_release' : IDL.Func([CreateReleaseArgs], [ReleaseView], []), - 'add_user_app' : IDL.Func([IDL.Principal, IDL.Text], [Result], []), - 'clear_bugs' : IDL.Func([IDL.Principal], [], []), - 'create_app' : IDL.Func([CreateAppArgs], [Result_1], []), - 'create_app_canister' : IDL.Func([IDL.Text], [Result_2], []), - 'create_user' : IDL.Func([CreateUserArgs], [UserView], []), - 'deprecate_release' : IDL.Func([IDL.Text, IDL.Vec(IDL.Nat8)], [], []), - 'get_app' : IDL.Func([IDL.Text], [Result_1], ['query']), - 'get_app_version' : IDL.Func( - [IDL.Principal], - [IDL.Text], - ['composite_query'], - ), - 'get_apps' : IDL.Func([], [IDL.Vec(AppView)], ['query']), - 'get_bugs' : IDL.Func([IDL.Principal], [IDL.Vec(AppBug)], ['query']), - 'get_canister_info' : IDL.Func([IDL.Principal], [CanisterInfoResponse], []), - 'get_canisters' : IDL.Func([], [IDL.Vec(IDL.Principal)], ['query']), - 'get_create_canister_app_cycle' : IDL.Func( - [], - [IDL.Nat, IDL.Nat], - ['query'], - ), - 'get_latest_release' : IDL.Func([IDL.Text], [Result_3], ['query']), - 'get_release' : IDL.Func([IDL.Vec(IDL.Nat8)], [ReleaseView], ['query']), - 'get_release_by_hash_string' : IDL.Func( - [IDL.Text], - [ReleaseView], - ['query'], - ), - 'get_states' : IDL.Func([], [UserView], ['query']), - 'get_user_app_status' : IDL.Func([IDL.Principal], [UserCanisterStatus], []), - 'get_user_ids' : IDL.Func([], [IDL.Vec(IDL.Principal)], ['query']), - 'get_user_states' : IDL.Func([], [IDL.Vec(UserView)], ['query']), - 'get_user_status' : IDL.Func([], [UserStatus], ['query']), - 'install_app' : IDL.Func([IDL.Principal, IDL.Text], [Result], []), - 'load_wasm_chunk' : IDL.Func( - [IDL.Vec(IDL.Nat8), IDL.Vec(IDL.Nat8)], - [LoadRelease], - [], - ), - 'releases' : IDL.Func([IDL.Text], [IDL.Vec(ReleaseView)], ['query']), - 'remove_app' : IDL.Func([IDL.Text], [], []), - 'remove_release' : IDL.Func([IDL.Vec(IDL.Nat8)], [], []), - 'remove_user' : IDL.Func([IDL.Principal], [], []), - 'remove_user_app' : IDL.Func([IDL.Principal], [], []), - 'report_bug' : IDL.Func([AppBug], [], []), - 'status' : IDL.Func([], [SystemCanisterStatus], []), - 'uninstall_app' : IDL.Func([IDL.Principal], [Result], []), - 'update_app' : IDL.Func([CreateAppArgs], [Result_1], []), - 'version' : IDL.Func([], [IDL.Text], ['query']), - }); -}; -export const init = ({ IDL }) => { return []; }; diff --git a/packages/store/example/candid/index.d.ts b/packages/store/example/candid/index.d.ts deleted file mode 100644 index cf6152b12c..0000000000 --- a/packages/store/example/candid/index.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -import type { - ActorSubclass, - HttpAgentOptions, - ActorConfig, - Agent, -} from "@dfinity/agent" -import type { Principal } from "@dfinity/principal" -import type { IDL } from "@dfinity/candid" - -import { _SERVICE } from "./candid.did" - -export declare const idlFactory: IDL.InterfaceFactory -export declare const canisterId: string - -export declare interface CreateActorOptions { - /** - * @see {@link Agent} - */ - agent?: Agent - /** - * @see {@link HttpAgentOptions} - */ - agentOptions?: HttpAgentOptions - /** - * @see {@link ActorConfig} - */ - actorOptions?: ActorConfig -} - -/** - * Intializes an {@link ActorSubclass}, configured with the provided SERVICE interface of a canister. - * @constructs {@link ActorSubClass} - * @param {string | Principal} canisterId - ID of the canister the {@link Actor} will talk to - * @param {CreateActorOptions} options - see {@link CreateActorOptions} - * @param {CreateActorOptions["agent"]} options.agent - a pre-configured agent you'd like to use. Supercedes agentOptions - * @param {CreateActorOptions["agentOptions"]} options.agentOptions - options to set up a new agent - * @see {@link HttpAgentOptions} - * @param {CreateActorOptions["actorOptions"]} options.actorOptions - options for the Actor - * @see {@link ActorConfig} - */ -export declare const createActor: ( - canisterId: string | Principal, - options?: CreateActorOptions -) => ActorSubclass<_SERVICE> - -/** - * Intialized Actor using default settings, ready to talk to a canister using its candid interface - * @constructs {@link ActorSubClass} - */ -export declare const candid: ActorSubclass<_SERVICE> diff --git a/packages/store/example/candid/index.js b/packages/store/example/candid/index.js deleted file mode 100644 index d0de9f0677..0000000000 --- a/packages/store/example/candid/index.js +++ /dev/null @@ -1,39 +0,0 @@ -import { Actor, HttpAgent } from "@dfinity/agent" - -// Imports and re-exports candid interface -import { idlFactory } from "./candid.did.js" -export { idlFactory } from "./candid.did.js" - -/* CANISTER_ID is replaced by webpack based on node environment - * Note: canister environment variable will be standardized as - * process.env.CANISTER_ID_ - * beginning in dfx 0.15.0 - */ -export const canisterId = "rrkah-fqaaa-aaaaa-aaaaq-cai" - -export const createActor = (canisterId, options = {}) => { - const agent = options.agent || new HttpAgent({ ...options.agentOptions }) - - if (options.agent && options.agentOptions) { - console.warn( - "Detected both agent and agentOptions passed to createActor. Ignoring agentOptions and proceeding with the provided agent." - ) - } - - // Fetch root key for certificate validation during development - if (process.env.DFX_NETWORK !== "ic") { - agent.fetchRootKey().catch((err) => { - console.warn( - "Unable to fetch root key. Check to ensure that your local replica is running" - ) - console.error(err) - }) - } - - // Creates an actor with using the candid interface and the HttpAgent - return Actor.createActor(idlFactory, { - agent, - canisterId, - ...options.actorOptions, - }) -} diff --git a/packages/store/example/index.ts b/packages/store/example/index.ts deleted file mode 100644 index ec8e88b564..0000000000 --- a/packages/store/example/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { createAgentManager } from "@ic-reactor/store" - -const agentManager = createAgentManager({ - withDevtools: true, - isLocalEnv: true, - port: 8000, -}) - -const identity = await agentManager.authenticate() - -import { createReActorStore } from "@ic-reactor/store" -import { candid, canisterId, idlFactory } from "./candid" - -type Candid = typeof candid - -const { callMethod } = createReActorStore({ - agentManager, - canisterId, - idlFactory, -}) - -const data = await callMethod("version") - -console.log(data) diff --git a/packages/store/src/index.ts b/packages/store/src/index.ts index 4f8d7a1c59..0a7a4dbc72 100644 --- a/packages/store/src/index.ts +++ b/packages/store/src/index.ts @@ -15,32 +15,9 @@ export * from "./tools" * Create an agent manager * * @category Main Functions - * @param options - Options for creating the agent manager - * @returns AgentManager - The agent manager - * - * - * @IC - * ```ts - * import { createAgentManager } from "@ic-reactor/store" - * - * const agentManager = createAgentManager() // connect to the default ic network - * - * const identity = await agentManager.authenticate() - * ``` - * - * @Local - * ```ts - * import { createAgentManager } from "@ic-reactor/store" - * - * const agentManager = createAgentManager({ - * isLocalEnv: true, - * port: 8000, // default port is 4943 - * }) - * // or you can use the host option directly - * const agentManager = createAgentManager({ host: "http://localhost:8000" }) - * - * const identity = await agentManager.authenticate() - * ``` + * @param {AgentManagerOptions} - Options for creating the agent manager + * @returns {AgentManager} - The agent manager + * @includeExample ./packages/store/README.md:54-80 */ export const createAgentManager = ( options?: AgentManagerOptions @@ -52,22 +29,9 @@ export const createAgentManager = ( * Create an actor manager * * @category Main Functions - * @param options - Options for creating the actor manager - * @returns ActorManager - The actor manager - * - * ```ts - * import { createActorManager } from "@ic-reactor/store" - * import { candid, canisterId, idlFactory } from "./candid" - * - * type Candid = typeof candid - * - * const actorManager = createActorManager({ - * idlFactory, - * canisterId, - * }) - * - * const version = actorManager.callMethod("version") - * ``` + * @param {ActorManagerOptions} - Options for creating the actor manager + * @returns {ActorManager} - The actor manager + * @includeExample ./packages/store/README.md:86-100 */ export const createActorManager = < A extends ActorSubclass = DefaultActorType @@ -81,22 +45,9 @@ export const createActorManager = < * Create a ReActor store. * * @category Main Functions - * @param {object} options - Options for creating the ReActor store. + * @param {CreateReActorOptions} options - Options for creating the ReActor store. * @returns {ActorManager} - The actor manager. - * - * ```ts - * import { createReActorStore } from "@ic-reactor/store"; - * import { candid, canisterId, idlFactory } from "./candid"; - * - * type Candid = typeof candid; - * - * const { callMethod } = createReActorStore({ - * canisterId, - * idlFactory, - * }); - * - * const data = await callMethod("version"); - * ``` + * @includeExample ./packages/store/README.md:34-46 */ export const createReActorStore = < A extends ActorSubclass = DefaultActorType diff --git a/react.svg b/react.svg new file mode 100644 index 0000000000..dd3d2c125f --- /dev/null +++ b/react.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/typedoc.json b/typedoc.json index 61ac027030..2016309b23 100644 --- a/typedoc.json +++ b/typedoc.json @@ -3,8 +3,24 @@ "entryPoints": ["./packages/*"], "entryPointStrategy": "packages", "name": "IC ReActor", - "plugin": ["@mxssfd/typedoc-theme", "typedoc-plugin-mdn-links"], + "customTitle": "IC ReActor", + "navigationLinks": { + "NPM": "https://www.npmjs.com/org/ic-reactor", + "GitHub": "https://github.com/B3Pay/ic-reactor" + }, + "sidebarLinks": { + "Store": "modules/_ic_reactor_store", + "IC ReActor Examples": "https://github.com/B3Pay/ic-reactor/tree/main/examples" + }, + "favicon": "./ic-reactor.png", + "footerLastModified": true, + "customDescription": "A library for seamless communication between Internet Computer Actors and the frontend.", + "plugin": [ + "@mxssfd/typedoc-theme", + "typedoc-plugin-include-example", + "typedoc-plugin-mdn-links", + "typedoc-plugin-extras" + ], "defaultCategory": "Other", - "githubPages": true, "out": "docs" } diff --git a/yarn.lock b/yarn.lock index cee5d5f7d0..f03476272c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9905,6 +9905,8 @@ __metadata: text-encoding: "npm:0.7.0" ts-jest: "npm:29.1" typedoc: "npm:^0.25.8" + typedoc-plugin-extras: "npm:^3.0.0" + typedoc-plugin-include-example: "npm:^1.2.0" typedoc-plugin-mdn-links: "npm:^3.1.16" typescript: "npm:^5.3" whatwg-fetch: "npm:3.6" @@ -18004,6 +18006,24 @@ __metadata: languageName: node linkType: hard +"typedoc-plugin-extras@npm:^3.0.0": + version: 3.0.0 + resolution: "typedoc-plugin-extras@npm:3.0.0" + peerDependencies: + typedoc: 0.25.x + checksum: 79f2c2cbc9b3a576e1922976306cb8493d132dcb6f831cc75b85712dc8fb2c14af22493a94af23502c8ec47238c846487c55289f5001455e00207ecbf2958da0 + languageName: node + linkType: hard + +"typedoc-plugin-include-example@npm:^1.2.0": + version: 1.2.0 + resolution: "typedoc-plugin-include-example@npm:1.2.0" + peerDependencies: + typedoc: ^0.25.1 + checksum: 06ab1ccf655bf234f9698cd8a4470db035409c4463b5828c9468edf9c4169116e7996843a96fe3d2cfb087026a1e3e0f7987189b6351faddff3d8e64b944240b + languageName: node + linkType: hard + "typedoc-plugin-mdn-links@npm:^3.1.16": version: 3.1.16 resolution: "typedoc-plugin-mdn-links@npm:3.1.16"