Support fabric 1.0.4 now

pull/108/head
Baohua Yang 2017-11-02 10:19:05 +08:00
parent e88a8b3118
commit e6c4c8232e
251 changed files with 5911 additions and 10 deletions

View File

@ -0,0 +1,150 @@
# mode of the network: solo, kafka, couchdb, dev
HLF_MODE ?= solo
CODE_BUILD_WAIT=2
NETWORK_INIT_WAIT=2
COMPOSE_FILE ?= "docker-compose-2orgs-4peers-solo.yaml"
ifeq ($(HLF_MODE),kafka)
COMPOSE_FILE="docker-compose-2orgs-4peers-kafka.yaml"
else ifeq ($(HLF_MODE),couchdb)
COMPOSE_FILE="docker-compose-2orgs-4peers-couchdb.yaml"
else ifeq ($(HLF_MODE),dev)
COMPOSE_FILE="docker-compose-1orgs-1peers-dev.yaml"
endif
all:
@echo "Run test with $(COMPOSE_FILE)"
@echo "Please make sure u have setup Docker and pulled images by 'make setup'."
sleep 2
make ready
make lscc qscc fetch_block
make stop clean
ready: restart
@echo "Restart, init network and then do cc testing..."
if [ "$(HLF_MODE)" = "dev" ]; then \
echo "In DEV mode, wait for rebuilding ..." && sleep $(CODE_BUILD_WAIT); \
make init_peer0; \
sleep $(NETWORK_INIT_WAIT); \
make test_cc_peer0; \
else \
echo "In Normal mode ..." && sleep 3; \
make init; \
sleep $(NETWORK_INIT_WAIT); \
make test_cc_all; \
fi
@echo "Now the fabric network is ready to play"
@echo "run 'make cli' to enter into the fabric-cli container."
@echo "run 'make stop' when done."
start: # bootup the fabric network
@echo "Start a fabric network with ${COMPOSE_FILE}"
make clean
docker-compose -f ${COMPOSE_FILE} up -d # Start a fabric network
init: # initialize the fabric network
@echo "Install and instantiate cc example02 on the fabric network"
docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/initialize_all.sh"
init_peer0: # initialize the fabric network
@echo "Install and instantiate cc example02 on the fabric dev network"
docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/initialize_peer0.sh"
stop: # stop the fabric network
@echo "Stop the fabric network"
docker-compose -f ${COMPOSE_FILE} down # Stop a fabric network
restart: stop start
chaincode_dev: restart chaincode_init test_cc_peer0 stop
################## Chaincode testing operations ################
test_cc_all: # test user chaincode on all peers
@echo "Invoke and query cc example02 on all peers"
docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_all.sh"
test_cc_peer0: # test single peer
@echo "Invoke and query cc example02 on single peer0"
docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_peer0.sh"
qscc: # test qscc queries
docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_qscc.sh"
lscc: # test lscc quries
docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_lscc.sh"
fetch_block: # test channel fetch
docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_fetch.sh"
docker cp fabric-cli:/tmp/block_0.block kafka/channel-artifacts/
docker cp fabric-cli:/tmp/block_1.block kafka/channel-artifacts/
docker cp fabric-cli:/tmp/block_2.block kafka/channel-artifacts/
docker cp fabric-cli:/tmp/block_3.block kafka/channel-artifacts/
################## Env setup related, no need to see usually ################
setup: # setup the environment
bash scripts/setup_Docker.sh # Install Docker, Docker-Compose
bash scripts/download_images.sh # Pull required Docker images
clean: # clean up containers
@echo "Clean all containers and fabric cc images"
@-docker rm -f `docker ps -qa`
@-docker rmi $$(docker images | awk '$$1 ~ /dev-peer/ { print $$3}')
clean_env: # clean up environment
@echo "Clean all images and containers"
bash scripts/clean_env.sh
cli: # enter the cli container
docker exec -it fabric-cli bash
peer: # enter the peer container
docker exec -it peer0.org1.example.com bash
dev_compile: # rebuild the peer
docker exec -it peer0.org1.example.com bash /tmp/peer_build.sh
ps: # show existing docker images
docker ps -a
logs: # show logs
docker-compose -f ${COMPOSE_FILE} logs -f --tail 200
logs_check: logs_save logs_view
logs_save: # save logs
docker logs peer0.org1.example.com >& /tmp/dev_peer.log
docker logs orderer.example.com >& /tmp/dev_orderer.log
docker-compose -f ${COMPOSE_FILE} logs >& /tmp/dev_all.log
logs_view: # view logs
less /tmp/dev_peer.log
gen_solo: # generate solo artifacts
cd solo && bash gen_artifacts.sh
gen_kafka: # generate kafka artifacts
cd kafka && bash gen_artifacts.sh
configtxlator: # run configtxlator
cd kafka && bash run_configtxlator.sh
download: # download required images
@echo "Download Docker images"
docker pull yeasy/hyperledger-fabric:latest
docker pull yeasy/hyperledger-fabric-kafka:0.10.2.0 # official repo does not provide the latest image currently
docker pull hyperledger/fabric-baseos:x86_64-0.4.2
docker tag yeasy/hyperledger-fabric:latest hyperledger/fabric-ccenv:x86_64-1.1.0
################## chaincode dev mode ################
chaincode_init: # start chaincode in dev mode and do install/instantiate
@echo "Install and instantiate cc example02 on the fabric dev network"
docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/init_chaincode_dev.sh"

View File

