1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
|
| Calipso.io
| Objects Model
Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) and others
All rights reserved. This program and the accompanying materials
are made available under the terms of the Apache License, Version 2.0
which accompanies this distribution, and is available at
http://www.apache.org/licenses/LICENSE-2.0
|image0|
Project “Calipso” tries to illuminate complex virtual networking with
real time operational state visibility for large and highly distributed
Virtual Infrastructure Management (VIM).
Calipso provides visible insights using smart discovery and virtual
topological representation in graphs, with monitoring per object in the
graph inventory to reduce error vectors and troubleshooting, maintenance
cycles for VIM operators and administrators.
Calipso model, described in this document, was *built for
multi-environment and many VIM variances*, the model was tested
successfully (as of Aug 27\ :sup:`th`) against 60 different VIM
variances (Distributions, Versions, Networking Drivers and Types).
Table of Contents
Calipso.io Objects Model 1
1 Environments config 4
2 Inventory objects 6
2.1 Host 6
2.2 physical NIC (pNIC) 7
2.3 Bond 7
2.4 Instance 7
2.5 virtual Service (vService) 7
2.6 Network 7
2.7 virtual NIC (vNIC) 7
2.8 Port 8
2.9 virtual Connector (vConnector) 8
2.10 virtual Edge (vEdge) 8
2.11 Overlay-Tunnel-Endpoint (OTEP) 8
2.12 Network\_segment 8
2.13 Network\_Agent 8
2.14 Looking up Calipso objects details 9
3 Link Objects 10
3.1 Link types 11
4 Clique objects 11
4.1 Clique types 11
5 Supported Environments 12
6 System collections 14
6.1 Attributes\_for\_hover\_on\_data 14
6.2 Clique\_constraints 14
6.3 Connection\_tests 14
6.4 Messages 14
6.5 Network\_agent\_types 14
6.6 Roles, Users 15
6.7 Statistics 15
6.8 Constants 15
6.9 Constants-env\_types 15
6.10 Constants-log\_levels 15
6.11 Constants-mechanism\_drivers 15
6.12 Constants-type\_drivers 15
6.13 Constants-environment\_monitoring\_types 15
6.14 Constants-link\_states 15
6.15 Constants-environment\_provision\_types 15
6.16 Constants-environment\_operational\_status 16
6.17 Constants-link\_types 16
6.18 Constants-monitoring\_sides 16
6.19 Constants-object\_types 16
6.20 Constants-scans\_statuses 16
6.21 Constants-distributions 16
6.22 Constants-distribution\_versions 16
6.23 Constants-message\_source\_systems 16
6.24 Constants-object\_types\_for\_links 16
6.25 Constants-scan\_object\_types 17
Environments config
===================
Environment is defined as a certain type of Virtual Infrastructure
facility the runs under a single unified Management (like an
OpenStack facility).
Everything in Calipso application rely on environments config, this
is maintained in the **“environments\_config”** collection in the
mongo Calipso DB.
Environment configs are pushed down to Calipso DB either through UI
or API (and only in OPNFV case Calipso provides an automated program
to build all needed environments\_config parameters for an ‘Apex’
distribution automatically).
When scanning and discovering items Calipso uses this configuration
document for successful scanning results, here is an example of an
environment config document:
**{ **
**"name": "DEMO-ENVIRONMENT-SCHEME", **
**"enable\_monitoring": true, **
**"last\_scanned": "filled-by-scanning", **
**"app\_path": "/home/scan/calipso\_prod/app", **
**"type": "environment", **
**"distribution": "Mirantis", **
**"distribution\_version": "8.0”, **
**"mechanism\_drivers": ["OVS”], **
**"type\_drivers": "vxlan"**
**"operational": "stopped", **
**"listen": true, **
**"scanned": false, **
**"configuration": [**
**{**
**"name": "OpenStack", **
**"port":”5000”, **
**"user": "adminuser", **
**"pwd": "dummy\_pwd", **
**"host": "10.0.0.1", **
**"admin\_token": "dummy\_token"**
**}, **
**{**
**"name": "mysql", **
**"pwd": "dummy\_pwd", **
**"host": "10.0.0.1", **
**"port": “3307”, **
**"user": "mysqluser"**
**}, **
**{**
**"name": "CLI", **
**"user": "sshuser", **
**"host": "10.0.0.1", **
**"pwd": "dummy\_pwd"**
**}, **
**{**
**"name": "AMQP", **
**"pwd": "dummy\_pwd", **
**"host": "10.0.0.1", **
**"port": “5673”, **
**"user": "rabbitmquser"**
**}, **
**{**
**"name": "Monitoring", **
**"ssh\_user": "root", **
**"server\_ip": "10.0.0.1", **
**"ssh\_password": "dummy\_pwd", **
**"rabbitmq\_pass": "dummy\_pwd", **
**"rabbitmq\_user": "sensu", **
**"rabbitmq\_port": “5671”, **
**"provision": "None", **
**"env\_type": "production", **
**"ssh\_port": “20022”, **
**"config\_folder": "/local\_dir/sensu\_config", **
**"server\_name": "sensu\_server", **
**"type": "Sensu", **
**"api\_port": NumberInt(4567)**
**}, **
**{**
**"name": "ACI", **
**"user": "admin", **
**"host": "10.1.1.104", **
**"pwd": "dummy\_pwd"**
**}**
**], **
**"user": "wNLeBJxNDyw8G7Ssg", **
**"auth": {**
**"view-env": [**
**"wNLeBJxNDyw8G7Ssg"**
**], **
**"edit-env": [**
**"wNLeBJxNDyw8G7Ssg"**
**]**
**}, **
**}**
Here is a brief explanation of the purpose of major keys in this
environment configuration doc:
**Distribution**: captures type of VIM, used for scanning of
objects, links and cliques.
**Distribution\_version**: captures version of VIM distribution,
used for scanning of objects, links and cliques.
**Mechanism\_driver**: captures virtual switch type used by the VIM,
used for scanning of objects, links and cliques.
**Type\_driver**: captures virtual switch tunneling type used by the
switch, used for scanning of objects, links and cliques.
**Listen**: defines whether or not to use Calipso listener against
the VIM BUS for updating inventory in real-time from VIM events.
**Scanned**: defines whether or not Calipso ran a full and a
successful scan against this environment.
**Last\_scanned**: end time of last scan.
**Operational**: defines whether or not VIM environment endpoints
are up and running.
**Enable\_monitoring**: defines whether or not Calipso should deploy
monitoring of the inventory objects running inside all environment
hosts.
**Configuration-OpenStack**: defines credentials for OpenStack API
endpoints access.
**Configuration-mysql**: defines credentials for OpenStack DB
access.
**Configuration-CLI**: defines credentials for servers CLI access.
**Configuration-AMQP**: defines credentials for OpenStack BUS
access.
**Configuration-Monitoring**: defines credentials and setup for
Calipso sensu server (see monitoring-guide for details).
**Configuration-ACI**: defines credentials for ACI switched
management API, if exists.
**User and auth**: used for UI authorizations to view and edit this
environment.
**App-path**: defines the root directory of the scanning
application.
Inventory objects
=================
Calipso’s success in scanning, discovering and analyzing many (60 as
of 27\ :sup:`th` Aug 2017) variances of virtual infrastructures lies
with its objects model and relationship definitions (model was
tested even against a vSphere VMware environment).
Those objects are the real-time processes and systems that are built
by workers and agents on the virtual infrastructure servers.
All Calipso objects are maintained in the **“inventory”**
collection.
Here are the major objects defined in Calipso inventory in order to
capture the real-time state of networking:
Host
----
It’s the physical server that runs all virtual objects, typically a
hypervisor or a containers hosting machine.
It’s typically a bare-metal server, in some cases it might be
virtual (running “nesting” VMs as second virtualization layer inside
it).
physical NIC (pNIC)
-------------------
It’s the physical Ethernet Network Interface Card attached to the
Host, typically several of those are available on a host, in some
cases few of those are grouped (bundled) together into etherchannel
bond interfaces.
For capturing data from real infrastructure devices Calipso created
2 types of pNICs: host\_pnic (pNICs on the servers) and switch\_pnic
(pNICs on the physical switches). Calipso currently discovers host
to switch physical connections only in some types of switches (Cisco
ACI as of Aug 27\ :sup:`th` 2017).
Bond
----
It’s a logical Network Interface using etherchannel standard
protocols to form a group of pNICs providing enhanced throughput
for communications to/from the host.
Calipso currently maintains bond details inside a host\_pnic object.
Instance
--------
It’s the virtual server created for running a certain application or
function. Typically it’s a Virtual Machine, sometimes it’s a
Container.
virtual Service (vService)
--------------------------
It’s a process/system that provides some type of networking service
to instances running on networks, some might be deployed as
namespaces and some might deploy as VM or Container, for example:
DHCP server, Router, Firewall, Load-Balancer, VPN service and
others. Calipso categorized vServices accordingly.
Network
-------
It’s an abstracted object, illustrating and representing all the
components (see below) that builds and provides communication
services for several instances and vServices.
virtual NIC (vNIC)
------------------
There are 2 types - instance vNIC and vService vNIC:
- Instance vNIC: It’s the virtual Network Interface Card attached to
the Instance and used by it for communications from/to that instance.
- vService vNIC: It’s the virtual Network Interface Card attached to
the vService used by it for communications from/to that vService.
Port
----
It’s an abstracted object representing the attachment point for an
instance or a vService into the network, in reality it’s fulfilled
by deployment of vNICs on hosts.
virtual Connector (vConnector)
------------------------------
It’s a process/system that provides layer 2 isolation for a specific
network inside the host (isolating traffic from other networks).
Examples: Linux Bridge, Bridge-group, port-group etc.
virtual Edge (vEdge)
--------------------
It’s a process/system that provides switching and routing services
for instances and/or vServices running on a specific host. It
function as an edge device between virtual components running on
that host and the pNICs on that host, making sure traffic is
maintained and still isolated across different networks.
Examples: Open Virtual Switch, Midonet, VPP.
Overlay-Tunnel-Endpoint (OTEP)
------------------------------
It’s an abstracted object representing the end-point on the host
that runs a certain tunneling technology to provide isolation across
networks and hosts for packets leaving and entering the pNICs of a
specific host. Examples: VXLAN tunnels endpoints, GRE tunnels
endpoints etc.
Network\_segment
----------------
It’s the specific segment used inside the “overlay tunnel” to
represent traffic from a specific network, this depends on the
specific type (encapsulation) of the OTEP.
Calipso currently maintains segments details inside a network
object.
Network\_Agent
--------------
It’s a controlling software running on the hosts for orchestrating
the lifecycle of the above virtual components. Examples: DHCP agent,
L3 agent, OVS agent, Metadata agent etc.
Looking up Calipso objects details
----------------------------------
As explained in more details in Calipso admin-guide, the underlying
database used is mongoDB. All major objects discovered by Calipso
scanning module are maintained in the “inventory” collection and
those document includes detailed attributes captured from the
infrastructure about those objects, here are the main objects
quarries to use for grabbing each of the above object types from
Calipso’s inventory:
**{type:"vnic"}**
**{type:"vservice"}**
**{type:"instance"}**
**{type:"host\_pnic"}**
**{type:"switch\_pnic"}**
**{type:"vconnector"}**
**{type:"vedge"}**
**{type:"network"}**
**{type:"network\_agent"}**
**{type:"otep"}**
**{type:"host"}**
**{type:"port"}**
All Calipso modules (visualization, monitoring and analysis) rely on
those objects as baseline inventory items for any further
computation.
Here is an example of a query made using mongo Chef Client
application:
|image1|
\* See Calipso API-guide for details on looking up those objects
through the Calipso API.
The following simplified UML illustrates the way Calipso objects
relationships are maintained in a VIM of type OpenStack:
|image2|
Link Objects
============
Calipso analyzes all objects in its inventory for relationships,
finding in real-time, which object is attached to which object and
then creates a link object representing this relationship. This
analysis finds a link that is “single hop away” - a connection from
certain object to certain object that is attached to it directly.
Derived relationships (A to B and B to C = A to C) is maintained as
‘cliques’.
Links objects are maintained in the **“links”** collection.
Link types
----------
Based on the specific VIM distribution, distribution version,
mechanism driver and type driver a set of links are discovered
automatically by Calipso scanning module. Each link type is
bi-directional, it means that if a connection is discovered from A
to B, a connection also exists from B to A.
Here is the list of link types that might be discovered from a
certain environment in the current release:
**{"link\_type": "instance-vnic"}**
**{"link\_type": "vnic-vconnector"}**
**{"link\_type": "vconnector-vedge"}**
**{"link\_type": "vedge-host\_pnic"}**
**{"link\_type: "host\_pnic-network"}**
**{"link\_type": "vedge-otep"}**
**{"link\_type": "otep-vconnector"}**
**{"link\_type": "otep-host\_pnic"}**
**{"link\_type": "vconnector-host\_pnic"}**
**{"link\_type": "vnic-vedge"}**
**{"link\_type": "vservice-vnic"}**
**{"link\_type": "switch\_pnic-host\_pnic"}**
**{"link\_type": "switch\_pnic-switch\_pnic"}**
**{"link\_type": "switch\_pnic-switch"}**
A successful completion of scanning and discovery means that all
inventory objects, link objects and clique objects (see below) are
found and accurately representing real-time state of the virtual
networking on the specific environment.
Clique objects
==============
Cliques are lists of links. Clique represent a certain path in the
virtual networking infrastructure that an administrator is
interested in, this is made to allow easier searching and finding of
certain points of interest (“focal point”).
Clique types
------------
Based on the specific VIM distribution, distribution version,
mechanism driver and type driver variance, Calipso scanning module
search for specific cliques using a model that is pre-populated in
its **“clique\_types”** collection, and it depends on the
environment variance, here is an example of a clique\_type:
**{ **
**"environment" : "Apex-Euphrates", **
**"link\_types" : [**
**"instance-vnic", **
**"vnic-vconnector", **
**"vconnector-vedge", **
**"vedge-otep", **
**"otep-host\_pnic", **
**"host\_pnic-network"**
**], **
**"name": "instance\_clique\_for\_opnfv", **
**"focal\_point\_type": "instance"**
**}**
The above model instruct the Calipso scanner to create cliques with
the above list of link types for a “focal\_point” that is an
“instance” type of object. We believe this is a highly customized
model for analysis of dependencies for many use cases. We have
included several clique types, common across variances supported in
this release.
The cliques themselves are then maintained in the **“cliques**\ ”
collection.
To clarify this concept, here is an example for an implementation
use case in the Calipso UI module:
When the user of the UI clicks on a certain object of type=instance,
he expresses he’s wish to see a graph representing the path taken by
traffic from that specific instance (as the root source of traffic,
on that specific network) all the way down to the host pNIC and the
(abstracted) network itself.
A successful completion of scanning and discovery means that all
inventory objects, link objects and clique objects (based on the
environment clique types) are found and accurately representing
real-time state of the virtual networking on the specific
environment.
Supported Environments
======================
As of Aug 27\ :sup:`th` 2017, Calipso application supports 60
different VIM environment variances and with each release the
purpose of the application is to maintain support and add more
variances per the VIM development cycles. The latest supported
variance and the specific functions of Calipso available for that
specific variance is captured in the **“supported\_environments”**
collection, here are two examples of that ‘supported’ model:
**1.**
**{ **
**"environment" : {**
**"distribution" : "Apex", **
**"distribution\_version" : ["Euphrates"], **
**"mechanism\_drivers" : "OVS", **
**"type\_drivers" : "vxlan"**
**}, **
**"features" : {**
**"listening" : true, **
**"scanning" : true, **
**"monitoring" : false**
**}**
**}**
**2.**
**{ **
**"environment" : {**
**"distribution" : "Mirantis", **
**"distribution\_version": ["6.0", "7.0", "8.0", "9.0", "9.1",
"10.0"], **
**"mechanism\_drivers" : "OVS", **
**"type\_drivers" : "vxlan"**
**}, **
**"features" : {**
**"listening" : true, **
**"scanning" : true, **
**"monitoring" : true**
**}**
**}**
The examples above defines for Calipso application that:
1. For an ‘Apex’ environment of version ‘Euphrates’ using OVS and vxlan,
Calipso can scan/discover all details (objects, links, cliques) but
is not yet monitoring those discovered objects.
2. For a “Mirantis” environment of versions 6.0 to 10.0 using OVS and
vxlan, Calipso can scan/discover all details (objects, links,
cliques) and also monitor those discovered objects.
With each calipso release more “supported\_environments” should be
added.
System collections
==================
Calipso uses other system collections to maintain its data for scanning,
event handling, monitoring and for helping to operate the API and UI
modules, here is the recent list of collections not covered yet in other
written guides:
Attributes\_for\_hover\_on\_data
--------------------------------
This collection maintains a list of documents describing what will be
presented on the UI popup screen when the use hover-on a specific object
type, it details which parameters or attributed from the object’s data
will be shown on the screen, making this popup fully customized.
Clique\_constraints
-------------------
Defines the logic on which cliques are built, currently network is the
main focus of the UI (central point of connection for all cliques in the
system), but this is customizable.
When building a clique graph, Calipso defaults to traversing all nodes
edges (links) in the graph.
In some cases we want to limit the graph so it will not expand too much
(nor forever).
For example: when we build the graph for a specific instance, we limit
the graph to only take objects from the network on which this instance
resides - otherwise the graph will show objects related to other
instances.
The constraint validation is done by checking value V from the focal
point F on the links.
For example, if an n instance has network X, we check that each link we
use either has network X (attribute “network” has value X), or does not
have the “network” attribute.
Connection\_tests
-----------------
This collection keeps requests from the UI or API to test the different adapters (API, DB, and CLI etc)
and their connections to the underlying VIM, making sure dynamic and real-time data will be maintained during discovery.
Messages
--------
Aggregates all loggings from the different systems, source\_system of
logs currently defined as “OpenStack” (the VIM), “Sensu” (the Monitoring
module) and “Calipso” (logs of the application itself. Messages have 6
levels of severity and can be browsed in the UI and through Calipso API.
Network\_agent\_types
---------------------
Lists the types of networking agents supported on the VIM (per
distribution and version).
Roles, Users
------------
Basic RBAC facility to authorize calispo UI users for certain calipso
functionalities on the UI.
Statistics
----------
Built for detailed analysis and future functionalities, used today for
traffic analysis (capturing samples of throughputs per session on VPP
based environments).
Constants
---------
This is an aggregated collection for many types of documents that are
required mostly by the UI and basic functionality on some scanning
classes (‘fetchers’).
Constants-env\_types
--------------------
Type of environments to allow for configuration on sensu monitoring
framework.
Constants-log\_levels
---------------------
Severity levels for messages generated.
Constants-mechanism\_drivers
----------------------------
Mechanism-drivers allowed for UI users.
Constants-type\_drivers
-----------------------
Type-drivers allowed for UI users.
Constants-environment\_monitoring\_types
----------------------------------------
Currently only “Sensu” is available, might be used for other monitoring
systems integrations.
Constants-link\_states
----------------------
Provides statuses for link objects, based on monitoring results.
Constants-environment\_provision\_types
---------------------------------------
The types of deployment options available for monitoring (see
monitoring-guide for details).
Constants-environment\_operational\_status
------------------------------------------
Captures the overall (aggregated) status of a curtained environment.
Constants-link\_types
---------------------
Lists the connections and relationships options for objects in the
inventory.
Constants-monitoring\_sides
---------------------------
Used for monitoring auto configurations of clients and servers.
Constants-object\_types
-----------------------
Lists the type of objects supported through scanning (inventory
objects).
Constants-scans\_statuses
-------------------------
During scans, several statuses are shown on the UI, based on the
specific stage and results.
Constants-distributions
-----------------------
Lists the VIM distributions.
Constants-distribution\_versions
--------------------------------
Lists the VIM different versions of different distributions.
Constants-message\_source\_systems
----------------------------------
The list of systems that can generate logs and messages.
Constants-object\_types\_for\_links
-----------------------------------
Object\_types used only for link popups on UI.
Constants-scan\_object\_types
-----------------------------
Object\_types used during scanning, see development-guide for details.
Constants-configuration_targets
Names of the configuration targets used in the configuration section of environment configs.
.. |image0| image:: media/image1.png
:width: 6.50000in
:height: 4.27153in
.. |image1| image:: media/image8.png
:width: 6.50000in
:height: 2.43750in
.. |image2| image:: media/image9.png
:width: 7.02325in
:height: 5.22917in
|