Skip to content

Instantly share code, notes, and snippets.

@bign8
Last active February 12, 2017 01:59
Show Gist options
  • Save bign8/07f76938890883545556746c0a5d6bb3 to your computer and use it in GitHub Desktop.
Save bign8/07f76938890883545556746c0a5d6bb3 to your computer and use it in GitHub Desktop.
CSCI-566 Project 1
out
*_m.*
.*
!.gitignore
CSCI_566_proj_1
results

CSCI-566 Project 1

  • Nate Woods
  • Lisa Peters

Compiling

This has only been tested on Mac OSX Sierra

make clean
make
run

Answers

Part A

  1. Install Omnet++ (check)
  2. Go through the tic toc tutorial (check)
  3. Do the exercise in Step 10 of the tic toc tutorial (See QuestionA1)
  4. Do the exercise in Step 13 of the tic toc tutorial (See QuestionA2)
  5. Add random processing delay at each node; Graph delay vs hop count.
    For internal nodes (Indexs 0, 2, 3 and 5)
    Edge Graph Nodes
    For internal nodes (Indexs 1 and 4)
    Internal Graph Nodes

Part B

  1. WIP
/*
* File: lrucache.hpp
* Author: Alexander Ponomarev
* Github: https://github.com/lamerman/cpp-lru-cache
*
* Created on June 20, 2013, 5:09 PM
*/
#ifndef _LRUCACHE_HPP_INCLUDED_
#define _LRUCACHE_HPP_INCLUDED_
#include <unordered_map>
#include <list>
#include <cstddef>
#include <stdexcept>
namespace cache {
template<typename key_t, typename value_t>
class lru_cache {
public:
typedef typename std::pair<key_t, value_t> key_value_pair_t;
typedef typename std::list<key_value_pair_t>::iterator list_iterator_t;
lru_cache(size_t max_size) :
_max_size(max_size) {
}
void put(const key_t& key, const value_t& value) {
auto it = _cache_items_map.find(key);
_cache_items_list.push_front(key_value_pair_t(key, value));
if (it != _cache_items_map.end()) {
_cache_items_list.erase(it->second);
_cache_items_map.erase(it);
}
_cache_items_map[key] = _cache_items_list.begin();
if (_cache_items_map.size() > _max_size) {
auto last = _cache_items_list.end();
last--;
_cache_items_map.erase(last->first);
_cache_items_list.pop_back();
}
}
const value_t& get(const key_t& key) {
auto it = _cache_items_map.find(key);
if (it == _cache_items_map.end()) {
throw std::range_error("There is no such key in cache");
} else {
_cache_items_list.splice(_cache_items_list.begin(), _cache_items_list, it->second);
return it->second->second;
}
}
bool exists(const key_t& key) const {
return _cache_items_map.find(key) != _cache_items_map.end();
}
size_t size() const {
return _cache_items_map.size();
}
private:
std::list<key_value_pair_t> _cache_items_list;
std::unordered_map<key_t, list_iterator_t> _cache_items_map;
size_t _max_size;
};
} // namespace lru
#endif /* _LRUCACHE_HPP_INCLUDED_ */
#
# OMNeT++/OMNEST Makefile for CSCI_566_proj_1
#
# This file was generated with the command:
# opp_makemake -f --deep -O out -I../inet/src -L../inet/out/$$\(CONFIGNAME\)/src -lINET -KINET_PROJ=../inet
#
# Name of target to be created (-o option)
TARGET = CSCI_566_proj_1$(EXE_SUFFIX)
# User interface (uncomment one) (-u option)
USERIF_LIBS = $(ALL_ENV_LIBS) # that is, $(TKENV_LIBS) $(QTENV_LIBS) $(CMDENV_LIBS)
#USERIF_LIBS = $(CMDENV_LIBS)
#USERIF_LIBS = $(TKENV_LIBS)
#USERIF_LIBS = $(QTENV_LIBS)
# C++ include paths (with -I)
INCLUDE_PATH = -I../inet/src -I. -Iresults
# Additional object and library files to link with
EXTRA_OBJS =
# Additional libraries (-L, -l options)
LIBS = -L../inet/out/$(CONFIGNAME)/src -lINET
LIBS += -Wl,-rpath,`abspath ../inet/out/$(CONFIGNAME)/src`
# Output directory
PROJECT_OUTPUT_DIR = out
PROJECTRELATIVE_PATH =
O = $(PROJECT_OUTPUT_DIR)/$(CONFIGNAME)/$(PROJECTRELATIVE_PATH)
# Object files for local .cc, .msg and .sm files
OBJS = $O/QuestionA1.o $O/QuestionA2.o $O/QuestionB.o $O/QuestionA2_m.o
# Message files
MSGFILES = \
QuestionA2.msg
# SM files
SMFILES =
# Other makefile variables (-K)
INET_PROJ=../inet
#------------------------------------------------------------------------------
# Pull in OMNeT++ configuration (Makefile.inc or configuser.vc)
ifneq ("$(OMNETPP_CONFIGFILE)","")
CONFIGFILE = $(OMNETPP_CONFIGFILE)
else
ifneq ("$(OMNETPP_ROOT)","")
CONFIGFILE = $(OMNETPP_ROOT)/Makefile.inc
else
CONFIGFILE = $(shell opp_configfilepath)
endif
endif
ifeq ("$(wildcard $(CONFIGFILE))","")
$(error Config file '$(CONFIGFILE)' does not exist -- add the OMNeT++ bin directory to the path so that opp_configfilepath can be found, or set the OMNETPP_CONFIGFILE variable to point to Makefile.inc)
endif
include $(CONFIGFILE)
# Simulation kernel and user interface libraries
OMNETPP_LIB_SUBDIR = $(OMNETPP_LIB_DIR)/$(TOOLCHAIN_NAME)
OMNETPP_LIBS = -L"$(OMNETPP_LIB_SUBDIR)" -L"$(OMNETPP_LIB_DIR)" -loppmain$D $(USERIF_LIBS) $(KERNEL_LIBS) $(SYS_LIBS)
COPTS = $(CFLAGS) $(INCLUDE_PATH) -I$(OMNETPP_INCL_DIR)
MSGCOPTS = $(INCLUDE_PATH)
SMCOPTS =
# we want to recompile everything if COPTS changes,
# so we store COPTS into $COPTS_FILE and have object
# files depend on it (except when "make depend" was called)
COPTS_FILE = $O/.last-copts
ifneq ($(MAKECMDGOALS),depend)
ifneq ("$(COPTS)","$(shell cat $(COPTS_FILE) 2>/dev/null || echo '')")
$(shell $(MKPATH) "$O" && echo "$(COPTS)" >$(COPTS_FILE))
endif
endif
#------------------------------------------------------------------------------
# User-supplied makefile fragment(s)
# >>>
# <<<
#------------------------------------------------------------------------------
# Main target
all: $O/$(TARGET)
$(Q)$(LN) $O/$(TARGET) .
$O/$(TARGET): $(OBJS) $(wildcard $(EXTRA_OBJS)) Makefile
@$(MKPATH) $O
@echo Creating executable: $@
$(Q)$(CXX) $(LDFLAGS) -o $O/$(TARGET) $(OBJS) $(EXTRA_OBJS) $(AS_NEEDED_OFF) $(WHOLE_ARCHIVE_ON) $(LIBS) $(WHOLE_ARCHIVE_OFF) $(OMNETPP_LIBS)
.PHONY: all clean cleanall depend msgheaders smheaders
.SUFFIXES: .cc
$O/%.o: %.cc $(COPTS_FILE)
@$(MKPATH) $(dir $@)
$(qecho) "$<"
$(Q)$(CXX) -c $(CXXFLAGS) $(COPTS) -o $@ $<
%_m.cc %_m.h: %.msg
$(qecho) MSGC: $<
$(Q)$(MSGC) -s _m.cc $(MSGCOPTS) $?
%_sm.cc %_sm.h: %.sm
$(qecho) SMC: $<
$(Q)$(SMC) -c++ -suffix cc $(SMCOPTS) $?
msgheaders: $(MSGFILES:.msg=_m.h)
smheaders: $(SMFILES:.sm=_sm.h)
clean:
$(qecho) Cleaning...
$(Q)-rm -rf $O
$(Q)-rm -f CSCI_566_proj_1 CSCI_566_proj_1.exe libCSCI_566_proj_1.so libCSCI_566_proj_1.a libCSCI_566_proj_1.dll libCSCI_566_proj_1.dylib
$(Q)-rm -f ./*_m.cc ./*_m.h ./*_sm.cc ./*_sm.h
$(Q)-rm -f results/*_m.cc results/*_m.h results/*_sm.cc results/*_sm.h
cleanall: clean
$(Q)-rm -rf $(PROJECT_OUTPUT_DIR)
depend:
$(qecho) Creating dependencies...
$(Q)$(MAKEDEPEND) $(INCLUDE_PATH) -f Makefile -P\$$O/ -- $(MSG_CC_FILES) $(SM_CC_FILES) ./*.cc results/*.cc
# DO NOT DELETE THIS LINE -- make depend depends on it.
$O/QuestionA1.o: QuestionA1.cc
$O/QuestionA2.o: QuestionA2.cc \
QuestionA2_m.h
$O/QuestionA2_m.o: QuestionA2_m.cc \
QuestionA2_m.h
$O/QuestionB.o: QuestionB.cc \
$(INET_PROJ)/src/inet/applications/httptools/browser/HttpBrowser.h \
$(INET_PROJ)/src/inet/applications/httptools/browser/HttpBrowserBase.h \
$(INET_PROJ)/src/inet/applications/httptools/common/HttpEventMessages_m.h \
$(INET_PROJ)/src/inet/applications/httptools/common/HttpMessages_m.h \
$(INET_PROJ)/src/inet/applications/httptools/common/HttpNodeBase.h \
$(INET_PROJ)/src/inet/applications/httptools/common/HttpRandom.h \
$(INET_PROJ)/src/inet/applications/httptools/common/HttpUtils.h \
$(INET_PROJ)/src/inet/applications/httptools/configurator/HttpController.h \
$(INET_PROJ)/src/inet/applications/httptools/server/HttpServer.h \
$(INET_PROJ)/src/inet/applications/httptools/server/HttpServerBase.h \
$(INET_PROJ)/src/inet/common/Compat.h \
$(INET_PROJ)/src/inet/common/INETDefs.h \
$(INET_PROJ)/src/inet/common/INETMath.h \
$(INET_PROJ)/src/inet/common/InitStages.h \
$(INET_PROJ)/src/inet/common/NotifierConsts.h \
$(INET_PROJ)/src/inet/common/lifecycle/ILifecycle.h \
$(INET_PROJ)/src/inet/common/lifecycle/LifecycleOperation.h \
$(INET_PROJ)/src/inet/features.h \
$(INET_PROJ)/src/inet/linklayer/common/MACAddress.h \
$(INET_PROJ)/src/inet/networklayer/common/InterfaceEntry.h \
$(INET_PROJ)/src/inet/networklayer/common/InterfaceToken.h \
$(INET_PROJ)/src/inet/networklayer/common/L3Address.h \
$(INET_PROJ)/src/inet/networklayer/common/L3AddressResolver.h \
$(INET_PROJ)/src/inet/networklayer/common/ModuleIdAddress.h \
$(INET_PROJ)/src/inet/networklayer/common/ModulePathAddress.h \
$(INET_PROJ)/src/inet/networklayer/contract/IRoute.h \
$(INET_PROJ)/src/inet/networklayer/contract/IRoutingTable.h \
$(INET_PROJ)/src/inet/networklayer/contract/ipv4/IPv4Address.h \
$(INET_PROJ)/src/inet/networklayer/contract/ipv6/IPv6Address.h \
$(INET_PROJ)/src/inet/transportlayer/contract/tcp/TCPCommand_m.h \
$(INET_PROJ)/src/inet/transportlayer/contract/tcp/TCPSocket.h \
$(INET_PROJ)/src/inet/transportlayer/contract/tcp/TCPSocketMap.h
[General]
# nothing here
[Config QuestionA1]
network = QuestionA1
[Config QuestionA2]
network = QuestionA2
QuestionA2.tic[*].delayTime = exponential(3s) # Exercise 13 (Question 4)
[Config QuestionB]
network = QuestionB
# Controller
*.controller.config = xmldoc("QuestionB.xml","//controller-profile[@id='uniform']")
*.controller.events = "QuestionB.cfg"
*.controller.eventsSection = "default"
# udp app (off)
**.numUdpApps = 0
# Origin
*.origin.numTcpApps = 1
*.origin.tcpApp[0].typename = "HttpServer"
*.origin.tcpApp[0].hostName = "origin.example.org"
*.origin.tcpApp[0].config = xmldoc("QuestionB.xml","//server-profile[@id='normal']")
*.origin.tcpApp[0].port = 80
*.origin.tcpApp[0].activationTime = 0.0
# CDNServer
*.server*.numTcpApps = 2
*.server*.tcpApp[0].typename = "CDNServer"
*.server1.tcpApp[0].hostName = "cdn1.example.org"
*.server2.tcpApp[0].hostName = "cdn2.example.org"
*.server*.tcpApp[0].config = xmldoc("QuestionB.xml","//server-profile[@id='normal']")
*.server*.tcpApp[0].port = 80
*.server*.tcpApp[0].activationTime = 0.0
# CDNBrowser
*.server*.tcpApp[1].typename = "CDNBrowser"
*.server*.tcpApp[1].config = xmldoc("QuestionB.xml","//user-profile[@id='normal']")
*.server*.tcpApp[1].activationTime = 0.0
*.server*.tcpApp[1].scriptFile = "QuestionB.script"
# Clients
*.client[*].numTcpApps = 1
*.client[*].tcpApp[0].typename = "StatsBrowser"
*.client[*].tcpApp[0].logFile = "results/clients.log"
*.client[*].tcpApp[0].config = xmldoc("QuestionB.xml","//user-profile[@id='normal']")
*.client[*].tcpApp[0].activationTime = 0.0
package csci_566_proj_1;
@license(LGPL);
#include <stdio.h>
#include <string.h>
#include <omnetpp.h>
using namespace omnetpp;
class TxcA1 : public cSimpleModule {
protected:
virtual void forwardMessage(cMessage *msg);
virtual void initialize() override;
virtual void handleMessage(cMessage *msg) override;
};
Define_Module(TxcA1);
void TxcA1::initialize() {
if (getIndex() == 0) {
char msgname[20];
sprintf(msgname, "tic-%d", getIndex());
cMessage *msg = new cMessage(msgname);
scheduleAt(0.0, msg);
}
}
void TxcA1::handleMessage(cMessage *msg) {
if (getIndex() == 3) {
EV << "Message " << msg << " arrived.\n";
delete msg;
} else {
forwardMessage(msg);
}
}
void TxcA1::forwardMessage(cMessage *msg) {
int n = gateSize("port");
// START: Exercise 10 (Question 3) If randomly generated number is same as input gate, generate again
cGate *arrival = msg->getArrivalGate();
int k;
do {
k = intuniform(0, n-1);
} while (arrival != nullptr && n > 1 && k == arrival->getIndex());
// STOP: Exercise 10 (Question 3)
EV << "Forwarding message " << msg << " on port out[" << k << "]\n";
send(msg, "port$o", k);
}
package csci_566_proj_1;
simple TxcA1 {
parameters:
volatile double delayTime @unit(s); // Exercise 13 (Question 4)
@display("i=block/routing");
gates:
inout port[];
}
network QuestionA1 {
types:
channel Channel extends ned.DelayChannel { delay = 100ms; }
submodules:
tic[6]: TxcA1;
connections:
tic[0].port++ <--> Channel <--> tic[1].port++;
tic[1].port++ <--> Channel <--> tic[2].port++;
tic[1].port++ <--> Channel <--> tic[4].port++;
tic[3].port++ <--> Channel <--> tic[4].port++;
tic[4].port++ <--> Channel <--> tic[5].port++;
}
#include <stdio.h>
#include <string.h>
#include <omnetpp.h>
using namespace omnetpp;
#include "QuestionA2_m.h"
class TxcA2 : public cSimpleModule {
protected:
virtual QuestionA2Msg *generateMessage();
virtual void forwardMessage(QuestionA2Msg *msg);
virtual void initialize() override;
virtual void handleMessage(cMessage *msg) override;
};
Define_Module(TxcA2);
void TxcA2::initialize() {
QuestionA2Msg *msg = generateMessage();
if (getIndex() == 0) {
scheduleAt(0.0, msg);
} else {
scheduleAt(par("delayTime"), msg);
}
}
void TxcA2::handleMessage(cMessage *msg) {
// If message is ours, schedule another one to come down the pipe later
if (msg->isSelfMessage()) {
EV << "Enquing another message: ";
QuestionA2Msg *newmsg = generateMessage();
EV << newmsg << endl;
scheduleAt(simTime() + par("delayTime"), newmsg);
}
QuestionA2Msg *ttmsg = check_and_cast<QuestionA2Msg *>(msg);
if (ttmsg->getDestination() == getIndex()) {
// Message arrived.
EV << "Message " << ttmsg << " arrived after " << ttmsg->getHopCount() << " hops.\n";
bubble("ARRIVED, starting new one!");
delete ttmsg;
} else {
// We need to forward the message.
forwardMessage(ttmsg);
}
}
QuestionA2Msg *TxcA2::generateMessage() {
// Produce source and destination addresses.
int src = getIndex(); // our module index
int n = getVectorSize(); // module vector size
int dest = intuniform(0, n-2);
if (dest >= src)
dest++;
char msgname[20];
sprintf(msgname, "tic-%d-to-%d", src, dest);
// Create message object and set source and destination field.
QuestionA2Msg *msg = new QuestionA2Msg(msgname);
msg->setSource(src);
msg->setDestination(dest);
return msg;
}
void TxcA2::forwardMessage(QuestionA2Msg *msg) {
msg->setHopCount(msg->getHopCount()+1);
// Same routing as before: random gate.
int n = gateSize("gate");
int k = intuniform(0, n-1);
EV << "Forwarding message " << msg << " on gate[" << k << "]\n";
send(msg, "gate$o", k);
}
message QuestionA2Msg {
int source;
int destination;
int hopCount = 0;
}
package csci_566_proj_1;
simple TxcA2 {
parameters:
volatile double delayTime @unit(s); // delay before transmitting a new message
@display("i=block/routing");
gates:
inout gate[];
}
network QuestionA2 {
types:
channel Channel extends ned.DelayChannel { delay = 100ms; }
submodules:
tic[6]: TxcA2;
connections:
tic[0].gate++ <--> Channel <--> tic[1].gate++;
tic[1].gate++ <--> Channel <--> tic[2].gate++;
tic[1].gate++ <--> Channel <--> tic[4].gate++;
tic[3].gate++ <--> Channel <--> tic[4].gate++;
tic[4].gate++ <--> Channel <--> tic[5].gate++;
}
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-dasharray="none" shape-rendering="auto" font-family="'Dialog'" width="951" text-rendering="auto" fill-opacity="1" contentScriptType="text/ecmascript" color-interpolation="auto" color-rendering="auto" preserveAspectRatio="xMidYMid meet" font-size="12" fill="black" stroke="black" image-rendering="auto" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" stroke-linecap="square" stroke-linejoin="miter" contentStyleType="text/css" font-style="normal" height="471" stroke-width="1" stroke-dashoffset="0" font-weight="normal" stroke-opacity="1">
<!--Generated by the Batik Graphics2D SVG Generator-->
<defs id="genericDefs"/>
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M20 31 L931 31 L931 452 L20 452 L20 31 Z"/>
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M-1 -1 L952 -1 L952 472 L-1 472 L-1 -1 Z"/>
</clipPath>
</defs>
<g font-size="13" fill="white" text-rendering="geometricPrecision" stroke-linejoin="round" stroke="white" stroke-width="0" stroke-miterlimit="0">
<rect x="21" y="32" clip-path="url(#clipPath1)" width="909" height="419" stroke="none"/>
</g>
<g stroke-linecap="butt" font-size="13" fill="rgb(204,204,204)" text-rendering="geometricPrecision" stroke-dasharray="3,3" stroke="rgb(204,204,204)">
<line clip-path="url(#clipPath1)" fill="none" x1="21" x2="21" y1="32" y2="451"/>
<line clip-path="url(#clipPath1)" fill="none" x1="108" x2="108" y1="32" y2="451"/>
<line clip-path="url(#clipPath1)" fill="none" x1="195" x2="195" y1="32" y2="451"/>
<line clip-path="url(#clipPath1)" fill="none" x1="282" x2="282" y1="32" y2="451"/>
<line clip-path="url(#clipPath1)" fill="none" x1="369" x2="369" y1="32" y2="451"/>
<line clip-path="url(#clipPath1)" fill="none" x1="456" x2="456" y1="32" y2="451"/>
<line clip-path="url(#clipPath1)" fill="none" x1="543" x2="543" y1="32" y2="451"/>
<line clip-path="url(#clipPath1)" fill="none" x1="631" x2="631" y1="32" y2="451"/>
<line clip-path="url(#clipPath1)" fill="none" x1="718" x2="718" y1="32" y2="451"/>
<line clip-path="url(#clipPath1)" fill="none" x1="805" x2="805" y1="32" y2="451"/>
<line clip-path="url(#clipPath1)" fill="none" x1="892" x2="892" y1="32" y2="451"/>
<line clip-path="url(#clipPath1)" fill="none" x1="21" x2="930" y1="451" y2="451"/>
<line clip-path="url(#clipPath1)" fill="none" x1="21" x2="930" y1="376" y2="376"/>
<line clip-path="url(#clipPath1)" fill="none" x1="21" x2="930" y1="302" y2="302"/>
<line clip-path="url(#clipPath1)" fill="none" x1="21" x2="930" y1="227" y2="227"/>
<line clip-path="url(#clipPath1)" fill="none" x1="21" x2="930" y1="153" y2="153"/>
<line clip-path="url(#clipPath1)" fill="none" x1="21" x2="930" y1="79" y2="79"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 29 446 32 451 26 451 29 446" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 38 444 41 449 35 449 38 444" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 38 442 41 447 35 447 38 442" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 38 445 41 450 35 450 38 445" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 38 443 41 448 35 448 38 443" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 38 441 41 446 35 446 38 441" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 38 439 41 444 35 444 38 439" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 38 440 41 445 35 445 38 440" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 38 437 41 442 35 442 38 437" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 38 434 41 439 35 439 38 434" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 38 436 41 441 35 441 38 436" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 38 438 41 443 35 443 38 438" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 47 442 50 447 44 447 47 442" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 47 438 50 443 44 443 47 438" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 47 443 50 448 44 448 47 443" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 47 439 50 444 44 444 47 439" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 47 440 50 445 44 445 47 440" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 47 441 50 446 44 446 47 441" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 47 437 50 442 44 442 47 437" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 47 435 50 440 44 440 47 435" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 47 436 50 441 44 441 47 436" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 47 434 50 439 44 439 47 434" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 47 433 50 438 44 438 47 433" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 55 436 58 441 52 441 55 436" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 55 432 58 437 52 437 55 432" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 55 439 58 444 52 444 55 439" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 55 434 58 439 52 439 55 434" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 55 440 58 445 52 445 55 440" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 55 438 58 443 52 443 55 438" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 55 435 58 440 52 440 55 435" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 55 437 58 442 52 442 55 437" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 55 441 58 446 52 446 55 441" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 55 433 58 438 52 438 55 433" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 55 429 58 434 52 434 55 429" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 55 431 58 436 52 436 55 431" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 55 428 58 433 52 433 55 428" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 64 436 67 441 61 441 64 436" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 64 434 67 439 61 439 64 434" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 64 437 67 442 61 442 64 437" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 64 433 67 438 61 438 64 433" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 64 431 67 436 61 436 64 431" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 64 432 67 437 61 437 64 432" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 64 435 67 440 61 440 64 435" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 64 438 67 443 61 443 64 438" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 64 439 67 444 61 444 64 439" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 64 430 67 435 61 435 64 430" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 64 427 67 432 61 432 64 427" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 64 429 67 434 61 434 64 429" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 64 428 67 433 61 433 64 428" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 64 426 67 431 61 431 64 426" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 64 423 67 428 61 428 64 423" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 73 432 76 437 70 437 73 432" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 73 427 76 432 70 432 73 427" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 73 433 76 438 70 438 73 433" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 73 434 76 439 70 439 73 434" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 73 431 76 436 70 436 73 431" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 73 426 76 431 70 431 73 426" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 73 429 76 434 70 434 73 429" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 73 428 76 433 70 433 73 428" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 73 430 76 435 70 435 73 430" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 73 425 76 430 70 430 73 425" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 73 424 76 429 70 429 73 424" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 73 435 76 440 70 440 73 435" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 73 436 76 441 70 441 73 436" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 73 423 76 428 70 428 73 423" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 73 437 76 442 70 442 73 437" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 431 85 436 79 436 82 431" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 426 85 431 79 431 82 426" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 429 85 434 79 434 82 429" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 434 85 439 79 439 82 434" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 432 85 437 79 437 82 432" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 433 85 438 79 438 82 433" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 430 85 435 79 435 82 430" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 422 85 427 79 427 82 422" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 428 85 433 79 433 82 428" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 424 85 429 79 429 82 424" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 427 85 432 79 432 82 427" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 425 85 430 79 430 82 425" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 423 85 428 79 428 82 423" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 421 85 426 79 426 82 421" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 420 85 425 79 425 82 420" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 418 85 423 79 423 82 418" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 415 85 420 79 420 82 415" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 82 417 85 422 79 422 82 417" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 425 93 430 87 430 90 425" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 428 93 433 87 433 90 428" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 422 93 427 87 427 90 422" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 421 93 426 87 426 90 421" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 423 93 428 87 428 90 423" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 426 93 431 87 431 90 426" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 429 93 434 87 434 90 429" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 432 93 437 87 437 90 432" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 427 93 432 87 432 90 427" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 431 93 436 87 436 90 431" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 418 93 423 87 423 90 418" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 430 93 435 87 435 90 430" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 416 93 421 87 421 90 416" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 420 93 425 87 425 90 420" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 424 93 429 87 429 90 424" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 415 93 420 87 420 90 415" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 417 93 422 87 422 90 417" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 90 419 93 424 87 424 90 419" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 421 102 426 96 426 99 421" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 422 102 427 96 427 99 422" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 419 102 424 96 424 99 419" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 426 102 431 96 431 99 426" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 428 102 433 96 433 99 428" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 424 102 429 96 429 99 424" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 417 102 422 96 422 99 417" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 423 102 428 96 428 99 423" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 425 102 430 96 430 99 425" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 427 102 432 96 432 99 427" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 420 102 425 96 425 99 420" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 414 102 419 96 419 99 414" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 416 102 421 96 421 99 416" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 418 102 423 96 423 99 418" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 430 102 435 96 435 99 430" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 429 102 434 96 434 99 429" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 409 102 414 96 414 99 409" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 411 102 416 96 416 99 411" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 415 102 420 96 420 99 415" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 412 102 417 96 417 99 412" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 413 102 418 96 418 99 413" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 99 432 102 437 96 437 99 432" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 416 111 421 105 421 108 416" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 424 111 429 105 429 108 424" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 419 111 424 105 424 108 419" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 429 111 434 105 434 108 429" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 415 111 420 105 420 108 415" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 422 111 427 105 427 108 422" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 418 111 423 105 423 108 418" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 417 111 422 105 422 108 417" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 423 111 428 105 428 108 423" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 421 111 426 105 426 108 421" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 410 111 415 105 415 108 410" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 425 111 430 105 430 108 425" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 420 111 425 105 425 108 420" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 412 111 417 105 417 108 412" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 414 111 419 105 419 108 414" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 426 111 431 105 431 108 426" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 404 111 409 105 409 108 404" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 413 111 418 105 418 108 413" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 427 111 432 105 432 108 427" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 409 111 414 105 414 108 409" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 408 111 413 105 413 108 408" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 108 411 111 416 105 416 108 411" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 417 119 422 113 422 116 417" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 418 119 423 113 423 116 418" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 419 119 424 113 424 116 419" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 420 119 425 113 425 116 420" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 423 119 428 113 428 116 423" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 411 119 416 113 416 116 411" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 422 119 427 113 427 116 422" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 421 119 426 113 426 116 421" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 412 119 417 113 417 116 412" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 415 119 420 113 420 116 415" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 416 119 421 113 421 116 416" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 424 119 429 113 429 116 424" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 414 119 419 113 419 116 414" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 413 119 418 113 418 116 413" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 409 119 414 113 414 116 409" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 403 119 408 113 408 116 403" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 408 119 413 113 413 116 408" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 426 119 431 113 431 116 426" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 407 119 412 113 412 116 407" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 427 119 432 113 432 116 427" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 402 119 407 113 407 116 402" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 406 119 411 113 411 116 406" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 425 119 430 113 430 116 425" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 410 119 415 113 415 116 410" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 116 404 119 409 113 409 116 404" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 410 128 415 122 415 125 410" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 407 128 412 122 412 125 407" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 413 128 418 122 418 125 413" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 404 128 409 122 409 125 404" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 421 128 426 122 426 125 421" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 416 128 421 122 421 125 416" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 415 128 420 122 420 125 415" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 420 128 425 122 425 125 420" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 418 128 423 122 423 125 418" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 403 128 408 122 408 125 403" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 409 128 414 122 414 125 409" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 417 128 422 122 422 125 417" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 419 128 424 122 424 125 419" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 411 128 416 122 416 125 411" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 399 128 404 122 404 125 399" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 423 128 428 122 428 125 423" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 408 128 413 122 413 125 408" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 412 128 417 122 417 125 412" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 405 128 410 122 410 125 405" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 422 128 427 122 427 125 422" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 414 128 419 122 419 125 414" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 398 128 403 122 403 125 398" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 125 406 128 411 122 411 125 406" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 415 137 420 131 420 134 415" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 397 137 402 131 402 134 397" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 421 137 426 131 426 134 421" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 411 137 416 131 416 134 411" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 412 137 417 131 417 134 412" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 408 137 413 131 413 134 408" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 410 137 415 131 415 134 410" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 406 137 411 131 411 134 406" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 413 137 418 131 418 134 413" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 401 137 406 131 406 134 401" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 405 137 410 131 410 134 405" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 403 137 408 131 408 134 403" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 407 137 412 131 412 134 407" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 400 137 405 131 405 134 400" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 414 137 419 131 419 134 414" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 402 137 407 131 407 134 402" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 404 137 409 131 409 134 404" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 409 137 414 131 414 134 409" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 416 137 421 131 421 134 416" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 418 137 423 131 423 134 418" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 417 137 422 131 422 134 417" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 399 137 404 131 404 134 399" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 398 137 403 131 403 134 398" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 391 137 396 131 396 134 391" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 134 419 137 424 131 424 134 419" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 400 146 405 140 405 143 400" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 414 146 419 140 419 143 414" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 403 146 408 140 408 143 403" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 406 146 411 140 411 143 406" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 420 146 425 140 425 143 420" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 411 146 416 140 416 143 411" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 409 146 414 140 414 143 409" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 407 146 412 140 412 143 407" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 408 146 413 140 413 143 408" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 410 146 415 140 415 143 410" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 390 146 395 140 395 143 390" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 405 146 410 140 410 143 405" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 404 146 409 140 409 143 404" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 412 146 417 140 417 143 412" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 413 146 418 140 418 143 413" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 402 146 407 140 407 143 402" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 397 146 402 140 402 143 397" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 394 146 399 140 399 143 394" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 396 146 401 140 401 143 396" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 415 146 420 140 420 143 415" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 399 146 404 140 404 143 399" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 398 146 403 140 403 143 398" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 416 146 421 140 421 143 416" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 143 401 146 406 140 406 143 401" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 409 154 414 148 414 151 409" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 400 154 405 148 405 151 400" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 403 154 408 148 408 151 403" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 401 154 406 148 406 151 401" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 416 154 421 148 421 151 416" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 402 154 407 148 407 151 402" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 398 154 403 148 403 151 398" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 395 154 400 148 400 151 395" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 405 154 410 148 410 151 405" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 391 154 396 148 396 151 391" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 408 154 413 148 413 151 408" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 389 154 394 148 394 151 389" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 404 154 409 148 409 151 404" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 406 154 411 148 411 151 406" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 396 154 401 148 401 151 396" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 411 154 416 148 416 151 411" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 407 154 412 148 412 151 407" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 412 154 417 148 417 151 412" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 387 154 392 148 392 151 387" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 397 154 402 148 402 151 397" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 399 154 404 148 404 151 399" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 413 154 418 148 418 151 413" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 410 154 415 148 415 151 410" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 414 154 419 148 419 151 414" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 151 392 154 397 148 397 151 392" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 408 163 413 157 413 160 408" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 403 163 408 157 408 160 403" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 398 163 403 157 403 160 398" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 409 163 414 157 414 160 409" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 387 163 392 157 392 160 387" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 394 163 399 157 399 160 394" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 399 163 404 157 404 160 399" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 406 163 411 157 411 160 406" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 402 163 407 157 407 160 402" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 401 163 406 157 406 160 401" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 388 163 393 157 393 160 388" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 393 163 398 157 398 160 393" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 397 163 402 157 402 160 397" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 407 163 412 157 412 160 407" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 410 163 415 157 415 160 410" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 412 163 417 157 417 160 412" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 396 163 401 157 401 160 396" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 392 163 397 157 397 160 392" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 400 163 405 157 405 160 400" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 395 163 400 157 400 160 395" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 405 163 410 157 410 160 405" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 404 163 409 157 409 160 404" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 160 390 163 395 157 395 160 390" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 399 172 404 166 404 169 399" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 391 172 396 166 396 169 391" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 392 172 397 166 397 169 392" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 396 172 401 166 401 169 396" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 398 172 403 166 403 169 398" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 404 172 409 166 409 169 404" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 400 172 405 166 405 169 400" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 389 172 394 166 394 169 389" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 395 172 400 166 400 169 395" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 403 172 408 166 408 169 403" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 397 172 402 166 402 169 397" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 401 172 406 166 406 169 401" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 405 172 410 166 410 169 405" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 402 172 407 166 407 169 402" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 393 172 398 166 398 169 393" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 394 172 399 166 399 169 394" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 380 172 385 166 385 169 380" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 383 172 388 166 388 169 383" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 390 172 395 166 395 169 390" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 385 172 390 166 390 169 385" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 388 172 393 166 393 169 388" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 406 172 411 166 411 169 406" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 169 407 172 412 166 412 169 407" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 401 180 406 174 406 177 401" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 384 180 389 174 389 177 384" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 402 180 407 174 407 177 402" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 389 180 394 174 394 177 389" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 390 180 395 174 395 177 390" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 397 180 402 174 402 177 397" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 393 180 398 174 398 177 393" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 386 180 391 174 391 177 386" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 398 180 403 174 403 177 398" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 394 180 399 174 399 177 394" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 399 180 404 174 404 177 399" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 400 180 405 174 405 177 400" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 392 180 397 174 397 177 392" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 396 180 401 174 401 177 396" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 405 180 410 174 410 177 405" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 406 180 411 174 411 177 406" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 387 180 392 174 392 177 387" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 391 180 396 174 396 177 391" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 404 180 409 174 409 177 404" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 403 180 408 174 408 177 403" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 385 180 390 174 390 177 385" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 409 180 414 174 414 177 409" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 383 180 388 174 388 177 383" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 395 180 400 174 400 177 395" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 177 407 180 412 174 412 177 407" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 390 189 395 183 395 186 390" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 389 189 394 183 394 186 389" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 392 189 397 183 397 186 392" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 393 189 398 183 398 186 393" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 378 189 383 183 383 186 378" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 399 189 404 183 404 186 399" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 403 189 408 183 408 186 403" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 381 189 386 183 386 186 381" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 394 189 399 183 399 186 394" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 382 189 387 183 387 186 382" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 400 189 405 183 405 186 400" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 391 189 396 183 396 186 391" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 386 189 391 183 391 186 386" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 383 189 388 183 388 186 383" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 388 189 393 183 393 186 388" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 385 189 390 183 390 186 385" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 397 189 402 183 402 186 397" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 395 189 400 183 400 186 395" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 402 189 407 183 407 186 402" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 401 189 406 183 406 186 401" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 396 189 401 183 401 186 396" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 404 189 409 183 409 186 404" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 377 189 382 183 382 186 377" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 376 189 381 183 381 186 376" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 387 189 392 183 392 186 387" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 406 189 411 183 411 186 406" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 384 189 389 183 389 186 384" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 380 189 385 183 385 186 380" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 186 398 189 403 183 403 186 398" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 385 198 390 192 390 195 385" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 394 198 399 192 399 195 394" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 380 198 385 192 385 195 380" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 388 198 393 192 393 195 388" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 389 198 394 192 394 195 389" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 390 198 395 192 395 195 390" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 397 198 402 192 402 195 397" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 387 198 392 192 392 195 387" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 382 198 387 192 387 195 382" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 393 198 398 192 398 195 393" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 401 198 406 192 406 195 401" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 376 198 381 192 381 195 376" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 391 198 396 192 396 195 391" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 402 198 407 192 407 195 402" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 386 198 391 192 391 195 386" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 383 198 388 192 388 195 383" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 398 198 403 192 403 195 398" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 400 198 405 192 405 195 400" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 384 198 389 192 389 195 384" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 392 198 397 192 397 195 392" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 195 403 198 408 192 408 195 403" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 378 207 383 201 383 204 378" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 371 207 376 201 376 204 371" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 390 207 395 201 395 204 390" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 386 207 391 201 391 204 386" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 374 207 379 201 379 204 374" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 388 207 393 201 393 204 388" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 387 207 392 201 392 204 387" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 391 207 396 201 396 204 391" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 379 207 384 201 384 204 379" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 380 207 385 201 385 204 380" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 396 207 401 201 401 204 396" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 385 207 390 201 390 204 385" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 399 207 404 201 404 204 399" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 397 207 402 201 402 204 397" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 395 207 400 201 400 204 395" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 392 207 397 201 397 204 392" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 384 207 389 201 389 204 384" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 394 207 399 201 399 204 394" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 389 207 394 201 394 204 389" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 398 207 403 201 403 204 398" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 393 207 398 201 398 204 393" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 377 207 382 201 382 204 377" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 372 207 377 201 377 204 372" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 376 207 381 201 381 204 376" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 381 207 386 201 386 204 381" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 382 207 387 201 387 204 382" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 375 207 380 201 380 204 375" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 204 373 207 378 201 378 204 373" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 386 215 391 209 391 212 386" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 390 215 395 209 395 212 390" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 380 215 385 209 385 212 380" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 384 215 389 209 389 212 384" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 385 215 390 209 390 212 385" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 376 215 381 209 381 212 376" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 393 215 398 209 398 212 393" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 381 215 386 209 386 212 381" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 375 215 380 209 380 212 375" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 387 215 392 209 392 212 387" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 358 215 363 209 363 212 358" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 378 215 383 209 383 212 378" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 382 215 387 209 387 212 382" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 391 215 396 209 396 212 391" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 389 215 394 209 394 212 389" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 394 215 399 209 399 212 394" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 388 215 393 209 393 212 388" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 373 215 378 209 378 212 373" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 377 215 382 209 382 212 377" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 383 215 388 209 388 212 383" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 374 215 379 209 379 212 374" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 212 370 215 375 209 375 212 370" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 380 224 385 218 385 221 380" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 385 224 390 218 390 221 385" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 388 224 393 218 393 221 388" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 370 224 375 218 375 221 370" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 383 224 388 218 388 221 383" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 381 224 386 218 386 221 381" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 387 224 392 218 392 221 387" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 393 224 398 218 398 221 393" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 382 224 387 218 387 221 382" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 371 224 376 218 376 221 371" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 377 224 382 218 382 221 377" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 374 224 379 218 379 221 374" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 389 224 394 218 394 221 389" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 390 224 395 218 395 221 390" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 384 224 389 218 389 221 384" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 373 224 378 218 378 221 373" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 376 224 381 218 381 221 376" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 392 224 397 218 397 221 392" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 365 224 370 218 370 221 365" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 378 224 383 218 383 221 378" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 386 224 391 218 391 221 386" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 396 224 401 218 401 221 396" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 375 224 380 218 380 221 375" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 369 224 374 218 374 221 369" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 221 379 224 384 218 384 221 379" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 382 233 387 227 387 230 382" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 378 233 383 227 383 230 378" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 383 233 388 227 388 230 383" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 377 233 382 227 382 230 377" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 374 233 379 227 379 230 374" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 392 233 397 227 397 230 392" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 371 233 376 227 376 230 371" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 376 233 381 227 381 230 376" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 388 233 393 227 393 230 388" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 380 233 385 227 385 230 380" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 381 233 386 227 386 230 381" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 375 233 380 227 380 230 375" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 373 233 378 227 378 230 373" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 384 233 389 227 389 230 384" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 385 233 390 227 390 230 385" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 370 233 375 227 375 230 370" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 372 233 377 227 377 230 372" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 369 233 374 227 374 230 369" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 361 233 366 227 366 230 361" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 379 233 384 227 384 230 379" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 230 358 233 363 227 363 230 358" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 381 241 386 235 386 238 381" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 376 241 381 235 381 238 376" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 377 241 382 235 382 238 377" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 375 241 380 235 380 238 375" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 378 241 383 235 383 238 378" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 365 241 370 235 370 238 365" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 383 241 388 235 388 238 383" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 387 241 392 235 392 238 387" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 367 241 372 235 372 238 367" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 379 241 384 235 384 238 379" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 382 241 387 235 387 238 382" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 373 241 378 235 378 238 373" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 360 241 365 235 365 238 360" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 374 241 379 235 379 238 374" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 380 241 385 235 385 238 380" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 384 241 389 235 389 238 384" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 370 241 375 235 375 238 370" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 364 241 369 235 369 238 364" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 366 241 371 235 371 238 366" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 372 241 377 235 377 238 372" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 392 241 397 235 397 238 392" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 385 241 390 235 390 238 385" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 363 241 368 235 368 238 363" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 238 371 241 376 235 376 238 371" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 376 250 381 244 381 247 376" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 378 250 383 244 383 247 378" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 365 250 370 244 370 247 365" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 370 250 375 244 375 247 370" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 373 250 378 244 378 247 373" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 371 250 376 244 376 247 371" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 368 250 373 244 373 247 368" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 372 250 377 244 377 247 372" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 358 250 363 244 363 247 358" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 374 250 379 244 379 247 374" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 364 250 369 244 369 247 364" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 375 250 380 244 380 247 375" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 377 250 382 244 382 247 377" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 379 250 384 244 384 247 379" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 382 250 387 244 387 247 382" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 363 250 368 244 368 247 363" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 247 366 250 371 244 371 247 366" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 354 259 359 253 359 256 354" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 357 259 362 253 362 256 357" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 359 259 364 253 364 256 359" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 374 259 379 253 379 256 374" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 361 259 366 253 366 256 361" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 365 259 370 253 370 256 365" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 364 259 369 253 369 256 364" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 356 259 361 253 361 256 356" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 376 259 381 253 381 256 376" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 372 259 377 253 377 256 372" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 378 259 383 253 383 256 378" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 380 259 385 253 385 256 380" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 367 259 372 253 372 256 367" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 358 259 363 253 363 256 358" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 383 259 388 253 388 256 383" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 375 259 380 253 380 256 375" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 373 259 378 253 378 256 373" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 363 259 368 253 368 256 363" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 371 259 376 253 376 256 371" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 369 259 374 253 374 256 369" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 377 259 382 253 382 256 377" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 379 259 384 253 384 256 379" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 368 259 373 253 373 256 368" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 350 259 355 253 355 256 350" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 362 259 367 253 367 256 362" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 366 259 371 253 371 256 366" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 256 370 259 375 253 375 256 370" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 265 366 268 371 262 371 265 366" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 265 362 268 367 262 367 265 362" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 265 372 268 377 262 377 265 372" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 265 370 268 375 262 375 265 370" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 265 375 268 380 262 380 265 375" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 265 378 268 383 262 383 265 378" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 265 369 268 374 262 374 265 369" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 265 356 268 361 262 361 265 356" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 265 360 268 365 262 365 265 360" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 265 367 268 372 262 372 265 367" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 265 357 268 362 262 362 265 357" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 265 364 268 369 262 369 265 364" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 265 355 268 360 262 360 265 355" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 265 363 268 368 262 368 265 363" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 265 361 268 366 262 366 265 361" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 265 358 268 363 262 363 265 358" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 364 276 369 270 369 273 364" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 368 276 373 270 373 273 368" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 360 276 365 270 365 273 360" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 361 276 366 270 366 273 361" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 367 276 372 270 372 273 367" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 357 276 362 270 362 273 357" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 353 276 358 270 358 273 353" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 366 276 371 270 371 273 366" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 375 276 380 270 380 273 375" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 356 276 361 270 361 273 356" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 369 276 374 270 374 273 369" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 354 276 359 270 359 273 354" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 371 276 376 270 376 273 371" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 363 276 368 270 368 273 363" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 370 276 375 270 375 273 370" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 359 276 364 270 364 273 359" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 373 276 378 270 378 273 373" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 377 276 382 270 382 273 377" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 273 358 276 363 270 363 273 358" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 369 285 374 279 374 282 369" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 372 285 377 279 377 282 372" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 370 285 375 279 375 282 370" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 356 285 361 279 361 282 356" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 368 285 373 279 373 282 368" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 360 285 365 279 365 282 360" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 371 285 376 279 376 282 371" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 357 285 362 279 362 282 357" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 359 285 364 279 364 282 359" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 345 285 350 279 350 282 345" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 361 285 366 279 366 282 361" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 346 285 351 279 351 282 346" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 347 285 352 279 352 282 347" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 355 285 360 279 360 282 355" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 349 285 354 279 354 282 349" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 358 285 363 279 363 282 358" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 365 285 370 279 370 282 365" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 282 367 285 372 279 372 282 367" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 355 294 360 288 360 291 355" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 371 294 376 288 376 291 371" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 346 294 351 288 351 291 346" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 357 294 362 288 362 291 357" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 365 294 370 288 370 291 365" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 359 294 364 288 364 291 359" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 358 294 363 288 363 291 358" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 364 294 369 288 369 291 364" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 347 294 352 288 352 291 347" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 354 294 359 288 359 291 354" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 363 294 368 288 368 291 363" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 350 294 355 288 355 291 350" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 370 294 375 288 375 291 370" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 349 294 354 288 354 291 349" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 360 294 365 288 365 291 360" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 366 294 371 288 371 291 366" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 348 294 353 288 353 291 348" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 339 294 344 288 344 291 339" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 344 294 349 288 349 291 344" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 361 294 366 288 366 291 361" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 291 343 294 348 288 348 291 343" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 299 348 302 353 296 353 299 348" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 299 360 302 365 296 365 299 360" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 299 374 302 379 296 379 299 374" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 299 366 302 371 296 371 299 366" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 299 354 302 359 296 359 299 354" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 299 364 302 369 296 369 299 364" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 299 355 302 360 296 360 299 355" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 299 358 302 363 296 363 299 358" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 299 353 302 358 296 358 299 353" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 299 357 302 362 296 362 299 357" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 299 350 302 355 296 355 299 350" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 299 346 302 351 296 351 299 346" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 299 352 302 357 296 357 299 352" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 299 365 302 370 296 370 299 365" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 357 311 362 305 362 308 357" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 351 311 356 305 356 308 351" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 356 311 361 305 361 308 356" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 355 311 360 305 360 308 355" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 349 311 354 305 354 308 349" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 347 311 352 305 352 308 347" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 350 311 355 305 355 308 350" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 361 311 366 305 366 308 361" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 343 311 348 305 348 308 343" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 344 311 349 305 349 308 344" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 348 311 353 305 353 308 348" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 366 311 371 305 371 308 366" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 340 311 345 305 345 308 340" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 359 311 364 305 364 308 359" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 329 311 334 305 334 308 329" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 345 311 350 305 350 308 345" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 338 311 343 305 343 308 338" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 332 311 337 305 337 308 332" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 352 311 357 305 357 308 352" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 308 326 311 331 305 331 308 326" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 317 345 320 350 314 350 317 345" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 317 326 320 331 314 331 317 326" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 317 363 320 368 314 368 317 363" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 317 354 320 359 314 359 317 354" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 317 349 320 354 314 354 317 349" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 317 356 320 361 314 361 317 356" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 317 359 320 364 314 364 317 359" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 317 340 320 345 314 345 317 340" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 317 352 320 357 314 357 317 352" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 317 334 320 339 314 339 317 334" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 317 337 320 342 314 342 317 337" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 317 348 320 353 314 353 317 348" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 317 357 320 362 314 362 317 357" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 317 360 320 365 314 365 317 360" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 317 344 320 349 314 349 317 344" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 317 333 320 338 314 338 317 333" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 347 329 352 323 352 326 347" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 331 329 336 323 336 326 331" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 351 329 356 323 356 326 351" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 338 329 343 323 343 326 338" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 356 329 361 323 361 326 356" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 328 329 333 323 333 326 328" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 345 329 350 323 350 326 345" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 355 329 360 323 360 326 355" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 350 329 355 323 355 326 350" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 357 329 362 323 362 326 357" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 342 329 347 323 347 326 342" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 340 329 345 323 345 326 340" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 348 329 353 323 353 326 348" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 346 329 351 323 351 326 346" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 334 329 339 323 339 326 334" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 344 329 349 323 349 326 344" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 341 329 346 323 346 326 341" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 339 329 344 323 344 326 339" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 326 349 329 354 323 354 326 349" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 334 328 337 333 331 333 334 328" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 334 348 337 353 331 353 334 348" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 334 332 337 337 331 337 334 332" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 334 339 337 344 331 344 334 339" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 334 351 337 356 331 356 334 351" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 334 340 337 345 331 345 334 340" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 334 345 337 350 331 350 334 345" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 334 335 337 340 331 340 334 335" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 334 347 337 352 331 352 334 347" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 334 331 337 336 331 336 334 331" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 343 345 346 350 340 350 343 345" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 343 330 346 335 340 335 343 330" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 343 328 346 333 340 333 343 328" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 343 329 346 334 340 334 343 329" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 343 341 346 346 340 346 343 341" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 343 342 346 347 340 347 343 342" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 343 343 346 348 340 348 343 343" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 343 336 346 341 340 341 343 336" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 343 319 346 324 340 324 343 319" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 343 323 346 328 340 328 343 323" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 343 340 346 345 340 345 343 340" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 343 338 346 343 340 343 343 338" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 343 331 346 336 340 336 343 331" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 343 335 346 340 340 340 343 335" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 343 325 346 330 340 330 343 325" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 352 358 355 363 349 363 352 358" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 352 323 355 328 349 328 352 323" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 352 349 355 354 349 354 352 349" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 352 340 355 345 349 345 352 340" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 352 334 355 339 349 339 352 334" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 360 343 363 348 357 348 360 343" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 360 327 363 332 357 332 360 327" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 360 338 363 343 357 343 360 338" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 360 333 363 338 357 338 360 333" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 360 330 363 335 357 335 360 330" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 360 341 363 346 357 346 360 341" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 360 351 363 356 357 356 360 351" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 360 324 363 329 357 329 360 324" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 360 318 363 323 357 323 360 318" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 369 323 372 328 366 328 369 323" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 369 332 372 337 366 337 369 332" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 369 326 372 331 366 331 369 326" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 369 333 372 338 366 338 369 333" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 369 331 372 336 366 336 369 331" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 369 329 372 334 366 334 369 329" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 369 313 372 318 366 318 369 313" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 324 381 329 375 329 378 324" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 330 381 335 375 335 378 330" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 331 381 336 375 336 378 331" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 333 381 338 375 338 378 333" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 308 381 313 375 313 378 308" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 325 381 330 375 330 378 325" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 336 381 341 375 341 378 336" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 334 381 339 375 339 378 334" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 321 381 326 375 326 378 321" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 322 381 327 375 327 378 322" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 303 381 308 375 308 378 303" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 332 381 337 375 337 378 332" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 329 381 334 375 334 378 329" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 335 381 340 375 340 378 335" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 318 381 323 375 323 378 318" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 338 381 343 375 343 378 338" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 316 381 321 375 321 378 316" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 323 381 328 375 328 378 323" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 327 381 332 375 332 378 327" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 378 337 381 342 375 342 378 337" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 387 337 390 342 384 342 387 337" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 387 324 390 329 384 329 387 324" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 387 326 390 331 384 331 387 326" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 387 323 390 328 384 328 387 323" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 387 327 390 332 384 332 387 327" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 387 325 390 330 384 330 387 325" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 387 336 390 341 384 341 387 336" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 387 317 390 322 384 322 387 317" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 387 331 390 336 384 336 387 331" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 387 319 390 324 384 324 387 319" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 387 312 390 317 384 317 387 312" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 395 327 398 332 392 332 395 327" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 395 321 398 326 392 326 395 321" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 395 322 398 327 392 327 395 322" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 395 306 398 311 392 311 395 306" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 395 310 398 315 392 315 395 310" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 395 320 398 325 392 325 395 320" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 395 328 398 333 392 333 395 328" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 395 325 398 330 392 330 395 325" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 395 323 398 328 392 328 395 323" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 395 329 398 334 392 334 395 329" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 395 316 398 321 392 321 395 316" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 395 331 398 336 392 336 395 331" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 395 317 398 322 392 322 395 317" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 395 337 398 342 392 342 395 337" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 404 326 407 331 401 331 404 326" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 404 322 407 327 401 327 404 322" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 404 318 407 323 401 323 404 318" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 404 290 407 295 401 295 404 290" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 404 316 407 321 401 321 404 316" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 404 334 407 339 401 339 404 334" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 404 314 407 319 401 319 404 314" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 413 323 416 328 410 328 413 323" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 413 318 416 323 410 323 413 318" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 413 300 416 305 410 305 413 300" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 413 309 416 314 410 314 413 309" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 413 319 416 324 410 324 413 319" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 413 328 416 333 410 333 413 328" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 413 327 416 332 410 332 413 327" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 413 310 416 315 410 315 413 310" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 413 317 416 322 410 322 413 317" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 413 325 416 330 410 330 413 325" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 421 316 424 321 418 321 421 316" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 421 289 424 294 418 294 421 289" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 421 314 424 319 418 319 421 314" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 421 324 424 329 418 329 421 324" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 421 321 424 326 418 326 421 321" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 421 310 424 315 418 315 421 310" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 430 299 433 304 427 304 430 299" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 430 316 433 321 427 321 430 316" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 430 321 433 326 427 326 430 321" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 430 326 433 331 427 331 430 326" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 430 312 433 317 427 317 430 312" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 430 305 433 310 427 310 430 305" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 430 327 433 332 427 332 430 327" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 430 303 433 308 427 308 430 303" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 430 310 433 315 427 315 430 310" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 439 287 442 292 436 292 439 287" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 439 307 442 312 436 312 439 307" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 439 294 442 299 436 299 439 294" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 439 303 442 308 436 308 439 303" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 439 302 442 307 436 307 439 302" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 439 315 442 320 436 320 439 315" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 439 319 442 324 436 324 439 319" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 439 310 442 315 436 315 439 310" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 439 281 442 286 436 286 439 281" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 448 291 451 296 445 296 448 291" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 448 298 451 303 445 303 448 298" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 448 302 451 307 445 307 448 302" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 448 287 451 292 445 292 448 287" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 448 300 451 305 445 305 448 300" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 448 317 451 322 445 322 448 317" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 448 309 451 314 445 314 448 309" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 456 295 459 300 453 300 456 295" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 456 308 459 313 453 313 456 308" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 456 302 459 307 453 307 456 302" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 465 284 468 289 462 289 465 284" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 465 302 468 307 462 307 465 302" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 465 309 468 314 462 314 465 309" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 465 298 468 303 462 303 465 298" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 465 310 468 315 462 315 465 310" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 465 300 468 305 462 305 465 300" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 465 315 468 320 462 320 465 315" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 474 294 477 299 471 299 474 294" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 474 278 477 283 471 283 474 278" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 474 281 477 286 471 286 474 281" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 474 304 477 309 471 309 474 304" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 482 301 485 306 479 306 482 301" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 482 289 485 294 479 294 482 289" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 482 293 485 298 479 298 482 293" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 482 295 485 300 479 300 482 295" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 482 308 485 313 479 313 482 308" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 482 303 485 308 479 308 482 303" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 482 306 485 311 479 311 482 306" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 482 274 485 279 479 279 482 274" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 491 280 494 285 488 285 491 280" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 491 286 494 291 488 291 491 286" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 491 266 494 271 488 271 491 266" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 491 294 494 299 488 299 491 294" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 491 279 494 284 488 284 491 279" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 500 260 503 265 497 265 500 260" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 500 292 503 297 497 297 500 292" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 500 279 503 284 497 284 500 279" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 500 285 503 290 497 290 500 285" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 509 270 512 275 506 275 509 270" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 509 285 512 290 506 290 509 285" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 509 282 512 287 506 287 509 282" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 509 284 512 289 506 289 509 284" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 509 291 512 296 506 296 509 291" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 509 260 512 265 506 265 509 260" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 509 272 512 277 506 277 509 272" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 517 276 520 281 514 281 517 276" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 517 259 520 264 514 264 517 259" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 526 262 529 267 523 267 526 262" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 526 261 529 266 523 266 526 261" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 535 282 538 287 532 287 535 282" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 535 284 538 289 532 289 535 284" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 535 283 538 288 532 288 535 283" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 535 265 538 270 532 270 535 265" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 535 286 538 291 532 291 535 286" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 535 261 538 266 532 266 535 261" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 543 276 546 281 540 281 543 276" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 543 263 546 268 540 268 543 263" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 543 286 546 291 540 291 543 286" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 552 269 555 274 549 274 552 269" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 552 258 555 263 549 263 552 258" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 561 264 564 269 558 269 561 264" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 561 280 564 285 558 285 561 280" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 570 252 573 257 567 257 570 252" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 570 264 573 269 567 269 570 264" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 587 247 590 252 584 252 587 247" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 587 250 590 255 584 255 587 250" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 604 257 607 262 601 262 604 257" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 604 232 607 237 601 237 604 232" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 613 252 616 257 610 257 613 252" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 622 258 625 263 619 263 622 258" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 622 229 625 234 619 234 622 229" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 631 239 634 244 628 244 631 239" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 631 245 634 250 628 250 631 245" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 657 241 660 246 654 246 657 241" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 657 218 660 223 654 223 657 218" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 674 229 677 234 671 234 674 229" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 692 213 695 218 689 218 692 213" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 709 203 712 208 706 208 709 203" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 727 217 730 222 724 222 727 217" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 735 191 738 196 732 196 735 191" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 761 178 764 183 758 183 761 178" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 788 192 791 197 785 197 788 192" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 875 139 878 144 872 144 875 139" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 875 135 878 140 872 140 875 135" stroke="none"/>
<polygon fill="rgb(0,100,0)" clip-path="url(#clipPath1)" points=" 918 133 921 138 915 138 918 133" stroke="none"/>
<rect x="21" y="32" clip-path="url(#clipPath2)" fill="none" width="909" stroke-dasharray="none" height="419" stroke="black"/>
</g>
<g text-rendering="geometricPrecision" font-size="10" font-family="'Arial'" stroke-linecap="butt">
<text xml:space="preserve" x="424" y="10" clip-path="url(#clipPath2)" stroke="none">Hop Count vs Latency</text>
<line clip-path="url(#clipPath2)" fill="none" x1="21" x2="930" y1="30" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="21" x2="930" y1="453" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="21" x2="21" y1="26" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="21" x2="21" y1="457" y2="453"/>
<text x="20" font-size="8" y="24" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">0</text>
<text x="20" font-size="8" y="466" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">0</text>
<line clip-path="url(#clipPath2)" fill="none" x1="38" x2="38" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="38" x2="38" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="55" x2="55" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="55" x2="55" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="73" x2="73" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="73" x2="73" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="90" x2="90" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="90" x2="90" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="108" x2="108" y1="26" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="108" x2="108" y1="457" y2="453"/>
<text x="105" font-size="8" y="24" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">10</text>
<text x="105" font-size="8" y="466" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">10</text>
<line clip-path="url(#clipPath2)" fill="none" x1="125" x2="125" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="125" x2="125" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="143" x2="143" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="143" x2="143" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="160" x2="160" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="160" x2="160" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="177" x2="177" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="177" x2="177" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="195" x2="195" y1="26" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="195" x2="195" y1="457" y2="453"/>
<text x="192" font-size="8" y="24" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">20</text>
<text x="192" font-size="8" y="466" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">20</text>
<line clip-path="url(#clipPath2)" fill="none" x1="212" x2="212" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="212" x2="212" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="230" x2="230" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="230" x2="230" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="247" x2="247" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="247" x2="247" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="265" x2="265" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="265" x2="265" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="282" x2="282" y1="26" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="282" x2="282" y1="457" y2="453"/>
<text x="279" font-size="8" y="24" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">30</text>
<text x="279" font-size="8" y="466" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">30</text>
<line clip-path="url(#clipPath2)" fill="none" x1="299" x2="299" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="299" x2="299" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="317" x2="317" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="317" x2="317" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="334" x2="334" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="334" x2="334" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="352" x2="352" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="352" x2="352" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="369" x2="369" y1="26" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="369" x2="369" y1="457" y2="453"/>
<text x="366" font-size="8" y="24" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">40</text>
<text x="366" font-size="8" y="466" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">40</text>
<line clip-path="url(#clipPath2)" fill="none" x1="387" x2="387" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="387" x2="387" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="404" x2="404" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="404" x2="404" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="421" x2="421" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="421" x2="421" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="439" x2="439" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="439" x2="439" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="456" x2="456" y1="26" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="456" x2="456" y1="457" y2="453"/>
<text x="453" font-size="8" y="24" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">50</text>
<text x="453" font-size="8" y="466" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">50</text>
<line clip-path="url(#clipPath2)" fill="none" x1="474" x2="474" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="474" x2="474" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="491" x2="491" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="491" x2="491" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="509" x2="509" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="509" x2="509" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="526" x2="526" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="526" x2="526" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="543" x2="543" y1="26" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="543" x2="543" y1="457" y2="453"/>
<text x="540" font-size="8" y="24" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">60</text>
<text x="540" font-size="8" y="466" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">60</text>
<line clip-path="url(#clipPath2)" fill="none" x1="561" x2="561" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="561" x2="561" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="578" x2="578" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="578" x2="578" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="596" x2="596" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="596" x2="596" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="613" x2="613" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="613" x2="613" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="631" x2="631" y1="26" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="631" x2="631" y1="457" y2="453"/>
<text x="628" font-size="8" y="24" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">70</text>
<text x="628" font-size="8" y="466" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">70</text>
<line clip-path="url(#clipPath2)" fill="none" x1="648" x2="648" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="648" x2="648" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="666" x2="666" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="666" x2="666" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="683" x2="683" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="683" x2="683" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="700" x2="700" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="700" x2="700" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="718" x2="718" y1="26" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="718" x2="718" y1="457" y2="453"/>
<text x="715" font-size="8" y="24" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">80</text>
<text x="715" font-size="8" y="466" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">80</text>
<line clip-path="url(#clipPath2)" fill="none" x1="735" x2="735" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="735" x2="735" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="753" x2="753" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="753" x2="753" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="770" x2="770" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="770" x2="770" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="788" x2="788" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="788" x2="788" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="805" x2="805" y1="26" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="805" x2="805" y1="457" y2="453"/>
<text x="802" font-size="8" y="24" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">90</text>
<text x="802" font-size="8" y="466" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">90</text>
<line clip-path="url(#clipPath2)" fill="none" x1="822" x2="822" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="822" x2="822" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="840" x2="840" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="840" x2="840" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="857" x2="857" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="857" x2="857" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="875" x2="875" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="875" x2="875" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="892" x2="892" y1="26" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="892" x2="892" y1="457" y2="453"/>
<text x="887" font-size="8" y="24" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">100</text>
<text x="887" font-size="8" y="466" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">100</text>
<line clip-path="url(#clipPath2)" fill="none" x1="910" x2="910" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="910" x2="910" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="927" x2="927" y1="28" y2="30"/>
<line clip-path="url(#clipPath2)" fill="none" x1="927" x2="927" y1="455" y2="453"/>
<line clip-path="url(#clipPath2)" fill="none" x1="19" x2="19" y1="32" y2="451"/>
<line clip-path="url(#clipPath2)" fill="none" x1="932" x2="932" y1="32" y2="451"/>
<line clip-path="url(#clipPath2)" fill="none" x1="15" x2="19" y1="451" y2="451"/>
<line clip-path="url(#clipPath2)" fill="none" x1="936" x2="932" y1="451" y2="451"/>
<text x="10" font-size="8" y="455" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">0</text>
<text x="939" font-size="8" y="455" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">0</text>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="436" y2="436"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="436" y2="436"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="421" y2="421"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="421" y2="421"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="406" y2="406"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="406" y2="406"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="391" y2="391"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="391" y2="391"/>
<line clip-path="url(#clipPath2)" fill="none" x1="15" x2="19" y1="376" y2="376"/>
<line clip-path="url(#clipPath2)" fill="none" x1="936" x2="932" y1="376" y2="376"/>
<text x="10" font-size="8" y="380" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">5</text>
<text x="939" font-size="8" y="380" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">5</text>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="361" y2="361"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="361" y2="361"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="346" y2="346"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="346" y2="346"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="331" y2="331"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="331" y2="331"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="317" y2="317"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="317" y2="317"/>
<line clip-path="url(#clipPath2)" fill="none" x1="15" x2="19" y1="302" y2="302"/>
<line clip-path="url(#clipPath2)" fill="none" x1="936" x2="932" y1="302" y2="302"/>
<text x="6" font-size="8" y="306" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">10</text>
<text x="939" font-size="8" y="306" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">10</text>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="287" y2="287"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="287" y2="287"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="272" y2="272"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="272" y2="272"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="257" y2="257"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="257" y2="257"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="242" y2="242"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="242" y2="242"/>
<line clip-path="url(#clipPath2)" fill="none" x1="15" x2="19" y1="227" y2="227"/>
<line clip-path="url(#clipPath2)" fill="none" x1="936" x2="932" y1="227" y2="227"/>
<text x="6" font-size="8" y="231" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">15</text>
<text x="939" font-size="8" y="231" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">15</text>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="212" y2="212"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="212" y2="212"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="198" y2="198"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="198" y2="198"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="183" y2="183"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="183" y2="183"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="168" y2="168"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="168" y2="168"/>
<line clip-path="url(#clipPath2)" fill="none" x1="15" x2="19" y1="153" y2="153"/>
<line clip-path="url(#clipPath2)" fill="none" x1="936" x2="932" y1="153" y2="153"/>
<text x="6" font-size="8" y="157" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">20</text>
<text x="939" font-size="8" y="157" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">20</text>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="138" y2="138"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="138" y2="138"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="123" y2="123"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="123" y2="123"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="108" y2="108"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="108" y2="108"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="93" y2="93"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="93" y2="93"/>
<line clip-path="url(#clipPath2)" fill="none" x1="15" x2="19" y1="79" y2="79"/>
<line clip-path="url(#clipPath2)" fill="none" x1="936" x2="932" y1="79" y2="79"/>
<text x="6" font-size="8" y="83" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">25</text>
<text x="939" font-size="8" y="83" clip-path="url(#clipPath2)" stroke="none" xml:space="preserve">25</text>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="64" y2="64"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="64" y2="64"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="49" y2="49"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="49" y2="49"/>
<line clip-path="url(#clipPath2)" fill="none" x1="17" x2="19" y1="34" y2="34"/>
<line clip-path="url(#clipPath2)" fill="none" x1="934" x2="932" y1="34" y2="34"/>
</g>
</g>
</svg>
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
#include <unordered_map>
#include <omnetpp.h>
#include "inet/applications/httptools/server/HttpServer.h"
#include "inet/applications/httptools/browser/HttpBrowser.h"
#include "lru_h.hpp"
namespace omnetpp {
/*
* Modified for debugging!
* - HttpServerBase.cc::updateDisplay()
* Modified sprintf to be as follows:
* sprintf(buf, "htm: %ld, img: %ld, txt: %ld", htmlDocsServed, imgResourcesServed, textResourcesServed);
*/
/*
* CDNBrowser Implementation
*/
class CDNBrowser : public inet::httptools::HttpBrowser {
public:
virtual void handleMessage(cMessage *msg) override;
virtual void socketDataArrived(int connId, void *yourPtr, cPacket *msg, bool urgent) override;
};
void CDNBrowser::handleMessage(cMessage *msg) {
inet::httptools::HttpRequestMessage *msg2 = dynamic_cast<inet::httptools::HttpRequestMessage *>(msg);
if (msg2 == nullptr) {
inet::httptools::HttpBrowser::handleMessage(msg);
} else {
this->sendRequestToServer(msg2);
}
}
void CDNBrowser::socketDataArrived(int connId, void *yourPtr, cPacket *msg, bool urgent) {
if (yourPtr == nullptr) { EV_ERROR << "socketDataArrivedfailure. Null pointer" << endl; return; }
EV_DEBUG << "CDNBrowser: Socket data arrived on connection " << connId << ": " << msg->getName() << endl;
SockData *sockdata = (SockData *)yourPtr;
inet::TCPSocket *socket = sockdata->socket;
// Send client data to consumer
this->sendDirect(msg, this->getParentModule()->getSubmodule("tcpApp", 0), 0);
if (--sockdata->pending == 0) {
EV_DEBUG << "Received last expected reply on this socket. Issuing a close" << endl;
socket->close();
}
// Message deleted in handler - do not delete here!
}
/*
* CDNServer Implementation
*/
class CDNServer : public inet::httptools::HttpServer {
public:
CDNServer();
~CDNServer();
protected:
struct Remember {
inet::TCPSocket *sock;
std::string slug;
int serial;
};
std::map<int, Remember> sockMap;
cache::lru_cache<std::string, std::string> lru;
virtual void socketDataArrived(int connId, void *yourPtr, cPacket *msg, bool urgent) override;
virtual void handleMessage(cMessage *msg) override;
};
CDNServer::CDNServer() : lru(2) {}; // TODO: parse 2 from model parameters
CDNServer::~CDNServer() {
// This is crashing when closing the Simulation
// for (auto & elem : sockMap) delete elem.second;
// sockMap.clear();
};
void CDNServer::handleMessage(cMessage *msg) {
inet::httptools::HttpReplyMessage *msg2 = dynamic_cast<inet::httptools::HttpReplyMessage *>(msg);
if (msg2 == nullptr) {
inet::httptools::HttpServer::handleMessage(msg);
} else {
Remember memory = sockMap.find(msg2->serial())->second;
EV_INFO << "FOUND SOCKET!!!" << msg2->serial() << " " << memory.sock->getState() << endl;
inet::httptools::HttpReplyMessage *res = new inet::httptools::HttpReplyMessage(*msg2);
res->setOriginatorUrl(hostName.c_str());
res->setSerial(memory.serial);
EV_INFO << "CDNServer: Returning Content 1 '" << msg2->targetUrl() << "' '" << msg2->originatorUrl() << "'" << msg2->heading() << endl;
EV_INFO << "CDNServer: Returning Content 2 '" << res->targetUrl() << "' '" << res->originatorUrl() << "'" << endl;
memory.sock->send(res);
lru.put(memory.slug, msg2->payload());
EV_INFO << "CDNServer: Caching Resource" << memory.slug << endl;
delete msg;
}
};
void CDNServer::socketDataArrived(int connId, void *yourPtr, cPacket *msg, bool urgent) {
if (yourPtr == nullptr) { EV_ERROR << "Socket establish failure. Null pointer" << endl; return; }
EV_DEBUG << "CDNServer: Socket data arrived on connection " << connId << ". Message=" << msg->getName() << ", kind=" << msg->getKind() << endl;
inet::TCPSocket *socket = (inet::TCPSocket *)yourPtr;
// Process message
inet::httptools::HttpRequestMessage *request = check_and_cast<inet::httptools::HttpRequestMessage *>(msg);
std::string resource = cStringTokenizer(request->heading(), " ").asVector()[1];
// Search Cache
if (!lru.exists(resource)) {
// Create Origin Lookup Request
inet::httptools::HttpRequestMessage *newRequest = new inet::httptools::HttpRequestMessage(*request);
newRequest->setTargetUrl("origin.example.org");
newRequest->setSerial(socket->getConnectionId());
EV_INFO << "CDNServer: Requesting Content 1'" << request->targetUrl() << "' '" << request->originatorUrl() << "'"<< request->heading() << endl;
EV_INFO << "CDNServer: Requesting Content 2'" << newRequest->targetUrl() << "' '" << newRequest->originatorUrl() << "'" << request->heading() << endl;
this->sendDirect(newRequest, this->getParentModule()->getSubmodule("tcpApp", 1), 0);
sockMap[connId].sock = socket;
sockMap[connId].slug = resource;
sockMap[connId].serial = request->serial();
} else {
// Directly respond
EV_INFO << "CDNServer: Found Resource " << resource << endl;
char szReply[512];
sprintf(szReply, "HTTP/1.1 200 OK (%s)", resource.c_str());
inet::httptools::HttpReplyMessage *replymsg = new inet::httptools::HttpReplyMessage(szReply);
replymsg->setHeading("HTTP/1.1 200 OK");
replymsg->setOriginatorUrl(hostName.c_str());
replymsg->setTargetUrl(request->originatorUrl());
replymsg->setProtocol(request->protocol());
replymsg->setSerial(request->serial());
replymsg->setResult(200);
replymsg->setContentType(inet::httptools::CT_HTML); // Emulates the content-type header field
replymsg->setKind(HTTPT_RESPONSE_MESSAGE);
std::string body = lru.get(resource);
replymsg->setPayload(body.c_str());
replymsg->setByteLength(body.length());
socket->send(replymsg);
}
// Update service stats
switch (inet::httptools::getResourceCategory(inet::httptools::parseResourceName(resource))) {
case inet::httptools::CT_HTML: htmlDocsServed++; break;
case inet::httptools::CT_TEXT: textResourcesServed++; break;
case inet::httptools::CT_IMAGE: imgResourcesServed++; break;
default: EV_WARN << "CDNServer: Received Unknown request type: " << resource << endl; break;
};
delete msg; // Delete the received message here. Must not be deleted in the handler!
};
/*
* StatsBrowser Implementation
*/
class StatsBrowser : public inet::httptools::HttpBrowser {
protected:
static simsignal_t rcvdPkSignal;
// virtual void handleDataMessage(cMessage *msg) override;
};
simsignal_t StatsBrowser::rcvdPkSignal = registerSignal("rcvdPk");
//void StatsBrowser::handleDataMessage(cMessage *msg) {
// EV << "NATE!!!" << endl;
// inet::httptools::HttpBrowser::handleDataMessage(msg);
//};
// emit(rcvdPkSignal, msg);
Define_Module(CDNServer);
Define_Module(CDNBrowser);
Define_Module(StatsBrowser);
};
# Format: {time};{www name};{event kind};{p value};{amortization factor}
# Event kind is not used at the present -- use 1 as a default value.
[default]
0;cdn1.example.org;1;0.5;0
0;cdn2.example.org;1;0.5;0
0;origin.example.org;1;0;0
package csci_566_proj_1;
import inet.applications.httptools.configurator.HttpController;
import inet.networklayer.configurator.ipv4.IPv4NetworkConfigurator;
import inet.node.inet.Router;
import inet.node.inet.StandardHost;
import inet.applications.contract.ITCPApp;
import inet.applications.httptools.browser.HttpBrowser;
channel ethernetline extends ned.DatarateChannel {
parameters:
delay = 0.1us;
datarate = 100Mbps;
}
simple CDNServer like ITCPApp {
parameters:
string hostName = default(""); // The domain name of the server
int port = default(80); // The listening port number
int httpProtocol = default(11); // The http protocol: 10 for http/1.0, 11 for http/1.1. Not used at the present time.
string logFile = default(""); // Name of server log file. Events are appended, allowing sharing of file for multiple servers.
string siteDefinition = default(""); // The site script file. Blank to disable.
double activationTime @unit("s") = default(0s); // The initial activation delay. Zero to disable.
xml config; // The XML configuration file for random sites
gates:
input responses @directIn; // CDNBrowser calls back into this
input tcpIn;
output tcpOut;
}
simple CDNBrowser like ITCPApp {
parameters:
int httpProtocol = default(11); // The http protocol: 10 for http/1.0, 11 for http/1.1. Not used at the present time.
string logFile = default(""); // Name of a browser log file. Browse events are appended, allowing sharing of file for multiple browsers.
string scriptFile = default(""); // The browsing script file. Blank to disable.
double activationTime @unit("s") = default(0s); // The initial activation delay. Zero to disable. This is the time at which the browser first comes to life in a simulation scenario. Note that this can be any random distribution which OMNeT++ supports.
xml config; // The XML config file
string httpBrowserControllerModule = default("controller"); // the absolute path to the http browser controller, @see HttpController
gates:
input requests @directIn; // CDNServer makes requests into here
input tcpIn;
output tcpOut;
}
simple StatsBrowser extends HttpBrowser {
parameters:
@signal[rcvdPk](type=cPacket);
@statistic[endToEndDelay](title="end-to-end delay"; source="messageAge(rcvdPk)"; unit=s; record=histogram,vector; interpolationmode=none);
}
network QuestionB {
parameters:
double numclients @prompt("Number of clients") = default(1);
@display("bgb=1000,600;bgl=4");
submodules:
configurator: IPv4NetworkConfigurator {
parameters:
@display("p=50,50;i=block/cogwheel");
}
controller: HttpController {
parameters:
@display("p=100,50;i=block/cogwheel");
}
origin: StandardHost {
parameters:
@display("i=device/server_l;p=950,50");
}
router_3: Router {
parameters:
@display("i=abstract/router_l;p=500,50");
}
server1: StandardHost {
parameters:
@display("i=device/server_l;p=950,300");
}
server2: StandardHost {
parameters:
@display("i=device/server_l;p=50,300");
}
router_2: Router {
parameters:
@display("i=abstract/router_l;p=500,300");
}
router_1: Router {
parameters:
@display("i=abstract/router_l;p=500,550");
}
client[numclients]: StandardHost {
parameters:
@display("i=device/laptop_l;p=950,550");
}
connections:
router_1.ethg++ <--> ethernetline <--> router_2.ethg++;
router_2.ethg++ <--> ethernetline <--> router_3.ethg++;
origin.ethg++ <--> ethernetline <--> router_3.ethg++;
server1.ethg++ <--> ethernetline <--> router_2.ethg++;
server2.ethg++ <--> ethernetline <--> router_2.ethg++;
for i=0..numclients-1 {
client[i].ethg++ <--> ethernetline <--> router_1.ethg++;
}
}
0;origin.example.org
<?xml version="1.0" encoding="UTF-8"?>
<root>
<user-profile id="normal">
<activityPeriod type='normal' mean='28800' sd='10800' min='7200' />
<interRequestInterval type='normal' mean='600' sd='60' nonNegative='true' min='60.0' />
<interSessionInterval type='normal' mean='3600' sd='1800' nonNegative='true' min='120.0' />
<requestSize type='normal' mean='600' sd='100' nonNegative='true' min='300' />
<reqInSession type='normal' mean='10' sd='5' nonNegative='true' min='2' />
<processingDelay type='normal' mean='0.05' sd='0.01' nonNegative='true' />
</user-profile>
<server-profile id="normal">
<htmlPageSize type='exponential' mean='2000' min='1000' />
<replyDelay type='normal' mean='0.05' sd='0.01' nonNegative='true' min='0.01' />
<textResourceSize type='exponential' mean='10000' min='1000' max='100000' />
<imageResourceSize type='exponential' mean='20000' min='1000' max='500000' />
<numResources type='uniform' beginning='0' end='20' />
<textImageResourceRatio type='uniform' beginning='0.2' end='0.8' />
<errorMessageSize type="constant" value="1024" />
</server-profile>
<controller-profile id="uniform">
<serverPopularityDistribution type='uniform' beginning="0" end="" />
</controller-profile>
</root>
#! /bin/bash
set -e # fail whole thing
set -o pipefail # fail pipes
echo "Building local package"
make CONFIGNAME=gcc-debug
echo "Building inet package"
pushd ../inet/src > /dev/null
make CONFIGNAME=gcc-debug all
popd > /dev/null
echo "Starting simulation"
CSCI_566_proj_1 -c QuestionB -n .:../inet/src -l ../inet/src/INET | sed '/Could not load image/d'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment