<!--
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.
-->
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 594.53"><defs><style>.cls-1{fill:#1fcfb8;}.cls-2,.cls-3{fill:none;stroke:#cdcccc;stroke-miterlimit:10;}.cls-2{stroke-width:11.91px;}.cls-3{stroke-width:16.76px;}.cls-4{fill:#fff;}.cls-5{fill:#009883;}</style></defs><title>Atlas_Logo_monogram</title><path class="cls-1" d="M260,9.23,4,170.79V441.13L260,602.69,516,441.13V170.79ZM448.53,405.51,260,524.48l-188.53-119V206.42L260,87.44l188.53,119Z" transform="translate(-4 -9.23)"/><circle class="cls-2" cx="210.36" cy="409.07" r="15.88"/><circle class="cls-2" cx="361.18" cy="270.16" r="17.86"/><circle class="cls-3" cx="198.45" cy="274.13" r="28.49"/><line class="cls-2" x1="197.75" y1="302.29" x2="207.65" y2="393.44"/><line class="cls-2" x1="343.32" y1="274.13" x2="227.91" y2="275.48"/><g id="search"><path class="cls-1" d="M286.34,338.93H275.45l-4.08-4.09a85.14,85.14,0,0,0,21.77-57.15,88.45,88.45,0,1,0-88.45,88.45,85.14,85.14,0,0,0,57.15-21.77l4.09,4.08v10.89l68,68L354.38,407Zm-81.65,0a61.24,61.24,0,1,1,61.24-61.24A61,61,0,0,1,204.69,338.93Z" transform="translate(-4 -9.23)"/></g><path class="cls-4" d="M258.92,101.19" transform="translate(-4 -9.23)"/><polygon class="cls-5" points="512 161.22 444.53 196.84 444.53 396.28 254.02 516.51 254.02 594.53 512 431.72 512 161.22"/></svg>