# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.

-----BEGIN CERTIFICATE-----
MIID6zCCAtOgAwIBAgIJAP5stGSyLGztMA0GCSqGSIb3DQEBCwUAMIGLMQswCQYD
VQQGEwJlczEPMA0GA1UECAwGTWFkcmlkMQ8wDQYDVQQHDAZNYWRyaWQxFzAVBgNV
BAoMDm9wZW5zb3VyY2VtYW5vMQwwCgYDVQQLDANvc20xDDAKBgNVBAMMA25iaTEl
MCMGCSqGSIb3DQEJARYWb3NtX3RlY2hAbGlzdC5ldHNpLm9yZzAeFw0yMDA2MDMy
MTUyNDlaFw0yMzAyMjgyMTUyNDlaMIGLMQswCQYDVQQGEwJlczEPMA0GA1UECAwG
TWFkcmlkMQ8wDQYDVQQHDAZNYWRyaWQxFzAVBgNVBAoMDm9wZW5zb3VyY2VtYW5v
MQwwCgYDVQQLDANvc20xDDAKBgNVBAMMA25iaTElMCMGCSqGSIb3DQEJARYWb3Nt
X3RlY2hAbGlzdC5ldHNpLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBANeULui/JoUxmDPkZwy3rwYT4I9Ju2ph00Lun7/OdvV+r4j8xkYmB+Hh8gBE
eB26gt5rvAAy8q6IcEIxti2a2792Zw8E8zj7OnX6pFJAUjnZUJVuj4hM+Gp5hp4M
o+AFIIN9roccAGbAKHs59cSqm5jz+bZPP4PegjCShmB7vzT68Hd/c/XTN9OUDJ6U
9nroJ+wwfjJrgXiMaiV70IdN5STjLxVa0OA/fa8RutxHAut5y8D1oL4q5/SOaulh
weE8SjH7vEA/wkVBM7LJpR1h2V+kD9tcIQZehnH3l8q4ksgyAT81dOI8sdHEws62
3VqEUf9V3Lx69SWyDEF27+rxQpcCAwEAAaNQME4wHQYDVR0OBBYEFOwsHZAv1uCn
ea9W6N3qiJwK87Y7MB8GA1UdIwQYMBaAFOwsHZAv1uCnea9W6N3qiJwK87Y7MAwG
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAMxlDMcDLgOs6n9nPNnF93fr
1MnONSJBeJogVdn9x+h1eKRI5I4jhuT9xDdyMj62X+gdUx9t2kE7ES21S06h+g06
cI1pBere8AnCw8frTjtO1Jga5Cx0mlcv8ozrlXSl5PW/+jS/UAjKqyECxy+6+EfT
u/9X39qzB0j1ELyahcjUXwVoYc2DNcHSwz6ORNYqZ38TQ5/skd1Ol39al1/UzoUh
TpbHdV/ytbLPtI93cO6CS+GlErXDyIXCZmZD8ur2+uvPKdbRVVn9I/8B9w/FtfrQ
Ye46uci6bWOq4U1rjarTun1xAkpJ3wo6lB4G0rU+r1CXhA+duSUMeqCs8BLC6Tk=
-----END CERTIFICATE-----
