diff --git a/doc/design/RxJS-v5-UMLClassDiagram.svg b/doc/design/RxJS-v5-UMLClassDiagram.svg index a822bddde8..b4b2fdc803 100644 --- a/doc/design/RxJS-v5-UMLClassDiagram.svg +++ b/doc/design/RxJS-v5-UMLClassDiagram.svg @@ -1,2 +1,2 @@ -
Subscriber<T>
Subscriber&lt;T&gt;
+ syncErrorValue: any
+ syncErrorThrown: boolean
+ syncErrorThrowable: boolean
# isStopped: boolean
# destination: PartialObserver<any>
[Not supported by viewer]
 Subscriber<T>(
        next?: (value: T) => void,
        error?: (any) => void,
        complete?: () => void)
+ next(value?: T): void
+ error(err?: any): void
+ completed(): void
+ unsubscribe(): void
[Not supported by viewer]
ChildSubscription
ChildSubscription
- _innerSub: ISubscription
- _parent: Subscription


[Not supported by viewer]
+ ChildSubscription(
        innerSub: ISubscription,
        parent: Subscription)
+ _unsubscribe(): void

[Not supported by viewer]
SwitchOperator<T, R>
SwitchOperator&lt;T, R&gt;<br>
+ call(subscriber: Subscriber<R>, source: any): any
+ call(subscriber: Subscriber&lt;R&gt;, source: any): any<br>

<<Interface>>
Operator<T, R>



+ call(subscriber: Subscriber<R>, source: any): TeardownLogic

[Not supported by viewer]
Extends
Extends
Implements
Implements
SwitchSubscriber<T, R>
SwitchSubscriber&lt;T, R&gt;<br>
- active: number = 0
- hasCompleted: boolean = false
+ innerSubscription: Subscription
[Not supported by viewer]
+ SwitchSubscriber(destination: Subscriber<R>)
# _next(value: T): void
# _complete(): void
+ notifyNext(outerValue: T, innerValue: R,
        outerIndex: number, innerIndex: number,
        innerSub: InnerSubscriber<T, R>): void
+ notifyError(err: any)
+ notifyComplete(): void

[Not supported by viewer]
OuterSubscriber<T,R>

OuterSubscriber&lt;T,R&gt;<br><br>
+ notifyError(error: any, innerSub: InnerSubscriber<T, R>): void
+ notifyComplete(innerSub: InnerSubscriber<T, R>): void
+ notifyError(error: any, innerSub: InnerSubscriber&lt;T, R&gt;): void<br>+ notifyComplete(innerSub: InnerSubscriber&lt;T, R&gt;): void<br>
Extends
Extends
Extends
Extends
Subscription
Subscription
- _subscriptions: ISubscription[]
+ closed: boolean
[Not supported by viewer]
Subscription(unsubscribe?: () => void)
+ unsubscribe(): void
+ add(teardown): Subscription
+ remove(subscription): void
[Not supported by viewer]
Extends
Extends
Impl
Impl
Impl
Impl

<<Interface>>
ISubscription


+ closed: Boolean


+ unsubscribe(): void

[Not supported by viewer]

<<Interface>>
Observer<T>


+ closed: boolean

+ next: (value: T) => void

+ error: (err: any) => void

+ complete: () => void


[Not supported by viewer]

<<Interface>>
AnonymousSubscription



+ unsubscribe(): void

[Not supported by viewer]
Extends
Extends
BUG v5.0.3: This "innerSubscription" was not
intended to be an "InnerSubscription", but
it does currently receive one.  Instead, it
should receive a ChildSubscription.
[Not supported by viewer]
InnerSubscriber<T, R>
InnerSubscriber&lt;T, R&gt;<br>
- index: number = 0
- parent: OuterSubscriber<T, R>
- outerValue: T
- outerIndex: number
[Not supported by viewer]
+ InnerSubscriber<T, R> (
        parent OuterSubscriber<T, R>,
        outerValue: T, outerIndex: number)
# _next(value: R): void
# _error(error: any): void
# _complete(): void

[Not supported by viewer]
Extends
Subscriber<R>
[Not supported by viewer]
Uses
(and is the
only user)
[Not supported by viewer]
Uses
Uses
v5.0.3: _subscriptions is both public
and private (see code to understand!). 
What was the actual intention?
[Not supported by viewer]
RxJS v5.0.3 UML Class Diagram
Core and Switch Operator
[Not supported by viewer]
Observable<T>
Observable&lt;T&gt;
+ isScalar: boolean = false
+ _subscribe: (Observable<T>, subscriber<T>) => TeardownLogic
# source: Observable<any>
# operator: Operator<any, T>
[Not supported by viewer]
+ Observable<T>(subscribe:
        (this: Observable<T>, subscriber: Subscriber<T>)
        => TeardownLogic)
+ lift<R>(operator: Operator<T, R>): Observable<R>
+ subscribe(observer: Observer<T>): Subscription
[Not supported by viewer]

<<Interface>>
Subscribable<T>



+ subscribe(Observer): AnonymousSubscription


[Not supported by viewer]
Impl
Impl
FromEventObservable<T>
FromEventObservable&lt;T&gt;
- sourceObj: EventTargetLike
- eventName: string
- options: EventListenerOptions
- selector: SelectorMethodSignature<T>

[Not supported by viewer]
Extends
Extends
Subject<T>
Subject&lt;T&gt;
+ observers: Observer<T>[]
+ closed: false
+ observers: Observer&lt;T&gt;[]<br>+ closed: false<br>
+ asObserverable: Observable<T>
+ next(value: T): void
+ error(err: any): void
+ complete: (): void
[Not supported by viewer]
Extends
Extends
Impl
Impl
SubjectSubscriber<T>
SubjectSubscriber&lt;T&gt;
# destination: Subject<T>
# destination: Subject&lt;T&gt;<br>
+ SubjectSubscriber<T>(destination: Subject<T>)
+ SubjectSubscriber&lt;T&gt;(destination: Subject&lt;T&gt;)<br>
Extends
Extends
Uses
Uses
AnonymousSubject<T>
AnonymousSubject&lt;T&gt;
# destination: Observer<T>
# source: Observable<T>
[Not supported by viewer]
+ AnonymousSubject<T>(
        destination: Observer<T>,
        source: Observable<T>)
[Not supported by viewer]
Extends
Extends
Extends
Extends
ConnectableObservable<T>
ConnectableObservable&lt;T&gt;
# source: Observable<T>
# subjectFactory: () => Subject<T>
# _subject: Subject<T>
# _recount: number = 0
#_ connection: Subscription
[Not supported by viewer]
+ ConnectableObservable<T>(
        source: Observable<T>,
        subjectFactory: () => Subject<T>)
+ connect(): Subscription
+ refCount(): Observable<T>
+ getSubject(): Subject<T>
[Not supported by viewer]
Uses
Uses
Uses
(Only user?)
Uses<br>(Only user?)<br>
SubjectSubscription<T>
SubjectSubscription&lt;T&gt;
+ subject: Subject<T>
+ subscriber: Observer<T>
+ closed: boolean = false
[Not supported by viewer]
+ SubjectSubscription<T>(
        subject: Subject<T>,
        subscriber: Observer<T>)