@ -0,0 +1,144 @@
# Hyperledger fabric 1.0.4
Here we show steps on how to setup a fabric 1.0.4 network on Linux (e.g., Ubuntu/Debian), and then use it to run chaincode tests.
If you're not familiar with Docker and Blockchain technology yet, feel free to have a look at 2 books (in CN):
* [Docker Practice](https://github.com/yeasy/docker_practice)
* [Blockchain Guide](https://github.com/yeasy/blockchain_guide)
## Pass-through
The following command will run the entire process (start a fabric network, create channel, test chaincode and stop it.) pass-through.
```sh
$ make setup # install docker/compose, and pull required images
$ make all
```
tldr :)
`make all` actually call following command sequentially.
* `make start`
* `make init`
* `make test_cc`
* `make stop`
Otherwise, if u wanna know more or run the command manually, then go on reading the following part.
## Environment Setup
The following scripts will setup the environment by installing Docker, Docker-Compose and download required docker images.
```sh
$ make setup # setup environment
```
If you want to setup the environment manually, then have a look at [manually setup](docs/setup.md).
## Bootup Fabric Network
Start a 4 peer (belonging to 2 organizations) fabric network.
```sh
$ make start # Start a fabric network
```
The script actually uses docker-compose to boot up the fabric network with several containers.
There will be 7 running containers, include 4 peers, 1 cli, 1 ca and 1 orderer.
```bash
$ make ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1dc3f2557bdc hyperledger/fabric-tools "bash -c 'while tr..." 25 minutes ago Up 25 minutes fabric-cli
5e5f37a0ed3c hyperledger/fabric-peer "peer node start" 25 minutes ago Up 25 minutes 7050/tcp, 7054-7059/tcp, 0.0.0.0:8051->7051/tcp, 0.0.0.0:8052->7052/tcp, 0.0.0.0:8053->7053/tcp peer1.org1.example.com
6cce94da6392 hyperledger/fabric-peer "peer node start" 25 minutes ago Up 25 minutes 7050/tcp, 7054-7059/tcp, 0.0.0.0:9051->7051/tcp, 0.0.0.0:9052->7052/tcp, 0.0.0.0:9053->7053/tcp peer0.org2.example.com
e36c5e8d56c5 hyperledger/fabric-peer "peer node start" 25 minutes ago Up 25 minutes 7050/tcp, 7054-7059/tcp, 0.0.0.0:7051-7053->7051-7053/tcp peer0.org1.example.com
1fdd3d2b6527 hyperledger/fabric-orderer "orderer start" 25 minutes ago Up 25 minutes 0.0.0.0:7050->7050/tcp orderer.example.com
8af323340651 hyperledger/fabric-ca "fabric-ca-server ..." 25 minutes ago Up 25 minutes 0.0.0.0:7054->7054/tcp fabric-ca
e41d8bca7fe5 hyperledger/fabric-peer "peer node start" 25 minutes ago Up 25 minutes 7050/tcp, 7054-7059/tcp, 0.0.0.0:10051->7051/tcp, 0.0.0.0:10052->7052/tcp, 0.0.0.0:10053->7053/tcp peer1.org2.example.com
```
### Initialize Fabric network
```bash
$ make init # Start a fabric network
```
The command actually calls the `./scripts/initialize.sh` script in the `fabric-cli` container to:
* create a new application channel `businesschannel`
* join all peers into the channel
* install and instantiate chaincode `example02` for testing
This script only needs to be executed once.
You should see result like the following if the initialization is successful.
```bash
==============================================
==========initialize businesschannel==========
==============================================
Channel name : businesschannel
Creating channel...
...
===================== All GOOD, initialization completed =====================
```
And there will be new chaincode container generated in the system, looks like
```bash
$ make ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9971c9fd1971 dev-peer1.org2.example.com-mycc-1.0 "chaincode -peer.a..." 54 seconds ago Up 53 seconds dev-peer1.org2.example.com-mycc-1.0
e3092961b81b dev-peer1.org1.example.com-mycc-1.0 "chaincode -peer.a..." About a minute ago Up About a minute dev-peer1.org1.example.com-mycc-1.0
57d3555f56e5 dev-peer0.org2.example.com-mycc-1.0 "chaincode -peer.a..." About a minute ago Up About a minute dev-peer0.org2.example.com-mycc-1.0
c9974dbc21d9 dev-peer0.org1.example.com-mycc-1.0 "chaincode -peer.a..." 23 minutes ago Up 23 minutes dev-peer0.org1.example.com-mycc-1.0
```
## Test Chaincode
```bash
$ make test_cc # test invoke and query with chaincode
```
More details, see [chaincode test](docs/chaincode_test.md).
## Stop the network
```bash
$ make stop # stop the fabric network
```
## Clean environment
Clean all related containers and images.
```bash
$ make clean # clean the environment
```
## More to learn
Topics | Description
-- | --
[Detailed Explanation](./docs/detailed_steps.md) | Explain in detail how a 1-peer network start and test.
[Fetch blocks](docs/peer_cmds.md) | Fetch blocks using `peer channel fetch` cmd.
[Use Events](./docs/events.md) | Get events with block-listener
[Artifacts Generation](docs/artifacts_generation.md) | Will explain the usage of `cryptogen` and `configtxgen` to prepare the artifacts for booting the fabric network.
[couchDB](docs/couchdb_usage.md) | Use couchDB as the state DB.
[kafka](./kafka/README.md) | Use kafka as the ordering backend
[configtxlator](docs/configtxlator.md) | Use configtxlator to convert the configurations
[WIP] [Some verification tests](docs/verification_test.md) |
## Acknowledgement
* [Hyperledger Fabric](https://github.com/hyperledger/fabric/) project.
* [Hyperledger Fabric Getting Started](http://hyperledger-fabric.readthedocs.io/en/latest/getting_started.html).

View File

@ -0,0 +1,97 @@
# This is the development compose file to config env and command
# Notice that chaincode is executed inside docker in default net mode
# https://github.com/yeasy/docker-compose-files
# Depends on the yeasy/hyperledger-fabric image.
version: '2'
services:
orderer.example.com: # There can be multiple orderers
extends:
file: base.yaml
service: orderer-base
image: yeasy/hyperledger-fabric:1.0.4
container_name: orderer.example.com
hostname: orderer.example.com
ports:
- "7050:7050"
environment:
# Kafka related configurations
- ORDERER_KAFKA_RETRY_SHORTINTERVAL=1s
- ORDERER_KAFKA_RETRY_SHORTTOTAL=30s
- ORDERER_KAFKA_VERBOSE=true
volumes:
- $GOPATH/src/github.com/hyperledger/fabric:/go/src/github.com/hyperledger/fabric
# for solo case
#- ./solo/channel-artifacts/orderer.genesis.block:/var/hyperledger/orderer/orderer.genesis.block
#- ./solo/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
#- ./solo/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
# for kafka case
- ./kafka/channel-artifacts/orderer.genesis.block:/var/hyperledger/orderer/orderer.genesis.block
- ./kafka/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
- ./kafka/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
#command: bash -c 'bash /tmp/orderer_build.sh; orderer start' # use this if to debug orderer
command: bash -c 'orderer start' # use this if to debug orderer
peer0.org1.example.com:
extends:
file: base.yaml
service: peer-base
image: yeasy/hyperledger-fabric:1.0.4
container_name: peer0.org1.example.com
hostname: peer0.org1.example.com
environment:
- CORE_PEER_ID=peer0.org1.example.com
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
volumes:
- $GOPATH/src/github.com/hyperledger/fabric:/go/src/github.com/hyperledger/fabric
# e2e mode configuration
#- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
#- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
# kafka mode configuration
- ./kafka/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
- ./kafka/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 7051:7051
- 7052:7052
- 7053:7053
#command: bash -c 'bash /tmp/peer_build.sh; peer node start'
command: bash -c 'peer node start'
#command: bash -c 'peer node start --peer-chaincodedev=true' # DEV mode
cli:
extends:
file: base.yaml
service: cli-base
image: yeasy/hyperledger-fabric:1.0.4
container_name: fabric-cli
hostname: fabric-cli
tty: true
environment:
- CORE_PEER_ID=fabric-cli
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # default to operate on peer0.org1
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
volumes:
- $GOPATH/src/github.com/hyperledger/fabric:/opt/gopath/src/github.com/hyperledger/fabric
#- /tmp/:/tmp/
- ./scripts:/tmp/scripts
# e2e mode configuration
#- ./solo/channel-artifacts:/tmp/channel-artifacts
#- ./solo/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
#- ./solo/crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
#- ./solo/crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto
#- ./solo/examples:/opt/gopath/src/github.com/hyperledger/fabric/examples
# kafka mode configuration
- ./kafka/channel-artifacts:/tmp/channel-artifacts
- ./kafka/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
- ./kafka/crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
- ./kafka/crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto
- ./kafka/examples:/opt/gopath/src/github.com/hyperledger/fabric/examples

View File

@ -0,0 +1,256 @@
# All elements in this file should depend on the base.yaml
# Provided a Kafka enabled fabric network with:
# ca.org1.example.com
# ca.org2.example.com
# orderer.example.com
# peer0.org1.example.com
# peer1.org1.example.com
# peer0.org2.example.com
# peer1.org2.example.com
# 3 zookeeper nodes
# 4 kafka nodes
# cli
version: '2' # v3 does not support 'extends' yet
services:
ca.org1.example.com:
extends:
file: base.yaml
service: ca-base
container_name: ca.org1.example.com
hostname: ca.org1.example.com
environment:
- FABRIC_CA_SERVER_CA_NAME=ca-org1
- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem
- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/c843d3f021118963ce5d340e95286e8869bb7bd051454cd4166aa2887a2ad451_sk
ports:
- "7054:7054"
volumes:
- ./kafka/crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/c843d3f021118963ce5d340e95286e8869bb7bd051454cd4166aa2887a2ad451_sk -b admin:adminpw -d'
ca.org2.example.com:
extends:
file: base.yaml
service: ca-base
container_name: ca.org2.example.com
hostname: ca.org2.example.com
environment:
- FABRIC_CA_SERVER_CA_NAME=ca-org2
- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem
- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/1ee551a8753171c0377366e96a1d7ec01afddb868c9483cc501b6f8ac7ae752f_sk
ports:
- "8054:7054"
volumes:
- ./kafka/crypto-config/peerOrganizations/org2.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/1ee551a8753171c0377366e96a1d7ec01afddb868c9483cc501b6f8ac7ae752f_sk -b admin:adminpw -d'
orderer.example.com: # There can be multiple orderers
extends:
file: base.yaml
service: orderer-base
container_name: orderer.example.com
hostname: orderer.example.com
ports:
- "7050:7050"
environment:
# Kafka related configurations
- ORDERER_KAFKA_RETRY_SHORTINTERVAL=1s
- ORDERER_KAFKA_RETRY_SHORTTOTAL=30s
- ORDERER_KAFKA_VERBOSE=true
volumes:
- ./kafka/channel-artifacts/orderer.genesis.block:/var/hyperledger/orderer/orderer.genesis.block
- ./kafka/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
- ./kafka/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
command: orderer start
cli:
extends:
file: base.yaml
service: cli-base
container_name: fabric-cli
hostname: fabric-cli
tty: true
environment:
- CORE_PEER_ID=fabric-cli
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # default to operate on peer0.org1
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
volumes:
- ./scripts:/tmp/scripts
- ./kafka/channel-artifacts:/tmp/channel-artifacts
- ./kafka/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
- ./kafka/crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
- ./kafka/crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto
- ./kafka/examples:/opt/gopath/src/github.com/hyperledger/fabric/examples
## following are peer nodes ##
peer0.org1.example.com:
extends:
file: base.yaml
service: peer-base
container_name: peer0.org1.example.com
hostname: peer0.org1.example.com
environment:
- CORE_PEER_ID=peer0.org1.example.com
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
volumes:
- ./kafka/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
- ./kafka/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 7051:7051
- 7052:7052
- 7053:7053
peer1.org1.example.com:
extends:
file: base.yaml
service: peer-base
container_name: peer1.org1.example.com
hostname: peer1.org1.example.com
environment:
- CORE_PEER_ID=peer1.org1.example.com
- CORE_PEER_ADDRESS=peer1.org1.example.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer1.org1.example.com:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
volumes:
- ./kafka/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp
- ./kafka/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 8051:7051
- 8052:7052
- 8053:7053
peer0.org2.example.com:
extends:
file: base.yaml
service: peer-base
container_name: peer0.org2.example.com
hostname: peer0.org2.example.com
environment:
- CORE_PEER_ID=peer0.org2.example.com
- CORE_PEER_ADDRESS=peer0.org2.example.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org2.example.com:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:7051
- CORE_PEER_LOCALMSPID=Org2MSP
volumes:
- ./kafka/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp
- ./kafka/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 9051:7051
- 9052:7052
- 9053:7053
peer1.org2.example.com:
extends:
file: base.yaml
service: peer-base
container_name: peer1.org2.example.com
hostname: peer1.org2.example.com
environment:
- CORE_PEER_ID=peer1.org2.example.com
- CORE_PEER_ADDRESS=peer1.org2.example.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer1.org2.example.com:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org2.example.com:7051
- CORE_PEER_LOCALMSPID=Org2MSP
volumes:
- ./kafka/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp:/etc/hyperledger/fabric/msp
- ./kafka/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 10051:7051
- 10052:7052
- 10053:7053
# ZooKeeper services, at least 3 nodes
zookeeper0:
extends:
file: base.yaml
service: zookeeper-base
container_name: zookeeper0
hostname: zookeeper0
environment:
- ZOO_MY_ID=1
- ZOO_SERVERS=server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 server.3=zookeeper2:2888:3888
zookeeper1:
extends:
file: base.yaml
service: zookeeper-base
container_name: zookeeper1
hostname: zookeeper1
environment:
- ZOO_MY_ID=2
- ZOO_SERVERS=server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 server.3=zookeeper2:2888:3888
zookeeper2:
extends:
file: base.yaml
service: zookeeper-base
container_name: zookeeper2
hostname: zookeeper2
environment:
- ZOO_MY_ID=3
- ZOO_SERVERS=server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 server.3=zookeeper2:2888:3888
# Kafka services, at least 4 node to tolerant work with 1 node failure
kafka0:
extends:
file: base.yaml
service: kafka-base
container_name: kafka0
hostname: kafka0
environment:
- KAFKA_BROKER_ID=0
- KAFKA_MIN_INSYNC_REPLICAS=2
- KAFKA_DEFAULT_REPLICATION_FACTOR=3
- KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181
kafka1:
extends:
file: base.yaml
service: kafka-base
container_name: kafka1
hostname: kafka1
environment:
- KAFKA_BROKER_ID=1
- KAFKA_DEFAULT_REPLICATION_FACTOR=3
- KAFKA_MIN_INSYNC_REPLICAS=2
- KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181
kafka2:
extends:
file: base.yaml
service: kafka-base
container_name: kafka2
hostname: kafka2
environment:
- KAFKA_BROKER_ID=2
- KAFKA_DEFAULT_REPLICATION_FACTOR=3
- KAFKA_MIN_INSYNC_REPLICAS=2
- KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181
kafka3:
extends:
file: base.yaml
service: kafka-base
container_name: kafka3
hostname: kafka3
environment:
- KAFKA_BROKER_ID=3
- KAFKA_DEFAULT_REPLICATION_FACTOR=3
- KAFKA_MIN_INSYNC_REPLICAS=2
- KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181

View File

@ -0,0 +1,208 @@
# All elements in this file should depend on the base.yaml
# Provided solo-base fabric network with:
# ca.org1.example.com
# ca.org2.example.com
# orderer.example.com
# peer0.org1.example.com
# peer1.org1.example.com
# peer0.org2.example.com
# peer1.org2.example.com
# cli
version: '2' # v3 does not support 'extends' yet
services:
ca.org1.example.com: # ca node for org1
extends:
file: base.yaml
service: ca-base
container_name: ca.org1.example.com
hostname: ca.org1.example.com
environment:
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_CA_NAME=ca-org1
- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem
- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/c843d3f021118963ce5d340e95286e8869bb7bd051454cd4166aa2887a2ad451_sk
ports:
- "7054:7054"
volumes:
- ./solo/crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/c843d3f021118963ce5d340e95286e8869bb7bd051454cd4166aa2887a2ad451_sk -b admin:adminpw -d'
ca.org2.example.com: # ca node for org2
extends:
file: base.yaml
service: ca-base
container_name: ca.org2.example.com
hostname: ca.org2.example.com
environment:
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_CA_NAME=ca-org2
- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem
- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/1ee551a8753171c0377366e96a1d7ec01afddb868c9483cc501b6f8ac7ae752f_sk
ports:
- "8054:7054"
volumes:
- ./solo/crypto-config/peerOrganizations/org2.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/1ee551a8753171c0377366e96a1d7ec01afddb868c9483cc501b6f8ac7ae752f_sk -b admin:adminpw -d'
orderer.example.com: # orderer node for example org
extends:
file: base.yaml
service: orderer-base
container_name: orderer.example.com
hostname: orderer.example.com
environment:
- ORDERER_GENERAL_TLS_ENABLED=true
ports:
- "7050:7050"
volumes:
- ./solo/channel-artifacts/orderer.genesis.block:/var/hyperledger/orderer/orderer.genesis.block
- ./solo/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
- ./solo/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
command: orderer start
cli: # client node
extends:
file: base.yaml
service: cli-base
container_name: fabric-cli
hostname: fabric-cli
tty: true
environment:
#- GOPATH=/opt/gopath
- CORE_PEER_ID=fabric-cli
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # default to operate on peer0.org1
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
- CORE_PEER_TLS_ENABLED=true # to enable TLS, change to true
volumes:
#- ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/
- ./scripts:/tmp/scripts
- ./solo/channel-artifacts:/tmp/channel-artifacts
- ./solo/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
- ./solo/crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
- ./solo/crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto
- ./solo/examples:/opt/gopath/src/github.com/hyperledger/fabric/examples
## following are peer nodes ##
peer0.org1.example.com:
extends:
file: base.yaml
service: peer-base
container_name: peer0.org1.example.com
hostname: peer0.org1.example.com
environment:
- CORE_PEER_ID=peer0.org1.example.com
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_ENABLED=true
volumes:
- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 7051:7051
- 7052:7052
- 7053:7053
peer1.org1.example.com:
extends:
file: base.yaml
service: peer-base
container_name: peer1.org1.example.com
hostname: peer1.org1.example.com
environment:
- CORE_PEER_ID=peer1.org1.example.com
- CORE_PEER_ADDRESS=peer1.org1.example.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer1.org1.example.com:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_ENABLED=true
volumes:
- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp
- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 8051:7051
- 8052:7052
- 8053:7053
peer0.org2.example.com:
extends:
file: base.yaml
service: peer-base
container_name: peer0.org2.example.com
hostname: peer0.org2.example.com
environment:
- CORE_PEER_ID=peer0.org2.example.com
- CORE_PEER_ADDRESS=peer0.org2.example.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org2.example.com:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:7051
- CORE_PEER_LOCALMSPID=Org2MSP
- CORE_PEER_TLS_ENABLED=true
volumes:
- ./solo/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp
- ./solo/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 9051:7051
- 9052:7052
- 9053:7053
peer1.org2.example.com:
extends:
file: base.yaml
service: peer-base
container_name: peer1.org2.example.com
hostname: peer1.org2.example.com
environment:
- CORE_PEER_ID=peer1.org2.example.com
- CORE_PEER_ADDRESS=peer1.org2.example.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer1.org2.example.com:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org2.example.com:7051
- CORE_PEER_LOCALMSPID=Org2MSP
- CORE_PEER_TLS_ENABLED=true
volumes:
- ./solo/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp:/etc/hyperledger/fabric/msp
- ./solo/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 10051:7051
- 10052:7052
- 10053:7053
event-listener:
extends:
file: base.yaml
service: event-listener-base
container_name: fabric-event-listener
hostname: fabric-event-listener
environment:
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # default to operate on peer0.org1
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
volumes:
#- ./solo/examples:/opt/gopath/src/github.com/hyperledger/fabric/examples
- ./solo/crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
- ./solo/channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
- ./solo/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
- ./solo/crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
- ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/
depends_on:
- orderer.example.com
- peer0.org1.example.com
- peer1.org1.example.com
- peer0.org2.example.com
- peer1.org2.example.com
#command: bash -c 'block-listener -events-address=peer0.org1.example.com:7053 -events-mspdir=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/ -events-mspid=Org1MSP'
command: bash -c 'while true; do sleep 20170504; done'

View File

@ -0,0 +1,137 @@
# This is the default base file to config env and command
# All element in this file is abstract without knowing the org and consensus type
# https://github.com/yeasy/docker-compose-files
# Depends on the hyperledger/fabric-peer image.
version: '2'
services:
ca-base:
#image: yeasy/hyperledger-fabric-ca:1.0.4
image: hyperledger/fabric-ca:x86_64-1.0.4
restart: always
environment:
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
- FABRIC_CA_SERVER_TLS_ENABLED=true
#- FABRIC_CA_SERVER_TLS_ENABLED=false
orderer-base:
#image: yeasy/hyperledger-fabric-orderer:1.0.4
image: hyperledger/fabric-orderer:x86_64-1.0.4
restart: always
environment:
- ORDERER_GENERAL_LOGLEVEL=DEBUG
- ORDERER_GENERAL_LOGFORMAT=%{color}[%{id:03x} %{time:01-02 15:04:05.00 MST}] [%{longpkg}] %{callpath} -> %{level:.4s}%{color:reset} %{message}
- ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
- ORDERER_GENERAL_GENESISMETHOD=file
- ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/orderer.genesis.block
- ORDERER_GENERAL_LOCALMSPID=OrdererMSP
- ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
- ORDERER_GENERAL_LEDGERTYPE=file
- ORDERER_GENERAL_BATCHTIMEOUT=1s
- ORDERER_GENERAL_MAXMESSAGECOUNT=10
- ORDERER_GENERAL_MAXWINDOWSIZE=1000
- ORDERER_GENERAL_LISTENPORT=7050
#- ORDERER_RAMLEDGER_HISTORY_SIZE=100 #only useful when use ram ledger
# enabled TLS
- ORDERER_GENERAL_TLS_ENABLED=true
- ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
- ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
- ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
expose:
- "7050" #
command: orderer start
peer-base:
image: yeasy/hyperledger-fabric-peer:1.0.4
#image: hyperledger/fabric-peer:x86_64-1.0.4
restart: always
environment:
- CORE_PEER_ADDRESSAUTODETECT=false
- CORE_LOGGING_LEVEL=DEBUG
- CORE_LOGGING_FORMAT=%{color}[%{id:03x} %{time:01-02 15:04:05.00 MST}] [%{longpkg}] %{callpath} -> %{level:.4s}%{color:reset} %{message}
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=104_default # uncomment this to use specific network
- CORE_PEER_GOSSIP_USELEADERELECTION=true
- CORE_PEER_GOSSIP_ORGLEADER=false # this node is the group leader, default to false
- CORE_PEER_PROFILE_ENABLED=false
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
- CORE_CHIANCODE_LOGGING_LEVEL=DEBUG
- CORE_CHIANCODE_LOGGING_FORMAT=%{color}[%{id:03x} %{time:01-02 15:04:05.00 MST}] [%{longpkg}] %{callpath} -> %{level:.4s}%{color:reset} %{message}
expose:
- "7050" # Rest
- "7051" # Grpc
- "7052" # Peer CLI
- "7053" # Peer Event
- "7054" # eCAP
- "7055" # eCAA
- "7056" # tCAP
- "7057" # eCAA
- "7058" # tlsCAP
- "7059" # tlsCAA
volumes: # docker.sock is mapped as the default CORE_VM_ENDPOINT
- /var/run/docker.sock:/var/run/docker.sock
#volumes:
# - /var/run/:/host/var/run/
command: peer node start
cli-base:
#image: yeasy/hyperledger-fabric:1.0.4
image: hyperledger/fabric-tools:x86_64-1.0.4
restart: always
tty: true
environment:
#- GOPATH=/opt/gopath
- CORE_LOGGING_LEVEL=DEBUG
- CORE_LOGGING_FORMAT=%{color}[%{id:03x} %{time:01-02 15:04:05.00 MST}] [%{longpkg}] %{callpath} -> %{level:.4s}%{color:reset} %{message}
- CORE_PEER_TLS_ENABLED=true # to enable TLS, change to true
- ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
- CHANNEL_NAME:="businesschannel"
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
command: bash -c 'cd /tmp; source scripts/func.sh; while true; do sleep 20170504; done'
event-listener-base:
image: yeasy/hyperledger-fabric:1.0.4
restart: always
tty: true
environment:
- CORE_PEER_ID=fabric-event-listener
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_TLS_ENABLED=false # event-listener doesn't support TLS
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
#command: bash -c 'block-listener -events-address=peer0.org1.example.com:7053 -events-mspdir=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/ -events-mspid=Org1MSP'
command: bash -c 'while true; do sleep 20170504; done'
couchdb-base:
#container_name: couchdb0
image: hyperledger/fabric-couchdb:x86_64-1.0.4
restart: always
tty: true
# Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service,
# for example map it to utilize Fauxton User Interface in dev environments.
zookeeper-base:
image: hyperledger/fabric-zookeeper:x86_64-1.0.4
restart: always
tty: true
expose:
- '2181'
- '2888'
- '3888'
kafka-base:
# official repo doesn't have latest tag, however, kafka changes version recently
image: yeasy/hyperledger-fabric-kafka:0.10.2.0
image: hyperledger/fabric-kafka:x86_64-1.0.4
restart: always
tty: true
environment:
- KAFKA_MESSAGE_MAX_BYTES=1048576 # 1 * 1024 * 1024 B
- KAFKA_REPLICA_FETCH_MAX_BYTES=1048576 # 1 * 1024 * 1024 B
- KAFKA_UNCLEAN_LEADER_ELECTION_ENABLE=false
- KAFKA_LOG_RETENTION_MS=-1
expose:
- '9092'

View File

@ -0,0 +1,27 @@
#! /bin/bash
echo "replace configtx.yaml and crypto-config.yaml"
cp ./peer/example2/configtx.yaml ./peer
cp ./peer/example2/crypto-config.yaml ./peer
echo "replace auto-test script "
cp ./peer/example2/new-channel-auto-test-5-peers.sh ./peer/scripts
echo "replace configtx.yaml"
cp ./peer/configtx.yaml /etc/hyperledger/fabric
echo "Generate new certificates"
cryptogen generate --config=./peer/crypto-config.yaml --output ./peer/crypto
echo "Generate new certificates"
configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./peer/channel-artifacts/orderer_genesis.block
echo "Create the configuration tx"
CHANNEL_NAME=newchannel
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./peer/channel-artifacts/channel.tx -channelID ${CHANNEL_NAME}
echo "Define the anchor peer for Org1 on the channel"
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./peer/channel-artifacts/Org1MSPanchors.tx -channelID ${CHANNEL_NAME} -asOrg Org1MSP
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./peer/channel-artifacts/Org2MSPanchors.tx -channelID ${CHANNEL_NAME} -asOrg Org2MSP
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./peer/channel-artifacts/Org3MSPanchors.tx -channelID ${CHANNEL_NAME} -asOrg Org3MSP

View File

@ -0,0 +1,92 @@
# https://github.com/yeasy/files/tree/master/hyperledger
# This compose file will start a Hyperledger Fabric 1.0 MVE, including
# * 1 ca
# * 1 orderer
# * 1 peer
# * cli for testing
version: '2.0'
services:
orderer.example.com: # There can be multiple orderers
extends:
file: base-dev.yaml
service: orderer.example.com
depends_on:
- kafka0
- kafka1
- kafka2
- kafka3
peer0.org1.example.com:
extends:
file: base-dev.yaml
service: peer0.org1.example.com
depends_on:
- orderer.example.com
cli:
extends:
file: base-dev.yaml
service: cli
depends_on:
- peer0.org1.example.com
- orderer.example.com
# ZooKeeper services, at least 3 nodes
zookeeper0:
extends:
file: base-kafka.yaml
service: zookeeper0
zookeeper1:
extends:
file: base-kafka.yaml
service: zookeeper1
zookeeper2:
extends:
file: base-kafka.yaml
service: zookeeper2
# Kafka services, at least 4 node to tolerant work with 1 node failure
kafka0:
extends:
file: base-kafka.yaml
service: kafka0
depends_on:
- zookeeper0
- zookeeper1
- zookeeper2
kafka1:
extends:
file: base-kafka.yaml
service: kafka1
depends_on:
- zookeeper0
- zookeeper1
- zookeeper2
kafka2:
extends:
file: base-kafka.yaml
service: kafka2
depends_on:
- zookeeper0
- zookeeper1
- zookeeper2
kafka3:
extends:
file: base-kafka.yaml
service: kafka3
depends_on:
- zookeeper0
- zookeeper1
- zookeeper2
#networks:
# default:
# external:
# name: hyperledger_fabric

View File

@ -0,0 +1,107 @@
# github.com/yeasy/docker-compose-files
# fabric network with couchdb as the peer state db.
# including:
# orderer.example.com: orderer node
# peer0.org1.example.com: peer0 node
# peer1.org1.example.com: peer1 node
# peer0.org2.example.com: peer2 node
# peer1.org2.example.com: peer3 node
# couchdb0: couchdb node
# couchdb1: couchdb node
# couchdb2: couchdb node
# couchdb3: couchdb node
# cli: cli node
version: '2'
services:
orderer.example.com:
extends:
file: base-solo.yaml
service: orderer.example.com
peer0.org1.example.com:
extends:
file: base-solo.yaml
service: peer0.org1.example.com
environment:
- CORE_LEDGER_STATE_STATEDATABASE=CouchDB
- CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb0:5984
depends_on:
- couchdb0
peer1.org1.example.com:
extends:
file: base-solo.yaml
service: peer1.org1.example.com
environment:
- CORE_LEDGER_STATE_STATEDATABASE=CouchDB
- CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb1:5984
depends_on:
- couchdb1
peer0.org2.example.com:
extends:
file: base-solo.yaml
service: peer0.org2.example.com
environment:
- CORE_LEDGER_STATE_STATEDATABASE=CouchDB
- CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb2:5984
depends_on:
- couchdb2
peer1.org2.example.com:
extends:
file: base-solo.yaml
service: peer1.org2.example.com
environment:
- CORE_LEDGER_STATE_STATEDATABASE=CouchDB
- CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb3:5984
depends_on:
- couchdb3
couchdb0:
extends:
file: base.yaml
service: couchdb-base
container_name: couchdb0
# Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service,
# for example map it to utilize Fauxton User Interface in dev environments.
ports:
- "5984:5984" # this is the restful API addr, can also access fauxton web ui thru http://localhost:5984/_utils/
couchdb1:
extends:
file: base.yaml
service: couchdb-base
container_name: couchdb1
# Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service,
# for example map it to utilize Fauxton User Interface in dev environments.
ports:
- "6984:5984"
couchdb2:
extends:
file: base.yaml
service: couchdb-base
container_name: couchdb2
# Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service,
# for example map it to utilize Fauxton User Interface in dev environments.
ports:
- "7984:5984"
couchdb3:
extends:
file: base.yaml
service: couchdb-base
container_name: couchdb3
# Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service,
# for example map it to utilize Fauxton User Interface in dev environments.
ports:
- "8984:5984"
cli:
extends:
file: base-solo.yaml
service: cli

View File

@ -0,0 +1,91 @@
# https://github.com/yeasy/docker-compose-files/tree/master/hyperledger
# This compose file will start a Hyperledger Fabric 1.0 MVE, including
# * 1 ca
# * 1 orderer
# * 4 peers in 2 orgs
# * cli for testing
version: '2.0'
services:
ca:
image: yeasy/hyperledger-fabric-ca:1.0.4
container_name: fabric-ca
hostname: ca
# command: /go/src/github.com/hyperledger/fabric-ca/bin/ca server start -ca testdata/ec.pem -ca-key testdata/ec-key.pem -config testdata/testconfig.json
ports:
- "7054:7054"
command: fabric-ca-server start -b admin:adminpw
orderer.example.com: # There can be multiple orderers
extends:
file: base-solo.yaml
service: orderer.example.com
peer0.org1.example.com:
extends:
file: base-solo.yaml
service: peer0.org1.example.com
peer1.org1.example.com:
extends:
file: base-solo.yaml
service: peer1.org1.example.com
peer0.org2.example.com:
extends:
file: base-solo.yaml
service: peer0.org2.example.com
peer1.org2.example.com:
extends:
file: base-solo.yaml
service: peer1.org2.example.com
cli:
extends:
file: base-solo.yaml
service: cli
environment:
- CORE_PEER_TLS_ENABLED=false # event-listener doesn't support TLS
event-listener:
container_name: fabric-event-listener
hostname: fabric-event-listener
image: yeasy/hyperledger-fabric:1.0.4
tty: true
environment:
- CORE_PEER_ID=fabric-event-listener
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # default to operate on peer0.org1
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_ENABLED=false # event-listener doesn't support TLS
- CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
volumes:
#- ./solo/examples:/opt/gopath/src/github.com/hyperledger/fabric/examples
- ./solo/crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
- ./solo/channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
- ./solo/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
- ./solo/crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
- ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/
depends_on:
- orderer.example.com
- peer0.org1.example.com
- peer1.org1.example.com
- peer0.org2.example.com
- peer1.org2.example.com
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
#command: bash -c 'block-listener -events-address=peer0.org1.example.com:7053 -events-mspdir=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/ -events-mspid=Org1MSP'
command: bash -c 'while true; do sleep 20170504; done'
#networks:
# default:
# external:
# name: hyperledger_fabric
#networks:
# default:
# external:
# name: hyperledger_fabric

View File

@ -0,0 +1,114 @@
# https://github.com/yeasy/docker-compose-files/tree/master/hyperledger
# This compose file will start a Hyperledger Fabric 1.0 MVE, including
# * 2 ca (not in use now)
# * 1 orderer
# * 4 peers in 2 orgs
# * cli for testing
version: '2.0'
services:
# ca.org1.example.com:
# extends:
# file: base-kafka.yaml
# service: ca.org1.example.com
# ca.org2.example.com:
# extends:
# file: base-kafka.yaml
# service: ca.org2.example.com
cli:
extends:
file: base-kafka.yaml
service: cli
orderer.example.com: # There can be multiple orderers
extends:
file: base-kafka.yaml
service: orderer.example.com
depends_on:
- kafka0
- kafka1
- kafka2
- kafka3
peer0.org1.example.com:
extends:
file: base-kafka.yaml
service: peer0.org1.example.com
depends_on:
- orderer.example.com
peer1.org1.example.com:
extends:
file: base-kafka.yaml
service: peer1.org1.example.com
peer0.org2.example.com:
extends:
file: base-kafka.yaml
service: peer0.org2.example.com
peer1.org2.example.com:
extends:
file: base-kafka.yaml
service: peer1.org2.example.com
# ZooKeeper services, at least 3 nodes
zookeeper0:
extends:
file: base-kafka.yaml
service: zookeeper0
zookeeper1:
extends:
file: base-kafka.yaml
service: zookeeper1
zookeeper2:
extends:
file: base-kafka.yaml
service: zookeeper2
# Kafka services, at least 4 node to tolerant work with 1 node failure
kafka0:
extends:
file: base-kafka.yaml
service: kafka0
depends_on:
- zookeeper0
- zookeeper1
- zookeeper2
kafka1:
extends:
file: base-kafka.yaml
service: kafka1
depends_on:
- zookeeper0
- zookeeper1
- zookeeper2
kafka2:
extends:
file: base-kafka.yaml
service: kafka2
depends_on:
- zookeeper0
- zookeeper1
- zookeeper2
kafka3:
extends:
file: base-kafka.yaml
service: kafka3
depends_on:
- zookeeper0
- zookeeper1
- zookeeper2
#networks:
# default:
# external:
# name: hyperledger_fabric

View File

@ -0,0 +1,54 @@
# https://github.com/yeasy/docker-compose-files/tree/master/hyperledger
# This compose file will start a Hyperledger Fabric 1.0 MVE, including
# * 2 ca (not in use now)
# * 1 orderer
# * 4 peers in 2 orgs
# * cli for testing
version: '2.0'
services:
# ca.org1.example.com:
# extends:
# file: base-solo.yaml
# service: ca.org1.example.com
# ca.org2.example.com:
# extends:
# file: base-solo.yaml
# service: ca.org2.example.com
cli:
extends:
file: base-solo.yaml
service: cli
orderer.example.com: # There can be multiple orderers
extends:
file: base-solo.yaml
service: orderer.example.com
peer0.org1.example.com:
extends:
file: base-solo.yaml
service: peer0.org1.example.com
peer1.org1.example.com:
extends:
file: base-solo.yaml
service: peer1.org1.example.com
peer0.org2.example.com:
extends:
file: base-solo.yaml
service: peer0.org2.example.com
peer1.org2.example.com:
extends:
file: base-solo.yaml
service: peer1.org2.example.com
#networks:
# default:
# external:
# name: hyperledger_fabric

View File

@ -0,0 +1,13 @@
## Start a network base on kafka
### Quick testing with kafka
```bash
$ KAFKA_ENABLED=true make
```
When the fabric-network fully started, it takes about 30~60s to finish all the test.
## Generate crypto-config and channel-artifacts
```bash
$ make gen_kafka
```

View File

@ -0,0 +1,153 @@
# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
---
################################################################################
#
# Profile
#
# - Different configuration profiles may be encoded here to be specified
# as parameters to the configtxgen tool
#
################################################################################
Profiles:
TwoOrgsOrdererGenesis:
Orderer:
<<: *OrdererDefaults
Organizations:
- *OrdererOrg
Consortiums:
SampleConsortium:
Organizations:
- *Org1
- *Org2
TwoOrgsChannel:
Consortium: SampleConsortium
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
################################################################################
#
# Section: Organizations
#
# - This section defines the different organizational identities which will
# be referenced later in the configuration.
#
################################################################################
Organizations:
# SampleOrg defines an MSP using the sampleconfig. It should never be used
# in production but may be used as a template for other definitions
- &OrdererOrg
# DefaultOrg defines the organization which is used in the sampleconfig
# of the fabric.git development environment
Name: OrdererOrg
# ID to load the MSP definition as
ID: OrdererMSP
# MSPDir is the filesystem path which contains the MSP configuration
MSPDir: crypto-config/ordererOrganizations/example.com/msp
- &Org1
# DefaultOrg defines the organization which is used in the sampleconfig
# of the fabric.git development environment
Name: Org1MSP
# ID to load the MSP definition as
ID: Org1MSP
MSPDir: crypto-config/peerOrganizations/org1.example.com/msp
AnchorPeers:
# AnchorPeers defines the location of peers which can be used
# for cross org gossip communication. Note, this value is only
# encoded in the genesis block in the Application section context
- Host: peer0.org1.example.com
Port: 7051
- &Org2
# DefaultOrg defines the organization which is used in the sampleconfig
# of the fabric.git development environment
Name: Org2MSP
# ID to load the MSP definition as
ID: Org2MSP
MSPDir: crypto-config/peerOrganizations/org2.example.com/msp
AnchorPeers:
# AnchorPeers defines the location of peers which can be used
# for cross org gossip communication. Note, this value is only
# encoded in the genesis block in the Application section context
- Host: peer0.org2.example.com
Port: 7051
################################################################################
#
# SECTION: Orderer
#
# - This section defines the values to encode into a config transaction or
# genesis block for orderer related parameters
#
################################################################################
Orderer: &OrdererDefaults
# Orderer Type: The orderer implementation to start
# Available types are "solo" and "kafka"
OrdererType: kafka
Addresses:
- orderer.example.com:7050
# Batch Timeout: The amount of time to wait before creating a batch
BatchTimeout: 2s
# Batch Size: Controls the number of messages batched into a block
BatchSize:
# Max Message Count: The maximum number of messages to permit in a batch
MaxMessageCount: 10
# Absolute Max Bytes: The absolute maximum number of bytes allowed for
# the serialized messages in a batch.
AbsoluteMaxBytes: 98 MB
# Preferred Max Bytes: The preferred maximum number of bytes allowed for
# the serialized messages in a batch. A message larger than the preferred
# max bytes will result in a batch larger than preferred max bytes.
PreferredMaxBytes: 512 KB
Kafka:
# Brokers: A list of Kafka brokers to which the orderer connects. Edit
# this list to identify the brokers of the ordering service.
# NOTE: Use IP:port notation.
Brokers:
- kafka0:9092
- kafka1:9092
- kafka2:9092
- kafka3:9092
# Organizations is the list of orgs which are defined as participants on
# the orderer side of the network
Organizations:
################################################################################
#
# SECTION: Application
#
# - This section defines the values to encode into a config transaction or
# genesis block for application related parameters
#
################################################################################
Application: &ApplicationDefaults
# Organizations is the list of orgs which are defined as participants on
# the application side of the network
Organizations:

View File

@ -0,0 +1,93 @@
# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
# ---------------------------------------------------------------------------
# "OrdererOrgs" - Definition of organizations managing orderer nodes
# ---------------------------------------------------------------------------
OrdererOrgs:
# ---------------------------------------------------------------------------
# Orderer
# ---------------------------------------------------------------------------
- Name: Orderer
Domain: example.com
CA:
Country: US
Province: California
Locality: San Francisco
# ---------------------------------------------------------------------------
# "Specs" - See PeerOrgs below for complete description
# ---------------------------------------------------------------------------
Specs:
- Hostname: orderer
# ---------------------------------------------------------------------------
# "PeerOrgs" - Definition of organizations managing peer nodes
# ---------------------------------------------------------------------------
PeerOrgs:
# ---------------------------------------------------------------------------
# Org1
# ---------------------------------------------------------------------------
- Name: Org1
Domain: org1.example.com
CA:
Country: US
Province: California
Locality: San Francisco
# ---------------------------------------------------------------------------
# "Specs"
# ---------------------------------------------------------------------------
# Uncomment this section to enable the explicit definition of hosts in your
# configuration. Most users will want to use Template, below
#
# Specs is an array of Spec entries. Each Spec entry consists of two fields:
# - Hostname: (Required) The desired hostname, sans the domain.
# - CommonName: (Optional) Specifies the template or explicit override for
# the CN. By default, this is the template:
#
# "{{.Hostname}}.{{.Domain}}"
#
# which obtains its values from the Spec.Hostname and
# Org.Domain, respectively.
# ---------------------------------------------------------------------------
# Specs:
# - Hostname: foo # implicitly "foo.org1.example.com"
# CommonName: foo27.org5.example.com # overrides Hostname-based FQDN set above
# - Hostname: bar
# - Hostname: baz
# ---------------------------------------------------------------------------
# "Template"
# ---------------------------------------------------------------------------
# Allows for the definition of 1 or more hosts that are created sequentially
# from a template. By default, this looks like "peer%d" from 0 to Count-1.
# You may override the number of nodes (Count), the starting index (Start)
# or the template used to construct the name (Hostname).
#
# Note: Template and Specs are not mutually exclusive. You may define both
# sections and the aggregate nodes will be created for you. Take care with
# name collisions
# ---------------------------------------------------------------------------
Template:
Count: 2
# Start: 5
# Hostname: {{.Prefix}}{{.Index}} # default
# ---------------------------------------------------------------------------
# "Users"
# ---------------------------------------------------------------------------
# Count: The number of user accounts _in addition_ to Admin
# ---------------------------------------------------------------------------
Users:
Count: 1
# ---------------------------------------------------------------------------
# Org2: See "Org1" for full specification
# ---------------------------------------------------------------------------
- Name: Org2
Domain: org2.example.com
CA:
Country: US
Province: California
Locality: San Francisco
Template:
Count: 2
Users:
Count: 1

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgOh3c0JeVNvfEPPB0
UcBagzmGehlyeVPMueLfphiSvyqhRANCAAQ5+ry0MgtMCED6+OfPwEfZPVwpnpg9
imHhps7otxgvgx/4blJzj4W7t6XxkAjMcUqWV1YMl2z2FelG4apJk83b
-----END PRIVATE KEY-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICLzCCAdWgAwIBAgIQQltCOhXXqAyQPaes7xFeDTAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE3MTEwMjAyMDkwNFoXDTI3MTAzMTAyMDkwNFowaTELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDn6vLQyC0wIQPr458/AR9k9XCme
mD2KYeGmzui3GC+DH/huUnOPhbu3pfGQCMxxSpZXVgyXbPYV6UbhqkmTzdujXzBd
MA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMB
Af8wKQYDVR0OBCIEICVLl72CBClTnb28LaIzf/JR3zo2ZM5qbCQjvR4ilNLPMAoG
CCqGSM49BAMCA0gAMEUCIQCUfZQWDoopINQFD/zGG6hX+eeweOgLtQXo4pqsCpaL
jQIgLKrrBn/uahLDGIcFY37t0Z8UdEKCl5dOcqNfmIJjVx0=
-----END CERTIFICATE-----

View File

@ -0,0 +1,13 @@
-----BEGIN CERTIFICATE-----
MIICCjCCAbCgAwIBAgIQZJEv+/ves4jV7x3IFcqbYDAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE3MTEwMjAyMDkwNFoXDTI3MTAzMTAyMDkwNFowVjELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI
zj0DAQcDQgAEWDWQPmxWql9ECHHoikK22ffKHxgkqD0hmA8mMTFSqQ41WwcMOfBQ
q7eiwCIMdjgEUxiuNsVxtTb91siT0N72q6NNMEswDgYDVR0PAQH/BAQDAgeAMAwG
A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgJUuXvYIEKVOdvbwtojN/8lHfOjZkzmps
JCO9HiKU0s8wCgYIKoZIzj0EAwIDSAAwRQIhAIayHaFunxUIG5SXnxqH4o2FDK0c
dxZxna9r8yLGV21PAiAfpF0ofzDvzIc1V4IHdhpPLSYYddPS4ZumTInwg3FAwQ==
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICLzCCAdWgAwIBAgIQQltCOhXXqAyQPaes7xFeDTAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE3MTEwMjAyMDkwNFoXDTI3MTAzMTAyMDkwNFowaTELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDn6vLQyC0wIQPr458/AR9k9XCme
mD2KYeGmzui3GC+DH/huUnOPhbu3pfGQCMxxSpZXVgyXbPYV6UbhqkmTzdujXzBd
MA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMB
Af8wKQYDVR0OBCIEICVLl72CBClTnb28LaIzf/JR3zo2ZM5qbCQjvR4ilNLPMAoG
CCqGSM49BAMCA0gAMEUCIQCUfZQWDoopINQFD/zGG6hX+eeweOgLtQXo4pqsCpaL
jQIgLKrrBn/uahLDGIcFY37t0Z8UdEKCl5dOcqNfmIJjVx0=
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICNTCCAdugAwIBAgIQPjiuRUTSYJj6G+rpVAoyWzAKBggqhkjOPQQDAjBsMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
YW1wbGUuY29tMB4XDTE3MTEwMjAyMDkwNFoXDTI3MTAzMTAyMDkwNFowbDELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGaAl9P1jYetKlcCLmIS
W7BA26I/5YqjM7L+twbbk3NciD0X9V1Rmwz+mhWhjYCQDeI34E1Q2Ty7b19SlKca
L1GjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB
/wQFMAMBAf8wKQYDVR0OBCIEIBo2Q6ME0uXb6ueEDZA+t4GHuJ9LuO4da+DGgBR9
cgDlMAoGCCqGSM49BAMCA0gAMEUCIQDR8nYQwOTZ1yZJzSPEEYT5yTvGDCphUHZk
9VuBgyP62gIgW+/jCL4yy1PfLff4sRsMdY0h0jDveJgmjcansxenUvQ=
-----END CERTIFICATE-----

View File

@ -0,0 +1,13 @@
-----BEGIN CERTIFICATE-----
MIICCjCCAbCgAwIBAgIQZJEv+/ves4jV7x3IFcqbYDAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE3MTEwMjAyMDkwNFoXDTI3MTAzMTAyMDkwNFowVjELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI
zj0DAQcDQgAEWDWQPmxWql9ECHHoikK22ffKHxgkqD0hmA8mMTFSqQ41WwcMOfBQ
q7eiwCIMdjgEUxiuNsVxtTb91siT0N72q6NNMEswDgYDVR0PAQH/BAQDAgeAMAwG
A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgJUuXvYIEKVOdvbwtojN/8lHfOjZkzmps
JCO9HiKU0s8wCgYIKoZIzj0EAwIDSAAwRQIhAIayHaFunxUIG5SXnxqH4o2FDK0c
dxZxna9r8yLGV21PAiAfpF0ofzDvzIc1V4IHdhpPLSYYddPS4ZumTInwg3FAwQ==
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICLzCCAdWgAwIBAgIQQltCOhXXqAyQPaes7xFeDTAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE3MTEwMjAyMDkwNFoXDTI3MTAzMTAyMDkwNFowaTELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDn6vLQyC0wIQPr458/AR9k9XCme
mD2KYeGmzui3GC+DH/huUnOPhbu3pfGQCMxxSpZXVgyXbPYV6UbhqkmTzdujXzBd
MA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMB
Af8wKQYDVR0OBCIEICVLl72CBClTnb28LaIzf/JR3zo2ZM5qbCQjvR4ilNLPMAoG
CCqGSM49BAMCA0gAMEUCIQCUfZQWDoopINQFD/zGG6hX+eeweOgLtQXo4pqsCpaL
jQIgLKrrBn/uahLDGIcFY37t0Z8UdEKCl5dOcqNfmIJjVx0=
-----END CERTIFICATE-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg67fnyJ2yoAD+AIeN
zapWDBVqozCdGAd44EhPQYJnaSahRANCAARSluQf469P/clzF4Le+7HhBINkiUv+
HI9ApVsx8+xlGn8M/gXvgUWQLFcFlxdcBzrzLfTnmdGRRgXCWU9I6JX0
-----END PRIVATE KEY-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICDTCCAbOgAwIBAgIRALzPTUxkLIQaankbIV9RXFwwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xNzExMDIwMjA5MDRaFw0yNzEwMzEwMjA5MDRaMFgxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRwwGgYDVQQDExNvcmRlcmVyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYI
KoZIzj0DAQcDQgAEUpbkH+OvT/3JcxeC3vux4QSDZIlL/hyPQKVbMfPsZRp/DP4F
74FFkCxXBZcXXAc68y3055nRkUYFwllPSOiV9KNNMEswDgYDVR0PAQH/BAQDAgeA
MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgJUuXvYIEKVOdvbwtojN/8lHfOjZk
zmpsJCO9HiKU0s8wCgYIKoZIzj0EAwIDSAAwRQIhAPvrzZIWavWp8kOiMrJ1wFi7
03P+M4dJ38Qx4UR1a9/LAiB+/6ENfR/rKFQx/C1Eg1UR6UhHc8REK6Tpj8n8Vy2d
8w==
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICNTCCAdugAwIBAgIQPjiuRUTSYJj6G+rpVAoyWzAKBggqhkjOPQQDAjBsMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
YW1wbGUuY29tMB4XDTE3MTEwMjAyMDkwNFoXDTI3MTAzMTAyMDkwNFowbDELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGaAl9P1jYetKlcCLmIS
W7BA26I/5YqjM7L+twbbk3NciD0X9V1Rmwz+mhWhjYCQDeI34E1Q2Ty7b19SlKca
L1GjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB
/wQFMAMBAf8wKQYDVR0OBCIEIBo2Q6ME0uXb6ueEDZA+t4GHuJ9LuO4da+DGgBR9
cgDlMAoGCCqGSM49BAMCA0gAMEUCIQDR8nYQwOTZ1yZJzSPEEYT5yTvGDCphUHZk
9VuBgyP62gIgW+/jCL4yy1PfLff4sRsMdY0h0jDveJgmjcansxenUvQ=
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICNTCCAdugAwIBAgIQPjiuRUTSYJj6G+rpVAoyWzAKBggqhkjOPQQDAjBsMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
YW1wbGUuY29tMB4XDTE3MTEwMjAyMDkwNFoXDTI3MTAzMTAyMDkwNFowbDELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGaAl9P1jYetKlcCLmIS
W7BA26I/5YqjM7L+twbbk3NciD0X9V1Rmwz+mhWhjYCQDeI34E1Q2Ty7b19SlKca
L1GjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB
/wQFMAMBAf8wKQYDVR0OBCIEIBo2Q6ME0uXb6ueEDZA+t4GHuJ9LuO4da+DGgBR9
cgDlMAoGCCqGSM49BAMCA0gAMEUCIQDR8nYQwOTZ1yZJzSPEEYT5yTvGDCphUHZk
9VuBgyP62gIgW+/jCL4yy1PfLff4sRsMdY0h0jDveJgmjcansxenUvQ=
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICWTCCAf+gAwIBAgIQWehIY/9qDJ4CInl7CkAbaTAKBggqhkjOPQQDAjBsMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
YW1wbGUuY29tMB4XDTE3MTEwMjAyMDkwNFoXDTI3MTAzMTAyMDkwNFowWDELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
Y2lzY28xHDAaBgNVBAMTE29yZGVyZXIuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIB
BggqhkjOPQMBBwNCAASw+HdzH+K+fxrHi6Sk6kUNXoq7PAc9a1vnX4uJDTPgujin
UIKnsxlcQ6B9jYLqNW/v4Ocsy+PjAtVdk8fuMUeHo4GWMIGTMA4GA1UdDwEB/wQE
AwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIw
ADArBgNVHSMEJDAigCAaNkOjBNLl2+rnhA2QPreBh7ifS7juHWvgxoAUfXIA5TAn
BgNVHREEIDAeghNvcmRlcmVyLmV4YW1wbGUuY29tggdvcmRlcmVyMAoGCCqGSM49
BAMCA0gAMEUCIQDfdSqWkET4daK+8vdQDJjsedRu+mxIqntQu3B7Y8I1YAIgJdNi
5Nu5bgudMFTaTFDvfsdee3Jl4484wCaQ/R0Z4Ug=
-----END CERTIFICATE-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg2IOdfeqqYXZ54M1w
FZbFVBs5swroT0GvNMmUxpTGPHShRANCAASw+HdzH+K+fxrHi6Sk6kUNXoq7PAc9
a1vnX4uJDTPgujinUIKnsxlcQ6B9jYLqNW/v4Ocsy+PjAtVdk8fuMUeH
-----END PRIVATE KEY-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgMfLP3fWDilOL/18V
9ZHuu1tMhXRVilnN8oewI+Y2PPqhRANCAARmgJfT9Y2HrSpXAi5iEluwQNuiP+WK
ozOy/rcG25NzXIg9F/VdUZsM/poVoY2AkA3iN+BNUNk8u29fUpSnGi9R
-----END PRIVATE KEY-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICNTCCAdugAwIBAgIQPjiuRUTSYJj6G+rpVAoyWzAKBggqhkjOPQQDAjBsMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
YW1wbGUuY29tMB4XDTE3MTEwMjAyMDkwNFoXDTI3MTAzMTAyMDkwNFowbDELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGaAl9P1jYetKlcCLmIS
W7BA26I/5YqjM7L+twbbk3NciD0X9V1Rmwz+mhWhjYCQDeI34E1Q2Ty7b19SlKca
L1GjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB
/wQFMAMBAf8wKQYDVR0OBCIEIBo2Q6ME0uXb6ueEDZA+t4GHuJ9LuO4da+DGgBR9
cgDlMAoGCCqGSM49BAMCA0gAMEUCIQDR8nYQwOTZ1yZJzSPEEYT5yTvGDCphUHZk
9VuBgyP62gIgW+/jCL4yy1PfLff4sRsMdY0h0jDveJgmjcansxenUvQ=
-----END CERTIFICATE-----

View File

@ -0,0 +1,13 @@
-----BEGIN CERTIFICATE-----
MIICCjCCAbCgAwIBAgIQZJEv+/ves4jV7x3IFcqbYDAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE3MTEwMjAyMDkwNFoXDTI3MTAzMTAyMDkwNFowVjELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI
zj0DAQcDQgAEWDWQPmxWql9ECHHoikK22ffKHxgkqD0hmA8mMTFSqQ41WwcMOfBQ
q7eiwCIMdjgEUxiuNsVxtTb91siT0N72q6NNMEswDgYDVR0PAQH/BAQDAgeAMAwG
A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgJUuXvYIEKVOdvbwtojN/8lHfOjZkzmps
JCO9HiKU0s8wCgYIKoZIzj0EAwIDSAAwRQIhAIayHaFunxUIG5SXnxqH4o2FDK0c
dxZxna9r8yLGV21PAiAfpF0ofzDvzIc1V4IHdhpPLSYYddPS4ZumTInwg3FAwQ==
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICLzCCAdWgAwIBAgIQQltCOhXXqAyQPaes7xFeDTAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE3MTEwMjAyMDkwNFoXDTI3MTAzMTAyMDkwNFowaTELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDn6vLQyC0wIQPr458/AR9k9XCme
mD2KYeGmzui3GC+DH/huUnOPhbu3pfGQCMxxSpZXVgyXbPYV6UbhqkmTzdujXzBd
MA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMB
Af8wKQYDVR0OBCIEICVLl72CBClTnb28LaIzf/JR3zo2ZM5qbCQjvR4ilNLPMAoG
CCqGSM49BAMCA0gAMEUCIQCUfZQWDoopINQFD/zGG6hX+eeweOgLtQXo4pqsCpaL
jQIgLKrrBn/uahLDGIcFY37t0Z8UdEKCl5dOcqNfmIJjVx0=
-----END CERTIFICATE-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg2CBbfyk1RzKXh+Yo
3oJWVkWTXzaaosQMMnAqdhrZRIShRANCAARYNZA+bFaqX0QIceiKQrbZ98ofGCSo
PSGYDyYxMVKpDjVbBww58FCrt6LAIgx2OARTGK42xXG1Nv3WyJPQ3var
-----END PRIVATE KEY-----

View File

@ -0,0 +1,13 @@
-----BEGIN CERTIFICATE-----
MIICCjCCAbCgAwIBAgIQZJEv+/ves4jV7x3IFcqbYDAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE3MTEwMjAyMDkwNFoXDTI3MTAzMTAyMDkwNFowVjELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI
zj0DAQcDQgAEWDWQPmxWql9ECHHoikK22ffKHxgkqD0hmA8mMTFSqQ41WwcMOfBQ
q7eiwCIMdjgEUxiuNsVxtTb91siT0N72q6NNMEswDgYDVR0PAQH/BAQDAgeAMAwG
A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgJUuXvYIEKVOdvbwtojN/8lHfOjZkzmps
JCO9HiKU0s8wCgYIKoZIzj0EAwIDSAAwRQIhAIayHaFunxUIG5SXnxqH4o2FDK0c
dxZxna9r8yLGV21PAiAfpF0ofzDvzIc1V4IHdhpPLSYYddPS4ZumTInwg3FAwQ==
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICNTCCAdugAwIBAgIQPjiuRUTSYJj6G+rpVAoyWzAKBggqhkjOPQQDAjBsMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
YW1wbGUuY29tMB4XDTE3MTEwMjAyMDkwNFoXDTI3MTAzMTAyMDkwNFowbDELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGaAl9P1jYetKlcCLmIS
W7BA26I/5YqjM7L+twbbk3NciD0X9V1Rmwz+mhWhjYCQDeI34E1Q2Ty7b19SlKca
L1GjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB
/wQFMAMBAf8wKQYDVR0OBCIEIBo2Q6ME0uXb6ueEDZA+t4GHuJ9LuO4da+DGgBR9
cgDlMAoGCCqGSM49BAMCA0gAMEUCIQDR8nYQwOTZ1yZJzSPEEYT5yTvGDCphUHZk
9VuBgyP62gIgW+/jCL4yy1PfLff4sRsMdY0h0jDveJgmjcansxenUvQ=
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICNTCCAdugAwIBAgIQPjiuRUTSYJj6G+rpVAoyWzAKBggqhkjOPQQDAjBsMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
YW1wbGUuY29tMB4XDTE3MTEwMjAyMDkwNFoXDTI3MTAzMTAyMDkwNFowbDELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGaAl9P1jYetKlcCLmIS
W7BA26I/5YqjM7L+twbbk3NciD0X9V1Rmwz+mhWhjYCQDeI34E1Q2Ty7b19SlKca
L1GjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB
/wQFMAMBAf8wKQYDVR0OBCIEIBo2Q6ME0uXb6ueEDZA+t4GHuJ9LuO4da+DGgBR9
cgDlMAoGCCqGSM49BAMCA0gAMEUCIQDR8nYQwOTZ1yZJzSPEEYT5yTvGDCphUHZk
9VuBgyP62gIgW+/jCL4yy1PfLff4sRsMdY0h0jDveJgmjcansxenUvQ=
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICLDCCAdKgAwIBAgIQdL39QIZytK734FHuTn+iVjAKBggqhkjOPQQDAjBsMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
YW1wbGUuY29tMB4XDTE3MTEwMjAyMDkwNFoXDTI3MTAzMTAyMDkwNFowVjELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
Y2lzY28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYI
KoZIzj0DAQcDQgAEXCZGQFcE25pHjYaR9+obj5QuNIRkq/5skdCfUUdCZcdLJVZO
ubOSrvrU2OqASxXc25wqTZ26S92EwSs3rIq49qNsMGowDgYDVR0PAQH/BAQDAgWg
MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMCsG
A1UdIwQkMCKAIBo2Q6ME0uXb6ueEDZA+t4GHuJ9LuO4da+DGgBR9cgDlMAoGCCqG
SM49BAMCA0gAMEUCIQCGlFjr/xe8MIPNQMesUPXgXhr61Hax0T58o6weedjavQIg
E5aClrGCrYEmgmsPq/2iaQsQ7cLrjaz/KZhf0IZhU2k=
-----END CERTIFICATE-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgx496nxSyN3JHQZvv
47VXgh0jNorGxlXdxkV1z/U+dQyhRANCAARcJkZAVwTbmkeNhpH36huPlC40hGSr
/myR0J9RR0Jlx0slVk65s5Ku+tTY6oBLFdzbnCpNnbpL3YTBKzesirj2
-----END PRIVATE KEY-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg8QK2lL9+k3oWWw8o
x3+Yyx4xQAHjIEq77GwaRpduu8ChRANCAATxlujrvc65QyCLt2XcN2w/2VJ/Kr8i
5i1tfvB7+JnhHlppj5tN6/ra6LyEpOheUbiMmuPqfxK6pGtzEOj7iSq6
-----END PRIVATE KEY-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICQzCCAeqgAwIBAgIRAPYY8r5Ql/PZ5hu+ctW0s88wCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BPGW6Ou9zrlDIIu3Zdw3bD/ZUn8qvyLmLW1+8Hv4meEeWmmPm03r+trovISk6F5R
uIya4+p/Erqka3MQ6PuJKrqjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG
BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKlWRFsok7AD4cnLA58O
Mpflvk2xOYUbNJOX5fIWIDD4MAoGCCqGSM49BAMCA0cAMEQCICOZPLVOwaU7m/jL
c3ee7UfwKa4wqv0gy1QWQsznACAHAiB5VJIV0cUTBhL6OQeFYGdg6glKeJYFlrOB
fPfZyU9SMg==
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICGjCCAcCgAwIBAgIRAMQqTLhmWv9qY9+EAobgf3QwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNvbTBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABGLOyxOO7IF8kFyaitMfLyDRdPe+w8DK
SyljFjX4M2XVB7B0lSTKThy1pSIWmUI1BLUcviDeMDuNBuMCMdhLQLSjTTBLMA4G
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIKlWRFsok7AD
4cnLA58OMpflvk2xOYUbNJOX5fIWIDD4MAoGCCqGSM49BAMCA0gAMEUCIQDMBcCp
de9SOd9LW8dV6g/TVtVUybyokZTHctUWQMom1QIgIg824DexsZTa6gWNhML2IsBN
FU6YN8dU8RETKmMlmoM=
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICQzCCAeqgAwIBAgIRAPYY8r5Ql/PZ5hu+ctW0s88wCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BPGW6Ou9zrlDIIu3Zdw3bD/ZUn8qvyLmLW1+8Hv4meEeWmmPm03r+trovISk6F5R
uIya4+p/Erqka3MQ6PuJKrqjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG
BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKlWRFsok7AD4cnLA58O
Mpflvk2xOYUbNJOX5fIWIDD4MAoGCCqGSM49BAMCA0cAMEQCICOZPLVOwaU7m/jL
c3ee7UfwKa4wqv0gy1QWQsznACAHAiB5VJIV0cUTBhL6OQeFYGdg6glKeJYFlrOB
fPfZyU9SMg==
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAe+gAwIBAgIQUdaNFJKMhoKNfQraPRxTCjAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzExMDIwMjA5MDRaFw0yNzEwMzEwMjA5
MDRaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAETY6tswJbuhhp20k7Ch/3zElu3FGGPgXoh7xLwRFhO8gf/vespevLvco5
S1vEKL7rKmHrIZwzTcw3kFPPuoBOq6NfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgJ2D/eCcIFOb6
Gm5xebzfJ4wqRSBjchZ1bm0Jes04pmcwCgYIKoZIzj0EAwIDSAAwRQIhAOHFp/4i
+nhTvIsGtzN2dXsCQP1/LqtBd60YmOTpFq4rAiARm7UY+gE9K2O9Tew1StgXhCIi
3BaKy2fpyXOyNsqTqw==
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICGjCCAcCgAwIBAgIRAMQqTLhmWv9qY9+EAobgf3QwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNvbTBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABGLOyxOO7IF8kFyaitMfLyDRdPe+w8DK
SyljFjX4M2XVB7B0lSTKThy1pSIWmUI1BLUcviDeMDuNBuMCMdhLQLSjTTBLMA4G
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIKlWRFsok7AD
4cnLA58OMpflvk2xOYUbNJOX5fIWIDD4MAoGCCqGSM49BAMCA0gAMEUCIQDMBcCp
de9SOd9LW8dV6g/TVtVUybyokZTHctUWQMom1QIgIg824DexsZTa6gWNhML2IsBN
FU6YN8dU8RETKmMlmoM=
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICQzCCAeqgAwIBAgIRAPYY8r5Ql/PZ5hu+ctW0s88wCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BPGW6Ou9zrlDIIu3Zdw3bD/ZUn8qvyLmLW1+8Hv4meEeWmmPm03r+trovISk6F5R
uIya4+p/Erqka3MQ6PuJKrqjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG
BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKlWRFsok7AD4cnLA58O
Mpflvk2xOYUbNJOX5fIWIDD4MAoGCCqGSM49BAMCA0cAMEQCICOZPLVOwaU7m/jL
c3ee7UfwKa4wqv0gy1QWQsznACAHAiB5VJIV0cUTBhL6OQeFYGdg6glKeJYFlrOB
fPfZyU9SMg==
-----END CERTIFICATE-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgHdMLodTH4GL4owQc
CxUeJTvx7UeeK6OoS1v7u6rL/36hRANCAAQasINLqiST12CiejTdzp5Fg1u3gmK5
7ov7usb5DvYTuZ87Fvlxtxg6pSln5x/CkuT3n59alD2JW3m4Acf8/MfW
-----END PRIVATE KEY-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICGTCCAcCgAwIBAgIRAN23u+qDPYv3q9uFIUszuuAwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjAub3JnMS5leGFtcGxlLmNvbTBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABBqwg0uqJJPXYKJ6NN3OnkWDW7eCYrnu
i/u6xvkO9hO5nzsW+XG3GDqlKWfnH8KS5Pefn1qUPYlbebgBx/z8x9ajTTBLMA4G
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIKlWRFsok7AD
4cnLA58OMpflvk2xOYUbNJOX5fIWIDD4MAoGCCqGSM49BAMCA0cAMEQCIBel/1NE
ZcMKEWR1EjQzcTy0tHr41omCfC6G0HOC0cFTAiBne9Cc/gSYx7zyzMLJQ/YXVcam
BztRncZRuy4VUdwnKg==
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAe+gAwIBAgIQUdaNFJKMhoKNfQraPRxTCjAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzExMDIwMjA5MDRaFw0yNzEwMzEwMjA5
MDRaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAETY6tswJbuhhp20k7Ch/3zElu3FGGPgXoh7xLwRFhO8gf/vespevLvco5
S1vEKL7rKmHrIZwzTcw3kFPPuoBOq6NfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgJ2D/eCcIFOb6
Gm5xebzfJ4wqRSBjchZ1bm0Jes04pmcwCgYIKoZIzj0EAwIDSAAwRQIhAOHFp/4i
+nhTvIsGtzN2dXsCQP1/LqtBd60YmOTpFq4rAiARm7UY+gE9K2O9Tew1StgXhCIi
3BaKy2fpyXOyNsqTqw==
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAe+gAwIBAgIQUdaNFJKMhoKNfQraPRxTCjAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzExMDIwMjA5MDRaFw0yNzEwMzEwMjA5
MDRaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAETY6tswJbuhhp20k7Ch/3zElu3FGGPgXoh7xLwRFhO8gf/vespevLvco5
S1vEKL7rKmHrIZwzTcw3kFPPuoBOq6NfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgJ2D/eCcIFOb6
Gm5xebzfJ4wqRSBjchZ1bm0Jes04pmcwCgYIKoZIzj0EAwIDSAAwRQIhAOHFp/4i
+nhTvIsGtzN2dXsCQP1/LqtBd60YmOTpFq4rAiARm7UY+gE9K2O9Tew1StgXhCIi
3BaKy2fpyXOyNsqTqw==
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICZzCCAg2gAwIBAgIQcHfdbO8cbYIyUjGraz//tTAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzExMDIwMjA5MDRaFw0yNzEwMzEwMjA5
MDRaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMC5vcmcxLmV4YW1wbGUuY29t
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEG6h+luAuhIN6xFyeGmvLvuxw1bnT
q5XDULt+9XI93+CQuLWNl7WsGd1FEnMnAsOlkalrwci5JpAnEHZzcEBxcaOBlzCB
lDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgJ2D/eCcIFOb6Gm5xebzfJ4wqRSBj
chZ1bm0Jes04pmcwKAYDVR0RBCEwH4IWcGVlcjAub3JnMS5leGFtcGxlLmNvbYIF
cGVlcjAwCgYIKoZIzj0EAwIDSAAwRQIhAM9LQuZwbOaJKNd4arD0+NYmCxwO5UK7
d54SQNszRmSVAiBGRBUR60YOGbMx/oqWZ82msqUlx7hSjMdJ/Y52KeXMNw==
-----END CERTIFICATE-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgHDckM+Q724gsvd6+
EHsaXbgR2PFVwfvVO/XL4kHogjShRANCAAQbqH6W4C6Eg3rEXJ4aa8u+7HDVudOr
lcNQu371cj3f4JC4tY2XtawZ3UUScycCw6WRqWvByLkmkCcQdnNwQHFx
-----END PRIVATE KEY-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICGjCCAcCgAwIBAgIRAMQqTLhmWv9qY9+EAobgf3QwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNvbTBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABGLOyxOO7IF8kFyaitMfLyDRdPe+w8DK
SyljFjX4M2XVB7B0lSTKThy1pSIWmUI1BLUcviDeMDuNBuMCMdhLQLSjTTBLMA4G
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIKlWRFsok7AD
4cnLA58OMpflvk2xOYUbNJOX5fIWIDD4MAoGCCqGSM49BAMCA0gAMEUCIQDMBcCp
de9SOd9LW8dV6g/TVtVUybyokZTHctUWQMom1QIgIg824DexsZTa6gWNhML2IsBN
FU6YN8dU8RETKmMlmoM=
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICQzCCAeqgAwIBAgIRAPYY8r5Ql/PZ5hu+ctW0s88wCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BPGW6Ou9zrlDIIu3Zdw3bD/ZUn8qvyLmLW1+8Hv4meEeWmmPm03r+trovISk6F5R
uIya4+p/Erqka3MQ6PuJKrqjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG
BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKlWRFsok7AD4cnLA58O
Mpflvk2xOYUbNJOX5fIWIDD4MAoGCCqGSM49BAMCA0cAMEQCICOZPLVOwaU7m/jL
c3ee7UfwKa4wqv0gy1QWQsznACAHAiB5VJIV0cUTBhL6OQeFYGdg6glKeJYFlrOB
fPfZyU9SMg==
-----END CERTIFICATE-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgfsm55ImX6Y2EQWwN
FiU1gnU37+19hY8iXLL05m7UZK+hRANCAAQZY9J0zpc5/moA2FBYYd34w0+xhmd4
9JPYPMfMsX/Gp469ftdIrTh9ArT9kp4p+lT3GhRJ0qC5JV070EvuDlaB
-----END PRIVATE KEY-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICGTCCAcCgAwIBAgIRAL/6GSfcmSz4xvVT/Nrmsc4wCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjEub3JnMS5leGFtcGxlLmNvbTBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABBlj0nTOlzn+agDYUFhh3fjDT7GGZ3j0
k9g8x8yxf8anjr1+10itOH0CtP2Snin6VPcaFEnSoLklXTvQS+4OVoGjTTBLMA4G
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIKlWRFsok7AD
4cnLA58OMpflvk2xOYUbNJOX5fIWIDD4MAoGCCqGSM49BAMCA0cAMEQCIANoNz/z
CzhmkHhwAIoUMRxXzu3iPPLgg0+2MJGmTS5EAiBkyxlHRcrydrkeRyykRlAuPfn+
WZ9diaKRJdHMux8l6A==
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAe+gAwIBAgIQUdaNFJKMhoKNfQraPRxTCjAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzExMDIwMjA5MDRaFw0yNzEwMzEwMjA5
MDRaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAETY6tswJbuhhp20k7Ch/3zElu3FGGPgXoh7xLwRFhO8gf/vespevLvco5
S1vEKL7rKmHrIZwzTcw3kFPPuoBOq6NfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgJ2D/eCcIFOb6
Gm5xebzfJ4wqRSBjchZ1bm0Jes04pmcwCgYIKoZIzj0EAwIDSAAwRQIhAOHFp/4i
+nhTvIsGtzN2dXsCQP1/LqtBd60YmOTpFq4rAiARm7UY+gE9K2O9Tew1StgXhCIi
3BaKy2fpyXOyNsqTqw==
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAe+gAwIBAgIQUdaNFJKMhoKNfQraPRxTCjAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzExMDIwMjA5MDRaFw0yNzEwMzEwMjA5
MDRaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAETY6tswJbuhhp20k7Ch/3zElu3FGGPgXoh7xLwRFhO8gf/vespevLvco5
S1vEKL7rKmHrIZwzTcw3kFPPuoBOq6NfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgJ2D/eCcIFOb6
Gm5xebzfJ4wqRSBjchZ1bm0Jes04pmcwCgYIKoZIzj0EAwIDSAAwRQIhAOHFp/4i
+nhTvIsGtzN2dXsCQP1/LqtBd60YmOTpFq4rAiARm7UY+gE9K2O9Tew1StgXhCIi
3BaKy2fpyXOyNsqTqw==
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICZzCCAg2gAwIBAgIQbRqjC9p8fRZTWuo16aBfazAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzExMDIwMjA5MDRaFw0yNzEwMzEwMjA5
MDRaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMS5vcmcxLmV4YW1wbGUuY29t
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEc48M1jWnc7fTEn/7jOSN/5Bc6ZEx
Qz7DILl+Je4/WkLI0CBL2/RL9h2tE66HOHnUc7Jyon81Iv+OjsFgIq4XvKOBlzCB
lDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgJ2D/eCcIFOb6Gm5xebzfJ4wqRSBj
chZ1bm0Jes04pmcwKAYDVR0RBCEwH4IWcGVlcjEub3JnMS5leGFtcGxlLmNvbYIF
cGVlcjEwCgYIKoZIzj0EAwIDSAAwRQIhAIMDsw7pnayrOV5St78k2aOkyWBPUBK2
LnJtQIwWllP9AiA3rTRP7apeEysJ1xmYI5cX1GJI2tVK3QrHDIRuAHqqkA==
-----END CERTIFICATE-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgXJ1VSaBdQ1e6aYSG
iSjVXO9ac7I8XifFPTs2gL8uHZ6hRANCAARzjwzWNadzt9MSf/uM5I3/kFzpkTFD
PsMguX4l7j9aQsjQIEvb9Ev2Ha0Troc4edRzsnKifzUi/46OwWAirhe8
-----END PRIVATE KEY-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg7V1u1rpJ4EdRkgq+
Xaumagqrz8bOxTNocpAoVO9qz6ChRANCAARNjq2zAlu6GGnbSTsKH/fMSW7cUYY+
BeiHvEvBEWE7yB/+96yl68u9yjlLW8QovusqYeshnDNNzDeQU8+6gE6r
-----END PRIVATE KEY-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAe+gAwIBAgIQUdaNFJKMhoKNfQraPRxTCjAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzExMDIwMjA5MDRaFw0yNzEwMzEwMjA5
MDRaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAETY6tswJbuhhp20k7Ch/3zElu3FGGPgXoh7xLwRFhO8gf/vespevLvco5
S1vEKL7rKmHrIZwzTcw3kFPPuoBOq6NfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgJ2D/eCcIFOb6
Gm5xebzfJ4wqRSBjchZ1bm0Jes04pmcwCgYIKoZIzj0EAwIDSAAwRQIhAOHFp/4i
+nhTvIsGtzN2dXsCQP1/LqtBd60YmOTpFq4rAiARm7UY+gE9K2O9Tew1StgXhCIi
3BaKy2fpyXOyNsqTqw==
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICGjCCAcCgAwIBAgIRAMQqTLhmWv9qY9+EAobgf3QwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNvbTBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABGLOyxOO7IF8kFyaitMfLyDRdPe+w8DK
SyljFjX4M2XVB7B0lSTKThy1pSIWmUI1BLUcviDeMDuNBuMCMdhLQLSjTTBLMA4G
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIKlWRFsok7AD
4cnLA58OMpflvk2xOYUbNJOX5fIWIDD4MAoGCCqGSM49BAMCA0gAMEUCIQDMBcCp
de9SOd9LW8dV6g/TVtVUybyokZTHctUWQMom1QIgIg824DexsZTa6gWNhML2IsBN
FU6YN8dU8RETKmMlmoM=
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICQzCCAeqgAwIBAgIRAPYY8r5Ql/PZ5hu+ctW0s88wCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BPGW6Ou9zrlDIIu3Zdw3bD/ZUn8qvyLmLW1+8Hv4meEeWmmPm03r+trovISk6F5R
uIya4+p/Erqka3MQ6PuJKrqjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG
BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKlWRFsok7AD4cnLA58O
Mpflvk2xOYUbNJOX5fIWIDD4MAoGCCqGSM49BAMCA0cAMEQCICOZPLVOwaU7m/jL
c3ee7UfwKa4wqv0gy1QWQsznACAHAiB5VJIV0cUTBhL6OQeFYGdg6glKeJYFlrOB
fPfZyU9SMg==
-----END CERTIFICATE-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgkdKb4/+MQw5urD6x
Y7BDqaZlP1lokk4/jW0OYRViDXihRANCAARizssTjuyBfJBcmorTHy8g0XT3vsPA
ykspYxY1+DNl1QewdJUkyk4ctaUiFplCNQS1HL4g3jA7jQbjAjHYS0C0
-----END PRIVATE KEY-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICGjCCAcCgAwIBAgIRAMQqTLhmWv9qY9+EAobgf3QwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNvbTBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABGLOyxOO7IF8kFyaitMfLyDRdPe+w8DK
SyljFjX4M2XVB7B0lSTKThy1pSIWmUI1BLUcviDeMDuNBuMCMdhLQLSjTTBLMA4G
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIKlWRFsok7AD
4cnLA58OMpflvk2xOYUbNJOX5fIWIDD4MAoGCCqGSM49BAMCA0gAMEUCIQDMBcCp
de9SOd9LW8dV6g/TVtVUybyokZTHctUWQMom1QIgIg824DexsZTa6gWNhML2IsBN
FU6YN8dU8RETKmMlmoM=
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAe+gAwIBAgIQUdaNFJKMhoKNfQraPRxTCjAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzExMDIwMjA5MDRaFw0yNzEwMzEwMjA5
MDRaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAETY6tswJbuhhp20k7Ch/3zElu3FGGPgXoh7xLwRFhO8gf/vespevLvco5
S1vEKL7rKmHrIZwzTcw3kFPPuoBOq6NfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgJ2D/eCcIFOb6
Gm5xebzfJ4wqRSBjchZ1bm0Jes04pmcwCgYIKoZIzj0EAwIDSAAwRQIhAOHFp/4i
+nhTvIsGtzN2dXsCQP1/LqtBd60YmOTpFq4rAiARm7UY+gE9K2O9Tew1StgXhCIi
3BaKy2fpyXOyNsqTqw==
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAe+gAwIBAgIQUdaNFJKMhoKNfQraPRxTCjAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzExMDIwMjA5MDRaFw0yNzEwMzEwMjA5
MDRaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAETY6tswJbuhhp20k7Ch/3zElu3FGGPgXoh7xLwRFhO8gf/vespevLvco5
S1vEKL7rKmHrIZwzTcw3kFPPuoBOq6NfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgJ2D/eCcIFOb6
Gm5xebzfJ4wqRSBjchZ1bm0Jes04pmcwCgYIKoZIzj0EAwIDSAAwRQIhAOHFp/4i
+nhTvIsGtzN2dXsCQP1/LqtBd60YmOTpFq4rAiARm7UY+gE9K2O9Tew1StgXhCIi
3BaKy2fpyXOyNsqTqw==
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICOjCCAeGgAwIBAgIQd8jldBICPPWDJerJnWtfqzAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzExMDIwMjA5MDRaFw0yNzEwMzEwMjA5
MDRaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29t
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFiA+6P3qShKb0Rc/USrMYp+Tzrai
zu/jiNJQHHC87pNu3cHcrRkIGPPW7kvoyKVCFxTYTVfKmsxEClGdY50a3aNsMGow
DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAICdg/3gnCBTm+hpucXm83yeMKkUgY3IW
dW5tCXrNOKZnMAoGCCqGSM49BAMCA0cAMEQCIA0Kxa6YaC0RDwvmSTJBADRne5GF
TImDsfQazlgn1P7vAiAWQJs0vrug8DKvlR+9aJPNHtnbBe70XHHlS50HGmT3iA==
-----END CERTIFICATE-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgVWAIszvIJ0Q+X/ia
lqW0aLc46RbHbE5tT1UaVqD8GByhRANCAAQWID7o/epKEpvRFz9RKsxin5POtqLO
7+OI0lAccLzuk27dwdytGQgY89buS+jIpUIXFNhNV8qazEQKUZ1jnRrd
-----END PRIVATE KEY-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICGTCCAcCgAwIBAgIRALINwK5rxXAHbhMqUzlUpA4wCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWVXNlcjFAb3JnMS5leGFtcGxlLmNvbTBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABP3f3TrPGFY0motMApA4CUCi1TjGhene
erGxuilGLYf2jbKcCrmGpqHHewqkAsBsbBEWL1KSH+bx3ZJ50XFidhqjTTBLMA4G
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIKlWRFsok7AD
4cnLA58OMpflvk2xOYUbNJOX5fIWIDD4MAoGCCqGSM49BAMCA0cAMEQCIA39MORx
WrldueQU0VlzhRp10fAIRhkZyiNiI3vHssNKAiB4xUVYqTzBfqLsLQT7meTVlmo7
QVCKEVyejh634na8uA==
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICQzCCAeqgAwIBAgIRAPYY8r5Ql/PZ5hu+ctW0s88wCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BPGW6Ou9zrlDIIu3Zdw3bD/ZUn8qvyLmLW1+8Hv4meEeWmmPm03r+trovISk6F5R
uIya4+p/Erqka3MQ6PuJKrqjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG
BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKlWRFsok7AD4cnLA58O
Mpflvk2xOYUbNJOX5fIWIDD4MAoGCCqGSM49BAMCA0cAMEQCICOZPLVOwaU7m/jL
c3ee7UfwKa4wqv0gy1QWQsznACAHAiB5VJIV0cUTBhL6OQeFYGdg6glKeJYFlrOB
fPfZyU9SMg==
-----END CERTIFICATE-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg1G+42TCwdHTvUpIp
7YnzBpWsmz0BXwbfaDa6KROyIjihRANCAAT93906zxhWNJqLTAKQOAlAotU4xoXp
3nqxsbopRi2H9o2ynAq5hqahx3sKpALAbGwRFi9Skh/m8d2SedFxYnYa
-----END PRIVATE KEY-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICGTCCAcCgAwIBAgIRALINwK5rxXAHbhMqUzlUpA4wCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWVXNlcjFAb3JnMS5leGFtcGxlLmNvbTBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABP3f3TrPGFY0motMApA4CUCi1TjGhene
erGxuilGLYf2jbKcCrmGpqHHewqkAsBsbBEWL1KSH+bx3ZJ50XFidhqjTTBLMA4G
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIKlWRFsok7AD
4cnLA58OMpflvk2xOYUbNJOX5fIWIDD4MAoGCCqGSM49BAMCA0cAMEQCIA39MORx
WrldueQU0VlzhRp10fAIRhkZyiNiI3vHssNKAiB4xUVYqTzBfqLsLQT7meTVlmo7
QVCKEVyejh634na8uA==
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAe+gAwIBAgIQUdaNFJKMhoKNfQraPRxTCjAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzExMDIwMjA5MDRaFw0yNzEwMzEwMjA5
MDRaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAETY6tswJbuhhp20k7Ch/3zElu3FGGPgXoh7xLwRFhO8gf/vespevLvco5
S1vEKL7rKmHrIZwzTcw3kFPPuoBOq6NfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgJ2D/eCcIFOb6
Gm5xebzfJ4wqRSBjchZ1bm0Jes04pmcwCgYIKoZIzj0EAwIDSAAwRQIhAOHFp/4i
+nhTvIsGtzN2dXsCQP1/LqtBd60YmOTpFq4rAiARm7UY+gE9K2O9Tew1StgXhCIi
3BaKy2fpyXOyNsqTqw==
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAe+gAwIBAgIQUdaNFJKMhoKNfQraPRxTCjAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzExMDIwMjA5MDRaFw0yNzEwMzEwMjA5
MDRaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD
VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAETY6tswJbuhhp20k7Ch/3zElu3FGGPgXoh7xLwRFhO8gf/vespevLvco5
S1vEKL7rKmHrIZwzTcw3kFPPuoBOq6NfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud
JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgJ2D/eCcIFOb6
Gm5xebzfJ4wqRSBjchZ1bm0Jes04pmcwCgYIKoZIzj0EAwIDSAAwRQIhAOHFp/4i
+nhTvIsGtzN2dXsCQP1/LqtBd60YmOTpFq4rAiARm7UY+gE9K2O9Tew1StgXhCIi
3BaKy2fpyXOyNsqTqw==
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICOzCCAeKgAwIBAgIRAJJ1yEzs9Q3d5MG1BgsNCrMwCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIw
OTA0WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWVXNlcjFAb3JnMS5leGFtcGxlLmNv
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABF0nofNoXiSU+fCg/qwcbSCnQ4vI
GtKPafUwYeKEmgw64vAnEs8jkyPt7RqoDIqSuxy/HlMGM2PsGZ/Vwhj6r8KjbDBq
MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCAnYP94JwgU5voabnF5vN8njCpFIGNy
FnVubQl6zTimZzAKBggqhkjOPQQDAgNHADBEAiBSHWiksoqGobTDddXXGXRgvRrm
+rj6JeacfIcaFlIpQAIgMuWI7+IV/zJZxUwvbndB5cw5aQyFBplnKjY2+ZcPmi4=
-----END CERTIFICATE-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgpuCf3+dWmQkukf+h
XIZszye36w29bSU/S10SBYi24X2hRANCAARdJ6HzaF4klPnwoP6sHG0gp0OLyBrS
j2n1MGHihJoMOuLwJxLPI5Mj7e0aqAyKkrscvx5TBjNj7Bmf1cIY+q/C
-----END PRIVATE KEY-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg1vJJc0tLO8Zg5csy
MuGtJMmr0jrSYr37oLaMUA3Fa9+hRANCAATMcmaBR/nDHC7BWzemm8VqorEGfEBE
qv7Uprf+kUSAtkvtfS1xg91UJL3bEwsvSSZ2Jb3fpBBcMXFBrkQ0KotG
-----END PRIVATE KEY-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICRDCCAeqgAwIBAgIRAO04WCG4ASBZHcZEeddjnyEwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE
AxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BMxyZoFH+cMcLsFbN6abxWqisQZ8QESq/tSmt/6RRIC2S+19LXGD3VQkvdsTCy9J
JnYlvd+kEFwxcUGuRDQqi0ajXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG
BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIJlV7bgxz5uqSTgRBCKP
He6SUV7p8Dkzy3Ccud+mK/gRMAoGCCqGSM49BAMCA0gAMEUCIQCCK3zBYDVeznbY
95DLG0OhN6nQeuQR9eMuPgMzB/GnggIgQG7kzh7eZxh8aRKPChmI7dvVtSaVl2bH
pK/KUo2mJNg=
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICGTCCAcCgAwIBAgIRAOxlmFgaCvVOvtOv7l6lXVYwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABHJLNArJ+rs9MzweYmMdilAvZmflXeqp
A6uYVGMSDr33CvcPeqOmkZcl0EFbUplU2GMLo0e49tWzJFNd4sjT6S2jTTBLMA4G
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIJlV7bgxz5uq
STgRBCKPHe6SUV7p8Dkzy3Ccud+mK/gRMAoGCCqGSM49BAMCA0cAMEQCIFPZip6X
2U+jO6z4TzAos7vWjBtVw1V8QX0oaW8KkfzMAiBXLelEi2cnKBPYVG+jexxd8AkI
ZO2yujn9S450kRDR8Q==
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICRDCCAeqgAwIBAgIRAO04WCG4ASBZHcZEeddjnyEwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE
AxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BMxyZoFH+cMcLsFbN6abxWqisQZ8QESq/tSmt/6RRIC2S+19LXGD3VQkvdsTCy9J
JnYlvd+kEFwxcUGuRDQqi0ajXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG
BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIJlV7bgxz5uqSTgRBCKP
He6SUV7p8Dkzy3Ccud+mK/gRMAoGCCqGSM49BAMCA0gAMEUCIQCCK3zBYDVeznbY
95DLG0OhN6nQeuQR9eMuPgMzB/GnggIgQG7kzh7eZxh8aRKPChmI7dvVtSaVl2bH
pK/KUo2mJNg=
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICSjCCAfCgAwIBAgIRALinymba6Vd8U/IMVbEKqQowCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIw
OTA0WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABCy0lBt603Leuz4YWFrwm9yNHyieb9kiKWF1qDFqFQQaX7nrisr73jv7
MVbHvvi+WGtW3U8SxtRXJgVbNoOv2/qjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIAFUfVQe8uYZ
x8hFNuQkJ9ALeidnCFLvxvi4mb/Wr14pMAoGCCqGSM49BAMCA0gAMEUCIQDGgg1N
3tHXqkj/QWWEjm1zY/vLzl47zBsRM1L50gxZwgIgZPVesMw03gX5CAHvjvsPqsa4
/RuH9OIeyB8Z8VMYlw8=
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICGTCCAcCgAwIBAgIRAOxlmFgaCvVOvtOv7l6lXVYwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABHJLNArJ+rs9MzweYmMdilAvZmflXeqp
A6uYVGMSDr33CvcPeqOmkZcl0EFbUplU2GMLo0e49tWzJFNd4sjT6S2jTTBLMA4G
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIJlV7bgxz5uq
STgRBCKPHe6SUV7p8Dkzy3Ccud+mK/gRMAoGCCqGSM49BAMCA0cAMEQCIFPZip6X
2U+jO6z4TzAos7vWjBtVw1V8QX0oaW8KkfzMAiBXLelEi2cnKBPYVG+jexxd8AkI
ZO2yujn9S450kRDR8Q==
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICRDCCAeqgAwIBAgIRAO04WCG4ASBZHcZEeddjnyEwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE
AxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BMxyZoFH+cMcLsFbN6abxWqisQZ8QESq/tSmt/6RRIC2S+19LXGD3VQkvdsTCy9J
JnYlvd+kEFwxcUGuRDQqi0ajXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG
BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIJlV7bgxz5uqSTgRBCKP
He6SUV7p8Dkzy3Ccud+mK/gRMAoGCCqGSM49BAMCA0gAMEUCIQCCK3zBYDVeznbY
95DLG0OhN6nQeuQR9eMuPgMzB/GnggIgQG7kzh7eZxh8aRKPChmI7dvVtSaVl2bH
pK/KUo2mJNg=
-----END CERTIFICATE-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg3S1mPe9YFFEmIzGu
6fQVTR8X9s7LkcC9GD1x/gytTgKhRANCAAQLSQ8VWrfckaeOxmU0OKjv0BN35bde
d2qlbpSpOqcfK7rmkJvCayykjP/nXriwYWL6DLxuIyvTxIBWKkgnseS0
-----END PRIVATE KEY-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICGDCCAb+gAwIBAgIQLJYrCW1RJuq18+cFuSoWGTAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMi5leGFtcGxlLmNvbTAeFw0xNzExMDIwMjA5MDRaFw0yNzEwMzEwMjA5MDRa
MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMC5vcmcyLmV4YW1wbGUuY29tMFkw
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEC0kPFVq33JGnjsZlNDio79ATd+W3Xndq
pW6UqTqnHyu65pCbwmsspIz/5164sGFi+gy8biMr08SAVipIJ7HktKNNMEswDgYD
VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgmVXtuDHPm6pJ
OBEEIo8d7pJRXunwOTPLcJy536Yr+BEwCgYIKoZIzj0EAwIDRwAwRAIgOnEToPHx
uIuCXav9ZfrTCKRx8GwD0ch8A8h1rlDpi0kCIC2RcdAwaun4jHjkvvSW50tu7P6K
/T86XraIKGfBp1Xt
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICSjCCAfCgAwIBAgIRALinymba6Vd8U/IMVbEKqQowCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIw
OTA0WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABCy0lBt603Leuz4YWFrwm9yNHyieb9kiKWF1qDFqFQQaX7nrisr73jv7
MVbHvvi+WGtW3U8SxtRXJgVbNoOv2/qjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIAFUfVQe8uYZ
x8hFNuQkJ9ALeidnCFLvxvi4mb/Wr14pMAoGCCqGSM49BAMCA0gAMEUCIQDGgg1N
3tHXqkj/QWWEjm1zY/vLzl47zBsRM1L50gxZwgIgZPVesMw03gX5CAHvjvsPqsa4
/RuH9OIeyB8Z8VMYlw8=
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICSjCCAfCgAwIBAgIRALinymba6Vd8U/IMVbEKqQowCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIw
OTA0WjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABCy0lBt603Leuz4YWFrwm9yNHyieb9kiKWF1qDFqFQQaX7nrisr73jv7
MVbHvvi+WGtW3U8SxtRXJgVbNoOv2/qjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIAFUfVQe8uYZ
x8hFNuQkJ9ALeidnCFLvxvi4mb/Wr14pMAoGCCqGSM49BAMCA0gAMEUCIQDGgg1N
3tHXqkj/QWWEjm1zY/vLzl47zBsRM1L50gxZwgIgZPVesMw03gX5CAHvjvsPqsa4
/RuH9OIeyB8Z8VMYlw8=
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICZjCCAg2gAwIBAgIQV0fQ+BQJwCMpeSucxb03ijAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0xNzExMDIwMjA5MDRaFw0yNzEwMzEwMjA5
MDRaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMC5vcmcyLmV4YW1wbGUuY29t
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEk6lAgtMTE7H1hreLrp1HmqFPWgo6
hn23Ao4LiBxJU3jlBBcYGuoAWEhwPAfa2u/5wCfFkNUsCqGe785RlwfV4qOBlzCB
lDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgAVR9VB7y5hnHyEU25CQn0At6J2cI
Uu/G+LiZv9avXikwKAYDVR0RBCEwH4IWcGVlcjAub3JnMi5leGFtcGxlLmNvbYIF
cGVlcjAwCgYIKoZIzj0EAwIDRwAwRAIgH9hsLyFKjfCpiBvfd2d6csjKTHhmGYov
Wd+EhGJw5owCIArZ6c3TXSJdlgDJv4oEOQkLCtpxoNKT0fYEYGOSkpLX
-----END CERTIFICATE-----

View File

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgiVJFkS3KCA7NqfQ/
tWWSZvvWDZLKpHwHwmxKjbLf7Q6hRANCAASTqUCC0xMTsfWGt4uunUeaoU9aCjqG
fbcCjguIHElTeOUEFxga6gBYSHA8B9ra7/nAJ8WQ1SwKoZ7vzlGXB9Xi
-----END PRIVATE KEY-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICGTCCAcCgAwIBAgIRAOxlmFgaCvVOvtOv7l6lXVYwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABHJLNArJ+rs9MzweYmMdilAvZmflXeqp
A6uYVGMSDr33CvcPeqOmkZcl0EFbUplU2GMLo0e49tWzJFNd4sjT6S2jTTBLMA4G
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIJlV7bgxz5uq
STgRBCKPHe6SUV7p8Dkzy3Ccud+mK/gRMAoGCCqGSM49BAMCA0cAMEQCIFPZip6X
2U+jO6z4TzAos7vWjBtVw1V8QX0oaW8KkfzMAiBXLelEi2cnKBPYVG+jexxd8AkI
ZO2yujn9S450kRDR8Q==
-----END CERTIFICATE-----

View File

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICRDCCAeqgAwIBAgIRAO04WCG4ASBZHcZEeddjnyEwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcxMTAyMDIwOTA0WhcNMjcxMDMxMDIwOTA0
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE
AxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BMxyZoFH+cMcLsFbN6abxWqisQZ8QESq/tSmt/6RRIC2S+19LXGD3VQkvdsTCy9J
JnYlvd+kEFwxcUGuRDQqi0ajXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAG
BgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIJlV7bgxz5uqSTgRBCKP
He6SUV7p8Dkzy3Ccud+mK/gRMAoGCCqGSM49BAMCA0gAMEUCIQCCK3zBYDVeznbY
95DLG0OhN6nQeuQR9eMuPgMzB/GnggIgQG7kzh7eZxh8aRKPChmI7dvVtSaVl2bH
pK/KUo2mJNg=
-----END CERTIFICATE-----

Some files were not shown because too many files have changed in this diff Show More