+ unsubscribe()
[Not supported by viewer]
Extends
Extends
ReplaySubject<T>
ReplaySubject&lt;T&gt;
- events: ReplayEvents<T>[] = [];
- bufferSize: number
- windowTime: number
[Not supported by viewer]
+ next(value: T): void
+ getNow(): number
[Not supported by viewer]
Extends
Extends
Uses
(only user)
Uses<br>(only user)<br>
Uses
(only user)
Uses<br>(only user)<br>
1
1
Subject is faking multiple
inheritance ("extends
Observer") by defining the
 same methods as
Observer.
[Not supported by viewer]
AsapScheduler
AsapScheduler
+ flush(action: AsyncAction<any>): void
+ flush(action: AsyncAction&lt;any&gt;): void<br>
AsyncScheduler
AsyncScheduler
+ actions: AsyncAction<any>[]
+ actions: AsyncAction&lt;any&gt;[]<br>
+ flush(action: AsyncAction<any>): void
+ flush(action: AsyncAction&lt;any&gt;): void<br>
Action<T>
Action&lt;T&gt;
+ field: type
+ field: type
+ method(type): type
+ method(type): type
AsyncAction<T>
AsyncAction&lt;T&gt;
+ field: type
+ field: type
+ method(type): type
+ method(type): type
Extends
Extends
Extends
(Extends Subscription,
but I believe that only means
that it has add(), remove().)
[Not supported by viewer]
1
1
0..n
0..n
Extends
Extends
Scheduler
Scheduler
+ now: number: () => number
- SchedulerAction: typeof Action
+ now: number: () =&gt; number<br>- SchedulerAction: typeof Action<br>
+ now(): number
+ now(): number<br>

<<Interface>>
IScheduler



+ now(): number a date
+ schedule<T>(

        work: (this: Action<T>, state: T) => void,

        delay: number,

        state: T): Subscription

[Not supported by viewer]
Impl
Impl
Extends
Extends
QueueScheduler
QueueScheduler
(no fields or methods - marker class?)
(no fields or methods - marker class?)<br>
Extends
Extends
AnimationFrameScheduler
AnimationFrameScheduler
+ flush(action: AsyncAction<any>): void
+ flush(action: AsyncAction&lt;any&gt;): void<br>
Extends
Extends
VirtualTimeScheduler
VirtualTimeScheduler
+ flush(action: AsyncAction<any>): void
+ flush(action: AsyncAction&lt;any&gt;): void<br>
Extends
Extends
VirtualAction<T>
VirtualAction&lt;T&gt;
+ field: type
+ field: type
+ method(type): type
+ method(type): type
Extends
Extends
Uses
(and is the
only user)
[Not supported by viewer]
\ No newline at end of file +
Subscriber<T>
Subscriber&lt;T&gt;
+ syncErrorValue: any
+ syncErrorThrown: boolean
+ syncErrorThrowable: boolean
# isStopped: boolean
# destination: PartialObserver<any>
[Not supported by viewer]
 Subscriber<T>(
        next?: (value: T) => void,
        error?: (any) => void,
        complete?: () => void)
+ next(value?: T): void
+ error(err?: any): void
+ completed(): void
+ unsubscribe(): void
[Not supported by viewer]
SwitchOperator<T, R>
SwitchOperator&lt;T, R&gt;<br>
+ call(subscriber: Subscriber<R>, source: any): any
+ call(subscriber: Subscriber&lt;R&gt;, source: any): any<br>

<<Interface>>
Operator<T, R>



+ call(subscriber: Subscriber<R>, source: any): TeardownLogic

[Not supported by viewer]
Implements
Implements
SwitchSubscriber<T, R>
SwitchSubscriber&lt;T, R&gt;<br>
- active: number = 0
- hasCompleted: boolean = false
+ innerSubscription: Subscription
[Not supported by viewer]
+ SwitchSubscriber(destination: Subscriber<R>)
# _next(value: T): void
# _complete(): void
+ notifyNext(outerValue: T, innerValue: R,
        outerIndex: number, innerIndex: number,
        innerSub: InnerSubscriber<T, R>): void
+ notifyError(err: any)
+ notifyComplete(): void

[Not supported by viewer]
OuterSubscriber<T,R>

OuterSubscriber&lt;T,R&gt;<br><br>
+ notifyError(error: any, innerSub: InnerSubscriber<T, R>): void
+ notifyComplete(innerSub: InnerSubscriber<T, R>): void
+ notifyError(error: any, innerSub: InnerSubscriber&lt;T, R&gt;): void<br>+ notifyComplete(innerSub: InnerSubscriber&lt;T, R&gt;): void<br>
Extends
Extends
Extends
Extends
Subscription
Subscription
- _subscriptions: ISubscription[]
+ closed: boolean
[Not supported by viewer]
Subscription(unsubscribe?: () => void)
+ unsubscribe(): void
+ add(teardown): Subscription
+ remove(subscription): void
[Not supported by viewer]
Extends
Extends
Impl
Impl
Impl
Impl

<<Interface>>
ISubscription


+ closed: Boolean


+ unsubscribe(): void

[Not supported by viewer]

<<Interface>>
Observer<T>


+ closed: boolean

+ next: (value: T) => void

+ error: (err: any) => void

+ complete: () => void


[Not supported by viewer]

<<Interface>>
AnonymousSubscription



+ unsubscribe(): void

[Not supported by viewer]
Extends
Extends
InnerSubscriber<T, R>
InnerSubscriber&lt;T, R&gt;<br>
- index: number = 0
- parent: OuterSubscriber<T, R>
- outerValue: T
- outerIndex: number
[Not supported by viewer]
+ InnerSubscriber<T, R> (
        parent OuterSubscriber<T, R>,
        outerValue: T, outerIndex: number)
# _next(value: R): void
# _error(error: any): void
# _complete(): void

[Not supported by viewer]
Extends
Subscriber<R>
[Not supported by viewer]
Uses
Uses
v5.0.3: _subscriptions is both public
and private (see code to understand!). 
What was the actual intention?
[Not supported by viewer]
RxJS v5.0.3 UML Class Diagram
Core and Switch Operator
[Not supported by viewer]
Observable<T>
Observable&lt;T&gt;
+ isScalar: boolean = false
+ _subscribe: (Observable<T>, subscriber<T>) => TeardownLogic
# source: Observable<any>
# operator: Operator<any, T>
[Not supported by viewer]
+ Observable<T>(subscribe:
        (this: Observable<T>, subscriber: Subscriber<T>)
        => TeardownLogic)
+ lift<R>(operator: Operator<T, R>): Observable<R>
+ subscribe(observer: Observer<T>): Subscription
[Not supported by viewer]

<<Interface>>
Subscribable<T>



+ subscribe(Observer): AnonymousSubscription


[Not supported by viewer]
Impl
Impl
FromEventObservable<T>
FromEventObservable&lt;T&gt;
- sourceObj: EventTargetLike
- eventName: string
- options: EventListenerOptions
- selector: SelectorMethodSignature<T>

[Not supported by viewer]
Extends
Extends
Subject<T>
Subject&lt;T&gt;
+ observers: Observer<T>[]
+ closed: false
+ observers: Observer&lt;T&gt;[]<br>+ closed: false<br>
+ asObserverable: Observable<T>
+ next(value: T): void
+ error(err: any): void
+ complete: (): void
[Not supported by viewer]
Extends
Extends
Impl
Impl
SubjectSubscriber<T>
SubjectSubscriber&lt;T&gt;
# destination: Subject<T>
# destination: Subject&lt;T&gt;<br>
+ SubjectSubscriber<T>(destination: Subject<T>)
+ SubjectSubscriber&lt;T&gt;(destination: Subject&lt;T&gt;)<br>
Extends
Extends
Uses
Uses
AnonymousSubject<T>
AnonymousSubject&lt;T&gt;
# destination: Observer<T>
# source: Observable<T>
[Not supported by viewer]
+ AnonymousSubject<T>(
        destination: Observer<T>,
        source: Observable<T>)
[Not supported by viewer]
Extends
Extends
Extends
Extends
ConnectableObservable<T>
ConnectableObservable&lt;T&gt;
# source: Observable<T>
# subjectFactory: () => Subject<T>
# _subject: Subject<T>
# _recount: number = 0
#_ connection: Subscription
[Not supported by viewer]
+ ConnectableObservable<T>(
        source: Observable<T>,
        subjectFactory: () => Subject<T>)
+ connect(): Subscription
+ refCount(): Observable<T>
+ getSubject(): Subject<T>
[Not supported by viewer]
Uses
Uses
Uses
(Only user?)
Uses<br>(Only user?)<br>
SubjectSubscription<T>
SubjectSubscription&lt;T&gt;
+ subject: Subject<T>
+ subscriber: Observer<T>
+ closed: boolean = false
[Not supported by viewer]
+ SubjectSubscription<T>(
        subject: Subject<T>,
        subscriber: Observer<T>)
+ unsubscribe()
[Not supported by viewer]
Extends
Extends
ReplaySubject<T>
ReplaySubject&lt;T&gt;
- events: ReplayEvents<T>[] = [];
- bufferSize: number
- windowTime: number
[Not supported by viewer]
+ next(value: T): void
+ getNow(): number
[Not supported by viewer]
Extends
Extends
Uses
(only user)
Uses<br>(only user)<br>
Uses
(only user)
Uses<br>(only user)<br>
1
1
Subject is simulating
multiple inheritance
("extends Observer") by
defining the same methods
as Observer.
[Not supported by viewer]
AsapScheduler
AsapScheduler
+ flush(action: AsyncAction<any>): void
+ flush(action: AsyncAction&lt;any&gt;): void<br>
AsyncScheduler
AsyncScheduler
+ actions: AsyncAction<any>[]
+ actions: AsyncAction&lt;any&gt;[]<br>
+ flush(action: AsyncAction<any>): void
+ flush(action: AsyncAction&lt;any&gt;): void<br>
Action<T>
Action&lt;T&gt;
+ field: type
+ field: type
+ method(type): type
+ method(type): type
AsyncAction<T>
AsyncAction&lt;T&gt;
+ field: type
+ field: type
+ method(type): type
+ method(type): type
Extends
Extends
Extends
(Extends Subscription,
but I believe that only means
that it has add(), remove(),
not that it should ever play
role of Subscription.)

[Not supported by viewer]
0..n
0..n
Extends
Extends
Scheduler
Scheduler
+ now: number: () => number
- SchedulerAction: typeof Action
+ now: number: () =&gt; number<br>- SchedulerAction: typeof Action<br>
+ now(): number
+ now(): number<br>

<<Interface>>
IScheduler



+ now(): number a date
+ schedule<T>(

        work: (this: Action<T>, state: T) => void,

        delay: number,

        state: T): Subscription

[Not supported by viewer]
Impl
Impl
Extends
Extends
QueueScheduler
QueueScheduler
(no fields or methods - marker class?)
(no fields or methods - marker class?)<br>
Extends
Extends
AnimationFrameScheduler
AnimationFrameScheduler
+ flush(action: AsyncAction<any>): void
+ flush(action: AsyncAction&lt;any&gt;): void<br>
Extends
Extends
VirtualTimeScheduler
VirtualTimeScheduler
+ flush(action: AsyncAction<any>): void
+ flush(action: AsyncAction&lt;any&gt;): void<br>
Extends
Extends
VirtualAction<T>
VirtualAction&lt;T&gt;
+ field: type
+ field: type
+ method(type): type
+ method(type): type
Extends
Extends
Uses
(and is the
only user)
[Not supported by viewer]
\ No newline at end of file diff --git a/doc/design/RxJS-v5-UMLClassDiagram.xml b/doc/design/RxJS-v5-UMLClassDiagram.xml index d4c7b462d5..dc959ba796 100644 --- a/doc/design/RxJS-v5-UMLClassDiagram.xml +++ b/doc/design/RxJS-v5-UMLClassDiagram.xml @@ -1 +1 @@ -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 \ No newline at end of file +7V3rd5u4tv9b7oes5X4wCyGeH5u0OdOzOtO5Tc/r0yxik5gZDL6Ak+b89VcChEHaYIGF7ZnSziQ1BgHaW/vx2w/d4Lvt97+l/m7zc7IOohtDX3+/wR9uDAM5ukt+0SNv5RFDd1F55DkN19VZhwMP4X+D6qBeHd2H6yBrnZgnSZSHu/bBVRLHwSpvHfPTNHltn/aURO277vznQDjwsPIj8ei/wnW+KY+6ln44/lMQPm/YnZFeffPor/54TpN9XN3vxsBPxZ/y663PxqrOzzb+OnltHMIfb/BdmiR5+a/t97sgopPLpq287r7j2/q50yDOZS4wygte/GhfvfrD/jFbpeFjkN4Ytr/d3eDbiAx1+63++Ew/Vo+fv7Epy17DbeTH5NPtJt9G5CAi/3xK4vyhOol+9qPwOSb/XpHnI3fAty9Bmodk4t9XX+QJvcVqE0brz/5bsqdvkeVkVtmn202Shv8lw/rsHuTrNK94yLBbZzzQK8lhnRxNg4yc8yubGlQf+uxneXXOKokif5eFj/UDb/30OYxvkzxPttVJ7E3vwyi6S6IkLSaA0ZlNTZMGFVnouwbfG4cqmvwtSLZBnr6RU6pvsVfxR7WAMK5W1OuBG+vFsmlwosFY1K9WwHM99oELyD8qRoCZAgtMcWPcUmq/xauPZHWl/yy/eU/vE5Oh7YJDHinHVMzROv3bhqzIuDz/kSzjwI/lrvELOhy5DNMnzx4I4+yCtdTZRLTkYeznYVI9FGGKPPSjL49ZkL7wjF++YYv1xWG5xUDInLcXQpanyR8BY5c4KRbKU4ODqkNsgUTBU965PLKdvwrj58/FOR/Mw5GvFSfQQ6+bMA8eyHH6TK9EUJNjCRnvKSoEziZcr4OYLoIk9/Nypgv23iVhnBfcY92S/wg/3emadWOR97ojn9HhM/mPnp7md0lM3s8PC34PyHJ6DbIcXAmG9EpgqsOWY3zXPJ3vTYDvOcJGIS/hSsIyLYFGUXVLaEHvwMj4jVL5wxIJpMYiqTFAwsh/DKJfkywsWfxDWp7LkfYM1EOMVEfJdzr1LIB61bKNHzP6S1K1LaAF3h5p+s96XIiQ+1JALV4OEvfbO/KjeMG2UNJfEjIVZI1ew9MHVIYfHp/I0D/DU6+S7S4K8uDw4H1P/a5LiVHSMYrd10QrfpdvC19WzNmC/KyvKqbt6HXsqdcLiZP3ccZWwbHTZ502mVSUtOYQNk6Xi2zgpo3/GuarzZddkPp5IgpDMqT+dbDNMzsACh0A03JaDoDnmALLYAtgGRsr4BjRK5wNoTY9dWmCdtuxIP0UGEKoy38jEx0tsoMRVEj/LqNIEABUKmTJPl0FvHLq8AFn/TEVM2FJYcCY7iRuciG7uiD2rkVg+//2FLWqBGbJGfrue2FA3RbYFz2+LKhFvzMb31HeWFZkpt9V2qEes2ETFncOBSMxEj99omM8UVrzqgxQbGQaQv4uLVu0PMIOnKo765s+Asd2/LFNSmeaoaRsUlD3/Ay+YBQpy/VY01Ice0qh8y3w03XyGn9OnsNV7xQ3ppMTSbAk4cRNQz5Q2cRsmnJyiaosP9/72zCiy/OnIHoJ6KhtWTeBTeBi0bkGxYDjnC4GDNGK/ETdjm1ABSM/sUG8fk9hePIp2RUSlRxpTtnazzYUrSvmRmaaGBM0BSYx+56DvC2mgnUL2RcnszFZyK4GSoPIz8OXNvgPzVY13K9UHRwIY3le21gzOTCqfPjqqiYazw1kmu2BHJsbqHxjYaCCePU7ytETCfQsvYIekGT2Cy7uF2BOBNhIFAFgXMBQEBcAokVLOuSqXDtUKsf7bcE5JWhCo2I8f9ArNn52x0ALDrGvLnzyoyzoluqUewrkg03yQffg+3tdL24MqqMwjoO04vHdIQLQOnJQHeV9uq2C2cSVhEjkGb3HX4IY21KA+4MBr9nfPYl+LmCbTAT8g3EbutZ5hbYQAn+SdiiI9NJI4m9NqFcG5y0uYoCtDF4bJ3n49PYLvQ3RckEz9Fpp5EKiNQ5/vRY0vXjeT/GaMkxTN9QPDX93BU/OlET5bJ8aKkPSLJIm7McD5l+7N70X3EnyzqyrzqerXBHOB2WdEjgfiHN+oQutj0GlAYnZjD+PGe9YLTPehrQliA6rsOKd2do5IgEsaXqeH903IDwWUChJ2gDna5V7FqVW66ipbzmrtKkYWjbCYCqIMBiewNEfv+dBvO7FFR+jhIr+JrBolx/vC5S2mNWhyCKbqCayWEnHo8DidyYKbM12Uf2XeScM0nMNYWZrHFIecjxyF4+FcIcikLbZBpgsbzIEEouI8sXIznLMm2S3htEd624v3ZGlgu6mwSHEHodWyxLa4gfSuSCBQkKLFmsbbpstzQkBY8ZjLPeI0b2Ze2RCzorZEweRziS3AWNlPIRLsePfsgbvZF1YbWlwtNistAW7cuiiJJPIHp8NDjmDA6uwoEG2xArwXjx7QMrpZ4seLEg/BR4QFj2g5kJfNFJcT0zkHZAsS0/31+tFXqUlvOuOK/GXpcGWLNhFU67Nfs+FxJANZOZCbGwrQPLwFfk9ov2LB9q/hmn22b9QQGiM39N/FxNxI8qawxhjDR+GRY4NP71669gUo1c0saaPBSZIqQEYwMLDGMAzdA0brqkTq892bdz2LwwggXkE/ftvYnqcEyPtDVlGeyDLmoze4qq/AL0xAHQwfEea4LiPFo4oScf4u1zOm2F5IylscwPZuoYsx/VMB9uuySd9qaO3JcIcc/7s7aeOhJtp0mEnzG5t+I233X7jn+JdBli7P0C2rc0BJ2TqRIEGQeKe1y3kpGtZoYykH15owPX5QmOKv4Qw4UAo6Mmne5Cy9nhg4fElHrQR5+STaK7sSQ+lxUfhiMkUyF9KHlsGEFBh0asWkI0UlERaopc2C+Tb93ESv22TfXZWa+6KJPZgk+kvbCA5YmAJXI+OghwmSwwpXgo6YyZgy5M2h3nSGDl9qNaSoY2n+dIWMjXdtA5/WzexOWRe2rFGnuY1BrXgR5/AsQaAlOEZRtBS5ThojkerbGzANTYDtHidGdIqYNIVBP5sEYuhIeVQzEPvr19iM0CvOJp8K8NzdFAgvb/zNCBzfo4SjY0S1YLkpGA1xLR8+eYonhULNQXS/tjB6uH0Y90Vj9FPQbCa6T8hXXeUrtKvozdZNfsjhR89eBWv0VFQBUtY+RqwrzI1YAGQp62ydmxWB+dTBx6QNACJE89QIE9EZLj2fHiaS3fZOMoskztRnuhEGcN8qCV22hF8qx3Ct9QEJJc0bqhjjLBr6siyddz21RyD0/myftTS0gzPrv+zWK0Yc8+MySLStphP9Y8sOHdTD5AFhuagtJ0L19M1vfFHiRfNezCWMzIijRxD8wzXcpBZ/MS4PS7mxlVIcNFzfrE0XcOlSuEzbPWQ/nhMyKQRKu4fo75+OzV86MdNpL2BKuq7NHzx84BaM1lAf62SNf2VJzcUUVsHKfF74/X/vNMAnS3e+V8bn87qq0+fMt/QkfxVvveLNya+eFyam/ejdGLhR3dqHqpc/H2eVGBkEwaQUY6VQU01IUUTGh53lQCtxOPme4kDOF29cFqlPQpwOkd0uBkZ1uELHbyalwPAegz07ssbL5f50WtFLJh+sSypSFeAoUOQ79fvf3+g71IuFUP/x8+fyc+7yM8o530I/efU3zZ4HmoeItFTpD6xmKH20WueNGRDk3aXpMWKpNKgashA/Ya6fZo+1YT9EEu7ndO0RLouerZgKTpWsbiBSvQiQl9Man+MfoZYp4NYPZ03g0SecAGeQCqqyx2o4ue2MCLo/ip+OrDf023DIHlk0XNpNivaB8p1fe+KyB/tM4gbhmwBCHc8nNQ+EnSwhAnHcjiw02Rd1d2R/TI7/sMdf0dJ2T+0slTgwM5ctKScfgAODNJPAQ7siE52KdwkZdmCk4FXAaAu8g3xDXul3jGR3NuGCxLR1/DeR/VEZ0VZFD7lvWDcQkb69zbL6KKEBOp326TNImHplo1hj1JIqupt1kiTSTSgFRUo0RRA0S6kkX74nDgmyyRE4Y+TJ3cQKkyMVJLiWAahMAs9YuTPlT6H+M4MbDk1cTlo6arIn/PEKNIFitAcoAiNzYIs5I8s1FeFhpiVfBroj2rfuLb8Pc22hKCMNPbPRxGIQNZ0jKYL8rA+Pk3ikilm8ApRS5vkOYn96OPh6G2xkWlBXi6oF3wP83/Tw0S1lZ/+U33ze5DnbxWHUPyMLrl67M9J4TpIMwhjhlEMIt3UXXrRiPruPk22H1/IK8zA1xUAXwg77VVlekCsA2x2oyuoEfBEF29ZM/SXx99LjVewy7eCoT+HfwCYF70moCf94m8rZ4+Yi8RchU9NqjDdYfDPYZYHcZB+abfIaV+WBVGwqt2Mh+rTzwFZqkTAP8d+vk/l7Jc560SFqV8LF+Udc1SAT54YMRZI+2ODT8PpByUhTtQxB+liEuml6iU8QKc7A/M8yPtwbUBaYt/BotgfZfSZloYdx6aBNvqzfRfL40aUNv6QY2mW65jE3Ct/tsfFXE9NdUYgYikw7dZJvxPZP5stFzNbPL4mwgSsFjBgh5XIhq7tAhn+lw0AAOW77HVG/GaLQXbbQEOa03pMBoixVDTZQ6xgZ7YZFFIQarM3UcQK6dCO6rfFqEwWlJM0KP7T0Th84D4q9JoA2Dvj6EVCHf7caO8ysgjqtAfGzg0VrCxmpVzK/q2n6hQD2HVwn/1rKek1jXTH0Ryd2NqOQ6Q5uWfrLrY11v7VdV3Dluth23RN09PbT2/yW1irtH9FCO8CuDfIAtLd104jqo044BlbpwDZNoe4GaY7AMcW2zC2XSF+08Lk6SkLTmcCsH8sdYIk8xAEdpndIYXukMVVcThI0ubh/fFxmgJCumhWHrR3nITjPNsU420KV5p1Bvo3SvZFr7dtn/0bdRRkfVjP4d8gqLL+9rCyJbUBuKvkUckAZojNomEyxpJ1nNWIBhFmvZy74Yq2piFparKSR6d/SyNPXLRjWv3qTg/abpucVyC9pzp2+sB2VhwxgbOBRGBVbV0tnIWhn8QatW8ysR+CdOJ4INfEGDmeQwz/Nrldfjsi6UbupqdRhjWrH1wVOGFjKXqL5dlem3EcDpZQ45ogETNtZsjNgZqbi+aX8FlgDtATGKylRXxXgHFqBQJkQd9kUKfcMcVMs5+jzpipF/1Jfg7EdkriOAiq6Jv9nNMoCJmjEAWV+DlQnj71cwapluvoPDVW0l3HvvIjJOvsJ55XtEJhKWhhMnv1tJUpItEX8xPZVI1zBlhciljf3XEp21USl/JcvS8ti0+fkg9LIb3HUzT5kimFnqLR09Tr3HxgAHwwPD/P6M3PAxKcxriQfAUN1nHfnj7y+XkeYQTHwqZh2vR3++mFAhyVjCD6f0TaxUQ3U5E5FxlcgxPIc52hSxZu1ZLqJJ1hdDmBity2YqjSHrz3aU3A25EtK8bGwYp2ltWdTouoFSOlwSrZs6bMx9s4k6t+u6HpQMXqakL3c+WyCsvLUOLUgvWPKpxaY3Zq1VMQAd2nJoveGV1e7XCFubi5kr4So0T4lbi2qlVGZwuNSmQvBu2w/HRHlcPiSIsMyWRVYu1Vb9B4iDkX5LrUSR3dOpo2pMQqu4oeulBBvfQ+zqyJIEZKnDPdtFouYNsDHN00V3eRZrgO+3tk/1/Z6B7ics6WiBtITXjPEJPLSi7hJcPiSxxRmuwz6ondy4CA46PIMXmBRhiZfvzPEK4zoL2EPUmuY2Hb9vx7+hSdmy1bM5BnoeqHw9fdjeRJg0upFTpCKwQI2Dx15q4yPTjDA5eBB2wOLYI2OEKsGVwrRKyirwtiwluwipU42q1WPkP6gnXactCOp5XTPhcInmo01cLiFB8cZFZLhQ/OVsrsgyukoCu64CAFVbjguKtyeKhKuo7Y8ggReTVbGY2Syp0udntb01kEn1MEu8A2NeACVuG2sgShawg8sqka5bzWJr7Zl6kM9VwZs5Gq3vYcsDl271RuIGPCbGQsxo2+BrvIf5vzSi/tM3gc+mAD/WvgtFIV2zggLMZC6h5kVe+PklM+lkd6GaXq/1HZ8LXdIyoReovH/dNTkD7UW4h07WW6LOYiXiev38LtkXNn5SSvnFQ0vIezo5T4B3PHe/UUBPyDyRJPsQiKj+/2QfTgL8krC7jMq/8Cqx8wTeGdw5SYpiJWfjnTFEC4h+dGWr25kZ6anh0GxppuOw4xdV1s21xZlc3HNeRz4kxDo1tJOZbtOQYrnR0Ydxljt5oi4t0RM0kOMZNJAyYn8Ayz1yYurvMsnaOPSZji8HccD7iovd2YZdlag5+RK8UDQMVea1TM1XmqibyZIi5+YS46FG8afA9tOQaDmsjUQe+JGcwxbI3IF921dQubiC8I5vu2DOgMRBhVtzxsOoShdNaM4+Twrt6uAl06HK8qYjJDYDJGuD6GacViW7xT+Lrs7HXob5N4/W1DN2NoucHIZAcqJVcMdbS7+xED57Hygk9gRwsPU5HLtlqprpZu5N6lurj4rMvzu3zXfufISB0MSUjovzVOqwy7zkd2uS1bzUq2dkpm7nyrMi4OvFw+wXjOhno5ymwt6nnQ1qI15FRuLZyF2z0lMW1xDsDp5Ms83NFcLT2MN0Ea5n5Mt24BTl0c7hUwY7GJhVff0by0xzdwhHXwFMblk5R7CWe0C7uhb4vO6Bl4jd+8iwbGA+C9TI/6Kn+BPUqRofPGSA8Iq3qjE2SKIML7zN89rIhS3keUKTgizMimQmTT5Arml5Ypujlw13olxJ/b1h9DAczJ9h1QgSBZovNXokFP0T7bLPxG5cb77C1evV+JsWZh39W556saAGk46zBX7xjrKGnCZIkuX8Ejs+g/T50cn1Jbp0Ueo76SPo4M+BKbV68a++XIC43uxvazvJCUF5Y8Dw1UNWrkBZTNNBsLp1EQ6uc4mbEAOamzsfBnXfxQi5zpFr+YHQOxx5wWc04Lgiu0X4LJrRByoMaCgEqEC3ESBlGVs56/7YJZCMgLARUJJyDF1QiBOeFEPQUBCwCkoBILoCvhpERvF3S5vptX7lnoDqjvCVeuCPR1mnizDr+kDjfNc+pwuxM/nHX4WEngSfPAJXS4DRVAzjr8NAqeU4ez/b5mHX75lXtWHW5fURNENlWt3CprYDHS0uS6XiyRmvojYGB3ZF7nEnO7rx2ecYJcTltE6GoSdyVN9OWXVHkKQn7Joh6Vaw8E12s+7ukdPpH/icQNgxea75FvfHqwygbcBn4M535U54X0x6ZIBPHXa1o0SW+VBluy7KtP/JVxkh/uU1yfbZI9sUoMWnqTUi6NaNYQf12aFKkwyRP3dtq7zjyTIVmMEy2oUzrTnLivCG+CorHpiSZuJ8AuicbTkIttB5u2h11nZHriku1tUqcncmWAatITbRHe0DUt7mOGyTIUKROdO0ORQdBtoT6wUc1S1xzH49JJq48nJiou+e0lluZYTl3ywVdhpMGZiuK9FHPnFfXCZpkNbU5BwzjF0Ptrkd0et2hALbLJSzfP0Ewbm4j9GGkZCGLTQJ5muRa2qx8mZ/SptBNEOGfO2rhM1kady3+WrA2nC6+J6WpvFP7195fsqyOuGel9Ix5MPcnCoKoBwznSO9bNtFUARCCLKdnOxpkBIvUUlI3VqwCI2M5rkIyYy4MvuIyhrVPAhA1DBRdA2VoluXctEjNsoNSnJXvou++F5ihgxeL4sqAX/c5sfEe5Y1kRmn5XGQ8C3sDuHAodoCLx0yc6xhOlNt8iD2iYR+Yh7PPjqyPswKeGmVQP8MifTo7t+GMbCjhUhSSHF0Td7zr4glFkKVdXTRdx7I6FXyM1Y8qTfHLB2s+DG3k8pejBVc19b7hx0UeEaabo7M3IXpP0j8pCyzchS7WVCcXeFRNAp571hYANvDId7+4HmMt1QEHAFm//CK/dZgKpRu/QnHDaHlbSnCZvqN6nAkMofckG6EU/3/vbMKKK76cgegnoqDdyQMMJxVMuEDs3LEDDqukL5Yho/aftLuqDY6ZopGBDsRhnYGWxbeoaNsgEGti23brBVg2PISU7UplcpfESu652QGJMxPdFkgZjPH5gz9MOUIyw55lCLMYRM2MvF5aDEFx7IIJroCM9ApXgcoblasjRHVz+sD2efiORXcMyNMcklxvlD64nx9KcsPm4I2bE/u8+2AczNneZYlqwT+BkxbTOnB17zGeuF8hVFtM6YoRlESc3VTIcDV0n1HM6dDpYlhbiH4VDtYr8LJPci2JGVdRxyFlrZh0x8HIxZc+m6rQg3KzsRyp7pmyaKdVxuC223r5P/e2s9S+k9U0L8AIn0/ruHC45JtPrlXKVWp/1mZyrYq/QHBjOOmc1B9wrSsllU/UnMAcEtMZCSMONP9Y4cwA7wriOZjf+TNeF1RVRoH+Gab73I9qRfTYFLmMK4POaAvOeyUfluZKO+pOZAl1bJs+mwBWYAoNZ57ymwBWl57pQa+3hpoDVZwqYwPbBo0yBdkvbInCjwhSw+XFdLrSkUvmLqFCl/Of66kubBFxz1SXyRKkwXX21J4JEc331iXrguuurvRkPUk/Bc9ZXs+3u5/rqy6/cs9ZXe9cE5oD11UMTOYx+Cw4pseAsi2baGA7SDVfHTvseS2xyA0obcOThHV33sGk5Ho3ucANPGdphJsLxzVD8eH1TNekvu+GL51zXrjuga+AOZCwL2z3JYvW2x6fxFQ/mGZiT7vJBQm4gVk18MueQj2lCM0EPpxNZu/k5WQf0jP8H \ No newline at end of file